Chap. 24
TCPのその他の機能と性能
+ TCP Fast Open & TLS False Start
詳解TCP/IP Vol.1 プロトコル
@utushiiro
Slide 2
Slide 2 text
▷
Table of contents
○ Path MTU Discovery with TCP
○ Long Fat Pipe
○ Transaction TCP
■ TCP Accelerated Open
■ Truncate TIME_WAIT Delay
○ TCP Fast Open
○ TLS on TCP (TLS False Start)
Slide 3
Slide 3 text
パスMTUディスカバリ
▷ パスMTU
○ 2 台のホスト聞の経路上に存在するネットワーク中で
最も小さい M T U
○ ルータが転送するIPデータグラムをフラグメント化
するかを調べるためには, IPヘッダのDF(don’t fragment)ビット
を使用する.
○ DFが設定されているデータグラムのサイズがルータのMTUを
超える場合, ICMPエラー(※)を返す.
※ Destination Unreachable/Fragmentation needed and Don’t Fragment was set
T/TCPでのTCP Accelerated Open
Connection Count(CC)と呼ばれる32bitのカウンタを利用
コネクションが確立される毎にCCは増加する
→ コネクション毎にCCの値は異なる
※CCは各ホスト(C1,C2,S)で独立, 上記の”増加”, “異なる”は特定ホスト内の話
C1 S
CC: X
C2
CC: Y
SでのCCキャッシュ
C1 = X
C2 = Y
Slide 12
Slide 12 text
T/TCPでのTCP Accelerated Open
C3 S
CC: Z’
SでのCCキャッシュ
C3 = Z
C4 = None
C4
CC: W
▷ Z’ > Z なら 3-way-handshake を省略
そうでないなら3-way-handshake実行
▷ 該当ホストのCCキャッシュが
そもそも存在しないなら3-way-handshake実行
Slide 13
Slide 13 text
T/TCPでのTCP Accelerated Open
TCP Accelerated Open は要するに,
一度コネクションが確立できたら, 以後一定期間
そのホスト間での新規のコネクションの確立には
確立処理(3-way-handshake)をしなくても
確立できると考えて省略する仕組み.
※前スライドではCCのみを簡単に説明したが
実際はもう少し色々あるのでRFC参照
TCP Fast Open
T/TCPは結局今使われているの?
→ NO. セキュリティがガバガバ
ただし, 同じようなアプローチ(※)でより精錬された
プロトコルが誕生
→ TCP Fast Open (RFC 7413)
これは実際に使われている.
※ 2回目以降の3-way-handshakeをbypassingするという試み
Slide 23
Slide 23 text
TCP Fast Open
TCP Fast Openでは T/TCPのCC(Connection Count)周りを
より精錬された仕組み(TFO Cookie)に昇華
TFO Cookieとは
サーバ側がクライアントのIPやサーバシークレットから暗号ア
ルゴリズム(AES)を用いて作成するCookie
クライアントは2回目以降の接続で使用するために
サーバから受け取ったCookieをキャッシュする
Slide 24
Slide 24 text
TCP Fast Open - 初回通信
SYN + Cookie Request
SYN, ACK + Cookie
ACK
サーバ側
Requestを受けて
TFO Cookieを作成
クライアント側
送られてきた
TFO Cookieを
キャッシュする
Slide 25
Slide 25 text
TCP Fast Open - 初回以降の通信
SYN + Cookie + Data
SYN, ACK + Data
ACK
サーバ側
受信したTFO Cookieを検証する
検証をパスすれば
SYN, ACKのパケットに
データを付加して送信
データ送信まで1RTTかかる
(これを1-RTTと呼ぶ)のを0-RTTに
Slide 26
Slide 26 text
TLS on TCP
SYN
SYN, ACK
ACK
TLS Client Hello & etc
TLS Server Hello & etc
TLS Client Finished & etc
Data(encrypted)
TLS Server Finished & etc
▷ 通常のTLS on TCP
クライアント, サーバの双方が
Finishedを送受信し終えてから
Dataの送受信へと進む
つまり通常のTLS on TCPは
3-RTT