読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。
BGP(Border Gateway Protocol)は、AS(自律システム)の間で経路の情報を交換するプロトコルです。BGP の属性の 1 つである MED(Multi Exit Discriminator)は、隣の AS から自分の AS に入ってくるトラフィック(インバウンドトラフィック)に、どの入口を使ってほしいかを伝えるために使います。この記事では、Cisco ルータで MED を設定し、ベストパスの選択がどう変わるかを確認します。
- MED の役割と、比較のルール
- MED が同じとき(既定)のベストパスを確認する
- ルートマップで MED を設定し、MED が小さい経路が選ばれることを確認する
MED とは
MED(BGP の属性名は MULTI_EXIT_DISC)は、隣の AS に対して「自分の AS へはこの入口から入ってほしい」という希望を伝えるための値です。自分の AS と隣の AS が複数の場所でつながっているときに、隣の AS が自分の AS 宛てのトラフィックをどの入口に送るかを、自分の側から示せます。
MED のポイント
- 小さいほうが優先:MED は値が小さい経路ほど優先されます。
- 隣の AS までしか伝わらない:MED を受け取った AS は、AS の中(iBGP)では MED を伝えてベストパスの選択に使います。ただし、その先の別の AS には渡しません。
- 同じ隣接 AS からの経路どうしで比べる:既定では、MED は同じ AS から受け取った経路どうしでしか比べません。
- 使う場面は限られる:すべての BGP ネットワークで使われるわけではありません。複数の場所で同じ AS とつながっていて、トラフィックの入口を調整したいときに役立ちます。
>> 参考:MED によるベストパスの選択の記事/always-compare-med の記事
検証構成
AS 23 の R2 と R3 は、同じプレフィックス 23.23.23.23/32 を持ち、AS 6 の R6 に eBGP で広告します。R6 は、R2 と R3 から受け取った経路のどちらを使うかを決めます。
あとの手順で、R2 は MED 200、R3 は MED 100 を付けて広告します。
BGP の基本設定をする
R2 と R3 に、同じアドレス 23.23.23.23/32 のループバックを作り、AS 6 の R6 に広告します。
R2
R2(config)# int loopback 23 R2(config-if)# ip add 23.23.23.23 255.255.255.255 ! R2(config)# router bgp 23 R2(config-router)# neighbor 192.168.26.6 remote-as 6 R2(config-router)# network 23.23.23.23 mask 255.255.255.255
R3
R3(config)# int loopback 23 R3(config-if)# ip add 23.23.23.23 255.255.255.255 ! R3(config)# router bgp 23 R3(config-router)# neighbor 192.168.36.6 remote-as 6 R3(config-router)# network 23.23.23.23 mask 255.255.255.255
R6
R6(config)# router bgp 6 R6(config-router)# neighbor 192.168.26.2 remote-as 23 R6(config-router)# neighbor 192.168.36.3 remote-as 23
MED が同じときのベストパスを確認する
この段階では、R2 と R3 のどちらの経路も MED(Metric の列)が 0 で同じです。R6 の BGP テーブルを確認すると、R2(ネクストホップ 192.168.26.2)の経路がベストパス(>)に選ばれています。
R6
R6# show ip bgp
BGP table version is 2, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
* 23.23.23.23/32 192.168.36.3 0 0 23 i
*> 192.168.26.2 0 0 23 i
MED が同じときは、ベストパスの選択の後ろの項目で決まります。Cisco では、eBGP で受け取った経路どうしは、先に受け取った(古い)経路が優先されます。ルータ ID の小さいほうを優先させるには、bgp bestpath compare-routerid を設定します。
>> 参考:compare-routerid の記事
MED を設定する
次に、R2 は MED 200、R3 は MED 100 を付けて R6 に広告します。MED は、ルートマップの set metric で設定し、ネイバー R6 への送信(out)に適用します。
R2
R2(config)# route-map SETMED permit 10
R2(config-route-map)# set metric 200
R2(config)# router bgp 23
R2(config-router)# neighbor 192.168.26.6 route-map SETMED out
R3
R3(config)# route-map SETMED permit 10
R3(config-route-map)# set metric 100
R3(config)# router bgp 23
R3(config-router)# neighbor 192.168.36.6 route-map SETMED out
MED を設定した後のベストパスを確認する
BGP のセッションをリセットして設定を反映させたあと、R6 で BGP テーブルをもう一度確認します。Metric の列に、R3 の経路は 100、R2 の経路は 200 と表示されています。
R6
R6# show ip bgp
BGP table version is 4, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 23.23.23.23/32 192.168.36.3 100 0 23 i
* 192.168.26.2 200 0 23 i
経路の詳細を確認すると、MED(metric)が 100 の R3 の経路に best が付いています。
R6
R6# show ip bgp 23.23.23.23
BGP routing table entry for 23.23.23.23/32, version 4
Paths: (2 available, best #1, table default)
Advertised to update-groups:
2
23
192.168.36.3 from 192.168.36.3 (3.3.3.3)
Origin IGP, metric 100, localpref 100, valid, external, best
rx pathid: 0, tx pathid: 0x0
23
192.168.26.2 from 192.168.26.2 (2.2.2.2)
Origin IGP, metric 200, localpref 100, valid, external
rx pathid: 0, tx pathid: 0
MED が 100 の R3 の経路が、ベストパスに選ばれました。R2 と R3 は同じ AS 23 なので、R6 は 2 つの経路の MED を比べ、値の小さい R3 を選んでいます。
MED は、ベストパスの選択の中で、Weight、LOCAL_PREF、AS_PATH の長さ、ORIGIN などの後に比べられます。そのため、それより前の項目で差があると、MED は効きません。MED を使うときは、ほかの属性がそろっていることを確認しておきます。
>> 参考:ベストパスの選択アルゴリズムの記事
まとめ
| 状態 | R6 が選ぶ経路 | 理由 |
|---|---|---|
| MED なし(どちらも 0) | R2(192.168.26.2) | MED が同じなので、後ろの項目で決まる |
| R2 に MED 200、R3 に MED 100 | R3(192.168.36.3) | MED が小さい経路を優先 |
MED は、同じ隣の AS と複数の場所でつながっているときに、自分の AS へのトラフィックの入口を調整するのに使えます。ただし、MED は隣の AS への「希望」なので、隣の AS で Weight や LOCAL_PREF が設定されていると、そちらが優先されます。
コメント