【ネットワーク入門:セグメントルーティング】SRv6(エンドファンクション・トランジットファンクション)

  • URLをコピーしました!
目次

はじめに

こんにちは。ネットワークエンジニアの「だいまる」です。

今回はセグメントルーティングの続編である「SRv6 エンドファンクション」についてまとめていきたいと思います。

エンドファンクションとは

SRv6のエンドファンクションとは、「Locator、Function、Argsで構成されるSID(Segment ID)のFunction部分」で定義されます。

定義された値により、SRv6のエンドノード(SRv6 ヘッダをDecapするノード)での動作が決まってくるものである。

SID

具体的なファンクションとして、現段階では主に以下の表にある通りです。

基本的には、END.DT4やEND.DT6、END.DX2の機能が一般的に利用されているようです。

エンドファンクション動作
END特定のPrefixへRouting
END.X特定のInterfaceへRouting
END.T特定のIPv6ルーティングテーブルを参照しRouting
END.DX6Decap後、特定のIPv6 IFにRouting(L3-VPN)
END.DT6Decap後、特定のIPv6ルーティングテーブルを参照しRouting
END.DT4Decap後、特定のIPv4ルーティングテーブルを参照しRouting
END.DX2Decap後、特定の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の処理をスキップし次のヘッダを処理する
Flavors一覧

例えば、エンドポイントのルータに受信した場合の動作は、SRHをDecapしエンドファンクション動作を実行するのが通常です。

しかし、USDの場合、SRHの処理をスキップしInner IPv6ヘッダを参照しルータE宛に送信するような動作になります。

USDの動作イメージ図

トランジットファンクションとは

トランジットファンクションとは、名前の通りトランジットノードで処理する動作を定義するファンクションになります。

この機能には、主に4つ定義されております。

今度CMLで実装して確認してみようと思います。

Function動作
T通常のルーティング
T.Encaps特定のSRv6 PolicyをEncapする
T.Encaps.Red最初のSIDを削除した上で、特定のSRv6 PolicyをEncapする
T.Encaps.L2L2フレームに対するT.Encaps機能
T.Encaps.L2.RedL2フレームに対するT.Encaps.Red機能
Flavors一覧

最後に

今回は、SRv6のネットワークプログラミングの特徴であるエンドファンクションとトランジットファンクションの概要についてまとめました。

この本もちょっとずつ読みたいと思ってます。

  • URLをコピーしました!

この記事を書いた人

目次