DSR구조에 대해서 질문드립니다.

익명 사용자의 이미지

안녕하세요.

DSR 구조에 대해서 알아보고있는 중인데 궁금증이 생겨서 질문 올려봅니다.

온라인에서 몇몇의 글을 봤을 때, DSR 구조에서는 클라이언트로부터 들어온 패킷을 L4를 통해서 서버가 받

게 되고 서버는 L4를 거치지 않고 클라이언트에게 응답을 하는 구조인데, 이 때 서버에서 클라이언트에게 보내는 패킷은 src ip를 L4의 VIP로 (NAT를 통해?) 변환을 시켜줘야 한다고 알고 있습니다.

그렇지 않게되면 클라이언트는 자신이 패킷을 보낼때 사용했던 L4의 VIP(L4의 공인 IP)가 아닌 서버의 사설ip 혹은 공인IP가 날라와서 이상한 응답으로 간주하고 패킷을 버린다고 알고 있습니다.

그런데 오늘 다른사람이 하는 이야기를 들어봤는데, 클라이언트가 패킷을 보낼때는 L4의 공인아이피(VIP)를 보고 들어 오지만 서버에서 응답을 할 때는 서버의 공인 IP로 패킷이 나간다는 말을 들었는데, 이게 가능한 구조인가 해서,..... 저는 잘 이해가 안가서 질문 올립니다.

분명 제가 본 여러 글에서는 클라이언트가 패킷을 날릴 때 L4에 할당된 공인 IP로 요청을 했으니, 서버에서 응답을 할 때, 패킷의 src를 L4의 공인 아이피로 해야 한다. 그렇지 않으면 그 패킷은 잘못된 패킷으로 알고 버려진다라는 사실과는 전혀 다른 상황인데 ...

이와 관련해서 여러분들에게 도움을 요청합니다 ㅎㅎㅎ

김정균의 이미지

어렵게 생각할 필요는 없습니다. DSR의 경우에는 L2 구간에서만 가능 합니다. 즉, VIP로 들어온 패킷을 real server로 전송할 때 L2 구간 이기 때문에 arp 를 이용해서 패킷을 보내게 됩니다. 여기서 트릭이 tcp header의 dest는 VIP를 그대로 보내버리게 됩니다.

그리고, real server에서는 VIP를 arp announce 하지 않게 설정한 loopback device에 설정해 놓고, 들어온 패킷이 나에게 온 것이 맞게끔 속이는 역할을 합니다. 그래서 나갈때는 source 에 VIP를 가지고 default router로 나가게 되는 것이죠.

즉, NAT 구조는 tcp header를 변경을 하지만, DSR은 tcp header를 변경하지 않고 보내게 되는 것입니다. 이게 가능한 이유는 L2 구간은 arp protocol을 이용하기 때문에 TCP 조작이 가능하다는 점이죠.

요즘은 L3 DSR 도 있는데, L3 DSR의 경우에는 tunnel 을 뚫어서 L2 환경을 구성하는 것입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.