らくがきちょう

なんとなく

MikroTik で BGP の属性(MED / LOCAL_PREF)を検証してみる

前回Mikrotik 製品で BGP の Peering だけ、設定してみました。今回は属性(Attribute)のうち、非常にメジャーな MED(Multi-Exit Discriminator)と LP(Local Preference)を設定してみました。

所感

先に所感を記載します。的はずれな点もあるかも知れませんが、青字は良いと思った点、赤字は改善が必要と感じた点です。

  • 設定は非常に簡易だった。
  • 動作も特に問題無かった。MED や LP という、ありふれた属性しかテストしていないせいかも知れないが、Cisco との相互運用においても試した限りは問題無かった。
  • 「WebUI → Routing → BGP → Peers → 該当 Peer を選択 → OK をクリック」すると、何も設定変更していないとしても必ず、BGP Peer が Down/Up してしまう。これは致命的で、使い物にならない。CLI であれば Peer の設定を変更しても、特に Down/Up は発生しなかった。よって、実際の運用で BGP Peer の設定をするのであれば WebUI を利用してはならない。

検証環境

構成は以下の通りです。

f:id:sig9:20150705221845p:plain

検証で利用したルータは以下の通りです。

番号 メーカー 型番 OS バージョン
1 Cisco WS-C3750-24TS 12.2(46)SE
2 Mikrotik CCR1009-8G-1S-1S+ 6.29.1

初期設定のコンフィグを見ると分かりますが、Cisco では Loopback 1 〜 10 を 10.0.1.0/24 〜 10.0.10.0/24 で設定し、network コマンドで BGP で広告させています。

初期設定

1-Cisco の初期設定

hostname 1-Cisco
!
ip routing
!
interface Loopback1
 ip address 10.0.1.1 255.255.255.0
!
interface Loopback2
 ip address 10.0.2.1 255.255.255.0
!
interface Loopback3
 ip address 10.0.3.1 255.255.255.0
!
interface Loopback4
 ip address 10.0.4.1 255.255.255.0
!
interface Loopback5
 ip address 10.0.5.1 255.255.255.0
!
interface Loopback6
 ip address 10.0.6.1 255.255.255.0
!
interface Loopback7
 ip address 10.0.7.1 255.255.255.0
!
interface Loopback8
 ip address 10.0.8.1 255.255.255.0
!
interface Loopback9
 ip address 10.0.9.1 255.255.255.0
!
interface Loopback10
 ip address 10.0.10.1 255.255.255.0
!
interface FastEthernet1/0/1
 no switchport
 ip address 192.168.1.1 255.255.255.0
!
interface FastEthernet1/0/2
 no switchport
 ip address 192.168.2.1 255.255.255.0
!
router bgp 65001
 no synchronization
 no auto-summary
 !
 network 10.0.1.0 mask 255.255.255.0
 network 10.0.2.0 mask 255.255.255.0
 network 10.0.3.0 mask 255.255.255.0
 network 10.0.4.0 mask 255.255.255.0
 network 10.0.5.0 mask 255.255.255.0
 network 10.0.6.0 mask 255.255.255.0
 network 10.0.7.0 mask 255.255.255.0
 network 10.0.8.0 mask 255.255.255.0
 network 10.0.9.0 mask 255.255.255.0
 network 10.0.10.0 mask 255.255.255.0
 !
 neighbor 192.168.1.2 remote-as 65002
 neighbor 192.168.2.2 remote-as 65002

2-CCR の初期設定

/ip address add address=192.168.1.2/24 interface=ether1
/ip address add address=192.168.2.2/24 interface=ether2
/ip address add address=192.168.3.2/24 interface=ether3
/system identity set name=2-CCR
/routing bgp instance set default as=65002
/routing bgp peer add remote-address=192.168.1.1 remote-as=65001 ttl=1
/routing bgp peer add remote-address=192.168.2.1 remote-as=65001 ttl=1
/routing bgp network add network=192.168.3.0/24

経路の確認

Cisco 側で BGP テーブルを確認します。

1-Cisco# show ip bgp
BGP table version is 13, local router ID is 10.0.10.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 10.0.1.0/24      0.0.0.0                  0         32768 i
*> 10.0.2.0/24      0.0.0.0                  0         32768 i
*> 10.0.3.0/24      0.0.0.0                  0         32768 i
*> 10.0.4.0/24      0.0.0.0                  0         32768 i
*> 10.0.5.0/24      0.0.0.0                  0         32768 i
*> 10.0.6.0/24      0.0.0.0                  0         32768 i
*> 10.0.7.0/24      0.0.0.0                  0         32768 i
*> 10.0.8.0/24      0.0.0.0                  0         32768 i
*> 10.0.9.0/24      0.0.0.0                  0         32768 i
*> 10.0.10.0/24     0.0.0.0                  0         32768 i
*> 192.168.3.0      192.168.1.2                            0 65002 i
*                   192.168.2.2                            0 65002 i

192.168.3.0/24 は AS 65002(Mikrotik 側)から AS 65001(Cisco 側)に広報された経路です。この経路の詳細を見てみます。Cisco 側から見た場合、NexpHop が 192.168.1.2 になっており、構成図上の「上側のルート」を通っているのが分かります。

1-Cisco# show ip bgp 192.168.3.0/24
BGP routing table entry for 192.168.3.0/24, version 13
Paths: (2 available, best #1, table Default-IP-Routing-Table)
Flag: 0x860
  Advertised to update-groups:
     1
  65002
    192.168.1.2 from 192.168.1.2 (192.168.1.2)
      Origin IGP, localpref 100, valid, external, best
  65002
    192.168.2.2 from 192.168.2.2 (192.168.1.2)
      Origin IGP, localpref 100, valid, external

MED 属性の付与

BGP のトラフィックコントロールでは代表的な MED 属性を付与してみます。設定の順序は以下の通りです。「Cisco では RouteMap」、「Mikrotik では Filter」と用語の違いがあるものの、概ねの設定手順は両者でほぼ共通です。

番号 Cisco の場合 Mikrotik の場合
1 付与したい属性を持った RouteMap を定義する 付与したい属性を持った Filter を定義する
2 定義した RouteMap を BGP Neighbor に適用する 定義した Filter を BGP Peer に適用する

今回は Mikrotik 側で対 Cisco 向けに以下の属性を設定します。

Peer アドレス IN OUT
192.168.1.1 MED 200 MED 200
192.168.2.1 MED 100 MED 100

図示すると以下の通りです。

f:id:sig9:20150705231237p:plain

Mikrotik での具体的な設定は以下の通りです。

/routing filter add chain=MED-100 protocol=bgp set-bgp-med=100
/routing filter add chain=MED-200 protocol=bgp set-bgp-med=200
/routing bgp peer set 0 in-filter=MED-200 out-filter=MED-200
/routing bgp peer set 1 in-filter=MED-100 out-filter=MED-100

1-Cisco 側での経路確認

AS 65002(Mikrotik)側から受信している経路である 192.168.3.0/24 ですが、Best Path の NextHop が 192.168.2.2(下側の経路)になっていることが分かります。

1-Cisco# show ip bgp
BGP table version is 28, local router ID is 10.0.10.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 10.0.1.0/24      0.0.0.0                  0         32768 i
*> 10.0.2.0/24      0.0.0.0                  0         32768 i
*> 10.0.3.0/24      0.0.0.0                  0         32768 i
*> 10.0.4.0/24      0.0.0.0                  0         32768 i
*> 10.0.5.0/24      0.0.0.0                  0         32768 i
*> 10.0.6.0/24      0.0.0.0                  0         32768 i
*> 10.0.7.0/24      0.0.0.0                  0         32768 i
*> 10.0.8.0/24      0.0.0.0                  0         32768 i
*> 10.0.9.0/24      0.0.0.0                  0         32768 i
*> 10.0.10.0/24     0.0.0.0                  0         32768 i
*> 192.168.3.0      192.168.2.2            100             0 65002 i
*                   192.168.1.2            200             0 65002 i

より詳細に 192.168.3.0/24 を確認した結果は以下の通りです。

1-Cisco# show ip bgp 192.168.3.0/24
BGP routing table entry for 192.168.3.0/24, version 28
Paths: (2 available, best #1, table Default-IP-Routing-Table)
Flag: 0x10840
  Advertised to update-groups:
     1
  65002
    192.168.2.2 from 192.168.2.2 (192.168.1.2)
      Origin IGP, metric 100, localpref 100, valid, external, best
  65002
    192.168.1.2 from 192.168.1.2 (192.168.1.2)
      Origin IGP, metric 200, localpref 100, valid, external

2-CCR 側での経路確認

AS 65001(Cisco)側から受信している経路のうち、10.0.1.0/24 をピックアップして見てみます。192.168.1.1(上側)と 192.168.2.1(下側)から 10.0.1.0/24 を受信していますが、意図した通りに MED 値が付与されており、結果として 192.168.2.1(下側)の経路が「Active(A 表示)」になっていることが分かります。

[admin@2-CCR] > /ip route print detail
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
 0 ADb  dst-address=10.0.1.0/24 gateway=192.168.2.1 gateway-status=192.168.2.1 reachable via  ether2 distance=20
        scope=40 target-scope=10 bgp-as-path="65001" bgp-med=100 bgp-origin=igp received-from=peer2

 1  Db  dst-address=10.0.1.0/24 gateway=192.168.1.1 gateway-status=192.168.1.1 reachable via  ether1 distance=20
        scope=40 target-scope=10 bgp-as-path="65001" bgp-med=200 bgp-origin=igp received-from=peer1

LP 属性の付与

次は MED 同様、BGP ではメジャーな Local Preference(LOCAL_PREF、または LP)を試してみます。MED と違い、LP は IN 側にしか付与出来ません。よって、属性は以下のようにします。

Peer アドレス IN OUT
192.168.1.1 LP 200 MED 200
192.168.2.1 LP 100 MED 100

図示すると以下の通りです。

f:id:sig9:20150706001006p:plain

Mikrotik での具体的な設定は以下の通りです。

/routing filter add chain=LP-150 protocol=bgp set-bgp-local-pref=150
/routing filter add chain=LP-250 protocol=bgp set-bgp-local-pref=250
/routing bgp peer set 0 in-filter=LP-150 out-filter=MED-200
/routing bgp peer set 1 in-filter=LP-250 out-filter=MED-100

1-Cisco 側での経路確認

Mikrotik 側からの広報経路は属性を変更していない為、特に何も変わっていません。

1-Cisco# show ip bgp 192.168.3.0/24
BGP routing table entry for 192.168.3.0/24, version 14
Paths: (2 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
     1
  65002
    192.168.2.2 from 192.168.2.2 (192.168.1.2)
      Origin IGP, metric 100, localpref 100, valid, external, best
  65002
    192.168.1.2 from 192.168.1.2 (192.168.1.2)
      Origin IGP, metric 200, localpref 100, valid, external

2-CCR 側での経路確認

AS 65001(Cisco)側からの受信経路に対して MED では無く、LP を付与しましたので、受信経路を確認すると LP が付与されていることが分かります。

[admin@2-CCR] > /ip route print detail
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
 0 ADb  dst-address=10.0.1.0/24 gateway=192.168.2.1 gateway-status=192.168.2.1 reachable via  ether2 distance=20
        scope=40 target-scope=10 bgp-as-path="65001" bgp-local-pref=250 bgp-med=0 bgp-origin=igp received-from=peer2

 1  Db  dst-address=10.0.1.0/24 gateway=192.168.1.1 gateway-status=192.168.1.1 reachable via  ether1 distance=20
        scope=40 target-scope=10 bgp-as-path="65001" bgp-local-pref=150 bgp-med=0 bgp-origin=igp received-from=peer1