MPLS ×××中部署组播的基本原理是在PE上将客户×××中的组播数据通过GRE封装起来,通过运营商MPLS BACKBONE上的组播网络转发到其他的PE。运营商和客户的组播是分离的,互不知情。
下面用一个实验来解释相关的概念和部署方法。看本实验的读者应该拥有mpls ***pim sm的相关知识,不然先去补课。
实验拓扑如下:R1R6R8CER2R5R7PER3R4P。路由器之间的连接全部使用快速以太网子接口,如r1r2间连接使用f0/0.12ip地址为12.0.0.1/2412.0.0.2/24r2r3间连接使用f0/0.23ip地址为23.0.0.2/2423.0.0.3/24。各自Loopback 0的地址为路由器号,即1.1.1.12.2.2.2等。Mpls ***已建好,共3个站点。
 
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
第一部分:实施步骤

因为运营商网络和客户***网络的组播分离,我们先在BACKBONE×××中分别部署自己的组播协议。
 

一、在运营商BACKBONE中启用组播,使用pim sparse-mode。为简化配置,使用静态Rp,地址是r4loopback 0地址4.4.4.4
r2r3r4r5r7上作如下配置:
ip multicast-routing                        (全局启用组播路由)
ip pim rp-address 4.4.4.4                    (手工指定rp
在接口上启用pim smP网内所有互连接口都要启用)
int f0/0.23                     
ip pim sparse-mode            
 
R4上查看:
show ip mroute
可以看到组播路由表已经有了,里面有一个条目(*, 224.0.1.40),这是ciscoauto-rp用来发现rp用的,不用去管它。
二、在***站点内启用组播,使用pim sparse-modeRpr1loopback 0地址1.1.1.1
r1r6r8上作如下配置:
ip multicast-routing
ip pim rp-address 1.1.1.1
int f0/0.12                              (在cepe连接的接口启用pim sm
ip pim sparse-mode
三、在PEVRF中启用组播,这一步是常规的组播中没有的。Vrf中启用组播后,就成为了mVRF
R2R5R7上配置:
ip multicast-routing vrf abc               vrf中启用组播)
ip pim vrf abc rp-address 1.1.1.1           (指定vrfrp地址,跟ce一致)
interface FastEthernet0/0.12               (连接ce的接口上启用pim sm
 encapsulation dot1Q 12
 ip vrf forwarding abc
 ip address 12.0.0.2 255.255.255.0
 ip pim sparse-mode
 

ip vrf abc
 rd 100:1
 route-target export 100:1
 route-target import 100:1
 mdt default 239.100.0.1        (指定缺省mdt使用的组地址,最好为239 网段)        
int lo 0
ip pim sparse-mode                    (在所有PEloopback0口启用pim sm
四、至此,M***应该就已经算完成了。下面我们来验证一下。
  R8作为接收者,R1作为组播源看看能不能通组播。在R8上配置:
   int lo0
   ip pim sparse-mode                        (作为接收者的接口一定要启用pim sm
ip igmp join-group 238.0.0.1                   (加入组238.0.0.1)
r1ping 238.0.0.1可通
r1#ping 238.0.0.1
 

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 238.0.0.1, timeout is 2 seconds:
 

Reply to request 0 from 78.0.0.8, 520 ms
Reply to request 0 from 78.0.0.8, 520 ms
因为R1上的f0/0.12loopback0都启用了pim sm,所以这两个ip地址都发出了icmp 包,收到2个回应。
再以R6为源试试看:
r6#ping 238.0.0.1              
 

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 238.0.0.1, timeout is 2 seconds:
 

Reply to request 0 from 78.0.0.8, 304 ms
也通了。R6上只有f0/0.56接口启用了pim sm,所以只发了1icmp包。