はじめに
Computer Networks: A Systems Approach の第五版が出版されて約 10 年になる。この間に多くのことが変わったが、最も注目すべきはクラウドとスマートフォンアプリの登場と爆発的な成長だろう。これは様々な面で、我々が 1996 年に本書の第一版を出版したころにインターネットが経験した、ウェブの登場による劇的な変化を思い起こさせる。
第六版はこういった時流に合わせたものであるものの、その北極星に「システム的アプローチ」があることは変わらない。大まかに言って、この新しい版における更新と改善には次の 4 点がある:
-
例を世界の現在状況を反映するように更新した。例えば議論する問題を動機付ける例として使っていた時代錯誤な技術 (ダイヤルアップなど) を削除して有名なアプリケーション (Netflix, Spotify など) に置き換えたり、本文中で使われる数字を最先端の技術 (10 Gbps イーサネットなど) を反映した値に更新したりした。
-
マルチキャスト、リアルタイムビデオストリーミング、クオリティオブサービスといった技術の開発につながったオリジナルの研究と、Zoom, Netflix, Spotify といった今では誰もが知っているクラウドアプリケーションの間のギャップを埋めるようにした。これは最終的な結果だけではなく設計プロセスにも注目するという本書の考え方と合わせたものである。インターネットの機能の多くがプロプライエタリな商用サービスによって提供される現代において、この考え方は特に重要になる。
-
インターネットを広い意味のクラウドに位置付けた。さらに、同程度に重要なこととして、クラウドを形作る商業的圧力の文脈にインターネットを位置付けた。本書で説明される技術的詳細にほとんど影響はないものの、各章の最後に新しく追加された「視点」の節でこの点が議論される。インターネットの絶え間ない進化とそれが切り開くイノベーションの機会をより深く感じ取ることをこの議論の副作用として期待している。
-
ネットワークの重要な設計指針を本書の様々な箇所で「教訓」としてまとめた。それぞれの「教訓」は周辺の文章で示される例から学べる一般的なシステム設計規則あるいはネットワークの基礎的概念を説明する。教育学的に言うと、これらは本書の学習目的 (learning objective) に対応する。
「システム的アプローチ」とは何か?
システム的アプローチ (systems approach) はコンピューターシステムの設計と実装の手法を指す用語であり、オペレーティングシステム、ネットワーク、分散アプリケーションなどの複雑なコンピューティングシステムを構築するときに発生する問題を研究する計算機科学者や実務者によってよく使われる。システム的アプローチでは「全体像」を見る視点が重要となる: 単にシステムの要素をそれぞれ最適化するのではなく、要素同士が互いにどのように対話して全体的な目標を達成するかに注目する必要がある。ネットワークの文脈で「システム的アプローチ」は、伝統的な層モデルにとらわれずに複数の層に関係する方法も選択肢に入れた上で問題に挑む最も優れた方法を考えることを意味する場合が多い。この考え方の良い例が輻輳制御である。輻輳制御には複数の層が関係し、システムとネットワークデバイスの両方が影響を受ける。本書では輻輳制御というシステム全体の問題をトランスポート層に押し込もうとするのではなく、一つの章を使って扱う。また、システム的アプローチは現実世界の実装に大きく焦点を当てる。本書ではインターネットが現実世界の実装の明らかな例であり、これは広くデプロイされた複雑なネットワークシステムである。
第六版で追加された話題
より具体的には、第六版における主な変更は次の通りである:
-
第 1 章に新しく追加された「視点」の節では、近年よく見られるクラウド化 (cloudification) の話題が紹介される。
-
第 2.8 節ではアクセスネットワークを説明する。PON (passive optical network, 受動光ネットワーク) や 5G の RAN (radio access network, 無線アクセスネットワーク) も説明される。
-
第 3.1 節 (スイッチの基礎) と第 3.2 節 (スイッチドイーサネット) において、触れる話題を見直した。VLAN への言及などが追加された。
-
第 3.5 節は更新され、ホワイトボックススイッチと SDN (software-defined network, ソフトウェア定義ネットワーク) の説明が追加された。
-
第 3 章に新しく追加された「視点」の節では仮想ネットワークオーバーレイと VXLAN、そしてクラウドにおけるオーバーレイの役割が説明される。
-
第 4.1 節 (地球規模のインターネットワーク) と第 4.2 節 (IP Version 6) で触れる話題を見直した。
-
第 4 章に新しく追加されたに追加された「視点」の節ではクラウドがインターネットの構造にどのような影響をもたらしているかが説明される。
-
第 5.2 節は QUIC の議論を含むよう拡張された。
-
第 5.3 節は gRPC の説明を含むよう拡張された。
-
第 6.4 節は AQM (active queue management, アクティブキュー管理) の説明を含むよう拡張された。
-
第 7.1 節は Protocol Buffers (protobuf) の説明を含むよう拡張された。
-
第 7.2 節はHTTP 適応ストリーミング (HTTP Adaptive Streaming) の説明を含むよう拡張された。
-
新しく追加された第 8.1 節では脅威 (threat) と信頼 (trust) の双対性が紹介される。
-
第 8.4 節 (認証プロトコル) で触れる話題を見直した。
-
第 8 章に新しく追加された「視点」の節では分散 ID 管理 (decentralized identity management) とブロックチェーン (blockchain) の役割が説明される。
-
第 9.1 節は HTTP/2 の説明を含むよう拡張された。REST, gRPC, クラウドサービスの議論も追加された。
-
第 9.3 節は現代的なネットワーク管理システムの話題を含むよう拡張された。OpenConfig と gNMI の利用にも言及した。
構成
本書を元にネットワークの講義を組み立てるときは、本書全体の構成を理解しておくと役立つだろう。本書は主に次の三つの部分から構成される:
-
概念的、基礎的な内容に触れる部分: ネットワークの心臓部にあるビッグアイデアを説明する。
-
中心的なプロトコルとアルゴリズムを説明する部分: 基礎的な考え方が実際にどのように使われるのかを示す。
-
高度な内容に触れる部分: 一セメスターの講義には入らない可能性がある。
この特徴付けで各章を分けると、第 1 章は基礎的な内容、第 2, 3, 5, 9 章は中心的な内容、第 4, 6, 7, 8 章はそれより高度な内容となる。
この特徴付けで節を分けることもできる。大まかに言って各章は基礎的な概念の紹介から始まり、次に特定の技術の説明、最後に高度な技術の説明が続く。例えば第 3 章では最初に交換ネットワークに関する基礎的な説明 (第 3.1 節) があり、その後スイッチドイーサネットと IP インターネットの詳細 (第 3.2 節–第 3.4 節) に触れ、最後に省略可能な SDN の議論 (第 3.5 節) がある。同様に第 6 章は基礎的な考え方 (第 6.1 節–第 6.2 節) から始まり、その後 TCP の輻輳制御 (第 6.3 節) に触れ、最後に省略可能な高度な内容 (第 6.4 節–第 6.5 節) がある。
謝辞
新しい文章の執筆を助けてくれた次の人物に感謝する:
-
Larry Brakmo: TCP 輻輳制御
-
Carmelo Cascone: ホワイトボックススイッチ
-
Charles Chan: ホワイトボックススイッチ
-
Jude Nelson: 分散 ID
-
Oguz Sunay: セルラーネットワーク
-
Thomas Vachuska: ネットワーク管理
加えて次の人物 (GitHub ユーザー) たちからのコントリビューションとバグフィックスに感謝する:
- Mohammed Al-Ameen
- Mike Appelman
- Andy Bavier
- Manuel Berfelde
- Brian Bohe
- John Craton
- Peter DeLong
- Aaron Gember-Jacobson
- Chris Goldsworthy
- John Hartman
- Ethan Lam
- Diego López León
- Matteo Scandolo
- Mike Wawrzoniak
- 罗泽轩 (spacewander)
- Arnaud (arvdrpoo)
- Desmond (kingdido999)
- Guo (ZJUGuoShuai)
- Hellman (eshellman)
- Xtao (vertextao)
- Joep (joepeding)
- Seth (springbov)
最後に、次のレビュアーによる数多くの有用なコメントと提案に感謝する。彼らの影響は非常に大きい:
-
Mark J. Indelicato, ロチェスター工科大学
-
Michael Yonshik Choi, イリノイ工科大学
-
Sarvesh Kulkarni, ビラノバ大学
-
Alexander L. Wijesinha, タウソン大学
オープンソース
本書1のソースは https://github.com/SystemsApproach/book にてクリエイティブコモンズ表示 (CC BY 4.0) ライセンスで公開されている。読者が本書に対する修正、改善、更新、文章の追加を同じライセンスで提供することを期待している。多くのオープンソースソフトウェアプロジェクトと同様、本書もかつてはオープンでない書籍だった: Peterson と Davie による第五版は Elsevier が著作権を持っていた。ソースをオープンにすることで本書が広く知られるようになり、加えて新しいコンテンツが生まれる土台となることを我々は期待している: 既存の内容を更新したり、新しい話題を追加したり、本書の内容を補完する追加の教材を作成したりといったことだ。
本書を利用する場合、著作権帰属表示は次の情報を含むべきである:
Title: Computer Networks: A Systems Approach
Authors: Larry Peterson and Bruce Davie
Copyright: Elsevier, 2012
Source: https://github.com/SystemsApproach/book
License: CC BY 4.0
コントリビュートの方法
本書を利用したときは、あなたのコントリビューションを本書に返してくれることを期待している。もしオープンソースプロジェクトに参加するのが初めてなら、How to Contribute to Open Source (https://opensource.guide/how-to-contribute) というガイドに目を通すといいかもしれない。このガイドでは、解決されるべきと考える問題に関する Issue を立て、自分が行った改善を GitHub に反映させるために Pull Request を作成する方法などが解説される。これまでに読者が Computer Networks: A Systems Approach から何らかの学びを得たことを願っている。この新しい冒険にあなたもぜひ参加してほしい。
-
訳注: 英語版のこと。 ↩︎