RFC 7127: BGP-LSプロトコルのALTO問題への適用性
【背景と設計目標】
RFC 7127は、ALTO(Application-Layer Traffic Optimization)サービスのプロバイダが、ネットワークのトポロジー情報やメトリックを効率的かつ標準化された方法で取得するためのメカニズムを提供することを目標とします。これは、既存のBGP Link-State (BGP-LS, RFC 7752で詳細定義) を活用し、ALTOサーバーが外部情報源から正確なネットワーク状態を容易に収集できる環境を構築するための、Proposed Standardの適用性ノートです。これにより、ALTOクライアントはより最適化されたトラフィックルーティングの推奨を得ることが可能になります。
【通信シーケンスと動作】
RFC 7127が対象とする情報流通は、基本的にBGP-LSプロトコルに基づいています。これは、内部ゲートウェイプロトコル(IGP、例: OSPF/ISIS)が収集したリンクステート情報をBGPの拡張機能を用いて外部のコレクター(通常はALTOサーバーのフロントエンド)に配布するプッシュ型モデルです。
sequenceDiagram
participant "BGP_PEER as B BGP-LS Peer (Router/Source)"
participant "BGP_COLLECTOR as BGP Collector (Route Reflector)"
participant "ALTO_SERVER as ALTO Server (Data Consumer)"
Note over BGP_PEER,BGP_COLLECTOR: Step 1: BGP-LS Peering (TCP/179)
BGP_PEER ->> BGP_COLLECTOR: OPEN (LS Capability Announced)
BGP_COLLECTOR ->> BGP_PEER: KEEPALIVE / Establishment
Note over BGP_PEER: Step 2: IGP Metric Update Occurs
BGP_PEER ->> BGP_COLLECTOR: UPDATE Message (Link-State NLRI)
BGP_COLLECTOR ->> BGP_PEER: KEEPALIVE
Note over BGP_COLLECTOR: Step 3: LS DB Aggregation & Processing
BGP_COLLECTOR ->> ALTO_SERVER: Topology Information Transfer (Internal API/Protocol)
Note over ALTO_SERVER: Step 4: ALTO Map Generation
participant "ALTO_CLIENT as ALTO Client (Application)"
ALTO_CLIENT ->> ALTO_SERVER: Request ALTO Map (PIM/IRD Request)
ALTO_SERVER -->> ALTO_CLIENT: ALTO Response (Optimized Route Recommendation)
動作解説: BGP-LSピアリングはTCPポート179を使用し、セッション確立時にLS Capabilityを通知します。ネットワーク状態が変更されると、BGP-LSピアはBGP UPDATEメッセージにLink-State NLRIを含めてコレクターに通知します。コレクターはこの情報を処理し、ALTOサーバーが利用できる形式(通常はALTO独自のデータ構造)に変換し、ALTOクライアントからのリクエストに応答します。
【データ構造 / パケットフォーマット】
BGP-LS情報は、BGP UPDATEメッセージ内のNLRI(Network Layer Reachability Information)として伝送されます。特に、Link-State NLRIは、ノード、リンク、プレフィックスに関する詳細な属性を伝送するために設計されたTLVs(Type-Length-Value)構造を採用しています。
以下は、BGP UPDATEメッセージ内のLink-State NLRIの抽象的な構造です。
BGP UPDATE Message Payload (Link-State NLRI Context) +-------------------------------------------------+ | BGP Header (Type: UPDATE) (0:19 * 8) | +-------------------------------------------------+ | Withdrawn Routes Length (19:16) | +-------------------------------------------------+ | Total Path Attribute Length (21:16) | +-------------------------------------------------+ | Path Attributes (23:variable) | +-------------------------------------------------+ | Network Layer Reachability Information (NLRI) | +-------------------------------------------------+ | NLRI: Link-State Sub-Structure | +-------------------------------------------------+ | NLRI Type (e.g., Link/Node/Prefix) (0:16) | | NLRI Length (2:16) | | Protocol ID (4:8) (e.g., OSPF, ISIS) | | Instance ID (5:24) | | Link-State Identifier (8:64) | | Local/Remote Node Descriptor (16:variable)| | Link Descriptor (variable) | | Attribute TLVs (Metric, Cost, BW etc.) | +-------------------------------------------------+
重要なフィールド:
NLRI Type: 伝送される情報がノード情報か、リンク情報か、あるいはプレフィックス情報かを示す。
Link-State Identifier: BGP-LSセッション内で特定の情報エントリを一意に識別するために使用される。
Attribute TLVs: リンクのメトリック、トラフィックエンジニアリング関連の属性(最大帯域幅、カラーなど)といった動的なネットワーク状態情報を含む。これらがALTOの最適化ロジックの基盤となる。
【技術的な特徴と比較】
RFC 7127が提案するBGP-LS利用モデルは、従来のALTOのデータ収集モデルと比較して、情報提供の仕組みに大きな違いをもたらします。
| 特徴 | BGP-LS (RFC 7127適用) | 標準ALTO (RFC 7285) |
|---|---|---|
| 情報伝達モデル | プッシュ型 (Push Model) / サブスクリプション的 | プル型 (Pull Model) / リクエスト・レスポンス |
| データ粒度 | ルーター間接続の動的なリンクステート情報、TE属性など、詳細かつリアルタイム。 | 抽象化されたPID (Provider ID) ベースのメトリック、静的なマップ情報が中心。 |
| プロトコル基盤 | BGP拡張機能 (TCP/179) | HTTP/HTTPS (TCP/80, 443) |
| 拡張性 | BGPのPath AttributeやLS NLRI内のTLVsを用いて容易に新しい属性を追加可能。 | JSONベースのデータフォーマットと特定のエンドポイントの拡張が必要。 |
| HOL Blocking | BGPはTCP上で動作するため、セッションレベルでHOL Blockingの影響を受ける。ただし、情報配布は独立。 | HTTP/1.1ではHOL Blockingの影響を受けるが、HTTP/2やHTTP/3 (QUIC) の利用で回避可能。 |
BGP-LSを利用することで、ALTOサーバーはネットワーク状態の変更を即座に(ほぼリアルタイムで)知ることができ、クライアントからのリクエストに対してより最新の、動的な最適化情報を提供できるようになります。
【セキュリティ考慮事項】
BGP-LSの適用は、既存のBGPのセキュリティリスクを引き継ぎます。特に、ネットワークトポロジー情報を外部に公開することになるため、情報汚染や不正アクセスに対する厳重な対策が必要です。
セッション認証と整合性:
BGPセッションのハイジャックを防ぐため、TCP Authentication Option (TCP AO, RFC 5925) または、従来のTCP MD5 (RFC 2385) を用いたセグメントの認証が必須です。
これにより、認証されていない不正なピアからのトポロジー情報の挿入を防ぎます。
情報の信頼性 (Information Integrity):
- 伝送されるリンクステート情報(メトリック、容量、遅延など)の信頼性を保証する必要があります。情報源(IGP)からBGP-LSコレクターに至るまでのパスにおいて、データ改ざんが行われていないことを検証するメカニズム(例:RPKIやOrigin Validationの適用可能性)を検討する必要があります。
情報漏洩 (Confidentiality):
- BGP-LSは通常、ネットワーク内部で使用されるため暗号化が必須ではありませんが、インターネット全体に情報を配布する場合や、信頼できないゾーンに跨ってセッションを確立する場合は、IPsecやTLS over TCP (RFC 8277) を用いて転送データを秘匿することが求められます。ALTOサーバーへの内部転送経路も同様に保護されるべきです。
【まとめと実装への影響】
RFC 7127の適用は、高度なネットワーク情報を提供するALTOサービス実装に以下の重要な影響を与えます。
データモデルの統一と変換: BGP-LSから収集される詳細なトポロジーデータ(ノード、リンク、属性)を、ALTOが要求する抽象化されたPIDベースのデータモデルに迅速かつ正確に変換する、中間データ処理層の実装が不可欠となります。
インフラストラクチャの要求: BGP-LSコレクターは、大規模なLink-Stateデータベースを保持し、BGPの更新を高い頻度で処理できる高性能なプラットフォームで稼働させる必要があります。これは従来のALTOサーバーとは異なる、ルーティングインフラストラクチャへの深い統合を意味します。
リアルタイム最適化の実現性: BGP-LSのプッシュ型特性により、ALTOクライアントはネットワーク状態の変化(例: リンク障害、輻輳)をより迅速に反映した最適化推奨を取得可能になります。これにより、従来の静的または低頻度更新のALTOマップと比較し、アプリケーションレベルでの迅速な対応(例: トラフィックシフト)が実現できます。

