はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回はセグメントルーティングの続編である「SRv6 エンドファンクション」についてまとめていきたいと思います。
エンドファンクションとは
SRv6のエンドファンクションとは、「Locator、Function、Argsで構成されるSID(Segment ID)のFunction部分」で定義されます。
定義された値により、SRv6のエンドノード(SRv6 ヘッダをDecapするノード)での動作が決まってくるものである。
具体的なファンクションとして、現段階では主に以下の表にある通りです。
基本的には、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 |
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の処理をスキップし次のヘッダを処理する |
例えば、エンドポイントのルータに受信した場合の動作は、SRHをDecapしエンドファンクション動作を実行するのが通常です。
しかし、USDの場合、SRHの処理をスキップしInner IPv6ヘッダを参照しルータE宛に送信するような動作になります。
トランジットファンクションとは
トランジットファンクションとは、名前の通りトランジットノードで処理する動作を定義するファンクションになります。
この機能には、主に4つ定義されております。
今度CMLで実装して確認してみようと思います。
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のネットワークプログラミングの特徴であるエンドファンクションとトランジットファンクションの概要についてまとめました。
この本もちょっとずつ読みたいと思ってます。