要約

  • RFC 3316は、新しいTCP ACK、RTCP受信報告、SIP応答を、直近の送信パケットが第一ホップのルーターを通過したという肯定的な証拠として使うようセルラーホストに勧めた。
  • 推論の範囲は狭い。遠端との前進は近隣ノードが少し前に到達可能だったことを示すが、アプリケーションの完了、将来の接続、任意の受信トラフィックによる順方向の健全性までは証明しない。

初期のセルラーIPv6でコストの高いパケットは、必ずしも利用者のデータではなかった。ホストがすでに別の場所で答えを得ている問いを、もう一度投げるためのパケットであることもあった。

IPv6のNeighbor Unreachability Detection(NUD)は、次のホップが最近到達可能だったかを追跡する。確信の有効時間が切れ、なお送信が続くと、ホストはユニキャストのNeighbor Solicitationを送り、応答としてのNeighbor Advertisementを待てる。Ethernetなら、この交換はアドレス解決と同じ文脈に置きやすい。ところがRFC 3316が扱ったGPRS/UMTS回線は、ほぼポイント・ツー・ポイントだった。セルラーホストの隣接ノードは既知のデフォルトルーター一台で、通常のリンク層アドレスもない。アドレス解決は不要でも、第一ホップの故障を見抜く必要は残る。

そこで仕様は、問いの立て方を変えた。別のプロトコルが、直近の送信パケットが前へ進んだことを、すでに示していないか。

一般のNeighbor Discoveryが、その論理を用意していた。新しいTCP ACKを受け取れば、先に送ったデータが遠端に届いたと分かる。遠端が同一リンク上にないなら、そのデータは送信元の第一ホップルーターを通らずに到達できない。エンド・ツー・エンドの確認は、同時にローカルな事実も含む。パケットが通過した時点で、次のホップは到達可能だった。ホストはこの事実でNeighbor Cacheを更新し、ルーターだけを確かめる追加プローブを省ける。

RFC 3316は、当時のセルラー用途で多かったUDPにも同じ考え方を適用した。UDP自身は配送確認を持たないため、アプリケーションが正しい因果関係を持つ信号を出す必要がある。RTPなら、一部の送信パケットが相手に届いたことを示すRTCPの受信報告ブロックが候補になる。SIPなら、要求への応答が、その要求の到達を示す。セルラーホストがSIPサーバー側の場合、応答を送っただけでは一般に足りないが、その後のACKを受け取れば、先のINVITE応答が相手側まで届いたと推定できる。

これらは交換可能な「通信中」ランプではない。いずれも、最近送信したトラフィックの到達を含意しなければならない。無関係な受信データグラムは該当しない。未要請のRouter Advertisementも同じである。それが示すのは、ルーターからホストへの逆方向が通ったことだけだ。NUDが知りたいのは、ホストから次のホップへ向かう順方向である。単に何かが届いたことと、検査対象の経路を証明することは違う。

得られる状態も永久ではない。上位層の確認により、Neighbor Cacheのエントリーは限られた期間REACHABLEになる。新しい確認が止まればSTALEへ老化し、送信に伴ってDELAY、さらにPROBEへ進み、専用のNeighbor Solicitationが再開する。RFC 3316はNUDを廃止したのではない。稼働中のアプリケーションが有効な答えを出している間、同じ問いを重ねないようにした。

無線シグナリングには費用がある。文書はセルラー帯域が限られ、通信量に応じて課金される場合もあると述べた。不要なメッセージを減らせば、容量と利用者負担の双方を守り得る。ただしRFC 3316は、パケット数、電池、料金の実測削減を報告していない。リンク構造と既存フローの証拠を基に、実装上の方針を提示しただけである。

この仕組みは後継文書にも残った。2013年のRFC 7066はEPSを含むモデルへ更新し、TCP、RTCP、SIPの例を維持しながら、DNS応答も候補に加えた。文章が継承されたことは推論の有用性を示すが、どの端末が実装し、何回プローブを削減したかは示さない。

歴史的な要点は、アプリケーションが経路制御を決めるべきだという話ではない。因果関係が明示できる場合に限り、ある層の証拠を別の層の状態機械が安全に再利用できる、という話である。遠端の報告が第一ホップについて語れるのは、直近の送信パケットがそこを必ず通ったからだ。結論はそこで止めるべきだ。RTCP報告は良好な映像を、SIP応答は通話完了を、到達可能なルーターは利用可能なサービスを証明しない。ひとつのパケットの証拠は、次のパケットの保証書でもない。

出典:RFC 3316、RFC 2461、RFC 4861、RFC 7066、RFC 7849、RFC 8504、RFC 3550、RFC 3261。