🏡

FRR実践⑤ Segment RoutingでTEしてみる

に公開


ネットワーク構成は前回に引き続きです。
https://zenn.dev/labathome/articles/260c388e02bd45
こちらの構成でトラフィックエンジニアリングの動作確認を行います。

トラフィックエンジニアリングなしの経路

Debian-1からDibian-4にPingを実行したときのでパケットキャプチャした結果です。

Router_A~Router_D

Router_B~Router_E

Router_E~Router_F

Debian-1からDebian-4へのTraceroute
'''
debian@debian:~$ traceroute 192.168.4.1
traceroute to 192.168.4.1 (192.168.4.1), 30 hops max, 60 byte packets
1 _gateway (192.168.1.254) 2.995 ms 2.928 ms 2.915 ms
2 172.16.5.2 (172.16.5.2) 4.926 ms 4.885 ms 4.875 ms
3 172.16.6.2 (172.16.6.2) 5.759 ms 5.816 ms 6.214 ms
4 172.16.4.2 (172.16.4.2) 7.570 ms 7.561 ms 7.551 ms
5 192.168.4.1 (192.168.4.1) 9.677 ms 9.668 ms 9.698 ms
debian@debian:~$
'''

以上の結果から、Pingは行きと帰りで別経路になっていることが分かります。

SIDを指定して経路を固定してみる

SIDを指定して行きと帰りの経路を固定化してみます。

Router_A

frr:~# ip route add 192.168.4.0/24 encap mpls 16030/16060 via 172.16.1.2

192.168.4.0に行くときは172.16.1.2に抜けてSID16030と16060経由する

Router_A ip route

frr:~# ip route
10.0.0.2 nhid 26 via 172.16.1.2 dev eth1 proto ospf metric 20
10.0.0.3 nhid 26 via 172.16.1.2 dev eth1 proto ospf metric 20
10.0.0.4 nhid 24 via 172.16.5.2 dev eth6 proto ospf metric 20
10.0.0.5 nhid 30 proto ospf metric 20
nexthop via 172.16.5.2 dev eth6 weight 1
nexthop via 172.16.1.2 dev eth1 weight 1
10.0.0.6 nhid 30 proto ospf metric 20
nexthop via 172.16.5.2 dev eth6 weight 1
nexthop via 172.16.1.2 dev eth1 weight 1
172.16.1.0/30 dev eth1 proto kernel scope link src 172.16.1.1
172.16.2.0/30 nhid 26 via 172.16.1.2 dev eth1 proto ospf metric 20
172.16.3.0/30 nhid 24 via 172.16.5.2 dev eth6 proto ospf metric 20
172.16.4.0/30 nhid 30 proto ospf metric 20
nexthop via 172.16.5.2 dev eth6 weight 1
nexthop via 172.16.1.2 dev eth1 weight 1
172.16.5.0/30 dev eth6 proto kernel scope link src 172.16.5.1
172.16.6.0/30 nhid 26 via 172.16.1.2 dev eth1 proto ospf metric 20
172.16.7.0/30 nhid 26 via 172.16.1.2 dev eth1 proto ospf metric 20
192.168.1.0/24 dev eth7 proto kernel scope link src 192.168.1.254
192.168.4.0/24 encap mpls 16030/16060 via 172.16.1.2 dev eth1

Router_F

frr:~# ip route add 192.168.1.0/24 encap mpls 16020/16010 via 172.16.7.1

192.168.1.0に行くときには172.16.7.1を抜けてSID16020と16010を経由する

Router_F ip route

frr:~# ip route
10.0.0.1 nhid 29 proto ospf metric 20
nexthop via 172.16.4.1 dev eth2 weight 1
nexthop via 172.16.7.1 dev eth6 weight 1
10.0.0.2 nhid 29 proto ospf metric 20
nexthop via 172.16.4.1 dev eth2 weight 1
nexthop via 172.16.7.1 dev eth6 weight 1
10.0.0.3 nhid 30 via 172.16.7.1 dev eth6 proto ospf metric 20
10.0.0.4 nhid 24 via 172.16.4.1 dev eth2 proto ospf metric 20
10.0.0.5 nhid 24 via 172.16.4.1 dev eth2 proto ospf metric 20
172.16.1.0/30 nhid 29 proto ospf metric 20
nexthop via 172.16.4.1 dev eth2 weight 1
nexthop via 172.16.7.1 dev eth6 weight 1
172.16.2.0/30 nhid 30 via 172.16.7.1 dev eth6 proto ospf metric 20
172.16.3.0/30 nhid 24 via 172.16.4.1 dev eth2 proto ospf metric 20
172.16.4.0/30 dev eth2 proto kernel scope link src 172.16.4.2
172.16.5.0/30 nhid 24 via 172.16.4.1 dev eth2 proto ospf metric 20
172.16.6.0/30 nhid 24 via 172.16.4.1 dev eth2 proto ospf metric 20
172.16.7.0/30 dev eth6 proto kernel scope link src 172.16.7.2
192.168.1.0/24 encap mpls 16020/16010 via 172.16.7.1 dev eth6
192.168.4.0/24 dev eth7 proto kernel scope link src 192.168.4.254

経路の変化

設定後に各ポイントでパケットキャプチャを実施
Router_B~Router_C

Router_A~Router_B

以上の結果から行きと帰りが上側の経路を辿っていることが分かります。


また、データプレーン上のパケットを見るとSIDが埋め込まれていることが分かります。

これで単純なトラフィックエンジニアリングが出来たことになります。

Discussion