シナプス技術者ブログ

シナプスの技術者公式ブログ。インターネットで、鹿児島の毎日を笑顔にします。

BGPでのECMPについて

シナプスの技術部ネットワーク課の末吉です。

先日、内部ネットワーク構成の変更を行った際、iBGPにてトラフィックロードバランスを行う必要がでてきたため、BGPでECMPができるといいな。と思って確認した事を記事にしたいと思います。

ECMPとは?

ECMP(Equal Cost Multi Path)は等コストの経路が複数存在するときに、トラフィックを振り分ける機能のこと

ロード バランシングの機能のしくみ

BGPでECMPはできる?

できるようです。

BGP Best Path Selection Algorithm

BGP ECMPを試してみる

以下のパターンを確認してみます。

iBGPの場合
eBGPを同じASと複数ピアをしている場合
eBGPを異なるASと複数ピアをしている場合

検証環境

GNS3
IOS:  15.2(4)M11

iBGPの場合

元々やりたかったパターン。

ネットワーク構成

f:id:ksueyoshi:20210813155926p:plain R1はR2/R3より192.168.100.0/24の経路を受け取っています。

設定前

R1#show ip bgp
     Network          Next Hop            Metric LocPrf Weight Path
 *>i 192.168.100.0    192.168.1.2              0    100      0 i
 * i                  192.168.2.2              0    100      0 i

R1#show ip route bgp

B     192.168.100.0/24 [200/0] via 192.168.1.2, 00:00:56

192.168.100.0/24宛は「192.168.1.2」の1経路のみです

設定投入

R1(config)#router bgp 64496
R1(config-router)#maximum-paths ibgp 2

最大32まで設定できるようでした。

R1(config-router)#maximum-paths ibgp ?
  <1-32>  Number of paths

設定後

R1#show ip bgp
     Network          Next Hop            Metric LocPrf Weight Path
 *>i 192.168.100.0    192.168.1.2              0    100      0 i
 *mi                  192.168.2.2              0    100      0 i

R1#show ip route bgp

B     192.168.100.0/24 [200/0] via 192.168.2.2, 00:00:58
                       [200/0] via 192.168.1.2, 00:00:58

192.168.100.0/24宛は「192.168.1.2」、「192.168.2.2 」の2経路になりました。

eBGPを同じASと複数ピアをしている場合

ネットワーク構成

f:id:ksueyoshi:20210813160039p:plain R1はR2と二つのBGPセッションを持ち、192.168.100.0/24の経路を受け取っています。

設定前

R1#show ip bgp

     Network          Next Hop            Metric LocPrf Weight Path
 *>  192.168.100.0    192.168.1.2              0             0 64497 i
 *                    192.168.2.2              0             0 64497 i


R1#show ip route bgp

B     192.168.100.0/24 [20/0] via 192.168.1.2, 00:00:42

192.168.100.0/24宛は「192.168.1.2」の1経路のみです

設定

R1(config)#router bgp 64496
R1(config-router)#maximum-paths 2

最大で32まで設定できるようでした。

R1(config-router)#maximum-paths ?
  <1-32>  Number of paths
  ibgp    iBGP-multipath

設定後

#show ip bgp

     Network          Next Hop            Metric LocPrf Weight Path
 *>  192.168.100.0    192.168.1.2              0             0 64497 i
 *m                   192.168.2.2              0             0 64497 i


R1#show ip route bgp

B     192.168.100.0/24 [20/0] via 192.168.2.2, 00:00:08
                       [20/0] via 192.168.1.2, 00:00:08

192.168.100.0/24宛は「192.168.1.2」、「192.168.2.2 」の2経路になりました。

eBGPを異なるASと複数ピアをしている場合

ネットワーク構成

f:id:ksueyoshi:20210813160058p:plain R1はR2/R3より192.168.100.0/24の経路を受け取っています。

設定前

R1#show ip bgp

 *   192.168.100.0    192.168.2.2              0             0 64498 i
 *>                   192.168.1.2              0             0 64497 i


R1#show ip route bgp

B     192.168.100.0/24 [20/0] via 192.168.1.2, 00:00:52

192.168.100.0/24宛は「192.168.1.2」の1経路のみです

設定

R1(config)#router bgp 64496
R1(config-router)#bgp bestpath as-path multipath-relax
R1(config-router)#maximum-paths 2

隠しコマンドの「bgp bestpath as-path multipath-relax」が必要

設定後

R1#show ip bgp

     Network          Next Hop            Metric LocPrf Weight Path
 *m  192.168.100.0    192.168.2.2              0             0 64498 i
 *>                   192.168.1.2              0             0 64497 i

R1#show ip route bgp

B     192.168.100.0/24 [20/0] via 192.168.2.2, 00:16:58
                       [20/0] via 192.168.1.2, 00:16:58

192.168.100.0/24宛は「192.168.1.2」、「192.168.2.2」の2経路になりました

まとめ

  • BGPでECMPはできる
  • 構成によって設定するコマンドが異なるので注意が必要