前回に引き続き、vJunos-routerでSRv6を検証します。
今回はTraffic Engineering(SRv6-TE)を行ってみます。
例によってSRv6-TEの詳しい説明はせず、設定と動作確認に着目して進めたいと思います。
SRv6-TEの動作概要よくわからん!な人はKDDI総合研究所の資料の15スライド目からや、Cisco社員の資料を読むとなんとなく動作を理解できるかと思います(後者は英語ですが…)
1. SRv6-TE 構成
前回と同様のTopologyとなります。


(SrcがvJR-11でDstがvJR-21宛のIPv4パケットが)vJR-01からvJR-06へ通る際のTraffic EngineeringなPathを決めます。
今回はvJR-01→vJR-03→vJR-05→vJR-04→vJR-06を通るPathとします。

2. SRv6-TE 設定
それでは設定に入ります。
前提として前回の設定が完了していることとなります。
基本的にはSR-MPLSのTraffic Engineeringとほぼ同様の設定となります。
//vJR-01 set routing-options resolution preserve-nexthop-hierarchy set routing-options forwarding-table srv6-chain-merge set protocols source-packet-routing tunnel-tracking set protocols source-packet-routing segment-list PRIMARY_TO_R6 srv6 set protocols source-packet-routing segment-list PRIMARY_TO_R6 HOP01 srv6-sid 539:0:0:3:1:: set protocols source-packet-routing segment-list PRIMARY_TO_R6 HOP02 srv6-sid 539:0:0:5:1:: set protocols source-packet-routing segment-list PRIMARY_TO_R6 HOP03 srv6-sid 539:0:0:4:1:: set protocols source-packet-routing segment-list PRIMARY_TO_R6 HOP04 srv6-sid 539:0:0:6:1:: set protocols source-packet-routing srv6 set protocols source-packet-routing source-routing-path TO_R6 srv6 set protocols source-packet-routing source-routing-path TO_R6 to 539:0:0:6:1:: set protocols source-packet-routing source-routing-path TO_R6 primary PRIMARY_TO_R6
SR-MPLSの設定に、いくつかSRv6特有の設定が追加である様なイメージです。
3. SRv6-TE 確認
確認をしていきます。
まずは設定したPathを確認します。
//vJR-01
lab@vJR-01# run show spring-traffic-engineering lsp detail | no-more
E = Entropy-label Capability
Name: TO_R6
Tunnel-source: Static configuration
Tunnel Forward Type: SRV6
To: 539:0:0:6:1::
From: 1:1:1::1
Te-group-id: 0
State: Up
Path: PRIMARY_TO_R6
Path Status: Up
Outgoing interface: NA
Auto-translate status: Disabled Auto-translate result: N/A
Compute Status:Disabled , Compute Result:N/A , Compute-Profile Name:N/A
BFD status: N/A BFD name: N/A
BFD remote-discriminator: N/A
Segment ID : 128
ERO Valid: true
SR-ERO hop count: 4
Hop 1 (Loose):
NAI: None
SID type: srv6-sid, Value: 539:0:0:3:1::
Hop 2 (Loose):
NAI: None
SID type: srv6-sid, Value: 539:0:0:5:1::
Hop 3 (Loose):
NAI: None
SID type: srv6-sid, Value: 539:0:0:4:1::
Hop 4 (Loose):
NAI: None
SID type: srv6-sid, Value: 539:0:0:6:1::
Total displayed LSPs: 1 (Up: 1, Down: 0, Initializing: 0)StateがUpとなっており、Hop1~4が設定した通りのSIDとなっているため、問題なさそうです。
続いてCEネットワーク(221.221.221.0/24)宛の経路情報を確認します。
//vJR-01
lab@vJR-01# run show route 221.221.221.0/24
inet.0: 19 destinations, 19 routes (19 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
221.221.221.0/24 *[BGP/170] 00:22:42, localpref 100, from 6:6:6::6
AS path: I, validation-state: unverified
> to fe80::5201:ff:fe03:1 via ge-0/0/2.0, SRV6-Tunnel, Dest: 539:0:0:6:1::SRV6-Tunnelが出力されてるので、SRv6にてRoutingをしてくれそうです。
もう少し詳しく確認します。
//vJR-01
lab@vJR-01# run show route 221.221.221.0/24 detail | no-more
inet.0: 19 destinations, 19 routes (19 active, 0 holddown, 0 hidden)
221.221.221.0/24 (1 entry, 1 announced)
*BGP Preference: 170/-101
Next hop type: Indirect, Next hop index: 0
Address: 0x8941b14
Next-hop reference count: 2
Kernel Table Id: 0
Source: 6:6:6::6
Next hop type: Chain, Next hop index: 0
Next hop: via Chain Tunnel Composite, SRv6 (src 1:1:1::1 dest 539:0:0:6:1::)
Next hop: ELNH Address 0x893cc14, selected
SRV6-Tunnel: Reduced-SRH Encap-mode Remove-Last-Sid
Src: 1:1:1::1 Dest: 539:0:0:6:1::
Segment-list[0] 539:0:0:3:1::
Segment-list[1] 539:0:0:5:1::
Segment-list[2] 539:0:0:4:1::
Segment-list[3] 539:0:0:6:1::
Gateway opaque handle: 0xebf42a0
Next hop type: Chain, Next hop index: 0
Address: 0x893cc14
Next-hop reference count: 5, Next-hop session id: 0
Kernel Table Id: 0
Next hop: via Chain Tunnel Composite, SRv6 (src 1:1:1::1 dest 539:0:0:3:1::)
Next hop: ELNH Address 0x8941f14
SRV6-Tunnel: Reduced-SRH Encap-mode Remove-Last-Sid
Src: 1:1:1::1 Dest: 539:0:0:3:1::
Segment-list[0] 539:0:0:3:1::
<snip> Segment-list[0]~[3]が存在し、221.221.221.0/24宛へはTraffic Engineeringをするようになっています。
また、Next hopが539:0:0:3:1::となっており、First Hopへのパケット転送が(vJR-03へと)正しく行われそうです。
実際にvJR-11よりPingを飛ばします。
//vJR-11 lab@vJR-11# run ping 221.221.221.11 rapid count 10 PING 221.221.221.11 (221.221.221.11): 56 data bytes !!!!!!!!!! --- 221.221.221.11 ping statistics --- 10 packets transmitted, 10 packets received, 0% packet loss round-trip min/avg/max/stddev = 2.833/3.389/3.819/0.271 ms
はい、Pingが無事に飛びました!
では、実際に期待通りのPathとなっているか確認します。
まず、vJR-01~vJR-03間のパケットを確認します。

設定通り、宛先IPv6アドレスが539:0:0:3:1::となっています。
また、SRHが付与されていますね。
続いて、vJR-03~vJR-05間のパケットを確認します。

宛先IPv6アドレスが539:0:0:5:1::となっています。
また、Segments Leftが1減少して2となっています(なので、Address[2]のSIDが宛先IPv6アドレスにセットされています)
続いて、vJR-05~vJR-04間のパケットを確認します。

宛先IPv6アドレスが539:0:0:4:1::となっています。
また、Segments Leftが1減少して1となっています(先ほど同様に、Address[1]のSIDが宛先IPv6アドレスにセットされています)
最後に、vJR-04~vJR-06間のパケットを確認します。

SRHがPopされ、宛先IPv6アドレスが539:0:0:6:1::なIPv4 over IPv6パケットとなっています。
これはvJR-04でEnd functionのFlavor PSPが効いてるっぽいですね。
(別の機会でFlavor USPでの挙動を検証したい…)
という訳でSRv6-TEによるTraffic Pathが無事できました!!
今回は以上です。
ここまでお読みくださり、ありがとうございました!!!!
4. 参考資料
Juniper Documentation - IS-IS User Guide - Understanding SRv6 Network Programming in IS-IS Networkswww.juniper.net
Juniper Documentation - IS-IS User Guide - Example: Configuring SRv6 Network Programming in IS-IS Networkswww.juniper.net
Juniper Day One Books "DAY ONE: INTRODUCTION TO SRV6" 主にChapter 10 PDF直リンク