🤖
BGPのMEDの挙動確認
MEDの設定
MEDは、自分のASのどのルータにパケットを送付させるかを他ASに対して指示する。
このとき、MEDが小さい方のルートを選択される。
概論
例えば以下のようなトポロジを考える。
このとき、以下のようになる。
- R3から1.1.1.0/24へのルートはR4→R1の経路になる。
- R3から1.1.100.0/24へのルートはR5→R2の経路になる。
設定
- R1→R4
- 1.1.1.0/24はMED10 (こちらが優先される)
- 1.1.100.0/24はMED20
- R2→R5
- 1.1.1.0/24はMED20
- 1.1.100.0/24はMED10 (こちらが優先される)
以下のように設定する
R1(config)#access-list 1 permit 1.1.1.0
R1(config)#access-list 2 permit 1.1.100.0
R1(config)#route-map R-MED permit 10
R1(config-route-map)#match ip address 1
R1(config-route-map)#set metric 10
R1(config)#route-map R-MED permit 20
R1(config-route-map)#match ip address 2
R1(config-route-map)#set metric 20
R1(config-route-map)#route-map R-MED permit 30
R1(config)#router bgp 10000
R1(config-router)#network 1.1.1.0 mask 255.255.255.0
R1(config-router)#network 1.1.100.0 mask 255.255.255.0
R1(config-router)#neighbor 20.0.0.254 remote-as 20000
R1(config-router)#neighbor 20.0.0.254 route-map R-MED out
R1から送られたUPDATEメッセージは以下。MEDアトリビュートが送られていることがわかる。
R2(config)#access-list 1 permit 1.1.1.0
R2(config)#access-list 2 permit 1.1.100.0
R2(config)#route-map R-MED permit 10
R2(config-route-map)#match ip address 1
R2(config-route-map)#set metric 20
R2(config)#route-map R-MED permit 20
R2(config-route-map)#match ip address 2
R2(config-route-map)#set metric 10
R2(config)#route-map R-MED permit 30
R2(config)#router bgp 10000
R2(config-router)#network 1.1.1.0 mask 255.255.255.0
R2(config-router)#network 1.1.100.0 mask 255.255.255.0
R2(config-router)#neighbor 30.0.0.254 remote-as 20000
R2(config-router)#neighbor 30.0.0.254 route-map R-MED out
R2から送られたUPDATEメッセージは以下。MEDアトリビュートが送られていることがわかる。
ルートの再配布
このとき、ルートは伝搬したがpingが通らない。
おそらく、[20,30].0.0.0/24のセグメントが広告されていないため。
R3~R5は(iBGPを使うため)フルメッシュ構成にしている。そのため、お互いへの経路は直接接続で知っている。
一方、[20,30].0.0.0/24のセグメントはR4, R5に直接接続されたルートなので、再広告しないといけない。
例えば、以下のように設定してもこれらのルートは広告されない。
R4(config-router)#network 20.0.0.254 mask 255.255.255.0
正しくは以下のように設定する。
R4(config-router)#redistribute connected
R5(config-router)#redistribute connected
結果として、BGPテーブルは以下のようになる。
R3#sh ip bgp
Network Next Hop Metric LocPrf Weight Path
*>i1.1.1.0/24 20.0.0.1 10 100 0 10000 i
*>i1.1.100.0/24 30.0.0.1 10 100 0 10000 i
*>i20.0.0.0/24 172.16.100.1 0 100 0 ?
*>i30.0.0.0/24 192.168.200.1 0 100 0 ?
r>i172.16.100.0/24 172.16.100.1 0 100 0 ?
*>i192.168.100.0 172.16.100.1 0 100 0 ?
* i 192.168.200.1 0 100 0 ?
r>i192.168.200.0 192.168.200.1 0 100 0 ?
ルーティングテーブルは以下のようになる。BGPテーブルの>
の数だけ、ルーティングテーブルに追加されている。
R3#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
1.0.0.0/24 is subnetted, 2 subnets
B 1.1.1.0 [200/10] via 20.0.0.1, 00:03:12
B 1.1.100.0 [200/10] via 30.0.0.1, 00:01:11
20.0.0.0/24 is subnetted, 1 subnets
B 20.0.0.0 [200/0] via 172.16.100.1, 09:38:14
172.16.0.0/24 is subnetted, 1 subnets
C 172.16.100.0 is directly connected, FastEthernet0/0
C 192.168.200.0/24 is directly connected, FastEthernet0/1
B 192.168.100.0/24 [200/0] via 172.16.100.1, 09:38:14
30.0.0.0/24 is subnetted, 1 subnets
B 30.0.0.0 [200/0] via 192.168.200.1, 09:38:23
以上でMEDの設定はおしまい。
MEDを設定することで、他のASに出るときのルートを選択できることがわかった。
検証
1.1.1.254に疎通できることを確認。
R3#ping 1.1.1.254
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.254, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/38/44 ms
1.1.100.1に疎通できることを確認。
R3#ping 1.1.100.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.100.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/46/68 ms
Discussion