layer 4 load balancer (nat, ip tunnelling, dr)
DESCRIPTION
負荷分散や冗長化に用いるL4LBの3つのやり方、NAT、IPトンネリング、DRについて説明する。 DRについて、MACアドレスの解決の仕方を含めて少し詳しく説明する。TRANSCRIPT
Layer 4Load Balancer
NAT, IPトンネリング, DR
2014 / 10 / 15内田公太
Outline
• プロトコルスタックの基礎知識• 3つのロードバランス手法
プロトコルスタックの基礎知識
TCP + IP + Ethernet における送受信データの構造
TCP + IP + Ethernet スタック
HTTPRequest
TCPHeader
IPHeader
HTTPRequest
EthernetHeader
HTTPRequest
TCPHeader
HTTPRequest
TCPHeader
IPHeader
FCS
HTTPRequest
TCPHeader
IPHeader
HTTPRequest
EthernetHeader
HTTPRequest
TCPHeader
HTTPRequest
TCPHeader
IPHeader
FCS
IPHeader
EthernetHeader
HTTPRequest
TCPHeader
FCSPre-
ambleIP
HeaderEthernetHeader
HTTPRequest
TCPHeader
FCSPre-
amble
LANケーブルで伝送
第4層
第5-7層
第3層
第2層
第1層
HTTPRequest
TCPHeader
IPHeader
HTTPRequest
802.11Header
HTTPRequest
TCPHeader
HTTPRequest
TCPHeader
IPHeader
FCS
HTTPRequest
TCPHeader
IPHeader
HTTPRequest
802.11Header
HTTPRequest
TCPHeader
HTTPRequest
TCPHeader
IPHeader
FCS
TCP + IP + WLAN スタック
IPHeader
802.11Header
HTTPRequest
TCPHeader
FCSIP
Header802.11Header
HTTPRequest
TCPHeader
FCSPCLP
Preamble
電波で伝送
PCLP
Preamble
802.11Header
802.11Header
FCS
802.11Header
802.11Header
FCS
第4層
第5-7層
第3層
第2層
第1層
プロトコルスタック
• 各層が独立• 例えばIPデータグラムはEthernetでもWLANでも伝送されうる。
• どちらの場合も、IP層の処理は同じ。
• 各層を独立させコスト削減。
• L4LB
• OSI参照モデル第4層(トランスポート層。TCP/UDPなど)までの情報を使って負荷分散する装置。
• 要するに、IPアドレスとポート番号で振り分けるもの。
3つのロードバランス手法
NAT, IPトンネリング, DR
NATNetwork Address Translation
IPDest 192.168.1.1
Src 1.2.3.4
EthernetDest 12:00:34:00:00:01Src 06:00:50:00:28:c0
TCPDest 80
Src 38000
HTTPFoobar
L4LB
IPDest 192.168.1.10
Src 192.168.1.1
EthernetDest 12:00:34:00:00:02Src 12:00:34:00:00:01
TCPDest 80
Src 38000
HTTPFoobar
12:00:34:00:00:01
192.168.1.1IP
Dest 192.168.1.10Src 192.168.1.1
IPDest 192.168.1.1
Src 1.2.3.4
TCPDest 80
Src 38000
HTTPFoobar
TCPDest 80
Src 38000
HTTPFoobar
書き換え
あたかもL4LBからHTTPリクエストが来たように見える
12:00:34:00:00:02
192.168.1.10
NAT
• ○設定が分かりやすい• ワーカはごく普通のWebサーバでよい
• × L4LBに負荷が集中
• L4LBが IN/OUT 双方のデータを扱うため
IPトンネリング
IPDest 192.168.1.1
Src 1.2.3.4
EthernetDest 12:00:34:00:00:01Src 06:00:50:00:28:c0
TCPDest 80
Src 38000
HTTPFoobar
L4LB
IPDest 192.168.2.10
Src 192.168.1.1
EthernetDest 12:00:34:00:00:03Src 12:00:34:00:00:01
12:00:34:00:00:01
192.168.1.1
IPDest 192.168.1.1
Src 1.2.3.4
TCPDest 80
Src 38000
HTTPFoobar
IPヘッダで包み込む
ネットワークを超えられる元のパケットがそのまま届く
IP
IPDest 192.168.2.10
Src 192.168.1.1
IPDest 192.168.1.1
Src 1.2.3.4
TCPDest 80
Src 38000
HTTPFoobar
TCP
HTTP
IP
TCP
HTTP
EthernetDest 12:00:34:00:00:04Src 12:00:34:00:00:03
IPトンネリング
• ○ネットワークを超えられる• ○ L4LBの負荷がかなり低い
• OUT方向のデータがL4LB を通らないため(ワーカは送信元IPを知っており、直接返答できる)
• ×設定が複雑
IPDest 192.168.1.1
Src 1.2.3.4
EthernetDest 12:00:34:00:00:01Src 06:00:50:00:28:c0
TCPDest 80
Src 38000
HTTPFoobar
L4LB
EthernetDest 12:00:34:00:00:02Src 12:00:34:00:00:01
TCPDest 80
Src 38000
HTTPFoobar
12:00:34:00:00:01
192.168.1.1IP
Dest 192.168.1.1Src 1.2.3.4
IPDest 192.168.1.1
Src 1.2.3.4
TCPDest 80
Src 38000
HTTPFoobar
無加工で送る
元のパケットがそのまま届く
DRDirect Routing
12:00:34:00:00:02
192.168.1.1
DR
• ○ L4LBの負荷が非常に低い
• OUT方向のデータがL4LB を通らないため(ワーカは送信元IPを知っており、直接返答できる)
• ×設定が複雑
ちょっとまって!
L4LBとワーカに同じIPを設定しても大丈夫なの?
大丈夫
ループバックアドレスとしてIPアドレスを設定しておけば、
ARPを無視するから衝突しないんだ
L4LB ワーカ1 ワーカ2
DRを使うときのネットワーク構成
ユーザ
12:00:34:00:00:01eth0 192.168.1.1
12:00:34:00:00:02lo0 192.168.1.1
12:00:34:00:00:03lo0 192.168.1.1
L4LB
12:00:34:00:00:01eth0 192.168.1.1
12:00:34:00:00:02lo0 192.168.1.1
ワーカ112:00:34:00:00:03lo0 192.168.1.1
ワーカ2
ユーザ 192.168.1.1 に対応するMACアドレスを教えて!
ARPリクエストブロードキャスト
L4LB
12:00:34:00:00:01eth0 192.168.1.1
12:00:34:00:00:02lo0 192.168.1.1
ワーカ112:00:34:00:00:03lo0 192.168.1.1
ワーカ2
ユーザ
12:00:34:00:00:01です
…
…ARPレスポンス
L4LB
12:00:34:00:00:01eth0 192.168.1.1
12:00:34:00:00:02lo0 192.168.1.1
ワーカ112:00:34:00:00:03lo0 192.168.1.1
ワーカ2
ユーザ了解。では
12:00:34:00:00:01に送ります
IPDest 192.168.1.1
Src 1.2.3.4
TCPDest 80
Src 38000
HTTPFoobar
L4LB
12:00:34:00:00:01eth0 192.168.1.1
12:00:34:00:00:02lo0 192.168.1.1
ワーカ112:00:34:00:00:03lo0 192.168.1.1
ワーカ2
ユーザ
ワーカ2君処理してね
IPDest 192.168.1.1
Src 1.2.3.4
TCPDest 80
Src 38000
HTTPFoobar
了解
L4LB
12:00:34:00:00:01eth0 192.168.1.1
12:00:34:00:00:02lo0 192.168.1.1
ワーカ112:00:34:00:00:03lo0 192.168.1.1
ワーカ2
ユーザ
IPDest 192.168.1.1
Src 1.2.3.4
TCPDest 80
Src 38000
HTTPFoobar
1.2.3.4 に応答を返せばいいんだな
L4LB
12:00:34:00:00:01eth0 192.168.1.1
12:00:34:00:00:02lo0 192.168.1.1
ワーカ112:00:34:00:00:03lo0 192.168.1.1
ワーカ2
ユーザ
IPDest 1.2.3.4
Src 192.168.1.1
TCPDest 38000
Src 80
HTTPFoobar
Foobar
まとめ
• プロトコルスタックでヘッダがいくつも付加される• 第4層までの情報でデータを振り分ける装置がL4LB
• L4LB の3つの実装NAT, IPトンネリング, DR を紹介
• DR が最もL4LB の負荷が小さくなる