はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回はセグメントルーティングの続編である「SRv6 エンドファンクション」についてまとめていきたいと思います。
エンドファンクションとは
SRv6のエンドファンクションとは、「SRv6の各種ノード上で動作する機能」を指します。
この機能は、「SID(Segment ID)を構成するFunction」で定義されています。
具体的なファンクションは、以下の表にまとめてあり、END.DT4やEND.DT6、END.DX2が主に利用されています。
エンドファンクション | 動作 |
END | 特定のPrefixへRouting |
END.X | 特定のInterfaceへRouting |
END.T | 特定のIPv6ルーティングテーブルを参照しRouting |
END.DX6 | Decap後、特定のIPv6 IFにRouting(L3-VPN) |
END.DT6 | Decap後、特定のIPv6ルーティングテーブルを参照しRouting |
END.DT4 | Decap後、特定のIPv4ルーティングテーブルを参照しRouting |
END.DX2 | Decap後、特定のL2 IFにRouting |
Functionの一例「END.DT6」とは?
END.DT6は、エンドノードでSRv6ヘッダをDecapした後に、「特定のIPv6ルーティングテーブルを参照しルーティングする機能」となります。
具体的には、エンドポイントであるルータDに到着後、SRHをDecapしIPv6ヘッダの宛先は「E::」になっているため、ルータE宛のIFからパケットを送信しルータEに届けます。
他の動作についても表に書いている機能通りになるため、1つの機能を説明することで他の動作もイメージしやす区なると思います。
Flavorsとは?
End、End.X、End.Tの3種類には、Flavorと呼ばれる機能も存在します。
Flavor | 動作 |
PSP | 次が最終ノードの場合、Outer IPv6ヘッダを更新後にSRHをDecapする(Outer IPv6は残る) |
USP | 自分自身が最終ノードの場合、SRHをDecapする |
USD | 自分自身が最終ノードの場合、SRHの処理をスキップし次のヘッダを処理する |
例えば、エンドポイントとなるルータでSRv6パケットを受信した場合、SRHをDecapしエンドファンクション動作を実行するのが通常です。
しかし、USDの場合、SRHの処理をスキップしInner IPv6ヘッダを参照しルータE宛に送信するような動作になります。
トランジットファンクションとは
トランジットファンクションとは、「トランジットノードで処理する動作を定義するファンクション」になります。
この機能には、主に4つ定義されております。
Function | 動作 |
T | 通常のルーティング |
T.Encaps | 特定のSRv6 PolicyをEncapする |
T.Encaps.Red | 最初のSIDを削除した上で、特定のSRv6 PolicyをEncapする |
T.Encaps.L2 | L2フレームに対するT.Encaps機能 |
T.Encaps.L2.Red | L2フレームに対するT.Encaps.Red機能 |
最後に
今回は、SRv6のネットワークプログラミングの特徴であるエンドファンクションとトランジットファンクションの概要についてまとめました。
この本もちょっとずつ読みたいと思ってます。