Inter-AS mVPN Option C Pattern-1 - 各AS間のmulticastにSSMを使用(VPNv4をRRでmulti-hop eBGP)

#まず最初に
この検証内容は、2011年に MPLS VPN についてラボで確認した時の結果をローカルのwikiサーバーに保存していました。その後、誰かの参考になったのかどうかは分からないのですが、もうwikiサーバーも動いていませんので、誰もこの内容を見ることもないと思います。でも、最近になって自分でも見直すことがありましたので、少しでも参考になればと思い、こちらにアップすることにしました。

#Topology
##Figure-1
![figure-1.jpg](https://qiita-image-store.s3.amazonaws.com/0/228223/21a92d06-23ba-a32d-e4ad-0153b86dee2a.jpeg)

##Figure-2
- 各ASでSSMを使用
- 各ルータのloopbackアドレスをAS間でBGPを使用してアドバタイズ
- ip pim ssm defaultを設定するのは、CEが繋がっているPEのみ（ASBRのPEは設定しない）

![figure-2.jpg](https://qiita-image-store.s3.amazonaws.com/0/228223/503ca0a3-6869-28fc-c347-54cbe9caf03d.jpeg)

#config

##R1
```text:config
hostname PE3A
!
ip multicast-routing 
!
mpls label range 1000 1999
mpls label protocol ldp
!
interface Loopback0
 ip address 10.1.1.3 255.255.255.255
 ip pim sparse-mode
 ip router isis 
!
interface Ethernet0/0
 ip address 192.168.143.3 255.255.255.0
 ip pim sparse-mode
 ip router isis 
 mpls ip
!
interface Ethernet1/0
 ip address 172.20.34.3 255.255.255.0
 ip pim sparse-mode
 mpls bgp forwarding
!
router isis
 net 49.0000.0000.3333.00
!
router bgp 1
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 neighbor 10.1.1.4 remote-as 1
 neighbor 10.1.1.4 update-source Loopback0
 neighbor 172.20.34.4 remote-as 2
 !
 address-family ipv4
  no synchronization
  network 10.1.1.3 mask 255.255.255.255
  neighbor 10.1.1.4 activate
  neighbor 10.1.1.4 next-hop-self
  neighbor 10.1.1.4 send-label
  neighbor 172.20.34.4 activate
  neighbor 172.20.34.4 send-label
  no auto-summary
 exit-address-family
!
```

##R2
```text:config
hostname PE3B
!
ip multicast-routing 
!
mpls label range 2000 2999
mpls label protocol ldp
!
interface Loopback0
 ip address 10.2.2.3 255.255.255.255
 ip pim sparse-mode
 ip router isis 
!
interface Ethernet0/0
 ip address 172.16.43.3 255.255.255.0
 ip pim sparse-mode
 ip router isis 
 mpls ip
!
interface Ethernet1/0
 ip address 172.20.34.4 255.255.255.0
 ip pim sparse-mode
 mpls bgp forwarding
!
router isis
 net 49.0000.0000.3333.00
!
router bgp 2
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 neighbor 10.2.2.4 remote-as 2
 neighbor 10.2.2.4 update-source Loopback0
 neighbor 172.20.34.3 remote-as 1
 !
 address-family ipv4
  no synchronization
  network 10.2.2.3 mask 255.255.255.255
  neighbor 10.2.2.4 activate
  neighbor 10.2.2.4 next-hop-self
  neighbor 10.2.2.4 send-label
  neighbor 172.20.34.3 activate
  neighbor 172.20.34.3 send-label
  no auto-summary
 exit-address-family
!
```

##R3
```text:config
hostname P1A
!
ip multicast-routing 
!
mpls label range 3000 3999
mpls label protocol ldp
!
interface Loopback0
 ip address 10.1.1.4 255.255.255.255
 ip pim sparse-mode
 ip router isis 
!
interface Ethernet0/0
 ip address 192.168.143.5 255.255.255.0
 ip pim sparse-mode
 ip router isis 
 mpls ip
!
interface Ethernet1/0
 ip address 172.19.142.5 255.255.255.0
 ip pim sparse-mode
 ip router isis 
 mpls ip
!
interface Ethernet2/0
 ip address 172.30.41.5 255.255.255.0
 ip pim sparse-mode
 ip router isis 
 mpls ip
!
router isis
 net 49.0000.0000.4444.00
!
router bgp 1
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 neighbor 10.1.1.1 remote-as 1
 neighbor 10.1.1.1 update-source Loopback0
 neighbor 10.1.1.2 remote-as 1
 neighbor 10.1.1.2 update-source Loopback0
 neighbor 10.1.1.3 remote-as 1
 neighbor 10.1.1.3 update-source Loopback0
 neighbor 10.2.2.4 remote-as 2
 neighbor 10.2.2.4 ebgp-multihop 255
 neighbor 10.2.2.4 update-source Loopback0
 !
 address-family ipv4
  no synchronization
  network 10.1.1.4 mask 255.255.255.255
  neighbor 10.1.1.1 activate
  neighbor 10.1.1.1 route-reflector-client
  neighbor 10.1.1.1 send-label
  neighbor 10.1.1.2 activate
  neighbor 10.1.1.2 route-reflector-client
  neighbor 10.1.1.2 send-label
  neighbor 10.1.1.3 activate
  neighbor 10.1.1.3 route-reflector-client
  neighbor 10.1.1.3 send-label
  no auto-summary
 exit-address-family
 !
 address-family vpnv4
  bgp redistribute-internal
  neighbor 10.1.1.1 activate
  neighbor 10.1.1.1 send-community extended
  neighbor 10.1.1.1 route-reflector-client
  neighbor 10.1.1.2 activate
  neighbor 10.1.1.2 send-community extended
  neighbor 10.1.1.2 route-reflector-client
  neighbor 10.2.2.4 activate
  neighbor 10.2.2.4 send-community extended
  neighbor 10.2.2.4 next-hop-unchanged
 exit-address-family
 !
 address-family ipv4 mdt
  neighbor 10.1.1.1 activate
  neighbor 10.1.1.1 send-community extended
  neighbor 10.1.1.1 route-reflector-client
  neighbor 10.1.1.2 activate
  neighbor 10.1.1.2 send-community extended
  neighbor 10.1.1.2 route-reflector-client
  neighbor 10.2.2.4 activate
  neighbor 10.2.2.4 send-community extended
  neighbor 10.2.2.4 next-hop-unchanged
 exit-address-family
!
```

##R4
```text:config
hostname P1B
!
ip multicast-routing 
!
mpls label range 4000 4999
mpls label protocol ldp
!
interface Loopback0
 ip address 10.2.2.4 255.255.255.255
 ip pim sparse-mode
 ip router isis 
!
interface Ethernet0/0
 ip address 172.16.43.5 255.255.255.0
 ip pim sparse-mode
 ip router isis 
 mpls ip
!
interface Ethernet1/0
 ip address 172.19.42.5 255.255.255.0
 ip pim sparse-mode
 ip router isis 
 mpls ip
!
interface Ethernet2/0
 ip address 172.30.141.5 255.255.255.0
 ip pim sparse-mode
 ip router isis 
 mpls ip
!
router isis
 net 49.0000.0000.4444.00
!
router bgp 2
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 neighbor 10.1.1.4 remote-as 1
 neighbor 10.1.1.4 ebgp-multihop 255
 neighbor 10.1.1.4 update-source Loopback0
 neighbor 10.2.2.1 remote-as 2
 neighbor 10.2.2.1 update-source Loopback0
 neighbor 10.2.2.2 remote-as 2
 neighbor 10.2.2.2 update-source Loopback0
 neighbor 10.2.2.3 remote-as 2
 neighbor 10.2.2.3 update-source Loopback0
 !
 address-family ipv4
  no synchronization
  network 10.2.2.4 mask 255.255.255.255
  neighbor 10.2.2.1 activate
  neighbor 10.2.2.1 route-reflector-client
  neighbor 10.2.2.1 send-label
  neighbor 10.2.2.2 activate
  neighbor 10.2.2.2 route-reflector-client
  neighbor 10.2.2.2 send-label
  neighbor 10.2.2.3 activate
  neighbor 10.2.2.3 route-reflector-client
  neighbor 10.2.2.3 send-label
  no auto-summary
 exit-address-family
 !
 address-family vpnv4
  bgp redistribute-internal
  neighbor 10.1.1.4 activate
  neighbor 10.1.1.4 send-community extended
  neighbor 10.1.1.4 next-hop-unchanged
  neighbor 10.2.2.1 activate
  neighbor 10.2.2.1 send-community extended
  neighbor 10.2.2.1 route-reflector-client
  neighbor 10.2.2.2 activate
  neighbor 10.2.2.2 send-community extended
  neighbor 10.2.2.2 route-reflector-client
 exit-address-family
 !
 address-family ipv4 mdt
  neighbor 10.1.1.4 activate
  neighbor 10.1.1.4 send-community extended
  neighbor 10.1.1.4 next-hop-unchanged
  neighbor 10.2.2.1 activate
  neighbor 10.2.2.1 send-community extended
  neighbor 10.2.2.1 route-reflector-client
  neighbor 10.2.2.2 activate
  neighbor 10.2.2.2 send-community extended
  neighbor 10.2.2.2 route-reflector-client
 exit-address-family
!
```

##R5
```text:config
hostname PE2A
!
ip vrf blue
 rd 55:1111
 route-target export 55:1111
 route-target import 55:1111
 mdt default 232.1.1.1
!
ip multicast-routing 
ip multicast-routing vrf blue 
!
mpls label range 5000 5999
mpls label protocol ldp
!
interface Loopback0
 ip address 10.1.1.2 255.255.255.255
 ip pim sparse-mode
 ip router isis 
!
interface Ethernet0/0
 ip address 172.19.142.2 255.255.255.0
 ip pim sparse-mode
 ip router isis 
 mpls ip
!
interface Serial1/0
 ip vrf forwarding blue
 ip address 172.17.12.2 255.255.255.0
 ip pim sparse-mode
 no fair-queue
 serial restart-delay 0
!
router isis
 net 49.0000.0000.2222.00
!
router rip
 !
 address-family ipv4 vrf blue
  redistribute bgp 1 metric 1
  network 172.17.0.0
  no auto-summary
  version 2
 exit-address-family
!
router bgp 1
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 neighbor 10.1.1.4 remote-as 1
 neighbor 10.1.1.4 update-source Loopback0
 !
 address-family ipv4
  no synchronization
  network 10.1.1.2 mask 255.255.255.255
  neighbor 10.1.1.4 activate
  neighbor 10.1.1.4 send-label
  no auto-summary
 exit-address-family
 !
 address-family vpnv4
  neighbor 10.1.1.4 activate
  neighbor 10.1.1.4 send-community extended
 exit-address-family
 !
 address-family ipv4 mdt
  neighbor 10.1.1.4 activate
  neighbor 10.1.1.4 send-community extended
 exit-address-family
 !
 address-family ipv4 vrf blue
  no synchronization
  redistribute rip metric 1
 exit-address-family
!
ip pim ssm default
ip pim vrf blue bsr-candidate Serial1/0 0
ip pim vrf blue rp-candidate Serial1/0 group-list 1
!
access-list 1 permit 239.1.1.1
!
```

##R6
```text:config
hostname PE2B
!
ip vrf blue
 rd 55:1111
 route-target export 55:1111
 route-target import 55:1111
 mdt default 232.1.1.1
!
ip multicast-routing 
ip multicast-routing vrf blue 
!
mpls label range 6000 6999
mpls label protocol ldp
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255
 ip pim sparse-mode
 ip router isis 
!
interface Ethernet0/0
 ip address 172.19.42.2 255.255.255.0
 ip pim sparse-mode
 ip router isis 
 mpls ip
!
interface Serial1/0
 ip vrf forwarding blue
 ip address 172.18.22.2 255.255.255.0
 ip pim sparse-mode
 no fair-queue
 serial restart-delay 0
!
router isis
 net 49.0000.0000.2222.00
!
router rip
 !
 address-family ipv4 vrf blue
  redistribute bgp 2 metric 1
  network 172.18.0.0
  no auto-summary
  version 2
 exit-address-family
!
router bgp 2
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 neighbor 10.2.2.4 remote-as 2
 neighbor 10.2.2.4 update-source Loopback0
 !
 address-family ipv4
  no synchronization
  network 10.2.2.2 mask 255.255.255.255
  neighbor 10.2.2.4 activate
  neighbor 10.2.2.4 send-label
  no auto-summary
 exit-address-family
 !
 address-family vpnv4
  neighbor 10.2.2.4 activate
  neighbor 10.2.2.4 send-community extended
 exit-address-family
 !
 address-family ipv4 mdt
  neighbor 10.2.2.4 activate
  neighbor 10.2.2.4 send-community extended
 exit-address-family
 !
 address-family ipv4 vrf blue
  no synchronization
  redistribute rip metric 1
 exit-address-family
!
ip pim ssm default
ip pim vrf blue bsr-candidate Serial1/0 0
ip pim vrf blue rp-candidate Serial1/0 group-list 1
!
access-list 1 permit 239.2.2.2
!
```

##R7
```text:config
hostname PE1A
!
ip vrf green
 rd 55:2222
 route-target export 55:2222
 route-target import 55:2222
 mdt default 232.2.2.2
!
ip multicast-routing 
ip multicast-routing vrf green 
!
mpls label range 7000 7999
mpls label protocol ldp
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.255
 ip pim sparse-mode
 ip router isis 
!
interface Ethernet0/0
 ip address 172.30.41.1 255.255.255.0
 ip pim sparse-mode
 ip router isis 
 mpls ip
!
interface Serial1/0
 ip vrf forwarding green
 ip address 172.25.11.1 255.255.255.0
 ip pim dense-mode
 no fair-queue
 serial restart-delay 0
!
router isis
 net 49.0000.0000.1111.00
!
router rip
 !
 address-family ipv4 vrf green
  redistribute bgp 1 metric 1
  network 172.25.0.0
  no auto-summary
  version 2
 exit-address-family
!
router bgp 1
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 neighbor 10.1.1.4 remote-as 1
 neighbor 10.1.1.4 update-source Loopback0
 !
 address-family ipv4
  no synchronization
  network 10.1.1.1 mask 255.255.255.255
  neighbor 10.1.1.4 activate
  neighbor 10.1.1.4 send-label
  no auto-summary
 exit-address-family
 !
 address-family vpnv4
  neighbor 10.1.1.4 activate
  neighbor 10.1.1.4 send-community extended
 exit-address-family
 !
 address-family ipv4 mdt
  neighbor 10.1.1.4 activate
  neighbor 10.1.1.4 send-community extended
 exit-address-family
 !
 address-family ipv4 vrf green
  no synchronization
  redistribute rip
 exit-address-family
!
ip pim ssm default
!
```

##R8
```text:config
hostname PE1B
!
ip vrf green
 rd 55:2222
 route-target export 55:2222
 route-target import 55:2222
 mdt default 232.2.2.2
!
ip multicast-routing 
ip multicast-routing vrf green 
!
mpls label range 8000 8999
mpls label protocol ldp
!
interface Loopback0
 ip address 10.2.2.1 255.255.255.255
 ip pim sparse-mode
 ip router isis 
!
interface Ethernet0/0
 ip address 172.30.141.1 255.255.255.0
 ip pim sparse-mode
 ip router isis 
 mpls ip
!
interface Serial1/0
 ip vrf forwarding green
 ip address 172.25.111.1 255.255.255.0
 ip pim dense-mode
 no fair-queue
 serial restart-delay 0
!
router isis
 net 49.0000.0000.1111.00
!
router rip
 !
 address-family ipv4 vrf green
  redistribute bgp 2 metric 1
  network 172.25.0.0
  no auto-summary
  version 2
 exit-address-family
!
router bgp 2
 no bgp default ipv4-unicast
 bgp log-neighbor-changes
 neighbor 10.2.2.4 remote-as 2
 neighbor 10.2.2.4 update-source Loopback0
 !
 address-family ipv4
  no synchronization
  network 10.2.2.1 mask 255.255.255.255
  neighbor 10.2.2.4 activate
  neighbor 10.2.2.4 send-label
  no auto-summary
 exit-address-family
 !
 address-family vpnv4
  neighbor 10.2.2.4 activate
  neighbor 10.2.2.4 send-community extended
 exit-address-family
 !
 address-family ipv4 mdt
  neighbor 10.2.2.4 activate
  neighbor 10.2.2.4 send-community extended
 exit-address-family
 !
 address-family ipv4 vrf green
  no synchronization
  redistribute rip
 exit-address-family
!
ip pim ssm default
!
```

##R9
```text:config
hostname CE2A
!
ip multicast-routing 
!
interface Serial0/0
 ip address 172.17.12.10 255.255.255.0
 ip pim sparse-mode
 ip igmp join-group 239.1.1.1
 serial restart-delay 0
!
router rip
 version 2
 network 172.17.0.0
 no auto-summary
!
```

##R10
```text:config
hostname CE2B
!
ip multicast-routing 
!
interface Serial0/0
 ip address 172.18.22.10 255.255.255.0
 ip pim sparse-mode
 ip igmp join-group 239.2.2.2
 serial restart-delay 0
!
router rip
 version 2
 network 172.18.0.0
 no auto-summary
!
```

##R11
```text:config
hostname CE1A
!
ip multicast-routing 
!
interface Serial0/0
 ip address 172.25.11.10 255.255.255.0
 ip pim dense-mode
 ip igmp join-group 239.1.1.1
 serial restart-delay 0
!
router rip
 version 2
 network 172.25.0.0
 no auto-summary
!
```

##R12
```text:config
hostname CE1B
!
ip multicast-routing 
!
interface Serial0/0
 ip address 172.25.111.10 255.255.255.0
 ip pim dense-mode
 ip igmp join-group 239.2.2.2
 serial restart-delay 0
!
router rip
 version 2
 network 172.25.0.0
 no auto-summary
!
```