CN109768931B - 处理数据包的方法、交换机、装置及计算机可读存储介质 - Google Patents

处理数据包的方法、交换机、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN109768931B
CN109768931B CN201711098670.1A CN201711098670A CN109768931B CN 109768931 B CN109768931 B CN 109768931B CN 201711098670 A CN201711098670 A CN 201711098670A CN 109768931 B CN109768931 B CN 109768931B
Authority
CN
China
Prior art keywords
packet
data packet
cache
flow table
data
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
Application number
CN201711098670.1A
Other languages
English (en)
Other versions
CN109768931A (zh
Inventor
魏冰
李小文
孔令军
韩波
杨帅
李明星
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Chengdu ICT Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201711098670.1A priority Critical patent/CN109768931B/zh
Publication of CN109768931A publication Critical patent/CN109768931A/zh
Application granted granted Critical
Publication of CN109768931B publication Critical patent/CN109768931B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种处理数据包的方法,包括:提取数据包的包头域信息;在所述数据包与第一流表项匹配失败时,将包头域信息和匹配失败信息封装成packet_in消息,将packet_in消息发送至控制器,并将数据包存入缓存;接收控制器发送的packet_out消息,并提取packet_out消息中携带的包头域信息对应的第二流表项;按照第二流表项,将缓存中的数据包重新进入流表项匹配流程。本发明还同时公开了一种处理数据包的交换机、装置及计算机可读存储介质。

Description

处理数据包的方法、交换机、装置及计算机可读存储介质
技术领域
本发明涉及软件定义网络(Software Defined Network,SDN)中的开放流(OpenFlow)技术领域,尤其涉及一种处理数据包的方法、交换机、装置及计算机可读存储介质。
背景技术
随着互联网规模的不断壮大,传统的网络架构已无法很好的满足人们的需要;目前,SDN逐渐受到人们的重视,SDN作为一种新型网络创新架构,是网络虚拟化的一种实现方式,其中核心技术OpenFlow将网络设备(通常是支持OpenFlow协议的交换机)的控制层面和数据层面分离,开发人员可以根据实际的需要设计控制层的业务逻辑,使流量控制变得更加灵活、更加可控;同时,由于网络设备只负责数据层面,这使得转发效率也有了大幅提升。
在交换机的运行过程中,其数据包转发的依据就是流表;所谓流表,其实可被视作是OpenFlow对网络设备的数据转发功能的一种抽象,在传统网络设备中,交换机和路由器的数据包转发需要依赖设备中保存的二层介质访问控制(Media Access Control,MAC)地址转发表或者三层网络之间互连的协议(Internet Protocol,IP)地址路由表,而交换机中使用的流表也是如此,不过在它的流表项中整合了网络中各个层次的网络配置信息,从而在进行数据转发时可以使用更丰富的规则。
但是,在数据包转发的过程中,如果数据包与流表项匹配失败的话,交换机会将数据包先转发至控制器,控制器在完成路由重计算后再将该数据包以及新的流表项发回到交换机,由交换机重新进行数据包与新的流标项匹配;这样一来,数据包在交换机和控制器之间需要频繁交换,不仅提高了丢包率,还会占用过多的带宽资源,降低了服务质量。
发明内容
有鉴于此,本发明实施例期望提供一种处理数据包的方法、交换机、装置及计算机可读存储介质,以提高交换机和控制器之间的通信效率、降低丢包率,节省带宽资源,提高服务质量。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供一种处理数据包的方法,所述方法包括:
提取数据包的包头域信息;
在所述数据包与第一流表项匹配失败时,将所述包头域信息和匹配失败信息封装成packet_in消息,将所述packet_in消息发送至控制器,并将所述数据包存入缓存;
接收所述控制器发送的packet_out消息,并提取所述packet_out消息中携带的所述包头域信息对应的第二流表项;
按照所述第二流表项,将所述缓存中的所述数据包重新进入流表项匹配流程。
上述方案中,所述将所述缓存中的所述数据包重新进入流表项匹配流程,包括:
在所述缓存中存在有两个或两个以上数据包时,将所述缓存中的每个数据包按照预设调度规则依次重新进入流表项匹配流程;
所述预设调度规则包括:所述每个数据包进入所述缓存的等待时间由长到短的顺序依次排队的规则、所述每个数据包本身的优先级由高到低的顺序依次排队的规则,或所述数据包的综合调度等级由高到低的顺序依次排队的规则。
上述方案中,所述数据包进入所述缓存的等待时间为T,所述数据包本身的优先级为P,所述数据包的综合调度等级为Q,其中,所述Q=PT2
上述方案中,在所述提取所述packet_out消息中携带的所述包头域信息对应的第二流表项之后,在所述按照所述更新后的流表项及预设调度规则,将所述缓存中的所述数据包重新进入流表项匹配流程之前,所述方法还包括:
根据所述第二流表项更新本地的流表。
上述方案中,所述包头域信息对应的第二流表项,是由所述控制器根据所述匹配失败信息路由重计算后得到的。
本发明还提供一种处理数据包的交换机,所述交换机包括:接口,总线,存储器,与处理器,所述接口、所述存储器与所述处理器通过所述总线相连接,所述存储器用于存储计算机程序,所述处理器读取所述计算机程序用于:
提取数据包的包头域信息;
在所述数据包与第一流表项匹配失败时,将所述包头域信息和匹配失败信息封装成packet_in消息,将所述packet_in消息发送至控制器,并将所述数据包存入缓存;
接收所述控制器发送的packet_out消息,并提取所述packet_out消息中携带的所述包头域信息对应的第二流表项;
按照所述第二流表项,将所述缓存中的所述数据包重新进入流表项匹配流程。
上述方案中,所述处理器读取所述计算机程序具体用于:
在所述缓存中存在有两个或两个以上数据包时,将所述缓存中的每个数据包按照预设调度规则依次重新进入流表项匹配流程;
所述预设调度规则包括:所述每个数据包进入所述缓存的等待时间由长到短的顺序依次排队的规则、所述每个数据包本身的优先级由高到低的顺序依次排队的规则,或所述数据包的综合调度等级由高到低的顺序依次排队的规则。
上述方案中,所述数据包进入所述缓存的等待时间为T,所述数据包本身的优先级为P,所述数据包的综合调度等级为Q,其中,所述Q=PT2
上述方案中,所述处理器读取所述计算机程序还用于:
根据所述第二流表项更新本地的流表。
上述方案中,所述包头域信息对应的第二流表项,是由所述控制器根据所述匹配失败信息路由重计算后得到的。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的处理数据包的步骤。
本发明还提供一种处理数据包的装置,所述处理数据包的装置包括:
提取模块,用于提取数据包的包头域信息;
封装模块,用于在所述数据包与第一流表项匹配失败时,将所述包头域信息和匹配失败信息封装成packet_in消息,将所述packet_in消息发送至控制器,并将所述数据包存入缓存;
管理模块,用于接收所述控制器发送的packet_out消息,并提取所述packet_out消息中携带的所述包头域信息对应的第二流表项;
调度模块,用于按照所述第二流表项,将所述缓存中的所述数据包重新进入流表项匹配流程。
本发明提供的处理数据包的方法、交换机、装置及计算机可读存储介质,通过提取数据包的包头域信息;在数据包与第一流表项匹配失败时,将包头域信息和匹配失败信息封装成packet_in消息,将packet_in消息发送至控制器,并将数据包存入缓存;接收控制器发送的packet_out消息,并提取packet_out消息中携带的包头域信息对应的第二流表项;按照第二流表项,将缓存中的数据包重新进入流表项匹配流程;通过将数据包的包头域信息和匹配失败信息封装成packet_in消息与控制器进行交换,以及在交换机中增设缓存区专门保存配置失败的数据包,避免了数据包在交换机与控制器之间的交换,由于包头域信息和匹配失败信息占用的字节大小很小,不仅提高了交换机和控制器之间的通信效率、降低了丢包率,而且不会占用过多的带宽资源,能够有效的提高服务质量。
附图说明
图1为本发明处理数据包的方法实施例一的流程图;
图2为本发明处理数据包的方法实施例二的流程图;
图3为本发明处理数据包的装置实施例的结构示意图;
图4为本发明处理数据包的交换机实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
图1为本发明处理数据包的方法实施例一的流程图,如图1所示,本发明实施例提供的处理数据包的方法应用在交换机上,该方法可以包括如下步骤:
步骤101、提取数据包的包头域信息。
交换机在接收到新的数据包后,将数据包的包头域信息提取出来。
步骤102、在数据包与第一流表项匹配失败时,将包头域信息和匹配失败信息封装成packet_in消息,将packet_in消息发送至控制器,并将数据包存入缓存。
交换机在将数据包的包头域信息提取出后,会判断数据包与第一流表项是否匹配成功,如果数据包与第一流表项匹配成功,则执行第一流表项对应的动作(Action),如果数据包与第一流表项匹配失败,则交换机会将该数据包的包头域信息和匹配失败信息一并封装成packet_in消息,将packet_in消息通过专用通道发送至控制器(Controller),并将该数据包存储在本地的缓存中。
这里需要说明的是,这里的第一流表项可以理解为本地当前的流表项,如果有多个数据包都匹配的话,其每个数据包的匹配过程都相同,只是根据流表编号从小到大、流表项优先级从高到低的顺序依次匹配,因此,在本发明实施例中仅以一个数据包的匹配来具体说明。
流表中的流表项有很多匹配规则,比较重要的有入端口、源(目的)MAC地址、源(目的)IP地址(v4或v6)及优先级等,其中优先级规定了流表项的匹配先后顺序,优先级越大的流表项越先被匹配;匹配规则须全部条件满足才算匹配成功,匹配成功之后则按照流表项规定的动作(Action)进行直接输出(output)、入队(set_queue)、洪范(flood)、丢弃(drop)、转发至控制器(Controller)、匹配下一级流表(goto_table)等操作。
通过将数据包的包头域信息和匹配失败信息封装成packet_in消息与控制器进行交换,包头域信息和匹配失败信息仅数十字节大小,不仅提高了交换机和控制器之间的通信效率、降低了丢包率,而且不会占用过多的带宽资源。
步骤103、接收控制器发送的packet_out消息,并提取packet_out消息中携带的包头域信息对应的第二流表项。
交换机接收控制器(Controller)发送的packet_out消息,并从packet_out消息中提取出携带的该数据包的包头域信息对应的第二流表项,该第二流表项即为控制器(Controller)根据该数据包的包头域信息与匹配失败信息路由重计算后得到的新的流表项。
步骤104、按照第二流表项,将缓存中的数据包重新进入流表项匹配流程。
交换机按照第二流流表项,将之前存储在缓存中的匹配失败的数据包提取出,并使该数据包重新进入流表项匹配流程,最终完成数据包的转发。
本发明实施例提供的处理数据包的方法,通过提取数据包的包头域信息;在数据包与第一流表项匹配失败时,将包头域信息和匹配失败信息封装成packet_in消息,将packet_in消息发送至控制器,并将数据包存入缓存;接收控制器发送的packet_out消息,并提取packet_out消息中携带的包头域信息对应的第二流表项;按照第二流表项,将缓存中的数据包重新进入流表项匹配流程;通过将数据包的包头域信息和匹配失败信息封装成packet_in消息与控制器进行交换,以及在交换机中增设缓存区专门保存配置失败的数据包,避免了数据包在交换机与控制器之间的交换,由于包头域信息和匹配失败信息占用的字节大小很小,不仅提高了交换机和控制器之间的通信效率、降低了丢包率,而且不会占用过多的带宽资源,能够有效的提高服务质量。
为了更加体现出本发明的目的,在上述实施例的基础上,进一步的举例说明。
图2为本发明处理数据包的方法实施例二的流程图,如图2所示,本发明实施例提供的处理数据包的方法可以应用在OpenFlow交换机上,该方法可以包括如下步骤:
步骤201、提取数据包的包头域信息。
OpenFlow交换机在接收到新的数据包后,将数据包的包头域信息提取出来;该包头域信息用于后续步骤中表流项匹配。
步骤202、判断数据包与第一流表项是否匹配失败。
OpenFlow交换机在将数据包的包头域信息提取出后,会判断数据包与第一流表项是否匹配失败,若数据包与第一流表项匹配成功,则执行步骤203;若数据包与第一流表项匹配失败,则执行步骤204。
这里需要说明的是,这里的第一流表项可以理解为本地当前的流表项,如果有多个数据包都匹配的话,其每个数据包的匹配过程都相同,只是根据流表编号从小到大、流表项优先级从高到低的顺序依次匹配,因此,在本发明实施例中仅以判断一个数据包的匹配来具体说明。
步骤203、将数据包转发。
OpenFlow交换机将数据包转发。
步骤204、将数据包的包头域信息和匹配失败信息封装成packet_in消息。
OpenFlow交换机将数据包的包头域信息和匹配失败信息封装成packet_in消息。
步骤205、将packet_in消息发送至控制器,并将数据包存入本地缓存中。
OpenFlow交换机将packet_in消息通过专用通道发送至控制器(Controller),并将该数据包存储在本地的缓存中。
步骤206、接收控制器发送的packet_out消息,并提取packet_out消息中携带的包头域信息对应的第二流表项。
OpenFlow交换机接收控制器(Controller)发送的packet_out消息,并从packet_out消息中提取出携带的该数据包的包头域信息对应的第二流表项,其中,该第二流表项,是由控制器根据该数据包的包头域信息与匹配失败信息路由重计算后得到的新的流表项。
步骤207、根据第二流表项更新本地的流表。
OpenFlow交换机根据获取到的第二流表项更新本地的流表。
步骤208、在缓存中只存在一个数据包时,按照第二流表项,将缓存中的数据包重新进入流表项匹配流程。
在缓存中只存在一个数据包时,OpenFlow交换机按照第二流表项,将之前存储在缓存中的匹配失败的数据包提取出,并使该数据包重新进入流表项匹配流程,最终完成数据包的转发。
步骤209、在缓存中存在有两个或两个以上数据包时,将缓存中的每个数据包按照预设调度规则依次重新进入流表项匹配流程。
在缓存中存在有两个或两个以上数据包时,OpenFlow交换机按照每个数据包各自对应的第二流表项,将之前存储在缓存中的每个数据包按照预设调度规则依次提取出,并使数据包重新进入流表项匹配流程,最终完成数据包的转发。
其中,预设调度规则包括但不限于:每个数据包进入缓存的等待时间由长到短的顺序依次排队的规则、每个数据包本身的优先级由高到低的顺序依次排队的规则,或数据包的综合调度等级由高到低的顺序依次排队的规则;OpenFlow交换机中开放有预设调度规则的开放式编程接口,这样可以供不同的业务逻辑按需所用。
优选的,对于数据包的综合调度等级由高到低的顺序依次排队的规则,数据包进入缓存的等待时间为T,数据包本身的优先级为P,数据包的综合调度等级为Q,定义公式为:Q=PT2
由公式可以看出,综合调度等级兼顾了原数据包的优先级和进入缓存的等待时间,对于等待时间较长的数据包会有更高的调度等级,防止低优先级的数据包因长时间得不到调度而饿死,能有效降低数据包的排队时延,为用户提供更加优质的服务。
本发明实施例提供的处理数据包的方法,通过提取数据包的包头域信息;判断数据包与第一流表项是否匹配失败;在匹配失败时,将数据包的包头域信息和匹配失败信息封装成packet_in消息;将packet_in消息发送至控制器,并将数据包存入本地缓存中;接收控制器发送的packet_out消息,并提取packet_out消息中携带的包头域信息对应的第二流表项;根据第二流表项更新本地的流表;在缓存中只存在一个数据包在缓存中存在有两个或两个以上数据包时,将缓存中的每个数据包按照预设调度规则依次重新进入流表项匹配流程时,按照第二流表项,将缓存中的数据包重新进入流表项匹配流程;将数据包的包头域信息和匹配失败信息封装成packet_in消息与控制器进行交换,以及在交换机中增设缓存区专门保存配置失败的数据包,避免了数据包在交换机与控制器之间的交换,由于包头域信息和匹配失败信息占用的字节大小很小,不仅提高了交换机和控制器之间的通信效率、降低了丢包率,而且不会占用过多的带宽资源,能够有效的提高服务质量;另外,设置预设调度规则,并开放预设调度规则的编程接口,可以根据业务需求灵活配置,进一步提高服务质量。
图3为本发明处理数据包的装置实施例的结构示意图,如图3所示,本发明实施例提供的处理数据包的装置03,包括:
提取模块31,用于提取数据包的包头域信息;
封装模块32,用于在所述数据包与第一流表项匹配失败时,将所述包头域信息和匹配失败信息封装成packet_in消息,将所述packet_in消息发送至控制器,并将所述数据包存入缓存;
管理模块33,用于接收所述控制器发送的packet_out消息,并提取所述packet_out消息中携带的所述包头域信息对应的第二流表项;
调度模块34,用于按照所述第二流表项,将所述缓存中的所述数据包重新进入流表项匹配流程。
进一步的,所述调度模块34,具体用于在所述缓存中存在有两个或两个以上数据包时,将所述缓存中的每个数据包按照预设调度规则依次重新进入流表项匹配流程;
所述预设调度规则包括:所述每个数据包进入所述缓存的等待时间由长到短的顺序依次排队的规则、所述每个数据包本身的优先级由高到低的顺序依次排队的规则,或所述数据包的综合调度等级由高到低的顺序依次排队的规则。
进一步的,所述数据包进入所述缓存的等待时间为T,所述数据包本身的优先级为P,所述数据包的综合调度等级为Q,其中,所述Q=PT2
进一步的,所述装置还包括:
更新模块35,用于根据所述第二流表项更新本地的流表。
进一步的,所述包头域信息对应的第二流表项,是由所述控制器根据所述匹配失败信息路由重计算后得到的。
需要说明的是:上述实施例提供的处理数据包的装置在进行处理数据包时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。
本实施例的处理数据包的装置,可以用于执行上述所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图4为本发明处理数据包的交换机实施例的结构示意图,如图4所示,本发明实施例提供的处理数据包的交换机04,包括:接口41,总线42,存储器43,与处理器44,所述接口41、所述存储器43与所述处理器44通过所述总线42相连接,所述存储器43用于存储计算机程序,所述处理器44读取所述计算机程序用于:
提取数据包的包头域信息;
在所述数据包与第一流表项匹配失败时,将所述包头域信息和匹配失败信息封装成packet_in消息,将所述packet_in消息发送至控制器,并将所述数据包存入缓存;
接收所述控制器发送的packet_out消息,并提取所述packet_out消息中携带的所述包头域信息对应的第二流表项;
按照所述第二流表项,将所述缓存中的所述数据包重新进入流表项匹配流程。
进一步的,所述处理器44读取所述计算机程序具体用于:
在所述缓存中存在有两个或两个以上数据包时,将所述缓存中的每个数据包按照预设调度规则依次重新进入流表项匹配流程;
所述预设调度规则包括:所述每个数据包进入所述缓存的等待时间由长到短的顺序依次排队的规则、所述每个数据包本身的优先级由高到低的顺序依次排队的规则,或所述数据包的综合调度等级由高到低的顺序依次排队的规则。
进一步的,所述数据包进入所述缓存的等待时间为T,所述数据包本身的优先级为P,所述数据包的综合调度等级为Q,其中,所述Q=PT2
进一步的,所述处理器44读取所述计算机程序还用于:
根据所述第二流表项更新本地的流表。
进一步的,所述包头域信息对应的第二流表项,是由所述控制器根据所述匹配失败信息路由重计算后得到的。
如图4所示,处理数据包的交换机04中的各个组件通过总线42耦合在一起;可理解,总线42用于实现这些组件之间的连接通信,总线42除包括数据总线之外,还包括电源总线、控制总线和状态信号总线,但是为了清楚说明起见,在图4中将各种总线都标为总线42。
其中,接口41可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。
可以理解,存储器43可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory);本发明实施例描述的存储器43旨在包括但不限于这些和任意其它适合类型的存储器。
本发明实施例中的存储器43用于存储各种类型的数据以支持处理数据包的交换机04的操作;这些数据的示例包括:用于在处理数据包的交换机04上操作的任何计算机程序,如操作系统和应用程序等;其中,操作系统包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;应用程序可以包含各种应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用业务;实现本发明实施例方法的程序可以包含在应用程序中。
上述本发明实施例揭示的方法可以应用于处理器44中,或者由处理器44实现,处理器44可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器44中的硬件的集成逻辑电路或者软件形式的指令完成;上述的处理器44可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等;处理器44可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图;通用处理器可以是微处理器或者任何常规的处理器等;结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成,软件模块可以位于存储介质中,该存储介质位于存储器43,处理器44读取存储器43中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,处理数据包的交换机04可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或其他电子元件实现,用于执行前述方法。
本发明提供的处理数据包的交换机,可以用于执行上述所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明还提供一种计算机可读存储介质,例如包括计算机程序的存储器43,上述计算机程序可由处理数据包的交换机04中的处理器44执行,以完成前述方法所述步骤;计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行,以实现以下步骤:
提取数据包的包头域信息;
在所述数据包与第一流表项匹配失败时,将所述包头域信息和匹配失败信息封装成packet_in消息,将所述packet_in消息发送至控制器,并将所述数据包存入缓存;
接收所述控制器发送的packet_out消息,并提取所述packet_out消息中携带的所述包头域信息对应的第二流表项;
按照所述第二流表项,将所述缓存中的所述数据包重新进入流表项匹配流程。
进一步的,所述计算机程序可被所述处理器执行,以具体实现以下步骤:
在所述缓存中存在有两个或两个以上数据包时,将所述缓存中的每个数据包按照预设调度规则依次重新进入流表项匹配流程;
所述预设调度规则包括:所述每个数据包进入所述缓存的等待时间由长到短的顺序依次排队的规则、所述每个数据包本身的优先级由高到低的顺序依次排队的规则,或所述数据包的综合调度等级由高到低的顺序依次排队的规则。
进一步的,所述数据包进入所述缓存的等待时间为T,所述数据包本身的优先级为P,所述数据包的综合调度等级为Q,其中,所述Q=PT2
进一步的,所述计算机程序还可被所述处理器执行,以实现以下步骤:
根据所述第二流表项更新本地的流表。
进一步的,所述包头域信息对应的第二流表项,是由所述控制器根据所述匹配失败信息路由重计算后得到的。
本发明提供的计算机可读存储介质,可以用于执行上述所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (10)

1.一种处理数据包的方法,其特征在于,所述方法包括:
提取数据包的包头域信息;
在所述数据包与第一流表项匹配失败时,将所述包头域信息和匹配失败信息封装成packet_in消息,将所述packet_in消息发送至控制器,并将所述数据包存入缓存;
接收所述控制器发送的packet_out消息,并提取所述packet_out消息中携带的所述包头域信息对应的第二流表项;
按照所述第二流表项,将所述缓存中的所述数据包重新进入流表项匹配流程;
其中,所述将所述缓存中的所述数据包重新进入流表项匹配流程,包括:
在所述缓存中存在有两个或两个以上数据包时,将所述缓存中的每个数据包按照预设调度规则依次重新进入流表项匹配流程;所述数据包进入所述缓存的等待时间为T,所述数据包本身的优先级为P,所述数据包的综合调度等级为Q,其中,所述Q=PT2
2.根据权利要求1所述的方法,其特征在于,所述预设调度规则,包括:
所述每个数据包进入所述缓存的等待时间由长到短的顺序依次排队的规则、所述每个数据包本身的优先级由高到低的顺序依次排队的规则,或所述数据包的综合调度等级由高到低的顺序依次排队的规则。
3.根据权利要求1所述的方法,其特征在于,在所述提取所述packet_out消息中携带的所述包头域信息对应的第二流表项之后,在按照所述第二流表项及预设调度规则,将所述缓存中的所述数据包重新进入流表项匹配流程之前,所述方法还包括:
根据所述第二流表项更新本地的流表。
4.根据权利要求1所述的方法,其特征在于,所述包头域信息对应的第二流表项,是由所述控制器根据所述匹配失败信息路由重计算后得到的。
5.一种处理数据包的交换机,其特征在于,所述交换机包括:接口,总线,存储器,与处理器,所述接口、所述存储器与所述处理器通过所述总线相连接,所述存储器用于存储计算机程序,所述处理器读取所述计算机程序用于:
提取数据包的包头域信息;
在所述数据包与第一流表项匹配失败时,将所述包头域信息和匹配失败信息封装成packet_in消息,将所述packet_in消息发送至控制器,并将所述数据包存入缓存;
接收所述控制器发送的packet_out消息,并提取所述packet_out消息中携带的所述包头域信息对应的第二流表项;
按照所述第二流表项,将所述缓存中的所述数据包重新进入流表项匹配流程;
其中,所述处理器读取所述计算机程序具体用于:
在所述缓存中存在有两个或两个以上数据包时,将所述缓存中的每个数据包按照预设调度规则依次重新进入流表项匹配流程;所述数据包进入所述缓存的等待时间为T,所述数据包本身的优先级为P,所述数据包的综合调度等级为Q,其中,所述Q=PT2
6.根据权利要求5所述的交换机,其特征在于,所述预设调度规则包括:所述每个数据包进入所述缓存的等待时间由长到短的顺序依次排队的规则、所述每个数据包本身的优先级由高到低的顺序依次排队的规则,或所述数据包的综合调度等级由高到低的顺序依次排队的规则。
7.根据权利要求5所述的交换机,其特征在于,所述处理器读取所述计算机程序还用于:
根据所述第二流表项更新本地的流表。
8.根据权利要求5所述的交换机,其特征在于,所述包头域信息对应的第二流表项,是由所述控制器根据所述匹配失败信息路由重计算后得到的。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的处理数据包的步骤。
10.一种处理数据包的装置,其特征在于,所述处理数据包的装置包括:
提取模块,用于提取数据包的包头域信息;
封装模块,用于在所述数据包与第一流表项匹配失败时,将所述包头域信息和匹配失败信息封装成packet_in消息,将所述packet_in消息发送至控制器,并将所述数据包存入缓存;
管理模块,用于接收所述控制器发送的packet_out消息,并提取所述packet_out消息中携带的所述包头域信息对应的第二流表项;
调度模块,用于按照所述第二流表项,将所述缓存中的所述数据包重新进入流表项匹配流程;
所述调度模块,具体用于在所述缓存中存在有两个或两个以上数据包时,将所述缓存中的每个数据包按照预设调度规则依次重新进入流表项匹配流程;所述数据包进入所述缓存的等待时间为T,所述数据包本身的优先级为P,所述数据包的综合调度等级为Q,其中,所述Q=PT2
CN201711098670.1A 2017-11-09 2017-11-09 处理数据包的方法、交换机、装置及计算机可读存储介质 Active CN109768931B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711098670.1A CN109768931B (zh) 2017-11-09 2017-11-09 处理数据包的方法、交换机、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711098670.1A CN109768931B (zh) 2017-11-09 2017-11-09 处理数据包的方法、交换机、装置及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN109768931A CN109768931A (zh) 2019-05-17
CN109768931B true CN109768931B (zh) 2020-10-13

Family

ID=66449761

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711098670.1A Active CN109768931B (zh) 2017-11-09 2017-11-09 处理数据包的方法、交换机、装置及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN109768931B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114629842A (zh) * 2022-03-30 2022-06-14 阿里巴巴(中国)有限公司 流表处理方法、电子设备、可读存储介质及产品

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104104561A (zh) * 2014-08-11 2014-10-15 武汉大学 一种基于OpenFlow协议的SDN防火墙状态检测方法及系统
CN104378309A (zh) * 2013-08-16 2015-02-25 中兴通讯股份有限公司 OpenFlow网络中实现QoS的方法、系统和相关设备
CN104767695A (zh) * 2015-04-20 2015-07-08 清华大学 一种数据中心中的任务级别的流调度方法
CN104767676A (zh) * 2014-01-03 2015-07-08 华为技术有限公司 Sdn网络中的数据报文转发方法和系统
CN104954281A (zh) * 2014-03-31 2015-09-30 中国移动通信集团公司 通信方法、系统、资源池管理系统、交换机和控制装置
CN105049358A (zh) * 2015-06-25 2015-11-11 清华大学 一种sdn网络的虚拟转发平台及其通信方法
CN105099942A (zh) * 2014-04-30 2015-11-25 华为技术有限公司 一种数据包处理方法及设备
CN105490962A (zh) * 2015-12-04 2016-04-13 哈尔滨工程大学 一种基于OpenFlow网络的QoS管理方法
CN105933225A (zh) * 2016-04-20 2016-09-07 上海斐讯数据通信技术有限公司 一种基于sdn的策略路由方法和系统
CN105992297A (zh) * 2015-02-12 2016-10-05 电信科学技术研究院 基于sdn的连接管理、转发控制方法及相关设备
WO2016198112A1 (en) * 2015-06-11 2016-12-15 Telefonaktiebolaget Lm Ericsson (Publ) Nodes and methods for handling packet flows
CN106330772A (zh) * 2015-07-10 2017-01-11 华为技术有限公司 SDN中的流表发送方法及OpenFlow控制器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9094126B2 (en) * 2012-11-07 2015-07-28 Nec Laboratories America, Inc. QoS-aware united control protocol for optical burst switching in software defined optical networks

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104378309A (zh) * 2013-08-16 2015-02-25 中兴通讯股份有限公司 OpenFlow网络中实现QoS的方法、系统和相关设备
CN104767676A (zh) * 2014-01-03 2015-07-08 华为技术有限公司 Sdn网络中的数据报文转发方法和系统
CN104954281A (zh) * 2014-03-31 2015-09-30 中国移动通信集团公司 通信方法、系统、资源池管理系统、交换机和控制装置
CN105099942A (zh) * 2014-04-30 2015-11-25 华为技术有限公司 一种数据包处理方法及设备
CN104104561A (zh) * 2014-08-11 2014-10-15 武汉大学 一种基于OpenFlow协议的SDN防火墙状态检测方法及系统
CN105992297A (zh) * 2015-02-12 2016-10-05 电信科学技术研究院 基于sdn的连接管理、转发控制方法及相关设备
CN104767695A (zh) * 2015-04-20 2015-07-08 清华大学 一种数据中心中的任务级别的流调度方法
WO2016198112A1 (en) * 2015-06-11 2016-12-15 Telefonaktiebolaget Lm Ericsson (Publ) Nodes and methods for handling packet flows
CN105049358A (zh) * 2015-06-25 2015-11-11 清华大学 一种sdn网络的虚拟转发平台及其通信方法
CN106330772A (zh) * 2015-07-10 2017-01-11 华为技术有限公司 SDN中的流表发送方法及OpenFlow控制器
CN105490962A (zh) * 2015-12-04 2016-04-13 哈尔滨工程大学 一种基于OpenFlow网络的QoS管理方法
CN105933225A (zh) * 2016-04-20 2016-09-07 上海斐讯数据通信技术有限公司 一种基于sdn的策略路由方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
OpenFlow协议分析;牙牙071492;《百度文库https://wenku.baidu.com/view/9d04e433fab069dc51220136.html》;20160111;正文第37页第1行-第41页第8行 *

Also Published As

Publication number Publication date
CN109768931A (zh) 2019-05-17

Similar Documents

Publication Publication Date Title
US11929945B2 (en) Managing network traffic in virtual switches based on logical port identifiers
EP3355526B1 (en) Systems and methods for propagating metadata of in-flight packets within kernel space
CN108833299B (zh) 一种基于可重构交换芯片架构的大规模网络数据处理方法
CN106878194B (zh) 一种报文处理方法和装置
CN111565113B (zh) 用于sdn控制器的灵活以太网网络拓扑抽象方法及系统
CN106685826B (zh) 交换机堆叠系统、从设备、交换芯片及处理协议报文方法
CN104717116A (zh) 用于软件定义联网隧穿扩展的方法和系统
US20140280841A1 (en) Scalable distributed control plane for network switching systems
CN107566237B (zh) 一种数据报文处理方法及装置
CN115134315B (zh) 报文转发方法及相关装置
CN106506315B (zh) 一种报文转发的透明配置方法
CN111026324A (zh) 转发表项的更新方法及装置
US11165746B2 (en) Multicast traffic in virtual private networks
US9858132B1 (en) Systems and methods for facilitating atomic delivery of bundled data sets to applications within distributed systems
CN107770031A (zh) 一种可扩展虚拟局域网vxlan报文处理方法和装置
CN109768931B (zh) 处理数据包的方法、交换机、装置及计算机可读存储介质
CN108737239B (zh) 一种报文转发方法及装置
CN103986660B (zh) 加载微码的装置以及加载微码的方法
US9471402B1 (en) Systems and methods for facilitating dependency-ordered delivery of data sets to applications within distributed systems
WO2016173196A1 (zh) 地址映射关系的学习方法及装置
WO2015154393A1 (zh) 业务节点能力处理方法、装置、业务分类器及业务控制器
US10009252B2 (en) Flow entry delivery method and communication system
US11909630B1 (en) Hitless migration of interconnected data center networks for network virtualization overlay using gateways
CN112737915B (zh) 基于智能网卡的内网隧道跨域网关转发方法、系统、设备和介质
WO2014183525A1 (zh) 报文的处理方法和级联芯片

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100032 No. 29, Finance Street, Beijing, Xicheng District

Patentee after: CHINA MOBILE COMMUNICATIONS GROUP Co.,Ltd.

Address before: 100032 No. 29, Finance Street, Beijing, Xicheng District

Patentee before: CHINA MOBILE COMMUNICATIONS Corp.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220706

Address after: 610041 China (Sichuan) pilot Free Trade Zone, Chengdu, Sichuan

Patentee after: China Mobile (Chengdu) information and Communication Technology Co.,Ltd.

Patentee after: CHINA MOBILE COMMUNICATIONS GROUP Co.,Ltd.

Address before: 100032 No. 29, Finance Street, Beijing, Xicheng District

Patentee before: CHINA MOBILE COMMUNICATIONS GROUP Co.,Ltd.