软件定义网络中报文转发方法、网络设备及软件定义网络转让专利

申请号 : CN201310176371.0

文献号 : CN104158749A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 彼得·艾斯伍德·史密斯

申请人 : 华为技术有限公司

摘要 :

本发明提供一种软件定义网络中报文转发方法,包括:网络设备接收报文;当报文中不存在路径信息时根据报文查询流表;若流表中不存在匹配的流转发表项,则缓存报文并将报文发送至控制器,接收控制器根据报文生成并下发的流转发表项,将所述流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。本发明中控制器仅需要将包括路径信息的流转发表项下发至报文转发路径的第一个网络设备,减少了控制器下发的数据量,同时也不影响SDN网络的扩展性。

权利要求 :

1.一种软件定义网络中报文转发方法,其特征在于,所述方法包括:网络设备接收报文;

当所述报文中不存在路径信息时,根据所述报文查询所述网络设备的流表;

若所述网络设备的流表中不存在与所述报文匹配的流转发表项,缓存所述报文,将所述报文或所述报文的报文头发送至控制器,并接收所述控制器根据所述报文的报文头以及网络拓扑结构创建的流转发表项,将所述流转发表项添加到所述网络设备的流表中,所述流转发表项中包括路径信息;

将所述流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。

2.如权利要求1所述方法,其特征在于,当所述报文中不存在路径信息时,所述方法还包括:若所述网络设备的流表中存在与所述报文匹配的流转发表项,则将所述匹配的流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。

3.如权利要求1或2所述方法,其特征在于,所述方法还包括:若所述报文中存在路径信息,则根据所述路径信息转发所述报文。

4.如权利要求1至3任一项所述方法,其特征在于,路径信息为报文的转发路径的端口号,具体包括报文的转发路径上依次经过的各个网络设备转发所述报文的转发端口的端口号。

5.如权利要求4所述方法,其特征在于,所述根据所述路径信息转发所述报文,具体包括:判断所述路径信息中是否存在未经转发的转发端口号;

当所述路径信息中不存在未经转发的转发端口号时,则去除所述报文中的路径信息并发送至所述报文中目的地址对应的设备;

当所述路径信息中存在未经转发的转发端口号时,根据所述路径信息判断所述网络设备转发所述报文的转发端口是否存在链路故障;

若所述转发端口存在链路故障,则将所述报文中的所述路径信息中的所述转发端口的端口号修改为所述转发端口对应的备用路径的端口号,并根据修改后的路径信息转发所述报文;

若所述转发端口不存在链路故障,则直接从所述转发端口转发所述报文。

6.一种网络设备,其特征在于,所述网络设备包括:

报文接收单元,用于接收报文;

流表查询单元,用于当所述报文中不存在路径信息时,根据所述报文查询所述网络设备的流表;

流表更新单元,用于当所述网络设备的流表中不存在与所述报文匹配的流转发表项时,缓存所述报文,将所述报文或所述报文的报文头发送至控制器,并接收所述控制器根据所述报文的报文头以及网络拓扑结构创建的流转发表项,将所述流转发表项添加到所述网络设备的流表中,所述流转发表项中包括路径信息;

报文转发单元,用于将所述流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。

7.如权利要求6所述网络设备,其特征在于,所述报文转发单元,还用于当所述网络设备的流表中存在与所述报文匹配的流转发表项时,将所述匹配的流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。

8.如权利要求6或7所述网络设备,其特征在于,所述报文转发单元,还用于当所述报文中存在路径信息时,根据所述路径信息转发所述报文。

9.如权利要求6-8任一项所述网络设备,其特征在于,路径信息为报文的转发路径的端口号,具体包括报文的转发路径上依次经过的各个网络设备转发所述报文的转发端口的端口号;

所述报文转发单元具体包括:

端口判断模块,用于判断所述路径信息中是否存在未经转发的转发端口号;

报文处理发送模块,用于当所述端口模块判断确定所述路径信息中不存在未经转发的转发端口号时,去除所述报文中的路径信息并发送至所述报文中目的地址对应的设备;

链路判断模块,用于当所述端口模块判断确定所述路径信息中存在未经转发的转发端口号时,根据所述路径信息判断所述网络设备转发所述报文的转发端口是否存在链路故障;

路径修改转发模块,用于当所述链路判断模块判断确定所述转发端口存在链路故障时,将所述报文中的所述路径信息中的所述转发端口的端口号修改为所述转发端口对应的备用路径的端口号,并根据修改后的路径信息转发所述报文;

报文直接转发模块,用于当所述链路判断模块判断确定所述转发端口不存在链路故障时,直接从所述转发端口转发所述报文。

10.一种软件定义网络,其特征在于,包括控制器和如权利要求6-9任一项所述的网络设备;

所述控制器,用于接收来自所述网路设备的报文或所述报文的报文头,根据所述报文的报文头以及网络拓扑结构创建流转发表项,所述流转发表项中包括路径信息,并将所述流转发表项发送至所述网络设备。

说明书 :

软件定义网络中报文转发方法、网络设备及软件定义网络

技术领域

[0001] 本发明属于网络通信技术领域,尤其涉及一种软件定义网络中报文转发方法、网络设备及软件定义网络。

背景技术

[0002] 软件定义网络(software defined networking,简称SDN)是当前网络通信领域的热门话题,因其开放性、灵活性得到各大网络设备厂商的大力追捧,各种新的技术方案层出不穷。在目前出现的SDN技术方案中,对网络设备,比如交换机,的管理,由一个称之为SDN控制器的设备进行集中控制,比较典型的是OpenFlow(开放流网络),OpenFlow网络包括交换机和控制器,交换机负责报文的转发,控制器对交换机进行集中控制,用户可以通过控制器下发流表到交换机,所述流表为定义的转发规则,交换机可以根据该规则把报文从一个端口转发到另一个端口,从而控制报文在网络中的转发路径,直至输出报文。
[0003] 参照图1,给出了通常的控制器下发流表的示意图,这里控制器101控制所有的网络设备102,根据网络设备上传的报文,给报文转发路径上的每一个网络设备下发一个流表,下发给各个网络设备的流表可一致也可不一致,各个网络设备获取到各自的流表之后保存至本地,流表中保存有网络设备转发报文的转发端口的端口号。当网络设备接收到一个报文之后,网络设备根据报文中的目的地址和源地址查询本地流表,找到对应的流表后,从所述流表所示的转发端口转发所述报文,下游的网络设备接收到该报文后,继续按照本地流表中的转发端口转发报文,直至输出报文。由于控制器需要将流表下发到转发路径上的每个网络设备上,随着网络规模的增长,网络设备越来越多,控制器需要下发的流表也会越来越多,控制器负荷越来越重,严重制约了网络规模。

发明内容

[0004] 鉴于上述问题,本发明的目的在于提供一种软件定义网络中报文转发方法、网络设备及软件定义网络,旨在解决现有控制器需要向转发路径上所有的网络设备下发流表,控制器负载大,制约网络规模的技术问题。
[0005] 第一方面,所述软件定义网络中报文转发方法包括:网络设备接收报文;当所述报文中不存在路径信息时,根据所述报文查询所述网络设备的流表;若所述网络设备的流表中不存在与所述报文匹配的流转发表项,缓存所述报文,将所述报文或所述报文的报文头发送至控制器,并接收所述控制器根据所述报文的报文头以及网络拓扑结构创建的流转发表项,将所述流转发表项添加到所述网络设备的流表中,所述流转发表项中包括路径信息;将所述流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。
[0006] 在第一方面的第一种可能的实现方式中,当所述报文中不存在路径信息时,所述方法还包括:若所述网络设备的流表中存在与所述报文匹配的流转发表项,则将所述匹配的流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。
[0007] 结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述方法还包括:若所述报文中存在路径信息,则根据所述路径信息转发所述报文。
[0008] 结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,路径信息为报文的转发路径的端口号,具体包括报文的转发路径上依次经过的各个网络设备转发所述报文的转发端口的端口号。
[0009] 结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述根据所述路径信息转发所述报文,具体包括:判断所述路径信息中是否存在未经转发的转发端口号;当所述路径信息中不存在未经转发的转发端口号时,则去除所述报文中的路径信息并发送至所述报文中目的地址对应的设备;当所述路径信息中存在未经转发的转发端口号时,根据所述路径信息判断所述网络设备转发所述报文的转发端口是否存在链路故障;若所述转发端口存在链路故障,则将所述报文中的所述路径信息中的所述转发端口的端口号修改为所述转发端口对应的备用路径的端口号,并根据修改后的路径信息转发所述报文;若所述转发端口不存在链路故障,则直接从所述转发端口转发所述报文。
[0010] 第二方面,所述软件定义网络中报文转发网络设备包括:报文接收单元,用于接收报文;流表查询单元,用于当所述报文中不存路径信息时,根据所述报文查询所述网络设备的流表;流表更新单元,用于当所述网络设备的流表中不存在与所述报文匹配的流转发表项时,缓存所述报文,将所述报文或所述报文的报文头发送至控制器,并接收所述控制器根据所述报文的报文头以及网络拓扑结构创建的流转发表项,将所述流转发表项添加到所述网络设备的流表中,所述流转发表项中包括路径信息;报文转发单元,用于将所述流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。
[0011] 在第二方面的第一种可能的实现方式中,所述报文转发单元,还用于当所述网络设备的流表中存在与所述报文匹配的流转发表项时,将所述匹配的流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。
[0012] 结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述报文转发单元,还用于当所述报文中存在路径信息时,根据所述路径信息转发所述报文。
[0013] 结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,路径信息为报文的转发路径的端口号,具体包括报文的转发路径上依次经过的各个网络设备转发所述报文的转发端口的端口号;所述报文转发单元具体包括:端口判断模块,用于判断所述路径信息中是否存在未经转发的转发端口号;报文处理发送模块,用于当所述端口模块判断确定所述路径信息中不存在未经转发的转发端口号时,去除所述报文中的路径信息并发送至所述报文中目的地址对应的设备;链路判断模块,用于当所述端口模块判断确定所述路径信息中存在未经转发的转发端口号时,根据所述路径信息判断所述网络设备转发所述报文的转发端口是否存在链路故障;路径修改转发模块,用于当所述链路判断模块判断确定所述转发端口存在链路故障时,将所述报文中的所述路径信息中的所述转发端口的端口号修改为所述转发端口对应的备用路径的端口号,并根据修改后的路径信息转发所述报文;报文直接转发模块,用于当所述链路判断模块判断确定所述转发端口不存在链路故障时,直接从所述转发端口转发所述报文。
[0014] 第三方面,所述软件定义网络包括控制器和上述方案所述的网络设备,所述控制器,用于接收来自所述网路设备的报文或所述报文的报文头,根据所述报文的报文头以及网络拓扑结构创建流转发表项,所述流转发表项中包括路径信息,并将所述流转发表项发送至所述网络设备。
[0015] SDN网络包括控制器以及多个网络设备,本发明技术方案中,当网络设备接收一个报文时,若报文中不存在路径信息,并且本地流表中也不存在与所述报文相匹配的流转发表项,说明待转发的报文是一个新报文,此时网络设备将所述报文或报文中的报文头发送给控制器,控制器再根据报文头以及当前的SDN网络拓扑结构创建流转发表项,所述流转发表项中包括路径信息,所述网络设备接收到所述创建的流转发表项后,将所述流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文,下游的网络设备再根据接收到报文中的路径信息继续转发报文,直至将报文转发至目的地址对应的设备,与现有技术相比,本发明中控制器仅需要将流转发表项下发至向其发送报文或报文头的网络设备,无需将流转发表项下发到转发路径上的所有网络设备,这样减少了控制器下发的数据量,避免了网络堵塞,同时也不影响SDN网络扩展。

附图说明

[0016] 图1是现有技术中控制器下发流表的示意图;
[0017] 图2是本发明实施例提供的一种软件定义网络中报文转发方法的流程图;
[0018] 图3是本发明实施例提供的一种报文转发示意图;
[0019] 图4是本发明实施例提供的另一种报文转发示意图;
[0020] 图5是本发明实施例提供的一种网络设备的结构框图;
[0021] 图6是本发明实施例提供的另一网络设备的结构框图;
[0022] 图7是本发明实施例提供的一种软件定义网络的结构图。

具体实施方式

[0023] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0024] 本发明技术方案通过改变SDN网络中控制器下发的流转发表项和下发流转发表项的方式,提供了一种SDN网络中新的报文转发方式,以实现SDN网络优化。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。图2示出了本发明实施例提供的一种软件定义网络中报文转发方法的实现流程,该方法的执行主体为网络设备,具体包括:
[0025] 步骤S201、网络设备接收报文。
[0026] SDN网络中有多个网络设备,各个网络设备与控制器有线或无线连接,对于SDN网络中的任一网络设备,其接收到的报文可能来自于网络外也可能来自于上一网络设备,当网络设备接收到的报文来自于网络外时,表明当前网络设备为报文转发路径上的第一个网络设备,当网络设备接收到的报文来自于上一网络设备时,表明当前网路设备为报文转发路径上的中间网络设备。
[0027] 步骤S202、当所述报文中不存在路径信息时,根据所述报文查询所述网络设备的流表。
[0028] 网络设备在接收到报文后,解析报文并判断报文中是否存在路径信息,若不存在路径信息,表明网络设备接收到的报文来自于网络外,当前网络设备为转发报文的第一个网络设备。网络设备中保存有流表,所述流表可以为空表,或者可能在先前的转发报文过程中,已保存一个或多个流转发表项,每个流转发表项包含了在SDN网络中转发报文的路径信息。在本步骤中,当接收到的报文中不存在路径信息时,可以根据所述报文查询所述网络设备的流表,具体可以根据所述报文的源地址和目的地址,查询所述网络设备的流表中是否有与所述接收到的报文匹配的流转发表项。
[0029] 步骤S203、若所述网络设备的流表中不存在与所述报文匹配的流转发表项,缓存所述报文,将所述报文或所述报文的报文头发送至控制器,并接收所述控制器根据所述报文的报文头以及网络拓扑结构创建的流转发表项,将所述流转发表项添加到所述网络设备的流表中,所述流转发表项中包括路径信息。
[0030] 本实施例中,作为一种实现方式,流转发表项包括转发报文的源地址、目的地址以及路径信息,网络设备接收到报文后,根据报文中的源地址和目的地址查询网络设备中的流表,当流表中没有与所述报文的源地址、目的地址一致的流转发表项时,即可认定所述网络设备的流表中不存在与所述报文匹配的流转发表项,表明网络设备接收到的报文为首包,此时网络设备缓存所述报文,将所述报文或者所述报文的报文头发送至控制器。由于SDN网络中所有的网络设备,如交换机,都受控制器控制,因此控制器知悉网络组网的拓扑结构,即网络设备的转发端口间的连接关系,控制器根据报文中的报文头,即报文的源地址和目的地址,并结合网络拓扑结构创建一个流转发表项,然后控制器将该流转发表项下发至所述网络设备。需要说明的是,本实施例中控制器只向一个网络设备下发流转发表项,不是向报文转发路径中所有的网络设备下发流转发表项。
[0031] 网络设备接收到控制器下发的流转发表项后,将所述流转发表项添加到所述网络设备的流表中,以保证流表及时更新,待下次转发具有相同源地址和目的地址的报文时,直接查询流表,找到匹配的流转发表项,在根据找的所述流转发表项中的路径信息转发所述报文即可。
[0032] 步骤S204、将所述流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。
[0033] 网络设备在转发报文前,还需将接收到的流转发表项中的路径信息添加到所述报文中,再根据所述路径信息转发所述报文,以使得下游网络设备在接收到所述报文后,可以根据所述报文中的路径信息继续转发所述报文。
[0034] 可选地,当所述报文中不存在路径信息时,所述方法还包括:
[0035] 步骤S205、若所述网络设备的流表中存在与所述报文匹配的流转发表项,则将所述匹配的流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。
[0036] 网络设备接收到报文后,根据报文中的源地址和目的地址查询网络设备中的流表,当流表中有与所述报文的源地址、目的地址一致的流转发表项时,即可认定所述网络设备的流表中存在与所述报文相匹配的流转发表项,表明网络设备接收到的报文并非为首包,此时将查询得的流转发表项中的路径信息添加到所述报文中,并根据其中的路径信息转发所述报文。
[0037] 可选的,当所述报文中存在路径信息时,所述方法还包括:
[0038] 步骤S206、若所述报文中存在路径信息,则根据所述路径信息转发所述报文。
[0039] 本步骤中,当所述报文中存在路径信息时,表明所述网络设备接收到的报文来自于SDN网络中的上游网络设备,报文中已经添加有路径信息,网络设备直接根据报文中的路径信息转发接收到的报文即可。在本实施例及其各个优选实现方式中,作为一种具体实现方式,路径信息为报文的转发路径的端口号,具体包括报文的转发路径上依次经过的各个网络设备转发所述报文的转发端口的端口号。流表中的每条流转发表项包含有源地址、目的地址和路径信息,例如可以表示为[1,4,3],其中S和D分别表示报文的源地址和目的地址,[1,4,3]表示路径信息,是报文依次经过的网络设备上的转发端口号。
[0040] 上述步骤S204-S206中均包含有根据路径信息转发报文的过程,为了便于理解上述报文转发过程,参照图3,给出了一种具体的报文转发示意图,图示中SDN网络包括网络设备a、b、c、d、e、f、g,图示中标识了各个网络设备间的端口连接关系,比如网络设备c的端口2和网络设备d的端口1连接等。假设网络设备c接收到一报文p1,源地址为S,目的地址为D,若该报文p1为数据流(通常将一组具有相同源地址和目的地址的报文称为一个数据流)的首包,那么网络设备c的流表中不存在与所述报文p1匹配的流转发表项,此时将所述报文p1或所述报文p1的报文头发送至控制器C,控制器C根据源地址S、目的地址D以及网络拓扑结构,建立一条流转发表项,假设为[1,4,3],其中[1,4,3]表示路径信息,控制器C将所述流转发表项只发送至网络设备c,而不会发送给报文p1的转发路径上的其他网络设备。网络设备c接收控制器C下发的所述流转发表项,再将所述流转发表项添加到网络设备c的流表中,并将路径信息[1,4,3]添加到所述报文p1中,得到包括路径信息的报文p1’。然后网络设备c根据路径信息中第一个端口号,从网络设备c的端口号为1的转发端口,转发所述报文p1’至下游网络设备f,网络设备f分析所述报文p1’,发现报文p1’中有路径信息,再根据路径信息[1,4,3]中第二个转发端口号,从网络设备f的端口为4的转发端口,将报文p1’转发至网络设备g,网络设备g同理再将报文p1’转发至网络设备e,最后网络设备e去除报文p1’中的路径信息[1,4,3],得到原始的报文p1,并根据报文p1中的目的地址,将报文p1发送至目的地址对应的设备,这样就完成了报文p1在网络中的转发。当网络设备c再次收到该数据流的报文,即与所述报文p1具有相同源地址和目的地址的报文时,网络设备c查找流表,发现流表中存在与所述报文相匹配的流转发表项,获取所述流表转发表项中的路径信息,并将所述路径信息添加到报文中,网络设备c、f、g、e依次转发所述报文,并在网络设备e去除报文中的路径信息,得到原始报文并发送至目的地址对应的设备。
[0041] 图3示出的是一种通常的报文转发示意图,然而在实际转发报文过程中,网络设备的转发端口可能会出现链路故障,因此上述步骤S204或步骤S205或步骤S206中根据路径信息转发报文的步骤具体可以包括:
[0042] 判断所述路径信息中是否存在未经转发的转发端口号;
[0043] 当所述路径信息中不存在未经转发的转发端口号时,则去除所述报文中的路径信息并发送至所述报文中目的地址对应的设备;
[0044] 当所述路径信息中存在未经转发的转发端口号时,根据所述路径信息判断所述网络设备转发所述报文的转发端口是否存在链路故障;
[0045] 若所述转发端口存在链路故障,则将所述报文中的所述路径信息中的所述转发端口的端口号修改为所述转发端口对应的备用路径的端口号,并根据修改后的路径信息转发所述报文;
[0046] 若所述转发端口不存在链路故障,则直接从所述转发端口转发所述报文。
[0047] 上述根据路径信息转发报文的具体步骤中,每个网路设备在转发报文前还需判断路径信息中是否存在未经转发的转发端口号,当存在未经转发的端口号时,再进一步判断所述转发端口是否存在链路故障。为了便于理解,参照图4,示出了另一种报文转发示意图,假设网络设备f和网络设备g之间的转发端口存在链路故障,对于首包,假设为报文p1,网络设备c将报文p1或报文p1的报文头发送给控制器C,控制器C生成一条流转发表项,假设为[1,4,3],根据路径信息[1,4,3],网络设备c将路径信息添加到报文p1中得到包括路径信息的报文p1’。然后,网络设备c通过端口1将报文p1’发送至网络设备f,网络设备f读取报文p1’中的路径信息,通过第二个端口号,即端口号为4的转发端口,准备将报文p1’发送至网络设备g,但是此时检测到转发端口4存在链路故障,此时将路径信息中存在链路故障的转发端口4修改为对应的备用路径的转发端口号,假设修改为备用路径[2,5]的转发端口号,最终修改后的路径信息变成为[1,2,5,3],得到报文p1’’,网络设备f再将报文p1’’通过转发端口2发送至网络设备d,网络设备d将报文p1’’通过转发端口5发送至网络设备g,网络设备g再将报文p1’’通过转发端口3发送至网路设备e,上述各个网络设备在转发报文之前需要判断路径信息中是否还存在未经转发的转发端口号,在本实例中,网络设备e接收到报文p1’’后,发现路径信息中的转发端口号已经全部使用完毕,此时网络设备e去除报文p1’’中的路径信息,得到原始报文p1,并将得到的原始报文p1发送至目的地址对应的设备。本优选实施方式考虑到转发端口链路故障的情况,由于通常备用路径是事先配置好的,所以这种情况下的故障处理是非常快速的。有效降低了丢包率。
[0048] 作为判断路径信息中是否存在未经转发的转发端口号的一种实现方式,在路径信息中还可以包括端口已用标志位;具体地,网络设备在转发报文时,将报文的转发端口号做标记,使得下游的网络设备可以从标记处的下一转发端口号进行转发报文,比如图3中,网络设备c将报文转发至网络设备f时,对路径信息[1,4,3]中的转发端口1做标记,即在转发端口1后面插入标志位,网络设备f获取路径信息中所述标志位的下一个端口号,即转发端口4,然后将报文通过转发端口4发送至网络设备g并将所述标志位插入到转发端口4后面,网络设备g获取所述标志位的下一个转发端口号,即转发端口3,然后通过转发端口3将报文发送至网络设备e,上述网络设备c、f、g在转发报文前需要判断路径信息中是否存在未经转发的转发端口号,即判断路径信息中标志位是否已经移到路径信息中的最后位置处,网络设备e在接收到报文后,由于标志位后已经没有转发端口号,此时网络设备e去除报文中的路径信息以及添加的标志位得到原始报文,然后将原始报文发送至报文中目的地址对已的设备,这样就完成了报文转发的整个过程。
[0049] 上述通过对转发端口做标记来判断径信息中是否存在未经转发的转发端口号只是一种实例列举,包括但不限定于此,比如也可在报文中添加一个用于标识路径信息中已经转发过的转发端口的序位的指示参数,对于网络设备c,将所述指示参数设置为1,下游网络设备f收到报文后获取指示参数的值,将所述指示参数自增1后,此时指示参数为2,网络设备f将报文从路径信息中的第二个端口号,即转发端口4,转发报文,同理下游网络设备g将指示参数自增1后,将报文从路径信息的第三个转发端口号转发报文至网络设备e,此时指示参数为3,网络设备e将指示参数自增1后,发现路径信息中已不存在第4个转发端口号,此时认定路径信息中是否存在未经转发的转发端口号,去除路径信息以及所述指示参数,得到原始报文,然后将原始报文转发至报文中目的地址对已的设备;又如,网络设备也可以在准备转发报文时,删除路径信息中转发报文的当前转发端口号,下游的网络设备只需将报文通过接收到报文中的第一个转发端口号转发报文即可,具体的,网络设备c在路径信息最后位置处添加一个空位(NULL),并将路径信息中的转发端口1删除,然后通过转发端口1将报文发送至网络设备f,网络设备f读取路径信息中的第一个转发端口号,即转发端口4,发送报文至网络设备g,同理网络设备g删除转发端口3后,将报文通过转发端口3转发至网络设备e,网络设备e接收到报文发现路径信息中是剩下一个空位(NULL),删除所述空位后将报文转发至报文中目的地址对已的设备。根据实际情况,当然可以有其他的判断路径信息中是否存在未经转发的转发端口号,此处不再一一列举。
[0050] 图5示出了本发明实施例提供的网络设备的结构框图,用于实现如本发明图2至图4任一实施例所示的方法。为了便于说明,仅示出了与本发明实施例相关的部分。该网络设备500包括:
[0051] 报文接收单元501,用于接收报文;
[0052] 流表查询单元502,用于当所述报文中不存路径信息时,根据所述报文查询所述网络设备的流表;
[0053] 流表更新单元503,用于当所述网络设备的流表中不存在与所述报文匹配的流转发表项时,缓存所述报文,将所述报文或所述报文的报文头发送至控制器,并接收所述控制器根据所述报文的报文头以及网络拓扑结构创建的流转发表项,将所述流转发表项添加到所述网络设备的流表中,所述流转发表项中包括路径信息;
[0054] 报文转发单元504,用于将所述流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。
[0055] 可选的,所述报文转发单元504,还用于当所述网络设备的流表中存在与所述报文匹配的流转发表项时,将所述匹配的流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。
[0056] 可选的,所述报文转发单元504,还用于当所述报文中存在路径信息时,根据所述路径信息转发所述报文。
[0057] 可选的,路径信息为报文的转发路径的端口号,具体包括报文的转发路径上依次经过的各个网络设备转发所述报文的转发端口的端口号。
[0058] 上述实施例示出了本发明实施例提供的网络设备的组成结构,本发明实施例提供的网络设备中的各个功能单元可以对应实现了图2中所示的各个步骤。
[0059] 优选的,所述报文转发单元504在具体实现转发报文时,还需考虑到路径信息中是否存在未经转发的转发端口号,以及网络设备转发所述报文的转发端口是否存在链路故障的情况,为了实现此目的,所述
[0060] 所述报文转发单元具体包括:
[0061] 端口判断模块,用于判断所述路径信息中是否存在未经转发的转发端口号;
[0062] 报文处理发送模块,用于当所述端口模块判断确定所述路径信息中不存在未经转发的转发端口号时,去除所述报文中的路径信息并发送至所述报文中目的地址对应的设备;
[0063] 链路判断模块,用于当所述端口模块判断确定所述路径信息中存在未经转发的转发端口号时,根据所述路径信息判断所述网络设备转发所述报文的转发端口是否存在链路故障;
[0064] 路径修改转发模块,用于当所述链路判断模块判断确定所述转发端口存在链路故障时,将所述报文中的所述路径信息中的所述转发端口的端口号修改为所述转发端口对应的备用路径的端口号,并根据修改后的路径信息转发所述报文;
[0065] 报文直接转发模块,用于当所述链路判断模块判断确定所述转发端口不存在链路故障时,直接从所述转发端口转发所述报文。
[0066] 具体的,所述端口判断模块判断所述路径信息中是否存在未经转发的转发端口号的实现方式可参考上述方法实施例中所述,在此不再赘述。
[0067] 图6示出了本发明实施例提供的另一种网络设备的结构框图,可用于实现如本发明图2至图4任一实施例所示的方法。为了便于说明,仅示出了与本发明实施例相关的部分。该网络设备600包括:
[0068] 处理器601,用于执行程序。本实施例中所述程序可以包括程序代码,所述程序代码包括计算机操作指令。处理器可能是中央处理器CPU,或者是被配置成实施本发明实施例的一个或多个集成电路。处理器所执行的程序为前述实施例中所述各个步骤所对应的程序,通过处理器实现执行各个步骤;
[0069] 存储器602,用于存储所述处理器所执行的程序、流表以及缓存报文;
[0070] 通信接口603,与控制器连接、用于上传报文或报文头至控制器,并接收控制器下发的流转发表项;
[0071] 转发端口604,用于接收报文以及根据路径信息转发报文。
[0072] 网络设备在运行时,处理器601通过转发端口604接收来自于网络外的报文或者接收上一网络设备发送的报文,当处理器601发现所述报文中不存路径信息时,表明当前接收的报文来来自于网络外,此时处理器601根据所述报文查询所述存储器602中的流表,若流表中不存在与所述报文匹配的流转发表项,处理器601缓存所述报文至存储器602,通过通信接口603将所述报文或所述报文的报文头发送至控制器,控制器根据所述报文的报文头以及网络拓扑结构创建流转发表项,所述流转发表项中包括路径信息,处理器601通过通信接口603接收所述流转发表项,并更新流表,若处理器601接收到的报文中包含路径信息,则说明当前网络设备接收到的报文来自上一网络设备,此时处理器601通过转发端口604转发所述报文。当网络设备再次转发具有相同源地址和目的地址的报文时,此时处理器601根据报文中的目的地址、源地址在流表中查找匹配的流转发表项,并所述流转发表项中的路径信息添加到所述报文中,并根据所述路径信息转发所述报文。
[0073] 优选的,处理器601在通过转发端口604转发报文时,还需判断路径信息中是否存在未经转发的转发端口号,当存在未经转发的转发端口号时,继续判断所述转发端口是否存在链路故障,若存在故障,则将所述报文中的所述路径信息中的所述转发端口的端口号修改为所述转发端口对应的备用路径的端口号,并根据修改后的路径信息转发所述报文,否则直接从所述转发端口转发所述报文。当路径信息中不存在未经转发的转发端口号时,去除报文中的路径信息并将报文转发至报文中目的地址对应的设备。
[0074] 具体的,所述处理器601判断所述路径信息中是否存在未经转发的转发端口号的实现方式可参考上述方法实施例中所述,在此不再赘述。
[0075] 图7示出了本发明实施例提供的软件定义网络的结构图,为了便于说明,仅示出了与本发明实施例相关的部分。本实施例提供的网络优化系统包括控制器以及多个上述实施例所述的网络设备,各个网络设备间组网连接,并且网络设备与所述控制器连接,这里所述控制器用于接收来自所述网路设备的报文或所述报文的报文头,根据所述报文的报文头以及网络拓扑结构创建流转发表项,所述流转发表项中包括路径信息,并将所述流转发表项发送至所述网络设备。
[0076] 在本实施例中,当网络设备接收到来自于网络外的首包时,将报文或报文头发送至控制器,控制器根据所述报文的报文头以及网络拓扑结构建立流转发表项,然后将所述流转发表项下发至所述网络设备,网络设备将更新流表并将所述流转发表项中的路径信息添加到报文中,然后向下游转发报文,下游的网络设备根据报文中的路径信息继续转发报文,直至输出报文。当网络设备再次转发具有相同源地址和目的地址的报文时,当查询到网路设备的流表中包含有与接收到的报文相匹配的流转发表项后,直接将匹配的流转发表项中的路径信息添加到报文中,再转发报文至下游网络设备。
[0077] 本实施例中,控制器无需向转发路径上的所有网络设备下发流表,只需向其发送报文或报文头的网络设备(即转发路径上的第一个网络设备)下发流转发表项,与网络规模无关,降低了对控制器的硬件要求,方便网络扩展。
[0078] 本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
[0079] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。