新しく、「Multipath TCP behind Layer-4 loadbalancers」と言うI-Dが出ました。
それについては、「Multipath TCPとL4バランシングのI-D」コチラを御覧ください。 (2015/09/13 追記)
関連してiOSのMultiPath TCP対応の記事を書きました「iphone(iOS 11)でMultiPath TCPを使う - ASnoKaze blog」 (2017/07/25 追記)
LVS DSR方式で負荷分散している場合、MultiPath TCPって使えるのだろうか...?
(この記事は、不正確な表現が多分に含まれている可能性があります...是非指摘下さい)
MultiPath TCP
近頃、MultiPath TCPが若者の間で注目されている。
スマートフォンはLTEとWifiのように複数のネットワークに接続でき、その様な時に
このように複数経路での通信を行い、それらを(アプリケーションから見ると)まるで一つのTCPコネクションかのように見せるのがMultiPath TCPである。
複数経路で通信しているため、片方の通信が切断されてもTCPのコネクションは維持される。
この当たりの詳しい解説は、nunnun氏のスライドが非常に詳しく説明されている(https://speakerdeck.com/nunnun/tcp-dot-next)
LVS DSR(Direct Server Return)
話は変わり、次にLVSのDSR方式の負荷分散方法について説明する。
L4での負荷分散方法だが、DSR方式は若干特殊である。
- ユーザがWebサイトにアクセスしようとし、名前を解決するとLVSのIPアドレスが得られる
- ユーザはLVSのIPアドレスに対しパケットを送信する
- LVSはwwwサーバを1つ選択し、受け取ったパケットをwwwサーバにそのまま渡す(特に変換は行わない)
- wwwは自分宛てへのパケットとして扱い、レスポンスを直接ユーザに送信する
このようにLVSはパケットをそのまま後ろに渡すだけになり、実際のTCPコネクションはユーザとwwwサーバ間で張られる(多分)