3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SRv6 L3VPNのconfig(IOS-XR)をコマンド/パケットを見ながら理解してみた

Posted at

前回の記事の構成をベースに実際に流れるパケットを見ながらSRv6 L3VPNの挙動を理解していきたいと思う

構成

前回の構成のままだとloop構成で少し分かりにくいので、XR01とXR05の間をshutして直線構成にした
XR01上のvrf 1からXR05上のvrf 1へのpingパケットが到達すればSRv6 L3VPNが実現していることになる
挙動の確認手順としては、前回構築した構成からXR02のconfigを削除して、ステップごとにconfig投入後の挙動を確認していく

スクリーンショット 2024-10-16 13.52.45.png

SRv6 L3VPNを実現させるためのざっくりしたステップ

1. Locator Prefixの設定

まずは各RouterにてSRv6 SIDを構成するLocatorの定義を行う
投入configは以下

conf

segment-routing
 srv6
  locators
   locator MAIN
    micro-segment behavior unode psp-usd
    prefix fcbb:bb00:2::/48

commit

今回は参照configがuSIDのため、uSID設定にて確認する。Full-Length SIDとの詳細な挙動比較は別途実施予定
ちなみに、Full-Length SIDでの設定は以下となる

conf

segment-routing
 srv6
  locators
   locator MAIN
    prefix fcbb:bb00:2:2::/64

commit

uSIDからFull-Length SIDへの設定変更として"micro-segment behavior unode psp-usd"だけを削除したconfigで設定しようとしたらerrorとなった。format含めて細かい確認はuSID挙動確認時に。なのでprefixをcommitが通るように少し変更してあげる必要あり

スクリーンショット 2024-10-19 12.13.03.png

locator設定前後での状態確認コマンドは主に3種類。コマンドと設定前後の差分は以下
左がconfig投入後、右がconfig投入前

show segment-routing srv6 locator

スクリーンショット 2024-10-19 12.21.13.png
設定したLocatorが表示されるようになった

show segment-routing srv6 sid all

スクリーンショット 2024-10-19 12.25.02.png
Locatorを定義するとuNのFunction SID(Node SID)が自動で割り当てられる
Behavior一覧は以下参照
スクリーンショット 2024-10-19 12.31.43.png

show segment-routing srv6 manager

スクリーンショット 2024-10-19 12.36.13.png

SRv6が有効になり、Locator情報が反映されている

またRIB上(show route ipv6)からもconfig投入後にSIDを確認することができる。

スクリーンショット 2024-10-19 12.40.54.png

これでGlobal上でのSRv6設定は完了

2. ISISによるLocator(SID)の広報

Locator設定後は、自身のLocatorもしくはFunction含めたSID情報をSRv6 Domainの他のRouterに通知してあげる必要がある。IS-IS SRv6 ExtensionのSRv6 Locator TLVを利用して通知している。今回はsubTLVを利用してSIDを通知している形となる。

投入configは以下(Interface設定はSRv6とは関係ないため省略)

conf

router isis 1
 is-type level-1
 net 49.0.0.2.00
 address-family ipv6 unicast
  metric-style wide
  segment-routing srv6
   locator MAIN

commit

config投入前(左)とconfig投入後(右)のR1とR2との間のパケットをキャプチャしてみると、LSPに新たにType 27のSRv6 Locatorが追加されている

スクリーンショット 2024-10-19 14.16.40.png

詳細を確認すると、Locator情報とBehavior情報が通知されている。通知されているBehavorはuN(END)

スクリーンショット 2024-10-19 14.31.40.png

ちなみにLocator設定を実施した際は自動的にuN(END)が割り当てられたが、ISIS配下にSRv6設定を行うとuA(END.X)が自動割り当てされる

スクリーンショット 2024-10-19 14.57.29.png

スクリーンショット 2024-10-19 15.00.45.png

最初このuAに関してもSRv6 Locatorにて通知されるものだと思っていたので、該当箇所をかなり確認してみたが一向に見つからず、色々調べてみても見つからずどゆこと?と思いながら改めてパケットを確認してみるとSRv6 Locatorではなく、Multi Topology IS Reachability(Type 222)のsubTLVにて通知されていた

スクリーンショット 2024-10-20 0.25.44.png

show isis database verbosで確認するリンクステートデータベース上にもuNとuAが設定されていることが確認できる

スクリーンショット 2024-10-20 0.55.51.png

R1のRIBを確認すると、R2で設定したLocatorが登録されている

スクリーンショット 2024-10-20 0.58.16.png

これでISISによるLocator(SID)の広報は完了

3. BGPによるSID(function:uDT4)の広報

SRv6 Domain上でL3VPN機能を利用するためには、uDT4(END.DT4)のfunctionを利用する。uDT4のSIDを受け取ったルータは特定のIPv4テーブル、ここではvrf 1のテーブルを参照する形でL3VPNが実現する。R1がR5にパケットを飛ばす時はR5におけるuDT4のSIDをdst addressに指定してパケット転送することで、R5がパケットを受信した際にuDT4のbehaviorを実行することでL3VPNの挙動となる。

投入configは以下
(今更だが普通にconfig削除からのstep毎のconfig投入はR5で実施すればよかった)

config

router bgp 1
 bgp router-id 1.0.0.2
 address-family vpnv4 unicast
 address-family vpnv6 unicast
 neighbor fcbb:bb00:1::1
  remote-as 1
  update-source Loopback0
  address-family vpnv4 unicast
  address-family vpnv6 unicast

 vrf 1
  rd 1:1
  address-family ipv4 unicast
   segment-routing srv6
    locator MAIN
    alloc mode per-vrf
   redistribute connected

commit

bgp配下にSRv6の設定を実施するとuDT4が定義される

スクリーンショット 2024-10-20 2.42.11.png

UPDATE Messageにて広報される

スクリーンショット 2024-10-20 2.34.15.png

スクリーンショット 2024-10-20 2.41.04.png

最初、uDT4のSID fcbb:bb00:2:e002:: がSRv6 Service Sub-TLVsのSRv6 SID Valueに格納されると思っていたが、Locatorの値が入っており、どこをみてもe002が見た当たらずこちらもかなり探してかなり悩んだ。
色々調べてみた所、下記資料をみてもしかしてと思い、MP_REACH_NLRIのLabel Stackの値を確認して、今回設定されている917536を16進数に変換するとe002となり、uDT4のSIDはLabel Stackに格納されていることがようやく分かった。
BGP-LSを全く理解してない状態でSRv6の勉強始めてしまっているので、ここらへんも今後勉強予定

image.png

show bgpコマンドでも確認。R2でuDT4が定義されていること、R1でuDT4のSIDを受信していることが確認できる

R2
スクリーンショット 2024-10-20 2.57.31.png

R1
スクリーンショット 2024-10-20 3.04.40.png

スクリーンショット 2024-10-20 3.03.39.png

Behavior:63なのでuDT4のSIDを受領していることが確認できる
show bgp vpnv4 unicast received-sids コマンドでも各vpnv4 addressのSIDを確認することができる

スクリーンショット 2024-10-20 3.07.56.png

これでBGPによるSID(function:uDT4)の広報が完了し、SRv6 L3VPN環境構築が完了

4. 疎通確認

R1 vrf1 (1.1.1.1)から R5 vrf1 (1.1.1.5)へのpingを実施
問題なし
スクリーンショット 2024-10-20 3.12.09.png

パケットを確認
R1-R2間
スクリーンショット 2024-10-20 3.15.03.png
IPv4 AddressがIPv6でカプセル化されており、IPv6ヘッダのdst addressがR5におけるuDT4のSIDになっている。
今回の構成ではdstの書き換えは発生せずにR2/R3/R4でも同じIPv6ヘッダにてパケット転送が行われている

次はuSIDの仕組みをもう少しちゃんと理解したい
最終的にはcisco liveドキュメントのSRv6関連の資料全てに目を通して何が書いてあるかを理解できるようにまではなりたい

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?