[0029] 以下是本发明的具体实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。
[0030] 实施例一
[0031] 如图2所示,本实施例一种基于SDN的IGMP Snooping处理系统,其包括SDN控制器和SDN交换机(S0、S1、S2、S3)。组播服务器通过SDN交换机S3发送IGMP 查询(IGMP Query)报文,对特定组播组进查询,组播客户端通过SDN交换机S1发送IGMP报告(IGMP Report)报文以提出连接请求,加入特定组播组。
[0032] SDN控制器根据来自SDN交换机的IGMP控制报文生成组播转发表,并根据所述组播转发表下发流表至SDN交换机;SDN交换机根据所述流表转发/丢弃IGMP数据报文。
[0033] SDN控制器应支持基于SDN的IGMP Snooping技术配置任务序列,应包括基于SDN的IGMP Snooping功能打开或者关闭。
[0034]配置项 含义
基于SDN的igmp snooping功能 打开或关闭基于SDN的igmp snooping功能[0035] IGMP控制报文封装在IP层上,具体包括IGMP查询(IGMP Report)报文、IGMP离开(IGMP Leave)报文、IGMP查询(IGMP Query)报文。
[0036] 组播客户端的IGMP Report报文,包含组播客户端指定要加入的特定组播组的组播IP地址。IGMP Report报文被成员端口接收,并按照一定格式被封装转发至SDN控制器;SDN控制器对接收到的报文进行解析,获得并学习该IGMP Report报文中包含的组播IP地址(组播IP地址,标识特定组播组的唯一标识),获得接收该IGMP Report报文的SDN交换机S1的MAC地址和端口号,并将该MAC地址和端口号作为成员端口信息,添加至组播转发表中。组播客户端完成特定组播组的加入。
[0037] 本实施例中,学习组播IP地址是指:SDN控制器获得组播IP地址以后,在本地查找是否已存在该组播IP地址的组播转发表,如果不存在,则为该特定组播组建立组播转发表。
[0038] 组播客户端的IGMP Leave报文,包含组播客户端指定要离开的特定组播组的组播IP地址。IGMP Leave报文被成员端口接收,并按照一定格式被封装为转发至SDN控制器;SDN控制器对接收到的报文进行解析,获得该IGMP Report报文中包含的组播IP地址,获得接收该IGMP Leave报文的SDN交换机S1的MAC地址和端口号,并将该MAC地址和端口号作为成员端口信息;根据获得的组播IP地址查找该特定组播组的组播转发表,将该成员端口信息从该组播转发表删除;如果该成员端口为该组播转发表中的最后一个成员端口,则直接将该组播转发表删除。
[0039] 组播服务器的IGMP Query报文,包含组播服务器指定要查询的特定组播组的组播IP地址。IGMP Query报文被查询端口接收,并按照一定格式被封装转发至SDN控制器;SDN控制器对接收到的报文进行解析,并按照一定格式被封装转发至SDN控制器;SDN控制器对接收到的报文进行解析,获得并学习该IGMP Report报文中包含的组播IP地址,获得接收该IGMP Query报文的SDN交换机S3的MAC地址和端口号,并将该MAC地址和端口号作为查询端口信息,添加至组播转发表中。最后,根据组播转发表下发流表。
[0040]
[0041] SDN交换机S0、S2,接收组播报文,并判断报文类型:
[0042] 如果为IGMP控制报文,则将该IGMP控制报文转发至SDN控制器;
[0043] 如果为IGMP数据报文,则进一步将该IGMP数据报文与SDN控制器下发的流表进行匹配:
[0044] 如果匹配成功,SDN交换机根据流表转发该IGMP数据报文;
[0045] 如果匹配失败,SDN交换机丢弃该IGMP数据报文。
[0046] SDN交换机和SDN控制器需要支持扩充流表,其定义如下表所示:Match字段 Counter字段 instruction字段
组播IP地址 对匹配成功的包进行计数 转发组播数据报文
[0047] IGMP数据报文与流表是否匹配,即判断IGMP数据报文中的组播IP地址与流表的Match字段中的组播IP地址是否匹配。
[0048] 基于上述实施例的IGMP Snooping处理系统的处理方法流程如图3所示,具体步骤如下:
[0049] 步骤1,SDN交换机发送未匹配流表的IGMP控制报文至SDN控制器;
[0050] 步骤2,SDN控制器通过解析获得IGMP控制报文、SDN交换机ID(SDN交换机的MAC地址)、SDN交换机端口信息(SDN交换机的端口号);
[0051] 步骤3,SDN控制器生成组播转发表;
[0052] 步骤4,SDN控制器根据组播转发表下发流表。
[0053] SDN控制器处理流程如图4。
[0054] 具体地,在步骤2的过程中,SDN控制器从SDN交换机接收IGMP控制报文,并判断IGMP控制报文类型,如果是IGMP Report报文,学习所述IGMP Report报文的组播IP地址信息,生成成员端口信息并添加至组播转发表。
[0055] 在步骤2的过程中,SDN控制器从SDN交换机接收IGMP控制报文,并判断IGMP控制报文类型,如果是IGMP Leave报文,判断该IGMP Leave报文对应的成员端口是否为组播转发表中的最后一个成员端口:如果是,则移除所述组播转发表;否则,将该成员端口对应的成员端口信息从组播转发表中移除。
[0056] 在步骤2的过程中,SDN控制器从SDN交换机接收IGMP控制报文,并判断IGMP控制报文类型,如果是IGMP Query报文,学习所述IGMP Query报文的组播IP地址,生成查询端口信息并添加至所述组播转发表。
[0057] SDN交换机处理流程如图5。
[0058] 具体地,在步骤1之前,进行步骤1-1:SDN交换机接收组播报文,判断报文类型是IGMP控制报文还是IGMP数据报文。
[0059] 进行步骤1-1中,如果判断报文类型是IGMP控制报文,则将IGMP控制报文发送至SDN控制器。
[0060] 进行步骤1-1中,如果判断报文类型是IGMP数据报文则进一步判断IGMP数据报文是否与SDN控制器下发的流表匹配。如果IGMP数据报文不匹配流表,SDN交换机丢弃该IGMP数据报文。如果IGMP数据报文匹配流表,则SDN交换机根据流表转发组播该IGMP数据报文。
[0061] 对本实施例所述的技术方案,进行测试,测试步骤如下:
[0062] 按照图6搭建测试环境:包括组播服务器、组播客户端A、组播客户端B、SDN控制器、SDN交换机S0、SDN交换机S1、SDN交换机S2、SDN交换机S3。组播客户端A与组播客户端B、以及组播服务器组成特定组播组。
[0063] 组播客户端A和组播客户端B发送IGMP Report报文加入特定组播组,组播客户端A和组播客户端B发送IGMP Leave报文离开特定组播组,组播服务器发送IGMP Query报文查询特定组播组信息和状态。SDN控制器根据接收到的IGMP控制报文维护组播转发表:SDN控制器根据接收到的IGMP Report报文和IGMP Query建立或者更新组播转发表,根据接收到的IGMP Leave报文删除组播转发表中的相关端口信息,或者删除整个组播转发表。
[0064] 组播流量的IGMP数据报文由组播服务器经SDN交换机S3发出,S3交换机接收到该IGMP数据流量以后,与下发流表进行匹配成功,根据流表将IGMP数据包转发至SDN交换机S1;SDN交换机S1接收到该IGMP数据以后,与下发流表进行匹配成功,发送至组播客户端A,并且将该IGMP数据转发至SDN交换机S0;SDN交换机S0接收到该IGMP数据以后,与下发流表进行匹配成功,发送至组播客户端B。
[0065] 本发明所采取的技术方案基于SDN架构,其SDN控制器根据IGMP控制报文生成全网络的组播转发表,并根据所述组播转发表下发流表,后续的组播流量根据所述流表进行转发,实现全网络的组播控制。
[0066] 本发明基于SDN的数据转发系统及方法具有稳定性高、配置简单、网络拓扑简单、可高效率实现全网的组播转发等诸多特点。
[0067] 本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。