katorea memo

いろいろ

Inter-AS Option B

今回はInter-AS Option Bに挑戦。
Option Bは、ASBR-to-ASBR ということでASBR間でvpnv4アドレス情報を交換し、end-endの通信を可能とする手段。
結論から言うとOption Bはかなり苦労した。
IOSとXRで異なる設定を行う必要があるもは至極当たり前だが苦労する。

ちなみにMPLS関係は「MPLS Configuration on Cisco IOS Software」を参考に構築している。
www.ciscopress.com

下図構成で構築する。
f:id:gemunopedy:20170508135510p:plain

Option Bのポイントは三点
・ASBR間をaddress-family vpnv4 unicastでebgp接続する
・ibgpのpeerに対してnext-hop-selfを行う
・no bgp route-target filter(ebgp peerからのVPNv4アドレス情報受信を許可する)

上記三点を意識してXRで設定してみる。
「no bgp route-target filter xr」で調べてみると「retain route-target all」というコマンドがでてくるので、
これが代替コマンドなんだろうと勝手に思い設定している。
※結果として、「retain route-target all」はなくてもend-endのpingが到達したので、代替ではないっぽい。
後で意味はちゃんと調べる。

最初は以下config ※これは間違いconfig
XR4

router bgp 65200
 bgp router-id 4.4.4.4
 !
 address-family ipv4 unicast
 !
 address-family vpnv4 unicast
 !
 neighbor 3.3.3.3
  remote-as 65200
  update-source Loopback0
  address-family vpnv4 unicast
   next-hop-self
  !
 !
 neighbor 192.168.48.8
  remote-as 65300
  address-family vpnv4 unicast
   route-policy pass in
   route-policy pass out
  !
 !
!

XR8とvpnv4でebgpしているのと、RR3に対してnext-hop-selfをしている。
同様の設定をXR8にも行うと、CSR1では、CSR9のlo0アドレス9.9.9.9を学習する。
けどping 9.9.9.9 so 1.1.1.1を行うと到達しない。

ここで嵌る。
そういえばIOSでも構築経験ないなと思いまずはIOSで設定をしてみることに。
構成は下図の通り。
f:id:gemunopedy:20170508142001p:plain

R3のconfig #抜粋

interface Loopback0
 ip address 3.3.3.3 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.34.3 255.255.255.0
 mpls bgp forwarding
!
interface Ethernet0/1
 ip address 192.168.23.3 255.255.255.0
 mpls ip
!
!
router ospf 1
 network 3.3.3.3 0.0.0.0 area 0
 network 192.168.23.0 0.0.0.255 area 0
!
router bgp 1
 bgp router-id 3.3.3.3
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 no bgp default route-target filter
 neighbor 2.2.2.2 remote-as 1
 neighbor 2.2.2.2 update-source Loopback0
 neighbor 192.168.34.4 remote-as 2
 !
 address-family ipv4
 exit-address-family
 !
 address-family vpnv4
  neighbor 2.2.2.2 activate
  neighbor 2.2.2.2 send-community extended
  neighbor 2.2.2.2 next-hop-self
  neighbor 192.168.34.4 activate
  neighbor 192.168.34.4 send-community extended
 exit-address-family
!
end

これでうまくいった。
int e0/0の「mpls bgp forwarding」は自動的に設定された。
たぶんvpnv4のpeer設定をするときに自動的に設定されている気がする。

ということでやはりXR独自の設定が必要とことでこれまたいろいろと調べた。
そして素晴らしいドキュメントを見つけた。
https://nsrc.org/workshops/2015/apricot2015/raw-attachment/wiki/Track3MPLS/9-Apriot_2015_Inter-AS.2.pdf

すごくわかりやすい。
XRで必要なことは上記のポイントに加え二点
・ルータコンフィギュレーションモードで「mpls activate」を設定
・ASBRのピア対向先をstatic routeで設定

二点目の理由がよくわからない。ちゃんと調べれば理由はわかると思うけど、
現段階では不明。とりあえずすべてにおいて一週目は概略理解に努め、二週目から詳細に挙動理由を確認していくスタンスで。

XR4 config #抜粋

hostname XR4
vrf USER1
 address-family ipv4 unicast
  import route-target
   1:1
  !
  export route-target
   1:1
  !
 !
!
interface Loopback0
 ipv4 address 4.4.4.4 255.255.255.255
!
interface GigabitEthernet0/0/0/0
 ipv4 address 192.168.48.4 255.255.255.0
!
interface GigabitEthernet0/0/0/1
 ipv4 address 192.168.24.4 255.255.255.0
!
interface GigabitEthernet0/0/0/2
 ipv4 address 10.0.34.4 255.255.255.0
!
route-policy pass
  pass
end-policy
!
router static
 address-family ipv4 unicast
  192.168.48.8/32 GigabitEthernet0/0/0/0
 !
!
router ospf 1
 area 0
  interface Loopback0
  !
  interface GigabitEthernet0/0/0/1
  !
  interface GigabitEthernet0/0/0/2
  !
 !
!
router bgp 65200
 bgp router-id 4.4.4.4
 mpls activate
  interface GigabitEthernet0/0/0/0
 !
 address-family ipv4 unicast
 !
 address-family vpnv4 unicast
 !
 neighbor 3.3.3.3
  remote-as 65200
  update-source Loopback0
  address-family vpnv4 unicast
   next-hop-self
  !
 !
 neighbor 192.168.48.8
  remote-as 65300
  address-family vpnv4 unicast
   route-policy pass in
   route-policy pass out
  !
 !
!
mpls ldp
 interface GigabitEthernet0/0/0/2
 !
!
end

これでちゃんとCSR1からCSR9までのpingが到達した。

次回もこのドキュメントを参考にOption Cに挑戦する。