CN104579980A - 一种组播数据报文转发方法及设备 - Google Patents
一种组播数据报文转发方法及设备 Download PDFInfo
- Publication number
- CN104579980A CN104579980A CN201310493796.4A CN201310493796A CN104579980A CN 104579980 A CN104579980 A CN 104579980A CN 201310493796 A CN201310493796 A CN 201310493796A CN 104579980 A CN104579980 A CN 104579980A
- Authority
- CN
- China
- Prior art keywords
- multicast
- router
- message
- port
- igmp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提供了一种组播数据报文转发方法和装置,其中该方法包括:获取组播组在每个虚拟局域网内的指定路由器;以每个指定路由器为树根计算一个多链接半透明互联TRILL组播树;根据每个TRILL组播树计算一个朝向指定路由器的路由器端口;接收组播数据报文,确定组播数据报文的VLAN?ID和组播组地址对应的路由器端口;如果确定的朝向指定路由器的路由器端口不同于组播数据报文的入接口,则通过确定的朝向指定路由器的路由器端口发送组播数据报文。
Description
技术领域
本发明涉及通信领域的组播技术,尤其涉及一种组播数据报文转发方法及设备。
背景技术
目前,数据中心可采用TRILL(Transparent Interconnection of Lots of Links,多链路透明互联)、SPB(Shortest Path Bridging,最短路径桥)、Vxlan(VirtualExtended VLAN,虚拟扩展虚拟局域网)等大二层网络技术构建数据中心的二层网络。
在利用上述大二层网络技术构建的数据中心内,设备可利用IGMP协议报文维护路由器端口(Router Port)和成员端口,构建组播转发表项用来转发组播数据报文。
发明内容
本发明实施例提供一种数据中心内的组播数据报文转发方法及装置,用以在数据中心的TRILL网络转发不带TRILL封装的初始格式的组播数据报文。
为实现上述目的,本发明提供了一种组播数据转发方法和装置,该方法包括获取组播组在每个虚拟局域网VLAN内的指定路由器;以每个指定路由器为树根计算一个多链接半透明互联TRILL组播树;根据每个TRILL组播树计算一个朝向指定路由器的路由器端口;接收组播数据报文,确定组播数据报文的VLAN ID和组播组地址对应的路由器端口;如果确定的朝向指定路由器的路由器端口不同于组播数据报文的入接口,则通过确定的朝向指定路由器的路由器端口发送组播数据报文。
为实现上述目的,本发明还提供了一种组播数据报文转发装置,该装置包括:组播协议处理单元,用于获取获取组播组在每个虚拟局域网VLAN内的指定路由器;以每个指定路由器为树根计算一个多链接半透明互联TRILL组播树;根据每个TRILL组播树计算一个朝向指定路由器的路由器端口;组播数据处理单元,用于接收组播数据报文,确定组播数据报文的VLAN ID和组播组地址对应的路由器端口;如果确定的朝向指定路由器的路由器端口不同于组播数据报文的入接口,则通过确定的朝向指定路由器的路由器端口发送组播数据报文。
本发明的有益效果在于,不仅利用网络拓扑维护路由器端口(router port),还可以在用于将数据中心的TRILL内转发非TRILL封装格式的初始格式组播数据报文。
附图说明
图1是本发明实施例提供的组播数据报文的转发流程示意图;
图2是本发明一实施例提供的数据中心的TRILL组网架构示意图;
图3A-3B是图2中各指定路由器为树根的TRILL组播树的示意图;
图4是往图2中外部汇聚点路由器发送PIM注册报文的示意图;
图5所示为图2中内部组播源的组播数据报文发往外部汇聚点路由器和内部组播接收端的示意图;
图6是本发明另一实施例提供的数据中心的TRILL组网架构示意图;
图7A-7B是图6中各指定路由器为树根的TRILL组播树示意图;
图8是往图6中外部汇聚点路由器发送PIM注册报文的示意图;
图9A是图6中内部组播源的组播数据报文发往外部汇聚点路由器和内部组播接收端的示意图;
图9B是图6中备份指定路由器将内部组播源的组播数据报文发往外部汇聚点路由器和内部组播接收端的示意图;
图10是本发明实施例提供组播报文转发装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
图1所示数据中心内组播源的组播数据报文的转发包括以下步骤:
步骤101,获取组播组在每个虚拟局域网VLAN内的指定路由器。
步骤102,以每个指定路由器为树根计算一个多链接半透明互联TRILL组播树。
步骤103,根据每个TRILL组播树计算一个朝向指定路由器的路由器端口。
步骤104,接收组播数据报文。
步骤105,判断组播数据报文的VLAN ID和组播组地址对应的路由器端口与组播数据报文的入接口是否相同,若否,则执行步骤106。
步骤106,通过朝向指定路由器的路由器端口发送组播数据报文。
通过图1所示的组播数据报文转发方法可应用于数据中心内部的非网关路由桥,譬如接入层的路由网桥或汇聚层的路由桥。非网关路由桥将来自内部组播源的组播数据通过关联的路由器端口发往组播源所在虚拟局域网的指定路由器,而不需进行进行封装。
如图2所示的数据中心内,核心层的四台网关路由桥spine1~spine4根据VRRP(虚拟路由器冗余)协议执行邻居发现和主设备选举,构成为一个VRRP路由器作为VLAN1和VLAN2的网关。路由桥spine1~spine4均处于激活(active)状态,参与转发VLAN1和VLAN2的数据转发。
网关路由桥spine1~spine4以及接入层的非网关路由桥leaf1~leaf6运行IGMP snooping(IGMP窥探,简称IGSP)协议。路由桥spine1~spine4还运行IGMP(Internet Group Management Protocol,互联网组管理协议)协议和PIM(Protocol Independent Multicast,协议无关组播)协议。
路由桥spine3是VLAN1内组播组G2的指定路由器,路由桥spine4是VLAN2内组播组G2的指定路由器。路由桥spine3是VLAN2内组播组G2的备份指定路由器;路由桥spine4是VLAN1内组播组G2的备份指定路由器。
路由桥spine3~spine4之间建立用于PIM协议的BFD(BidirectionalForwarding Detection,双向转发检测)对话。如果,路由桥spine3检测到路由桥spine4故障,路由桥spine3作为VLAN2内组播组G2的指定路由器进行工作。路由桥spine4执行类似的处理。
为了方便描述,路由桥spine1连接路由桥leaf1、leaf2、leaf3、leaf4、leaf5以及leaf6的六个端口分别命名为端口spine1_P1、spine1_P2、spine1_P3、spine1_P4、spine1_P5、spine1_P6。路由桥spine2~spine4各自连接路由桥leaf1~leaf6的端口的命名方式以此类推。
路由桥leaf1连接路由桥spine1、spine2、spine3、spine4的四个端口分别命名为端口leaf1_P1、leaf1_P2、leaf1_P3、leaf1_P4。路由桥leaf2~leaf6各自连接路由桥spine1~spine4的端口的命名方式以此类推。
路由桥leaf4连接终端client2和client3的两个端口分别命名为端口leaf4_Pa、leaf4_Pb;路由桥leaf5连接终端client4的端口命名为端口leaf5_Pa。
出口路由器201连接路由桥spine3和spine4的端口被分别命名为端口P3、P4,出口路由器201连接汇聚点RP202方向的上游组播路由器的端口被命名为P22。
出口路由器201的上游组播路由器可以是一个组播路由器也可以是汇聚点(RP,Rendezvous Point)路由器202。
路由桥spine1~spine4以及路由桥leaf1~leaf6都知道VLAN1内组播组G2的指定路由器是路由桥spine3,VLAN2内组播组G2的指定路由器是路由桥spine4。
路由桥spine1~spine4可通过通知的方式,组播组在各VLAN内的指定路由器信息在TRILL网络内通告给所有路由桥。
譬如:路由桥spine3在TRILL网络内通知组播组G2的组播源在数据中心的VLAN1、VLAN1内组播组G2的指定路由器的nickname是路由桥spine3的nickname13。路由桥spine4在TRILL网络内通知VLAN2内组播组G2的指定路由器的nickname是路由桥spine4的nickname14。
路由桥spine1~spine4以及路由桥leaf1~leaf6分别以指定路由器的nickname计算TRILL组播树。
图3A所示为指定路由器spine3为树根的TRILL组播树;图3B所示为指定路由器spine4为树根的TRILL组播树。
路由桥spine1~spine4以及路由桥leaf1~leaf6根据图3A和3B所示的TRILL组播树,计算朝向DR的路由器端口。
朝向DR的路由器端口:TRILL组播树上的到达指定路由器(树根)的TRILL路径上的本地端口。
以图3A所示的组播树为例上,路由桥spine1到路由桥spine3的TRILL路径为spine1->leaf1->spine3,该TRILL路径上的spine1的本地端口是spine1_P1,即路由桥spine1计算的朝向DR的路由器端口为spine1_P1;路由桥spine2到路由桥spine3的TRILL路径为spine2->leaf1->spine3,该TRILL路径上的spine2的本地端口是spine2_P1,即路由桥spine2计算的朝向DR的路由器端口为spine2_P1;路由桥spine3到自身的TRILL路径为回环口,即,路由器spine3计算的朝向DR的路由器端口为空(null);路由桥spine4到路由桥spine3的TRILL路径为spine4->leaf1->spine3,该TRILL路径上的spine4的本地端口是spine4_P1,即路由桥spine4计算的朝向DR的路由器端口是spine4_P4。
路由桥spine1根据图3A-3B所示的TRILL组播树计算的朝向DR的路由器端口如表1.1所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | spine1_P1 |
V2 | G2 | spine1_P1 |
表1.1
路由桥spine2根据图3A-3B所示的TRILL组播树计算的朝向DR的路由器端口如表1.2所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | spine2_P1 |
V2 | G2 | spine2_P1 |
表1.2
路由桥spine3根据图3A-3B所示的TRILL组播树计算的朝向DR的路由器端口如表1.3所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | null |
V2 | G2 | spine3_P1 |
表1.3
路由桥spine4根据图3A-3B所示的TRILL组播树计算的朝向DR的路由器端口如表1.4所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | spine4_P1 |
V2 | G2 | null |
表1.4
路由桥leaf4根据图3A-3B示的TRILL组播树计算的朝向DR的路由器端口如表1.5所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | leaf4_P3 |
V2 | G2 | leaf4_P4 |
表1.5
路由桥leaf5根据图3A-3B所示的TRILL组播树计算的朝向DR的路由器端口如表1.6所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | leaf5_P3 |
V2 | G2 | leaf5_P4 |
表1.6
路由桥spine1-spine4、出口路由器201各自周期性的发送PIM hello报文。
组播源(S2,G2,V1)位于TRILL网络内的VLAN1,组播组G2在VLAN1内的指定路由器,即路由桥spine3,在PIM hello报文携带组播源IP地址S2以及组播组地址G2。
出口路由器201收到路由桥spine3发送的PIM hello报文后,基于PIM hello报文携带的(S2,G2)未查找到对应的RPF端口。出口路由器201根据PIM hello报文携带的(S2,G2)以及PIM hello报文的接收端口P3,记录组播源与RPF端口对应关系。
出口路由器201记录的“组播源与RPF端口对应关系”如表2.1所示。
组播源IP地址 | 组播组 | RPF端口 |
S2 | G2 | P3 |
表2.1
图4示出了向图2的外部RP路由器发送PIM注册报文的过程。
位于数据中心的VLAN1内的组播组G2的组播源(S2,G2,V1)发送组播数据报文。
路由桥leaf4收到的组播数据报文,没有查询到(VLAN1,G2)关联的组播表项,则新建组播表项(S2,G2,V1),在出接口(outgoing-interface)中添加朝向DR路由器端口leaf4_P3(请参见表1.5)。
路由桥leaf4通过朝向DR的路由器端口leaf4_P3将组播数据报文发送给spine3。
路由桥spine3收到VLAN1的组播数据报文,没有查询组播组地址G2对应的组播表项,建立组播表项(S2,G2,V1),将组播数据报文封装为PIM注册报文,向RP路由器202方向的上游组播路由器邻居,即出口路由器201,发送PIM注册报文。出口路由器201收到下游组播路由器邻居的PIM注册报文,继续向RP路由器202方向的上游组播路由器邻居发送PIM注册报文。由于路由桥spine3计算的关联于(VLAN1,G2)的路由器端口为空(请参见表1.3),则不在新建的本地组播表项(S2,G2,V1)的出接口中添加朝向DR的路由器端口。
RP路由器202接收PIM注册报文,解封装得到组播数据报文,将组播数据报文发送到数据中心外的组播组G2的接收端。RP路由器202根据注册报文的源IP地址发送加入PIM(S2,G2)加入报文。PIM(S2,G2)加入报文被逐跳地发送到数据中心的出口路由器201。
出口路由器201收到PIM(S2,G2)加入报文,建立(S2,G2)组播表项,将端口P22添加为组播表项的出接口。出口路由器201基于(S2,G2)对应的RPF端口P3发送PIM(S2,G2)加入报文。
路由桥spine3通过本地端口spine3_Pout收到PIM(S2,G2)加入报文,根据组播组地址G2查找到组播表项(S2,G2,V1),在出接口信息添加成员信息(VLAN100,spine3_Pout);其中,VLAN100是PIM加入报文的VLAN ID;成员端口spine3_Pout是PIM加入报文的接收端口。
终端client2请求加入组播组G2的过程
属于VLAN1的终端client2发送加入组播组G2的IGMP报告报文。
路由桥leaf4收到IGMP报告报文后,查询到(VLAN1,G2)关联的组播表项(S2,G2,V1),在出接口中添加成员端口leaf4_Pa。
路由桥leaf4为收到的IGMP报告报文封装TRILL头和下一跳头,将该IGMP报告报文封装为TRILL封装的IGMP报告报文。其中,TRILL头的Ingressnickname是路由桥leaf4的nickname4,TRILL头的Egress nickname是路由桥spine3(VLAN1内组播组G2的DR)的nickname13。路由桥leaf4通过朝向DR的路由器端口leaf4_P3(参加表1.5)发送TRILL封装的IGMP报告报文。路由桥leaf4为成员端口leaf4_Pa设置组播组成员老化定时器。
路由桥spine3收到TRILL封装的IGMP报告报文后,查询到组播组地址G2关联的组播表项(S2,G2,V1),在出接口中添加成员信息(VLAN1,spine3_P4);其中,VLAN1是IGMP报告报文的VLAN ID;成员端口spine3_P4是TRILL封装的IGMP报告报文的接收端口。路由桥spine3为成员端口spine3_P4设置组播组成员老化定时器。
作为VLAN1内组播组G2的DR,路由桥spine3向组播组G2的RP路由器202发送加入组播组G2的PIM加入报文。出口路由器201收到来自路由桥spine3的PIM加入报文,将PIM加入报文的接收端口P3添加为组播表项(S2,G2)的出接口。
终端client3请求加入组播组G2的过程
属于VLAN2的终端client3发送加入组播组G2的IGMP报告报文。
路由桥leaf4通过端口leaf4_Pb收到IGMP报告报文,未查询到(VLAN2,G2)关联的组播表项,建立组播表项(*,G2,V2),在出接口中添加成员端口leaf4_Pb。路由桥leaf4对该IGMP报告报文进行TRILL封装,其中,TRILL头中,Ingress nickname是路由桥leaf4的nickname4,Egress nickname是路由桥spine4(VLAN2内组播组G2的DR)的nickname14。路由桥leaf4通过朝向DR的路由器端口leaf4_P4(参见表1.5)发送TRILL封装后的IGMP报告报文。
路由桥leaf4为成员端口leaf4_Pb设置组播组成员老化定时器。
路由桥spine4通过端口spine4_P4收到TRILL封装的IGMP报告报文,未查询到组播组地址G2关联的组播表项,建立组播表项(*,G2,V2),在出接口中添加成员信息(VLAN2,spine4_P4);其中,VLAN2是IGMP报告报文的VLANID;成员端口spine4_P4是TRILL封装的IGMP报告报文的接收端口。路由桥spine4为成员端口spine4_P4设置组播组成员老化定时器。
作为VLAN2内组播组G2的DR,路由桥spine4向组播组G2的RP路由器202发送PIM加入报文。路由桥spine4将PIM加入报文发送到出口路由器201。出口路由器201将PIM加入报文的接收端口P4添加为组播表项(S2,G2)的出接口,向RP路由器202方向继续发送PIM加入报文。
终端client4加入组播组G2的过程
属于VLAN2的终端client4发送加入组播组G2的IGMP报告报文。
路由桥leaf5通过端口leaf5_Pa收到IGMP报告报文,未查找到(VLAN2,G2)关联的组播表项,建立组播表项(*,G2,V2),在出接口中添加成员端口leaf5_Pa;该成员端口是IGMP报告报文的接收端口。
路由桥leaf5对收到的IGMP报告报文进行TRILL封装,通过朝向DR的路由器端口leaf5_P4(参见表1.6)发送TRILL封装的IGMP报告报文。路由桥leaf5为成员端口leaf5_Pa设置组播组成员老化定时器。
路由桥spine4通过端口spine4_P5收到TRILL封装的IGMP报告报文,查询到组播组地址G2关联组播表项(*,G2,V2),在出接口信息中添加成员信息(VLAN2,spine4_P5)。路由桥spine4已向组播组G2的RP路由器202发送了PIM加入报文,路由桥spine4不再重复向组播组G2的RP路由器202发送PIM加入报文。
图5所示为图2中内部组播源的组播数据报文发送到内部接收端和外部RP路由器的示意图。
组播组G2的组播源(S2,G2,V1)发送组播数据报文到路由桥leaf4。路由桥leaf4根据组播数据报文的VLAN1和组播组地址G2查询到匹配的本地组播表项(S2,G2,V1),通过该匹配组播表项的成员端口leaf4_Pa和朝向DR的路由器端口leaf4_P3分别发送组播数据报文到终端client2和路由桥spine3。
路由桥spine3收到组播数据报文,根据组播组地址G2查询组播表项(S2,G2,V1),根据该匹配组播表项的成员信息(VLAN100,spine3_Pout4)复制和发送组播组G2的数据报文。这样,路由桥spine3将组播组G2的数据报文发往出口路由器201。出口路由器201收到组播数据报文,根据组播表项(S2,G2)表项的出接口P4和P22分别发送组播数据报文到路由桥spine4和上游组播路由器201。
路由桥spine4收到组播数据报文,根据组播组地址G2查询到组播表项(*,G2,V2),根据该组播表项的成员信息(VLAN2,spine4_P4)、(VLAN2,spine4_P5)复制和发送组播组G2的数据报文。这样,路由桥spine4将两份带有VLAN2的组播数据报文发往路由桥leaf4和leaf5。路由桥leaf4收到组播数据报文,查找到(VLAN2,G2)关联的组播表项,通过该查找到的组播表项的成员端口leaf4_Pb发送组播组G2的数据报文到终端client3。
路由桥leaf5收到组播数据报文,查找到(VLAN2,G2)关联的组播表项,通过查找到的组播表项的成员端口leaf5_Pa发送组播组G2的数据报文到终端client4。
RP路由器202收到组播数据报文,向下游组播路由器发送PIM(S2,G2)注册停止报文。PIM注册停止报文被逐跳地发到路由桥spine3。路由桥spine3收到PIM(S2,G2)注册停止报文之后,不再向RP路由器202发送PIM注册报文。
通过图5所示,组播组G2两个TRILL组播树各自分担VLAN1和VLAN2内组播组G2的组播报文转发。接入层路由桥leaf4通过指定路由器spine3为树根的TRILL组播树将初始格式的组播数据报文发往指定路由器spine3,而无需将组播数据报文封装为TRILL格式。指定路由器spine3通过PIM hello报文将组播源信息通知给出口路由器201出口路由器201根据路由桥spine3的PIMhello报文记录组播源对应的RPF端口,将来自RP路由器202的PIM加入报文发送到组播组的组播组源所在VLAN的指定路由器spine3,确保的PIM注册报文和PIM加入报文的转发路径一致。
IGMP通用组查询报文的处理。
路由桥spine1~spine4基于每个VLAN选举一个IGMP查询器,但是,不同VLAN的IGMP查询器可以是同一个设备。图2中,路由桥spine1~spine4选举路由桥spine1和spine4分别为VLAN1和VLAN2的IGMP查询器。
路由桥spine1和spine4分别在VLAN1和VLAN2内定期发送IGMP通用组查询报文。路由桥spine1和spine4各自选择一个TRILL VLAN裁剪树发送IGMP通用组查询报文,确保路由桥spine1~spine4以及路由桥leaf1~leaf6分别在VLAN1内和VLAN2内收到IGMP通用组查询报文。
路由桥spine1向VLAN1发送的TRILL封装的IGMP通用组查询报文中,Ingress nickname为路由桥spine1的nickname11,Egress nickname为TRILLVLAN裁剪树的树根(路由桥spine1)的nickname11。同样的,路由桥spine4向VLAN2发送的TRILL封装的IGMP通用组查询报文中,Ingress nickname为路由桥spine4的nickname14,Egress nickname为TRILL VLAN裁剪树的树根(路由桥spine4)的nickname14。
路由桥leaf1~leaf6在VLAN1和VLAN2内收到TRILL封装的IGMP通用组查询报文,各自通过VLAN1的本地端口以及VLAN2的本地端口发送IGMP通用组查询报文。
IGMP通用组查询报文的响应处理
终端client2接收IGMP通用组查询报文后,发送IGMP报告报文。路由桥leaf4通过成员端口leaf4_Pa收到加入组播组G2的IGMP报告报文,重置成员端口leaf4_Pa的组播组成员老化定时器,将IGMP报告报文进行TRILL封装,通过朝向DR的路由器端口leaf4_P3发送TRILL封装的IGMP报告报文到路由桥spine3。
路由桥spine3通过成员端口spine3_P4收到的TRILL封装的IGMP报告报文,重置成员端口spine3_P4的组播组成员老化定时器。
IGMP离开组报文的处理
属于VLAN2的终端client3发送离开组播组G2的IGMP离开组报文。
路由桥leaf4通过成员端口leaf4_Pb收到来自终端client3的IGMP离开组报文,基于指定路由器将收到的IGMP离开组报文封装为TRILL封装的IGMP离开组报文,通过朝向DR的路由器端口leaf4_P4发送TRILL封装的IGMP离开组报文。
路由桥spine4通过成员端口spine4_P4收到TRILL封装的IGMP离开组报文,根据IGMP离开组报文携带的组播组地址G2及VLAN2生成关于组播组G2及VLAN2的IGMP特定组查询报文,将IGMP特定组查询报文封装为TRILL封装的IGMP特定组查询报文。路由桥spine4通过收到TRILL封装的IGMP离开组报文的成员端口spine4_P4,发送TRILL封装的IGMP特定组查询报文,重置成员端口spine4_P4的组播组成员老化定时器。
路由桥leaf4接收TRILL封装的IGMP特定组查询报文,根据IGMP特定组查询报文解析出要查询的VLAN2内的组播组G2。路由桥leaf4通过组播表项(*,G2,V2)的成员端口leaf4_Pb发送IGMP特定组查询报文。路由桥leaf4重置成员端口leaf4_Pb的组播组成员老化定时器。
路由桥leaf4确定设定时间内成员端口leaf4_Pb未收到加入组播组G2的IGMP报告报文,将成员端口leaf4_Pb从(*,G2,V2)组播表项的出接口中删除。路由桥leaf4确定(*,G2,V2)组播表项即没有路由器端口也没有成员端口,删除该组播表项。
路由桥spine4确定成员端口spine4_P4在设定时间内未收到加入组播组G2的TRILL封装的IGMP报告报文,将成员信息(VLAN2,spine4_P4)从(*,G2,V2)组播表项的出接口中删除。
异常处理
路由桥spine3的上行PIM链路故障(down)掉后,路由桥spine3将本设备与外网的PIM邻居关系将全部变为关闭状态。路由桥spine3将所有下行IGMP功能和PIM组播路由功能关闭(VLAN内的IGSP功能仍保持以满足作为transit节点监听维护其他路由器端口的需要)。路由桥spine4检测到路由桥spine3故障,切换为VLAN1内组播组G2的指定路由器状态。
或者,路由桥spine3设备故障,路由桥spine4通过BFD检测到路由桥spine3故障(down),作为VLAN1内组播组G2的指定路由器。
路由桥spine4在TRILL网络内通知组播组G2的组播源在数据中心内、VLAN1内组播组G2的指定路由器的nickname是路由桥spine4的nickname4。
路由桥spine2~spine4以及路由桥leaf1~leaf6计算树根是spine4的TRILL组播树。各RBridge根据新TRILL组播树计算朝向DR的路由器端口,刷新播转发表项。
路由桥spine4作为组播组G2在VLAN1和VLAN2内的指定路由桥,树根是路由桥spine4的这两个TRILL组播树的拓扑可以相同,也可以不同。此处,树根是路由桥spine4的这两个TRILL组播树的拓扑相同且以图3B所示的TRILL树为例进行以下说明:
路由桥spine4在PIM hello报文携带组播源IP地址S2和组播组地址G2。
出口路由器201收到路由桥spine4发送的PIM hello报文后,解析出该PIMhello报文携带的组播源IP地址S2和组播组信息G2。出口路由器201根据组播源IP地址S2和组播组地址G2查找到的RPF端口P3与PIM hello报文的接收端口P4不一致,出口路由器201将组播源IP地址S2和组播组地址G2对应的RPF端口刷新为P4。
出口路由器201更新后的“组播源与RPF端口对应关系”如表2.2所示。
组播源IP地址 | 组播组 | RPF端口 |
S2 | G2 | P4 |
表2.2
位于数据中心的VLAN1内的组播组G2的组播源(S2,G2,V1)发送组播数据报文。
路由桥leaf4收到的组播数据报文,根据组播表项(*,G2,V1)的出接口中朝向DR的路由器端口leaf4_P4和成员端口leaf4_Pa分别发送组播数据报文到路由桥spine4和终端client2。
路由桥spine4收到组播数据报文,根据组播组地址G2查询组播表项(S2,G2,V1),根据出接口的成员信息(VLAN2,spine4_P5)复制和发送组播组G2的数据报文。这样,带有VLAN2的组播数据报文被发往路由桥leaf5。路由桥leaf5根据本地组播表项的成员端口leaf5_Pa将收到的组播数据报文发往client4。
由于路由桥spine4为VLAN1内G2的指定路由器,路由桥spine4基于新TRILL组播树将先前的(*,G2,V2)组播表项刷新为(S2,G2,V1),但是保留先前的成员信息。路由桥spine4将组播数据报文封装为PIM注册报文,发送PIM注册报文到出口路由器201。出口路由器201继续向RP路由器202方向发送PIM注册报文。
RP路由器202接收PIM注册报文,解封装得到组播数据报文,将组播数据报文发送到数据中心外的组播组G2的接收端。RP路由器202发送PIM(S2,G2)加入报文。该PIM(S2,G2)加入报文被逐跳地发送到数据中心的出口路由器201。出口路由器201根据组播源地址S2和组播组地址G2查找到RPF端口P4,通过该端口P4发送PIM(S2,G2)加入报文到路由桥spine4。
路由桥spine4通过本地端口spine4_Pout收到PIM(S2,G2)加入报文,根据组播组地址G2查找到组播表项(S2,G2,V1),在出接口信息中添加成员信息(VLAN100,spine4_Pout);其中,VLAN100是PIM加入报文的VLAN ID;成员端口spine4_Pout是PIM加入报文的接收端口。
后续,路由桥spine4收到组播数据报文,查询到组播组地址G2关联的组播表项(S2,G2,V1),根据查找到的组播表项的出接口的成员信息(VLAN100,spine4_Pout)、(VLAN2,spine4_P5)复制和发送组播组G2的数据报文。这样,路由桥spine4将组播组G2的数据报文发往路由桥leaf5和出口路由器201。路由桥spine4收到携带VLAN1的组播数据报文的入接口和成员信息(VLAN1,spine4_P4)相同,因此不根据成员信息(VLAN1,spine4_P4)复制和转发组播数据报文。
出口路由器201收到组播数据报文,根据组播表项(S2,G2)表项的出接口P22发送组播数据报文到上游组播路由器。
RP路由器202收到组播组G2的组播数据报文,向路由桥spine4方向(DR)的下游组播路由器发送PIM(S2,G2)注册停止报文。PIM(S2,G2)注册停止报文被逐跳地发到出口路由器201。路由桥spine4收到PIM(S2,G2)注册停止报文之后,不再向RP路由器202发送PIM注册报文。
此外,图3A-图3B所示的两个TRILL组播树上,每个路由桥leaf1~leaf6与各指定路由器通过TRILL链路直连。如果,在各指定路由器为树根的TRILL组播树上,路由桥leaf1~leaf6与各指定路由器之间不直连,接入层的路由桥leaf1~leaf6通过朝向DR的路由器端口发送TRILL封装的IGMP协议报文和初始格式的组播数据报文,路由桥leaf1~leaf6将收到TRILL封装的IGMP报告报文的本地端口作为成员端口添加为组播表项的出接口。
同样的,图3A-图3B所示的两个TRILL组播树上,接入层路由桥leaf1~leaf6与指定路由器之间的TRILL链路故障(down)导致接入层路由桥leaf1~leaf6与各指定路由器之间不直连,接入层的路由桥leaf1~leaf6重新计算朝向DR的路由器端口,刷新组播表项,通过刷新的朝向DR的路由器端口发送TRILL封装的IGMP协议报文以及发送数据中心内组播源的组播数据报文。
图6为本发明另一实施例提供的数据中心的TRILL组网架构示意图。路由桥core1~core2根据VRRP协议执行邻居发现和主设备选举,构成为一个虚拟路由器冗余协议(VRRP)路由器作为VLAN1和VLAN2的网关。路由桥core1~core2均处于激活(active)状态,参与转发VLAN1和VLAN2的数据转发。
核心层路由桥core1~core2、汇聚层路由桥transit1~transit4以及接入层的非网关路由桥leaf21~leaf26运行IGMP snooping(IGMP窥探,简称IGSP)协议。路由桥core1~core2还运行IGMP(Internet Group Management Protocol,互联网组管理协议)协议和PIM(Protocol Independent Multicast,协议无关组播)协议。
路由桥core1是VLAN1内组播组G2的指定路由器组播组路由桥,路由桥core2是VLAN2内组播组G2的指定路由器。
路由桥core1是VLAN2内组播组G2的备份指定路由器(BDR,BackupDesigned Router);路由桥core2是VLAN1内组播组G2的备份指定路由器。
路由桥core1~core2之间建立用于PIM协议的BFD(BidirectionalForwarding Detection,双向转发检测)对话。如果,路由桥core1检测到路由桥core2故障,路由桥core1切换为VLAN2内组播组G2的指定路由器。路由桥core2执行类似的处理。
为了方便描述,将路由桥core1上连接路由桥transit1、transit2、transit3、transit4的端口分别命名为端口core1_P1、core1_P2、core1_P3、core1_P4,将路由桥core2上连接transit1、transit2、transit3、transit4的端口分别命名为core2_P1、core2_P2、core2_P3、core2_P4。
将路由桥transit1上连接路由桥core1、core2的端口分别命名为transit1_Pa、transit1_Pb,路由桥transit2~transit6各自连接路由桥core1、core2的端口命名方式以此类推。将路由桥transit1上连接路由桥leaf21、leaf22、leaf23、leaf24、leaf25、leaf26的端口分别命名为端口transit1_P1、transit1_P2、transit1_P3、transit1_P4、transit1_P5、transit1_P6,路由桥transit2~transit4各自连接路由桥leaf21~leaf26的端口命名方式以此类推。
将路由桥leaf21上连接路由桥transit1、transit2、transit3、transit4的端口分别命名为端口leaf21_P1、leaf21_P2、leaf21_P3、leaf21_P4,路由桥leaf23~leaf26各自连接路由桥transit1~transit4的端口命名方式以此类推。
路由桥leaf24连接终端client2’、client3’以及组播源(S2,G2,V1)的三个端口分别命名为端口leaf24_Pa、leaf24_Pb、leaf24_Pc,将路由桥leaf25上连接终端client4’的端口命名为端口leaf25_Pa。
出口路由器501连接路由桥core1和core2的端口被分别命名为P11和P12,出口路由器501连接RP502方向的上游组播路由器的端口被命名为P52。
出口路由器501的上游组播路由器可以是一个组播路由器也可以是RP路由器502。
路由桥core1~core2、路由桥transit1~transit4以及路由桥leaf21~leaf26都知道TRILL网络内VLAN1和VLAN2的网关是路由桥路由桥core1~core2,VLAN1内组播组G2的指定路由器是core1,VLAN2内组播组G2的指定路由器是路由桥core2。
路由桥core1~core2可通过通知的方式,将组播组G2在各VLAN内的指定路由器信息在TRILL网络内通告给所有路由桥。譬如:路由桥core1在TRILL网络内通知组播组G2的组播源在数据中心的VLAN1内、VLAN1内组播组G2的指定路由器的nickname是nickname11。
路由桥core2在TRILL网络内通知VLAN2内组播组G2的指定路由器的nickname是nickname12。
路由桥core1~core2、路由桥transit1~transit4以及路由桥leaf21~leaf26分别计算树根为每个指定路由器的TRILL组播树。
图7A所示为指定路由器core1为树根的TRILL组播树;图7B所示为指定路由器core2为树根的TRILL组播树。
路由桥core1~core2、路由桥transit1~transit4以及路由桥leaf21~leaf26根据图7A-7B所示的TRILL组播树,计算朝向DR的路由器端口。
图7A所示的组播树上,路由桥core1到自身的TRILL路径为回环口,即,朝向DR的路由器端口为空(null);路由器core2到路由桥core1的TRILL路径是路由桥core2->路由桥Transit3->路由桥core1,该TRILL路径上的本地端口是端口core2_P3,即,路由桥core2计算的朝向DR的路由器端口是core2_P3。路由桥transit1~transit4以及路由桥leaf21~leaf26计算朝向DR路由器端口的方式相同。
路由桥core1根据图7A-图7B所示的TRILL组播树计算的朝向DR的路由器端口如表3.1所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | null |
V2 | G2 | core1_P3 |
表3.1
路由桥core2据图7A-图7B所示的TRILL组播树计算的朝向DR的路由器端口如表3.2所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | core2_P3 |
V2 | G2 | null |
表3.2
路由桥transit1根据图7A-图7B所示的TRILL组播树计算的朝向DR的路由器端口如表4.1所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | transit1_Pa |
V2 | G2 | transit1_Pb |
表4.1
路由桥transit2根据图7A-图7B所示的TRILL组播树计算的朝向DR的路由器端口如表4.2所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | transit2_Pa |
V2 | G2 | transit2_Pb |
表4.2
路由桥transit3根据图7A-图7B所示的TRILL组播树计算的朝向DR的路由器端口如表4.3所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | transit3_Pa |
V2 | G2 | transit3Pb |
表4.3
路由桥transit4根据图7A-图7B所示的TRILL组播树计算的朝向DR的路由器端口如表4.4所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | Transit4_Pa |
V2 | G2 | transit4_Pb |
表4.4
路由桥leaf24根据图7A-图7B所示的TRILL组播树计算的朝向DR的路由器端口如表5.1所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | Leaf24_P3 |
V2 | G2 | Leaf24_P4 |
表5.1
路由桥leaf25根据图7A-图7B所示的TRILL组播树计算的朝向DR的路由器端口如表5.2所示:
VLAN | 组播组 | 朝向DR的路由器端口 |
V1 | G2 | Leaf25_P3 |
V2 | G2 | Leaf25_P4 |
表5.2
路由桥core1-core2、出口路由器501各自周期性的发送PIM hello报文。
组播源(S2,G2,V1)位于TRILL网络内的VLAN1,组播组G2在VLAN1内的指定路由器是路由桥core1。路由桥core1的PIM hello报文携带组播组的组播源IP地址S2和组播组地址G2。
出口路由器501收到路由桥core1发送的PIM hello报文后,解析出该PIMhello报文携带的播源IP地址S2和组播组地址G2,未查询到(S2,G2)对应的RPF端口,根据PIM hello报文携带的(S2,G2)以及PIM hello报文的接收端口P11记录组播源与RPF端口对应关系。
譬如出口路由器501可记录表6.1所示的“组播源与RPF端口对应关系”。
组播源IP地址 | 组播组 | RPF端口 |
S2 | G2 | P11 |
表6.1
图8示出了示出了向图6的外部RP路由器发送PIM注册报文的过程。
位于VLAN1内的组播组G2的组播源(S2,G2,V1)发送组播数据报文。
路由桥leaf24收到的组播数据报文,未查询(VLAN1,G2)关联的组播表项,则新建组播表项(S2,G2,V1),在出接口中添加朝向DR的路由器端口leaf24_P3。路由桥leaf24通过朝向DR的路由器端口leaf24_P3(请参见表5.1)发送组播数据报文。
路由桥transit3收到组播数据报文,根据组播数据报文的VLAN1和组播组地址G2没有查询对应的组播表项,建立组播表项(S2,G2,V1),在出接口中添加朝向DR的路由器端口transit3_Pa。路由桥transit3通过朝向DR的路由器端口transit3_Pa(请参见表4.3)发送组播数据报文。
路由桥core1收到组播数据报文,未查找到G2对应的组播表项,建立组播表项并且将组播数据报文封装为PIM注册报文,向上游组播路由器邻居发送PIM注册报文。出口路由器501收到PIM注册报文,继续向上游组播路由器邻居发送PIM注册报文。路由桥core1计算的关联于(VLAN1,G2)的路由器端口为空(请参见表3.1),则不在新建的本地组播表项(S2,G2,V1)的出接口中添加朝向DR的路由器端口。
RP路由器502接收PIM注册报文,解封装得到组播数据报文,将组播数据报文发送到数据中心外的组播组G2的接收端。RP路由器502发送加入PIM(S2,G2)加入报文。PIM(S2,G2)加入报文被逐跳地发送到数据中心的出口路由器501。
出口路由器501收到PIM(S2,G2)加入报文,建立(S2,G2)组播表项,将端口P52添加为组播表项的出接口,通过RPF端口P11发送PIM(S2,G2)加入报文。
路由桥core1通过本地端口core1_Pout收到加入组播组G2的PIM加入报文,根据组播组地址G2查找到组播表项(S2,G2,V1),在该组播表项的出接口添加成员信息(VLAN100,core1_Pout);其中,VLAN100是PIM加入报文的VLAN ID;成员端口core1_Pout是PIM加入报文的接收端口。
终端client2’请求加入组播组G2的过程
属于VLAN1的终端client2’发送加入组播组G2的IGMP报告报文。
路由桥leaf24收到终端client2’发送的请求加入组播组G2的IGMP报告报文后,根据VLAN1和组播组地址G2查询到组播表项(S2,G2,V1),在出接口中添加成员端口leaf24_Pa。
路由桥leaf24为收到的IGMP报告报文封装TRILL头和下一跳头,将该IGMP报告报文封装为TRILL封装的IGMP报告报文,通过朝向DR的路由器端口leaf24_P3(请参见表5.1)发送TRILL封装的IGMP报告报文。路由桥leaf24为成员端口leaf24_Pa设置组播组成员老化定时器。
路由桥transit3收到TRILL封装的IGMP报告报文后,根据VLAN1(TRILL封装的IGMP报告报文的内层VLAN ID)和组播组地址G2查询到组播表项(S2,G2,V1),在出接口中添加成员端口transit3_P4。路由桥transit3为成员端口transit3_P4设置组播组成员老化定时器,通过朝向DR的路由器端口transit3_Pa(请见表4.3)发送TRILL封装的IGMP报告报文。
路由桥core1收到TRILL封装的IGMP报告报文后,根据组播组地址G2查询到组播表项(S2,G2,V1),确定出接口信息已包含成员信息(VLAN1,transit3_P4),则不重复添加。路由桥core1为收到TRILL封装的IGMP报告报文的成员端口core1_P3设置组播组成员老化定时器。
作为VLAN1内组播组G2的DR,路由桥core1根据组播组G2的RP路由器502的IP地址发送PIM加入报文。路由桥core1将PIM加入报文发送到出口路由器501。
出口路由器501将PIM加入报文的接收端口P11添加到组播表项(S2,G2)为出接口,向RP路由器502方向发送PIM加入报文。
终端client3’请求加入组播组G2的过程
属于VLAN2的终端client3’发送加入组播组G2的IGMP报告报文。
路由桥leaf24通过端口leaf24_Pb收到加入组播组G2的IGMP报告报文,根据VLAN2和组播组地址G2未查询到组播表项。路由桥leaf24建立组播表项(*,G2,V2),在出接口中添加成员端口leaf24_Pb。路由桥leaf24对该IGMP报告报文进行TRILL封装。路由桥leaf24通过朝向DR的路由器端口leaf24_P4(请参见表5.1)发送TRILL封装后的IGMP报告报文。
路由桥leaf24为收到IGMP报告报文的成员端口leaf24_Pb设置组播组成员老化定时器。
路由桥transit4通过端口transit4_P4收到TRILL封装的IGMP报告报文,根据VLAN2和组播组地址G2未查询到组播表项,建立组播表项(*,G2,V2),在出接口中添加成员端口transit4_P4;该成员端口是TRILL封装的IGMP报告报文的接收端口。
路由桥transit4通过朝向DR的路由器端口transit4_Pb(请参见表4.4)发送TRILL封装的IGMP报告报文。
路由桥core2收到TRILL封装的IGMP报告报文后,根据组播组地址G2未查询到组播表项。路由桥core2建立组播表项(*,G2,V2),在出接口中添加成员信息(VLAN2,core2_P4);其中,VLAN2(TRILL封装的IGMP报告报文的内层VLAN ID;成员端口core2_P4是TRILL封装的IGMP报告报文的接收端口。
路由桥core2为TRILL封装的IGMP报告报文的成员端口core2_P4设置组播组成员老化定时器。路由桥core2向上游组播路由器发送加入PIM加入报文。出口路由器501收到PIM(*,G2)加入报文,将PIM加入报文的接收端口P12添加到组播表项(S2,G2)为出接口,向RP路由器502方向发送PIM加入报文。
终端client4’请求加入组播组G2的过程
属于VLAN2的终端client4’发送加入组播组G2的IGMP报告报文。
路由桥leaf25通过端口leaf25_Pa收到IGMP报告报文,根据VLAN2和组播组地址G2未查找对应的组播表项,则建立组播表项(*,G2,V2),在出接口中添加成员端口leaf25_Pa。
路由桥leaf25对收到的IGMP报告报文进行TRILL封装,通过朝向DR的路由器端口端口leaf25_P4(请参见表5.2)发送TRILL封装的IGMP报告报文,为成员端口leaf25_Pa设置组播组成员老化定时器。
路由桥transit4通过端口transit4_P5收到TRILL封装的IGMP报告报文,根据VLAN2和组播组地址G2查询到组播表项(*,G2,V2),在出接口中添加成员端口transit4_P5,通过朝向DR的路由器端口transit4_Pb(请参见表4.4)发送TRILL封装的IGMP报告报文。
路由桥core2通过端口core2_P4收到TRILL封装的IGMP报告报文后,根据组播组地址G2查询到组播表项(*,G2,V2),确定查询到的组播表项的出接口已包含成员信息(VLAN2,core2_P4),则不重复添加。路由桥core2重置成员端口core2_P4的组播组成员老化定时器。
图9A为图6中组播源的组播数据报文发往外部汇聚点路由器和内部组播接收端的示意图;
VLAN1内的组播组G2的组播源(S2,G2,V1)发送组播数据报文到路由桥leaf24。路由桥leaf24根据组播数据报文的VLAN1和组播组地址G2查询到匹配的组播表项,分别通过成员端口leaf24_Pa和朝向DR的路由器端口leaf24_P3发送组播数据报文到终端client2’和路由桥transit3。
路由桥transit3收到组播数据报文,根据VLAN1和组播组地址G2查询组播表项(S2,G2,V1),通过出接口中朝向DR的路由器端口transit3_Pa发送收到的组播组G2的数据报文。
路由桥core1收到组播数据报文,根据组播组地址G2查询到组播表项(S2,G2,V1),根据出接口信息中成员信息(VLAN100,core1_Pout)复制和发送组播组G2的数据报文。
出口路由器501收到组播数据报文,根据组播表项(S2,G2)表项的出接口P52和P12发送组播数据报文到RP方向的上游组播路由器和路由桥transit4。
RP路由器502收到组播组G2的组播数据报文,向路由桥core1方向的下游组播路由器发送组播组G2的PIM注册停止报文。PIM注册停止报文被逐跳地发到路由桥core1。路由桥core1收到PIM(S2,G2)注册停止报文之后,不再向RP路由器502发送PIM注册报文。
路由桥transit4根据组播数据报文的组播组地址G2查找到组播表项(*,G2,V2),通过出接口中的成员端口transit4_P4和transit4_P5发送组播数据报文到路由桥leaf24和leaf25。
路由桥leaf24收到组播组G2的数据报文,根据VLAN2和组播组地址G2查找到本地组播表项,通过成员端口leaf24_Pb发送组播组G2的数据报文到终端client3’。
路由桥leaf25收到组播组G2的数据报文,根据VLAN2和组播组地址G2查找到组播表项,通过成员端口leaf25_Pa发送组播组G2的数据报文到终端client4’。
IGMP通用组查询报文的处理。
路由桥core1~core2基于每个VLAN选举一个IGMP查询器,但是,不同VLAN的IGMP查询器可以是同一个设备。路由桥core1和core2分别为VLAN1和VLAN2的IGMP查询器。
路由桥core1和core2分别在VLAN1和VLAN2内定期发送IGMP通用组查询报文。路由桥core1和core2各自选择一个TRILL VLAN裁剪树发送IGMP通用组查询报文,确保路由桥transit1~transit4以及路由桥leaf21~leaf26分别在VLAN1内和VLAN2内收到IGMP通用组查询报文。
路由桥core1向VLAN1发送的TRILL封装的IGMP通用组查询报文中,Ingress nickname为路由桥core1的nickname31,Egress nickname为TRILLVLAN裁剪树的树根(路由桥core1)的nickname31。同样的,路由桥core2向VLAN2发送的TRILL封装的IGMP通用组查询报文中,Ingress nickname为路由桥core2的nickname32,Egress nickname为TRILL VLAN裁剪树的树根(路由桥core2)的nickname32。
路由桥transit1~transit4收到TRILL封装的IGMP通用组查询报文,根据Egress nickname转发,路由桥leaf21~leaf26在VLAN1和VLAN2内收到TRILL封装的IGMP通用组查询报文,各自通过VLAN1的本地端口以及VLAN2的本地端口发送IGMP通用组查询报文。
IGMP通用组查询报文的响应处理
属于VLAN1的终端client2’接收IGMP通用组查询报文后,发送IGMP报告报文。
路由桥leaf24通过端口leaf24_Pa收到加入组播组G2的IGMP报告报文,重置成员端口leaf24_Pa的组播组成员老化定时器,将IGMP报告报文进行TRILL封装,通过朝向DR的路由器端口leaf24_P3发送TRILL封装的IGMP报告报文。
路由桥transit3通过端口transit3_P4收到TRILL格式的IGMP报告报文,重置成员端口transit3_P4的组播组成员老化定时器,通过朝向DR的路由器端口transit3_Pa发送TRILL封装的IGMP报告报文到路由桥core1。
路由桥core1通过端口core1_P3收到TRILL格式的IGMP报告报文,重置成员端口core1_P3的组播组成员老化定时器。
IGMP离开组报文的处理
属于VLAN2的终端client3’发送IGMP离开组报文。
路由桥leaf24通过成员端口leaf24_Pb收到来自终端client3’的IGMP离开组报文,封装为TRILL封装的IGMP离开组报文,通过朝向DR的路由器端口leaf24_P4发送TRILL封装的IGMP离开组报文。
路由桥transit4通过成员端口transit4_P4收到TRILL封装的IGMP离开组报文,通过朝向DR的路由器端口transit4_Pb发送TRILL封装的IGMP报告报文到路由桥core2。
路由桥core2通过成员端口core2_P4收到TRILL封装的IGMP离开组报文。路由桥core2根据IGMP离开组报文解析携带请求离开的组播组G2及VLAN2,生成关于组播组G2及VLAN2的IGMP特定组查询报文,将IGMP特定组查询报文封装为TRILL封装的IGMP特定组查询报文。路由桥core2通过收到TRILL封装的IGMP离开组报文的成员端口core2_P4,发送TRILL封装的IGMP特定组查询报文,重置成员端口core2_P4的组播组成员老化定时器。
路由桥transit4收到TRILL封装的IGMP特定组查询报文,查询到(VLAN2,G2)对应的组播表项(*,G2,V2),向该组播表项的出接口的成员端口transit4_P4发送TRILL封装的IGMP特定组查询报文。路由桥transit4重置成员端口transit4_P4的组播组成员老化定时器。
路由桥leaf24接收TRILL封装的IGMP特定组查询报文,查询到(VLAN2,G2)对应的组播表项(*,G2,V2),向该组播表项的成员端口leaf24_Pb发送IGMP特定组查询报文。路由桥leaf24重置成员端口leaf24_Pb的组播组成员老化定时器。路由桥leaf24确定(*,G2,V2)组播表项既没有路由器端口也没有成员端口,删除该组播表项。
路由桥leaf24确定预定时间内成员端口leaf24_Pb未收到加入组播组G2的IGMP报告报文,从组播表项(*,G2,V2)的出接口中删除成员端口leaf24_Pb。
路由桥transit4确定预定时间内成员端口transit4_P4未收到加入组播组G2的TRILL封装的IGMP报告报文,从组播表项(*,G2,V2)的出接口中删除成员端口transit4_P4。
路由桥core2确定成员端口core2_P4在预定时间内未收到加入组播组G2的TRILL封装的IGMP报告报文,将成员信息(VLAN2,core2_P4)从(*,G2,V2)组播表项的出接口中删除。
异常处理
当路由桥core1的上行PIM链路故障(down)掉后,路由桥core1将本设备与外网的PIM邻居关系将全部变为关闭状态。路由桥core1将所有下行IGMP功能和PIM组播路由功能关闭(VLAN内的IGSP功能仍保持以满足作为transit节点监听维护其他路由器端口的需要)。这样,路由桥core2切换到VLAN1的组播组G2的指定路由器。
或者,路由桥core1故障,路由桥core2通过BFD检测到路由桥core1故障(down),作为VLAN1内组播组G2的DR进行工作。路由桥core2在TRILL网络内通知组播组G2的组播源在数据中心的VLAN1、VLAN1内组播组G2的指定路由器的nickname是路由桥core2的nickname12。
需要说明的是,路由桥core1作为组播组G2在VLAN1和VLAN2内的指定路由桥,以路由桥core1为树根这两个TRILL组播树的拓扑可以相同,也可以不同。
本实施例中,为简化说明,树根是路由桥core1的两个TRILL组播树的拓扑一样,即,各路由桥以图7B所示的TRILL组播树计算关联于(VLAN1,G2)的路由器端口以及计算关联于(VLAN2,G2)的路由器端口。
路由桥core2、路由桥transit1~tansit4以及路由桥leaf21~leaf26计算树根是core2的TRILL组播树。
各RBridge根据根据图7B所示的TRILL组播树重新计算关联于(VLAN1,G2)的朝向DR的路由器端口,相应地刷新组播转发表项中朝向DR的路由器端口。
路由桥core2在PIM hello报文携带组播源IP地址和组播组信息。出口路由器501收到路由桥core2发送的PIM hello报文后,解析出该PIM hello报文携带的组播源地址S2和组播组地址G2。出口路由器501根据(S2,G2)查找到的RPF端口P11与PIM hello报文的接收端口P12不一致,出口路由器501将(S2和G2)对应的RPF端口记录为P12。
出口路由器501更新后的“组播源与RPF端口对应关系”如表6.2所示。
组播源IP地址 | 组播组 | RPF端口 |
S2 | G2 | P12 |
表6.2
图9B为图6中备份指定路由器将内部组播源的组播数据报文发往外部汇聚点路由器和内部组播接收端的示意图。
位于VLAN1内的组播组G2的组播源(S2,G2,V1)发送组播数据报文。
路由桥leaf24收到的组播数据报文,根据组播表项(S2,G2,V1)的出接口中朝向DR的路由器端口leaf24_P4和成员端口leaf24_Pa分别发送组播数据报文到路由器transit4和终端client2’。
路由桥transit4收到组播数据报文,根据组播表项(S2,G2,V1)的出接口中朝向DR的路由器端口transit4_Pb发送组播数据报文。
路由桥core2收到组播数据报文,向组播表项(S2,G2,V1)中出接口的成员信息(VLAN2,core2_P4)复制和发送组播数据报文到路由桥transit4,将组播数据报文封装为PIM注册报文并向上游组播路由器发送PIM注册报文。出口路由器501继续向RP路由器502发送PIM注册报文。
路由桥transit4收到携带VLAN2的组播数据报文,查找到(VLAN2,G2)关联的组播表项(*,G2,V2),根据出接口的成员端口transit4_P5发送组播数据报文。路由桥leaf25收到携带VLAN2的组播数据报文,根据匹配的本地组播表项(*,G2,V2)的成员端口leaf25_Pb发送组播数据报文到终端client4’。
路由桥core2是新选举的VLAN1的IGMP查询器,定期在TRILL网络的VLAN1内发送IGMP通用组查询报文。终端client2’收到IGMP通用组查询报文后,发送IGMP报告报文。路由桥leaf24、路由桥transit4通过各自的朝向DR的路由器端口发送TRILL封装的IGMP报告报文。这样路由桥leaf24和路由桥transit4沿路由桥core2为树根的TRILL组播树上到达树根的路径,向指定路由器发送TRILL格式的IGMP报告报文。
路由桥core2通过端口core2_P4为TRILL封装的IGMP报告报文,在组播组地址G2关联的组播表项(S2,G2,V1)的出接口中添加成员信息(VLAN1,core2_P4),为成员端口core2_P4设置组播组成员老化定时器,
后续,路由桥leaf24收到的组播数据报文,根据组播表项(*,G2,V1)的出接口中朝向DR的路由器端口leaf24_P4和成员端口leaf24_Pa分别发送组播数据报文到路由器transit4和终端client2’。
路由桥transit4收到携带VLAN1的组播数据报文,根据组播表项(*,G2,V1)的出接口中朝向DR的路由器端口transit4_Pb发送组播数据报文。路由桥transit4收到组播数据报文的入接口与组播表项(*,G2,V1)中的成员端口transit4_P4相同,因此不基于组播表项内的成员端口transit4_P4发送携带VLAN1组播数据报文。
路由桥core2收到携带VLAN1的组播组数据报文,根据组播组地址G2查找到组播表项(S2,G2,V1),根据该组播表项的出接口的成员信息(VLAN2,core2_P4)、(VLAN100,core2_Pout)复制和发送组播数据报文。如图9B所示,组播数据报文分别发往路由桥transit4出口路由器501。路由桥tranisit4根据本地组播表项(*,G2,V1)的成员端口transit4_P5,发送组播数据报文到路由桥leaf25,最终由路由桥leaf25将组播数据报文发往终端client4’。
出口路由器501收到组播数据报文,向RP路由器502方向发送。RP路由器502收到组播组G2的组播数据报文,向路由桥core2发送PIM(S2,G2)注册停止报文。PIM(S2,G2)注册停止报文被逐跳地发到路由桥core2。路由桥core2收到PIM(S2,G2)注册停止报文,不再向RP路由器202发送PIM注册报文。
路由桥core2作为VLAN1的指定路由器,通过端口core2_P4收到携带VLAN1的组播数据报文,由于组播数据报文的入接口与匹配组播表项的出接口的成员信息(VLAN1,core2_P4)相同,不再根据组播表项中的成员信息(VLAN1,core2_P4)复制和转发组播数据报文。
在图6所示的TRILL网络架构中,路由桥core1和core2可配置有多个nickname,将不同nickname作为组播组在不同VLAN内指定路由器的nickname。
图10是本发明实施例提供组播报文转发装置的结构示意图,该装置应用于数据中心的接入层设备。如图10所示,该装置包括:组播协议处理单元1001、组播数据处理单元1002。
组播协议处理单元1001,用于获取获取组播组在每个虚拟局域网VLAN内的指定路由器;以每个指定路由器为树根计算一个多链接半透明互联TRILL组播树;根据每个TRILL组播树计算一个朝向指定路由器的路由器端口;
组播数据处理单元1002。用于接收组播数据报文,确定组播数据报文的VLAN ID和组播组地址对应的路由器端口;如果确定的朝向指定路由器的路由器端口不同于组播数据报文的入接口,则通过确定的朝向指定路由器的路由器端口发送组播数据报文。
组播协议处理单元1001,还用于接收IGMP报告报文;将收到IGMP报告报文的端口记录为对应于IGMP报告报文的组播组地址和VLAN ID的成员端口;识别IGMP报告报文的组播地址和VLAN ID对应的指定路由器和朝向指定路由器的端口;根据识别的指定路由器的设备标识为IGMP报告报文执行TRILL封装;通过识别的朝向指定路由器的路由器端口发送TRILL封装的IGMP报告报文。
组播协议处理单元1001,还用于接收TRILL封装的IGMP报告报文;将收到TRILL封装的IGMP报告报文的端口记录为对应于收到的TRILL封装IGMP报告报文的组播组地址和VLAN ID的成员端口;识别TRILL封装的IGMP报告报文的组播组地址和内层VLAN ID对应的朝向指定路由器的路由器端口,通过识别的朝向指定路由器的路由器端口收到的TRILL封装的IGMP报告报文。
组播协议处理单元1001,还用于查找组播数据报文的组播组地址和VLANID对应的成员,通过查找到成员端口发送组播数据报文。
组播协议处理单元1001,还用于接收TRILL封装的IGMP通用组查询报文;通过收到的TRILL封装的IGMP通用组查询报文的内层VLAN ID对应的端口发送解TRILL封装的IGMP通用组查询报文。
组播协议处理单元1001,还用于接收IGMP离开组报文;识别IGMP离开组报文的组播地址和VLAN ID对应的指定路由器和朝向指定路由器的端口;根据识别的指定路由器的设备标识为IGMP离开组报文执行TRILL封装;通过识别的朝向指定路由器的路由器端口发送TRILL封装的IGMP离开组报文;接收TRILL封装的IGMP特定组查询报文;通过TRILL封装的IGMP特定组查询报文的组播组地址以及内层VLAN ID对应的成员端口发送解TRILL封装的IGMP离开组报文;删除预定时间内未收到IGMP报告报文的成员端口;维持预定时间内收到IGMP报告报文的成员端口。
虽然本发明以TRILL技术构建的数据中心的大二层网络为例,对本发明所提供的组播数据报文转发技术方案进行详细描述,相关原理同样适用于Vxlan(virtual Extended VLAN,虚拟扩展VLAN(Virtual Local Area Network,虚拟局域网),SPB技术其他的大二层协议构建的数据中心内的组播数据报文转发。本发明中,终端既可以是主机、网络设备也可以是虚拟机(virtualmachine)。
需要说明的是,本发明的上述实施例中,是IGMP、IGSP、PIM协议为例描述的,本领域技术人员应该可以理解,将上述协议替换为其它类似协议,依然可以采用本发明实施例的思想,实现本发明实施例所提供的组播转发技术方案,并可以达到相同或相似的技术效果。
本发明中,数据中心的设备根据关联于VLAN和组播组的TRILL的组播树维护对应的路由器端口(router port),不再通过IGMP报文的机制来维护路由器端口。数据中心的设备不需要将组播数据报文封装为TRILL报文。这样,网关设备对收到组播数据报文执行三层转发之前无需执行TRILL报文解封装处理。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (10)
1.一种组播数据报文转发方法,其特征在于,所述方法包括:
获取组播组在每个虚拟局域网内的指定路由器;
以所述每个指定路由器为树根计算一个多链接半透明互联TRILL组播树;
根据每个所述TRILL组播树计算一个朝向指定路由器的路由器端口;
接收组播数据报文,确定所述组播数据报文的VLAN ID和组播组地址对应的路由器端口;
如果确定的朝向指定路由器的路由器端口不同于所述组播数据报文的入接口,则通过确定的朝向指定路由器的路由器端口发送所述组播数据报文。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收IGMP报告报文;
将收到所述IGMP报告报文的端口记录为对应于所述IGMP报告报文的组播组地址和VLAN ID的成员端口;
识别所述IGMP报告报文的组播地址和VLAN ID对应的指定路由器和朝向指定路由器的端口;
根据识别的指定路由器的设备标识为所述IGMP报告报文执行TRILL封装;通过识别的朝向指定路由器的路由器端口发送TRILL封装的IGMP报告报文。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收TRILL封装的IGMP报告报文;
将收到所述TRILL封装的IGMP报告报文的端口记录为对应于收到的TRILL封装IGMP报告报文的组播组地址和VLAN ID的成员端口;
识别TRILL封装的IGMP报告报文的组播组地址和内层VLAN ID对应的朝向指定路由器的路由器端口,通过识别的朝向指定路由器的路由器端口收到的TRILL封装的IGMP报告报文。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
查找所述组播数据报文的组播组地址和VLAN ID对应的成员端口,通过查找到成员端口发送所述组播数据报文。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收IGMP离开组报文;
识别所述IGMP离开组报文的组播地址和VLAN ID对应的指定路由器和朝向指定路由器的端口;
根据识别的指定路由器的设备标识为所述IGMP离开组报文执行TRILL封装;通过识别的朝向指定路由器的路由器端口发送TRILL封装的IGMP离开组报文;
接收TRILL封装的IGMP特定组查询报文;
通过所述TRILL封装的IGMP特定组查询报文的组播组地址以及内层VLAN ID对应的成员端口发送解TRILL封装的IGMP离开组报文;
删除发送了IGMP特定组查询报文且预定时间内未收到IGMP报告报文的成员端口;
维持发送了IGMP特定组查询报文且预定时间收到IGMP报告报文的成员端口。
6.一种组播数据报文转发装置,其特征在于,所述装置包括:
组播协议处理单元,用于获取获取组播组在每个虚拟局域网VLAN内的指定路由器;以每个指定路由器为树根计算一个多链接半透明互联TRILL组播树;根据每个所述TRILL组播树计算一个朝向指定路由器的路由器端口;
组播数据处理单元,用于接收组播数据报文,确定所述组播数据报文的VLAN ID和组播组地址对应的路由器端口;如果确定的朝向指定路由器的路由器端口不同于所述组播数据报文的入接口,则通过确定的朝向指定路由器的路由器端口发送所述组播数据报文。
7.根据权利要求6所述的装置,其特征在于,所述组播协议处理单元,还用于接收IGMP报告报文;将收到所述IGMP报告报文的端口记录为对应于所述IGMP报告报文的组播组地址和VLAN ID的成员端口;识别所述IGMP报告报文的组播地址和VLAN ID对应的指定路由器和朝向指定路由器的端口;根据识别的指定路由器的设备标识为所述IGMP报告报文执行TRILL封装;通过识别的朝向指定路由器的路由器端口发送TRILL封装的IGMP报告报文。
8.根据权利要求6所述的装置,其特征在于,所述组播协议处理单元,还用于接收TRILL封装的IGMP报告报文;将收到所述TRILL封装的IGMP报告报文的端口记录为对应于收到的TRILL封装IGMP报告报文的组播组地址和VLAN ID的成员端口;识别TRILL封装的IGMP报告报文的组播组地址和内层VLAN ID对应的朝向指定路由器的路由器端口,通过识别的朝向指定路由器的路由器端口收到的TRILL封装的IGMP报告报文。
9.根据权利要求6所述的装置,其特征在于,所述组播数据处理单元,还用于查找所述组播数据报文的组播组地址和VLAN ID对应的成员,通过查找到成员端口发送所述组播数据报文。
10.根据权利要求6所述的装置,其特征在于,所述组播协议处理单元,还用于接收IGMP离开组报文;识别所述IGMP离开组报文的组播地址和VLAN ID对应的指定路由器和朝向指定路由器的端口;根据识别的指定路由器的设备标识为所述IGMP离开组报文执行TRILL封装;通过识别的朝向指定路由器的路由器端口发送TRILL封装的IGMP离开组报文;接收TRILL封装的IGMP特定组查询报文;通过所述TRILL封装的IGMP特定组查询报文的组播组地址以及内层VLAN ID对应的成员端口发送解TRILL封装的IGMP离开组报文;删除发送了IGMP特定组查询报文且预定时间内未收到IGMP报告报文的成员端口;维持发送了IGMP特定组查询报文且预定时间收到IGMP报告报文的成员端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310493796.4A CN104579980B (zh) | 2013-10-18 | 2013-10-18 | 一种组播数据报文转发方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310493796.4A CN104579980B (zh) | 2013-10-18 | 2013-10-18 | 一种组播数据报文转发方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104579980A true CN104579980A (zh) | 2015-04-29 |
CN104579980B CN104579980B (zh) | 2018-05-15 |
Family
ID=53095204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310493796.4A Active CN104579980B (zh) | 2013-10-18 | 2013-10-18 | 一种组播数据报文转发方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104579980B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105991302A (zh) * | 2015-03-20 | 2016-10-05 | 瞻博网络公司 | 可靠传输上使用注册的多播流覆盖 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008046359A1 (fr) * | 2006-10-20 | 2008-04-24 | Huawei Technologies Co., Ltd. | Procédé et appareil destinés à isoler les différents services d'un réseau local virtuel |
CN102142970A (zh) * | 2011-03-16 | 2011-08-03 | 华为技术有限公司 | 二层以太网络的组播树构建方法和网络节点设备 |
CN102299845A (zh) * | 2011-09-20 | 2011-12-28 | 神州数码网络(北京)有限公司 | 多链路透明互联多播帧传输方法和系统 |
-
2013
- 2013-10-18 CN CN201310493796.4A patent/CN104579980B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008046359A1 (fr) * | 2006-10-20 | 2008-04-24 | Huawei Technologies Co., Ltd. | Procédé et appareil destinés à isoler les différents services d'un réseau local virtuel |
CN102142970A (zh) * | 2011-03-16 | 2011-08-03 | 华为技术有限公司 | 二层以太网络的组播树构建方法和网络节点设备 |
CN102299845A (zh) * | 2011-09-20 | 2011-12-28 | 神州数码网络(北京)有限公司 | 多链路透明互联多播帧传输方法和系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105991302A (zh) * | 2015-03-20 | 2016-10-05 | 瞻博网络公司 | 可靠传输上使用注册的多播流覆盖 |
CN105991302B (zh) * | 2015-03-20 | 2020-11-13 | 瞻博网络公司 | 可靠传输上使用注册的多播流覆盖 |
Also Published As
Publication number | Publication date |
---|---|
CN104579980B (zh) | 2018-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103873373B (zh) | 一种组播数据报文转发方法及设备 | |
US9509522B2 (en) | Forwarding multicast data packets | |
CN104378297B (zh) | 一种报文转发方法及设备 | |
CN102035729B (zh) | 一种组播数据转发方法 | |
CN100596094C (zh) | 多点到多点的业务实现方法及交换设备 | |
CN103067286B (zh) | 一种组播数据传输方法和设备 | |
JP5462360B2 (ja) | モバイルマルチキャストソースからのマルチキャストトラヒックを共同処理するための複数のランデブーポイントにおける方法および装置 | |
CN103873368B (zh) | 以太网报文转发方法和接入设备 | |
CN103117935B (zh) | 应用于多归属组网的组播数据转发方法和装置 | |
CN104579981A (zh) | 一种组播数据报文转发方法及设备 | |
US9288067B2 (en) | Adjacency server for virtual private networks | |
CN104348726A (zh) | 报文转发方法和装置 | |
CN104539545B (zh) | Trill网络中的组播报文转发方法和设备 | |
CN104579704A (zh) | 组播数据报文的转发方法及装置 | |
CN104468139B (zh) | 一种组播数据报文转发方法及设备 | |
CN101009669B (zh) | 一种传输组播消息的方法和系统以及路由设备 | |
US9548887B2 (en) | Proactive creation of multicast state in an overlay transport network to achieve fast convergence on failover | |
CN104009919A (zh) | 报文转发方法及装置 | |
CN104468370A (zh) | 一种组播数据报文转发方法及设备 | |
CN104579980A (zh) | 一种组播数据报文转发方法及设备 | |
CN103780503B (zh) | 一种负载均衡的实现方法和设备 | |
CN104022954A (zh) | 报文转发方法及装置 | |
CN110324247A (zh) | 三层组播网络中的组播转发方法、设备及存储介质 | |
CN104079464B (zh) | 一种数据传输方法和设备 | |
CN102986178B (zh) | 稀疏模式协议无关组播中的组播转发方法和组播转发设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Applicant after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Applicant before: Huasan Communication Technology Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |