こんにちは。izuminです。
JANOG55ではNETCONが開催されました。
https://www.janog.gr.jp/meeting/janog55/nl-003/
今回も前回に続きスタッフとして問題を作成したので解説します!
ここでは私が作成した5問のうちLevel 3-1を解説します。
その他の4問はこちら。
![](https://izuminmin.com/wp-content/themes/cocoon-master/images/no-image-160.png)
Containerlab再現用 https://github.com/izumin-baal/nwlab
問題
![](https://izuminmin.com/wp-content/uploads/2025/01/image-11-1024x386.png)
SV-01からSV-02に通信する際に星を描きましょう。
戻りの通信経路はOSPFコストに従って最短でOKです。
達成条件
- SV-01でSV-02に対してtracerouteした際に星を描く順であること
例
[admin@SV-01 ~]$ traceroute -n 10.2.2.1
traceroute to 10.2.2.1 (10.2.2.1), 30 hops max, 60 byte packets
1 10.1.1.2 0.082 ms 0.016 ms 0.014 ms
2 10.255.1.1 1.301 ms 1.269 ms 1.271 ms
3 10.255.4.2 4.867 ms 4.882 ms 4.879 ms
4 10.255.8.2 5.871 ms 5.868 ms 5.895 ms
5 10.255.10.2 5.901 ms 6.158 ms 6.296 ms
6 10.255.12.2 6.290 ms 6.231 ms 6.346 ms
7 10.255.5.1 4.800 ms 5.638 ms 5.641 ms
8 10.255.4.2 6.442 ms 4.635 ms 4.697 ms
9 10.255.2.2 4.744 ms 4.658 ms 3.861 ms
10 10.2.2.1 3.947 ms 4.408 ms 4.409 ms
解説-概要
この問題はSR-MPLSのTraffic Engineeringを活用してIGPのメトリックに依存しないルーティングを行う問題です。
## RT-01 ##
segment-routing
traffic-eng
segment-list SIDLIST_STAR
index 10 mpls adjacency 2.2.2.2
index 20 mpls adjacency 3.3.3.3
index 30 mpls adjacency 4.4.4.4
index 40 mpls adjacency 5.5.5.5
index 50 mpls adjacency 1.1.1.1
index 60 mpls adjacency 2.2.2.2
!
policy SRTE_POLICY_STAR
color 2 end-point ipv4 2.2.2.2
candidate-paths
preference 10
explicit segment-list SIDLIST_STAR
## RT-02 ##
extcommunity-set opaque COLOR_RT-02
2
end-set
!
route-policy BGP-RT01-OUT
set extcommunity color COLOR_RT-02
pass
end-policy
!
router bgp 65000
neighbor 1.1.1.1
address-family ipv4 unicast
route-policy BGP-RT01-OUT out
解説-詳細
SR-TEの適用
この問題は今回のネタ問題の一つです。
実際のネットワークで星を描こうなんてあり得ないと思いますが、こんな自由なルーティングができるんだよ
という遊び心ある問題です。
SR-TEの設定はヘッドエンドであるRT-01に投入します。
パケットに対してMPLSのヘッダを付与するのはRT-01となります。
今回星を描くのに必要な設定はRT-01にExplicit PathとしてSegment Listを定義します。
Segment ListはNode SIDをAdjacencyとして指定することが可能なのでLoopback IPで定義します。
Explicit PathをPolicyに紐づける際にColorとEndpointを指定します。
あとはRT-02がRT-01に広報する経路に対してColorというコミュニティを付与してあげれば、
SR-TEポリシーの対象となりトラフィックが捻じ曲がるようになります。
実際の通信は下記の図のようになります。
RT-01を最初に通過する際のShimヘッダ(MPLSヘッダ)は5個のLabelがスタックされています。
(このときRT-02は隣接しているのでPOPの機能で付与されていない)
ルータを通過するたびに先頭のヘッダは取り外されていきます。
![](https://izuminmin.com/wp-content/uploads/2025/01/image-12-1024x359.png)
![](https://izuminmin.com/wp-content/uploads/2025/01/image-13-1024x278.png)
星を描き、再度RT-01に戻ってくる頃にはヘッダが1つだけになっています。
最終的に全てのラベルが取り外され、RT-02に転送されます。
![](https://izuminmin.com/wp-content/uploads/2025/01/image-14-1024x371.png)
![](https://izuminmin.com/wp-content/uploads/2025/01/image-15-1024x263.png)
帰りはPolicyが適用されていないので最短です。
SV-01にてTracerouteをした際に指定の通りのルーティングになっていれば正解となります。
Tracerouteでオプションありで実行するとラベル情報も確認できます。
[admin@SV-01 ~]$ traceroute -n -e 10.2.2.1
traceroute to 10.2.2.1 (10.2.2.1), 30 hops max, 60 byte packets
1 10.1.1.2 0.088 ms 0.039 ms 0.025 ms
2 10.255.1.1 1.629 ms 1.604 ms 1.589 ms
3 10.255.4.2 <MPLS:L=16003,E=0,S=0,T=1/L=16004,E=0,S=0,T=1/L=16005,E=0,S=0,T=1/L=16001,E=0,S=0,T=1/L=16002,E=0,S=1,T=1> 6.251 ms 6.251 ms 6.268 ms
4 10.255.8.2 <MPLS:L=16004,E=0,S=0,T=1/L=16005,E=0,S=0,T=2/L=16001,E=0,S=0,T=2/L=16002,E=0,S=1,T=2> 6.256 ms 6.243 ms 6.218 ms
5 10.255.10.2 <MPLS:L=16005,E=0,S=0,T=1/L=16001,E=0,S=0,T=3/L=16002,E=0,S=1,T=3> 6.204 ms 6.192 ms 6.208 ms
6 10.255.12.2 <MPLS:L=16001,E=0,S=0,T=1/L=16002,E=0,S=1,T=4> 6.328 ms 6.269 ms 6.214 ms
7 10.255.5.1 <MPLS:L=16002,E=0,S=1,T=1> 6.014 ms 4.832 ms 4.882 ms
8 10.255.4.2 4.915 ms 4.376 ms 4.305 ms
9 10.255.2.2 4.614 ms 4.609 ms 4.455 ms
10 10.2.2.1 4.421 ms 4.392 ms 4.356 ms
以上! SR-TEの問題でした!
普段MPLSを使う人にとっては簡単だったかもしれませんが、触らない人からしたらとても難しかったと思います。