要約

  • Dave Millsが1983年に記したFuzzballのPINGは、複数のプローブや記録、ヒストグラムを備え、すでに数年間使われていた計測パッケージだった。Mike MuussのBSD pingは、それとは目的と実装環境の異なるUnix版である。
  • Muussの回想によれば、BSD版は1983年12月に書かれ、ICMPのraw socketを使うためのカーネル対応と、応答を往復時間や損失として読み取れる表示を伴った。

ネットワークの調子が悪いと感じたとき、まず知りたいのは限られた問いだ。この地点からこの宛先に送ったプローブは、今、返ってくるのか。答えを測るには、パケットを選び、時間を計り、返信を送信分と照合し、結果を人に示す必要がある。pingの成立を一人の発明者だけで語ると、この測定がどの現場に置かれ、どんな仕事を可能にしたのかが見えにくくなる。

ICMPのEchoは、二つのプログラムより先に規定されていた。1981年9月のRFC 792はEchoとEcho Replyを定義し、要求に含めたデータを応答側が返すよう定めた。識別子とシーケンス番号は、要求と返信を照合する手掛かりとして利用できる。繰り返しの測定、端末での表示、アプリケーションの稼働確認までを一体にした仕組みがRFC 792で生まれたわけではない。同RFCはICMPをIPの通信環境を知らせる機構とし、データグラムや制御メッセージの到達を保証しないことも明らかにしている。

Dave MillsのFuzzballには、すでにPINGがあった。1983年12月のRFC 889はそれを「original PING」と呼び、“Packet InterNet Groper”と展開する。Millsは、このプログラムがその時点までの6年間、インターネットと接続ネットワークの測定に使われてきたと記した。計測用に構成されたLSI-11のFuzzballに置かれた複数のパッケージの一つであり、ICMP Echoを含む複数種のプローブを送り、応答を処理し、経過時間などをファイルに記録し、実行中にはヒストグラムやトレースも表示した。端末で一度だけ使うコマンドというより、研究データを集める装置の一部だった。

RFC 889の実験は、その使い方を示す。1983年10月から11月の試験では、Fuzzballから異なるネットワーク上のホストへ、タイムスタンプ入りのEchoを送った。パケット長を選び、返信を待ち、経過時間を記録するサイクルを一つの実行で512回繰り返した。目的は、長さや経路、欠落した応答が測定遅延やTCPの再送タイマーにどう関係するかを調べることだった。Millsはネットワークの遅延と、ホスト内部で生じる可能性のある大きなキュー待ち時間を分けている。数値だけを見れば単純でも、何を計測したかを知らなければ解釈は崩れる。

Mike Muussの回想は、別の導入過程を描く。1983年7月、ノルウェーでのDARPA会合で、MillsがFuzzball LSI-11を使った時間計測付きEchoの話をしたという。12月になると、Ballistic Research LaboratoryのIPネットワークで奇妙な動作があり、Muussは4.2a BSD UNIX用のPINGを書いた。この会話と順序は後年のMuuss自身の記録に基づくため、当時の議事録と混同すべきではない。プログラムはコンパイルできたが、ICMPに必要なBerkeleyのSOCK_RAW/AF_INET socketをカーネルが支えていなかった。Muussはその対応も夜通しで実装したと書く。最初のテストパケットを送る前に、同僚のChuck Kennedyがローカルのハードウェア障害を見つけて直していた。

FuzzballのPINGは計測システムの中で分析を支え、MuussのBSD pingは運用者の机に近づいた。彼のサンプル表示は、返信ごとのシーケンス番号と時間、送信数・受信数・損失率、往復時間の最小・平均・最大を並べる。プロトコルがEchoを提供し、コマンドが反復、時計、照合、読みやすい要約を結びつけた。Muussによれば、Berkeleyはソースコードとカーネル変更を受け取り、プログラムはBerkeley UNIXの標準的な一部となった。この証言から確認できるのはBerkeley UNIXへの組み込みであり、すべてのリリースの時期や後続実装の同一性ではない。

名前にも複数の記録がある。Muussは、ソナーの音と反響位置測定を思い浮かべて自分のプログラムを名付けたと説明する。一方、MillsのRFCはFuzzballのプログラムを“Packet InterNet Groper”と展開し、MuussはMillsがそう提案したと後から聞いたことがあると述べる。同じ言葉が二つのツールに使われたことは確かでも、単一の命名場面を裏付ける資料はない。

Echo Replyが示すのは、応答者がある一つのプローブを返したという事実である。複数の計測は、特定の送信元、時間帯、パケット条件における往復時間や応答欠落の変化を示す。Webやメールなどのアプリケーションが利用可能か、相手が本物か、あらゆる経路で到達できるかまでは証明しない。応答がないときも、フィルタ、混雑、ホスト負荷や方針の影響を区別できない。Fuzzballでは実験とデータ処理が結果の意味を支えた。BSDのコマンドは観測を手近にしたが、証拠の境界を広げたわけではない。

したがって1983年の出来事は、pingが存在しなかったところからMuussが発明した、という話ではない。ICMP EchoはRFC 792で定義済みであり、Millsは先行するFuzzball PINGを記録している。Muussはその測定の発想をBSDの実運用に持ち込み、raw ICMP socketに必要なカーネル機能を補った。短いコマンドでネットワークに質問しやすくなった。返答が一度あったことと、目的のサービスが動いていることは、今も別の問いである。

出典