FRR実践⑤ Segment RoutingでTEしてみる
ネットワーク構成は前回に引き続きです。
こちらの構成でトラフィックエンジニアリングの動作確認を行います。
トラフィックエンジニアリングなしの経路
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