トランスポート層とフロー制御
第8章
Science and Technology
インターネット上のTCPによる高信頼通信サービス
高信頼TCPコネクション TCPコネクション型通信送信
TCPコネクション型通信受信
ユーザから見た高信頼通信サービスインターネット上の
高信頼通信サービスの実装
TCPセグメント
TCPセグメント
TCPセグメント
TCPセグメント
アプリデータ
アプリデータ
アプリデータ
アプリデータ
IPパケット IPパケットネットワーク層
トランスポート層
アプリケーション層
低信頼コネクションレス
あて先ノード発信ノード あて先ノード発信ノード
図8.1
Science and Technology
UDPヘッダ
(16ビット)宛先ポート番号
(16ビット)データ長(16ビット)
チェックサム(16ビット)
アプリケーションデータ
32ビット
図8.1
発信元ポート番号
Science and Technology
8.2 UDP4
UDP(User Data Protocol)Ack(受信確認)なし
エラー発生時、パケットを捨てる
上位での処理が必要
→大容量データ
マルチキャスト(放送型)
長距離でのデータ転送
Science and Technology
インターネットアプリケーションとトランスポートプロトコル
アプリケーションアプリケーション
プロトコル
トランスポート
プロトコル
電子メール SMTP TCP
リモートログイン telnet TCPWWW HTTP TCPファイル転送 ftp TCP
ストリーミング RTSP TCP UDPIP電話 RTP UDPルーチングプロトコル RIP UDP
アドレス変換 DNS UDP
SMTP:simple mail transfer protocolHTTP: hyper text transfer protocol
ftp: file transfer protocolRTSP: real time streaming protocol
RTP:real time protocolRIP: routing information protocol
DNS: domain name server
表8.1
Science and Technology
UDPを使用するアプリケーションとポート番号の例
ポート番号 アプリケーション 用途
7 echo エコーパケット
37 time 時間
39 rlp リソースロケーションプロトコル
42 Nameserver ホストネームサーバ
53 domain ドメインネームサーバ
69 tftp トリビアルファイル転送
123 ntp ネットワーク時間プロトコル
161 snmp SNMP
520 router RIP
546 dhcpv6-client DHCPv6 クライアント
547 dhcpv6-server DHCPv6 サーバ
554 RTSP リアルタイムストリーミングプロトコル
5004 RTP リアルタイムプロトコル
SNMP: Simple Network Management ProtocolDHCP: Dynamic Host Configuration Protocol
表8.2
Science and Technology
TCPヘッダ
32ビット
アプリケーションデータ
発信元ポート番号(16ビット)
宛先ポート番号(16ビット)
シーケンス番号(32ビット)
確認応答番号(32ビット)
ヘッダ長(4ビット)
ウインドウサイズ(16ビット)
緊急ポインタ(16ビット)
(オプション)
予約ビット(6ビット)
チェックサム(16ビット)
UR
GAC
KPS
HPS
TSY
NFI
N
フラグ(各1ビット)
図8.3
Science and Technology
エンドエンド制御
• End-to-End の確認応答による誤り制御とフロー制御
ルータ
パケット
ACKパケット
• ポート番号によるアプリケーションの識別
エンドホスト
エンドホスト
Science and Technology
8.3 TCP(1/3)9
TCP(Transmission Control Protocol)
受信確認(確定的な高信頼転送)目的:高信頼なデータ転送を行う→Ack処理エラー検出と訂正フロー制御パケット順序制御上位アプリケーションに転送するインタフェース
送信側 受信側SN=#5
SN=#5タイムアウト
Ackがないと再送
データ
Ack
Science and Technology
8.3 TCP(2/3)10
① シーケンス番号 宛先ホストでは、この番号によってセグメントの順番を正しく並べ替えたり、届かなかったセグメントの再送要求を出すことができる。
② 確認応答番号 データを受信したホストが送信元ホストに受信の確認を行うための番号である。
③ ヘッダ長 TCPヘッダの長さを4オクテット(32ビット)単位で示す。
④ 予約ビット 将来の機能拡張のための予備ビットである。
Science and Technology
8.3 TCP(3/3)11
⑤ フラグ 6ビットからなり、つぎの六つのフラグフィールド(各1ビット)から構成されている。• URG(緊急データ) 緊急伝送用であることを示す。
• ACK(確認応答) コネクション確認要求の 初のパケット以外は、すべて1である。
• PSH(逐次処理) 転送強制フラグである。1の場合は受信したデータをただちに上位層へ渡す。
• PST(強制切断) 1の場合はコネクションの強制解除を行う。
• SYN(接続要求) 同期フラグである。1の場合はコネクション設定を開始する。
• FIN(切断要求) 転送終了フラグである。1の場合はコネクションを終了する。
⑥ ウィンドウサイズ 宛先ホストは、到着したセグメントを「ウィンドウ」と呼ばれる受信バッファに一度蓄積し、上位層に渡す。ウィンドサイズが残っているまで一括して送信可能。
Science and Technology
ウィンドウ コントロール12
(a)ウィンドコントロール (b)ウィンド処理によるAckパケットの節約
Possible to receive
packets in a short time
Window=2
Sends the 2nd packet without waiting for Ack
Node A Node B
Send back only the Ack for #8
ノードA ノードB
Science and Technology
受信者送信者
セグメント
ACK
T
T
T
T
T
受信者が受取れている間隔(受信間隔)でAckを返送=ボトルネック速度の擁立
ACK
送出のタイミングを生成
V.Jacobson: “Congestion Avoidance and Control,” SIGCOM’88.
帯域使い切り
セルフ・クロッキング
ボトルネック
受信のタイミングでAckを生成
Science and Technology
• 最も少ない帯域割り当てを受けているユーザに対し、最大の帯域割り
当てを行う動作を、すべてのユーザに対して繰り返す (最小最大公平)。
1
2
4
3
5
(例) すべてのリンク容量が 1 の場合の以下 (①から⑤の5 セッション) の最小最大公平は?
① ボトルネックリンク→ 公平に 1/3 割り当て
② ボトルネックリンク→ 残りの 2/3 割り当て
③ ボトルネックリンク→ 帯域 1 を割り当て
D.Bertsekas and R.Gallager: “Data Networks,” Prentice Hall.
小 大フロー制御
①
②
③
④
⑤
Science and Technology
時間
使用帯域セッション開始 別のセッション開始
時間
使用帯域
セッション開始 別のセッション開始
理想:
TCP: スロースタート + ふくそう回避*端末毎の分散制御
最小最大公平
TCP Reno の場合
TCPにおけるフロー制御
Science and Technology
TCPポート番号例
TCPポート番号
アプリケーション
用途
20 ftp-dataファイル転送(データ本体)
21 ftpファイル転送(コントロール)
22 sshシェル:SSH(セキュア)
23 telnet シェル:telnet
25 smtp メール送受信
53 domain DNS
70 gopher gopher
80 http WWW
110 pop3 メール受信(POP)
119 nntp ネットニュース
143 imap メール(IMAP)
443 https WWW(セキュア)
表8.3
Science and Technology
アプリケーションとポート番号の例
FTP
ポート番号21
TELNET
ポート番号23
SMTP
ポート番号25
HTTP
ポート番号80
RTSP
ポート番号554
TCP
IP
ホストRTP
ポート番号5004
UDP
FTP: file transfer protocolSMTP:simple mail transfer protocolHTTP: hyper text transfer protocolRTSP: real time streaming protocol
RTP:real-time transport protocol
図8.4
Science and Technology
UDPとTCPのまとめ
UDP TCP
接続形態 1:1 および 1:n 1:1
アプリケーションの特定方法 UDPポート番号 TCPポート番号
送受信の単位 パケット(*1) ストリーム(*2)
宛先までの到達保証 なし あり
パケット損失時の動作 なし 再送
事前のアプリケーション同士の接続動作(コネクションの確立)
不要(*3) 必要(*4)
処理の重さ 軽い 重い
(*1)パケット……送信側が送ったパケットが、 そのままの形で受信側に届く。•(*2)ストリーム…送信されるデータはさまざまな長さを持つ。•(*3)コネクションレス型通信•(*4)コネクション型通信
表8.4
Science and Technology
TCP Tahoe
TCP Reno
TCP Vegas
要点
スロースタート + ふくそう回避 + 高速再送
Tahoe + 高速回復
RTT (round trip delay) ベースのふくそう制御
* 広く用いられているのは TCP Reno
• スロースタート: slow start• ふくそう回避: congestion avoidance• 高速再送: fast retransmission• 高速回復: fast recovery
いろいろなTCP
Science and Technology
TCPによる輻輳ウインドウとスロースタート(TCP Tahoe)
①
スロースタート
パケットが損失するまでウインドウサイズを2倍づつ
増加
⑤スロースタート閾値に達したら輻輳回避モードへ移行 輻輳回避
ウインドウサイズ
時間
③スロースタート閾値=ネットワークの許容量の1/2に設定
輻輳ウインドウ
スロースタート
④スロースタート
スロースタート
ネットワークの
許容量
②ネットワークの許容量の検知=パケット損失発生
図8.5
しきい値 輻輳回避
Science and Technology
8.5 輻輳ウィンドウとスロースタート21
TCP Tahoe(場所の名前)の例〔1〕スロースタート
TCPは輻輳ウィンドウサイズを1から開始し、ウィンドウサイズを2倍ずつ増加させる(スロースタート)。ネットワークの空き帯域で、転送可能な 大ウィンドウサイズを超えるとパケット損失が発生する。パケット損出を検知したTCPは、パケット損出直前のウィンドウサイズの1/2をスロースタート閾値として設定する。そして輻輳ウィンドウサイズを、1から再度設定し、スロースタートを繰り返す。
〔2〕輻輳回避
ウィンドウサイズが設定されたスロースタート閾値に達すると輻輳回避段階に入り、ネットワークの許容量に達するまで、ウィンドウサイズを1ずつ増加させる。1ずつ増加させることにより、ネットワークの許容量に到達する時間が遅くなり、スロースタートによってウィンドウサイズを増加させるよりも平均スループットが大きくなる。
Science and Technology
TCP Reno
①
スロースタート
パケットが損失するまでウインドウサイズを2倍づつ
増加
⑤スロースタート閾値に達したら輻輳回避モードへ移行
ウインドウサイズ
時間
③スロースタート閾値=ネットワークの許容量の1/2に設定
輻輳ウインドウ
④スロースタート
ネットワークの
許容量
②ネットワークの許容量の検知=パケット損失発生
輻輳回避
Tahoeの問題点
Tahoe
Reno
スロースタートに戻る必要なし!パケット廃棄前の半分(現在値)
Science and Technology
• Reno の問題点:
故意にパケット廃棄を発生させて最適なスルー
プットを探っている。
パケット廃棄を起こさなければ、スループットは
もっと上がるはず。
• ラウンドトリップ遅延 (RTT) に基づくスロースタート:
TCP Vegas
Science and Technology
セッション開始 別のセッション開始Tahoe
Reno
Vegas
直感的な比較
Science and Technology
TCP Tahoe
TCP Reno
TCP SACK
TCP Vegas
要点
スロースタート + ふくそう回避 + 高速再送
Tahoe + 高速回復
Reno + 選択的再送 (selective repeat)
RTT (round trip delay) ベースのふくそう制御
* 広く用いられているのは TCP Reno
• スロースタート: slow start• ふくそう回避: congestion avoidance• 高速再送: fast retransmission• 高速回復: fast recovery
いろいろなTCP