目次
第1章 TCP入門 ……通信の信頼性を保証する
1.1 通信とプロトコル ……OSI参照モデル,TCP/IP,RFC
- OSI参照モデル
- [第7層]アプリケーション層
- [第6層]プレゼンテーション層
- [第5層]セッション層
- [第4層]トランスポート層
- [第3層]ネットワーク層
Column IPアドレス
- [第2層]データリンク層
- [第1層]物理層
- TCP/IP ……実装や実用性を主眼に置いたモデル
- RFC
- 階層モデルにおけるデータのフォーマット
- プロトコル階層に基づく通信の手順
1.2 トランスポート層と通信の信頼性 ……データを宛先まで順序誤りや消失なく転送する
- 通信の信頼性
- ネットワークの輻輳 ……中の状況を外から見ることができない巨大なネットワークで起きる問題
- 通信における要求条件 ……Web,動画,ゲーム……。アプリケーションごとにまったく異なる要求
- トランスポート層の役割
1.3 UDPの基本 ……コネクションレス型のシンプルな機構
- UDPの基礎知識 ……コネクションレス型
- ユニキャスト,マルチキャスト,ブロードキャスト
- UDPとアプリケーションプログラムにおける信頼性の確保 ……RTP,RUDP
- UDPに適したアプリケーション ……動画ストリーミング,VoIP,DNSなど
Column QUIC ……UDPベースで信頼性の高い通信路を高速確立
1.4 TCPの基本 ……信頼性の保証とリアルタイム性
- TCPの基礎知識 ……コネクション型
- TCPとUDPの機能や特徴
- TCPに適したアプリケーション ……確実にデータを転送する
1.5 TCPの基本機能 ……再送,順序制御,輻輳制御
- コネクション管理
- シーケンス番号
- 再送制御 ……再送タイマー,RTT,ACKの利用
- 順序制御
- ポート番号
- フロー制御 ……ウィンドウ,ウィンドウサイズ
- 輻輳制御と輻輳制御アルゴリズム ……Loss-based,Delay-based
- 無線通信とTCP
- 無線通信の基本 ……最大の利点と限られた通信範囲,固定型と移動型
- 無線特有の難しさ ……TCPへの影響
1.6 特定の用途向けのプロトコル ……RUDP,W-TCP,SCTP,DCCP
- RUDP ……Reliable User Datagram Protocol
- W-TCP ……Wireless Profiled TCP
- SCTP ……Stream Control Transmission Protocol
- DCCP ……Datagram Congestion Control Protocol
1.7 まとめ
- 参考文献
第2章 TCP/IPの変遷 ……インターネットの普及とともに,進化するプロトコル
2.1 TCP黎明期 ……1968~1980年
- ARPANETプロジェクト発足(1968年) ……パケット交換の登場
- 回線交換方式
- パケット交換方式
- ARPANET ……世界初のパケット交換によるネットワーク構築プロジェクト
- UNIX開発(1969年) ……OSとTCP/IPの普及
- ALOHAnet構築(1970年) ……世界初の無線パケット交換ネットワーク,衝突回避の原型
- TCP誕生(1974年) ……一変したネットワークの基本的な考え方
- イーサネット規格公開(1980年) ……IEEE 802.3とCSMA/CD
2.2 TCP発展期 ……1980~1995年
- 輻輳崩壊への懸念(1980年) ……トラフィック量の増加
- Nagleアルゴリズム(1984年) ……輻輳崩壊を防ぐ,輻輳制御関連手法の先駆け
- 輻輳制御アルゴリズムの導入(1988年) ……状況に応じてデータ送出量を調整する
- インターネットへの移行とWWW誕生(1990年) ……アプリケーションによる牽引
2.3 TCP普及期 ……1995年~
- Windows 95発売(1995年) ……OSとともに普及するTCP/IP
- IPv6運用開始(1999年) ……徐々に進んでいるIPv6移行
- 無線LAN登場(1999年) ……IEEE 802.11
- さまざまなインターネットサービス(2004~2006年) ……サービスごとに異なる特性
2.4 TCP拡充期 ……2000年代後半~
- スマートフォン普及(2007年~) ……モバイルネットワーク接続&Wi-Fi接続
- クラウドコンピューティング登場(2006年~) ……遠距離の通信トラフィックの増大
- モバイルネットワークの高速化(2010年,2015年) ……無線の特性とTCPに求められる性能
- IoTの一般化(2015年) ……低消費電力&長距離データ通信のサービス
2.5 まとめ
- 参考文献
第3章 [図解で見えてくる]TCPとデータ転送 ……信頼性と効率の両立へ向けて
3.1 TCPにおけるデータ構造 ……パケットとヘッダーのフォーマット
- パケットのフォーマット ……ヘッダー部とデータ部
- セグメント ……MTU,MSS,経路MTU探索,フラグメンテーション
- TCPヘッダーフォーマット
- UDPヘッダーフォーマット
3.2 コネクション管理 ……3ウェイハンドシェイク
- コネクションの確立 ……3ウェイハンドシェイク
- コネクションの切断 ……ハーフクローズ
- ポートとコネクション
3.3 フロー制御とウィンドウ制御 ……多過ぎず少な過ぎず, 適切な転送量と受信側バッファ
- フロー制御 ……ウィンドウとウィンドウサイズ
- バッファリングと遅延
- ウィンドウ制御 ……スライディングウィンドウ
- おさらい:フロー制御,ウィンドウ制御,輻輳制御
3.4 輻輳制御 ……転送量と,中身が見えない自律的なネットワークの状況の推測
- TCPの輻輳制御の基本コンセプト ……「ネットワークの状態はよくわからない」という前提
- スロースタート
- 輻輳回避
- 高速リカバリー
3.5 再送制御 ……確実かつ効率的に,高信頼通信の要
- 高信頼通信に必須な再送制御
- [1]再送タイマーによるタイムアウト制御
- SRTTから求める従来からの手法 ……RTO決定法①
- Jacobsonによる新しいアルゴリズム ……RTO決定法②
- RTTの変動例に対する振る舞いの違い
- [2]重複ACKの利用 ……高速再転送アルゴリズム
- 輻輳回避アルゴリズムと再送制御の複合的な動作と輻輳ウィンドウの変化
3.6 TCP初期の代表的な輻輳制御アルゴリズム ……Tahoe,Reno,NewReno,Vegas
- 輻輳制御アルゴリズムの進化
- Tahoe ……初期のTCPアルゴリズム
- Reno ……高速リカバリー
- NewReno ……新たなパラメーター(recover)の導入
- Vegas ……Delay-basedの制御方式の登場
3.7 まとめ
- 参考文献
第4章[押さえておきたい]プログラマーのための輻輳制御アルゴリズム ……増え続ける通信量とネットワークの動き
4.1 輻輳制御の基本の考え方 ……目的と設計,更新式の基礎
- 輻輳制御の目的
- 輻輳制御の基本設計
- 輻輳制御の有限オートマトン
- 5つの状態
- 状態遷移図 ……遷移条件と遷移後の動作
- 輻輳制御アルゴリズムの例 ……NewReno
Column Linuxにおける輻輳制御アルゴリズムの実装
4.2 輻輳制御アルゴリズム ……理論×シミュレーションで深まる理解
- 本書で紹介する輻輳制御アルゴリズム ……Loss-based,Delay-based,Hybrid
- NewReno ……輻輳制御アルゴリズムのリファレンスモデル
- AIMD
- AIMDと更新式
- ns-3によるシミュレーション結果 ……NewReno
- Vegas ……Delay-based型の代表的な輻輳制御アルゴリズム
- 更新式 ……Vegas
- ns-3によるシミュレーション結果 ……Vegas
- Westwood ……無線通信向けHybrid型輻輳制御アルゴリズム
- 更新式 ……Westwood
- ns-3によるシミュレーション結果 ……Westwood
- HighSpeed ……ロングファットパイプ向けLoss-based型の輻輳制御アルゴリズム[1]
- 更新式 ……HighSpeed
- ns-3によるシミュレーション結果 ……HighSpeed
- Scalable ……ロングファットパイプ向けLoss-based型輻輳制御アルゴリズム[2]
- 更新式 ……Scalable
- ns-3によるシミュレーション結果 ……Scalable
- Veno ……無線通信向けのHybrid型輻輳制御アルゴリズム
- 更新式 ……Veno
- ns-3によるシミュレーション結果 ……Veno
- BIC ……ロングファットパイプ向けのLoss-based型輻輳制御アルゴリズム[3]
- 更新式 ……BIC
- ns-3によるシミュレーション結果 ……BIC
- H-TCP ……ロングファットパイプ向けのHybrid型輻輳制御アルゴリズム
- 更新式 ……H-TCP
- ns-3によるシミュレーション結果 ……H-TCP
- Hybla ……RTTが大きな通信路に対応するLoss-based型の輻輳制御アルゴリズム
- 更新式 ……Hybla
- ns-3によるシミュレーション結果 ……Hybla
- Illinois ……BICと比較しておきたいHybrid型輻輳制御アルゴリズム
- 更新式 ……Illinois
- ns-3によるシミュレーション結果 ……Illinois
- YeAH ……2つのモードを持つ,ロングファットパイプ向けのHybrid型輻輳制御アルゴリズム
- 更新式 ……YeAH
- ns-3によるシミュレーション結果 ……YeAH
4.3 プロトコルアナライザー「Wireshark」実践入門 ……輻輳制御アルゴリズムの観察❶
- Wiresharkとは
- Wiresharkの環境構築
- ネットワーク構成
- セットアップ
- Wiresharkの起動&停止
- WiresharkによるTCPのヘッダー分析
- キャプチャーするインターフェースの選択とパケットの観察
- パケットのTCPのヘッダー分析
- Wiresharkによる輻輳制御アルゴリズムの観察
- 採用している輻輳制御アルゴリズムの確認 ……sysctlコマンド(Ubuntu)
- インターフェースの選択とパケット送受状況の確認
- 輻輳制御アルゴリズムの挙動の観察 ……TCP Stream Graphs機能
- 描画できる5種類のグラフ
- 輻輳制御アルゴリズムの切り替え ……sysctlコマンド(Ubuntu)
4.4 より深い理解へ。ネットワークシミュレーター「ns-3」入門 ……輻輳制御アルゴリズムの観察❷
- ns-3の基本
- ns-3の環境構築
- ns-3によるネットワークシミュレーションのための基礎知識
- おもなディレクトリ構成
- ns-3のコマンド
- シナリオファイル「chapter4-base.cc」
- Pythonによるシミュレータ実行/分析/可視化
- scenario_4.pyの中身 ……Python入門
- 挙動の確認 ……IPython
4.5 まとめ
- 参考文献
第5章 CUBIC ……3次関数でシンプルに問題解決する
5.1 ネットワーク高速化とTCP輻輳制御 ……ロングファットパイプがもたらした変化
- Reno/NewReno ……広く利用されてきたアルゴリズム
- 高速リカバリー ……NewRenoの特徴
- ネットワークの高速化とロングファットパイプ ……通信環境の変化の観点から
- end-to-endの三大遅延 ……処理遅延,キューイング遅延,伝搬遅延
- ロングファットパイプにおけるNewRenoの課題
- 広帯域を有効活用できない
- 広帯域環境ではそもそも送信レートが不十分
- 高遅延環境になるほどスループットが低下
5.2 Loss-based輻輳制御 ……パケットロスの数を指標に用いる歴史ある手法
- Loss-based輻輳制御の基本 ……パケットロスの数,輻輳ウィンドウサイズ,AIMD
- AIMD制御 ……加算的な増加,乗算的な減少
- [実測]NewRenoの輻輳ウィンドウサイズの振る舞い ……シミュレーション条件,測定項目の確認から
- シナリオ1の実行&測定結果の保存場所
- シミュレーション実行結果 ……ロングファットパイプにおけるNewRenoの課題を確認
- HighSpeedとScalable ……ロングファットパイプ向け輻輳制御
- HighSpeedとScalableのシミュレーション
- シミュレーション実行結果 ……HighSpeedとScalableの課題を確認
- 親和性 ……HighSpeedとScalableの課題[1]
- 親和性の課題を確認するシミュレーションの実行
- シミュレーション実行結果 ……アグレッシブ過ぎでNewRenoが追い出される…… 親和性に課題あり
- RTT公平性 ……HighSpeedとScalableの課題[2]
- RTT公平性の課題を確認するシミュレーションの実行
- シミュレーション実行結果 ……RTTが小さいフローが占有…… RTT公平性に課題あり
5.3 BIC ……広帯域/高遅延環境を前提にしたアルゴリズム
- BICとは
- 輻輳ウィンドウサイズを増やす2つのフェーズ ……加算的な増加と二分探索
- BICの輻輳ウィンドウサイズの振る舞い
- BICの課題
5.4 CUBICの仕組み ……3次関数で複雑な輻輳ウィンドウサイズ制御手法を大幅に簡略化
- CUBICの基本
- ウィンドウ制御アルゴリズムのポイント
- CUBICの輻輳ウィンドウサイズの振る舞い
- シミュレーションで確認する親和性の高さ
- シミュレーションで確認するRTT公平性
- 狭帯域低遅延環境への適応性
- CUBICの課題
5.5 [疑似コードで見る]CUBICのアルゴリズム ……おもな動作と処理内容
- 初期化
- ACK受信時の動作
- パケットロス時の動作
- タイムアウト時の動作
- おもな関数と処理
- cubic_update()関数
- cubic_tcp_friendliness()関数
- cubic_reset()関数
5.6 まとめ
- 参考文献
第6章 BBR ……スループットとRTTをモニタリングして,データ送出量を調節
6.1 バッファサイズ増加とバッファ遅延増大 ……メモリーの低価格化の影響
- ネットワーク上のバッファサイズ増加
- バッファブロート ……バッファサイズの増加がもたらした「遅延増大」という弊害
- AQMと,REDアルゴリズム
- Loss-based輻輳制御とバッファブロートの関係
- バッファサイズによるCUBICへの影響 ……シミュレーションによる確認
- シミュレーション実行結果 ……バッファサイズの増加に伴って,RTTが顕著に増大
6.2 Delay-based輻輳制御 ……RTTを指標にするアルゴリズムの基本とVegasの例
- 3種類の輻輳制御アルゴリズムと環境に合わせたアルゴリズムの選択
- Delay-based輻輳制御の基本となる考え方 ……RTT増大とキューイング遅延の増大
- Vegasの輻輳ウィンドウサイズの振る舞い
- シミュレーション実行結果 ……RTT,スループットともにバッファサイズに依存しない
- 従来のDelay-based制御の課題 ……アグレッシブ性が非常に低く,追い出されやすい
- シミュレーション実行結果 ……Loss-based輻輳制御との共存が難しい
6.3 BBRの仕組み ……データ送出量とRTTの関係を把握し,最大スループットを目指す
- BBRの基本的な考え方
- BBRの輻輳ウィンドウサイズ制御の仕組み ……RTprop,BtlBw
- グラフで見るBBR ……inflight,BtlBw,RTprop,BDP
- RTpropの推定
- BtlBwの推定
6.4 [疑似コードで見る]BBRのアルゴリズム ……ACK受信時とデータ送信時
- ACK受信時
- データ送信時
6.5 BBRの振る舞い ……シミュレーションで見えてくる各種挙動
- BBRフローの単独での挙動
- シミュレーション実行結果 ……バッファサイズの影響なし,probeRTT
- 複数のBBRフローが存在するとき
- シミュレーション実行結果 ……ほぼ公平に近いスループットになっている
- CUBICとの共存
- シミュレーション実行結果 ……Loss-based輻輳制御との共存は?
- ロングファットパイプにおける挙動
- シミュレーション実行結果 ……(概ね)安定した,高いスループットを維持
6.6 まとめ
- 参考文献
第7章 TCPの最新動向 ……アプリケーションや通信環境が変われば,TCPも変わる
7.1 TCPを取り巻く状況の変化 ……3つの観点「通信方式」「通信端末」「接続先」
- TCPのこれまでの発展 ……本章までのおさらい
- 通信環境の変化を捉える3つの観点 ……通信方式,通信端末,接続先
- 通信方式の変化 ……イーサネット,モバイル,LWPA
- 通信端末の多様化 ……高性能化のみならず,制約のある環境下での通信という観点も
- 接続先の変化 ……クラウドコンピューティング,エッジコンピューティング
- 本章で取り上げる事例について
7.2 5G(第5世代移動通信) ……モバイル通信の大容量化,多端末収容,高信頼/低遅延
- [背景]5Gの適用シナリオと実用化までのスケジュール
- [課題]厳しい要求条件への対応
- [TCP関連動向❶]ミリ波帯への対応 ……新規周波数資源の開拓
- [TCP関連動向❷]マルチパスTCP ……1つのTCPコネクションで,複数の経路を利用
- 4Gと5Gの共存と,マルチパスTCP
- 高精細映像ストリーミング ……TCP関連動向❸
7.3 IoT ……多種多様なデバイスのインターネットを介した制御
- [背景]多様な端末と通信方式
- センサーデバイスの例
- IoTのコネクション数や通信方式
- [課題]処理能力や通信環境の制約 ……プロトコル,デバイスの多様性,低速,各種制限……
- [TCP関連動向]IoTへの最適化 ……大きな制約条件の通信のもと,何ができるのか
7.4 データセンター ……大規模化とさまざまな要求条件の混在
- [背景]クラウドサービスの普及とデータセンターの大規模化
- データセンター内のネットワーク構成
- [課題]バッファに対する相反する要求条件
- [TCP関連動向]データセンター向けの輻輳制御
7.5 自動運転 ……求められる高信頼/低遅延,大容量の通信性能
- [背景]自動運転の普及に向けた取り組み
- 自動運転レベル
- 無線通信が担う役割 ……V2N,V2V,V2I,V2X,V2P
- 通信性能への要求 ……高信頼,低遅延,大容量
- [課題]高速移動時の高信頼通信 ……自動運転実現の鍵を握る「信頼性」
- [TCPとの関係]信頼性保証に向けて ……規模に合わせて考えていく「遅延」や「輻輳制御」
7.6 まとめ
- 参考文献