一种协议报文的传输方法和设备转让专利

申请号 : CN201410150571.3

文献号 : CN103944828B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨碧辉谢文珉

申请人 : 新华三技术有限公司

摘要 :

本发明公开了一种协议报文的传输方法和设备,该方法包括:SDN控制器为网络设备创建端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口;在收到来自网络设备的协议报文时,学习协议报文中携带的主机信息以及网络设备上收到协议报文的主机接口;在网络设备对应的端口组中添加所述主机接口,并向所述网络设备发送第二指示消息,所述第二指示消息用于指示所述网络设备在端口组中添加所述主机接口;向网络设备下发流表,所述流表中包括所述主机信息,并用于指示网络设备利用端口组中记录的交换机接口和/或主机接口发送所述协议报文。本发明实施例中,可以减少发送给SDN控制器的协议报文的数量,提高SDN控制器的处理性能。

权利要求 :

1.一种协议报文的传输方法,该方法应用于包括软件定义网络SDN控制器和多个网络设备的网络中,其特征在于,所述方法包括以下步骤:所述SDN控制器为各网络设备分别创建各网络设备对应的端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口;以及,分别向各网络设备发送第一指示消息,所述第一指示消息用于指示网络设备创建自身的端口组;由各网络设备在收到所述第一指示消息后,在本网络设备上创建自身的端口组,并在自身的端口组中记录本网络设备的交换机接口;

所述SDN控制器在收到来自网络设备的协议报文时,学习所述协议报文中携带的主机信息以及所述网络设备上收到所述协议报文的主机接口;

所述SDN控制器在所述网络设备对应的端口组中添加所述主机接口,并向所述网络设备发送第二指示消息,所述第二指示消息用于指示所述网络设备在自身的端口组中添加所述主机接口;由所述网络设备在收到所述第二指示消息后,在自身的端口组中添加所述主机接口;

所述SDN控制器分别向所述多个网络设备下发流表,且所述流表中包括所述协议报文中携带的主机信息;其中,所述流表用于指示网络设备在收到能够匹配所述协议报文中携带的主机信息的协议报文时,利用本网络设备自身的端口组中记录的交换机接口和/或主机接口发送所述协议报文。

2.如权利要求1所述的方法,其特征在于,所述SDN控制器在网络设备对应的端口组中记录该网络设备的交换机接口的过程,具体包括:所述SDN控制器根据当前网络拓扑计算出广播树,所述广播树内包含各网络设备的交换机接口,且交换机接口指网络设备与网络设备之间的接口;

所述SDN控制器利用所述广播树内包含的交换机接口在网络设备对应的端口组中记录该网络设备在所述广播树内的交换机接口。

3.如权利要求1所述的方法,其特征在于,所述SDN控制器学习协议报文中携带的主机信息以及网络设备上收到协议报文的主机接口,具体包括:所述SDN控制器接收来自所述网络设备的Packet in消息,所述Packet in消息中携带网络设备收到的协议报文,以及所述网络设备上收到所述协议报文的主机接口,且主机接口指网络设备与所述网络之外的主机之间的接口;

所述SDN控制器在识别出所述Packet in消息中携带的报文为协议报文时,则学习所述协议报文中携带的主机信息,并从所述Packet in消息中学习所述网络设备上收到所述协议报文的主机接口;其中,所述主机信息具体包括以下之一或者任意组合:源介质访问控制MAC地址、虚拟局域网VLAN信息、源IP地址、IP协议类型、以太网协议类型。

4.如权利要求1所述的方法,其特征在于,所述方法进一步包括:

所述SDN控制器在向网络设备下发流表时,所述流表中还包括老化时间和高优先级队列指示信息;所述老化时间大于所述协议报文中携带的报文发送间隔,所述高优先级队列指示信息用于指示网络设备优先发送能够匹配所述主机信息的协议报文;如果网络设备在老化时间超时之前收到能够匹配所述主机信息的协议报文,则更新所述流表的老化时间,如果网络设备在老化时间超时时未收到能够匹配所述主机信息的协议报文,则删除所述流表。

5.如权利要求1所述的方法,其特征在于,所述方法进一步包括:

当为各网络设备分别创建各网络设备对应的端口组之后,如果当前网络拓扑发生变化,则所述SDN控制器删除各网络设备分别对应的端口组,并向各网络设备分别发送第三指示消息,所述第三指示消息用于指示各网络设备删除自身的端口组;由各网络设备在收到所述第三指示消息后,在本网络设备上删除自身的端口组;所述SDN控制器根据变化后的网络拓扑重新为各网络设备分别创建各网络设备对应的端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口,并分别向各网络设备发送第一指示消息,由各网络设备在收到所述第一指示消息后,在本网络设备上创建自身的端口组,并在自身的端口组中记录本网络设备的交换机接口;

在网络设备对应的端口组中添加主机接口后,如果网络设备在预设时间内未通过所述主机接口收发协议报文,则所述SDN控制器从网络设备对应的端口组中删除所述主机接口,并向所述网络设备发送第四指示消息,所述第四指示消息用于指示网络设备在自身的端口组中删除所述主机接口;由所述网络设备在收到所述第四指示消息后,在自身的端口组中删除所述主机接口。

6.一种软件定义网络SDN控制器,应用于包括所述SDN控制器和多个网络设备的网络中,其特征在于,所述SDN控制器具体包括:记录模块,用于为各网络设备分别创建各网络设备对应的端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口;以及,分别向各网络设备发送第一指示消息,所述第一指示消息用于指示网络设备创建自身的端口组;由各网络设备在收到所述第一指示消息后,在本网络设备上创建自身的端口组,并在自身的端口组中记录本网络设备的交换机接口;

学习模块,用于在收到来自网络设备的协议报文时,学习所述协议报文中携带的主机信息以及所述网络设备上收到所述协议报文的主机接口;

添加模块,用于在所述网络设备对应的端口组中添加所述主机接口,并向所述网络设备发送第二指示消息,所述第二指示消息用于指示所述网络设备在自身的端口组中添加所述主机接口;由所述网络设备在收到所述第二指示消息后,在自身的端口组中添加所述主机接口;

下发模块,用于分别向所述多个网络设备下发流表,且所述流表中包括所述协议报文中携带的主机信息;其中,所述流表用于指示网络设备在收到能够匹配所述协议报文中携带的主机信息的协议报文时,利用本网络设备自身的端口组中记录的交换机接口和/或主机接口发送所述协议报文。

7.如权利要求6所述的SDN控制器,其特征在于,

所述记录模块,具体用于根据当前网络拓扑计算出广播树,所述广播树内包含各网络设备的交换机接口,且交换机接口指网络设备与网络设备之间的接口;以及,利用所述广播树内包含的交换机接口在网络设备对应的端口组中记录该网络设备在所述广播树内的交换机接口。

8.如权利要求6所述的SDN控制器,其特征在于,

所述学习模块,具体用于接收来自所述网络设备的Packet in消息,且所述Packet in消息中携带所述网络设备收到的协议报文,以及所述网络设备上收到所述协议报文的主机接口,且主机接口指网络设备与所述网络之外的主机之间的接口;以及,在识别出所述Packet in消息中携带的报文为协议报文时,则学习所述协议报文中携带的主机信息,并从所述Packet in消息中学习所述网络设备上收到所述协议报文的主机接口;其中,所述主机信息具体包括以下之一或者任意组合:源介质访问控制MAC地址、虚拟局域网VLAN信息、源IP地址、IP协议类型、以太网协议类型。

9.如权利要求6所述的SDN控制器,其特征在于,

所述下发模块,还用于在向网络设备下发流表时,使流表中还包括老化时间和高优先级队列指示信息;所述老化时间大于所述协议报文中携带的报文发送间隔,所述高优先级队列指示信息用于指示网络设备优先发送能够匹配所述主机信息的协议报文;如果网络设备在老化时间超时之前收到能够匹配所述主机信息的协议报文,则更新所述流表的老化时间,如果网络设备在老化时间超时时未收到能够匹配所述主机信息的协议报文,则删除所述流表。

10.如权利要求6所述的SDN控制器,其特征在于,

所述记录模块,还用于当为各网络设备分别创建各网络设备对应的端口组之后,如果当前网络拓扑发生变化,则删除各网络设备分别对应的端口组,并向各网络设备分别发送第三指示消息,所述第三指示消息用于指示各网络设备删除自身的端口组;由各网络设备在收到所述第三指示消息后,在本网络设备上删除自身的端口组;根据变化后的网络拓扑重新为各网络设备分别创建各网络设备对应的端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口,并分别向各网络设备发送第一指示消息,由各网络设备在收到所述第一指示消息后,在本网络设备上创建自身的端口组,并在自身的端口组中记录本网络设备的交换机接口;

所述添加模块,还用于在网络设备对应的端口组中添加主机接口后,如果网络设备在预设时间内未通过所述主机接口收发协议报文,则从网络设备对应的端口组中删除所述主机接口,并向所述网络设备发送第四指示消息,所述第四指示消息用于指示网络设备在自身的端口组中删除所述主机接口;由所述网络设备在收到所述第四指示消息后,在自身的端口组中删除所述主机接口。

说明书 :

一种协议报文的传输方法和设备

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种协议报文的传输方法和设备。

背景技术

[0002] SDN(Software Defined Network,软件定义网络)是一种新型网络创新架构,其核心思想是将控制层面与转发层面进行分离,以实现对网络流量的灵活控制,并为核心网络以及应用的创新提供良好的平台。如图1所示,为SDN的组网示意图,SDN控制器、SW1、SW2、SW3组成一个由OpenFlow协议搭建的SDN网络(又称为OpenFlow网络),SW1、SW2、SW3为SDN网络之内的交换机,RT1、RT2、RT3为SDN网络之外的路由器,且RT1、RT2、RT3之间交互的报文需要经过SDN网络的透传。在后续的相关描述中,SDN网络之内的交换机可以称为网络设备,且SDN网络之外的路由器可以称为主机。
[0003] 针对主机之间交互的组播报文,由于SDN控制器不会针对组播报文在网络设备上生成流表,因此网络设备在收到组播报文后,需要将收到的所有组播报文上送给SDN控制器进行处理。进一步的,由于网络设备在向SDN控制器上送报文时不会区分数据报文和协议报文,且网络设备能够上送给SDN控制器的报文数量有一定限制,因此当网络设备需要上送的报文很多时,会导致有些组播协议报文无法上送到SDN控制器,继而导致组播协议报文无法及时发送给主机,并造成组播协议报文的丢包。例如,针对主机之间交互的OSPF(Open Shortest Path First,最短路径优先)协议的hello报文(组播协议报文),当hello报文在SDN网络内发生丢包时,会导致主机之间无法正常建立邻居。

发明内容

[0004] 本发明实施例提供一种协议报文的传输方法和设备,以保证协议报文在SDN网络内的可靠传输,并且避免协议报文在SDN网络内的丢包。
[0005] 为了达到上述目的,本发明实施例提供一种协议报文的传输方法,该方法应用于包括SDN控制器和多个网络设备的网络中,所述方法包括以下步骤:
[0006] 所述SDN控制器为各网络设备分别创建各网络设备对应的端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口;以及,分别向各网络设备发送第一指示消息,所述第一指示消息用于指示网络设备创建自身的端口组;由各网络设备在收到所述第一指示消息后,在本网络设备上创建自身的端口组,并在自身的端口组中记录本网络设备的交换机接口;
[0007] 所述SDN控制器在收到来自网络设备的协议报文时,学习所述协议报文中携带的主机信息以及所述网络设备上收到所述协议报文的主机接口;
[0008] 所述SDN控制器在所述网络设备对应的端口组中添加所述主机接口,并向所述网络设备发送第二指示消息,所述第二指示消息用于指示所述网络设备在自身的端口组中添加所述主机接口;由所述网络设备在收到所述第二指示消息后,在自身的端口组中添加所述主机接口;
[0009] 所述SDN控制器分别向所述多个网络设备下发流表,且所述流表中包括所述协议报文中携带的主机信息;其中,所述流表用于指示网络设备在收到能够匹配所述协议报文中携带的主机信息的协议报文时,利用本网络设备自身的端口组中记录的交换机接口和/或主机接口发送所述协议报文。
[0010] 所述SDN控制器在网络设备对应的端口组中记录该网络设备的交换机接口的过程,具体包括:
[0011] 所述SDN控制器根据当前网络拓扑计算出广播树,所述广播树内包含各网络设备的交换机接口,且交换机接口指网络设备与网络设备之间的接口;
[0012] 所述SDN控制器利用所述广播树内包含的交换机接口在网络设备对应的端口组中记录该网络设备在所述广播树内的交换机接口。
[0013] 所述SDN控制器学习协议报文中携带的主机信息以及网络设备上收到协议报文的主机接口,具体包括:所述SDN控制器接收来自所述网络设备的Packet in消息,所述Packet in消息中携带网络设备收到的协议报文,以及所述网络设备上收到所述协议报文的主机接口,且主机接口指网络设备与所述网络之外的主机之间的接口;所述SDN控制器在识别出所述Packet in消息中携带的报文为协议报文时,则学习所述协议报文中携带的主机信息,并从所述Packet in消息中学习所述网络设备上收到所述协议报文的主机接口;其中,所述主机信息具体包括以下之一或者任意组合:源介质访问控制MAC地址、虚拟局域网VLAN信息、源IP地址、IP协议类型、以太网协议类型。
[0014] 所述方法进一步包括:
[0015] 所述SDN控制器在向网络设备下发流表时,所述流表中还包括老化时间和高优先级队列指示信息;所述老化时间大于所述协议报文中携带的报文发送间隔,所述高优先级队列指示信息用于指示网络设备优先发送能够匹配所述主机信息的协议报文;如果网络设备在老化时间超时之前收到能够匹配所述主机信息的协议报文,则更新所述流表的老化时间,如果网络设备在老化时间超时时未收到能够匹配所述主机信息的协议报文,则删除所述流表。
[0016] 所述方法进一步包括:
[0017] 当为各网络设备分别创建各网络设备对应的端口组之后,如果当前网络拓扑发生变化,则所述SDN控制器删除各网络设备分别对应的端口组,并向各网络设备分别发送第三指示消息,所述第三指示消息用于指示各网络设备删除自身的端口组;由各网络设备在收到所述第三指示消息后,在本网络设备上删除自身的端口组;所述SDN控制器根据变化后的网络拓扑重新为各网络设备分别创建各网络设备对应的端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口,并分别向各网络设备发送第一指示消息,由各网络设备在收到所述第一指示消息后,在本网络设备上创建自身的端口组,并在自身的端口组中记录本网络设备的交换机接口;
[0018] 在网络设备对应的端口组中添加主机接口后,如果网络设备在预设时间内未通过所述主机接口收发协议报文,则所述SDN控制器从网络设备对应的端口组中删除所述主机接口,并向所述网络设备发送第四指示消息,所述第四指示消息用于指示网络设备在自身的端口组中删除所述主机接口;由所述网络设备在收到所述第四指示消息后,在自身的端口组中删除所述主机接口。
[0019] 本发明实施例提供一种软件定义网络SDN控制器,应用于包括所述SDN控制器和多个网络设备的网络中,所述SDN控制器具体包括:
[0020] 记录模块,用于为各网络设备分别创建各网络设备对应的端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口;以及,分别向各网络设备发送第一指示消息,所述第一指示消息用于指示网络设备创建自身的端口组;由各网络设备在收到所述第一指示消息后,在本网络设备上创建自身的端口组,并在自身的端口组中记录本网络设备的交换机接口;
[0021] 学习模块,用于在收到来自网络设备的协议报文时,学习所述协议报文中携带的主机信息以及所述网络设备上收到所述协议报文的主机接口;
[0022] 添加模块,用于在所述网络设备对应的端口组中添加所述主机接口,并向所述网络设备发送第二指示消息,所述第二指示消息用于指示所述网络设备在自身的端口组中添加所述主机接口;由所述网络设备在收到所述第二指示消息后,在自身的端口组中添加所述主机接口;
[0023] 下发模块,用于分别向所述多个网络设备下发流表,且所述流表中包括所述协议报文中携带的主机信息;其中,所述流表用于指示网络设备在收到能够匹配所述协议报文中携带的主机信息的协议报文时,利用本网络设备自身的端口组中记录的交换机接口和/或主机接口发送所述协议报文。
[0024] 所述记录模块,具体用于根据当前网络拓扑计算出广播树,所述广播树内包含各网络设备的交换机接口,且交换机接口指网络设备与网络设备之间的接口;以及,利用所述广播树内包含的交换机接口在网络设备对应的端口组中记录该网络设备在所述广播树内的交换机接口。
[0025] 所述学习模块,具体用于接收来自所述网络设备的Packet in消息,且所述Packet in消息中携带所述网络设备收到的协议报文,以及所述网络设备上收到所述协议报文的主机接口,且主机接口指网络设备与所述网络之外的主机之间的接口;以及,在识别出所述Packet in消息中携带的报文为协议报文时,则学习所述协议报文中携带的主机信息,并从所述Packet in消息中学习所述网络设备上收到所述协议报文的主机接口;其中,所述主机信息具体包括以下之一或者任意组合:源介质访问控制MAC地址、虚拟局域网VLAN信息、源IP地址、IP协议类型、以太网协议类型。
[0026] 所述下发模块,还用于在向网络设备下发流表时,使流表中还包括老化时间和高优先级队列指示信息;所述老化时间大于所述协议报文中携带的报文发送间隔,所述高优先级队列指示信息用于指示网络设备优先发送能够匹配所述主机信息的协议报文;如果网络设备在老化时间超时之前收到能够匹配所述主机信息的协议报文,则更新所述流表的老化时间,如果网络设备在老化时间超时时未收到能够匹配所述主机信息的协议报文,则删除所述流表。
[0027] 所述记录模块,还用于当为各网络设备分别创建各网络设备对应的端口组之后,如果当前网络拓扑发生变化,则删除各网络设备分别对应的端口组,并向各网络设备分别发送第三指示消息,所述第三指示消息用于指示各网络设备删除自身的端口组;由各网络设备在收到所述第三指示消息后,在本网络设备上删除自身的端口组;根据变化后的网络拓扑重新为各网络设备分别创建各网络设备对应的端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口,并分别向各网络设备发送第一指示消息,由各网络设备在收到所述第一指示消息后,在本网络设备上创建自身的端口组,并在自身的端口组中记录本网络设备的交换机接口;
[0028] 所述添加模块,还用于在网络设备对应的端口组中添加主机接口后,如果网络设备在预设时间内未通过所述主机接口收发协议报文,则从网络设备对应的端口组中删除所述主机接口,并向所述网络设备发送第四指示消息,所述第四指示消息用于指示网络设备在自身的端口组中删除所述主机接口;由所述网络设备在收到所述第四指示消息后,在自身的端口组中删除所述主机接口。
[0029] 与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,SDN控制器通过向网络设备下发流表,以使网络设备在收到相应的协议报文时,能够利用端口组中记录的交换机接口和/或主机接口发送协议报文,而不需要将协议报文发送给SDN控制器,从而减少发送给SDN控制器的协议报文的数量,提高SDN控制器的处理性能,并节省了SDN控制器的CPU(中央处理器)资源;进一步的,由于不需要将协议报文发送给SDN控制器,因此,可以避免协议报文被拥塞丢弃导致的业务中断,可以提高协议报文在网络中传输的可靠性,避免协议报文在传输时被普通的数据报文拥塞导致丢包。

附图说明

[0030] 图1是现有技术中提出的SDN的组网示意图;
[0031] 图2是本发明实施例提供的一种协议报文的传输方法流程示意图;
[0032] 图3是本发明实施例提供的一种SDN控制器的结构示意图。

具体实施方式

[0033] 针对现有技术中存在的问题,本发明实施例提供一种协议报文的传输方法,该方法应用于包括SDN控制器和多个网络设备的网络中,该网络具体可以为SDN网络(通过OpenFlow协议搭建的SDN网络又称为OpenFlow网络)。
[0034] 以图1为本发明实施例的应用场景示意图,SDN网络之内的设备为网络设备,如SDN网络之内的交换机(SW1、SW2、SW3)为网络设备,SDN网络之外的设备(可以是交换机、路由器或者PC等)为主机,如SDN网络之外的路由器(RT1、RT2、RT3)为主机。本发明实施例中,网络设备与网络设备之间的接口为交换机接口(Switch接口),如SW1上的接口2和接口3、SW2上的接口4和接口5、SW3上的接口7和接口8,均是指交换机接口;网络设备与SDN网络之外的主机之间的接口为主机接口(Host接口),如SW1上的接口1、SW2上的接口6、SW3上的接口9,均是指主机接口。
[0035] 在上述应用场景下,如图2所示,该协议报文的传输方法包括以下步骤:
[0036] 步骤201,SDN控制器为各网络设备分别创建各网络设备对应的端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口,并分别向各网络设备发送第一指示消息;其中,该第一指示消息用于指示网络设备创建自身的端口组;由各网络设备在收到该第一指示消息后,在本网络设备上创建自身的端口组,并在自身的端口组中记录本网络设备的交换机接口。
[0037] 本发明实施例中,SDN控制器在网络设备对应的端口组中记录该网络设备的交换机接口的过程,具体包括:SDN控制器根据当前网络拓扑计算出广播树,该广播树内包含各网络设备的交换机接口;之后,SDN控制器利用广播树内包含的交换机接口在网络设备对应的端口组中记录该网络设备在广播树内的交换机接口。其中,SDN控制器根据当前网络拓扑计算广播树时,具体的广播树计算方式可以是采用深度优先算法计算广播树,或者采用广度优先算法计算广播树,具体的广播树计算方式本发明实施例中不再赘述。
[0038] 在图1所示的应用场景下,假设SDN控制器计算出的广播树中包含如下交换机接口:SW1上的接口3、SW2上的接口4和接口5、SW3上的接口8。则:SDN控制器为SW1创建端口组,该SW1的端口组内包括接口3;SDN控制器为SW2创建端口组,该SW2的端口组内包括接口4和接口5;SDN控制器为SW3创建端口组,该SW3的端口组内包括接口8。
[0039] 进一步的,SDN控制器向SW1发送用于指示SW1创建端口组的第一指示消息,由SW1在收到第一指示消息之后,在该SW1上创建端口组,且该端口组内包括接口3;此外,SDN控制器向SW2发送用于指示SW2创建端口组的第一指示消息,由SW2在收到第一指示消息之后,在该SW2上创建端口组,且该端口组内包括接口4和接口5;此外,SDN控制器向SW3发送用于指示SW3创建端口组的第一指示消息,由SW3在收到第一指示消息之后,在该SW3上创建端口组,且该端口组内包括接口8。
[0040] 步骤202,SDN控制器在收到来自网络设备的协议报文时,学习该协议报文中携带的主机信息以及该网络设备上收到该协议报文的主机接口。
[0041] 在具体实现过程中,网络设备在收到来自主机的协议报文时,如果没有该协议报文匹配的流表,则网络设备将该协议报文上送给SDN控制器;如果有该协议报文匹配的流表,则网络设备基于该流表对该协议报文进行转发,该过程在后续步骤中阐述;本步骤中以没有该协议报文匹配的流表为例。
[0042] 网络设备在将协议报文上送给SDN控制器时,网络设备向SDN控制器发送Packet in消息,且该Packet in消息中至少携带网络设备收到的协议报文,以及网络设备上收到协议报文的主机接口。基于此,本发明实施例中,SDN控制器学习协议报文中携带的主机信息以及网络设备上收到协议报文的主机接口的过程,具体包括:SDN控制器接收来自网络设备的Packet in消息,在识别出Packet in消息中携带的报文为协议报文时,学习该协议报文中携带的主机信息,并从该Packet in消息中学习网络设备上收到协议报文的主机接口。
[0043] 具体的,SDN控制器在收到Packet in消息之后,由于该Packet in消息中携带的报文中会有协议类型字段,基于此协议类型字段,SDN控制器可以直接识别出Packet in消息中携带的报文是否为协议报文,并在Packet in消息中携带的报文是协议报文时,识别出该协议报文的类型,如SDN控制器识别出该协议报文为基于OSPF协议的hello报文。此外,由于该协议报文中会携带主机信息,因此,SDN控制器可以直接学习该协议报文中携带的主机信息,且该主机信息具体包括但不限于以下之一或任意组合:源MAC(Media Access Control,介质访问控制)地址、VLAN(Virtual Local Area Network,虚拟局域网)信息、源IP地址、IP协议类型、以太网协议类型等。此外,由于Packetin消息中会携带网络设备上收到协议报文的主机接口,因此,SDN控制器可以直接从该Packet in消息中学习网络设备上收到协议报文的主机接口。
[0044] 在图1所示的应用场景下,SW1在收到来自RT1的协议报文之后,向SDN控制器发送Packet in消息,该Packet in消息中携带协议报文以及SW1上收到该协议报文的主机接口(即接口1);SDN控制器在收到来自SW1的Packet in消息之后,识别出Packet in消息中携带的报文为协议报文,从协议报文中学习RT1的主机信息,并从Packet in消息中学习到RT1上收到协议报文的主机接口为接口1。SW2在收到来自RT2的协议报文之后,向SDN控制器发送Packet in消息,该Packet in消息中携带协议报文以及SW2上收到该协议报文的主机接口(即接口6);SDN控制器在收到来自SW2的Packet in消息之后,识别出Packet in消息中携带的报文为协议报文,从协议报文中学习RT2的主机信息,并从Packet in消息中学习到RT2上收到协议报文的主机接口为接口6。SW3在收到来自RT3的协议报文之后,向SDN控制器发送Packet in消息,该Packet in消息中携带协议报文以及SW3上收到该协议报文的主机接口(即接口9);SDN控制器在收到来自SW3的Packet in消息之后,识别出Packet in消息中携带的报文为协议报文,从协议报文中学习RT3的主机信息,并从Packet in消息中学习到RT3上收到协议报文的主机接口为接口9。
[0045] 步骤203,SDN控制器在网络设备对应的端口组中添加主机接口(即步骤202中学习到的主机接口),并向该网络设备发送第二指示消息,该第二指示消息用于指示该网络设备在自身的端口组中添加该主机接口;由该网络设备在收到第二指示消息之后,在自身的端口组中添加该主机接口。
[0046] 在图1所示的应用场景下,SW1向SDN控制器发送Packet in消息时,SDN控制器学习到接口1(其为主机接口),在SW1的端口组中添加接口1,并向SW1发送用于指示SW1在自身的端口组中添加接口1的第二指示消息;基于此,SW1在收到第二指示消息之后,在自身的端口组中添加该接口1,此时SW1的端口组内包括接口3和接口1。SW2向SDN控制器发送Packet in消息时,SDN控制器学习到接口6(其为主机接口),在SW2的端口组中添加接口6,并向SW2发送用于指示SW2在自身的端口组中添加接口6的第二指示消息;基于此,SW2在收到第二指示消息之后,在自身的端口组中添加该接口6,此时SW2的端口组内包括接口4、接口5和接口6。SW3向SDN控制器发送Packet in消息时,SDN控制器学习到接口9(其为主机接口),在SW3的端口组中添加接口9,并向SW3发送用于指示SW3在自身的端口组中添加接口9的第二指示消息;基于此,SW3在收到第二指示消息之后,在自身的端口组中添加该接口9,此时SW3的端口组内包括接口8和接口9。
[0047] 步骤204,SDN控制器分别向多个网络设备下发流表,该流表中包括主机信息(即步骤202中学习到的协议报文中携带的主机信息),且该流表用于指示网络设备在收到能够匹配该主机信息的协议报文时,利用本网络设备自身的端口组中记录的交换机接口和/或主机接口发送该协议报文。
[0048] 在图1所示的应用场景下,假设SW1的端口组内包括接口3和接口1,SW2的端口组内包括接口4、接口5和接口6,SW3的端口组内包括接口8和接口9。则:针对RT1的协议报文,SDN控制器分别向SW1、SW2和SW3下发流表,该流表中将包括RT1的主机信息。基于此,SW1将通过接口1收到能够匹配RT1的主机信息的协议报文,此时SW1会通过端口组中记录的接口3(即端口组中记录的协议报文接收接口之外的其它所有接口)发送该协议报文。SW2将通过接口5收到能够匹配RT1的主机信息的协议报文,此时SW2会通过端口组中记录的接口4和接口6(即端口组中记录的协议报文接收接口之外的其它所有接口)发送该协议报文。SW3将通过接口8收到能够匹配RT1的主机信息的协议报文,此时SW3会通过端口组中记录的接口9(即端口组中记录的协议报文接收接口之外的其它所有接口)发送该协议报文。
[0049] 本发明实施例中,为了保证网络设备能够优先处理协议报文,还可以使协议报文的优先级优于数据报文的优先级。基于此,SDN控制器在向网络设备下发流表时,该流表中还可以包括高优先级队列指示信息,且该高优先级队列指示信息用于指示网络设备优先发送能够匹配主机信息的协议报文。
[0050] 本发明实施例中,SDN控制器在向网络设备下发流表时,该流表中还可以包括老化时间。基于此,如果网络设备在老化时间超时之前收到能够匹配主机信息的协议报文,则网络设备更新流表中的老化时间;如果网络设备在老化时间超时时均未收到能够匹配主机信息的协议报文,则网络设备直接删除该流表。在具体实现中,SDN控制器收到的来自网络设备的协议报文中还会携带报文发送间隔,因此SDN控制器下发的流表中包括的老化时间需要大于协议报文中携带的报文发送间隔,如老化时间为3倍的报文发送间隔。
[0051] 本发明实施例中,当SDN控制器为各网络设备分别创建各网络设备对应的端口组之后,如果当前网络拓扑发生变化,则SDN控制器还需要删除各网络设备分别对应的端口组,并向各网络设备分别发送第三指示消息,且该第三指示消息用于指示各网络设备删除自身的端口组;由各网络设备在收到该第三指示消息之后,在本网络设备上删除自身的端口组。进一步的,SDN控制器还需要根据变化后的网络拓扑重新为各网络设备分别创建各网络设备对应的端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口,并分别向各网络设备发送第一指示消息,由各网络设备在收到该第一指示消息之后,在本网络设备上创建自身的端口组,并在自身的端口组中记录本网络设备的交换机接口。其中,当前网络拓扑发生变化具体包括但不限于:网络设备之间的连接关系发生变化、有新的网络设备加入到SDN网络、有网络设备从SDN网络中移除等。此外,SDN控制器根据变化后的网络拓扑重新维护端口组的过程与上述步骤201中的处理类似,在此不再重复赘述。
[0052] 本发明实施例中,当SDN控制器在网络设备对应的端口组中添加主机接口后,如果网络设备在预设时间内未通过该主机接口收发协议报文,则说明该网络设备连接的所有主机已经故障或者移除,因此SDN控制器从网络设备对应的端口组中删除该主机接口,并向该网络设备发送第四指示消息,且该第四指示消息用于指示网络设备在自身的端口组中删除该主机接口;由该网络设备在收到该第四指示消息之后,在自身的端口组中删除所述主机接口。
[0053] 具体的,如果网络设备在老化时间超时时均未收到能够匹配主机信息的协议报文,则网络设备直接删除该流表,此时说明该流表对应的主机已经故障或者移除,即网络设备通过主机接口连接的该主机已经故障或者移除。进一步的,如果网络设备通过该主机接口没有连接其它主机,则说明网络设备通过该主机接口连接的所有主机已经故障或者移除,SDN控制器从该网络设备的端口组中删除该主机接口,并指示该网络设备在自身的端口组中删除该主机接口。如果网络设备通过该主机接口还连接有其它主机,则说明网络设备通过该主机接口连接的所有主机没有全部故障或者移除,SDN控制器不需要从该网络设备的端口组中删除该主机接口,一直到该网络设备通过该主机接口连接的所有主机故障或者移除,SDN控制器从该网络设备的端口组中删除该主机接口,并指示该网络设备在自身的端口组中删除该主机接口。
[0054] 本发明实施例的上述过程中,协议报文是指组播协议报文。当然上述处理过程也适用于单播协议报文,只是单播协议报文的处理过程与上述过程存在以下区别:(1)SDN控制器只需要向网络设备下发流表(该流表中包括主机信息),而不需要指示各网络设备维护端口组,由各网络设备直接基于流表发送协议报文。(2)流表中包括的主机信息具体包括但不限于以下之一或者任意组合:源MAC地址、目的MAC地址、VLAN信息、源IP地址、目的IP地址、IP协议类型、以太网协议类型等。
[0055] 本发明实施例的上述过程中,协议报文包括但不限于基于OSPF协议的协议报文、基于BGP(Border Gateway  Protocol,边界网关协议)协议的协议报文、基于ISIS(Intermediate System to Intermediate System,中间系统到中间系统)协议的协议报文、基于PIM DM(Protocol Independent Multicast Dense Mode,独立组播协议-密集模式)协议的协议报文、基于PIM SM(Protocol Independent Multicast-Sparse Mode,独立组播协议-稀疏模式)协议的协议报文。
[0056] 综上所述,本发明实施例中,SDN控制器通过向网络设备下发流表,以使网络设备在收到相应的协议报文时,能够利用端口组中记录的交换机接口和/或主机接口发送协议报文,而不需要将协议报文发送给SDN控制器,从而减少发送给SDN控制器的协议报文的数量,提高SDN控制器的处理性能,并节省了SDN控制器的CPU资源;由于不需要将协议报文发送给SDN控制器,因此可以避免协议报文被拥塞丢弃导致的业务中断,提高协议报文在网络中传输的可靠性,避免协议报文在传输时被普通的数据报文拥塞导致丢包。
[0057] 基于与上述方法同样的发明构思,本发明一实施例中还提供了一种软件定义网络SDN控制器,应用于包括所述SDN控制器和多个网络设备的网络(如SDN网络)中,如图3所示,所述SDN控制器具体包括:
[0058] 记录模块11,用于为各网络设备分别创建各网络设备对应的端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口;以及,分别向各网络设备发送第一指示消息,所述第一指示消息用于指示网络设备创建自身的端口组;由各网络设备在收到所述第一指示消息后,在本网络设备上创建自身的端口组,并在自身的端口组中记录本网络设备的交换机接口;
[0059] 学习模块12,用于在收到来自网络设备的协议报文时,学习所述协议报文中携带的主机信息以及所述网络设备上收到所述协议报文的主机接口;
[0060] 添加模块13,用于在所述网络设备对应的端口组中添加所述主机接口,并向所述网络设备发送第二指示消息,所述第二指示消息用于指示所述网络设备在自身的端口组中添加所述主机接口;由所述网络设备在收到所述第二指示消息后,在自身的端口组中添加所述主机接口;
[0061] 下发模块14,用于分别向所述多个网络设备下发流表,且所述流表中包括所述协议报文中携带的主机信息;其中,所述流表用于指示网络设备在收到能够匹配所述协议报文中携带的主机信息的协议报文时,利用本网络设备自身的端口组中记录的交换机接口和/或主机接口发送所述协议报文。
[0062] 所述记录模块11,具体用于根据当前网络拓扑计算出广播树,所述广播树内包含各网络设备的交换机接口,且交换机接口指网络设备与网络设备之间的接口;以及,利用所述广播树内包含的交换机接口在网络设备对应的端口组中记录该网络设备在所述广播树内的交换机接口。
[0063] 所述学习模块12,具体用于接收来自所述网络设备的Packet in消息,且所述Packet in消息中携带所述网络设备收到的协议报文,以及所述网络设备上收到所述协议报文的主机接口,且主机接口指网络设备与所述网络之外的主机之间的接口;以及,在识别出所述Packet in消息中携带的报文为协议报文时,则学习所述协议报文中携带的主机信息,并从所述Packet in消息中学习所述网络设备上收到所述协议报文的主机接口;其中,所述主机信息具体包括以下之一或者任意组合:源介质访问控制MAC地址、虚拟局域网VLAN信息、源IP地址、IP协议类型、以太网协议类型。
[0064] 所述下发模块14,还用于在向网络设备下发流表时,使流表中包括老化时间和高优先级队列指示信息;所述老化时间大于所述协议报文中携带的报文发送间隔,所述高优先级队列指示信息用于指示网络设备优先发送能够匹配所述主机信息的协议报文;如果网络设备在老化时间超时之前收到能够匹配所述主机信息的协议报文,则更新所述流表的老化时间,如果网络设备在老化时间超时时未收到能够匹配所述主机信息的协议报文,则删除所述流表。
[0065] 所述记录模块11,还用于当为各网络设备分别创建各网络设备对应的端口组之后,如果当前网络拓扑发生变化,则删除各网络设备分别对应的端口组,并向各网络设备分别发送第三指示消息,所述第三指示消息用于指示各网络设备删除自身的端口组;由各网络设备在收到所述第三指示消息后,在本网络设备上删除自身的端口组;根据变化后的网络拓扑重新为各网络设备分别创建各网络设备对应的端口组,并在网络设备对应的端口组中记录该网络设备的交换机接口,并分别向各网络设备发送第一指示消息,由各网络设备在收到所述第一指示消息后,在本网络设备上创建自身的端口组,并在自身的端口组中记录本网络设备的交换机接口;
[0066] 所述添加模块13,还用于在网络设备对应的端口组中添加主机接口后,如果网络设备在预设时间内未通过所述主机接口收发协议报文,则从网络设备对应的端口组中删除所述主机接口,并向所述网络设备发送第四指示消息,所述第四指示消息用于指示网络设备在自身的端口组中删除所述主机接口;由所述网络设备在收到所述第四指示消息后,在自身的端口组中删除所述主机接口。
[0067] 其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0068] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0069] 本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0070] 本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0071] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0072] 以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。