10-组播VPN配置
本章节下载: 10-组播VPN配置 (740.63 KB)
目 录
1 组播VPN········································································································································ 1-1
1.1 组播VPN简介························································································································ 1-1
1.1.1 MPLS L3VPN概述········································································································· 1-1
1.1.2 组播VPN概述··············································································································· 1-2
1.1.3 MD VPN概述················································································································ 1-3
1.1.4 协议规范······················································································································· 1-7
1.2 MD VPN实现原理··················································································································· 1-7
1.2.1 创建Share-MDT············································································································ 1-7
1.2.2 基于Share-MDT的传输································································································ 1-10
1.2.3 Switch-MDT切换·········································································································· 1-14
1.2.4 跨AS的MD VPN········································································································ 1-15
1.3 组播VPN配置任务简介·········································································································· 1-17
1.4 配置MD VPN························································································································ 1-17
1.4.1 配置准备····················································································································· 1-17
1.4.2 使能VPN实例中的IP组播路由····················································································· 1-17
1.4.3 配置Share-Group并绑定MTI························································································ 1-18
1.4.4 配置Switch-MDT切换参数··························································································· 1-19
1.4.5 打开Switch-Group重用日志输出开关············································································ 1-20
1.5 配置BGP MDT······················································································································ 1-20
1.5.1 配置准备····················································································································· 1-20
1.5.2 配置BGP MDT对等体/对等体组··················································································· 1-20
1.5.3 配置BGP MDT路由反射器··························································································· 1-21
1.6 组播VPN显示和维护············································································································· 1-22
1.7 组播VPN典型配置举例·········································································································· 1-23
1.7.1 单AS内MD VPN配置举例·························································································· 1-23
1.7.2 跨AS的MD VPN配置举例·························································································· 1-35
1.8 常见配置错误举例·················································································································· 1-48
1.8.1 无法建立Share-MDT···································································································· 1-48
1.8.2 VPN实例无法正确建立组播路由表················································································· 1-49
· 本文所涉及的路由器和路由器图标,代表了一般意义下的路由器或路由交换机。
· 有关MPLS L3VPN的详细介绍和相关配置,请参见“MPLS配置指导”中的“MPLS L3VPN”。
· 有关BGP的详细介绍和相关配置,请参见“三层技术-IP路由配置指导”中的“BGP”。
组播VPN是基于MPLS L3VPN网络来实现组播传输的技术。MPLS L3VPN是一种基于BGP(Border Gateway Protocol,边界网关协议)和MPLS(Multiprotocol Label Switching,多协议标签交换)扩展技术实现的VPN(Virtual Private Network,虚拟专用网),由运营商的骨干网和用户的各个Site(站点)组成,各Site之间彼此相互孤立,只有借助骨干网才能实现互通。VPN可以看作是一组策略,控制着各Site之间的连接。
图1-1 MPLS L3VPN典型应用
如图1-1所示,由Site 1、Site 3和Site 5组成VPN A网络,由Site 2、Site 4和Site 6组成VPN B网络,其中包括以下三种类型的设备:
· P(Provider):骨干网核心设备,不与CE直接相连,负责MPLS转发。
· PE(Provider Edge):骨干网边缘设备,与CE直接相连,负责VPN路由的处理,是MPLS L3VPN的主要实现者。
· CE(Customer Edge):用户网边缘设备,可以是路由器或交换机,也可以是一台主机,负责用户网络路由的发布。
在MPLS L3VPN中,属于同一VPN的两个Site之间使用两层标签来穿越公网传输报文。公网入口PE为报文打上内外两层标签:
· 外层标签:用于在骨干网内部进行交换,代表从本端PE到对端PE的一条LSP(Label Switched Path,标签交换路径)。借助这层标签,报文可以沿着LSP到达对端PE。
· 内层标签:代表通过骨干网相连的两个CE之间的一条LSP。主要标识报文属于哪个Site,PE根据内层标签将报文转发到相应的CE。
如图1-2所示,网络中同时承载着三个相互独立的组播业务:公网实例、VPN实例A和VPN实例B。公共网络边缘的PE组播设备支持多实例,相当于多台独立运行的组播设备。各实例之间形成彼此隔离的平面,每个实例对应一个平面。
举例来说,图1-1中的PE 1上运行着三个实例:公网实例、VPN实例A和VPN实例B,可以把这三个不同的实例想象成三台独立运行的虚拟设备,分别是PE 1’、PE 1”和PE 1’”,每台虚拟设备则分别对应着一个平面,对应关系如图1-2所示。
图1-2 VPN中基于多实例的组播
以VPN实例A为例,组播VPN是指:当VPN A中的组播源向某组播组发送组播数据时,在网络中所有可能的接收者中,只有属于VPN A(即Site 1、Site 3或Site 5中)的组播组成员才能收到该组播源发来的组播数据。组播数据在各Site以及公网中均以组播方式进行传输。
由此分析,实现组播VPN所需具备的网络条件如下:
在每个Site内支持基于VPN实例的组播。
在公共网络内支持基于公网实例的组播。
PE设备支持多实例组播:
· 通过VPN实例连接Site,支持基于VPN实例的组播;
· 通过公网实例连接公共网络,支持基于公网实例的组播;
· 支持公网实例与VPN实例之间的信息交流和数据转换。
有关PIM(Protocol Independent Multicast,协议无关组播)、BSR(BootStrap Router,自举路由器)、C-BSR(Candidate-BSR,候选BSR)、RP(Rendezvous Point,汇集点)、DF(Designated Forwarder,指定转发者)、C-RP(Candidate-RP,候选RP)、SPT(Shortest Path Tree,最短路径树)和RPT(Rendezvous Point Tree,共享树或汇集树)等概念的介绍,请参见“IP组播配置指导”中的“PIM”。
设备利用MD(Multicast Domain,组播域)方案来实现组播VPN,简称为MD VPN。
MD方案最大的优点是仅需要PE设备支持多实例,而无需升级CE和P设备,并且无需修改CE和P设备上原有的PIM配置。也就是说,MD方案对于CE和P是透明的。
MD VPN中所涉及到的基本概念如表1-1所示。
表1-1 MD VPN中的基本概念
概念 |
全称及中文解释 |
说明 |
MD |
Multicast Domain,组播域 |
由各PE上能交互组播报文的相同VPN实例所构成的集合称为MD,不同的VPN实例属于不同的MD |
MDT |
Multicast Distribution Tree,组播分发树 |
建立在属于同一VPN内所有PE间的组播分发树,包括Share-MDT和Switch-MDT两种 |
MT |
Multicast Tunnel,组播隧道 |
在MD内将各PE连接到一起的通道称为MT,它用来传输MD内部的私网数据 |
MTI |
Multicast Tunnel Interface,组播隧道接口 |
MTI是MT的入/出口,相当于MD的入/出口,PE通过MTI连接到MT上。MTI只收发组播报文,而不收发单播报文。MTI在VPN实例配置了Share-Group地址并绑定MTI后自动创建。 |
Share-Group |
共享组 |
每个MD在公网上分配一个独立的组播地址,称为Share-Group地址。它是MD在公网上的唯一标志,用来在公网上建立MD所对应的Share-MDT |
Share-MDT |
Share-Multicast Distribution Tree,共享组播分发树 |
以Share-Group为组地址的MDT,称为Share-MDT。VPN使用Share-Group唯一标识一棵Share-MDT。Share-MDT是在配置完成后自动生成的,在公网中将会一直存在,而不论公网或私网中有没有实际的组播业务 |
Switch-MDT |
Switch-Multicast Distribution Tree,切换组播分发树 |
以Switch-Group为组地址的MDT,称为Switch-MDT。下游存在接收者的PE加入Switch-Group,形成一棵Switch-MDT,入口PE使用Switch-MDT在公网中转发封装后的私网组播数据 |
Switch-Group |
切换组 |
当某私网组播数据的流量达到或超过阈值时,入口PE会为其分配一个独立的组播地址,称为Switch-Group地址,并通知其它PE使用该地址在公网内转发该组播数据流量,从而实现Switch-MDT切换 |
Switch-Group-Pool |
切换组地址池 |
Switch-Group-Pool定义了一个可用的组播组地址范围,当进行Switch-MDT切换时从中选取一个空闲的地址作为Switch-Group地址,从PE进入公网的私网组播报文都将使用该地址进行封装。不同VPN内的Switch-Group-Pool不能重叠,一个VPN的Switch-Group-Pool中也不能含有任何VPN的Share-Group地址 |
MD VPN实现机制的要点列举如下:
运营商构建的公共网络支持组播功能。PE同时支持公网实例和多个VPN实例,每个实例各自运行相互间独立的PIM。PE与CE之间通过VPN实例进行私网组播传输;PE与P之间则通过公网实例进行公网组播传输。
MD在逻辑上表示某一特定VPN的私网组播数据在公网中的传播范围,在实际中则标识了网络中支持该VPN实例的所有PE设备。不同的VPN实例对应不同的MD。如图1-2所示,其中每个VPN实例平面的中央椭圆区域表示一个MD,服务于某个特定的VPN,在该VPN中传输的所有私网组播数据,都在此MD内传输。
在MD内部,私网数据通过MT进行传输。MT传输过程为:本地PE将私网组播报文封装成公网组播数据报文,并在公网内进行组播转发,远端PE收到该报文后通过解封装将其还原成私网报文。
本地PE将私网数据通过MTI发出,而远端PE则从MTI接收私网数据。如图1-3所示,可以将MD比作一个私网数据的传输池,MTI则是MD的入/出口。本地PE将私网数据从入口(MTI)投入传输池,传输池自动将私网数据复制并传输到MD的所有出口(MTI),任何有需求的远端PE都可以从各自的出口(MTI)“打捞”私网数据。
图1-3 公网实例PIM与VPN实例MD对应关系示意图
一个VPN实例唯一指定一个Share-Group地址。私网数据信息对于公网来说是透明的,不论私网组播报文属于哪个组播组、是协议报文还是数据报文,PE都统一将其封装为普通的公网组播数据报文,并以Share-Group作为其所属的公网组播组。之后,PE将封装好的公网组播数据报文发送到公网中。
一个Share-Group唯一对应一个MD,并利用公网资源唯一创建一棵Share-MDT以进行数据转发。在该VPN中传输的所有私网组播报文,无论从哪个PE进入公网,都经由此Share-MDT转发。
一个Share-Group唯一确定一个Switch-Group-Pool以备进行Switch-MDT切换。在进行Switch-MDT切换时,从Switch-Group-Pool中选取一个空闲的地址(即Switch-Group地址),从PE进入公网的私网组播报文将使用该地址进行封装。
组播数据流达到切换条件时(详细内容,请参见1.2.3 Switch-MDT切换),该PE将作为源端沿Share-MDT向其下游发出切换消息,使用Switch-Group在该PE和有接收需求的远端PE之间新建一棵Switch-MDT。之后,进行Switch-MDT切换:即所有从该PE进入公网的私网组播数据流,不再使用Share-Group地址进行封装,而是被封装成公网的Switch-Group组播报文,从Share-MDT切换到新创建的Switch-MDT上。
· 一个VPN唯一确定一个MD,而一个MD也只能服务于一个VPN,这种关系就称为“一一对应”。VPN、MD、MTI、Share-Group地址与Switch-Group-Pool两两之间分别一一对应。
· 有关Switch-MDT切换的详细介绍,请参见“1.2.3 Switch-MDT切换”。
图1-4 MD VPN中的PIM邻居关系示意图
PIM邻居关系建立在直接相连且属于同一网段的两台或多台设备之间。如图1-4所示,在MD VPN中存在如下三种PIM邻居关系:
· PE-P邻居关系:指PE上公网实例接口与链路对端P上的接口之间所建立的PIM邻居关系。
· PE-PE邻居关系:指PE上的VPN实例通过MTI收到远端PE上的VPN实例发来的PIM Hello报文后所建立的邻居关系。
· PE-CE邻居关系:指PE上绑定VPN实例的接口与链路对端CE上的接口之间所建立的PIM邻居关系。
与组播VPN相关的协议规范有:
· RFC 4684:Constrained Route Distribution for Border Gateway Protocol/MultiProtocol Label Switching (BGP/MPLS) Internet Protocol (IP) Virtual Private Networks (VPNs)
· draft-rosen-vpn-mcast-08:Multicast in MPLS/BGP IP VPNs
本节介绍MD VPN技术的实现原理,包括组播分发树的构建和工作过程,以及跨AS的实现方式。
对于VPN实例来说,公网传输是透明的,私网数据的传输在PE上的MTI处完成了无缝连接:VPN实例只知道将私网数据从MTI发出,然后远端就能从MTI接收。其实中间经历了复杂的公网传输过程,即MDT传输过程。
公网中运行的组播路由协议可以是PIM-DM、PIM-SM、双向PIM或PIM-SSM中的一种。在这四种情况下,创建Share-MDT的过程是有区别的。
图1-5 在PIM-DM网络中创建Share-MDT
如图1-5所示,公网中运行PIM-DM,且PE 1、PE 2和PE 3都支持VPN实例A。Share-MDT的创建过程如下:PE 1的公网实例以BGP接口地址(即建立BGP对等体时所使用的接口地址)为组播源地址、Share-Group地址为组播组地址、其它支持VPN实例A的PE为组播组成员,在整个公网范围内发起扩散—剪枝过程,在公网沿途的各设备上分别创建(11.1.1.1,239.1.1.1)表项,从而形成一棵以PE 1为根、PE 2和PE 3为叶的SPT。
同时,PE 2和PE 3也各自发起类似的扩散—剪枝过程,最终在MD中形成三棵相互独立的SPT。在PIM-DM网络中,由这三棵相互独立的SPT共同组成了一棵Share-MDT。
图1-6 在PIM-SM网络中创建Share-MDT
如图1-6所示,公网中运行PIM-SM,且PE 1、PE 2和PE 3都支持VPN实例A。Share-MDT的创建过程如下:
PE 1的公网实例向公网RP发起加入(Join),以Share-Group地址为组播组地址,在公网沿途的各设备上分别创建(*,239.1.1.1)表项。同时,PE 2和PE 3也各自发起类似的加入过程,最终在MD中形成一棵以公网RP为根,PE 1、PE 2和PE 3为叶的RPT。
先由PE 1的公网实例向公网RP发起注册(Register),再由公网RP向PE 1发起加入,并以BGP接口地址为组播源地址、Share-Group地址为组播组地址,在公网沿途的各设备上分别创建(11.1.1.1,239.1.1.1)表项。同时,PE 2和PE 3也各自发起类似的注册过程,最终在MD中形成三棵相互独立的、连接PE与RP的SPT。
在PIM-SM网络中,由RPT(*,239.1.1.1)和这三棵相互独立的SPT共同组成了一棵Share-MDT。
图1-7 在双向PIM网络中创建Share-MDT
如图1-7所示,公网中运行双向PIM,且PE 1、PE 2和PE 3都支持VPN实例A。Share-MDT的创建过程如下:
PE 1的公网实例向公网RP发起加入,以Share-Group地址为组播组地址,在公网沿途的各设备上分别创建(*,239.1.1.1)表项。同时,PE 2和PE 3也各自发起类似的加入过程,最终在MD中形成一棵以公网RP为根,PE 1、PE 2和PE 3为叶的接收者侧RPT。
PE 1的公网实例以Share-Group地址为组播组地址发送组播数据,在公网途径的每个网段都被该网段的DF无条件向RP转发,并在沿途各设备上分别创建(*,239.1.1.1)表项。同时,PE 2和PE 3也各自发起类似的创建过程,最终在MD中形成一棵以PE 1、PE 2和PE 3为根、公网RP为叶的组播源侧RPT。
在双向PIM网络中,由接收者侧RPT和组播源侧RPT共同构成的双向RPT(*,239.1.1.1)就成为了一棵Share-MDT。
图1-8 在PIM-SSM网络中创建Share-MDT
如图1-8所示,公网中运行PIM-SSM,且PE 1、PE 2和PE 3都支持VPN实例A。Share-MDT的创建过程如下:PE 1的公网实例分别向PE 2和PE 3的公网实例通知其本地的BGP MDT信息(包含BGP接口地址和Share-Group地址等信息),并互换BGP MDT路由信息;PE 2和PE 3收到来自PE 1的BGP MDT信息后,分别向PE 1的BGP接口地址逐跳发送订阅报文(Subscribe Message),在公网沿途的各设备上分别创建(11.1.1.1,232.1.1.1)表项,从而形成一棵以PE 1为根、PE 2和PE 3为叶的SPT。
同时,分别以PE 2和PE 3为根的SPT形成过程与此类似,最终在MD中形成三棵相互独立的SPT。在PIM-SSM网络中,由这三棵相互独立的SPT共同组成了一棵Share-MDT。
在PIM-SSM中,借助“订阅报文”的概念表示加入报文。
综前,无论公网中运行的是PIM-DM、PIM-SM、双向PIM还是PIM-SSM,Share-MDT都具有以下特点:
· 网络中所有支持VPN实例A的PE都加入该Share-MDT。
· 所有属于VPN A的私网组播报文(包括协议报文和数据报文)在进入公网后,均沿该Share-MDT向各PE转发,无论PE所连接的Site中是否存在接收者。
Share-MDT构建完成后,就可以进行组播报文的传输。其中,组播协议报文和组播数据报文的传输过程是不同的,下面分别进行介绍。
当私网组播协议报文需要跨越公网进行传输时,这些报文在本地PE上被封装为普通的公网组播数据并沿Share-MDT进行传输,在远端PE上被解封装,从而继续进行正常的协议交互过程,最终建立一棵跨越公网的组播分发树。组播协议报文的作用可分为以下几种情况:
当VPN网络中运行PIM-DM或PIM-SSM时:
· 各MTI之间通过交互Hello报文,建立PIM邻居。
· 通过跨越公网发起扩散—剪枝(PIM-DM)或加入(PIM-SSM)以创建SPT。
当VPN网络中运行PIM-SM时:
· 各MTI之间通过交互Hello报文,建立PIM邻居。
· 如果接收者与私网RP属于不同的Site,通过跨越公网发起加入以创建RPT。
· 如果组播源与私网RP属于不同的Site,通过跨越公网发起注册以创建SPT。
当VPN网络中运行双向PIM时:
· 各MTI之间通过交互Hello报文,建立PIM邻居。
· 如果接收者与私网RP属于不同的Site,通过跨越公网发起加入以创建接收者侧RPT。
· 如果组播源与私网RP属于不同的Site,通过跨越公网发送组播数据以创建组播源侧RPT。
l 在属于同一VPN的所有接口(包括PE上绑定VPN实例的接口和MTI)上必须运行相同模式的PIM协议。
l 下面以公网和VPN网络中均运行PIM-SM、私网接收者跨越公网发起加入为例,介绍基于Share-MDT的组播协议报文的传输过程。
如图1-9所示,公网和VPN网络中分别运行PIM-SM,属于Site 2的私网组播组G(225.1.1.1)的接收者(Receiver)与CE 2相连;属于Site 1的CE 1作为G的RP;用于公网组播数据转发的Share-Group地址为239.1.1.1。
组播协议报文的交互过程如下:
表1-1 Receiver向CE 2发送IGMP报告以加入组播组G。CE 2在本地创建(*,225.1.1.1)表项,同时向私网RP(CE 1)发起加入。
PE 2上的VPN实例收到CE 2发来的加入消息(Join Message)后,在本地创建(*,225.1.1.1)表项,并指定上游接口为MTI,然后PE 2将对该加入消息做进一步处理(详见第(3)步)。这时,PE 2上的VPN实例将认为加入消息已从MTI发出。
PE 2对加入消息以GRE(Generic Routing Encapsulation,通用路由封装)方式进行封装,以PE 2的BGP接口地址为组播源地址、Share-Group地址为组播组地址,转换成普通的公网组播数据报文(11.1.2.1,239.1.1.1),然后交由PE 2上的公网实例向公网进行转发。
组播数据报文(11.1.2.1,239.1.1.1)沿Share-MDT传输给各PE上的公网实例。各PE对其进行解封装,还原为发往私网RP的加入消息。然后,各PE分别检查该加入消息,如果发现私网RP在与其直连的Site中,则交由其上的VPN实例处理,否则丢弃该加入消息。
PE 1上的VPN实例收到加入消息后,认为是从MTI获得的。在本地创建(*,225.1.1.1)表项,并指定下游接口为MTI、上游接口为朝向CE 1的接口。同时向私网RP发送加入消息。
CE 1收到PE 1上的VPN实例发来的加入消息后,在本地更新或创建(*,225.1.1.1)表项。至此跨越公网的RPT创建完成。
有关GRE的详细介绍,请参见“三层技术-IP业务配置指导”中的“GRE”。
当组播分发树创建完成后,组播源通过组播分发树将私网组播数据发送给各Site中的接收者。私网组播数据在本地PE上被封装为普通的公网组播数据并沿Share-MDT进行传输,在远端PE上被解封装,从而继续在私网内进行组播数据的传输。私网组播数据跨越公网的传输可分为以下几种情况:
当VPN网络中运行PIM-DM或PIM-SSM时,组播源通过私网SPT跨越公网向接收者发送私网组播数据。
当VPN网络中运行PIM-SM时:
· 在SPT切换前,如果组播源与私网RP属于不同的Site,组播源先通过其与私网RP间的私网SPT跨越公网向私网RP发送私网组播数据;如果私网RP与接收者也属于不同的Site,私网RP再通过私网RPT跨越公网向接收者继续转发私网组播数据。
· 在SPT切换后,如果组播源与接收者属于不同的Site,组播源通过私网SPT跨越公网向接收者直接发送私网组播数据。
· 当VPN网络中运行双向PIM时,如果组播源与私网RP属于不同的Site,组播源先通过其与私网RP间的私网组播源侧RPT跨越公网向私网RP发送私网组播数据;如果私网RP与接收者也属于不同的Site,私网RP再通过私网接收者侧RPT跨越公网向接收者继续转发私网组播数据。
l 有关SPT切换的详细介绍,请参见“IP组播配置指导”中的“PIM”。
l 下面以公网和VPN网络中均运行PIM-DM、沿私网SPT跨越公网传输私网组播数据为例,介绍基于Share-MDT的组播数据报文的传输过程。
如图1-10所示,公网和VPN网络中分别运行PIM-DM,属于Site 2的私网组播组G(225.1.1.1)的接收者(Receiver)与CE 2相连;属于Site 1的组播源(Source)向G发送组播数据;用于公网组播数据转发的Share-Group地址为239.1.1.1。
私网组播数据跨越公网进行传输的过程如下:
表1-1 Source发送私网组播数据(192.1.1.1,225.1.1.1)到CE 1。
CE 1沿SPT将私网组播数据转发给PE 1,PE 1上的VPN实例查找转发表项。如果对应转发表项的出接口列表中包含MTI,则PE 1将对该私网组播数据做进一步处理(详见第(3)步)。这时,PE 1上的VPN实例将认为私网组播数据已从MTI发出。
PE 1对该私网组播数据以GRE方式进行封装,以PE 1的BGP接口地址为组播源地址、Share-Group地址为组播组地址,转换成普通的公网组播数据报文(11.1.1.1,239.1.1.1),然后交由PE 1上的公网实例向公网进行转发。
组播数据报文(11.1.1.1,239.1.1.1)沿Share-MDT传输给各PE上的公网实例。各PE对其进行解封装,还原为私网组播数据,然后交由相应的VPN实例处理。如果该PE上存在SPT的下游接口,则沿SPT转发该私网组播数据,否则将其丢弃。
PE 2上的VPN实例查找转发表项,最终将私网组播数据送达Receiver。至此跨越公网的私网组播数据传输完成。
在公网中通过Share-MDT传送组播数据时,组播报文被传输到支持同一VPN实例的所有PE上,无论该PE所连接的Site内是否存在接收者。当私网中组播数据的传输速率比较大时,可能在公网中造成数据的泛滥。这样即浪费网络带宽,又增加了PE的处理负担。
为了解决上述问题,MD方案对此进行了优化:为进入公网的大流量私网组播数据,在连接有私网接收者和私网组播源的各PE之间,建立起专用的Switch-MDT。然后将该组播数据流从Share-MDT切换到Switch-MDT,从而实现按需进行组播。
从Share-MDT向Switch-MDT切换的过程如下:
源端PE(如PE 1)周期性地检测私网组播数据的转发速率。发起从Share-MDT向Switch-MDT的切换必须同时满足以下两点要求:
· 私网组播数据通过了由Share-MDT向Switch-MDT切换的ACL规则的过滤,否则仍沿Share-MDT转发;
· 私网组播数据的转发速率超过了切换阈值,且维持了一定的时间,否则仍沿Share-MDT转发。
PE 1从Switch-Group-Pool中分配一个空闲的Switch-Group地址,沿Share-MDT向所有下游PE发送切换消息。该消息中包括私网组播源地址、私网组播组地址和Switch-Group地址。
其它PE收到该消息后,检查自己是否连接有该私网组播数据的接收者:如果有,则加入以PE 1为根的Switch-MDT;如果没有,则将该消息缓存起来,等待有接收者时再加入Switch-MDT。
当PE 1发送切换消息一定时间后,PE 1停止使用Share-Group地址对私网组播数据进行封装,并改用Switch-Group地址进行封装,组播数据沿Switch-MDT向下分发。
当Share-MDT切换到Switch-MDT之后,PE 1会周期性地发送切换消息,以便后续有PE加入Switch-MDT。当某下游PE不再连接有接收者时,可以退出Switch-MDT。
Switch-MDT和Share-MDT都是同一个MD中的转发隧道。Share-MDT由Share-Group地址唯一确定;Switch-MDT则由Switch-Group地址唯一确定。每个Share-Group地址关联一组Switch-Group地址(即Switch-Group-Pool)。
当私网组播数据切换到Switch-MDT之后,由于情况变化而导致了不满足切换条件,PE 1就会把此私网组播数据从Switch-MDT反向切换回Share-MDT,反向切换的触发条件包括(满足其一即可):
· 当更改了Switch-Group-Pool后,用于私网组播数据封装的Switch-Group地址被排除在新地址池之外。
· 当控制私网组播数据由Share-MDT向Switch-MDT切换的ACL规则发生了变化,从而导致私网组播数据不能通过新ACL规则的过滤。
当整个VPN跨越多个AS(Autonomous System,自治系统)时,需要连通分布在不同AS内的各VPN节点。跨AS的MD VPN有以下两种实现方式:
如图1-11所示,VPN跨越了AS 1和AS 2两个自治系统,PE 3和PE 4分别是AS 1和AS 2的ASBR。PE 3和PE 4通过各自的VPN实例相连,并互把对方视为CE设备。
图1-11 VPN实例-VPN实例连接方式示意图
采用VPN实例-VPN实例方式时,需在每个AS内各建立一个独立的MD,在各MD之间实现私网组播数据跨AS的传输。
由于ASBR之间转发的只是私网组播数据,因此各AS内部运行的公网PIM模式可以不同,但属于同一VPN的所有接口(包括ASBR上绑定VPN实例的接口)上必须运行统一的PIM模式(PIM-DM、PIM-SM、双向PIM或PIM-SSM)。
如图1-12所示,VPN跨越了AS 1和AS 2两个自治系统,PE 3和PE 4分别是AS 1和AS 2的ASBR。PE 3和PE 4通过各自的公网实例相连,并互把对方视为P设备。
采用Multi-hop EBGP方式时,只需在所有AS内统一建立一个MD即可,在该MD内部实现公网组播数据跨AS的传输。
系统工作在标准模式下时,如果需要配置组播VPN,则必须配置保留VLAN,否则系统会出现异常。保留VLAN配置完成后,请不要修改,否则需要重新配置,关于保留VLAN的详细配置和命令,请参见“MPLS配置指导”和“MPLS命令参考”中的“MPLS L3VPN”。关于系统工作模式的介绍请参见“基础配置指导”中的“设备管理”。
表1-2 组播VPN配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置MD VPN |
使能VPN实例中的IP组播路由 |
必选 |
|
配置Share-Group并绑定MTI |
必选 |
||
配置Switch-MDT切换参数 |
可选 |
||
打开Switch-Group重用日志输出开关 |
可选 |
||
配置BGP MDT |
配置BGP MDT对等体/对等体组 |
必选 |
|
配置BGP MDT路由反射器 |
可选 |
在配置MD VPN之前,需完成以下任务:
· 配置任一单播路由协议,实现域内网络层互通
· 配置MPLS L3VPN
· 配置PIM-DM、PIM-SM、双向PIM或PIM-SSM
在配置MD VPN之前,需准备以下数据:
· VPN实例的名称和RD(Route Distinguisher,路由标识符)
· Share-Group地址和MTI接口编号
· Switch-Group-Pool的范围和切换条件ACL
· 由Share-MDT向Switch-MDT切换的延迟时间
· 由Switch-MDT向Share-MDT反向切换的延迟时间
在配置MD VPN的各项功能之前,必须先使能VPN实例中的IP组播路由。
表1-3 使能VPN实例中的IP组播路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建VPN实例,并进入VPN实例视图 |
ip vpn-instance vpn-instance-name |
- |
配置VPN实例的RD |
route-distinguisher route-distinguisher |
必选 缺省情况下,VPN实例没有RD |
使能IP组播路由 |
multicast routing-enable |
必选 缺省情况下,IP组播路由处于关闭状态 |
· 有关ip vpn-instance和route-distinguisher命令的详细介绍,请参见“MPLS命令参考”中的“MPLS L3VPN”。
· 有关multicast routing-enable命令的详细介绍,请参见“IP组播命令参考”中的“组播路由与转发”。
通过在PE上启动多实例,可以为多个VPN服务。不同PE上相同的VPN实例需要配置相同的Share-Group地址。配置Share-Group并绑定MTI时,系统会自动创建MTI、将Share-Group绑定到MTI,并将MTI绑定到本VPN实例。
表1-4 配置Share-Group并绑定MTI
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VPN实例视图 |
ip vpn-instance vpn-instance-name |
- |
指定Share-Group并为本VPN实例绑定MTI |
multicast-domain share-group group-address binding mtunnel mtunnel-number |
必选 缺省情况下,没有指定Share-Group,也没有为本VPN实例绑定MTI |
· 当使用命令peer connect-interface配置了BGP对等体之后,MTI接口将自动获取connect-interface的地址为其IP地址,且该地址不能在VPN中再被使用,否则MTI接口将无法获取IP地址;在一台设备上配置多个BGP对等体时应指定相同的connect-interface,否则MTI接口也无法获取IP地址。有关peer connect-interface命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。
· MTI接口只有在获取到IP地址后才会被激活。
· 只有当VPN实例内至少一个接口上使能了PIM协议,MTI接口上的PIM协议才能被使能;当VPN实例内的所有接口上都关闭了PIM协议后,MTI接口上的PIM协议也将被同时关闭。
为了避免组播数据流在Share-MDT与Switch-MDT之间进行频繁切换:
当收到第一个私网组播数据报文时,并不立即切换,而是等待Switch-Delay时间(即由Share-MDT向Switch-MDT切换的延迟时间)。在这段时间内如果一直有私网组播数据报文通过,则切换至Switch-MDT,否则继续使用Share-MDT进行转发。
表1-5 配置Switch-MDT切换参数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VPN实例视图 |
ip vpn-instance vpn-instance-name |
- |
配置Switch-Group-Pool的范围和切换条件 |
multicast-domain switch-group-pool switch-group-pool { mask | mask-length } [ acl acl-number ] |
必选 缺省情况下,没有指定Switch-Group-Pool,也永不向Switch-MDT切换 |
配置由Share-MDT向Switch-MDT切换的延迟时间 |
multicast-domain switch-delay switch-delay |
可选 缺省情况下,由Share-MDT向Switch-MDT切换的延迟时间为5秒 |
配置由Switch-MDT向Share-MDT反向切换的延迟时间 |
multicast-domain holddown-time interval |
可选 缺省情况下,由Switch-MDT向Share-MDT反向切换的延迟时间为60秒 |
在源PE上的VPN实例中,如果需要切换的私网组播数据流的个数超过了Switch-Group-Pool中组地址的个数时,可以重复使用该地址池中的组地址。通过打开Switch-Group重用日志输出开关可以记录组地址重用的日志信息。
表1-6 打开Switch-Group重用日志输出开关
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VPN实例视图 |
ip vpn-instance vpn-instance-name |
- |
打开Switch-Group重用日志输出开关 |
multicast-domain log switch-group-reuse |
必选 缺省情况下,Switch-Group重用日志输出开关处于关闭状态 |
· 组地址重用日志信息的级别为informational,隶属于MD模块。有关日志信息的详细介绍,请参见“网络管理和监控配置指导”中的“信息中心”。
· 打开Switch-Group重用日志输出开关后,会生成组地址重用日志信息并发往信息中心,该日志信息的输出规则可在信息中心中进行配置。有关信息中心的具体配置,请参见“网络管理和监控配置指导”中的“信息中心”。
当在公网中运行PIM-SSM时,需要进行BGP MDT的配置。
在配置BGP MDT之前,需完成以下任务:
· 配置MPLS L3VPN
· 配置BGP基本功能
在配置BGP MDT之前,需准备以下数据:
· 路由反射器的集群ID
通过配置BGP MDT对等体/对等体组,使各PE间可通过交换BGP MDT路由信息以获取远端PE的地址来建立Share-MDT。
· BGP MDT对等体/对等体组是指在BGP-MDT子地址族视图下创建的对等体/对等体组。
· 在激活BGP MDT对等体/对等体组前,需先配置好相关的BGP对等体/对等体组。
表1-7 配置BGP MDT对等体/对等体组
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
进入BGP-MDT子地址族视图 |
ipv4-family mdt |
- |
激活BGP MDT对等体/对等体组 |
peer { group-name | ip-address } enable |
必选 缺省情况下,BGP MDT对等体/对等体组处于未激活状态 |
向BGP MDT对等体组中添加BGP MDT对等体 |
peer ip-address group group-name |
可选 缺省情况下,BGP MDT对等体不属于任何BGP MDT对等体组 |
为保证位于同一AS内的BGP MDT对等体间的连通性,需在对等体之间建立全连接关系,而当对等体的数目很多时,建立全连接的开销很大,使用路由反射器则可以解决这个问题。
在配置了路由反射器之后,由其它路由器作为客户机与路由反射器之间建立BGP MDT连接,路由反射器在客户机之间传递(反射)BGP MDT路由信息,从而使各客户机之间无需建立全连接。但如果客户机之间已经是全连接的,则可以通过禁止客户机间的路由反射以减少开销。
路由反射器及其客户机共同组成了一个集群。通常,一个集群中只有一个路由反射器,并通过其Router ID来识别该集群。为了增强网络的可靠性,可在一个集群中配置多个路由反射器,此时应为每个路由反射器配置相同的集群ID,以避免产生路由环路。
表1-8 配置BGP MDT路由反射器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
进入BGP-MDT子地址族视图 |
ipv4-family mdt |
- |
配置本设备作为路由反射器,并指定其路由反射客户 |
peer { group-name | ip-address } reflect-client |
必选 缺省情况下,没有配置路由反射器及其客户 |
禁止客户到客户的路由反射 |
undo reflect between-clients |
可选 缺省情况下,允许客户到客户的路由反射 |
配置路由反射器的集群ID |
reflector cluster-id { cluster-id | ip-address } |
可选 缺省情况下,路由反射器的Router ID就是其集群ID |
在完成上述配置后,在任意视图下执行display命令可以显示配置后组播VPN的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以复位BGP MDT的连接。
表1-9 组播VPN显示和维护
操作 |
命令 |
查看MD中指定VPN实例的Share-Group组信息 |
display multicast-domain vpn-instance vpn-instance-name share-group { local | remote } [ | { begin | exclude | include } regular-expression ] |
查看MD中指定VPN实例收到的Switch-Group信息 |
display multicast-domain vpn-instance vpn-instance-name switch-group receive [ brief | [ active | group group-address | sender source-address | vpn-source-address [ mask { mask-length | mask } ] | vpn-group-address [ mask { mask-length | mask } ] ] * ] [ | { begin | exclude | include } regular-expression ] |
查看MD中指定VPN实例发送的Switch-Group信息 |
display multicast-domain vpn-instance vpn-instance-name switch-group send [ group group-address | reuse interval | vpn-source-address [ mask { mask-length | mask } ] | vpn-group-address [ mask { mask-length | mask } ] ] * [ | { begin | exclude | include } regular-expression ] |
查看BGP MDT对等体组的信息 |
display bgp mdt group [ group-name ] [ | { begin | exclude | include } regular-expression ] |
查看BGP MDT对等体的信息 |
display bgp mdt peer [ [ ip-address ] verbose ] [ | { begin | exclude | include } regular-expression ] |
查看BGP MDT路由信息 |
display bgp mdt { all | route-distinguisher route-distinguisher } routing-table [ ip-address [ mask | mask-length ] ] [ | { begin | exclude | include } regular-expression ] |
复位BGP MDT连接 |
reset bgp mdt { as-number | ip-address | all | external | group group-name | internal } |
缺省情况下,以太网接口、VLAN接口及聚合接口处于DOWN状态。如果要对这些接口进行配置,请先使用undo shutdown命令使接口状态处于UP状态。
组网需求如表1-10所示。
表1-10 单AS内的MD VPN配置组网需求
项目 |
组网需求 |
组播源和接收者 |
· VPN a中的组播源为S 1,接收者为R 1、R 2和R 3 · VPN b中的组播源为S 2,接收者为R 4 · VPN a中的Share-Group地址为239.1.1.1,Switch-Group-Pool范围为225.2.2.0~225.2.2.15 · VPN b中的Share-Group地址为239.2.2.2,Switch-Group-Pool范围为225.4.4.0~225.4.4.15 |
PE上各接口所属的VPN实例 |
· PE 1:Vlan-interface11和Vlan-interface20属于VPN实例a,Vlan-interface12和Loopback1属于公网实例 · PE 2:Vlan-interface13属于VPN实例b,Vlan-interface14属于VPN实例a,Vlan-interface15和Loopback1属于公网实例 · PE 3:Vlan-interface17属于VPN实例a,Vlan-interface18和Loopback2属于VPN实例b,Vlan-interface19和Loopback1接口属于公网实例 |
单播路由协议和MPLS |
· 在公网中配置OSPF,在各PE与CE之间配置RIP · 在PE 1、PE 2和PE 3各自的Loopback1接口之间建立BGP对等体连接并传递所有私网路由 · 在公网中配置MPLS |
IP组播路由功能 |
· 在P上使能IP组播路由 · 在PE 1、PE 2和PE 3的公网实例中均使能IP组播路由 · 在PE 1、PE 2和PE 3的VPN实例a中均使能IP组播路由 · 在PE 2和PE 3的VPN实例b中均使能IP组播路由 · 在CE a1、CE a2、CE a3、CE b1和CE b2上均使能IP组播路由 |
IGMP功能 |
· 在PE 1的Vlan-interface20接口上使能IGMPv2 · 在CE a2的Vlan-interface40、CE a3的Vlan-interface50和CE b2的Vlan-interface60接口上分别使能IGMPv2 |
PIM功能 |
· 在P的所有接口上均使能PIM-SM · 在PE 1、PE 2和PE 3的所有公网和私网接口上均使能PIM-SM · 在CE a1、CE a2、CE a3、CE b1和CE b2的所有接口上均使能PIM-SM · P的Loopback1接口为公网的C-BSR和C-RP(服务于所有组播组) · CE a2的Loopback1接口为VPN a的C-BSR和C-RP(服务于所有组播组) · PE 3的Loopback2接口为VPN b的C-BSR和C-RP(服务于所有组播组) |
图1-13 单AS内MD VPN配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
S 1 |
- |
10.110.7.2/24 |
PE 3 |
Vlan-int19 |
192.168.8.1/24 |
S 2 |
- |
10.110.8.2/24 |
|
Vlan-int17 |
10.110.5.1/24 |
R 1 |
- |
10.110.1.2/24 |
|
Vlan-int18 |
10.110.6.1/24 |
R 2 |
- |
10.110.9.2/24 |
|
Loop1 |
1.1.1.3/32 |
R 3 |
- |
10.110.10.2/24 |
|
Loop2 |
33.33.33.33/32 |
R 4 |
- |
10.110.11.2/24 |
CE a1 |
Vlan-int10 |
10.110.7.1/24 |
P |
Vlan-int12 |
192.168.6.2/24 |
|
Vlan-int11 |
10.110.2.2/24 |
|
Vlan-int15 |
192.168.7.2/24 |
CE a2 |
Vlan-int40 |
10.110.9.1/24 |
|
Vlan-int19 |
192.168.8.2/24 |
|
Vlan-int14 |
10.110.4.2/24 |
|
Loop1 |
2.2.2.2/32 |
|
Vlan-int16 |
10.110.12.1/24 |
PE 1 |
Vlan-int12 |
192.168.6.1/24 |
|
Loop1 |
22.22.22.22/32 |
|
Vlan-int20 |
10.110.1.1/24 |
CE a3 |
Vlan-int50 |
10.110.10.1/24 |
|
Vlan-int11 |
10.110.2.1/24 |
|
Vlan-int17 |
10.110.5.2/24 |
|
Loop1 |
1.1.1.1/32 |
|
Vlan-int16 |
10.110.12.2/24 |
PE 2 |
Vlan-int15 |
192.168.7.1/24 |
CE b1 |
Vlan-int30 |
10.110.8.1/24 |
|
Vlan-int13 |
10.110.3.1/24 |
|
Vlan-int13 |
10.110.3.2/24 |
|
Vlan-int14 |
10.110.4.1/24 |
CE b2 |
Vlan-int60 |
10.110.11.1/24 |
|
Loop1 |
1.1.1.2/32 |
|
Vlan-int18 |
10.110.6.2/24 |
配置PE 1
# 配置Router ID,使能公网实例的IP组播路由,配置MPLS LSR ID,并使能LDP能力。
<PE1> system-view
[PE1] router id 1.1.1.1
[PE1] multicast routing-enable
[PE1] mpls lsr-id 1.1.1.1
[PE1] mpls
[PE1-mpls] quit
[PE1] mpls ldp
[PE1-mpls-ldp] quit
# 创建VPN实例a,为其配置RD,并创建其出、入口路由。
[PE1] ip vpn-instance a
[PE1-vpn-instance-a] route-distinguisher 100:1
[PE1-vpn-instance-a] vpn-target 100:1 export-extcommunity
[PE1-vpn-instance-a] vpn-target 100:1 import-extcommunity
# 使能VPN实例a中的IP组播路由,配置Share-Group地址,绑定MTI接口并指定Switch-Group-Pool的范围。
[PE1-vpn-instance-a] multicast routing-enable
[PE1-vpn-instance-a] multicast-domain share-group 239.1.1.1 binding mtunnel 0
[PE1-vpn-instance-a] multicast-domain switch-group-pool 225.2.2.0 28
[PE1-vpn-instance-a] quit
# 在公网接口Vlan-interface12上配置IP地址,使能PIM-SM和LDP能力。
[PE1] interface vlan-interface 12
[PE1-Vlan-interface12] ip address 192.168.6.1 24
[PE1-Vlan-interface12] pim sm
[PE1-Vlan-interface12] mpls
[PE1-Vlan-interface12] mpls ldp
[PE1-Vlan-interface12] quit
# 将接口Vlan-interface20与VPN实例a进行关联,配置IP地址,并使能IGMP和PIM-SM。
[PE1] interface vlan-interface 20
[PE1-Vlan-interface20] ip binding vpn-instance a
[PE1-Vlan-interface20] ip address 10.110.1.1 24
[PE1-Vlan-interface20] igmp enable
[PE1-Vlan-interface20] pim sm
[PE1-Vlan-interface20] quit
# 将接口Vlan-interface11与VPN实例a进行关联,配置IP地址,并使能PIM-SM。
[PE1] interface vlan-interface 11
[PE1-Vlan-interface11] ip binding vpn-instance a
[PE1-Vlan-interface11] ip address 10.110.2.1 24
[PE1-Vlan-interface11] pim sm
[PE1-Vlan-interface11] quit
# 配置Loopback1接口的IP地址,并使能PIM-SM。
[PE1] interface loopback 1
[PE1-LoopBack1] ip address 1.1.1.1 32
[PE1-LoopBack1] pim sm
[PE1-LoopBack1] quit
# 配置BGP协议。
[PE1] bgp 100
[PE1-bgp] group vpn-g internal
[PE1-bgp] peer vpn-g connect-interface loopback 1
[PE1-bgp] peer 1.1.1.2 group vpn-g
[PE1-bgp] peer 1.1.1.3 group vpn-g
[PE1–bgp] ipv4-family vpn-instance a
[PE1-bgp-a] import-route rip 2
[PE1-bgp-a] import-route direct
[PE1-bgp-a] quit
[PE1–bgp] ipv4-family vpnv4
[PE1–bgp-af-vpnv4] peer vpn-g enable
[PE1-bgp-af-vpnv4] peer 1.1.1.2 group vpn-g
[PE1–bgp-af-vpnv4] peer 1.1.1.3 group vpn-g
[PE1–bgp-af-vpnv4] quit
[PE1–bgp] quit
当PE 1上配置了BGP对等体之后,MTI0接口将自动获得IP地址,该地址与配置BGP对等体时所指定的Loopback接口的IP地址相同;MTI0接口上运行的PIM协议类型也与其所属的VPN实例a中运行的PIM协议类型相同。
# 配置OSPF协议。
[PE1] ospf 1
[PE1-ospf-1] area 0.0.0.0
[PE1-ospf-1-area-0.0.0.0] network 1.1.1.1 0.0.0.0
[PE1-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.255.255
[PE1-ospf-1-area-0.0.0.0] quit
[PE1-ospf-1] quit
# 配置RIP协议。
[PE1] rip 2 vpn-instance a
[PE1-rip-2] network 10.0.0.0
[PE1-rip-2] import-route bgp
[PE1-rip-2] return
配置PE 2
# 配置Router ID,使能公网实例的IP组播路由,配置MPLS LSR ID,并使能LDP能力。
<PE2> system-view
[PE2] router id 1.1.1.2
[PE2] multicast routing-enable
[PE2] mpls lsr-id 1.1.1.2
[PE2] mpls
[PE2-mpls] quit
[PE2] mpls ldp
[PE2-mpls-ldp] quit
# 创建VPN实例b,为其配置RD,并创建其出、入口路由。
[PE2] ip vpn-instance b
[PE2-vpn-instance-b] route-distinguisher 200:1
[PE2-vpn-instance-b] vpn-target 200:1 export-extcommunity
[PE2-vpn-instance-b] vpn-target 200:1 import-extcommunity
# 使能VPN实例b中的IP组播路由,配置Share-Group地址,绑定MTI接口并指定Switch-Group-Pool的范围。
[PE2-vpn-instance-b] multicast routing-enable
[PE2-vpn-instance-b] multicast-domain share-group 239.2.2.2 binding mtunnel 1
[PE2-vpn-instance-b] multicast-domain switch-group-pool 225.4.4.0 28
[PE2-vpn-instance-b] quit
# 创建VPN实例a,为其配置RD,并创建其出、入口路由。
[PE2] ip vpn-instance a
[PE2-vpn-instance-a] route-distinguisher 100:1
[PE2-vpn-instance-a] vpn-target 100:1 export-extcommunity
[PE2-vpn-instance-a] vpn-target 100:1 import-extcommunity
# 使能VPN实例a中的IP组播路由,配置Share-Group地址,绑定MTI接口并指定Switch-Group-Pool的范围。
[PE2-vpn-instance-a] multicast routing-enable
[PE2-vpn-instance-a] multicast-domain share-group 239.1.1.1 binding mtunnel 0
[PE2-vpn-instance-a] multicast-domain switch-group-pool 225.2.2.0 28
[PE2-vpn-instance-a] quit
# 在公网接口Vlan-interface15上配置IP地址,使能PIM-SM和LDP能力。
[PE2] interface vlan-interface 15
[PE2-Vlan-interface15] ip address 192.168.7.1 24
[PE2-Vlan-interface15] pim sm
[PE2-Vlan-interface15] mpls
[PE2-Vlan-interface15] mpls ldp
[PE2-Vlan-interface15] quit
# 将接口Vlan-interface13与VPN实例b进行关联,配置IP地址,并使能PIM-SM。
[PE2] interface vlan-interface 13
[PE2-Vlan-interface13] ip binding vpn-instance b
[PE2-Vlan-interface13] ip address 10.110.3.1 24
[PE2-Vlan-interface13] pim sm
[PE2-Vlan-interface13] quit
# 将接口Vlan-interface14与VPN实例a进行关联,配置IP地址,并使能PIM-SM。
[PE2] interface vlan-interface 14
[PE2-Vlan-interface14] ip binding vpn-instance a
[PE2-Vlan-interface14] ip address 10.110.4.1 24
[PE2-Vlan-interface14] pim sm
[PE2-Vlan-interface14] quit
# 配置Loopback1接口的IP地址,并使能PIM-SM。
[PE2] interface loopback 1
[PE2-LoopBack1] ip address 1.1.1.2 32
[PE2-LoopBack1] pim sm
[PE2-LoopBack1] quit
# 配置BGP协议。
[PE2] bgp 100
[PE2-bgp] group vpn-g internal
[PE2-bgp] peer vpn-g connect-interface loopback 1
[PE2-bgp] peer 1.1.1.1 group vpn-g
[PE2-bgp] peer 1.1.1.3 group vpn-g
[PE2–bgp] ipv4-family vpn-instance a
[PE2-bgp-a] import-route rip 2
[PE2-bgp-a] import-route direct
[PE2-bgp-a] quit
[PE2–bgp] ipv4-family vpn-instance b
[PE2-bgp-b] import-route rip 3
[PE2-bgp-b] import-route direct
[PE2-bgp-b] quit
[PE2–bgp] ipv4-family vpnv4
[PE2–bgp-af-vpnv4] peer vpn-g enable
[PE2-bgp-af-vpnv4] peer 1.1.1.1 group vpn-g
[PE2–bgp-af-vpnv4] peer 1.1.1.3 group vpn-g
[PE2–bgp-af-vpnv4] quit
[PE2–bgp] quit
当PE 2上配置了BGP对等体之后,MTI0和MTI1接口将自动获得各自的IP地址,该地址与配置BGP对等体时所指定的Loopback接口的IP地址相同;MTI0和MTI1接口上运行的PIM协议类型也分别与其所属的VPN实例a和b中运行的PIM协议类型相同。
# 配置OSPF协议。
[PE2] ospf 1
[PE2-ospf-1] area 0.0.0.0
[PE2-ospf-1-area-0.0.0.0] network 1.1.1.2 0.0.0.0
[PE2-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.255.255
[PE2-ospf-1-area-0.0.0.0] quit
[PE2-ospf-1] quit
# 配置RIP协议。
[PE2] rip 2 vpn-instance a
[PE2-rip-2] network 10.0.0.0
[PE2-rip-2] import-route bgp
[PE2-rip-2] quit
[PE2] rip 3 vpn-instance b
[PE2-rip-3] network 10.0.0.0
[PE2-rip-3] import-route bgp
[PE2-rip-3] return
配置PE 3
# 配置Router ID,使能公网实例的IP组播路由,配置MPLS LSR ID,并使能LDP能力。
<PE3> system-view
[PE3] router id 1.1.1.3
[PE3] multicast routing-enable
[PE3] mpls lsr-id 1.1.1.3
[PE3] mpls
[PE3-mpls] quit
[PE3] mpls ldp
[PE3-mpls-ldp] quit
# 创建VPN实例a,为其配置RD,并创建其出、入口路由。
[PE3] ip vpn-instance a
[PE3-vpn-instance-a] route-distinguisher 100:1
[PE3-vpn-instance-a] vpn-target 100:1 export-extcommunity
[PE3-vpn-instance-a] vpn-target 100:1 import-extcommunity
# 使能VPN实例a中的IP组播路由,配置Share-Group地址,绑定MTI接口并指定Switch-Group-Pool的范围。
[PE3-vpn-instance-a] multicast routing-enable
[PE3-vpn-instance-a] multicast-domain share-group 239.1.1.1 binding mtunnel 0
[PE3-vpn-instance-a] multicast-domain switch-group-pool 225.2.2.0 28
[PE3-vpn-instance-a] quit
# 创建VPN实例b,为其配置RD,并创建其出、入口路由。
[PE3] ip vpn-instance b
[PE3-vpn-instance-b] route-distinguisher 200:1
[PE3-vpn-instance-b] vpn-target 200:1 export-extcommunity
[PE3-vpn-instance-b] vpn-target 200:1 import-extcommunity
# 使能VPN实例b中的IP组播路由,配置Share-Group地址,绑定MTI接口并指定Switch-Group-Pool的范围。
[PE3-vpn-instance-b] multicast routing-enable
[PE3-vpn-instance-b] multicast-domain share-group 239.2.2.2 binding mtunnel 1
[PE3-vpn-instance-b] multicast-domain switch-group-pool 225.4.4.0 28
[PE3-vpn-instance-b] quit
# 在公网接口Vlan-interface19上配置IP地址,使能PIM-SM和LDP能力。
[PE3] interface vlan-interface 19
[PE3-Vlan-interface19] ip address 192.168.8.1 24
[PE3-Vlan-interface19] pim sm
[PE3-Vlan-interface19] mpls
[PE3-Vlan-interface19] mpls ldp
[PE3-Vlan-interface19] quit
#将接口Vlan-interface17与VPN实例a进行关联,配置IP地址,并使能PIM-SM。
[PE3] interface vlan-interface 17
[PE3-Vlan-interface17] ip binding vpn-instance a
[PE3-Vlan-interface17] ip address 10.110.5.1 24
[PE3-Vlan-interface17] pim sm
[PE3-Vlan-interface17] quit
# 将接口Vlan-interface18与VPN实例b进行关联,配置IP地址,并使能PIM-SM。
[PE3] interface vlan-interface 18
[PE3-Vlan-interface18] ip binding vpn-instance b
[PE3-Vlan-interface18] ip address 10.110.6.1 24
[PE3-Vlan-interface18] pim sm
[PE3-Vlan-interface18] quit
# 配置Loopback1接口的IP地址,并使能PIM-SM。
[PE3] interface loopback 1
[PE3-LoopBack1] ip address 1.1.1.3 32
[PE3-LoopBack1] pim sm
[PE3-LoopBack1] quit
# 将接口Loopback2与VPN实例b进行关联,配置IP地址,并使能PIM-SM。
[PE3] interface loopback 2
[PE3-LoopBack2] ip binding vpn-instance b
[PE3-LoopBack2] ip address 33.33.33.33 32
[PE3-LoopBack2] pim sm
[PE3-LoopBack2] quit
# 配置Loopback2接口为VPN b的C-BSR和C-RP。
[PE3] pim vpn-instance b
[PE3-pim-b] c-bsr loopback 2
[PE3-pim-b] c-rp loopback 2
[PE3-pim-b] quit
# 配置BGP协议。
[PE3] bgp 100
[PE3-bgp] group vpn-g internal
[PE3-bgp] peer vpn-g connect-interface loopback 1
[PE3-bgp] peer 1.1.1.1 group vpn-g
[PE3-bgp] peer 1.1.1.2 group vpn-g
[PE3–bgp] ipv4-family vpn-instance a
[PE3-bgp-a] import-route rip 2
[PE3-bgp-a] import-route direct
[PE3-bgp-a] quit
[PE3–bgp] ipv4-family vpn-instance b
[PE3-bgp-b] import-route rip 3
[PE3-bgp-b] import-route direct
[PE3-bgp-b] quit
[PE3–bgp] ipv4-family vpnv4
[PE3–bgp-af-vpnv4] peer vpn-g enable
[PE3-bgp-af-vpnv4] peer 1.1.1.1 group vpn-g
[PE3–bgp-af-vpnv4] peer 1.1.1.2 group vpn-g
[PE3–bgp-af-vpnv4] quit
[PE3–bgp] quit
当PE 3上配置了BGP对等体之后,MTI0和MTI1接口将自动获得各自的IP地址,该地址与配置BGP对等体时所指定的Loopback接口的IP地址相同;MTI0和MTI1接口上运行的PIM协议类型也分别与其所属的VPN实例a和b中运行的PIM协议类型相同。
# 配置OSPF协议。
[PE3] ospf 1
[PE3-ospf-1] area 0.0.0.0
[PE3-ospf-1-area-0.0.0.0] network 1.1.1.3 0.0.0.0
[PE3-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.255.255
[PE3-ospf-1-area-0.0.0.0] quit
[PE3-ospf-1] quit
# 配置RIP协议。
[PE3] rip 2 vpn-instance a
[PE3-rip-2] network 10.0.0.0
[PE3-rip-2] import-route bgp
[PE3-rip-2] quit
[PE3] rip 3 vpn-instance b
[PE3-rip-3] network 10.0.0.0
[PE3-rip-3] network 33.0.0.0
[PE3-rip-3] import-route bgp
[PE3-rip-3] return
配置P
# 使能公网实例的IP组播路由,配置MPLS LSR ID,并使能LDP能力。
<P> system-view
[P] multicast routing-enable
[P] mpls lsr-id 2.2.2.2
[P] mpls
[P-mpls] quit
[P] mpls ldp
[P-mpls-ldp] quit
# 在公网接口Vlan-interface12上配置IP地址,使能PIM-SM和LDP能力。
[P] interface vlan-interface 12
[P-Vlan-interface12] ip address 192.168.6.2 24
[P-Vlan-interface12] pim sm
[P-Vlan-interface12] mpls
[P-Vlan-interface12] mpls ldp
[P-Vlan-interface12] quit
# 在公网接口Vlan-interface15上配置IP地址,使能PIM-SM和LDP能力。
[P] interface vlan-interface 15
[P-Vlan-interface15] ip address 192.168.7.2 24
[P-Vlan-interface15] pim sm
[P-Vlan-interface15] mpls
[P-Vlan-interface15] mpls ldp
[P-Vlan-interface15] quit
# 在公网接口Vlan-interface19上配置IP地址,使能PIM-SM和LDP能力。
[P] interface vlan-interface 19
[P-Vlan-interface19] ip address 192.168.8.2 24
[P-Vlan-interface19] pim sm
[P-Vlan-interface19] mpls
[P-Vlan-interface19] mpls ldp
[P-Vlan-interface19] quit
# 配置Loopback1接口的IP地址,并使能PIM-SM。
[P] interface loopback 1
[P-LoopBack1] ip address 2.2.2.2 32
[P-LoopBack1] pim sm
[P-LoopBack1] quit
# 配置Loopback1接口为公网实例的C-BSR和C-RP。
[P] pim
[P-pim] c-bsr loopback 1
[P-pim] c-rp loopback 1
[P-pim] quit
# 配置OSPF协议。
[P] ospf 1
[P-ospf-1] area 0.0.0.0
[P-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0
[P-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.255.255
配置CE a1
# 使能IP组播路由。
<CEa1> system-view
[CEa1] multicast routing-enable
# 在接口Vlan-interface10上配置IP地址,并使能PIM-SM。
[CEa1] interface vlan-interface 10
[CEa1-Vlan-interface10] ip address 10.110.7.1 24
[CEa1-Vlan-interface10] pim sm
[CEa1-Vlan-interface10] quit
# 在接口Vlan-interface11上配置IP地址,并使能PIM-SM。
[CEa1] interface vlan-interface 11
[CEa1-Vlan-interface11] ip address 10.110.2.2 24
[CEa1-Vlan-interface11] pim sm
[CEa1-Vlan-interface11] quit
# 配置RIP协议。
[CEa1] rip 2
[CEa1-rip-2] network 10.0.0.0
配置CE b1
# 使能IP组播路由。
<CEb1> system-view
[CEb1] multicast routing-enable
# 在接口Vlan-interface30上配置IP地址,并使能PIM-SM。
[CEb1] interface vlan-interface 30
[CEb1-Vlan-interface30] ip address 10.110.8.1 24
[CEb1-Vlan-interface30] pim sm
[CEb1-Vlan-interface30] quit
# 在接口Vlan-interface13上配置IP地址,并使能PIM-SM。
[CEb1] interface vlan-interface 13
[CEb1-Vlan-interface13] ip address 10.110.3.2 24
[CEb1-Vlan-interface13] pim sm
[CEb1-Vlan-interface13] quit
# 配置RIP协议。
[CEb1] rip 3
[CEb1-rip-3] network 10.0.0.0
配置CE a2
# 使能IP组播路由。
<CEa2> system-view
[CEa2] multicast routing-enable
# 在接口Vlan-interface40上配置IP地址,使能IGMP和PIM-SM。
[CEa2] interface vlan-interface 40
[CEa2-Vlan-interface40] ip address 10.110.9.1 24
[CEa2-Vlan-interface40] igmp enable
[CEa2-Vlan-interface40] pim sm
[CEa2-Vlan-interface40] quit
# 在接口Vlan-interface14上配置IP地址,并使能PIM-SM。
[CEa2] interface vlan-interface 14
[CEa2-Vlan-interface14] ip address 10.110.4.2 24
[CEa2-Vlan-interface14] pim sm
[CEa2-Vlan-interface14] quit
# 在接口Vlan-interface16上配置IP地址,并使能PIM-SM。
[CEa2] interface vlan-interface 16
[CEa2-Vlan-interface16] ip address 10.110.12.1 24
[CEa2-Vlan-interface16] pim sm
[CEa2-Vlan-interface16] quit
# 配置Loopback1接口的IP地址,并使能PIM-SM。
[CEa2] interface loopback 1
[CEa2-LoopBack1] ip address 22.22.22.22 32
[CEa2-LoopBack1] pim sm
[CEa2-LoopBack1] quit
# 配置Loopback1接口为VPN a的BSR和RP。
[CEa2] pim
[CEa2-pim] c-bsr loopback 1
[CEa2-pim] c-rp loopback 1
[CEa2-pim] quit
# 配置RIP协议。
[CEa2] rip 2
[CEa2-rip-2] network 10.0.0.0
[CEa2-rip-2] network 22.0.0.0
配置CE a3
# 使能IP组播路由。
<CEa3> system-view
[CEa3] multicast routing-enable
# 在接口Vlan-interface50上配置IP地址,使能IGMP和PIM-SM。
[CEa3] interface vlan-interface 50
[CEa3-Vlan-interface50] ip address 10.110.10.1 24
[CEa3-Vlan-interface50] igmp enable
[CEa3-Vlan-interface50] pim sm
[CEa3-Vlan-interface50] quit
# 在接口Vlan-interface17上配置IP地址,并使能PIM-SM。
[CEa3] interface vlan-interface 17
[CEa3-Vlan-interface17] ip address 10.110.5.2 24
[CEa3-Vlan-interface17] pim sm
[CEa3-Vlan-interface17] quit
# 在接口Vlan-interface16上配置IP地址,并使能PIM-SM。
[CEa3] interface vlan-interface 16
[CEa3-Vlan-interface16] ip address 10.110.12.2 24
[CEa3-Vlan-interface16] pim sm
[CEa3-Vlan-interface16] quit
# 配置RIP协议。
[CEa3] rip 2
[CEa3-rip-2] network 10.0.0.0
配置CE b2
# 使能IP组播路由。
<CEb2> system-view
[CEb2] multicast routing-enable
# 在接口Vlan-interface60上配置IP地址,使能IGMP和PIM-SM。
[CEb2] interface vlan-interface 60
[CEb2-Vlan-interface60] ip address 10.110.11.1 24
[CEb2-Vlan-interface60] igmp enable
[CEb2-Vlan-interface60] pim sm
[CEb2-Vlan-interface60] quit
# 在接口Vlan-interface18上配置IP地址,并使能PIM-SM。
[CEb2] interface vlan-interface 18
[CEb2-Vlan-interface18] ip address 10.110.6.2 24
[CEb2-Vlan-interface18] pim sm
[CEb2-Vlan-interface18] quit
# 配置RIP协议。
[CEb2] rip 3
[CEb2-rip-3] network 10.0.0.0
检验配置效果
通过使用display multicast-domain vpn-instance share-group命令可以查看指定VPN实例的Share-Group组信息。
# 查看PE 1上VPN实例a中的本地Share-Group组信息。
<PE1> display multicast-domain vpn-instance a share-group local
MD local share-group information for VPN-Instance: a
Share-group: 239.1.1.1
MTunnel address: 1.1.1.1
# 查看PE 2上VPN实例a中的本地Share-Group组信息。
<PE2> display multicast-domain vpn-instance a share-group local
MD local share-group information for VPN-Instance: a
Share-group: 239.1.1.1
MTunnel address: 1.1.1.2
# 查看PE 2上VPN实例b中的本地Share-Group组信息。
<PE2> display multicast-domain vpn-instance b share-group local
MD local share-group information for VPN-Instance: b
Share-group: 239.2.2.2
MTunnel address: 1.1.1.2
# 查看PE 3上VPN实例a中的本地Share-Group组信息。
<PE3> display multicast-domain vpn-instance a share-group local
MD local share-group information for VPN-Instance: a
Share-group: 239.1.1.1
MTunnel address: 1.1.1.3
# 查看PE 3上VPN实例b中的本地Share-Group组信息。
<PE3> display multicast-domain vpn-instance b share-group local
MD local share-group information for VPN-Instance: b
Share-group: 239.2.2.2
MTunnel address: 1.1.1.3
组网需求如表1-11所示。
表1-11 跨AS的MD VPN配置组网需求
项目 |
组网需求 |
组播源和接收者 |
· VPN a的组播源为S 1,接收者为R 2 · VPN b的组播源为S 2,接收者为R 1 · VPN a中的Share-Group地址为239.1.1.1,Switch-Group地址池为225.1.1.0~225.1.1.15 · VPN b中的Share-Group地址为239.4.4.4,Switch-Group地址池为225.4.4.0~225.4.4.15 |
PE上各接口所属的VPN实例 |
· PE 1:Vlan-interface11属于VPN实例a,Vlan-interface12属于VPN实例b,Vlan-interface2和Loopback1属于公网实例 · PE 2:Vlan-interface2、Vlan-interface3、Loopback1和Loopback2属于公网实例 · PE 3:Vlan-interface3、Vlan-interface4、Loopback1和Loopback2属于公网实例 · PE 4:Vlan-interface13属于VPN实例a,Vlan-interface14属于VPN实例b,Vlan-interface4和Loopback1属于公网实例 |
单播路由协议和MPLS |
· 在AS 100和AS 200中分别配置OSPF,在各PE与CE之间也配置OSPF · 在PE 1、PE 2、PE 3和PE 4各自的Loopback1接口之间建立BGP对等体连接并传递所有私网路由 · 在AS 100和AS 200中分别配置MPLS |
IP组播路由功能 |
· 在PE 1、PE 2、PE 3和PE 4的公网实例中均使能IP组播路由 · 在PE 1和PE 4的VPN实例a中均使能IP组播路由 · 在PE 1和PE 4的VPN实例b中均使能IP组播路由 · 在CE a1、CE a2、CE b1、CE b2上均使能IP组播路由 |
IGMP功能 |
· 在CE a2的Vlan-interface30接口上使能IGMPv2 · 在CE b2的Vlan-interface40接口上使能IGMPv2 |
PIM功能 |
· 在PE 2和PE 3的所有公网接口上均使能PIM-SM · 在PE 1和PE 4的所有公网和私网接口上均使能PIM-SM · 在CE a1、CE a2、CE b1和CE b2的所有接口上均使能PIM-SM · PE 2和PE 3的Loopback2接口为各自所在AS的C-BSR和C-RP(服务于所有组播组) · CE a1的Loopback0接口为VPN a的C-BSR和C-RP(服务于所有组播组) · CE b1的Loopback0接口为VPN b的C-BSR和C-RP(服务于所有组播组) |
MSDP功能 |
· 在PE 2和PE 3的Loopback1接口之间建立MSDP对等体 |
图1-14 跨AS的MD VPN配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
S 1 |
- |
10.11.5.2/24 |
R 1 |
- |
10.11.8.2/24 |
S 2 |
- |
10.11.6.2/24 |
R 2 |
- |
10.11.7.2/24 |
PE 1 |
Vlan-int2 |
10.10.1.1/24 |
PE 3 |
Vlan-int4 |
10.10.2.1/24 |
|
Vlan-int11 |
10.11.1.1/24 |
|
Vlan-int3 |
192.168.1.2/24 |
|
Vlan-int12 |
10.11.2.1/24 |
|
Loop1 |
1.1.1.3/32 |
|
Loop1 |
1.1.1.1/32 |
|
Loop2 |
22.22.22.22/32 |
PE 2 |
Vlan-int2 |
10.10.1.2/24 |
PE 4 |
Vlan-int4 |
10.10.2.2/24 |
|
Vlan-int3 |
192.168.1.1/24 |
|
Vlan-int13 |
10.11.3.1/24 |
|
Loop1 |
1.1.1.2/32 |
|
Vlan-int14 |
10.11.4.1/32 |
|
Loop2 |
11.11.11.11/32 |
|
Loop2 |
1.1.1.4/32 |
CE a1 |
Vlan-int10 |
10.11.5.1/24 |
CE b1 |
Vlan-int20 |
10.11.6.1/24 |
|
Vlan-int11 |
10.11.1.2/24 |
|
Vlan-int12 |
10.11.2.2/24 |
|
Loop0 |
2.2.2.2/32 |
CE b2 |
Vlan-int40 |
10.11.8.1/24 |
CE a2 |
Vlan-int30 |
10.11.7.1/24 |
|
Vlan-int14 |
10.11.4.2/24 |
|
Vlan-int13 |
10.11.3.2/24 |
|
Loop0 |
3.3.3.3/32 |
配置PE 1
# 配置Router ID,使能公网实例的IP组播路由,配置MPLS LSR ID,并使能LDP能力。
<PE1> system-view
[PE1] router id 1.1.1.1
[PE1] multicast routing-enable
[PE1] mpls lsr-id 1.1.1.1
[PE1] mpls
[PE1-mpls] quit
[PE1] mpls ldp
[PE1-mpls-ldp] quit
# 创建VPN实例a,为其配置RD,并创建其出、入口路由;使能VPN实例a中的IP组播路由,配置Share-Group地址,绑定MTI接口并指定Switch-Group-Pool的范围。
[PE1] ip vpn-instance a
[PE1-vpn-instance-a] route-distinguisher 100:1
[PE1-vpn-instance-a] vpn-target 100:1 export-extcommunity
[PE1-vpn-instance-a] vpn-target 100:1 import-extcommunity
[PE1-vpn-instance-a] multicast routing-enable
[PE1-vpn-instance-a] multicast-domain share-group 239.1.1.1 binding mtunnel 0
[PE1-vpn-instance-a] multicast-domain switch-group-pool 225.1.1.0 28
[PE1-vpn-instance-a] quit
# 创建VPN实例b,为其配置RD,并创建其出、入口路由;使能VPN实例b中的IP组播路由,配置Share-Group地址,绑定MTI接口并指定Switch-Group-Pool的范围。
[PE1] ip vpn-instance b
[PE1-vpn-instance-b] route-distinguisher 200:1
[PE1-vpn-instance-b] vpn-target 200:1 export-extcommunity
[PE1-vpn-instance-b] vpn-target 200:1 import-extcommunity
[PE1-vpn-instance-b] multicast routing-enable
[PE1-vpn-instance-b] multicast-domain share-group 239.4.4.4 binding mtunnel 1
[PE1-vpn-instance-b] multicast-domain switch-group-pool 225.4.4.0 28
[PE1-vpn-instance-b] quit
# 在公网接口Vlan-interface2上配置IP地址,使能PIM-SM和LDP能力。
[PE1] interface vlan-interface 2
[PE1-Vlan-interface2] ip address 10.10.1.1 24
[PE1-Vlan-interface2] pim sm
[PE1-Vlan-interface2] mpls
[PE1-Vlan-interface2] mpls ldp
[PE1-Vlan-interface2] quit
# 将接口Vlan-interface11与VPN实例a进行关联,配置IP地址,并使能PIM-SM。
[PE1] interface vlan-interface 11
[PE1-Vlan-interface11] ip binding vpn-instance a
[PE1-Vlan-interface11] ip address 10.11.1.1 24
[PE1-Vlan-interface11] pim sm
[PE1-Vlan-interface11] quit
# 将接口Vlan-interface12与VPN实例b进行关联,配置IP地址,并使能PIM-SM。
[PE1] interface vlan-interface 12
[PE1-Vlan-interface12] ip binding vpn-instance b
[PE1-Vlan-interface12] ip address 10.11.2.1 24
[PE1-Vlan-interface12] pim sm
[PE1-Vlan-interface12] quit
# 配置Loopback1接口的IP地址,并使能PIM-SM。
[PE1] interface loopback 1
[PE1-LoopBack1] ip address 1.1.1.1 32
[PE1-LoopBack1] pim sm
[PE1-LoopBack1] quit
# 配置BGP协议。
[PE1] bgp 100
[PE1-bgp] group pe1-pe2 internal
[PE1-bgp] peer pe1-pe2 label-route-capability
[PE1-bgp] peer pe1-pe2 connect-interface loopback 1
[PE1-bgp] peer 1.1.1.2 group pe1-pe2
[PE1-bgp] group pe1-pe4 external
[PE1-bgp] peer pe1-pe4 as-number 200
[PE1-bgp] peer pe1-pe4 ebgp-max-hop 255
[PE1-bgp] peer 1.1.1.4 group pe1-pe4
[PE1-bgp] peer pe1-pe4 connect-interface loopback 1
[PE1–bgp] ipv4-family vpn-instance a
[PE1-bgp-a] import-route ospf 2
[PE1-bgp-a] import-route direct
[PE1-bgp-a] quit
[PE1–bgp] ipv4-family vpn-instance b
[PE1-bgp-b] import-route ospf 3
[PE1-bgp-b] import-route direct
[PE1-bgp-b] quit
[PE1–bgp] ipv4-family vpnv4
[PE1–bgp-af-vpnv4] peer 1.1.1.4 enable
[PE1–bgp-af-vpnv4] quit
[PE1–bgp] quit
当PE 1上配置了BGP对等体之后,MTI0和MTI1接口将分别自动获得其IP地址,该地址与配置BGP对等体时所指定的Loopback接口的IP地址相同;MTI0接口上运行的PIM协议类型与VPN实例a中运行的PIM协议类型相同;MTI1接口上运行的PIM协议类型与VPN实例b中运行的PIM协议类型相同。
# 配置OSPF协议。
[PE1] ospf 1
[PE1-ospf-1] area 0.0.0.0
[PE1-ospf-1-area-0.0.0.0] network 1.1.1.1 0.0.0.0
[PE1-ospf-1-area-0.0.0.0] network 10.10.0.0 0.0.255.255
[PE1-ospf-1-area-0.0.0.0] quit
[PE1-ospf-1] quit
[PE1] ospf 2 vpn-instance a
[PE1-ospf-2] import-route bgp
[PE1-ospf-2] area 0.0.0.0
[PE1-ospf-2-area-0.0.0.0] network 10.11.0.0 0.0.255.255
[PE1-ospf-2-area-0.0.0.0] quit
[PE1-ospf-2] quit
[PE1] ospf 3 vpn-instance b
[PE1-ospf-3] import-route bgp
[PE1-ospf-3] area 0.0.0.0
[PE1-ospf-3-area-0.0.0.0] network 10.11.0.0 0.0.255.255
[PE1-ospf-3-area-0.0.0.0] quit
[PE1-ospf-3] quit
配置PE 2
# 配置Router ID,使能公网实例的IP组播路由,配置MPLS LSR ID,并使能LDP能力。
<PE2> system-view
[PE2] router id 1.1.1.2
[PE2] multicast routing-enable
[PE2] mpls lsr-id 1.1.1.2
[PE2] mpls
[PE2-mpls] quit
[PE2] mpls ldp
[PE2-mpls-ldp] quit
# 在公网接口Vlan-interface2上配置IP地址,使能PIM-SM和LDP能力。
[PE2] interface vlan-interface 2
[PE2-Vlan-interface2] ip address 10.10.1.2 24
[PE2-Vlan-interface2] pim sm
[PE2-Vlan-interface2] mpls
[PE2-Vlan-interface2] mpls ldp
[PE2-Vlan-interface2] quit
# 在公网接口Vlan-interface3上配置IP地址,使能PIM-SM和MPLS。
[PE2] interface vlan-interface 3
[PE2-Vlan-interface3] ip address 192.168.1.1 24
[PE2-Vlan-interface3] pim sm
[PE2-Vlan-interface3] mpls
[PE2-Vlan-interface3] quit
# 配置Loopback1接口的IP地址,并使能PIM-SM。
[PE2] interface loopback 1
[PE2-LoopBack1] ip address 1.1.1.2 32
[PE2-LoopBack1] pim sm
[PE2-LoopBack1] quit
# 配置Loopback2接口的IP地址,并使能PIM-SM。
[PE2] interface loopback 2
[PE2-LoopBack2] ip address 11.11.11.11 32
[PE2-LoopBack2] pim sm
[PE2-LoopBack2] quit
# 配置Loopback2接口为公网实例的C-BSR和C-RP。
[PE2] pim
[PE2-pim] c-bsr loopback 2
[PE2-pim] c-rp loopback 2
[PE2-pim] quit
# 配置BSR的服务边界。
[PE2] interface vlan-interface 3
[PE2-Vlan-interface3] pim bsr-boundary
[PE2-Vlan-interface3] quit
# 配置MSDP对等体。
[PE2] msdp
[PE2-msdp] encap-data-enable
[PE2-msdp] peer 1.1.1.3 connect-interface loopback 1
# 配置静态路由。
[PE2] ip route-static 1.1.1.3 32 vlan-interface 3 192.168.1.2
# 配置BGP协议。
[PE2] bgp 100
[PE2-bgp] import-route ospf 1
[PE2-bgp] group pe2-pe1 internal
[PE2-bgp] peer pe2-pe1 route-policy map2 export
[PE2-bgp] peer pe2-pe1 label-route-capability
[PE2-bgp] peer pe2-pe1 connect-interface loopback 1
[PE2-bgp] peer 1.1.1.1 group pe2-pe1
[PE2-bgp] group pe2-pe3 external
[PE2-bgp] peer pe2-pe3 as-number 200
[PE2-bgp] peer pe2-pe3 route-policy map1 export
[PE2-bgp] peer pe2-pe3 label-route-capability
[PE2-bgp] peer pe2-pe3 connect-interface loopback 1
[PE2-bgp] peer 1.1.1.3 group pe2-pe3
[PE2–bgp] quit
# 配置OSPF协议。
[PE2] ospf 1
[PE2-ospf-1] area 0.0.0.0
[PE2-ospf-1-area-0.0.0.0] network 1.1.1.2 0.0.0.0
[PE2-ospf-1-area-0.0.0.0] network 11.11.11.11 0.0.0.0
[PE2-ospf-1-area-0.0.0.0] network 10.10.0.0 0.0.255.255
[PE2-ospf-1-area-0.0.0.0] quit
[PE2-ospf-1] quit
# 配置路由策略。
[PE2] route-policy map1 permit node 10
[PE2-route-policy] apply mpls-label
[PE2-route-policy] quit
[PE2] route-policy map2 permit node 10
[PE2-route-policy] if-match mpls-label
[PE2-route-policy] apply mpls-label
[PE2-route-policy] quit
配置PE 3
# 配置Router ID,使能公网实例的IP组播路由,配置MPLS LSR ID,并使能LDP能力。
<PE3> system-view
[PE3] router id 1.1.1.3
[PE3] multicast routing-enable
[PE3] mpls lsr-id 1.1.1.3
[PE3] mpls
[PE3-mpls] quit
[PE3] mpls ldp
[PE3-mpls-ldp] quit
# 在公网接口Vlan-interface4上配置IP地址,使能PIM-SM和LDP能力。
[PE3] interface vlan-interface 4
[PE3-Vlan-interface4] ip address 10.10.2.1 24
[PE3-Vlan-interface4] pim sm
[PE3-Vlan-interface4] mpls
[PE3-Vlan-interface4] mpls ldp
[PE3-Vlan-interface4] quit
# 在公网接口Vlan-interface3上配置IP地址,使能PIM-SM和MPLS。
[PE3] interface vlan-interface 3
[PE3-Vlan-interface3] ip address 192.168.1.2 24
[PE3-Vlan-interface3] pim sm
[PE3-Vlan-interface3] mpls
[PE3-Vlan-interface3] quit
# 配置Loopback1接口的IP地址,并使能PIM-SM。
[PE3] interface loopback 1
[PE3-LoopBack1] ip address 1.1.1.3 32
[PE3-LoopBack1] pim sm
[PE3-LoopBack1] quit
# 配置Loopback2接口的IP地址,并使能PIM-SM。
[PE3] interface loopback 2
[PE3-LoopBack2] ip address 22.22.22.22 32
[PE3-LoopBack2] pim sm
[PE3-LoopBack2] quit
# 配置Loopback2接口为公网实例的C-BSR和C-RP。
[PE3] pim
[PE3-pim] c-bsr loopback 2
[PE3-pim] c-rp loopback 2
[PE3-pim] quit
# 配置BSR的服务边界。
[PE3] interface vlan-interface 3
[PE3-Vlan-interface3] pim bsr-boundary
[PE3-Vlan-interface3] quit
# 配置MSDP对等体。
[PE3] msdp
[PE3-msdp] encap-data-enable
[PE3-msdp] peer 1.1.1.2 connect-interface loopback 1
# 配置静态路由。
[PE3] ip route-static 1.1.1.2 32 vlan-interface 3 192.168.1.1
# 配置BGP协议。
[PE3] bgp 200
[PE3-bgp] import-route ospf 1
[PE3-bgp] group pe3-pe4 internal
[PE3-bgp] peer pe3-pe4 route-policy map2 export
[PE3-bgp] peer pe3-pe4 label-route-capability
[PE3-bgp] peer pe3-pe4 connect-interface loopback 1
[PE3-bgp] peer 1.1.1.4 group pe3-pe4
[PE3-bgp] group pe3-pe2 external
[PE3-bgp] peer pe3-pe2 as-number 100
[PE3-bgp] peer pe3-pe2 route-policy map1 export
[PE3-bgp] peer pe3-pe2 label-route-capability
[PE3-bgp] peer pe3-pe2 connect-interface loopback 1
[PE3-bgp] peer 1.1.1.2 group pe3-pe2
[PE3–bgp] quit
# 配置OSPF协议。
[PE3] ospf 1
[PE3-ospf-1] area 0.0.0.0
[PE3-ospf-1-area-0.0.0.0] network 1.1.1.3 0.0.0.0
[PE3-ospf-1-area-0.0.0.0] network 22.22.22.22 0.0.0.0
[PE3-ospf-1-area-0.0.0.0] network 10.10.0.0 0.0.255.255
[PE3-ospf-1-area-0.0.0.0] quit
[PE3-ospf-1] quit
# 配置路由策略。
[PE3] route-policy map1 permit node 10
[PE3-route-policy] apply mpls-label
[PE3-route-policy] quit
[PE3] route-policy map2 permit node 10
[PE3-route-policy] if-match mpls-label
[PE3-route-policy] apply mpls-label
[PE3-route-policy] quit
配置PE 4
# 配置Router ID,使能公网实例的IP组播路由,配置MPLS LSR ID,并使能LDP能力。
<PE4> system-view
[PE4] router id 1.1.1.4
[PE4] multicast routing-enable
[PE4] mpls lsr-id 1.1.1.4
[PE4] mpls
[PE4-mpls] quit
[PE4] mpls ldp
[PE4-mpls-ldp] quit
# 创建VPN实例a,为其配置RD,并创建其出、入口路由;使能VPN实例a中的IP组播路由,配置Share-Group地址,绑定MTI接口并指定Switch-Group-Pool的范围。
[PE4] ip vpn-instance a
[PE4-vpn-instance-a] route-distinguisher 100:1
[PE4-vpn-instance-a] vpn-target 100:1 export-extcommunity
[PE4-vpn-instance-a] vpn-target 100:1 import-extcommunity
[PE4-vpn-instance-a] multicast routing-enable
[PE4-vpn-instance-a] multicast-domain share-group 239.1.1.1 binding mtunnel 0
[PE4-vpn-instance-a] multicast-domain switch-group-pool 225.1.1.0 28
[PE4-vpn-instance-a] quit
# 创建VPN实例b,为其配置RD,并创建其出、入口路由;使能VPN实例b中的IP组播路由,配置Share-Group地址,绑定MTI接口并指定Switch-Group-Pool的范围。
[PE4] ip vpn-instance b
[PE4-vpn-instance-b] route-distinguisher 200:1
[PE4-vpn-instance-b] vpn-target 200:1 export-extcommunity
[PE4-vpn-instance-b] vpn-target 200:1 import-extcommunity
[PE4-vpn-instance-b] multicast routing-enable
[PE4-vpn-instance-b] multicast-domain share-group 239.4.4.4 binding mtunnel 1
[PE4-vpn-instance-b] multicast-domain switch-group-pool 225.4.4.0 28
[PE4-vpn-instance-b] quit
# 在公网接口Vlan-interface4上配置IP地址,使能PIM-SM和LDP能力。
[PE4] interface vlan-interface 4
[PE4-Vlan-interface4] ip address 10.10.2.2 24
[PE4-Vlan-interface4] pim sm
[PE4-Vlan-interface4] mpls
[PE4-Vlan-interface4] mpls ldp
[PE4-Vlan-interface4] quit
# 将接口Vlan-interface13与VPN实例a进行关联,配置IP地址,并使能PIM-SM。
[PE4] interface vlan-interface 13
[PE4-Vlan-interface13] ip binding vpn-instance a
[PE4-Vlan-interface13] ip address 10.11.3.1 24
[PE4-Vlan-interface13] pim sm
[PE4-Vlan-interface13] quit
# 将接口Vlan-interface14与VPN实例b进行关联,配置IP地址,并使能PIM-SM。
[PE4] interface vlan-interface 14
[PE4-Vlan-interface14] ip binding vpn-instance b
[PE4-Vlan-interface14] ip address 10.11.4.1 24
[PE4-Vlan-interface14] pim sm
[PE4-Vlan-interface14] quit
# 配置Loopback1接口的IP地址,并使能PIM-SM。
[PE4] interface loopback 1
[PE4-LoopBack1] ip address 1.1.1.4 32
[PE4-LoopBack1] pim sm
[PE4-LoopBack1] quit
# 配置BGP协议。
[PE4] bgp 200
[PE4-bgp] group pe4-pe3 internal
[PE4-bgp] peer pe4-pe3 label-route-capability
[PE4-bgp] peer pe4-pe3 connect-interface loopback 1
[PE4-bgp] peer 1.1.1.3 group pe4-pe3
[PE4-bgp] group pe4-pe1 external
[PE4-bgp] peer pe4-pe1 as-number 100
[PE4-bgp] peer pe4-pe1 ebgp-max-hop 255
[PE4-bgp] peer 1.1.1.1 group pe4-pe1
[PE4-bgp] peer pe4-pe1 connect-interface loopback 1
[PE4–bgp] ipv4-family vpn-instance a
[PE4-bgp-a] import-route ospf 2
[PE4-bgp-a] import-route direct
[PE4-bgp-a] quit
[PE4–bgp] ipv4-family vpn-instance b
[PE4-bgp-b] import-route ospf 3
[PE4-bgp-b] import-route direct
[PE4-bgp-b] quit
[PE4–bgp] ipv4-family vpnv4
[PE4–bgp-af-vpnv4] peer 1.1.1.1 enable
[PE4–bgp-af-vpnv4] quit
[PE4–bgp] quit
当PE 4上配置了BGP对等体之后,MTI0和MTI1接口将分别自动获得其IP地址,该地址与配置BGP对等体时所指定的Loopback接口的IP地址相同;MTI0接口上运行的PIM协议类型与VPN实例a中运行的PIM协议类型相同;MTI1接口上运行的PIM协议类型与VPN实例b中运行的PIM协议类型相同。
# 配置OSPF协议。
[PE4] ospf 1
[PE4-ospf-1] area 0.0.0.0
[PE4-ospf-1-area-0.0.0.0] network 1.1.1.4 0.0.0.0
[PE4-ospf-1-area-0.0.0.0] network 10.10.0.0 0.0.255.255
[PE4-ospf-1-area-0.0.0.0] quit
[PE4-ospf-1] quit
[PE4] ospf 2 vpn-instance a
[PE4-ospf-2] import-route bgp
[PE4-ospf-2] area 0.0.0.0
[PE4-ospf-2-area-0.0.0.0] network 10.11.0.0 0.0.255.255
[PE4-ospf-2-area-0.0.0.0] quit
[PE4-ospf-2] quit
[PE4] ospf 3 vpn-instance b
[PE4-ospf-3] import-route bgp
[PE4-ospf-3] area 0.0.0.0
[PE4-ospf-3-area-0.0.0.0] network 10.11.0.0 0.0.255.255
[PE4-ospf-3-area-0.0.0.0] quit
[PE4-ospf-3] quit
配置CE a1
# 使能IP组播路由。
<CEa1> system-view
[CEa1] multicast routing-enable
# 在接口Vlan-interface10上配置IP地址,并使能PIM-SM。
[CEa1] interface vlan-interface 10
[CEa1-Vlan-interface10] ip address 10.11.5.1 24
[CEa1-Vlan-interface10] pim sm
[CEa1-Vlan-interface10] quit
# 在接口Vlan-interface11上配置IP地址,并使能PIM-SM。
[CEa1] interface vlan-interface 11
[CEa1-Vlan-interface11] ip address 10.11.1.2 24
[CEa1-Vlan-interface11] pim sm
[CEa1-Vlan-interface11] quit
# 配置Loopback1接口的IP地址,并使能PIM-SM。
[CEa1] interface loopback 1
[CEa1-LoopBack1] ip address 2.2.2.2 32
[CEa1-LoopBack1] pim sm
[CEa1-LoopBack1] quit
# 配置Loopback1接口为VPN a的C-BSR和C-RP。
[CEa1] pim
[CEa1-pim] c-bsr loopback 1
[CEa1-pim] c-rp loopback 1
[CEa1-pim] quit
# 配置OSPF协议。
[CEa1] ospf 1
[CEa1-ospf-1] area 0.0.0.0
[CEa1-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0
[CEa1-ospf-1-area-0.0.0.0] network 10.11.0.0 0.0.255.255
[CEa1-ospf-1-area-0.0.0.0] quit
[CEa1-ospf-1] quit
配置CE b1
# 使能IP组播路由。
<CEb1> system-view
[CEb1] multicast routing-enable
# 在接口Vlan-interface20上配置IP地址,并使能PIM-SM。
[CEb1] interface vlan-interface 20
[CEb1-Vlan-interface20] ip address 10.11.6.1 24
[CEb1-Vlan-interface20] pim sm
[CEb1-Vlan-interface20] quit
# 在接口Vlan-interface12上配置IP地址,并使能PIM-SM。
[CEb1] interface vlan-interface 12
[CEb1-Vlan-interface12] ip address 10.11.2.2 24
[CEb1-Vlan-interface12] pim sm
[CEb1-Vlan-interface12] quit
# 配置OSPF协议。
[CEb1] ospf 1
[CEb1-ospf-1] area 0.0.0.0
[CEb1-ospf-1-area-0.0.0.0] network 10.11.0.0 0.0.255.255
[CEb1-ospf-1-area-0.0.0.0] quit
[CEb1-ospf-1] quit
配置CE a2
# 使能IP组播路由。
<CEa2> system-view
[CEa2] multicast routing-enable
# 在接口Vlan-interface30上配置IP地址,使能IGMP和PIM-SM。
[CEa2] interface vlan-interface 30
[CEa2-Vlan-interface30] ip address 10.11.7.1 24
[CEa2-Vlan-interface30] igmp enable
[CEa2-Vlan-interface30] pim sm
[CEa2-Vlan-interface30] quit
# 在接口Vlan-interface13上配置IP地址,并使能PIM-SM。
[CEa2] interface vlan-interface 13
[CEa2-Vlan-interface13] ip address 10.11.3.2 24
[CEa2-Vlan-interface13] pim sm
[CEa2-Vlan-interface13] quit
# 配置OSPF协议。
[CEa2] ospf 1
[CEa2-ospf-1] area 0.0.0.0
[CEa2-ospf-1-area-0.0.0.0] network 10.11.0.0 0.0.255.255
[CEa2-ospf-1-area-0.0.0.0] quit
[CEa2-ospf-1] quit
配置CE b2
# 使能IP组播路由。
<CEb2> system-view
[CEb2] multicast routing-enable
# 在接口Vlan-interface40上配置IP地址,使能IGMP和PIM-SM。
[CEb2] interface vlan-interface 40
[CEb2-Vlan-interface40] ip address 10.11.8.1 24
[CEb2-Vlan-interface40] igmp enable
[CEb2-Vlan-interface40] pim sm
[CEb2-Vlan-interface40] quit
# 在接口Vlan-interface14上配置IP地址,并使能PIM-SM。
[CEb2] interface vlan-interface 14
[CEb2-Vlan-interface14] ip address 10.11.4.2 24
[CEb2-Vlan-interface14] pim sm
[CEb2-Vlan-interface14] quit
# 配置Loopback1接口的IP地址,并使能PIM-SM。
[CEb2] interface loopback 1
[CEb2-LoopBack1] ip address 3.3.3.3 32
[CEb2-LoopBack1] pim sm
[CEb2-LoopBack1] quit
# 配置Loopback1接口为VPN b的C-BSR和C-RP。
[CEb2] pim
[CEb2-pim] c-bsr loopback 1
[CEb2-pim] c-rp loopback 1
[CEb2-pim] quit
# 配置OSPF协议。
[CEb2] ospf 1
[CEb2-ospf-1] area 0.0.0.0
[CEb2-ospf-1-area-0.0.0.0] network 3.3.3.3 0.0.0.0
[CEb2-ospf-1-area-0.0.0.0] network 10.11.0.0 0.0.255.255
[CEb2-ospf-1-area-0.0.0.0] quit
[CEb2-ospf-1] quit
检验配置效果
通过使用display multicast-domain vpn-instance share-group命令可以查看指定VPN实例的Share-Group组信息。
# 查看PE 1上VPN实例a中的本地Share-Group组信息。
<PE1> display multicast-domain vpn-instance a share-group local
MD local share-group information for VPN-Instance: a
Share-group: 239.1.1.1
MTunnel address: 1.1.1.1
# 查看PE 1上VPN实例b中的本地Share-Group组信息。
<PE1> display multicast-domain vpn-instance b share-group local
MD local share-group information for VPN-Instance: b
Share-group: 239.4.4.4
MTunnel address: 1.1.1.1
# 查看PE 4上VPN实例a中的本地Share-Group组信息。
<PE4> display multicast-domain vpn-instance a share-group local
MD local share-group information for VPN-Instance: a
Share-group: 239.1.1.1
MTunnel address: 1.1.1.4
# 查看PE 4上VPN实例b中的本地Share-Group组信息。
<PE4> display multicast-domain vpn-instance b share-group local
MD local share-group information for VPN-Instance: b
Share-group: 239.4.4.4
MTunnel address: 1.1.1.4
无法正确建立Share-MDT,不同PE设备上相同的VPN实例之间无法建立起PIM邻居关系。
· 在不同的PE设备上,相同的VPN实例需要配置相同的Share-Group地址,每个Share-Group地址唯一标识一个Share-MDT,如果不同PE设备上的相同VPN实例没有配置相同的Share-Group地址,则该VPN实例在不同的PE设备上无法建立起Share-MDT。
· 在不同的PE设备上,相同VPN实例的各接口必须使能相同类型的PIM协议,P设备上的所有接口必须使能相同类型的PIM协议,这样才能正确地建立Share-MDT,本地PE设备和远端PE设备的相同VPN实例上才能建立起PIM邻居关系。否则无法建立Share-MDT。
· 只有配置了BGP和单播路由,MTI接口才能自动获得IP地址;只有VPN实例内至少有一个接口上使能了PIM协议,MTI接口上的PIM协议才能被使能,从而使不同PE设备的相同VPN实例之间建立起PIM邻居。否则无法建立起PIM邻居关系。
检查Share-Group地址。使用命令display multicast-domain vpn-instance share-group检查不同PE设备上相同的VPN实例是否配置了相同的Share-Group地址。
检查各设备VPN实例内是否有至少一个接口上使能了PIM协议,不同PE设备上属于同一VPN实例的各接口上是否使能了相同类型的PIM协议,以及P设备的各接口上是否使能了相同类型的PIM协议。使用命令display pim interface verbose查看各接口上的PIM信息。
检查单播路由。使用命令display ip routing-table检查本地PE设备的VPN实例是否有到达远端PE设备的相同VPN实例的单播路由项。
检查是否配置BGP对等体。使用命令display bgp peer查看配置的BGP对等体信息。
VPN实例无法正确建立起组播路由表。
· 如果VPN实例使能的是PIM-SM,需要有该VPN实例的BSR信息,否则不能正确建立该VPN实例的组播路由表。
· 如果VPN实例使能的是PIM-SM,需要有该VPN实例的RP信息,如果没有通向RP的单播路由,公网实例和VPN实例没有正确建立起PIM邻居关系,VPN实例就无法正确建立组播路由表。
· 私网DR需要有到达私网RP的路由。
使用display pim bsr-info命令查看公网实例和VPN实例是否有BSR信息。如果不存在BSR信息,则需要查看是否有通向BSR的单播路由。
使用display pim rp-info命令查看RP信息是否正确。如果没有RP信息,则需要检查是否有通向RP的单播路由。使用display pim neighbor命令查看公网和私网上是否正确建立起了邻居关系。
使用ping命令检查私网DR与私网RP之间是否通达。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!