MPTCP(MultiPath TCP)と負荷分散ってどうなんだろう

新しく、「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が若者の間で注目されている。
スマートフォンLTEWifiのように複数のネットワークに接続でき、その様な時に



このように複数経路での通信を行い、それらを(アプリケーションから見ると)まるで一つのTCPコネクションかのように見せるのがMultiPath TCPである。


複数経路で通信しているため、片方の通信が切断されてもTCPのコネクションは維持される。


この当たりの詳しい解説は、nunnun氏のスライドが非常に詳しく説明されている(https://speakerdeck.com/nunnun/tcp-dot-next)

LVS DSR(Direct Server Return)

話は変わり、次にLVSのDSR方式の負荷分散方法について説明する。
L4での負荷分散方法だが、DSR方式は若干特殊である。


  1. ユーザがWebサイトにアクセスしようとし、名前を解決するとLVSIPアドレスが得られる
  2. ユーザはLVSIPアドレスに対しパケットを送信する
  3. LVSはwwwサーバを1つ選択し、受け取ったパケットをwwwサーバにそのまま渡す(特に変換は行わない)
  4. wwwは自分宛てへのパケットとして扱い、レスポンスを直接ユーザに送信する


このようにLVSはパケットをそのまま後ろに渡すだけになり、実際のTCPコネクションはユーザとwwwサーバ間で張られる(多分)

MultiPath TCP + LVS DSR

では、MultiPath TCPを使ってLVS DSR下のサーバと接続する場合を考えると...負荷分散されてしまい...



経路を追加しようとした時に、同じIPアドレス先に通信をしても同一のサーバとは限らないので上手くいかないのでは...という気がしています。


うまくやれるのかな...