背景技术
组播VPN默认情况下,各PE设备之间在公网通过默认MDT(default-MDT)传输经组播隧道(MulticastTunnel,MT)封装之后的组播协议报文和组播数据报文,使用默认MDT转发的组播数据报文会发送给所有PE设备,即使接收端的PE设备所连接的私网中没有接收该组播数据报文的需求(没有接收者),也会接收到该组播数据报文,从而造成不必要的带宽浪费。
为了解决上述的带宽浪费问题,协议规定当组播数据报文(S,G)速率超过预设阈值后,由连接组播源S的PE设备发起从默认MDT向数据MDT(DataMDT)的切换,需要接收组播数据报文(S,G)的PE设备向连接组播源S的PE设备发起加入,连接组播源S的PE设备等待一个默认的间隔时间之后,组播数据报文(S,G)不再使用Share-Group封装,而是从Switch-Group地址池中分配一个单独的组播地址进行封装,这样没有接收者的PE设备不会再接收到组播数据报文(S,G)。
现有从默认MDT到数据MDT的切换的方法是以VPN内的每一条组播流量作为一个切换单位,虽然可以解决上述的带宽浪费问题,但是又会导致组播资源浪费,例如当VPN内的组播流量很多时会占用公网设备较多的组播资源,而且,当VPN内的组播流量全部切换到数据MDT后,在公网的转发路径上的每台设备上需要占用等量的组播转发表项。
为了解决现有从默认MDT到数据MDT切换导致的组播资源浪费,通常将切换地址池配置的比较小,然而这又会出现多条不同的VPN内组播流量在公网共用同一SA(切换地址),仍会导致组播流量被转发到不需要接收的PE设备,下面以图1为例进行说明。
图1是现有技术使用较小的切换地址池实现从默认MDT到数据MDT切换的方法示意图,如上图1所示,PE1、PE2、PE3分别连接不同的私网,PE1连接的私网中存在三条组播数据流(S,G1)、(S,G2)以及(S,G3)。
假设PE2所连接的私网中没有组播数据报文(S,G2)的接收者,PE3所连接的私网中没有组播数据报文(S,G1)的接收者,且由于切换地址池较小,三条不同的私网中组播数据流(S,G1)、(S,G2)、(S,G3)被分配到同一个切换地址G’。这样,当三条组播数据流被封装为(S’,G’)在公网中转发时,PE2不需要接收的组播数据报文(S,G2)仍然会被转发到PE2上,PE3不需要接收的组播数据报文(S,G1)也会被转发到PE3上,不仅占用网络带宽,而且还会因为需要对组播数据报文执行解封装处理而加重PE设备的负担。
发明内容
有鉴于此,本发明的目的在于提供一种组播分发树切换方法,该方法能够减少组播资源浪费。
为了达到上述目的,本发明提供了一种组播分发树切换方法,应用于连接包含有组播源的私网的PE设备,该方法包括:
将当前PE设备在MT接口上维护的所有PE设备作为当前PE设备的PIM邻居,计算当前PE设备的所有邻居PE设备组合;
维护当前PE设备所连接的私网中的各组播数据流对应的在MT接口上的邻居PE设备信息,根据当前PE设备维护的各组播数据流对应的在MT接口上的邻居PE设备信息确定该组播数据流符合的邻居PE设备组合;
为符合同一邻居PE设备组合的所有组播数据流分配一个切换地址SA。
本发明还提供了一种组播分发树切换装置,该装置应用于连接包含有组播源的私网的PE设备,该装置包括:计算单元、维护单元、匹配单元、分配单元;
所述计算单元,用于将所述PE设备在MT接口上维护的所有PE设备作为所述PE设备的PIM邻居,计算所述PE设备的所有邻居PE设备组合;
所述维护单元,用于维护所述PE设备所连接的私网中的各组播数据流对应的在MT接口上的邻居PE设备信息;
所述匹配单元,用于根据维护单元维护的各组播数据流对应的在MT接口上的邻居PE设备信息确定该组播数据流符合的邻居PE设备组合;
所述分配单元,用于为符合同一邻居PE设备组合的所有组播数据流分配一个切换地址SA。
综上所述,本发明中,当前PE设备维护自身所连接私网中的各组播数据流对应的在MT接口上的邻居PE设备信息,并基于该邻居PE设备信息符合的当前PE设备的邻居PE设备组合进行SA分配,使得符合相同邻居PE设备组合的所有组播数据流共用同一SA,可以有效减少SA的使用量,减少组播资源浪费。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
参见图2,图2是本发明实施例组播分发树MDT切换方法的流程示意图,本方法应用于连接包含有组播源的私网的PE设备,主要包括以下步骤:
步骤201、将当前PE设备在MT接口上维护的所有PE设备作为当前PE设备的PIM邻居,计算当前PE设备的所有邻居PE设备组合。
在组播VPN中,各PE设备会在自身的MT接口上维护一个或多个邻居PE设备,这些邻居PE设备被称为该PE设备的PIM邻居,邻居PE设备可以构成一种或多种不同的组合,邻居PE设备组合的数量由邻居PE设备的个数确定,假设邻居PE设备有n个,则会有2n-1种组合。例如在图1中,PE1的邻居PE设备包括PE2和PE3,那么,PE1共有三种邻居PE设备组合:第一种是由PE2构成的组合,第二种是由PE3构成的组合,第三种是由PE2和PE3一起构成的组合。
步骤202、维护当前PE设备所连接的私网中的各组播数据流对应的在MT接口上的邻居PE设备信息,根据当前PE设备维护的各组播数据流对应的在MT接口上的邻居PE设备信息确定符合该组播数据流符合的邻居PE设备组合。
虽然当前PE设备会在MT接口上维护一个或多个邻居PE设备,然而,对于当前PE设备所连接的私网中的每个组播数据流来说,并非所有邻居PE设备所连接的私网中均存在该组播数据流的接收者,而且该组播数据流的接收者也是随时会发生变化。为此,本实施例中,对于当前PE设备所连接的私网中的每个组播数据流,将所连接的私网中存在该组播数据流的接收者的邻居PE设备作为该组播数据流对应的在MT接口上的邻居PE设备,并记录该组播数据流对应的在MT接口上的所有邻居设备信息,同时还需根据该组播数据流的接收者的变化维护该组播数据流对应的在MT接口上的所有邻居设备信息。
PE设备可以根据PE设备从各邻居PE设备接收到的join-prune报文确定自身所连接的私网中的各组播数据流的接收者的变化情况。在实际应用中,当某一PE设备所连接的私网中开始存在某个组播数据流的接收者,或者不再存在某个组播数据流的接收者时,可以向连接包含该组播数据流的组播源的私网的PE设备发送加入-剪枝(join-prune)join-prune报文。join-prune报文中携带了发送该join-prune报文的PE设备请求加入哪些组播数据流以及剪枝哪些组播数据流,请求加入某一组播数据流表明发送该join-prune报文的PE设备所连接的私网中开始存在该组播数据流的接收者,请求剪枝某一组播数据流表明发送该join-prune报文的PE设备所连接的私网中不再存在该组播数据流的接收者。
各PE设备要实现join-prune报文的独立发送,不受其它PE设备发送join-prune报文的影响,需要使能邻居跟踪功能,为此,在本实施例中,当前PE设备以及当前PE设备的所有邻居PE设备均需要使能邻居跟踪。
维护当前PE设备所连接的私网中的各组播数据流对应的在MT接口上的邻居PE设备信息的方法具体可以为:接收到各邻居PE设备发送的加入-剪枝join-prune报文时,根据所述join-prune报文确定该邻居PE设备要加入的组播数据流和要剪枝的组播数据流,针对该邻居PE设备要加入的每个组播数据流,将该邻居PE设备信息加入到该组播数据流对应的在MT接口上的邻居PE设备信息中,针对该邻居PE设备要剪枝的每个组播数据流,将该邻居PE设备信息从该组播数据流对应的在MT接口上的邻居PE设备信息中删除。
另外,本实施例中,还根据组播数据流对应的在MT接口上的邻居PE设备信息确定该组播数据流符合的邻居PE设备组合,将由该组播数据流对应的在MT接口上的所有邻居PE设备构成的组合确定为该组播数据流符合的邻居PE设备组合。例如在图1中,假设组播数据流(S,G3)对应的在MT接口上的邻居PE设备为PE2和PE3(也就是说PE2和PE3所连接的私网中均存在组播数据流(S,G3)的接收者),那么,组播数据流(S,G3)符合的邻居PE设备组合为由PE2和PE3构成的邻居PE设备组合。
步骤203、为符合同一邻居PE设备组合的所有组播数据流分配一个切换地址(SwitchAddress,SA)。
本步骤中,为符合同一邻居PE设备组合的所有组播数据流分配一个SA的方法有两种:第一种是先为每种邻居PE设备组合分配一个SA,如果有符合该邻居PE设备组合的组播数据流,则将该SA分配该组播数据流;第二种是,只有存在符合某一邻居PE设备组合的组播数据流时,才为符合该邻居PE设备组合的所有组播数据流分配一个SA。
这里,对于符合相同邻居PE设备组合的所有组播数据流分配一个SA,使用一个SA地址实现将这些组播数据流从默认MDT向数据MDT切换,从而可以大大减少SA的使用量,特别是在PE设备数量比较少而组播数据流又比较多的情况下,能够大大减少SA的使用量,而且可以降低公网存储数据MDT状态的负荷以及PE设备的负载。例如在图1中,由于PE1的邻居PE设备组合只有三种,因此无论PE1所连接的私网中存在多少条组播数据流,这些组播数据流符合的组合只可能是三种中的任何一种,因此,最多需要三个SA地址即可实现PE1所连接的私网中所有组播数据流从默认MDT到数据MDT的切换。
当前PE设备为符合同一邻居PE设备组合的所有组播数据流分配一个SA后,当前PE设备就可以开始执行对各组播数据流进行从默认MDT到数据MDT的切换,从而使得各邻居PE设备不会再接收到不存在接收者的组播数据流。
图2所示本发明实施例中,由于组播数据流的接收者会发生变化,因此需要检测组播数据流对应的在MT接口上的邻居PE设备的变化情况,当检测到当前PE设备维护的任一组播数据流对应的在MT接口上的邻居PE设备信息变化时,可以根据该组播数据流对应的在MT接口上的改变后的邻居PE设备信息确定该组播数据流符合的邻居PE设备组合,并根据该邻居PE设备组合为该组播数据流重新分配SA地址。这里,根据该邻居PE设备组合为该组播数据流重新分配SA地址的方法根据步骤203所述的为符合同一邻居PE设备组合的所有组播数据流分配一个SA的方法的不同而不同,如果第一种方法,则只需将原本分配给该邻居PE设备组合的SA地址分配给该组播数据流,如果采用第二种方法,则需要判断原来是否已经存在符合该邻居PE设备组合的组播数据流,如果是,则可以将原本分配给符合该邻居PE设备组合的所有组播数据流的SA分配给该组播数据流,如果否,则该组播数据流重新分配SA,此后符合该邻居PE设备组合的组播数据流均会被分配该SA。
实际上,当检测到当前PE设备维护的任一组播数据流对应的在MT接口上的邻居PE设备信息变化时,也可以重新为符合当前PE设备的各邻居PE设备组合的所有组播数据流全部重新分配SA。
以上对本发明实施例MDT切换方法进行了详细说明,本发明还提供了一种MDT切换装置,应用于连接包含有组播源的私网的PE设备,下面结合图3进行详细说明。
图3是本发明实施例提供的MDT切换装置的结构示意图,如图3所示,该MDT切换装置包括:计算单元301、维护单元302、匹配单元303、分配单元304;其中,
计算单元301,用于将所述PE设备在MT接口上维护的所有PE设备作为所述PE设备的PIM邻居,计算所述PE设备的所有邻居PE设备组合;
维护单元302,用于维护所述PE设备所连接的私网中的各组播数据流对应的在MT接口上的邻居PE设备信息;
匹配单元303,用于根据维护单元302维护的各组播数据流对应的在MT接口上的邻居PE设备信息确定该组播数据流符合的邻居PE设备组合;
分配单元304,用于为符合同一邻居PE设备组合的所有组播数据流分配一个切换地址SA。
上述装置中,
所述PE设备以及所述PE设备的所有邻居PE设备均使能了邻居跟踪;
所述维护单元302在维护当前PE设备所连接的私网中的各组播数据流对应的在MT接口上的邻居PE设备信息时,用于:接收到各邻居PE设备发送的加入-剪枝join-prune报文时,根据所述join-prune报文确定该邻居PE设备要加入的组播数据流和要剪枝的组播数据流,针对该邻居PE设备要加入的每个组播数据流,将该邻居PE设备信息加入到该组播数据流对应的在MT接口上的邻居PE设备信息中,针对该邻居PE设备要剪枝的每个组播数据流,将该邻居PE设备信息从该组播数据流对应的在MT接口上的邻居PE设备信息中删除。
上述装置中,
所述维护单元302,进一步用于检测所述PE设备维护的各组播数据流对应的在MT接口上的邻居PE设备信息是否发生变化;
所述匹配单元303,进一步用于维护单元302检测到所述PE设备维护的任一组播数据流对应的在MT接口上的邻居PE设备信息发生变化时,根据该组播数据流对应的在MT接口上的改变后的邻居PE设备信息确定该组播数据流符合的邻居PE设备组合;
所述分配单元304,进一步用于在匹配单元303确定所述任一组播数据流对应的在MT接口上的改变后的邻居PE设备信息符合的邻居PE设备组合后,根据该邻居PE设备组合为该组播数据流重新分配SA地址。
上述装置中,所述匹配单元303在根据组播数据流对应的在MT接口上的邻居PE设备信息确定该组播数据流符合的邻居PE设备组合时,用于:将由该组播数据流对应的在MT接口上的所有邻居PE设备构成的组合确定为该组播数据流符合的邻居PE设备组合。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。