CN105245455B - 软件定义网络中的流表下发方法、报文转发方法及设备 - Google Patents
软件定义网络中的流表下发方法、报文转发方法及设备 Download PDFInfo
- Publication number
- CN105245455B CN105245455B CN201410331404.9A CN201410331404A CN105245455B CN 105245455 B CN105245455 B CN 105245455B CN 201410331404 A CN201410331404 A CN 201410331404A CN 105245455 B CN105245455 B CN 105245455B
- Authority
- CN
- China
- Prior art keywords
- data packet
- flow table
- forwarding device
- length
- value
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种软件定义网络中的流表下发方法、报文转发方法及设备。本发明通过在流表的匹配项和指令项中用“偏移量+长度值”的表示方式,直接指示出数据包中需要进行匹配/操作的字段,使得转发设备不需要关心通信协议的具体内容与格式,大大降低了不同数据通信协议扩展的实现复杂度。并且,本发明拓展后的OpenFlow协议,具有灵活与可延展的特点,其自由配置的匹配域及基于简单指令集的操作域能够轻易的实现对多种ALG需求的支持,并且转发设备无需理解ALG过程,也不需要具备相关智能,全程仅依据流表行动。
Description
技术领域
本发明涉及软件定义网络(SDN,Software Defined Network)技术领域,具体涉及一种软件定义网络中的流表下发方法、报文转发方法及设备。
背景技术
软件定义网络(SDN),是由美国斯坦福大学Clean Slate研究组提出的一种新型网络架构。其核心思想是将网络设备的控制平面和数据转发平面分离,采用统一的控制器(Controller)控制网络中数据的转发,从而实现网络流量的灵活控制,并为网络及应用的开发创新提供平台。
开放流(OpenFlow)作为SDN控制平面和转发平面交互的标准化接口,近年来得到广泛的关注和认可。OpenFlow将网络中的数据流量定义为“流”,并通过控制平面增加、更新、删除转发平面流表的方式控制网络中数据流的走向。流表由流表项组成。各流表项(Flow Entry)包含头域(Header,也称作匹配域Match Field)用于与特定流匹配,计数器(Counter)用于记录相应流的个数和上次到达时间,和操作域(Action,也称作指令集Instructions)用于表达对相应流所做的操作。支持OpenFlow的网络架构图如图1所示,很多厂商已开发出了支持OpenFlow协议的路由器。路由器分为控制器和转发设备两部分,转发设备仅负责转发数据,控制器用于分析数据并下发流表。
目前,OpenFlow1.3版本已定义了大量流表操作,用于完成各类网络服务。通过增加新的流表项匹配域和指令,可以定义新的网络服务。然而,目前OpenFlow协议指令存在一定问题,为了适应不同的数据通信协议,需不断在流表增加匹配域和指令,转发设备如需识别某种数据通信协议的数据包,则需要理解该协议格式,即转发设备必须知道该数据包中的各个字段的含义,进而根据该通信协议对数据包进行解析,确定各个字段的值。显然,这种处理方式严重影响了OpenFlow协议的扩展性。
发明内容
本发明实施例要解决的技术问题是提供一种软件定义网络中的流表下发方法、报文转发方法及设备,能够有效降低OpenFlow中数据通信协议扩展的实现复杂度,实现OpenFlow的扩展应用。
为解决上述技术问题,本发明实施例提供的软件定义网络中的流表下发方法,包括:
控制器接收转发设备发送的未知数据包,所述未知数据包是未能与转发设备的本地流表匹配上的数据包;
控制器对所述未知数据包进行协议分析,生成对应于所述未知数据包的流表,所述流表的头域包括有至少一个匹配项,所述匹配项包括有第一偏移量、第一长度值和第一匹配值,用于表示所述匹配项匹配的数据包中,以所述第一偏移量为起始位、且长度等于所述第一长度值的第一字段的值为所述第一匹配值;
控制器将所述流表下发至所述转发设备,以供所述转发设备根据所述流表中的匹配项中的所述第一偏移量、第一长度值和第一匹配值,对所述未知数据包进行流表匹配,并根据匹配上的流表执行转发处理。
上述方案中,所述流表的操作域包括有至少一个指令项,所述指令项包括有预设指令、第二偏移量和第二长度值,用于指示所述转发设备对所述流表匹配的数据包中,以所述第二偏移量为起始位、且长度等于所述第二长度值的第二字段,执行所述预设指令定义的操作。
上述方案中,所述指令项还包括有第二匹配值,用于指示所述转发设备根据所述第二匹配值,对所述第二字段执行所述预设指令定义的操作。
上述方案中,所述对所述未知数据包进行协议分析,生成对应于所述未知数据包的流表,包括:
判断所述未知数据包是否需要进行应用层网关ALG变换;
在所述未知数据包需要进行ALG变换时,根据预设的ALG变换信息生成对应于所述未知数据包的流表。
本发明实施例还提供了一种软件定义网络中的报文转发方法,包括:
转发设备接收一数据包;
转发设备根据预设的流表匹配顺序,将所述数据包与本地流表逐条进行匹配,其中,所述本地流表的头域包括有至少一个匹配项,所述匹配项包括有第一偏移量、第一长度值和第一匹配值,在所述数据包中的以所述第一偏移量为起始位、且长度等于所述第一长度值的第一字段的值,等于所述匹配项中的第一匹配值时,判断所述数据包与所述匹配项相匹配;
在所述数据包与当前本地流表的头域中的所有匹配项均匹配时,根据该当前本地流表对所述数据包进行转发处理;
在所述数据包与当前本地流表的头域中的所有匹配项部分匹配或均不匹配时,继续将所述数据包与下一条本地流表进行匹配,直至最后一条本地流表。
上述方案中,在所述数据包与最后一条本地流表的所有匹配项部分匹配或均不匹配时,将所述数据包发送至控制器;
接收控制器下发的针对所述数据包的流表并保存在本地,以及,根据所述针对所述数据包的流表,对所述数据包进行转发处理。
上述方案中,所述本地流表的操作域包括有至少一个指令项,所述指令项包括有预设指令、第二偏移量和第二长度值;
所述转发设备在根据该当前本地流表对所述数据包进行转发处理时,对所述数据包中以所述第二偏移量为起始位、且长度等于所述第二长度值的第二字段,执行所述预设指令定义的操作。
上述方案中,所述指令项还包括有第二匹配值;
所述转发设备在根据该当前本地流表对所述数据包进行转发处理时,进一步根据所述第二匹配值,对所述第二字段执行所述预设指令定义的操作。
本发明实施例还提供了一种软件定义网络中的控制器,包括:
报文接收单元,用于接收转发设备发送的未知数据包,所述未知数据包是未能与转发设备的本地流表匹配上的数据包;
流表生成单元,用于对所述未知数据包进行协议分析,生成对应于所述未知数据包的流表,所述流表的头域包括有至少一个匹配项,所述匹配项包括有第一偏移量、第一长度值和第一匹配值,用于表示所述匹配项匹配的数据包中,以所述第一偏移量为起始位、且长度等于所述第一长度值的第一字段的值为所述第一匹配值;
流表下发单元,用于将所述流表下发至所述转发设备,以供所述转发设备根据所述流表中的匹配项中的所述第一偏移量、第一长度值和第一匹配值,对所述未知数据包进行流表匹配,并根据匹配上的流表执行转发处理。
上述方案中,所述流表的操作域包括有至少一个指令项,所述指令项包括有预设指令、第二偏移量和第二长度值,用于指示所述转发设备对所述流表匹配的数据包中,以所述第二偏移量为起始位、且长度等于所述第二长度值的第二字段,执行所述预设指令定义的操作。
上述方案中,所述指令项还包括有第二匹配值,用于指示所述转发设备根据所述第二匹配值,对所述第二字段执行所述预设指令定义的操作。
上述方案中,所述流表生成单元,进一步用于判断所述未知数据包是否需要进行应用层网关ALG变换;在所述未知数据包需要进行ALG变换时,根据预设的ALG变换信息生成对应于所述未知数据包的流表。
本发明实施例还提供了一种软件定义网络中的转发设备,包括:
报文接收单元,用于接收一数据包;
流表匹配单元,用于根据预设的流表匹配顺序,将所述数据包与本地流表逐条进行匹配,并在所述数据包与当前本地流表的头域中的所有匹配项部分匹配或均不匹配时,继续将所述数据包与下一条本地流表进行匹配,直至最后一条本地流表,其中,所述本地流表的头域包括有至少一个匹配项,所述匹配项包括有第一偏移量、第一长度值和第一匹配值,在所述数据包中的以所述第一偏移量为起始位、且长度等于所述第一长度值的第一字段的值,等于所述匹配项中的第一匹配值时,判断所述数据包与所述匹配项相匹配;
转发处理单元,用于在所述数据包与当前本地流表的头域中的所有匹配项均匹配时,根据该当前本地流表对所述数据包进行转发处理。
上述方案中,所述转发设备还包括:交互单元,用于在所述数据包与最后一条本地流表的所有匹配项部分匹配或均不匹配时,将所述数据包发送至控制器;
流表接收单元,用于接收控制器下发的针对所述数据包的流表并保存在本地;
所述转发处理单元,还用于根据所述针对所述数据包的流表,对所述数据包进行转发处理。
上述方案中,所述本地流表的操作域包括有至少一个指令项,所述指令项包括有预设指令、第二偏移量和第二长度值;
所述转发处理单元,还用于在根据该当前本地流表对所述数据包进行转发处理时,对所述数据包中以所述第二偏移量为起始位、且长度等于所述第二长度值的第二字段,执行所述预设指令定义的操作。
上述方案中,所述指令项还包括有第二匹配值;
所述转发处理单元,还用于在根据该当前本地流表对所述数据包进行转发处理时,进一步根据所述第二匹配值,对所述第二字段执行所述预设指令定义的操作。
与现有技术相比,本发明实施例提供的一种软件定义网络中的流表下发方法、报文转发方法及设备,有益效果如下:
本发明实施例在流表的匹配项和指令项中用“偏移量+长度值”的表示方式,直接指示出数据包中需要进行匹配/操作的字段,使得转发设备不需要关心通信协议的具体内容与格式,降低了不同数据通信协议扩展的实现复杂度。
本发明实施例拓展后的OpenFlow协议,具有灵活与可延展的特点,其自由配置的匹配域及基于简单指令集的操作域能够轻易的实现对多种ALG需求的支持。与传统方案相比,本发明实施例不再需要为每一种ALG转换提供专门程序,只需要在控制器处修改ALG应用配置即可实现ALG变换,并且转发设备无需理解ALG过程,也不需要具备相关智能,全程仅依据流表行动。另外,由于ALG相关智能集中于控制器,控制器相比带有ALG功能的NAT设备具有修改更方便、配置更灵活等优点,而且本发明实施例还可以作为网络应用商店提供的网络功能,客户可以根据自身的实际情况自行进行购买、配置。
附图说明
图1为现有技术的OpenFlow的网络架构示意图;
图2为本发明实施例提供的SDN中的流表下发方法的流程示意图;
图3为本发明实施例提供的SDN中的报文转发方法的流程示意图;
图4为本发明实施例提供的SDN中的控制器的结构示意图;
图5为本发明实施例提供的SDN中的转发设备的结构示意图;
图6为现有技术的一种可能的流表内容示意图;
图7为本发明实施例提供的一种可能的流表内容示意图;
图8为本发明实施例提供的FTP-ALG过程的举例示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
以下将首先介绍Openflow协议的扩展实现,然后以应用层网关(ALG,ApplicationLayer Gateway)功能为例,说明如何利用本发明实施例提供的方法,在SDN中实现ALG功能。
本发明实施例扩展了Openflow协议,对该协议的流表中的Header域和/或Action域进行了依托于“{偏移,长度}”的改进。Header域不再依照传统协议“固定位置,固定内容”的模式,而是以“{偏移,长度}=X”的方式匹配数据包;类似的,Action中不再使用具体的复杂指令,而是通过一些预先定义的诸如“AFV{offset,length}=X”的简单指令(具体指令后文将说明)组合完成对数据包的操作。通过以上扩展,本发明实施例可以可有效降低OpenFlow体系中不同数据通信协议扩展的实现复杂度。
请参照图2,本发明实施例提供的一种SDN中的流表下发方法,应用于OpenFlow控制器,该方法包括:
步骤21,控制器接收转发设备发送的未知数据包,所述未知数据包是未能与转发设备的本地流表匹配上的数据包。
这里,OpenFlow转发设备在接收到数据包后,根据本地流表的匹配结果进行转发或丢弃处理,其中,若该数据包与本地流表未能匹配上,则将该数据包通过安全通道发送至控制器,以请求控制器生成针对该数据包的流表项。
步骤22,控制器对所述未知数据包进行协议分析,生成对应于所述未知数据包的流表,所述流表的头域包括有至少一个匹配项,所述匹配项包括有第一偏移量、第一长度值和第一匹配值,用于表示所述匹配项匹配的数据包中,以所述第一偏移量为起始位、且长度等于所述第一长度值的第一字段的值为所述第一匹配值。
这里,控制器依据预先设定的解析策略,对该数据包进行解析,确定该数据包的具体类型以及对应的转发处理策略,然后根据所确定的转发处理策略,生成对应的流表。为简化转发设备处的流表匹配处理,控制器在所生成的流表的头域(Header)中,使用“偏移量+长度值”的表示方式,指示转发设备对报文中的对应字段进行匹配,这样转发设备即可以直接根据“偏移量+长度值”定位到对应的字段,判断该字段的值是否等于匹配项中的匹配值,而不需要为了进行包解析而要事先理解各种数据通信协议,从而大大简化了转发设备对不同数据通信协议扩展。
除了匹配项外,本实施例在步骤22中生成所述流表时,还可以在所述流表的操作域(Action)中生成至少一个指令项。其中,所述指令项包括有预设指令、第二偏移量和第二长度值,用于指示所述转发设备对所述流表匹配的数据包中,以所述第二偏移量为起始位、且长度等于所述第二长度值的第二字段,执行所述预设指令定义的操作。进一步的,除预设指令、第二偏移量和第二长度值外,所述指令项还可以包括有第二匹配值,用于指示所述转发设备根据所述第二匹配值,对所述第二字段执行所述预设指令定义的操作。
步骤23,控制器将所述流表下发至所述转发设备,以供所述转发设备根据所述流表中的匹配项中的所述第一偏移量、第一长度值和第一匹配值,对所述未知数据包进行流表匹配,并根据匹配上的流表执行转发处理。
这里,控制器将生成的流表通过安全通道下发至转发设备,转发设备接收该流表并保存在本地。然后,转发设备即可以根据该流表,对所述未知数据包进行匹配和转发处理。
以上步骤中,本实施例在流表的匹配项中用“偏移量+长度值”的表示方式,直接指示出数据包中需要进行匹配比对的字段,这样转发设备可以据此直接定位到该字段,并将该字段的值与匹配项中的匹配值进行匹配,若一致,则匹配成功;否则,匹配失败。由此,本实施例的转发设备不需要事先理解种类繁杂的数据通信协议,不需要根据数据通信协议对数据包进行解析来获取各个字段的定义和取值,大大降低了不同数据通信协议扩展的实现复杂度。
以上介绍了本发明实施例在控制器侧的流表生成及下发过程,对应的,本发明实施例在转发设备侧将根据控制器下发的流表进行报文匹配及转发处理。请参照图3,本发明实施例提供的SDN中的报文转发方法,包括:
步骤31,转发设备接收一数据包。
步骤32,转发设备根据预设的流表匹配顺序,将所述数据包与本地流表逐条进行匹配,其中,所述本地流表的头域包括有至少一个匹配项,所述匹配项包括有第一偏移量、第一长度值和第一匹配值,在所述数据包中的以所述第一偏移量为起始位、且长度等于所述第一长度值的第一字段的值,等于所述匹配项中的第一匹配值时,判断所述数据包与所述匹配项相匹配。
这里,转发设备在将数据包与流表进行匹配时,根据当前流表中的一个匹配项中包括的第一偏移量和第一长度值,在数据包中以所述第一偏移量为起始位、获取长度等于所述第一长度值的第一字段,然后判断该第一字段的值,是否等于该匹配项中的第一匹配值:若是,则判断数据包与该匹配项相匹配;否则,判断数据包与该匹配项不匹配。
步骤33,在所述数据包与当前本地流表的头域中的所有匹配项均匹配时,根据该当前本地流表对所述数据包进行转发处理。
这里,在数据包与当前流表中的所有匹配项均匹配时,判断该数据包与当前流表相匹配,此时,将根据该匹配的流表,对所述数据包进行转发处理。具体的,本地流表的操作域包括有至少一个指令项,所述指令项包括有预设指令、第二偏移量和第二长度值。在本步骤33中根据该当前本地流表对所述数据包进行转发处理时,转发设备对所述数据包中以所述第二偏移量为起始位、且长度等于所述第二长度值的第二字段,执行所述预设指令定义的操作。
更进一步的,所述指令项还包括有第二匹配值。所述转发设备对所述数据包进行转发处理时,进一步根据所述第二匹配值,对所述第二字段执行所述预设指令定义的操作。
步骤34,在所述数据包与当前本地流表的头域中的所有匹配项部分匹配或均不匹配时,判断该数据包与当前流表不匹配,返回步骤32,,继续将所述数据包与下一条本地流表进行匹配处理,直至完成最后一条本地流表的匹配处理。
本发明实施例中,若所述数据包与最后一条本地流表也不匹配,则将所述数据包发送至控制器,以请求控制器生成该数据包的流表。然后,转发设备接收控制器下发的针对所述数据包的流表并保存在本地,后续转发设备即可根据所述针对所述数据包的流表,对所述数据包进行转发处理。
下面对本发明实施例中的预设指令进行说明。请参照表1,本发明实施例中的预设指令可以包括以下指令的一种或多种,控制器和转发设备均需要能够识别该指令:
1)设置字段值指令:SFFV{offset,length}=X,该指令表示对数据包中以offset为起始位,长度为length的字段,执行赋值操作,即赋值X;
2)设置字段格式指令:SFFM{offset,length}=Y,该指令表示对数据包中以offset为起始位,长度为length的字段,执行赋元数据操作,即赋元数据Y;
3)修改字段值指令:MFV{offset,length}=X,该指令表示对数据包中以offset为起始位,长度为length的字段,执行修改操作,即修改为X;
4)修改字段格式指令:MFM{offset,length}=Y,该指令表示对数据包中以offset为起始位,长度为length的字段,执行元数据修改操作,即修改为Y;
5)匹配字段值指令:AFV{offset,length}=X,该指令表示对数据包中以offset为起始位,长度为length的字段,执行判断操作并返回判断结果,即,判断该字段的值是否为X,若是,则返回True;否则,返回False;
6)匹配字段格式指令:AFM{offset,length}=Y,该指令表示对数据包中以offset为起始位,长度为length的字段的元数据,执行判断操作并返回判断结果,即,判断该字段的元数据值是否为Y,若是,则返回True;否则,返回False;
7)添加字段指令:AF{offset,length}=Z,该指令表示在数据包中以offset为起始位,长度为length的位置处,执行添加字段操作,即添加描述为Z的字段;
8)删除字段指令:DF{offset,length},该指令表示对数据包中以offset为起始位,长度为length的字段,执行删除操作,即删除该字段;
9)转发至端口指令:TP,该指令表示对数据包进行转发操作,即转发至对应的端口;
10)转发至控制器指令:TC,该指令表示对数据包进行转发操作,即转发至控制器。
预设指令 | 预设指令定义的操作 |
设置字段值(SFFV{offset,length}=X) | 为{偏移,长度}处赋值X |
设置字段格式(SFFM{offset,length}=Y) | 为{偏移,长度}处赋元数据Y |
修改字段值(MFV{offset,length}=X) | 将{偏移,长度}数据修改为X |
修改字段格式(MFM{offset,length}=Y) | 将{偏移,长度}处元数据修改为Y |
匹配字段值(AFV{offset,length}=X) | 若{偏移,长度}处数据为X,返回TRUE |
匹配字段格式(AFM{offset,length}=Y) | 若{偏移,长度}处元数据为Y,返回TRUE |
添加字段(AF{offset,length}=Z) | 在{偏移,长度}后添加描述为Z的字段 |
删除字段(DF{offset,length}) | 删除{偏移,长度}字段 |
转发至端口(TP) | 转发至端口 |
转发至控制器(TC) | 转发至控制器 |
表1
上述指令可通过偏移量+长度,定位出数据包中的特定字段,并对该字段执行该指令定义的操作,如赋值、修改、判断、删除等处理。除此之外,也可以定义对报文进行整体操作的指令,如上述“转发至端口”指令(可以携带具体的端口信息)和“转发至控制器”指令等。当然,本领域技术人员也可以根据实际应用需要,开发出符合上述原则的的各种新的指令。为节约篇幅,此处不再详述。
基于以上方法,本发明实施例还提供了用于实现上述方法的控制器和转发设备。请参照图4,本发明实施例提供的控制器,包括:
报文接收单元41,用于接收转发设备发送的未知数据包,所述未知数据包是未能与转发设备的本地流表匹配上的数据包。
流表生成单元42,用于对所述未知数据包进行协议分析,生成对应于所述未知数据包的流表,所述流表的头域包括有至少一个匹配项,所述匹配项包括有第一偏移量、第一长度值和第一匹配值,用于表示所述匹配项匹配的数据包中,以所述第一偏移量为起始位、且长度等于所述第一长度值的第一字段的值为所述第一匹配值。
流表下发单元43,用于将所述流表下发至所述转发设备,以供所述转发设备根据所述流表中的匹配项中的所述第一偏移量、第一长度值和第一匹配值,对所述未知数据包进行流表匹配,并根据匹配上的流表执行转发处理。
本发明实施例中,所述流表的操作域包括有至少一个指令项,所述指令项包括有预设指令、第二偏移量和第二长度值,用于指示所述转发设备对所述流表匹配的数据包中,以所述第二偏移量为起始位、且长度等于所述第二长度值的第二字段,执行所述预设指令定义的操作。所述指令项还包括有第二匹配值,用于指示所述转发设备根据所述第二匹配值,对所述第二字段执行所述预设指令定义的操作。
本发明实施例中,所述流表生成单元42,进一步用于判断所述未知数据包是否需要进行应用层网关ALG变换;在所述未知数据包需要进行ALG变换时,根据预设的ALG变换信息生成对应于所述未知数据包的流表。
请参照图5,本发明实施例提供的转发设备,包括:
报文接收单元51,用于接收一数据包;
流表匹配单元52,用于根据预设的流表匹配顺序,将所述数据包与本地流表逐条进行匹配,并在所述数据包与当前本地流表的头域中的所有匹配项部分匹配或均不匹配时,继续将所述数据包与下一条本地流表进行匹配,直至最后一条本地流表,其中,所述本地流表的头域包括有至少一个匹配项,所述匹配项包括有第一偏移量、第一长度值和第一匹配值,在所述数据包中的以所述第一偏移量为起始位、且长度等于所述第一长度值的第一字段的值,等于所述匹配项中的第一匹配值时,判断所述数据包与所述匹配项相匹配。
转发处理单元53,用于在所述数据包与当前本地流表的头域中的所有匹配项均匹配时,根据该当前本地流表对所述数据包进行转发处理。
本发明实施例中,所述转发设备还可以包括:
交互单元(图中未示出),用于在所述数据包与最后一条本地流表的所有匹配项部分匹配或均不匹配时,将所述数据包发送至控制器;
流表接收单元(图中未示出),用于接收控制器下发的针对所述数据包的流表并保存在本地;
所述转发处理单元53,还用于根据所述针对所述数据包的流表,对所述数据包进行转发处理。
本发明实施例中,所述本地流表的操作域包括有至少一个指令项,所述指令项包括有预设指令、第二偏移量和第二长度值。所述转发处理单元53,还用于在根据该当前本地流表对所述数据包进行转发处理时,对所述数据包中以所述第二偏移量为起始位、且长度等于所述第二长度值的第二字段,执行所述预设指令定义的操作。
本发明实施例中,所述指令项还包括有第二匹配值。所述转发处理单元53,还用于在根据该当前本地流表对所述数据包进行转发处理时,进一步根据所述第二匹配值,对所述第二字段执行所述预设指令定义的操作。
从以上所述可以看出,本发明实施例可以使用支持OpenFlow协议的路由器,通过扩展OpenFlow协议实现SDN中不同通信协议的扩展应用。本发明实施例依赖于拓展的OpenFlow协议,相比现有的OpenFlow1.x版本协议,其不仅拥有更加灵活的包识别能力,还能够方便的支持更多的网络操作。
图6和图7分别示出了现有协议与本发明实施例的一种可能的流表内容。本发明实施例OpenFlow拓展协议的“拓展”集中体现在新的流表设计之上。对图6所示的现有OpenFlow协议所做拓展具体内容如下:
(1)流表头域(匹配域)拓展
作为流表的匹配模块,本发明实施例的Header不再依照传统协议“固定位置,固定内容”的模式,而是以“{偏移,长度}=X”的方式匹配数据包,其中偏移和长度皆以比特位为单位。
本发明实施例的Header包括一条或多条“{偏移,长度}=X”匹配信息。以数据包头信息“IP=192.168.1.1,PORT=10086”的识别过程为例,现有OpenFlow协议中,如需识别这一数据包,则转发设备需理解数据包的协议格式,即转发设备必须支持IP协议,事先知道IP地址及端口字段所处的位置,即明确“从头开始32位为IP地址,接下来16位为端口号”这一格式信息,方可结合具体IP与端口值完成匹配工作。在本发明实施例中,采用偏移长度匹配方式,转发设备不需要了解任何包格式信息,只需要依照对应流表的Header中“{0,32}=192.168.1.1,{32,16}=10086”(为方便起见使用十进制书写,实际应为二进制数)这两条识别信息,即可对该数据包进行匹配和识别。不难看出,本发明实施例对Header修改所确立的新的流表匹配模式,一方面解除了转发设备理解各个数据通信协议的负担,使转发设备不再关心具体通信协议,另外一方面也为数据包匹配工作提供了良好的可拓展性。
(2)流表操作域(指令域)拓展
本发明实施例流表中的Action不再是一条具体的复杂指令,而变为一系列简单指令的集合。简单指令同样可以通过“{偏移,长度}”定位方式实现,指令格式为“指令名{偏移,长度}=参数”。复杂指令通过一系列的简单指令组合而成,转发设备亦不再需要理解复杂指令的语义,只需要存储一套“简单指令集”(一种简单指令集见表1)即可完成工作。
例如在ALG变换过程中,需要对数据包载荷中的内外网IP地址进行转换,在本发明实施例的Action域中,可以通过执行“AFV{offset,length}=原IP”与“MFV{offset,length}=替换IP”两条指令达成这一目的,即这两条简单指令等效于指令“替换数据报载荷中的信息”。
综上,本发明实施例的Header与Action都可以基于{偏移,长度}进行定位,转发设备在进行匹配与操作流程时不再关心通信协议的具体内容与格式,匹配过程只与数据包是否满足Header中的匹配条目有关,转发设备亦只是依照Action中的简单指令逐条完成操作。这一扩展方式降低了转发设备理解数据通信协议的实现难度,转发设备将不再需要了解数据包的协议内容,只需根据偏移和长度进行匹配以及执行相关指令即可。网络运营者甚至可以根据自己的需求自定义协议而无需通知转发设备。同时,这一扩展也大大增强了未来Openflow协议的可扩展性。
下面再以实现应用层网关(ALG,Application Layer Gateway)功能为例,说明本发明实施例的具体应用。
ALG是针对应用层的各种协议提供的一种代理机制,它负责对负载中的IP地址等信息进行转换,解决了网络地址转换(NAT)无法转换数据包负载的问题,被广泛的应用在传统网络的内外网间的通信中。现有ALG解决方案大多采用传统的NAT ALG解决方案(以下简称为“传统方案”),传统方案具体的流程如下:
a.具有ALG需求的报文经过支持ALG功能的NAT设备时,被NAT设备发现。
b.支持ALG特性的NAT设备在对报文包头进行NAT转换的同时,依据事先预设的ALG信息对报文载荷进行ALG变换。
c.转发设备将已完成ALG变换的报文发往目标地址。
可以看出,传统方案以支持ALG的NAT设备为基础实现,此设备位于转发层,搭载ALG相关智能,不利于网络的统一管理、控制,与SDN架构不符。同时,传统方案中ALG过程依赖于特定的硬件设备,其拓展、修改和参数配置都需要通过此设备进行,需要网络维护知识支撑,增加维护成本。并且,传统方案中ALG服务的开闭只能由网络侧工作人员控制,用户无法自行决定。
为克服传统方案的上述缺点,本发明实施例可以利用上述步骤21-23,在SDN中实现应用层网关功能。其中,在上述步骤22中,控制器可以根据按照现有技术的协议分析的方式,对所述未知数据包进行解析,并判断所述未知数据包是否需要进行应用层网关ALG变换,并在所述未知数据包需要进行ALG变换时,根据预设的ALG变换信息生成对应于所述未知数据包的流表。
与传统ALG方案相比,本方案实现ALG功能具有下述优势:
首先,本方案中ALG过程相关智能完全置于控制器,转发设备仅依照流表工作,便于网络统一管理。其次,本方案中的ALG应用配置方法简单,用户可根据需求随时自行配置和修改相关参数,配合可视化用户交互界面还可进一步简化维护操作。最后,本方案中ALG服务可以作为网络功能商店的一项商品,用户可在网络功能商店中自行选择开启和关闭。
基于OpenFlow协议的ALG过程是由控制器发现ALG需求,确定ALG策略,进而通过流表向转发设备传达ALG变换策略;转发设备则依流表执行ALG变换操作。图8以FTP-ALG过程为例,给出了一种具体的ALG流程,其中,客户机希望通过支持OpenFlow的ALG设备访问服务器,包括步骤:
S1-S2,客户机发送FTP请求数据包;该数据包到达转发设备后,转发设备处尚无与该数据包匹配的流表,则认为发现未知数据包,将该数据包发往控制器。此步骤遵循SDN网络中的一般逻辑,即当转发设备收到数据包时未能发现与其匹配的流表项,便将此数据包通过安全通道发往控制器。
S3-S4,控制器收到转发设备发来的未知数据包后,经过协议分析发现该数据包的目的端口为21,且发送端位于某内网中,进而确认该数据包有FTP-ALG需求,控制器依据预设的内外网地址映射信息,下发ALG变换流表与发包流表。其中,发包流表对应操作为将此数据包发往目的端口,对应指令为“转发至端口(TP)”;ALG变换流表对应操作为对匹配数据包的载荷进行ALG变换并发往目标端口,其Header筛选条件为“{288,16}=21”,指令包括“匹配字段值(AFV)”、“修改字段值(MFV)”及“发往目标端口(TP)”。ALG的具体指令操作逻辑为,当转发设备发现从端口21发来的数据包,即({288,16}=21)后,将检查该数据包是否有PORT字段(AFV{432,32}=‘PORT’),如有该字段,则为需要ALG转换的数据包,则进行ALG转换(MFV{1,48}=‘123.125.114.144:10086’),完成转换后发至端口。
S5,转发设备接收到控制器下发的两流表后,首先依照发包流表将FTP请求数据包发往目标端口。
S6-S7,服务器回复该请求数据包并与客户机建立TCP连接后,客户机发出携带PORT命令的数据包。
S8,此数据包满足ALG变换流表的筛选条件“{288,16}=21”,因此转发设备依照ALG变换流表的Action对数据包进行ALG变换,并发往目标端口。
S9-S10,双方建立FTP数据连接。
综上,本发明实施例提供的上述方法,拓展了OpenFlow协议,使其具有灵活与可延展的特点,并且,自由配置的匹配域及基于简单指令集的操作域能够轻易的达成对多种ALG需求的支持。与传统方案相比,不再需要为每一种ALG转换提供专门程序,只需要修改ALG应用配置即可达成目的。
同时,本发明实施例中的转发设备无需理解ALG过程,也不需要具备相关智能,全程仅依据流表行动。而传统方案中为实现ALG功能需要为网络配置特殊的设备(即带有ALG功能的NAT设备)。另外,由于ALG相关智能集中于控制器,控制器相比带有ALG功能的NAT设备具有修改更方便、配置更灵活等优点;而且,本发明实施例的ALG功能,可以作为网络应用商店提供的网络功能,客户可以根据自身的实际情况进行购买、配置,而传统方式客户只能被动接受服务,无法自行选择。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (2)
1.一种软件定义网络中的流表下发方法,其特征在于,包括:
控制器接收转发设备发送的未知数据包,所述未知数据包是未能与转发设备的本地流表匹配上的数据包;
控制器对所述未知数据包进行协议分析,生成对应于所述未知数据包的流表,所述流表的头域包括有至少一个匹配项,所述匹配项包括有第一偏移量、第一长度值和第一匹配值,用于表示所述匹配项匹配的数据包中,以所述第一偏移量为起始位、且长度等于所述第一长度值的第一字段的值为所述第一匹配值;
控制器将所述流表下发至所述转发设备,以供所述转发设备根据所述流表中的匹配项中的所述第一偏移量、第一长度值和第一匹配值,对所述未知数据包进行流表匹配,并根据匹配上的流表执行转发处理;
其中,所述对所述未知数据包进行协议分析,生成对应于所述未知数据包的流表,包括:
判断所述未知数据包是否需要进行应用层网关ALG变换;
在所述未知数据包需要进行ALG变换时,根据预设的ALG变换信息生成对应于所述未知数据包的流表;
其中,所述流表的操作域包括有至少一个指令项,所述指令项包括有预设指令、第二偏移量和第二长度值,用于指示所述转发设备对所述流表匹配的数据包中,以所述第二偏移量为起始位、且长度等于所述第二长度值的第二字段,执行所述预设指令定义的操作;
所述指令项还包括有第二匹配值,用于指示所述转发设备根据所述第二匹配值,对所述第二字段执行所述预设指令定义的操作。
2.一种软件定义网络中的控制器,其特征在于,包括:
报文接收单元,用于接收转发设备发送的未知数据包,所述未知数据包是未能与转发设备的本地流表匹配上的数据包;
流表生成单元,用于对所述未知数据包进行协议分析,生成对应于所述未知数据包的流表,所述流表的头域包括有至少一个匹配项,所述匹配项包括有第一偏移量、第一长度值和第一匹配值,用于表示所述匹配项匹配的数据包中,以所述第一偏移量为起始位、且长度等于所述第一长度值的第一字段的值为所述第一匹配值;
流表下发单元,用于将所述流表下发至所述转发设备,以供所述转发设备根据所述流表中的匹配项中的所述第一偏移量、第一长度值和第一匹配值,对所述未知数据包进行流表匹配,并根据匹配上的流表执行转发处理;
其中,所述流表生成单元,进一步用于判断所述未知数据包是否需要进行应用层网关ALG变换;在所述未知数据包需要进行ALG变换时,根据预设的ALG变换信息生成对应于所述未知数据包的流表;
其中,所述流表的操作域包括有至少一个指令项,所述指令项包括有预设指令、第二偏移量和第二长度值,用于指示所述转发设备对所述流表匹配的数据包中,以所述第二偏移量为起始位、且长度等于所述第二长度值的第二字段,执行所述预设指令定义的操作;
所述指令项还包括有第二匹配值,用于指示所述转发设备根据所述第二匹配值,对所述第二字段执行所述预设指令定义的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410331404.9A CN105245455B (zh) | 2014-07-11 | 2014-07-11 | 软件定义网络中的流表下发方法、报文转发方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410331404.9A CN105245455B (zh) | 2014-07-11 | 2014-07-11 | 软件定义网络中的流表下发方法、报文转发方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105245455A CN105245455A (zh) | 2016-01-13 |
CN105245455B true CN105245455B (zh) | 2019-01-01 |
Family
ID=55042960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410331404.9A Active CN105245455B (zh) | 2014-07-11 | 2014-07-11 | 软件定义网络中的流表下发方法、报文转发方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105245455B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105959222A (zh) * | 2016-04-25 | 2016-09-21 | 上海斐讯数据通信技术有限公司 | 一种报文转发方法、路由节点及软件定义网络 |
CN107707565B (zh) * | 2017-11-07 | 2020-05-19 | 盛科网络(苏州)有限公司 | 一种udf报文解析芯片 |
CN108600107B (zh) * | 2017-11-07 | 2021-06-01 | 北京交通大学 | 一种可自定义内容字段的流匹配方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101635676A (zh) * | 2009-08-31 | 2010-01-27 | 杭州华三通信技术有限公司 | 一种报文处理方法和一种网络设备 |
CN102904975A (zh) * | 2012-09-28 | 2013-01-30 | 华为技术有限公司 | 报文处理的方法和相关装置 |
CN102904813A (zh) * | 2012-11-05 | 2013-01-30 | 华为技术有限公司 | 一种报文转发的方法及相应设备 |
WO2014019205A1 (zh) * | 2012-08-02 | 2014-02-06 | 华为技术有限公司 | 处理数据报文的方法、装置及系统 |
-
2014
- 2014-07-11 CN CN201410331404.9A patent/CN105245455B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101635676A (zh) * | 2009-08-31 | 2010-01-27 | 杭州华三通信技术有限公司 | 一种报文处理方法和一种网络设备 |
WO2014019205A1 (zh) * | 2012-08-02 | 2014-02-06 | 华为技术有限公司 | 处理数据报文的方法、装置及系统 |
CN102904975A (zh) * | 2012-09-28 | 2013-01-30 | 华为技术有限公司 | 报文处理的方法和相关装置 |
CN102904813A (zh) * | 2012-11-05 | 2013-01-30 | 华为技术有限公司 | 一种报文转发的方法及相应设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105245455A (zh) | 2016-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103347013B (zh) | 一种增强可编程能力的OpenFlow网络系统和方法 | |
CN103477593B (zh) | 网络系统、交换机和连接终端检测方法 | |
CN103095565B (zh) | 一种软件定义网络操作系统及其实现方法 | |
CN103004158B (zh) | 具有可编程内核的网络设备 | |
EP2552060A1 (en) | Information system, control apparatus, method of controlling virtual network, and program | |
EP2858317B1 (en) | Control device, communication system, switch control method and program | |
KR20120135251A (ko) | 통신 시스템, 노드, 제어 서버, 통신 방법 및 프로그램 | |
CN105812340B (zh) | 一种虚拟网络访问外网的方法和装置 | |
CN105245455B (zh) | 软件定义网络中的流表下发方法、报文转发方法及设备 | |
JP2014131347A (ja) | 情報システム、制御サーバ、仮想ネットワーク管理方法およびプログラム | |
WO2012090993A1 (ja) | 情報システム、制御装置、通信方法およびプログラム | |
CN105099916B (zh) | 开放流路由交换设备及其对数据报文的处理方法 | |
CN102884769A (zh) | 通信系统、节点、控制设备、通信方法以及程序 | |
CN103119900A (zh) | 通信系统、控制设备、节点控制方法和节点控制程序 | |
JP6323547B2 (ja) | 通信システム、制御装置、通信制御方法、および、プログラム | |
CN110290092A (zh) | 一种基于可编程交换机的sdn网络配置管理方法 | |
EP3183831B1 (en) | Software defined networking portal | |
CN104782087B (zh) | 交换设备、控制器、交换设备配置、报文处理方法及系统 | |
JP2015530768A (ja) | 制御装置、その制御方法及びプログラム | |
CN103780425A (zh) | 用于配置软件定义网络的方法和控制器设备 | |
CN109347745A (zh) | 一种基于OpenFlow交换机的流表匹配方法和装置 | |
WO2013141200A1 (ja) | 通信ノード、パケット処理方法及びプログラム | |
KR20150090212A (ko) | 스위치 장치, vlan 설정 관리 방법 및 프로그램 | |
CN115037669A (zh) | 一种基于联邦学习的跨域数据传输方法 | |
JPWO2015079615A1 (ja) | 通信システム、通信方法、ネットワーク情報結合装置、処理規則変換方法および処理規則変換プログラム |
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 |