CN105721318B - 一种软件定义网络sdn中发现网络拓扑的方法和装置 - Google Patents
一种软件定义网络sdn中发现网络拓扑的方法和装置 Download PDFInfo
- Publication number
- CN105721318B CN105721318B CN201610112998.3A CN201610112998A CN105721318B CN 105721318 B CN105721318 B CN 105721318B CN 201610112998 A CN201610112998 A CN 201610112998A CN 105721318 B CN105721318 B CN 105721318B
- Authority
- CN
- China
- Prior art keywords
- message
- interchanger
- topology
- port
- equipment
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
Abstract
本发明实施例提供一种软件定义网络SDN中发现网络拓扑的方法和装置,该方法包括:第一交换机通过第一端口从第一设备接收第一拓扑探测报文;第一交换机向SDN控制器发送对第一拓扑探测报文进行响应的第一拓扑应答报文,第一拓扑应答报文携带第一端口与第一设备的端口的连接信息;在接收到第一拓扑探测报文之后,第一交换机检测第一交换机的有效连接端口,其中,第一交换机通过有效连接端口与SDN中的其他设备相连,其他设备为SDN中的交换机或服务器;第一交换机生成第二拓扑探测报文,并通过第一交换机的有效连接端口将第二拓扑探测报文发送给其他设备。本发明实施例能提高拓扑发现的效率。
Description
技术领域
本发明实施例涉及通信领域,尤其涉及一种软件定义网络SDN中发现网络拓扑的方法和装置。
背景技术
软件定义网络(Software Defined Network,SDN)是一种新型的网络架构,它能摆脱硬件对网络架构的限制,并像升级或者安装软件一样对网络进行修改,SDN的本质是网络软件化,SDN与原来的网络架构相比能够更好、更简单的实现网络中的各种功能。
SDN的架构如图1所示,应用APP主要是完成用户意图的各种上层应用程序,SND控制器主要负责网络的业务部署、配置、管理网络设备以及监测网络状态等,由于确定网络拓扑是进行网络监控和路径计算的基础,因此在进行网络监控和路径计算之前,SDN控制器需要先确定SDN中交换机之间以及交换机和服务器的连接关系,也就是要确定SDN中的网络拓扑,下面结合图2对现有技术中的SDN控制器确定网络拓扑的过程进行详细的介绍。
如图2所示,SDN控制器确定网络拓扑的具体过程如下:
(1)SDN控制器与SDN中的每个交换机建立传输控制协议(Transmission ControlProtocol,TCP)连接;
(2)SDN控制器确定交换机S1的存在有效的端口1和端口2,SDN控制器分别为交换机S1的端口1和端口2创建第一链路层发现协议(Link Layer Discovery Protocol,LLDP)报文和第二LLDP报文;
(3)SDN控制器将第一LLDP报文和第二LLDP报文封装到第一消息中并发送给交换机S1;
(4)交换机S1处理第一消息,并分别从交换机S1的端口1和端口2分别发出第一LLDP报文和第二LLDP报文;
(5)交换机S2将从交换机S1的端口1接收到的第一LLDP报文封装到第二消息中,并将该第二消息发送到SDN控制器;
(5)交换机S3将从交换机S1的端口2接收到的LLDP报文封装到第二消息中,并将该第二消息发送到SDN控制器;
(6)SDN控制器在接收到第二消息后,解析该第二消息,获知第一LLDP报文和第二LLDP报文的发送路径,进而获取交换机S1和交换机S2以及交换机S1和交换机S3之间的连接关系;
(7)SDN控制器对交换机S2、交换机S3以及交换机S4重复上述步骤(1)至(6)获取全网的拓扑关系。
在现有技术中,SDN控制器需要事先与SDN中的每个交换机都建立TCP连接,然后确定每个交换机的有效端口数量,并为每个交换机的端口生成相应的LLDP报文,这样SDN控制器就需要产生大量的LLDP报文,并且要依次与每个交换机进行交互才能确定整个网络的拓扑关系,拓扑发现效率较低。
发明内容
本申请提供了一种SDN中发现网络拓扑的方法,以减少SDN控制器发送的拓扑探测报文的数量,提高拓扑发现的效率。
第一方面,提供一种软件定义网络SDN中发现网络拓扑的方法,包括:第一交换机通过第一端口从第一设备接收第一拓扑探测报文;所述第一交换机向SDN控制器发送对所述第一拓扑探测报文进行响应的第一拓扑应答报文,所述第一拓扑应答报文携带所述第一端口与所述第一设备的端口的连接信息;在接收到所述第一拓扑探测报文之后,所述第一交换机检测所述第一交换机的有效连接端口,其中,所述第一交换机通过所述有效连接端口与所述SDN中的其他设备相连,所述其他设备为所述SDN中的交换机或服务器;所述第一交换机生成第二拓扑探测报文,并通过所述第一交换机的有效连接端口将所述第二拓扑探测报文发送给所述其他设备。
应理解,上述第二拓扑探测报文可以是多个,例如,当第一交换机的有效连接端口为多个时,上述第二探测报文的就是多个,并且报文的数量与有效端口的数量是一致的。
现有技术是通过SDN控制器与网络中的每个交换机建立TCP连接,然后根据建立的TCP连接确定网络中每个交换机的有效端口数量,然后SDN控制器为每个交换机的每个端口生成一份LLDP报文,SDN控制器不仅要根据交换机的端口数量生成大量的报文,而且还要与每个交换机进行交互才能获取网络中的拓扑关系,拓扑发现的效率较低。而在本申请的方案中,交换机在接收到探测报文后能够确定本地是否存在与其他设备相连的有效端口,如果存在有效端口的话就可以根据接收到的探测报文生成新的探测报文,并通过这些有效端口将新的拓扑探测报文发送给其它设备,也就是说交换机能够根据接收到的拓扑探测报文产生新的拓扑探测报文,因此,SDN控制器只需要产生一份拓扑探测报文并发送给与SDN控制器直接相连的交换机即可,从而减少了SDN控制器产生的报文的数量,提高了拓扑发现效率。
结合第一方面,在第一方面的第一种实现方式中,所述方法还包括:所述第一交换机接收所述其他设备发送的响应所述第二拓扑探测报文的第二拓扑应答报文;所述第一交换机将所述第二拓扑应答报文转发给所述SDN控制器,所述第二拓扑应答报文携带所述有效连接端口与所述第二设备的端口的连接信息。
结合第一方面或者第一方面的第一种实现方式,在第一方面的第二种实现方式中,所述第一设备为所述SDN控制器或与所述第一交换机直连的其他交换机。
结合第一方面以及第一方面的第一种至第二种实现方式中的任意一种,在第一方面的第三种实现方式中,所述第一探测报文和所述第二探测报文为以太报文。
第二方面,提供一种交换机,所述交换机包括执行第一方面中的方法的模块。
第三方面,一种软件定义网络SDN中的通信系统,其特征在于,包括:SDN控制器以及多个第二方面中的交换机。
结合第三方面,在第三方面的第一种实现方式中,所述通信系统还包括:服务器,用于接收与所述服务器连接的交换机发送的拓扑探测报文,并向所述SDN控制器发送拓扑应答报文,所述拓扑应答报文携带所述服务器与所述交换机的连接信息。
在某些实现方式中,所述第一交换机通过第一端口从第一设备接收第一拓扑探测报文,包括:所述第一交换机通过所述第一端口接收所述第一设备发送的报文;如果所述报文的报文方向为0则确定所述报文为所述第一拓扑探测报文。
在某些实现方式中,所述第一交换机接收所述其他设备发送的响应第二拓扑探测报文的第二拓扑应答报文,包括:接收所述其他设备发送的报文,如果所述报文的报文方向为1则确定所述报文为所述第二拓扑应答报文。
在某些实现方式中,所述第一拓扑应答报文中的报文内容中的数据字段携带所述第一端口与所述第一设备的端口的连接信息。
在某些实现方式中,所述第一拓扑探测报文和所述第一拓扑应答报文的目的媒体访问控制(Media Access Control,MAC)地址为预先设置的组播MAC地址,所述组播MAC地址用于指示所述第一拓扑探测报文和所述第一拓扑应答报文是用于拓扑发现的报文。
在某些实现方式中,所述SDN控制器在所述SDN中的一个服务器上,所述服务器包括网卡,所述网卡用于向SDN中的设备发送拓扑探测报文以及接收所述SDN中的设备向所述SDN控制器发送的拓扑应答报文。
在某些实现方式中,所述第一交换机包括交换芯片和代理模块,所述交换芯片用于接收所述SDN中的其它设备发送给所述第一交换机的拓扑发现报文,其中,所述拓扑发现报文包括拓扑探测报文和拓扑应答报文,所述代理模块根据所述拓扑发现报文的报文方向判断所述拓扑发现报文为所述拓扑探测报文或拓扑应答报文,如果所述拓扑发现报文为所述拓扑探测报文,所述代理模块用于根据所述拓扑探测报文产生新的拓扑探测报文,并将所述新的拓扑探测报文发送给与所述第一交换机连接的其它设备,如果所述拓扑发现报文为所述拓扑应答报文,所述交换芯片将所述拓扑应答报文发送给所述SDN控制器。
在某些实现方式中,所述第一拓扑探测报文的源MAC地址为所述第一设备的MAC地址。
在某些实现方式中,所述第一交换机在接收到第一拓扑探测报文后,将所述第一拓扑探测报文的源MAC地址更改成所述第一交换机的MAC地址,并将所述第一交换机的端口信息增加到所述第一拓扑探测报文中,以生成所述第二拓扑探测报文。
本申请中,交换机在接收到拓扑探测报文后能够确定该交换机与其它设备连接的有效端口,并将生成的拓扑探测报文通过这些有效端口发送给其它的设备,也就是说交换机能够根据接收到的拓扑探测报文产生新的拓扑探测报文,因此,SDN控制器只需要产生一份拓扑探测报文并发送给与SDN控制器直接相连的交换机即可,从而减少了SDN控制器产生的报文的数量,提高了拓扑发现效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是SDN架构的示意图。
图2是现有技术中的SDN控制器发现网络拓扑的示意图。
图3是本发明实施例的SDN中发现网络拓扑的方法应用的数据中心网络的示意图。
图4是本发明实施例的SDN中发现网络拓扑的方法的示意性流程图。
图5是本发明实施例中的拓扑探测报文和拓扑应答报文的报文结构图。
图6是本发明实施例的SDN中发现网络拓扑的方法的示意性流程图。
图7是本发明实施例的SDN中发现网络拓扑的方法的示意性流程图。
图8是本发明实施例的SDN中发现网络拓扑的方法的示意性流程图。
图9是本发明实施例的SDN中发现网络拓扑的方法的示意性流程图。
图10是本发明实施例的SDN中发现网络拓扑的方法的示意性流程图。
图11是本发明实施例的SDN中发现网络拓扑的方法的示意性流程图。
图12是本发明实施例的交换机的示意性框图。
图13是本发明实施例的SDN中的通信系统的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在图2所示的现有技术中,要实现拓扑发现就必须在SDN控制器和交换机之间建立TCP连接,而对于有些网络中的交换机由于不支持传统的分布式协议,这种交换机就无法和SDN控制器之间建立管理通道,因此,无法进行拓扑发现。因此,图2所示的现有技术只适用于网络中的交换机支持传统的分布式协议的情况,也就是说现有技术并不能针对所有的二层网络进行拓扑发现。此外,在SDN控制器和交换机之间建立管理通道需要耗费一定的时间,这样会影响拓扑发现的效率。此外,SDN控制器通过向每个交换机发送报文来实现拓扑发现需要发送大量的报文,需要耗费大量的时间。为此,为了减少拓扑发现过程中SDN控制器发送的报文数量,减少拓扑发现的时间,提高拓扑发现的效率。本发明实施例的发现网络拓扑的方法通过使交换机在接收到SDN控制器发送的探测报文之后,能够根据与其它设备存在有效连接的端口信息生成新的拓扑探测报文,并将新的拓扑探测报文发送给其它设备,从而能够减少SDN控制器发送的探测报文的数量,并且不必在SDN控制器和交换机之间建立管理通道,使得SDN探测器只发出一份探测报文就可以根据交换机回复的应答报文来确定网路拓扑,减小了发现网络拓扑的时间,提高了发现网络拓扑的效率。
为了更好的理解本发明实施例的发现网络拓扑的方法和装置,下面结合具体的附图对本发明实施例的发现网络拓扑的方法和装置进行详细的描述。
图3是本发明实施例的SDN中发现网络拓扑的方法应用的数据中心网络的示意图。在图3中该数据中心网络由SDN控制器、服务器以及交换机组成,其中,SDN控制器作为软件模块运行在服务器上。SDN控制器负责产生拓扑探测报文以及解析拓扑应答报文,而SDN控制器所在服务器中的网卡负责向与其直接相连的交换机发送拓扑探测报文以及接收交换机发送的响应拓扑探测报文的拓扑应答报文。交换机中的交换芯片负责将拓扑应答报文或者拓扑探测报文选择端口发送出去,例如,交换机A有三个端口A1、A2和A3那么交换芯片就负责根据报文内容选择其中一个端口,将报文发送出去。此外,交换芯片在接收报文时还对报文进行判断,判断是否是拓扑发现报文(拓扑发现报文具体包括拓扑探测报文和拓扑应答报文,是拓扑发现过程中发送的一种报文),如果是的话就接收该报文,然后由代理模块对该拓扑发现报文具体是拓扑探测报文还是拓扑应答报文进行判断,判断出来之后进行相应的处理。应理解,这里的拓扑发现报文包括拓扑探测报文和拓扑应答报文。另外,其它服务器中也是由网卡负责报文的接收和发送,由代理模块进行报文的处理。应理解,这里的数据中心网络只是本发明所应用的SDN的一种具体形式,本发明实施例的SDN中发现网络拓扑的方法还可以应用在其它具体形式的SDN中。
图4示出了本发明实施例的SDN中发现网络拓扑的方法的示意性流程图,该方法的具体步骤如下:
101、SDN控制器查询本地节点的信息,并根据本地节点的信息产生拓扑探测报文,经本地端口将拓扑探测报文发出。
102、交换机1接收SDN控制器发送的拓扑探测报文,产生封装有SDN控制器和交换机1连接信息的拓扑应答报文并将该拓扑应答报文发送给SDN控制器,交换机1监测本地是否存在有效连接端口,如果存在则产生拓扑探测报文并从存在有效连接的端口将拓扑探测报文发出。其中,交换机1的某个端口与SDN控制器所在节点的本地端口直接相连。
103、SDN控制器接收交换机1发送的拓扑应答报文并解析此拓扑应答报文,从中获取SDN控制器与交换机1的连接信息并保存到本地拓扑信息库中。
104、交换机2和交换机3接收交换机1发送的拓扑探测报文,重复步骤102处理,产生拓扑应答报文,交换机2产生的拓扑应答报文包含交换机1与交换机2的连接信息,交换机3产生的拓扑应答报文包含交换机1与交换机3的连接信息。
105、交换机1接收交换机2和交换机3发送的拓扑应答报文,将拓扑应答报文转发给SDN控制器。
106、SDN控制器接收到交换机2和交换机3的应答报文拓扑应答报文后,从中获取交换机1与交换机2的连接信息以及交换机1与交换机3的连接信息并保存在本地拓扑信息库中。
107、服务器接收到拓扑探测报文,产生拓扑应答报文并将拓扑应答报文发送给SDN控制器。
108、交换机2、交换机3接收到服务器的拓扑应答报文后将拓扑应答报文转发给交换机1,交换机1接收到交换机2和交换机2转发的服务器产生的拓扑应答报文后,将服务器产生的拓扑应答报文转发给SDN控制器。
109、SDN控制器接收到服务器发送的拓扑应答报文,从应答报文中获取服务器与交换机的连接信息并保存在本地拓扑信息库中。
110、SDN控制器根据本地拓扑信息库保存的各个设备的连接关系获取SDN的网络拓扑。
图5示出了本发明实施例的拓扑发现报文的报文结构。如图5所示,拓扑发现报文可以采用以太报文头,该报文包括目的媒体访问控制(Media Access Control,MAC),源MAC,报文类型,报文内容以及报文的循环冗余码校验CRC值。
具体来说,报文的目的MAC为特定的组播MAC,该组播MAC是一个空闲MAC地址,也就是说该组播MAC是二层网络传输数据时用不到的MAC地址,从这些MAC地址中选择一个MAC作为特定的组播MAC,并约定由该特定的组播MAC来指示SDN控制器要进行拓扑发现的过程,而且,交换机在接收到这个报文后查看到该特定的组播MAC之后就知道SDN控制器要进行拓扑发现,这时交换机就向SDN控制器上报拓扑应答报文,并生成新的拓扑探测报文发送给其它的交换机或者服务器。
源MAC是指发送拓扑发现报文的设备的MAC地址。
报文内容包含报文的多种信息,具体而言,报文内容包括报文发向、跳指针、跳数、发送路径、返回路径以及报文数据。
报文方向用来指示报文是从SDN控制器向交换机扩散还是由交换机向SDN控制器扩散,当报文方向为0时报文从SDN控制器向外扩散,当报文方向为1时报文从交换机向SDN控制器扩散,此外,报文方向为0时报文也就是上文所述的拓扑探测报文,报文方向为1时报文也就是上文所述述拓扑应答报文。
跳指针用于指示发送当前拓扑发现报文时为第几跳。
跳数用于记录拓扑发现报文到达目的交换机或者服务器所需要的跳数。
发送路径用于记录报文的发送需要经过哪些设备以及从这些设备的哪些端口发送。
返回路径用于记录从当前设备将拓扑应答报文发送回SDN控制器需要经过哪些设备以及从这些设备的哪些端口发送。
报文数据用来记录拓扑发现的数据,对于拓扑应答报文来说,其具体形式为{<MAC_X,Port_X1>,<MAC_Y,Port_Y1>},它表示MAC地址为MAC_X的设备的X1端口与MAC地址为MAC_Y的设备的Y1端口相连,而对于拓扑探测报文来说,由于其作用是用于探测拓扑路径,因此该字段为空。
对于SDN控制器来说,其发出的拓扑探测报文的具体内容如下:目的MAC地址为特定的组播MAC,源MAC为SDN控制器本地端口的MAC,报文方向为0,跳指针为1,跳数为1,发送路径为[0,M]其中,M为SDN控制器发出拓扑探测报文的端口号,返回路径为[0],报文数据为空。
而对于与SDN控制器直接相连的交换机来说,在接收到SDN控制器发送的拓扑探测报文后,交换机生成的响应该拓扑探测报文的拓扑应答报文的具体内容如下:目的MAC地址为特定的组播MAC,源MAC为交换机的MAC,报文方向为1,跳指针为0,跳数为1,发送路径为[0,M,A1],返回路径为[0,A1],报文数据为空,其中A1为交换机与SDN控制器的M端口相连的端口。
图6示出了本发明实施例发现网络拓扑的方法的示意性流程图,该方法主要包括以下四个主要步骤:
1010、SDN控制器产生和发出拓扑探测报文;
1020、交换机接收并处理拓扑探测报文和拓扑应答报文;
1030、服务器接收并处理拓扑探测报文;
1040、SDN控制器接收并处理拓扑应答报文。
应理解,上述四个步骤是从网络中的各个设备执行的功能来划分的,SDN控制器为了发现网络拓扑要产生拓扑探测报文,并将拓扑探测报文发送给与其相连的交换机,接下来交换机会接收到拓扑探测报文和拓扑应答报文,并对拓扑探测报文进行处理,对拓扑应答报文进行转发,另外,服务器也要像交换机一样接收并处理拓扑探测报文,但是由于服务器一般位于网络连接的末端,因此服务器并不会接收到其它交换机或者服务器转发的拓扑应答报文。最后,SDN控制器接收和处理拓扑应答报文,对拓扑应答报文进行解析,确定网路的拓扑结构。
下面结合图7-10分别对步骤1010-1040进行详细的描述。
如图7所示,SDN控制器产生和发出拓扑探测报文的具体步骤如下:
201、SDN控制器启动拓扑发现;
202、SDN控制器查询SDN控制器驻留的本地节点的端口信息,端口信息具体包括本地节点的端口的MAC、端口号、并确定本地端口是否与另一个网络设备存在有效连接;
203、如果本地端口与另一个网络设备不存在有效连接,则拓扑发现结束
204、如果本地端口另一个网络设备存在有效连接,那么SDN控制器产生拓扑探测报文并从该本地端口向另一个网络设备发送该拓扑探测报文。
应理解,SDN控制器产生的拓扑探测报文和接收的拓扑应答报文都是在执行拓扑发现过程中产生的报文,这两种可以统称为拓扑发现报文。
如图8所示,交换机接收并处理拓扑探测报文和拓扑应答报文的具体步骤如下:
301、交换机接收拓扑发现报文;
302、交换机中的交换芯片判断拓扑发现报文的目的MAC是否为特定组播MAC,如果是则将拓扑发现报文发送至代理模块进行处理;
303、代理模块获得拓扑发现报文后,解析拓扑发现报文;
304、代理模块判断报文方向是否为0;
304、如果报文方向不为0的话,则拓扑发现报文为拓扑应答报文,根据当前的跳指针的值和返回路径找到对应的出端口,修改拓扑应答报文将跳指针减1,将拓扑应答报文下插到交换芯片并由刚刚查找到的出端口发出拓扑应答报文;
305、如果报文方向为0的话,则拓扑发现报文为拓扑探测报文,代理模块产生拓扑应答报文,并将拓扑应答报文下插到交换芯片由拓扑探测报文的入端口发出;
代理模块产生的拓扑应答报文的各个字段的组成如下:
目的MAC为特定组播MAC;
源MAC为交换机的MAC;
报文方向为1;
跳数等于拓扑探测报文中的跳数;
跳指针等于拓扑探测报文的跳指针减1;
发送路径与拓扑探测报文中的发送路径相同;
返回路径在拓扑探测报文中的返回路径的基础上增加拓扑探测报文到达本设备的入端口号;
报文数据部分为{<拓扑探测报文的源MAC,发送拓扑探测报文的端口号>,<交换机的本地MAC,交换机接收拓扑探测报文的端口号>}构成的数据字段。
306、确定SDN控制器的本地端口是否与另一个网络设备存在有效连接;
307、如果SDN控制器的本地端口与另一个网络设备存在有效连接,那么,SDN控制器产生拓扑探测报文并从本地端口发出。
具体来说,代理模块查询交换机除了接收到拓扑探测报文的端口以外是否还存在与其他网络设备存在有效连接的端口,如果不存在有效连接的端口,则代理模块处理结束;如果交换机还存在与其它网络设备存在有效连接的端口,则代理模块产生拓扑探测报文并从相应的端口发出。其中,新的拓扑探测报文各字段的组成如下:
目的MAC为特定组播MAC;
源MAC为交换机的MAC;
报文方向为0;
跳指针为接收到拓扑探测报文中的跳指针加1;
跳数等于接收到的拓扑探测报文中的跳数加1;
发送路径为在接收到的拓扑探测报文中的发送路径上增加本设备发出该拓扑探测报文的端口号;
发送路径与拓扑探测报文中的发送路径相同;
返回路径为在拓扑探测报文中的返回路径的基础上增加拓扑探测报文到达本设备的入端口号;
报文数据部分为空。
如图9所示,服务器接收并处理拓扑探测报文的具体步骤如下:
401、服务器接收到拓扑发现报文;
402、服务器的网卡判断报文的目的MAC是否为特定组播MAC,如果是则上送到代理模块进行处理;
403、代理模块解析拓扑发现报文;
404、代理模块判断报文方向是否为0;
405、如果报文方向为0,则确定拓扑发现报文为拓扑探测报文,代理模块产生拓扑应答报文,并将拓扑应答报文下插到服务器中的网卡发出,该拓扑应答报文的文各字段的组成如下:
目的MAC为特定组播MAC;
源MAC为服务器的MAC;
报文方向为1;
跳数等于接收到的拓扑探测报文中的跳数;
跳指针等于拓扑探测报文的跳指针减1;
发送路径与接收到的拓扑探测报文的发送路径相同;
返回路径为在拓扑探测报文中的返回路径的基础上增加拓扑探测报文到达本设备的入端口号;
报文数据部分为{<拓扑探测报文的源MAC,发送拓扑探测报文的端口号>,<服务器的本地MAC,服务器接收拓扑探测报文的端口号>}构成的数据字段。
如图10所示,SDN控制器接收并处理拓扑应答报文的具体步骤如下:
501、SDN控制器驻留节点的网卡接收到拓扑发现报文,并将拓扑发现报文送往SDN控制器处理;
502、SDN控制器解析拓扑发现报文,并判断报文方向是否为1;
503、如果报文方向为1,那么确定拓扑发现报文为拓扑应答报文,SDN控制器解析拓扑应答报文的报文内容,从报文内容中获取拓扑信息,并将拓扑信息保存在本地数据库中。
504、如果报文方向为0,那么确定拓扑发现报文为拓扑探测报文,处理过程结束。
以上结合图1至图10对本发明实施例的发现网络拓扑的方法的整个流程以及每个流程中的各个步骤进行了详细的描述,下面结合图11所示网络结构的实例对本发明实施例的发现网络拓扑的具体过程进行详细的介绍。
如图11所示,该网络结构包含SDN控制器、交换机A、交换机B、交换机C、交换机D、服务器E以及服务器F。其中,SDN控制器的本地端口MAC为MAC_Con、端口号为M,交换机A的设备MAC为MAC_A、端口号为A1、A2、A3,交换机B的设备MAC为MAC_B、端口号为B1、B2、B3,交换机C的设备MAC为MAC_C、端口号为C1、C2、C3,交换机D的设备MAC为MAC_D、端口号为D1、D2,服务器E的端口MAC为MAC_E、端口号为E1,服务器F的端口MAC为MAC_F、端口号为F1。
该网络架构中发现网络拓扑的具体步骤如下:
(一)拓扑探测报文的扩散
601、SDN控制器查询SDN控制器所在的本地节点信息,确定本地端口M与另一个设备存在有效连接,向M端口发出源MAC为MAC_Con的拓扑发现报文,该报文的各个字段的组成如下:报文方向=0,跳数=1,跳指针=1,发送路径=[0,M],返回路径=[0];
602、交换机A从A1端口收到SDN控制器发出的拓扑发现报文,将返回路径改为[0,A1];
交换机A从A1端口向SDN控制器发出拓扑应答报文,报文方向=1,跳数=1,跳指针=0,报文内容中的数据字段为{<MAC_Con,Port_M>,MAC_A,Port_A1>};
交换机A监测端口除了接收拓扑探测报文端口A1以外,A2和A3存在有效连接;
交换机A向A2端口发出含有MAC_A的拓扑探测报文,报文方向=0,跳数=2,跳指针=2,发送路径=[0,M,A2],返回路径=[0,A1]。
交换机A向A3端口发出源MAC为MAC_A的拓扑探测报文,报文方向=0,跳数=2,跳指针=2,发送路径=[0,M,A3],返回路径=[0,A1]。
603、交换机B从B1端口收到交换机A发出的拓扑发现报文,将返回路径改为[0,A1,B1];
交换机B从B1端口向SDN控制器发出拓扑应答报文,报文方向=1,跳数=2,跳指针=1,报文内容中的数据字段为{<MAC_A,Port_A2>,<MAC_B,Port_B1>};
交换机B监测端口除了接收拓扑探测报文端口B1以外,B2和B3存在有效连接;
交换机B向B2端口发出含有MAC_B的拓扑发现报文:报文方向=0,跳数=3,跳指针=3,发送路径=[0,M,A2,B2],返回路径=[0,A1,B1]。
交换机B向B3端口发出源MAC为MAC_B的拓扑发现报文:报文方向=0,跳数=3,跳指针=3,发送路径=[0,M,A2,B3],返回路径=[0,A1,B1]。
604、交换机C从C1端口收到交换机A发出的拓扑发现报文,将返回路径改为[0,A1,C1];
交换机C从C1端口向SDN控制器发出拓扑应答报文,报文方向=1,跳数=2,跳指针=1,报文内容中的数据字段为{<MAC_A,Port_A3>,<MAC_C,Port_C1>};
交换机C监测端口除了接收拓扑探测报文端口C1以外,C2和C3存在有效连接;
交换机C向C2端口发出源MAC为MAC_C的拓扑探测报文:报文方向=0,跳数=3,跳指针=3,发送路径=[0,M,A3,C2],返回路径=[0,A1,C1];
交换机C向C3端口发出含有MAC_C的拓扑发现报文:报文方向=0,跳数=3,跳指针=3,发送路径=[0,M,A3,C3],返回路径=[0,A1,C1]。
605、交换机B从B2端口收到交换机C发出的拓扑发现报文,将返回路径改为[0,A1,C1,B2];
交换机B从B2端口向SDN控制器发出拓扑应答报文,报文方向=1,跳数=3,跳指针=2,报文内容中的数据字段为{<MAC_C,Port_C2>,<MAC_B,Port_B2>};
交换机B监测端口B1,B2和B3存在有效连接且均已发送拓扑探测报文,不再重复发送拓扑探测报文;
交换机C从C2端口收到交换机B发出的拓扑探测报文,将返回路径改为[0,A1,B1,C2];
交换机C从C2端口向SDN控制器发出拓扑应答报文,报文方向=1,跳数=3,跳指针=2,报文内容中的数据字段为{<MAC_B,Port_B2>,<MAC_C,Port_C2>};
交换机C监测端口C1、C2和C3存在有效连接且均已发送拓扑探测报文,不再重复发送拓扑探测报文。
606、服务器E从E1端口收到交换机B发出的拓扑探测报文,将返回路径改为[0,A1,B1,E1];
服务器E从E1端口向SDN控制器发出拓扑应答报文,报文方向=1,跳数=3,跳指针=2,报文内容中的数据字段为{<MAC_B,Port_B3>,<MAC_E,Port_E1>}。
607、交换机D从D1端口收到交换机C发出的拓扑探测报文,将返回路径改为[0,A1,C1,D1];
交换机D从D1端口向SDN控制器发出拓扑应答报文,报文方向=1,跳数=3,跳指针=2,报文内容中的数据字段为{<MAC_C,Port_C3>,<MAC_D,Port_D1>};
交换机D监测端口除了接收拓扑探测报文端口D1以外,D2存在有效连接;
交换机D向D2端口发出源MAC为MAC_D的拓扑发现报文:报文方向=0,跳数=4,跳指针=4,发送路径=[0,M,A3,C3,D2],返回路径=[0,A1,C1,D1]。
608、服务器F从F1端口收到交换机D发出的拓扑发现报文,将返回路径改为[0,A1,C1,D1,F1];
服务器F从F1端口向SDN控制器发出拓扑应答报文,报文方向=1,跳数=4,跳指针=3,报文内容中的数据字段为{<MAC_D,Port_D2>,<MAC_F,Port_F1>}。
(二)拓扑应答报文的返回(这里以服务器E的拓扑应答报文为例进行说明)
609、服务器E从端口E1发出拓扑应答报文,报文方向=1,跳数=3,跳指针=2,返回路径=[0,A1,B1,E1],报文内容的数据字段为{<MAC_B,Port_B3>,<MAC_E,Port_E1>}。
610、交换机B接收到拓扑报文,根据报文方向为1判断该报文为拓扑应答报文;
交换机B根据当前跳指针为2确定转发端口为B1;
交换机B将跳指针改为1并从B1端口转发拓扑应答报文。
611、交换机A接收到拓扑报文,根据报文方向为1判断该报文为拓扑应答报文;
交换机A根据当前跳指针为1确定跳指针确定转发端口为A1;
交换机A将跳指针改为0并从A1端口转发拓扑应答报文。
612、SDN控制器接收到拓扑报文,根据报文方向为1判断该报文为拓扑应答报文。
SDN控制器解析拓扑应答报文,将报文内容的数据字段的拓扑信息存储到本地数据库。
上文结合图3-11对本发明实施例SDN中发现网络拓扑的方法进行了详细的介绍,下面结合图12描述本发明实施例的交换机。应理解,图12描述的交换机能够实现图3-11中所示的SDN中发现网络拓扑的方法的各个步骤,为了简洁,适当省略重复的描述。
图12是本发明实施例的交换机的示意性框图。该交换机200包括:
收发模块210,用于通过第一端口从第一设备接收第一拓扑探测报文;
所述收发模块210还用于向软件定义网络SDN控制器发送对所述第一拓扑探测报文进行响应的第一拓扑应答报文,所述第一拓扑应答报文携带所述第一端口与所述第一设备的端口的连接信息;
确定模块220,用于在所述收发模块接收到所述第一拓扑探测报文之后,检测所述交换机的有效连接端口,其中,所述交换机通过所述有效连接端口与所述SDN中的其他设备相连,所述其他设备为所述SDN中的交换机或服务器;
处理模块230,用于生成第二拓扑探测报文;
所述收发模块210还用于通过所述交换机的有效连接端口将所述第二拓扑探测报文发送给所述其他设备。
本发明实施例中,交换机在接收到拓扑探测报文后能够确定该交换机与其它设备连接的有效端口,并将生成的拓扑探测报文通过这些有效端口发送给其它的设备,也就是说交换机能够根据接收到的拓扑探测报文产生新的拓扑探测报文,因此,SDN控制器只需要产生一份拓扑探测报文并发送给与SDN控制器直接相连的交换机即可,从而减少了SDN控制器产生的报文的数量,提高了拓扑发现效率。
可选地,作为一个实施例,所述收发模块210还用于:接收所述其他设备发送的响应所述第二拓扑探测报文的第二拓扑应答报文;将所述第二拓扑应答报文转发给所述SDN控制器,所述第二拓扑应答报文携带所述有效连接端口与所述第二设备的端口的连接信息。
可选地,作为一个实施例,所述第一设备为所述SDN控制器或与所述第一交换机直连的其他交换机。
可选地,作为一个实施例,所述第一探测报文和所述第二探测报文为以太报文。
图13是本发明实施例的SDN中的通信系统的示意性框图。该通信系统300包括:
SDN控制器310以及多个如图12所示的交换机320。应理解,该通信系统包含一个SDN控制器310以及多个交换机320。
可选地,作为一个实施例,所述通信系统300还包括:服务器330,用于接收与所述服务器330连接的交换机320发送的拓扑探测报文,并向所述SDN控制器310发送拓扑应答报文,所述拓扑应答报文携带所述服务器330与所述交换机320的连接信息。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种软件定义网络SDN中发现网络拓扑的方法,其特征在于,包括:
第一交换机通过第一端口从第一设备接收第一拓扑探测报文;
所述第一交换机向SDN控制器发送对所述第一拓扑探测报文进行响应的第一拓扑应答报文,所述第一拓扑应答报文携带所述第一端口与所述第一设备的端口的连接信息;
在接收到所述第一拓扑探测报文之后,所述第一交换机检测所述第一交换机的有效连接端口,其中,所述第一交换机通过所述有效连接端口与所述SDN中的其他设备相连,所述其他设备为所述SDN中的交换机或服务器;
所述第一交换机生成第二拓扑探测报文,并通过所述第一交换机的有效连接端口将所述第二拓扑探测报文发送给所述其他设备。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一交换机接收所述其他设备发送的响应所述第二拓扑探测报文的第二拓扑应答报文;
所述第一交换机将所述第二拓扑应答报文转发给所述SDN控制器,所述第二拓扑应答报文携带所述有效连接端口与第二设备的端口的连接信息。
3.如权利要求1或2所述的方法,其特征在于,所述第一设备为所述SDN控制器或与所述第一交换机直连的其他交换机。
4.如权利要求1或2所述的方法,其特征在于,所述第一拓扑探测报文和所述第二拓扑探测报文为以太报文。
5.一种交换机,其特征在于,包括:
收发模块,用于通过第一端口从第一设备接收第一拓扑探测报文;
所述收发模块还用于向软件定义网络SDN控制器发送对所述第一拓扑探测报文进行响应的第一拓扑应答报文,所述第一拓扑应答报文携带所述第一端口与所述第一设备的端口的连接信息;
确定模块,用于在所述收发模块接收到所述第一拓扑探测报文之后,检测所述交换机的有效连接端口,其中,所述交换机通过所述有效连接端口与所述SDN中的其他设备相连,所述其他设备为所述SDN中的交换机或服务器;
处理模块,用于生成第二拓扑探测报文;
所述收发模块还用于通过所述交换机的有效连接端口将所述第二拓扑探测报文发送给所述其他设备。
6.如权利要求5所述的交换机,其特征在于,所述收发模块还用于:
接收所述其他设备发送的响应所述第二拓扑探测报文的第二拓扑应答报文;
将所述第二拓扑应答报文转发给所述SDN控制器,所述第二拓扑应答报文携带所述有效连接端口与第二设备的端口的连接信息。
7.如权利要求5或6所述的交换机,其特征在于,所述第一设备为所述SDN控制器或与所述交换机直连的其他交换机。
8.如权利要求5或6所述的交换机,其特征在于,所述第一拓扑探测报文和所述第二拓扑探测报文为以太报文。
9.一种软件定义网络SDN中的通信系统,其特征在于,包括:SDN控制器以及多个如权利要求5-8中任一项所述的交换机。
10.如权利要求9所述的通信系统,其特征在于,所述通信系统还包括:
服务器,用于接收与所述服务器连接的交换机发送的拓扑探测报文,并向所述SDN控制器发送拓扑应答报文,所述拓扑应答报文携带所述服务器与所述交换机的连接信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610112998.3A CN105721318B (zh) | 2016-02-29 | 2016-02-29 | 一种软件定义网络sdn中发现网络拓扑的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610112998.3A CN105721318B (zh) | 2016-02-29 | 2016-02-29 | 一种软件定义网络sdn中发现网络拓扑的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105721318A CN105721318A (zh) | 2016-06-29 |
CN105721318B true CN105721318B (zh) | 2018-12-25 |
Family
ID=56157141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610112998.3A Active CN105721318B (zh) | 2016-02-29 | 2016-02-29 | 一种软件定义网络sdn中发现网络拓扑的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105721318B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018049545A1 (zh) * | 2016-09-13 | 2018-03-22 | 深圳前海达闼云端智能科技有限公司 | Sdn中数据处理方法、装置、系统、电子设备和计算机程序产品 |
CN106411605B (zh) * | 2016-10-28 | 2019-05-31 | 北京奇虎科技有限公司 | 一种节点网络自组织方法、装置、服务器和系统 |
CN107070681B (zh) * | 2016-12-07 | 2020-10-09 | 全球能源互联网研究院有限公司 | 基于软件定义网络sdn的网络拓扑获取方法及装置 |
CN106992896B (zh) * | 2017-05-27 | 2019-07-23 | 迈普通信技术股份有限公司 | Sdn连接判断方法、设备和系统 |
CN107682270B (zh) * | 2017-09-13 | 2020-06-12 | 北京百卓网络技术有限公司 | 一种网络拓扑发现方法及装置 |
CN107508712B (zh) * | 2017-09-13 | 2020-09-18 | 北京百卓网络技术有限公司 | 一种网络拓扑发现方法及装置 |
CN108234194B (zh) * | 2017-12-08 | 2021-02-26 | 未鲲(上海)科技服务有限公司 | 基于sdn的网络拓扑结构发现方法、装置和存储介质 |
CN107947994B (zh) * | 2017-12-11 | 2020-11-10 | 日立楼宇技术(广州)有限公司 | 网络拓扑自发现方法、装置、网络设备及计算机存储介质 |
CN109982156B (zh) * | 2017-12-28 | 2021-06-22 | 浙江宇视科技有限公司 | 一种基于sdn的快速组播轮切方法、装置及系统 |
CN110557333A (zh) * | 2019-08-20 | 2019-12-10 | 广州供电局有限公司 | 软件定义网络服务质量控制保障的方法及系统 |
CN110768823A (zh) * | 2019-10-11 | 2020-02-07 | 南京理工大学 | 基于lldp的软件定义网络拓扑发现方法 |
CN111698122A (zh) * | 2020-06-12 | 2020-09-22 | 南京北星极网络科技有限公司 | 一种基于sdn的网络拓扑发现方法 |
CN113612636B (zh) * | 2021-07-28 | 2022-08-05 | 北京邮电大学 | 软件定义网络拓扑发现方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103179046A (zh) * | 2013-04-15 | 2013-06-26 | 昆山天元昌电子有限公司 | 基于openflow的数据中心流量控制方法及系统 |
CN104158747A (zh) * | 2013-05-14 | 2014-11-19 | 中兴通讯股份有限公司 | 网络拓扑发现方法和系统 |
CN104283790A (zh) * | 2014-10-09 | 2015-01-14 | 杭州华三通信技术有限公司 | Sdn中弹性分组环rpr的拓扑发现方法和设备 |
CN104753695A (zh) * | 2013-12-25 | 2015-07-01 | 上海宽带技术及应用工程研究中心 | Sdn网络拓扑结构的发现及实时呈现系统及方法 |
-
2016
- 2016-02-29 CN CN201610112998.3A patent/CN105721318B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103179046A (zh) * | 2013-04-15 | 2013-06-26 | 昆山天元昌电子有限公司 | 基于openflow的数据中心流量控制方法及系统 |
CN104158747A (zh) * | 2013-05-14 | 2014-11-19 | 中兴通讯股份有限公司 | 网络拓扑发现方法和系统 |
CN104753695A (zh) * | 2013-12-25 | 2015-07-01 | 上海宽带技术及应用工程研究中心 | Sdn网络拓扑结构的发现及实时呈现系统及方法 |
CN104283790A (zh) * | 2014-10-09 | 2015-01-14 | 杭州华三通信技术有限公司 | Sdn中弹性分组环rpr的拓扑发现方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105721318A (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105721318B (zh) | 一种软件定义网络sdn中发现网络拓扑的方法和装置 | |
CN105165054B (zh) | 网络服务故障处理方法,服务管理系统和系统管理模块 | |
CN107996023A (zh) | 监测虚拟网络的方法、设备和虚拟网络系统 | |
CN106100999A (zh) | 一种虚拟化网络环境中镜像网络流量控制协议 | |
CN110417915A (zh) | 一种推送消息传输方法、装置、存储介质及电子设备 | |
CN106878194B (zh) | 一种报文处理方法和装置 | |
CN105591912B (zh) | 一种转发路径的选择方法和装置 | |
CN103416022B (zh) | 分布式路由器/交换机架构中的服务中吞吐量测试方法和系统 | |
CN107306215B (zh) | 一种数据处理方法、系统及节点 | |
CN104253711B (zh) | 一种SDN网络中Openflow的Group表的管理方法和设备 | |
CN109246741A (zh) | 用于终端的无线网络连接方法 | |
CN104518936B (zh) | 链路动态聚合方法和装置 | |
CN113542008A (zh) | 一种网络的oam方法及装置 | |
US20170222953A1 (en) | User packet forwarding control method and processing node | |
CN105530115B (zh) | 一种实现操作管理维护功能的方法及装置 | |
CN103109497B (zh) | 用于测量网络中性能特性的互连设备的动态配置 | |
CN112583734A (zh) | 一种突发流量控制方法、装置、电子设备及存储介质 | |
AU2010256133B2 (en) | Method and apparatus for detecting ethernet operation, administration and maintenance (OAM) | |
CN104683252B (zh) | 一种应用于游戏网络的网关连入方法与系统 | |
CN110417687A (zh) | 一种报文发送与接收方法及装置 | |
CN108111423A (zh) | 流量传输管理方法、装置及网络分路设备 | |
CN110380981B (zh) | 一种流量分发方法及设备 | |
CN101990229B (zh) | 一种rnc的老化测试方法、设备、业务板和接口板 | |
CN109412851B (zh) | 链路层路径检测方法、装置及系统 | |
CN109639533A (zh) | 一种区域调度策略的测试方法、系统及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |