NG MVPN公网隧道原理
NG MVPN在公网中通过BGP传递路由,并基于MPLS P2MP建立承载组播流量的组播VPN隧道。
- 域内非分段NG MVPN:跨越的公网属于一个AS域内,且仅部署了一种MPLS协议。
- 域内分段NG MVPN:跨越的公网属于一个AS域内,但包含多个的Area,相邻的Area中部署了不同的MPLS协议。
- 跨域非分段NG MVPN:跨越的公网包含多个AS域,但均部署了同一种MPLS协议。
-
MVPN成员自动发现是同一个MVPN的不同PE之间能够进行控制消息交互并创建PMSI隧道转发私网组播数据流量的基础。只有Sender PE与Receiver PE直接或间接建立BGP MVPN邻居之后,Sender PE与Receiver PE之间才能够相互发送MVPN NLRI,从而建立起PMSI隧道。在NE20E的实现中,采用BGP作为PE之间传递控制消息的信令。
-
PMSI隧道是公网用来转发私网组播数据流量的逻辑通道。对于非分段场景,Sender PE与Receiver PE会通过一条PMSI隧道承载组播流量。对于分段场景,Sender PE与Receiver PE会通过多条相连的PMSI隧道承载组播流量。
-
在部署S-PMSI隧道后,当组播数据流量的转发速率达到阈值,组播数据流量将从I-PMSI隧道切换到S-PMSI转发。相对于I-PMSI隧道,S-PMSI没有冗余的数据流量,因此节省了带宽资源,同时也减轻了PE设备的处理负担。
-
公网PMSI隧道创建成功后,组播用户可以加入组播组,向组播源申请组播服务。组播源可以通过PMSI隧道向组播用户发送组播流量。
PMSI
公网隧道是运营商网络上用来传递私网组播数据流量的通道。NE20E目前支持MPLS创建的RSVP-TE P2MP隧道和mLDP P2MP隧道作为公网隧道。两种隧道的区别如表8-15所示。
公网隧道 |
创建隧道方式 |
特点 |
---|---|---|
RSVP-TE P2MP隧道 |
从根节点开始创建。 |
支持带宽预留,服务质量高。当对服务质量要求较高时请选择RSVP-TE P2MP隧道。 |
mLDP P2MP隧道 |
从叶子节点开始创建。 |
不支持带宽预留,在网络拥塞时,服务质量低。相对于RSVP-TE P2MP隧道,mLDP P2MP隧道配置比较简单,因此如果对服务质量要求不高时,可以选择mLDP P2MP隧道。 |
一个公网隧道可以只承载一个MVPN的数据流量,也可以承载多个MVPN的数据流量。目前NE20E仅支持一个公网隧道承载一个MVPN的数据流量。
- 非分段隧道中,Sender PE到Receiver PE之间的公网使用同一种MPLS协议,所以可以使用一种MPLS P2MP隧道建立PSMI逻辑隧道承载组播流量。
- 分段隧道中,Sender PE和Receiver PE之间的公网中不同区域使用不同MPLS协议,这就需要在不同区域中根据其MPLS协议类型,基于不同类型的MPLS P2MP隧道建立PMSI隧道,同时通过在不同区域的连接节点上配置隧道粘连,将不同区域中的不同PMSI隧道粘连在一起,共同承载一个MVPN的数据流量。目前NE20E仅支持在单AS场景下的域内分段隧道,不支持跨AS场景下的跨域分段隧道。
MVPN Target
- Export MVPN Target:本地PE的MVPN实例中设置Export MVPN Target后,随MVPN A-D路由发布。
- Import MVPN Target:PE收到其它PE发布的MVPN A-D路由时,检查其Export MVPN Target属性。当此属性与此PE上某个VPN实例的Import MVPN Target匹配时,接收MVPN A-D路由,并记录MVPN成员。如果不匹配,则丢弃此路由。
在未配置MVPN Target时,组播VPN默认使用单播VPN的VPN Target。如果组播VPN的拓扑与单播VPN的拓扑相同时,不需要配置MVPN Target;如果不一样,则需要另外配置MVPN Target。
MVPN成员自动发现
为了使处于同一个MVPN的不同PE之间能够进行控制消息交互并创建隧道转发私网组播数据流量,每个PE都需要发现属于同一MVPN的其他PE,这个过程称为自动发现(Auto-Discovery),NG MVPN采用BGP的方式实现自动发现,为此BGP定义了新的BGP-MVPN地址族。
如图8-24所示,在PE1、PE2和PE3上配置了BGP与MVPN以后,PE1与PE2、PE1与PE3就可以自动协商建立BGP-MVPN地址族下的BGP邻居关系(下文简称BGP MVPN邻居),同时PE1、PE2和PE3也处于同一个MVPN中。当运营商骨干网络新增PE设备时,只要和现有PE设备建立BGP MVPN邻居关系,就加入了该MVPN,可以与其他BGP MVPN邻居交换MVPN信息。
通常情况下,由于组播数据流量是在组播源和组播接收者之间传递,所以所有的Sender PE都应该与所有的Receiver PE之间建立BGP MVPN邻居关系。例如在图8-24中,PE1是Sender PE,而PE2和PE3是Receiver PE,所以PE2和PE3都与PE1建立了BGP MVPN邻居关系。
在NG MVPN里,处于一个MVPN的PE之间通过相互发送BGP Update消息来交换MVPN信息,MVPN信息是携带在BGP Update消息中的网络层可达信息NLRI(Network Layer Reachable Information)字段,携带MVPN信息的NLRI也称为MVPN NLRI,详细请参考MVPN NLRI。
I-PMSI隧道建立
- RSVP-TE P2MP隧道:Sender PE与Receiver PE相互发送Intra-AS PMSI A-D route。Sender PE收集P2MP隧道的叶子信息,并根据同一MVPN的叶子信息,构建RSVP-TE P2MP隧道。隧道的建立过程请参见《NE20E 特性描述-MPLS》中的“P2MP TE”。
- mLDP P2MP隧道:Receiver PE根据Sender PE发送的Intra-AS PMSI A-D route里携带的根节点地址(Sender PE的地址)和Opaque Value,直接发送mapping消息,建立mLDP P2MP隧道。隧道的建立过程请参见《NE20E 特性描述-MPLS》中“mLDP”。
以图8-25为例讲述PMSI隧道的建立。由于RSVP-TE P2MP隧道和mLDP P2MP隧道的创建方式不同,因此分RSVP-TE P2MP隧道和mLDP P2MP隧道这两种场景来描述PMSI隧道建立。
- PE1与PE2和PE3分别建立BGP-MVPN地址族下的BGP邻居关系,而PE2和PE3之间不建立BGP-MVPN地址族下的BGP邻居关系。
- 网络管理员依次对PE1、PE2和PE3进行操作完成NG MVPN功能的部署。
RSVP-TE P2MP隧道
由图8-26可以看出,当公网采用RSVP-TE P2MP隧道时,创建I-PMSI的过程可以概括为表8-17。
步骤 |
设备 |
前提条件 |
关键动作 |
---|---|---|---|
PE1 |
网络管理员在PE1上配置MVPN和BGP,并且配置PE1作为Sender PE,配置MVPN的I-PMSI隧道类型是RSVP-TE P2MP。 |
作为Sender PE,PE1开始创建I-PMSI隧道。PE1的MPLS模块为RSVP-TE P2MP隧道预留隧道资源,但是由于此时PE1不知道P2MP隧道的叶子信息,所以P2MP隧道实际并没有真正建立。 |
|
PE1 |
网络管理员在PE2上配置MVPN和BGP,然后PE1和PE2建立了BGP-MVPN地址族下的BGP邻居。 |
PE1通过BGP邻居关系向PE2发送1类路由BGP A-D route,该路由携带以下信息:
|
|
PE2 |
- |
|
|
PE1 |
- |
PE1收到PE2发送的BGP A-D route后,根据PE1的import mvpn-target匹配,通过RT匹配,接收此A-D路由,记录MVPN成员PE2,并且通知MPLS向PE2发消息,并且增加叶子节点PE2。 |
|
PE1 |
- |
PE1上MPLS模块收到PE2回复的消息后,增加叶子完成,创建根节点为PE1,叶子节点为PE2的RSVP-TE P2MP隧道。隧道的具体建立过程请参见《NE20E 特性描述-MPLS》中的“P2MP TE”。 |
|
PE2 |
- |
PE2收到MPLS消息后,感知创建隧道成功,加入RSVP-TE P2MP隧道。 |
同理,待网络管理员按照配置PE2的方法在PE3上配置MVPN和BGP后,P2MP隧道PE3叶子节点添加成功,PE3也实际加入了以PE1为根的RSVP-TE P2MP隧道。至此MVPN网络中各PE的I-PMSI隧道创建完成,可以为用户提供MVPN服务了。
mLDP P2MP隧道
由图8-27可以看出,当公网采用mLDP P2MP隧道时,创建I-PMSI的过程可以概括为表8-18。
步骤 |
设备 |
前提条件 |
关键动作 |
---|---|---|---|
PE1 |
网络管理员在PE1上配置MVPN和BGP,并且配置PE1作为Sender PE,配置MVPN的I-PMSI隧道类型是mLDP P2MP。 |
作为Sender PE,PE1开始创建I-PMSI隧道。PE1的MPLS模块创建P2MP mLDP隧道,预留隧道资源FEC信息(Opaque Value和根节点地址),但是由于此时PE1不知道P2MP隧道的叶子信息,所以此时隧道实际并没有真正建立。 |
|
PE1 |
网络管理员在PE2上配置MVPN和BGP,然后PE1和PE2建立了BGP-MVPN地址族下的BGP邻居。 |
PE1通过BGP邻居关系向PE2发送1类路由BGP A-D route,该路由携带以下信息:
|
|
PE2 |
- |
PE2收到PE1发送的BGP A-D route后,由于BGP A-D route中的PMSI隧道属性信息里指定是mLDP类型隧道,需要从叶子建立隧道,所以PE2上MPLS模块开始向PE1发送Mapping消息。 PE2收到PE1回复的MPLS消息,感知P2MP隧道创建成功。隧道的具体建立过程请参见《NE20E 特性描述-MPLS》中的“mLDP”。 |
|
PE2 |
- |
PE2创建以PE1为根的mLDP P2MP隧道。 |
|
PE2 |
- |
PE2发送BGP A-D route给PE1。由于PE2处于Receiver site,没有配置PMSI隧道信息,因此A-D route不包含PMSI隧道属性信息。RT设置为PE2配置的export mvpn-target。 PE1收到PE2发送的BGP A-D route后,通过PE1的import mvpn-target匹配,记录MVPN成员PE2。PE1和PE2加入到同一个MVPN。 |
同理,待网络管理员按照配置PE2的方法在PE3上配置MVPN和BGP后,P2MP隧道PE3叶子节点添加成功,PE3也实际加入了以PE1为根的mLDP P2MP隧道。至此MVPN网络中各PE的I-PMSI隧道创建完成,可以为用户提供MVPN服务了。
S-PMSI隧道切换
产生原因
在NG MVPN(Next Generation MVPN)网络中,组播数据流量是通过I-PMSI(Inclusive-Provider Multicast Service Interface)隧道传递到组播用户中的。由于I-PMSI是指与属于同一个MVPN的所有PE全集相连的PMSI,因此所有属于同一个MVPN的PE无论其是否有下游接收者,都会接收到组播数据流量。但是可能并不是所有PE站点都有接收者存在,这样就会造成网络中有冗余的数据流量,浪费带宽,同时也增加了PE的处理负担。
S-PMSI(Selective-PMSI)隧道切换可以解决上述问题。S-PMSI是指与属于同一个MVPN的特定源组的Sender PE和Receiver PE构成的子集相连的PMSI,即组播数据流量从I-PMSI隧道切换到S-PMSI隧道后,只有需要组播数据流量的PE才能接收。因此,S-PMSI隧道没有冗余的数据流量,节省了带宽资源,同时也减轻了PE设备的处理负担。
实现过程
以图8-28为例讲述S-PMSI隧道切换过程。假设I-PMSI隧道已经建立完成。
项目 |
发生条件 |
说明 |
---|---|---|
I-PMSI向S-PMSI切换 | 组播数据流量的转发速率一直高于设置的阈值。 |
由于S-PMSI隧道类型也分RSVP-TE P2MP隧道和mLDP P2MP隧道,因此分别描述两者的S-PMSI隧道切换过程:
|
S-PMSI向I-PMSI回切 | 组播数据流量的转发速率一直低于设置的阈值。 |
- |
- 当组播数据流量已经完成I-PMSI向S-PMSI切换,此时S-PMSI隧道发生故障;由于I-PMSI仍然可用,此时流量会由S-PMSI回切到I-PMSI。
- 当组播数据流量已经完成I-PMSI向S-PMSI切换,此时I-PMSI隧道发生故障,即使组播数据流量持续低于阈值,也需要在S-PMSI上继续接收流量。
I-PMSI向S-PMSI切换
I-PMSI向S-PMSI切换(S-PMSI隧道使用RSVP-TE P2MP)
由图8-29可以看出,当采用RSVP-TE P2MP隧道时,I-PMSI向S-PMSI切换的过程可以概括为表8-20。
表8-20 采用RSVP-TE P2MP隧道时的S-PMSI切换过程步骤
设备
关键动作
PE1
PE1感知到组播数据流量的转发速率超过阈值,发起I-PMSI隧道向S-PMSI切换。PE1向BGP Peer发送BGP S-PMSI A-D route。该BGP S-PMSI A-D route的Leaf Information Require置为1,即要求叶子节点PE汇报加入信息,同时PE1携带PMSI隧道信息。
PE2
PE2收到BGP S-PMSI A-D route后,由于PE2下游存在接收者,则PE2向PE1发送BGP Leaf A-D route。同时PE2加入S-PMSI A-D route所携带的S-PMSI隧道。
PE3
PE3收到BGP S-PMSI A-D route,由于PE3下游不存在接收者,则PE3不发送BGP Leaf A-D route,但记录该路由。PE3也不加入S-PMSI A-D route所携带的S-PMSI隧道。
PE1
PE1收到PE2发送的BGP Leaf A-D route后,感知到组播数据流量接收站点是PE2,则创建以PE1为根,PE2为叶子的S-PMSI隧道。
PE2
PE2感知到隧道创建成功,加入RSVP-TE P2MP隧道。
如果经过一段时间,PE3也存在私网用户的加入,则PE3发送BGP Leaf A-D route。PE1收到该路由后增加P2MP隧道叶子节点。最终组播数据流量到达PE3下游的接收者。
I-PMSI向S-PMSI切换(S-PMSI隧道使用mLDP P2MP)
由图8-30可以看出,当采用mLDP P2MP隧道时,I-PMSI向S-PMSI切换的过程可以概括为表8-21。
表8-21 采用mLDP P2MP隧道时的S-PMSI切换过程步骤
设备
关键动作
PE1
PE1感知到组播数据流量的转发速率超过阈值,发起I-PMSI向S-PMSI隧道切换。PE1向BGP Peer发送BGP S-PMSI A-D route。该A-D route的Leaf Information Require不置位。
PE2
PE2收到PE1发送的BGP S-PMSI A-D route后,由于PE2下游存在接收者,则PE2直接加入S-PMSI A-D route所携带的S-PMSI隧道。
PE3
PE3收到PE1发送的BGP S-PMSI A-D route后,由于PE3下游不存在接收者,则不加入S-PMSI A-D route所携带的S-PMSI隧道。
如果经过一段时间,PE3下游也存在接收者,则PE3直接加入S-PMSI隧道。最终组播数据流量到达PE3下游的接收者。
S-PMSI隧道创建成功后,PE1等待S-PMSI切换定时器超时后(如果隧道创建不成功,则一直使用I-PMSI转发组播数据;如果在S-PMSI切换延迟定时器超时前,组播数据流量的转发速率又低于阈值,则继续使用I-PMSI转发数据。如果这段时间内,组播数据流量的转发速率没有低于阈值,则发起S-PMSI隧道切换),PE1将组播数据流量切换到用S-PMSI发送。最终PE2收到组播数据流量,PE3收不到组播数据流量。
S-PMSI向I-PMSI回切
由图8-31可以看出,组播数据流量切换到S-PMSI隧道后,当组播数据流量的转发速率低于阈值时,PE1就会从S-PMSI隧道回切到I-PMSI隧道。S-PMSI向I-PMSI回切的过程可以概括为表8-22。
步骤 |
设备 |
关键动作 |
---|---|---|
PE1 |
当PE1感知到组播数据流量的转发速率持续低于阈值时,PE1启动S-PMSI回切定时器。在定时器超时前:
|
|
PE2 |
PE2收到PE1发送的BGP Withdraw S-PMSI A-D route后,假如原来PE2发送过BGP Leaf A-D route,还需要向PE1发送BGP Withdraw Leaf A-D route。 |
|
PE2 |
PE2发现没有其它组播表项与该S-PMSI隧道有绑定关系,PE2离开S-PMSI隧道。 |
|
PE1 |
PE1等待一定时间以后,删除S-PMSI隧道。 |
- 在定时器超时前,叶子节点PE删除隧道保护组,不检查I-PMSI或S-PMSI主隧道状态。叶子节点PE接收主隧道的组播数据流量,丢弃备隧道的组播数据流量。
- 在定时器超时后,叶子节点PE重新开始检查I-PMSI或S-PMSI主隧道状态。只有主隧道状态为Up,叶子节点PE才接收I-PMSI或S-PMSI主隧道的组播数据流量,否则叶子节点PE接收备隧道的组播数据流量。
NG MVPN传递组播流量
公网PMSI隧道创建成功后,当有组播用户成功加入组播组,运营商就可以利用BGP/MPLS IP VPN网络为用户提供MVPN服务。
在叶子节点PE上一条P2MP隧道仅支持映射到单个VPN实例,因此在叶子节点PE上不能配置入方向VPN-Target扩展团体属性相同的多个VPN实例,如果叶子节点PE上出现了入方向VPN-Target扩展团体属性相同的多个VPN实例,在该叶子节点PE上仅一个VPN实例的下游节点可以收到组播流量。
NG MVPN的数据传递过程可以总结为表8-23。
步骤 |
设备 |
动作 |
组播转发表信息 |
---|---|---|---|
1 |
CE1 |
从组播源接收IP组播数据流量,然后查找组播转发表,将组播数据流量传递给PE1。 |
|
2 |
PE1 |
查找相应VPN实例组播转发表里(C-S, C-G)对应的私网转发表项,给私网IP组播数据流量打上MPLS标签,将报文导入P2MP隧道。PE1根据MPLS标签信息将MPLS报文发送给P。 |
|
3 |
P |
P收到MPLS报文后,去掉MPLS报文的外层标签,进行组播数据流量的复制,然后分别打上MPLS标签,转发给PE2和PE3。 |
- |
4 |
PE2/PE3 |
PE2/PE3收到MPLS报文后,去掉MPLS标签。根据P2MP隧道与VPN实例的对应关系,查找该VPN实例组播转发表里(C-S, C-G)对应的私网转发表项,然后将IP组播数据流量转发到CE2/CE3。 |
|
5 |
CE2/CE3 |
CE2/CE3收到IP组播数据流量,查找组播转发表,将数据向该组播组内的所有接收者转发。 |
NG MVPN在公网的典型部署场景
- 域内非分段场景:跨越的公网属于一个AS域内,且仅部署了一种MPLS协议。
- 跨域非分段场景:跨越的公网包含多个AS域,但均部署了同一种MPLS协议。
- 域内分段场景:跨越的公网属于一个AS域内,但包含多个的Area,相邻的Area中部署了不同的MPLS协议。
域内非分段场景
- PE之间建立I-BGP邻居。
- PE中部署MVPN,实现同一个MVPN中的PE可以相互自动发现,并利用BGP传递BGP C-multicast路由。
- 配置P2MP隧道,并利用BGP相互传递BGP A-D路由,使PE1和PE2之间可以基于P2MP隧道建立PMSI隧道,传递组播流量。
跨域非分段场景
跨域场景支持Option A、Option B和Option C三种方式的VPN。其中Option A方式中,ASBR相互将对方作为CE,建立过程与域内非分段场景类似。
- PE与同AS中的ASBR建立IBGP邻居,不同AS的ASBR相互建立EBGP邻居。
- PE中部署MVPN,实现同一个MVPN中的PE可以相互自动发现,并利用BGP通过ASBR传递BGP C-multicast路由。
- 配置P2MP隧道,并利用BGP经过ASBR相互传递BGP A-D路由,使PE1和PE2之间可以基于P2MP隧道建立PMSI隧道,传递组播流量。
- PE与同AS中的ASBR建立IBGP邻居,不同AS的ASBR相互建立EBGP邻居。PE1与PE2之间建立MP-EBGP邻居。
- PE中部署MVPN,实现同一个MVPN中的PE可以相互自动发现,并利用BGP跨过ASBR直接传递BGP C-multicast路由。
- 配置P2MP隧道,并利用BGP跨过ASBR直接相互传递BGP A-D路由,使PE1和PE2之间可以基于P2MP隧道建立PMSI隧道,传递组播流量。
域内分段场景
- PE与ABR之间建立I-BGP邻居。
- PE中部署MVPN,实现同一个MVPN中的PE可以相互自动发现,并利用BGP传递BGP C-multicast路由。
- 配置P2MP隧道,并利用BGP相互传递BGP A-D路由,使PE1与ABR之间基于P2MP隧道建立PMSI隧道,ABR与PE2也基于P2MP隧道建立PMSI隧道,两个隧道在ABR节点粘连,共同完成有PE1向PE2传递组播流量。