はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回はセグメントルーティングの続編である「SRv6 エンドファンクション」についてまとめていきたいと思います。
エンドファンクションとは
SRv6のエンドファンクションとは、「SRv6のEnd Point上で動作する機能」を指します。
この機能は、「SID(Segment ID)を構成しているFunction」で定義されています。

具体的なファンクションは、以下の表にまとめてあり、END.DT4やEND.DT6、END.DX2が主に利用されています。
| エンドファンクション | 動作 |
| END | IPv6 FIBを参照しルーティングを実施 |
| END.X | 各SIDに紐づけられたL3 Interfaceからルーティング |
| END.T | 各SIDに紐づけられた特定のFIBを参照し、ルーティング(特定のVRF等) |
| END.DX6 | SRHを削除(Decap)後、紐づけられたIPv6 L3 Interfaceにルーティング |
| END.DX4 | SRHを削除(Decap)後、紐づけられたIPv4 L3 Interfaceにルーティング |
| END.DT6 | SRHを削除(Decap)後、紐づけられた特定のIPv6 FIBを参照しルーティング |
| END.DT4 | SRHを削除(Decap)後、紐づけられた特定のIPv4 FIBを参照しルーティング |
| END.DX2 | SRHを削除(Decap)後、紐づけられた特定のL2 Interfaceからルーティング |
END.XやEND.TとEND.DT、END.DXの違いは、終点ノードでSRHを削除するかどうかの違いです。
Functionの一例「END.DT6」とは?
END.DT6は、エンドノードでSRv6ヘッダを削除後に、「特定のIPv6 FIBを参照しルーティングする機能」となります。
具体的には、エンドポイントであるルータDに到着後、SRHをDecapしIPv6ヘッダの宛先は「E::」になっているため、ルータE宛のIFからパケットを送信しルータEに届けます。
この時、特定のIPv6ルーティングは宛先Eを含むVRFのFIBを参照します。

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宛に送信するような動作になります。

Head-End Behaviors
「Head-End」とは、SRv6ネットワーク上で定義される始点から終点までの経路を示したポリシー(SR Policy)になります。
上記から「Head-End Behaviors」とは、始点となるノード(ルータ)で終点までの動作を定義する動作を指します。
2025/12時点で定義されている主な動作は、以下の4つになります。
| Function | 動作 |
| H.Encaps | 特定の宛先に対するパケットに対し、指定されたSR Policyを定義する |
| H.Encaps.Red | H.Encapsで定義されたSR Policyの最適化されたバージョン →Segment Listの最初のSIDを削除した上で、特定のSRv6 PolicyをEncapする |
| H.Encaps.L2 | L2フレームに対するT.Encaps機能 |
| H.Encaps.L2.Red | L2フレームに対するT.Encaps.Red機能 |
最後に
今回は、SRv6のファンクションについて、まとめてみました。
途中で止まっていたSRv6シリーズを少しずつ更新していこうと思います。

