要約
- RFC 2013 は UDP 実装全体について、UDP 利用者へ渡したデータグラム、宛先ポートにアプリがなかったもの、その他の入力エラー、エンティティから送信したものという四つの読み取り専用 Counter32 を定義した。
udpTableの行を識別するのはローカル IPv4 アドレスとローカルポートだけである。遠隔相手、OS プロセス、再利用された socket のインスタンス、個々のデータグラムは含まれない。- RFC 4113 はローカル/リモートのアドレス種別・値・ポート、インスタンス、プロセス ID を加えた。endpoint の責任範囲は明確になったが、アプリ処理や応答到達まで証明するものではない。
四つの総数から一件の通信は復元できない
RFC 2013 の UDP グループは小さい。udpInDatagrams は UDP 利用者へ配達されたデータグラム、udpNoPorts は宛先ポートにアプリが存在しなかった受信、udpInErrors はそれ以外の理由で配達できなかった受信、udpOutDatagrams は当該エンティティから送られたデータグラムを数える。
それぞれは UDP 層における有用な分母である。しかし endpoint ごとの値ではない。リモートアドレス、プロセス、時刻、メッセージ ID、入力と出力の対応はない。同じ時間帯に入力と出力が増えても、一つがもう一つへの返信だったとは限らない。
同時代の RFC 1902 は Counter32 が 2^32−1 の後でゼロへ戻ること、規定された初期値を持たないこと、単独の値は一般に情報を持たないことを明記した。再初期化による不連続もある。差分を読むには二つの観測と連続性が必要であり、正しい差分でも対象はエンジン全体のままである。
待受表の住所欄はローカル側で終わる
udpTable は、ローカルアプリケーションが現在データグラムを受け付ける endpoint を列挙した。索引は udpLocalAddress と udpLocalPort。すべてのローカルインターフェースを対象とする待受は 0.0.0.0、ポートは 0 から 65535 で表された。
この行が裏付けるのは、採取時点で管理 agent がそのローカル IPv4 座標を listener として表現していたことだ。リモートのアドレスとポートはない。所有プロセスも、同じ組を共有する複数 socket を区別する値も、行ごとの受信数もない。
「受け付けている」は、特定データグラムの業務処理を意味しない。プログラムが buffer から読み、形式を検証し、権限を確認し、状態を変更したかは分からない。返信を作ったか、相手へ届いたか、利用者が目的を達成したかも分からない。窓口番号は対話記録ではない。
UDP 利用者への配達はアプリ完了より手前にある
udpInDatagrams の文言は単なる interface 到着より強い。「UDP 利用者へ配達」されたのであり、transport 層の実在する境界を示す。これを単なる packet 観測に薄めるべきではない。一方でアプリケーション成功へ膨らませてもならない。
Counter はプログラムがデータを読んだことを記録しない。udpNoPorts は数えたデータグラムに宛先アプリがなかったことを示すが、送信者を保存しない。udpInErrors はその他の不達理由を一つにまとめる。udpOutDatagrams はエンティティからの送信で止まり、遠隔 host やアプリでの受信を保証しない。
したがって一つの対話を主張するには、データグラムまたはイベント ID、endpoint 状態、process lifecycle、アプリの受領、遠隔観測を外部で結ぶ必要がある。
RFC 4113 は endpoint の同一性を作り直した
2005 年の RFC 4113 は RFC 2013 を置き換え、基本四カウンターを残しながら旧 udpTable を deprecated にした。理由は二つある。IPv4 のみであること、そして「connected」UDP endpoint を記述できないことだ。前者をこの記事の主題にはしない。後者こそ、ローカル座標だけでは相手との関係を表せないという問題である。
新しい udpEndpointTable は wildcard の listener と特定 remote を持つ endpoint の双方を表現できる。索引は local/remote の address type、address、port と udpEndpointInstance からなる。instance は SO_REUSEADDR や SO_REUSEPORT のように同じ tuple を使う複数 process を区別する。udpEndpointProcess は OS の process ID、なければ zero を示し、host-resource や application MIB と対応づけられる。
これは UDP を信頼できる session transport に変える仕組みではない。管理上の「どの endpoint、どの processか」を精密にした仕組みだ。PID は欠落・再利用し得る。remote が設定されていることは、その相手と特定データグラムを交換した証拠ではない。アプリの解析、応答、サービス結果は依然として行の外にある。
より細かな可視性は機密性も高める。RFC 4113 は、index から開いている port を知り得ると警告した。read-only の観測であっても、誰に見せるかは統制対象である。
観測した単位のまま結論を書く
RFC 2013 は完全な会話台帳を約束していない。問題は、全体カウンターを特定サービスへ帰属させ、ローカルポートを通信相手とみなし、「sent」を「delivered」へ、UDP 配達を業務完了へ置き換える後世の読み方にある。
堅い表現は範囲を保つ。連続性のある二時点でエンティティ全体のカウンターが増えた。ある時点で agent がローカル listener を示した。特定通信への帰属には packet/event の join、アプリ処理にはアプリの receipt、遠隔配達には遠隔観測、成功には service 層の定義と測定が要る。
ポートは座標、カウンターは分母、対話は帰属されたイベント列である。RFC 4113 は列の前半を豊かにしたが、結末を書き込んではいない。
情報源
- RFC Editor の RFC 2013 記録
- RFC 2013 — UDP の SNMPv2 MIB
- RFC 2013 errata 検索
- IETF Datatracker の RFC 2013 記録
- RFC 1213 — MIB-II
- RFC 1902 — SNMPv2 の管理情報構造
- RFC 4113 — UDP MIB
- RFC 4001 — Internet address 規約
- RFC 2790 — Host Resources MIB
- RFC 2287 — Application の system-level managed objects
- RFC 3418 — SNMP MIB
- Running-Code Primacy
- Minimum Initial Specification, Localized Future Decision, and Voluntary Adoption
- On Why BTW.Media Exists
証拠の限界
これらの資料は文書の系譜、object 定義、counter semantics、後継 schema を裏付ける。vendor 実装、普及率、現在の default、欠陥、実事故、SLA、測定トラフィック、完了した application outcome は裏付けない。
会員向け解説
トレンド解説の全文を読む
会員は解説の全文と、すべての知見を裏付ける出典メモを読めます。
ストラテジックサークル
あなたの言語で毎日届く、私たちが確認した変化に基づくブリーフィング。
USD 20/月で参加いつでも解約できます。
会員はさらに、リサーチライブラリー全編、フォロー中のネットワークに関するデイリーブリーフィング、会員限定フォーラムを利用できます。






