| 通信プロトコル | |
| 略語 | SR |
|---|---|
| 目的 | トラフィックエンジニアリング、明示的なパスルーティング |
| 開発者 | IETF SPRINGワーキンググループ |
| 導入 | 2013 |
| に基づく | ソースルーティング |
| OSIレイヤー | ネットワーク層(レイヤー3) |
| RFC | 8402 |
セグメントルーティング(SR)は、セグメントと呼ばれる一連の指示に従ってパケットをネットワーク経由で転送できるようにするコンピュータネットワーク技術です。これは、インターネット技術タスクフォース(IETF)のSPRINGおよびIPv6ワーキンググループ内で、IPおよびMPLSのソースルーティングの概念を拡張するものとして開発されました。
セグメントルーティングドメインでは、イングレスルータは各パケットにセグメントのリストを挿入します。各セグメントは、後続のルータによって実行される転送命令またはネットワーク機能を識別します。したがって、転送パスは、ホップごとのルーティング決定のみによってではなく、パケットに含まれるセグメントリストによって決定されます。
セグメントルーティングの根底にある概念は、IPおよびMPLSネットワークにおけるトラフィックエンジニアリングの簡素化に関する研究から生まれた。従来のMPLSトラフィックエンジニアリングは、明示的な転送パスを確立するためにリソース予約プロトコル-トラフィックエンジニアリング(RSVP-TE)などのシグナリングプロトコルに依存しており、ルーターはネットワーク全体でトンネルごとの状態を維持する必要があった。サービスプロバイダーネットワークの規模と複雑さが増すにつれて、シグナリング要件を削減し、ネットワーク運用を簡素化する代替アプローチが検討された。[ 1 ]
2013年、IETFはパケット交換ネットワーク向けのソースルーティング原理に基づく標準化されたアーキテクチャを開発するためにSPRING(Source Packet Routing in Networking)ワーキンググループを設立しました。初期の作業は、追加のシグナリングプロトコルを必要とせずにセグメントルーティングとMPLSラベルを統合することに焦点を当てていました[ 2 ]。このアプローチは後にSR-MPLSとして知られるようになりました[ 3 ] 。
その後の研究では、セグメント 識別子 (SID) のリストを運ぶ IPv6 拡張ヘッダーであるセグメント ルーティング ヘッダー (SRH) の導入により、アーキテクチャが IPv6 に拡張されました。[ 4 ]この拡張は、一般に IPv6 上のセグメント ルーティング (SRv6) [ 5 ]と呼ばれ、IPv6 アドレスを使用して転送動作とネットワーク機能を表現する機能を導入しました。
このアーキテクチャは、セグメントルーティングアーキテクチャを定義するRFC 8402 、 IPv6のセグメントルーティングヘッダーを指定するRFC 8754 、MPLS、OSPF、IS-IS、BGP、および関連技術のSRv6ネットワークプログラミングプロトコル拡張機能を定義するRFC 8986など、一連のIETF発行物を通じて標準化されました。IETF SPRINGワーキンググループ内では、さらなる開発が続けられています。
セグメントルーティングは、 OSPFやIS-ISなどの既存のリンクステートルーティングプロトコルによって配信されるトポロジ情報を使用して動作するように設計されています。セグメント識別子(SID)はプロトコル拡張機能を通じてアドバタイズされ、ルーティングドメイン内のルータは利用可能なセグメントの一貫したビューを維持できます。
RSVP-TEなどのシグナリングプロトコルに基づく従来のMPLSトラフィックエンジニアリングとは異なり、セグメントルーティングはルーティングプロトコルによって既に交換された情報に基づいて転送パスを構築します。セグメントリストは、イングレスルータ自身によって生成される場合もあれば、パス計算要素(PCE)などの外部コントローラによって計算される場合もあります。
セグメントは、パケットを転送する際にルータによって実行される命令を表します。セグメントには、以下のような種類があります。
パケットは1つ以上のセグメントで構成される場合があります。ルータは、パケットを次の宛先に転送する前に、現在のセグメントを処理します。処理は、すべてのセグメントが消費されるまで続きます。
セグメントルーティングはMPLSネットワーク上で展開することができ、一般的にはSR-MPLSと呼ばれています。
SR-MPLSでは、セグメント識別子はMPLSラベルとしてエンコードされます。入力ルータはラベルのスタックをパケットにプッシュし、各ルータはスタックの最上位にあるラベルに従ってパケットを転送してから、そのラベルを削除します。残りのラベルによって、後続の転送パスが決定されます。
SIDは、OSPFやIS-ISなどの内部ゲートウェイプロトコル(IGP)の拡張機能を通じて配布されます。
セグメントルーティングは、SRv6(IPv6上のセグメントルーティング)を使用してIPv6上でも動作させることができます。
SRv6では、セグメントはIETFによって定義されたセグメントルーティングヘッダー(SRH)と呼ばれるIPv6拡張機能に含まれるIPv6アドレスによって表されます。各セグメントは、転送先またはIPv6アドレスに関連付けられた特定の転送動作を識別します。
パケットがネットワークを通過する際、ルーターはセグメントルーティングヘッダーを順次処理し、すべてのセグメントが実行されるまで処理を続けます。
セグメントルーティングヘッダー(SRH)は、セグメントルーティングに必要な情報を含むIPv6ルーティング拡張ヘッダーです。
ヘッダーには、IPv6セグメントのリスト、現在アクティブなセグメントのインデックス、およびオプションのType-Length-Value(TLV)オブジェクトが含まれます。ルータは、パケットが最終宛先に到達するまで、転送中にアクティブなセグメントを更新します。セグメントルーティングヘッダーはRFC 8754で定義されています。
セグメント識別子は通常、IETFによって標準化されたプロトコル拡張機能を通じて、ロンクステートルーティングプロトコルによって配布されます。
SR-MPLS環境では、SIDは通常MPLSラベル空間から割り当てられます。SRv6環境では、SIDはネットワーク事業者によって割り当てられたIPv6アドレスまたはプレフィックスに対応します。
セグメント識別子は、その機能に応じて、ルーティングドメイン全体でグローバルに有効な場合もあれば、個々のルーター内でローカルに有効な場合もある。
セグメントルーティングは、ネットワーク内の明示的な転送パスを定義することで、トラフィックエンジニアリングポリシーを実装するために使用できます。
ルーティングプロトコルによって計算された最短経路のみに依存するのではなく、負荷分散、遅延制約、管理ルーティングポリシーなどの運用上の目的を満たすために、パケットは選択されたノードまたはリンクを経由してルーティングされる場合があります。
転送パスを定義するセグメントリストは、イングレスルータによってローカルに計算される場合もあれば、集中コントローラによって計算される場合もある。
セグメントルーティングは、ネットワーク障害発生後のトラフィック中断を軽減することを目的とした保護メカニズムをサポートしています。
そのようなメカニズムの一つに、トポロジー独立ループフリー代替(TI-LFA)があります。これは、ルーターがリンクまたはノードの障害を検出した後、ルーティングプロトコルの完全な収束を待つことなく、事前に計算されたバックアップパスにトラフィックを即座にリダイレクトできるようにするものです。
セグメントルーティングは、サービス機能連鎖(SFC)を実装するために使用できます。SFCでは、パケットは順序付けられたネットワーク機能のシーケンスを介して転送されます。
展開形態によっては、これらの機能にはファイアウォール、ネットワークアドレス変換(NAT)、ロードバランサー、侵入検知システム、その他のパケット処理サービスなどが含まれる場合があります。SRv6では、これらの機能は特定の転送動作に関連付けられたIPv6セグメントによって直接表現されることがあります。
セグメントルーティングは、以下のようなさまざまなネットワーク環境で導入されています。
これは、トラフィックエンジニアリング、高速経路変更、サービス機能の連鎖、およびネットワークスライシングに利用できる可能性があります。
セグメントルーティングは、ルーティングプロトコルによって既に配信されている情報を利用することで、明示的な転送パスを確立するために必要なシグナリング量を削減します。また、ネットワークコア内で維持される転送状態の量を減らすことで、トラフィックエンジニアリングされたネットワークの管理を簡素化する可能性もあります。
SRv6環境では、各セグメントがセグメントルーティングヘッダー内でIPv6アドレスを占有するため、セグメントが追加されるにつれてパケットヘッダーのサイズが大きくなります。また、SRv6の転送動作の処理は、ネットワーク機器のハードウェアサポートにも依存する場合があります。
セグメントルーティングはIETFによって標準化されています。主な仕様は以下のとおりです。
追加のRFCでは、セグメントルーティングの展開におけるルーティングプロトコル、MPLS、およびBGPの拡張機能が定義されています。
アーキテクチャの開発は、IETF SPRINGワーキンググループ内で継続されている。