トランスポート層とフロー制御
Science and Technology
OSI階層モデル
階層 内容 情報交換 の単位 第7層 アプリケーション層 (application layer) WWW、電子メール、ファイル転送などのアプリ ケーションが機能するためのプロトコル。http、 smtp、ftpなど。 APDU 第6層 プレゼンテーション層 (presentation layer) アプリケーション層で利用されるデータの表現 形式および表現形式間の変換。 PPDU 第5層 セッション層 (session layer) セッション(通信の開始から終了までの一連の 手順、エンドエンド間データの同期など)プロト コル。 SPDU 第4層 トランスポート層 (transport layer) エンドエンド間データ転送プロトコル、信頼性の 高いTCP、リアルタイム性の高いUDPなど。 TPDU 第3層 ネットワーク層 (network layer) エンドエンド間のルーティング(通信経路選択) 。 IPなど。 パケット 第2層 データリンク層 (data link layer)隣接ノード間送受信のためのデータのパケット 化の方法と送受信プロトコル。 フレーム 第1層 物理層 (physical layer) データリンク層からのフレームをビット列へ変 換、あるいはその逆。物理媒体の電気的イン ターフェイスおよび変調方式など。 ビット
高位レ
イ
ヤ
低位レ
イ
ヤ
APDU: Application Protocol Data Unit
インターネット上の
TCPによる高信頼
通信サービス
高信頼TCPコネクション TCPコネクション型 通信送信 TCPコネクション型 通信受信 ユーザから見た高信頼通信サービス インターネット上の 高信頼通信サービスの実装 TCP セグメント セグメントTCP TCP セグメント TCP セグメント アプリ データ アプリ データ アプリ データ アプリ データ IPパケット IPパケット ネットワーク層 トランスポート層 アプリケー ション層 低信頼コネクションレス あて先ノード 発信ノード 発信ノード あて先ノードScience and Technology
UDPヘッダ
(16ビット)
宛先ポート番号
(16ビット)
データ長
(16ビット)
チェックサム
(16ビット)
アプリケーションデータ
32ビット
図
8.1
発信元ポート番号
8.2
UDP
5
UDP(User Data Protocol)
Ack(受信確認)なし
エラー発生時、パケットを捨てる
上位での処理が必要
→大容量データ
マルチキャスト(放送型)
長距離でのデータ転送
Science and Technology
インターネットアプリケーションとトラン
スポートプロトコル
アプリケーション
アプリケーション
プロトコル
トランスポート
プロトコル
電子メール
SMTP
TCP
リモートログイン
telnet
TCP
WWW
HTTP
TCP
ファイル転送
ftp
TCP
ストリーミング
RTSP
TCP UDP
IP電話
RTP
UDP
ルーチングプロトコル
RIP
UDP
アドレス変換
DNS
UDP
SMTP:simple mail transfer protocol HTTP: hyper text transfer protocol
ftp: file transfer protocol
RTSP: real time streaming protocol RTP:real time protocol
RIP: routing information protocol DNS: domain name server
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 Protocol DHCP: Dynamic Host Configuration Protocol
Science and Technology
TCPヘッダ
32ビット
アプリケーションデータ 発信元ポート番号 (16ビット) 宛先ポート番号 (16ビット) シーケンス番号 (32ビット) 確認応答番号 (32ビット) ヘッダ長 (4ビット) ウインドウサイズ (16ビット) 緊急ポインタ (16ビット) (オプション) 予約ビット (6ビット) チェックサム (16ビット)URG ACK PSH PST SYN FIN
フラグ(各1ビット)
エンドエンド制御
• End-to-End の確認応答による誤り制御とフロー制御
ルータ
パケット
ACKパケット
• ポート番号によるアプリケーションの識別
エンドホスト
エンドホスト
Science and Technology
8.3
TCP(1/3)
10
TCP(Transmission Control Protocol)
受信確認(確定的な高信頼転送)
目的:高信頼なデータ転送を行う
→Ack処理
エラー検出と訂正
フロー制御
パケット順序制御
上位アプリケーションに転送するインタフェース
送信側
SN=#5
受信側
SN=#5
タイムアウト
Ackがないと
再送
データ Ack8.3
TCP(2/3)
11①
シーケンス番号 宛先ホストでは、この番号に
よってセグメントの順番を正しく並べ替えたり、
届かなかったセグメントの再送要求を出すことが
できる。
②
確認応答番号 データを受信したホストが送信
元ホストに受信の確認を行うための番号である。
③
ヘッダ長
TCPヘッダの長さを4オクテット(32
ビット)単位で示す。
④
予約ビット 将来の機能拡張のための予備ビット
である。
Science and Technology
8.3
TCP(3/3)
12⑤
フラグ
6ビットからなり、つぎの六つのフラグフィールド
(各
1ビット)から構成されている。
•URG(緊急データ) 緊急伝送用であることを示す。
•ACK(確認応答) コネクション確認要求の最初のパケット以外は、
すべて1である。
•PSH(逐次処理) 転送強制フラグである。1の場合は受信した
データをただちに上位層へ渡す。
•PST(強制切断) 1の場合はコネクションの強制解除を行う。
•SYN(接続要求) 同期フラグである。1の場合はコネクション設定
を開始する。
•FIN(切断要求) 転送終了フラグである。1の場合はコネクションを
終了する。
⑥
ウィンドウサイズ 宛先ホストは、到着したセグメントを
「ウィンドウ」と呼ばれる受信バッファに一度蓄積し、上
位層に渡す。ウィンドサイズが残っているまで一括して
送信可能。
ウィンドウ コントロール
13(
a)ウィンドコントロール
(
b)ウィンド処理による
Possible to receive packets in a short time Window=2 Sends the 2nd packet without waiting for AckNode A Node B
Send back only the Ack for #8
Science and Technology
受信者
送信者
セグメント
ACK
T
T
T
T
T
受信者が受取れている間隔(受信間隔)で
Ackを返送=ボトルネック速度の擁立
ACK
送出のタイミ
ングを生成
V.Jacobson: “Congestion Avoidance and Control,” SIGCOM’88. 帯域使い切り
セルフ・クロッキング
ボトルネック受信のタイ
ミングで
Ackを生成
• 最も少ない帯域割り当てを受けているユーザに対し、最大の帯域割り
当てを行う動作を、すべてのユーザに対して繰り返す
(最小最大公平)。
1
2
4
3
5
(例) すべてのリンク容量が 1 の場合の以下 (①から⑤の5 セッション) の最小最大公平は?
① ボトルネックリンク
→ 公平に 1/3 割り当て
② ボトルネックリンク
→ 残りの 2/3 割り当て
③ ボトルネックリンク
→ 帯域 1 を割り当て
最小最大フロー制御
①
②
③
④
⑤
Science and Technology
時間
使用帯域
セッション開始
別のセッション開始
時間
使用帯域
セッション開始
別のセッション開始
理想:
TCP: スロースタート + ふくそう回避
*端末毎の分散制御
最小最大公平
TCP Reno の場合TCPにおけるフロー制御
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)表
8.3
Science and Technology
アプリケーションとポート番号の例
FTP
ポート番号
21
TELNET
ポート番号
23
SMTP
ポート番号
25
HTTP
ポート番号
80
RTSP
ポート番号
554
TCP
IP
ホスト
RTP
ポート番号
5004
UDP
FTP: file transfer protocol
SMTP:simple mail transfer protocol HTTP: hyper text transfer protocol RTSP: real time streaming protocol
RTP:real-time transport protocol
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
TCPによる輻輳ウインドウと
スロースタート(
TCP Tahoe)
① スロースタート パケットが損 失するまでウ インドウサイ ズを2倍づつ 増加 ⑤スロースタート閾 値に達したら輻輳 回避モードへ移行 輻輳回避 ウインドウサイズ 時間 ③スロースター ト閾値=ネット ワークの許容 量の1/2に設定 輻輳ウインドウ スロースタート ④スロース タート スロースタート ネットワークの 許容量 ②ネットワークの 許容量の検知= パケット損失発生図
8.5
しきい値
輻輳回避
Science and Technology
8.5 輻輳ウィンドウとスロースタート
22TCP Tahoe(場所の名前)の例
〔1〕スロースタート
TCPは輻輳ウィンドウサイズを1から開始し、ウィンドウサイズを2
倍ずつ増加させる(スロースタート)。ネットワークの空き帯域で、転
送可能な最大ウィンドウサイズを超えるとパケット損失が発生する。
パケット損出を検知した
TCPは、パケット損出直前のウィンドウサイ
ズの
1/2をスロースタート閾値として設定する。そして輻輳ウィンドウ
サイズを、1から再度設定し、スロースタートを繰り返す。
〔2〕輻輳回避
ウィンドウサイズが設定されたスロースタート閾値に達すると輻輳
回避段階に入り、ネットワークの許容量に達するまで、ウィンドウサイ
ズを1ずつ増加させる。1ずつ増加させることにより、ネットワークの
許容量に到達する時間が遅くなり、スロースタートによってウィンドウ
サイズを増加させるよりも平均スループットが大きくなる。
TCP Reno
① スロースタート パケットが損 失するまでウ インドウサイ ズを2倍づつ 増加 ⑤スロースタート閾 値に達したら輻輳 回避モードへ移行 ウインドウサイズ 時間 ③スロースター ト閾値=ネット ワークの許容 量の1/2に設定 輻輳ウインドウ ④スロース タート ネットワークの 許容量 ②ネットワークの 許容量の検知= パケット損失発生輻輳回避
Tahoeの問題点
Tahoe
Reno
スロースタートに戻る必要なし!
パケット廃棄前の半分(現在値)
Science and Technology
•
Reno の問題点:
故意にパケット廃棄を発生させて最適なスルー
プットを探っている。
パケット廃棄を起こさなければ、スループットは
もっと上がるはず。
•
ラウンドトリップ遅延
(RTT) に基づくスロースタート:
TCP Vegas
セッション開始
別のセッション開始
Tahoe
Reno
Vegas
Science and Technology