要約

  • RFC 4098では、試験条件に必要な制御面の動作をDUTがすべて終えた時点を収束と呼ぶ。RFC 7747では、FIB変更が完了し、試験で転送されるすべてのトラフィックが新しい経路を通るまで終わらない。
  • Susan Haresは、どちらのInformational RFCでも五人の著者の一人である。二文書を結ぶ人物ではあるが、単独の発明者でも、IETF合意、製品実装、運用結果を支配する主体でもない。

報告書の最後の一行から読む

収束試験の表には、しばしば一つの時間だけが残る。しかしRFC 7747の報告様式を後ろから読むと、数字の周囲に多くの欄がある。初期イベントか復帰イベントか。DUTへ何個のパケットを送り、何個が転送されたか。connectivity lossとconvergence lossはいくつか。順序が入れ替わったパケット、重複したパケットはあったか。

さらに前には、packet size、offered load、sampling interval、経路数、route mixture、route packing、policy、BGP timers、TCP parametersが並ぶ。値はこれらの条件を圧縮した結果であり、条件を捨てても生き残る装置固有の定数ではない。

この発想は、終点をパケットに語らせる。Rajiv Papneja、Bill Parise、Susan Hares、David Lee、Ilya Varlashkinが2016年に公表したRFC 7747は、FIBまたはdata-plane convergenceを、すべてのFIB変更が完了し、転送されるすべてのトラフィックが新たに提案された経路を取る状態と定義する。同じノード内でもcontrol-plane convergenceとは異なると明記し、制御面を測る方法は対象外に置いた。

ここでいう「すべて」は試験集合の内側にある。インターネット上の全パケットではない。単一のBGP DUTを三または四ノードで囲み、iBGP、eBGP、eBGP multihopの基本ケースを作る。単純化は再現性を得るためであり、route reflector群、再帰的next hop、tunnel、分散line card、実サービスの負荷まで再現したという主張ではない。

測定間隔より細かい回復は見えない

RFC 7747は観測されたpacket lossから時間を求める。そのため、一つのrouteに連続して送る二つのパケット間隔が精度の上限になる。10ミリ秒ごとにしか観測していない経路について、内部ログの桁数を理由に1ミリ秒精度を主張することはできない。

これは地味だが重要な制約である。高性能な測定器は短い断を見つけられる一方、offered load自体がDUTの挙動に影響する可能性もある。どのroute subsetへ、どのrateで、どのpacket sizeを送ったかを記録して初めて、精度と負荷の交換条件が見える。

試験は逆向きにも行う。障害を与えて代替へ移るinitial eventだけでなく、元の状態へ戻すreversion eventを同じ表で報告する。切替は速いが復帰に長い装置や設定は、一方向の数字だけでは発見できない。復帰は付録ではなく、可逆性の検査である。

その前に制御面の時計がある

RFC 7747が参照する言葉の土台はRFC 4098である。Howard Berkowitz、Elwyn Davies、Susan Hares、Prakash Krishnaswamy、Michael Leppが2005年にまとめたこの文書は、単一BGP deviceのeBGP制御面収束を記述する用語を整えた。最初の焦点はrouting informationのarrival、processing、propagationにある。

定めた試験条件に対し、DUTが必要な制御面動作を終えた時点で収束したとする。単一prefixのbest routeが変わる例では、そのrouteをdownstream peersへ広告した時点が完了になり得る。これは有用な測定であり、data planeの代用品である必要はない。

RFC 4098自身が境界を示す。iBGP、制御情報の収束後にforwardingが始まる過程、複数BGP devicesの相互作用は後続課題とされた。したがって「広告済み」は正しい制御面の事実でも、「全試験パケットが新経路へ移動済み」と同義ではない。

二つの時計の間には実装経路がある。BGP processがUPDATEを受け、policyを適用し、Loc-RIBを更新し、Adj-RIB-Outを作る。その後、softwareからhardwareへ情報が渡り、FIBとadjacencyが更新される。各段階が速くても、別の段階を証明はしない。

Route mixtureは試験の人口統計である

RFC 4098はroute mixtureをroute集合のdemographicsと呼ぶ。AS path length、attribute、prefix lengthの分布、UPDATEへのpacking、到着間隔が入力を形作る。単純な集合は処理限界を探るのに向き、live dataに似せた集合は実運用への理解を増やし得る。しかし現実的なmixtureのモデル化は未解決の研究課題とされた。

Policyも人口を加工する。全routeを受け入れるminimal policyと、多くをfilterしattributeを書き換える設定では、処理量もbest-path outcomeも異なる。Peer数、routes per peer、churn、flap damping、他protocolとの相互作用、forwarded traffic、timer、TCP、authenticationも結果を動かす。

RFC 7747はこの条件を試験手順へ落とす。Baselineにはminimal policyを使い、追加policyは正確に記載する。Optional parametersは無効化し、特に指定しない値はdefaultへ戻すことを勧める。同じcaseの反復ではinterface mediaとthroughputをそろえる。

平均するなら全parametersを固定する。Timer expiryやCPU schedulingによるばらつきがあるため、trial数、分散、統計的な意味を残す。異なる条件を混ぜて平均を安定させても、再現性は高まらない。

Black-boxという継承

RFC 7747のrate-derived methodはRFC 6412を参照する。RFC 6412とRFC 6413はlink-state IGPのdata-plane convergenceを扱い、DUT外部からのblack-box packet measurement、loss-derived、rate-derived、route-specificな方法を整えた。BGPの動作要件を決める文書ではない。内部状態が外部効果を自己認定しないという測定規律が受け継がれた。

RFC 1242は一般的なbenchmarking terminologyを、RFC 2544はtesterがDUTへtrafficを送り、戻ったpacketを検証するlaboratory setupを与える。系譜は制御された比較を可能にするが、lab resultをproduction SLAへ変換しない。

RFC 4271はBGPの基礎を定める。Reachability informationを交換し、UPDATEを処理し、Adj-RIB-In、Loc-RIB、Adj-RIB-Outを維持し、ASレベルのpolicyを反映する。RIB recordは制御面の知識と選択を説明する。FIB stateとpacket outcomeは、それぞれ別に観測されなければならない。

Susan Haresを大きくしすぎない

現在のIETF DatatrackerはSusan HaresをSue Haresとしても識別し、公開写真を掲載する。IDR chair、BGP Directorate secretaryなどの役割と、RFC 4098、RFC 7747を含む17 RFCを表示している。

ここから言えるのは、Haresが十一年離れた二つの共同文書に参加し、制御と転送の測定境界を読む人物的な糸口になることだ。彼女一人が二つの方法を発明した、2005年に2016年の設計を予定した、あるいは合意、vendor、operatorを支配するとは言えない。

著者とreviewerは公開方法を作る。Vendorはsoftwareとhardwareの境界を実装する。Testerはinputとinstrumentを選ぶ。Operatorはpolicyを決める。Service ownerはlossの結果を負う。人物記事がこの分業を消すなら、二つの時計を分けた文書の精神にも反する。

一つのevent IDで証拠を縫う

再検証できる記録は、withdrawal、announcement、link failure、hard resetなどのtriggerを一意にする。同じIDの下でAdj-RIB-In、policy version、best-path reason、control completion、FIB update、外部packet sequenceを結ぶ。Sampling intervalも値として保存する。

差が観測できなかった場合は「このcadenceでは分離不能」と記す。二つが同時だったという結論ではない。逆に大きな差があっても、BGPだけを原因と決めつけず、programming queue、recursive resolution、hardware、testerの欠落を調べる。

convergence_timeという一列に押し込むと、後から意味を復元できない。UPDATEはUPDATEを、RIBは選択を、FIB acknowledgementは実装が定義した完了を、packet probeは宣言した集合での外部結果を証明する。境界を守って結び直すことが、短い数字より強い運用記録になる。

情報源