CN106603409B - 一种数据处理系统、方法及设备 - Google Patents
一种数据处理系统、方法及设备 Download PDFInfo
- Publication number
- CN106603409B CN106603409B CN201611089592.4A CN201611089592A CN106603409B CN 106603409 B CN106603409 B CN 106603409B CN 201611089592 A CN201611089592 A CN 201611089592A CN 106603409 B CN106603409 B CN 106603409B
- Authority
- CN
- China
- Prior art keywords
- message
- ovs
- data packet
- sdn controller
- memory area
- 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
Images
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/38—Flow based routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering arrangements using dynamic buffer space allocation
Abstract
一种数据处理系统、方法及设备,用以解决OpenFlow网络中现有的数据处理方案存在的消息传输时延大的问题。方法包括:在OVS的本地缓存不足以存储数据包时,OVS将根据数据包生成的第一消息写入第一内存区域;在本地缓存足够存储数据包时,OVS将数据包存储在本地缓存内,并将根据数据包生成的第二消息写入第二内存区域;存储在第一内存区域的第一消息和存储在第二内存区域的第二消息被分别搬移到第三内存区域和第四内存区域;在相比于上一次检测,SDN控制器本次检测到第三内存区域中存在新写入的第一消息时,SDN控制器读取并处理第四内存区域中的第二消息;OVS释放生成被处理的第二消息的数据包所占用的本地缓存。
Description
技术领域
本发明涉及无线通信领域,尤其涉及一种数据处理系统、方法及设备。
背景技术
开放网络(OpenFlow)主要由开放式虚拟化软件交换机(OpenvSwitch,OVS)和软件定义网络(Software Defined Networks,SDN)控制器两部分组成,OVS和SDN控制器共同完成报文转发,从而实现数据的转发和控制的分离。
OVS的内核和用户空间中均维护一个流表,OVS接收到一个数据包后,将该数据包依次与内核和用户空间中维护的流表进行匹配,并在从该流表中匹配对应于该数据包的处理动作之后,对数据包执行匹配到的处理动作。若内核和用户空间中维护的流表都没有匹配到该数据包,则OVS根据OVS的本地缓存情况,基于数据包生成相应类型的消息,并以套接字(socket)形式将该生成的消息发送给SDN控制器,由SDN控制器处理该数据包。其中,OVS的本地缓存足够存储数据包时,OVS将该数据包存储在OVS的本地缓存,并将该数据包的部分内容作为消息负载发送给SDN控制器;随着OVS的本地缓存存储的数据包的增多,当OVS的本地缓存不足以存储数据包时,OVS将该数据包的全部内容作为消息负载发送给SDN控制器。
在高速大流量数据包需要转发的环境下,由于OVS的本地缓存有限,不足以存储大量的数据包,因此对于大多数的数据包,必然会导致数据包的全部内容作为消息负载发送给SDN控制器,进而增大消息传输时延。
综上所述,OpenFlow网络中现有的OVS和SDN控制器转发数据的方案存在消息传输时延大的问题。
发明内容
本发明实施例提供了一种数据处理系统、方法及设备,用以解决OpenFlow网络中现有的OVS和SDN控制器转发数据的方案存在的消息传输时延大的问题。
第一方面,本发明实施例提供的一种数据处理系统,包括开放式虚拟化软件交换机(OVS)和软件定义网络(SDN)控制器,其中,
在从所述OVS维护的流表中未匹配到待处理的数据包的情况下,所述OVS用于判断所述OVS的本地缓存是否足够存储所述数据包;
在所述本地缓存不足以存储所述数据包的情况下,所述OVS还用于根据所述数据包生成一个第一消息,并将所述第一消息写入所述OVS的第一内存区域;
在所述本地缓存足够存储所述数据包的情况下,所述OVS还用于将所述数据包存储在所述本地缓存内,并根据所述数据包生成一个第二消息,将所述第二消息写入所述OVS的第二内存区域,所述第一内存区域和所述第二内存区域是分离的;
所述SDN控制器用于检测所述SDN控制器的第三内存区域中存在的第一消息;
在相比于上一次检测,本次检测到所述第三内存区域中存在新写入的第一消息的情况下,所述SDN控制器还用于读取并处理所述SDN控制器的第四内存区域中的至少一个第二消息;其中,存储在所述第一内存区域内的所有第一消息均被搬移到所述第三内存区域内,存储在所述第二内存区域内的所有第二消息均被搬移到所述第四内存区域内;
在至少一个第二消息被所述SDN控制器读取并处理之后,所述OVS还用于释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
通过上述第一方面所述的数据处理系统,在从OVS维护的流表中未匹配到待处理的数据包的情况下,OVS根据本地缓存情况向OVS的不同内存区域写入消息,写入OVS的不同内存区域的消息将被搬移到SDN控制器的不同内存区域中,其中OVS会将生成第二消息的数据包存储在本地缓存中。SDN控制器通过检测第三内存区域中存在的第一消息,可确定OVS的本地缓存情况;在相比于上一次检测,本次检测到第三内存区域中存在新写入的第一消息的情况下,说明OVS的本地缓存不充足,SDN控制器优先处理第四内存区域中的第二消息,以使OVS释放生成被处理的第二消息的数据包所占用的本地缓存,进而达到缓解OVS的本地缓存不充足的效果,降低消息传输时延。
在一种可能的实现中,所述SDN控制器与所述OVS之间建立有基于直接内存访问方式的通信连接,所述OVS用于基于所述RDMA访问所述第三内存区域和所述第四内存区域。
其中,在承载OVS的物理主机与承载SDN控制器的物理主机不是同一主机的情况下,OVS与SDN控制器之间基于的直接内存访问方式可以是远程直接数据存取RDMA方式;在承载OVS的物理主机与承载SDN控制器的物理主机是同一主机的情况下,OVS与SDN控制器之间基于的直接内存访问方式可以是直接数据存取DMA方式。
这样,由于OVS与SDN控制器之间采用直接内存访问的方式进行通信,取代现有技术中OVS与SDN控制器之间以socket形式进行通信的方式,进而避免内核和CPU的频繁调度工作,降低内核和CPU的工作负担。
第二方面,本发明实施例提供的一种数据处理方法,包括:
软件定义网络(SDN)控制器检测所述SDN控制器的第三内存区域中存在的第一消息;其中,存储在所述第三内存区域内的所述第一消息是从开放式虚拟化软件交换机(OVS)的第一内存区域搬移的,存储在所述第一内存区域内的所述第一消息是在从所述OVS维护的流表中未匹配到待处理的第一数据包,且所述OVS的本地缓存不足以存储所述第一数据包的情况下,所述OVS根据所述第一数据包生成并将写入所述第一内存区域的;
在相比于上一次检测,本次检测到所述第三内存区域中存在新写入的第一消息的情况下,所述SDN控制器读取并处理所述SDN控制器的第四内存区域中的至少一个第二消息,以使所述OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存;其中,存储在所述第四内存区域内的所述第二消息是从所述OVS的第二内存区域搬移的;存储在所述第二内存区域的所述第二消息是在所述OVS维护的流表中未匹配到待处理的第二数据包,且所述OVS的本地缓存足以存储所述第二数据包的情况下,所述OVS根据所述第二数据包生成并将写入所述第二内存区域的;所述第二数据包被存储在所述OVS的本地缓存。
在一种可能的实现中,在SDN控制器的本次检测为SDN控制器首次检测第三内存区域中存在的第一消息的情况下,则第三内存区域中存在的第一消息即为新写入的第一消息,说明OVS的本地缓存正处于不足的状态。
在此情况下,需要SDN控制器优先处理占用OVS的本地缓存的数据包生成的第二消息,即执行所述SDN控制器读取并处理所述SDN控制器的第四内存区域中的至少一个第二消息,以使所述OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
在一种可能的实现中,在相比于上一次检测,本次检测到所述第三内存区域中不存在新写入的第一消息的情况下,则所述SDN控制器按照所述第三内存区域和所述第四内存区域中消息的写入时间先后顺序,读取并处理消息。
SDN控制器的第三内存区域中不存在新写入的第一消息,说明OVS的本地缓存正处于充足状态,因此SDN控制器可按照消息的写入时间先后顺序对消息进行处理,不必采取优先处理方式。
在一种可能的实现中,在所述SDN控制器检测所述第三内存区域中存在的第一消息之前,所述SDN控制器注册所述第三内存区域和所述第四内存区域。
其中,所述第三内存区域和所述第四内存区域均位于承载所述SDN控制器的物理主机的本地网卡内。
在一种可能的实现中,在所述SDN控制器检测所述第三内存区域中存在的第一消息之前,所述SDN控制器在所述SDN控制器与所述OVS之间建立基于直接内存访问方式(RDMA)的通信连接,以使所述OVS基于所述RDMA访问所述第三内存区域和所述第四内存区域。
这样,由于OVS与SDN控制器之间采用直接内存访问的方式进行通信,取代现有技术中OVS与SDN控制器之间以socket形式进行通信的方式,进而避免内核和CPU的频繁调度工作,降低内核和CPU的工作负担。
第三方面,本发明实施例提供的一种数据处理方法,包括:
在从开放式虚拟化软件交换机(OVS)维护的流表中未匹配到待处理的数据包的情况下,所述OVS判断所述OVS的本地缓存是否足够存储所述数据包;
在所述本地缓存不足以存储所述数据包的情况下,所述OVS根据所述数据包生成一个第一消息,并将所述第一消息写入所述OVS的第一内存区域;其中,存储在所述第一内存区域内的所述第一消息将被搬移到软件定义网络(SDN)控制器的第三内存区域;
在所述本地缓存足够存储所述数据包的情况下,所述OVS将所述数据包存储在所述本地缓存,根据所述数据包生成一个第二消息,并将所述第二消息写入所述OVS的第二内存区域,所述第一内存区域和所述第二内存区域是分离的;存储在所述第二内存区域的所述第二消息将被搬移到所述SDN控制器的第四内存区域内;
在所述SDN控制器判定出相对于上一次检测,本次检测的所述第三内存区域内存在新写入的第一消息的情况下,则在存储在所述第四内存区域内的至少一个第二消息被所述SDN控制器读取并处理之后,所述OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
上述方法中,在从OVS维护的流表中未匹配到待处理的数据包的情况下,OVS根据本地缓存情况向OVS的不同内存区域写入消息,写入OVS的不同内存区域的消息将被搬移到SDN控制器的不同内存区域中,其中OVS会将生成第二消息的数据包存储在本地缓存中。以使SDN控制器通过检测第三内存区域中存在的第一消息,可确定OVS的本地缓存情况;在相比于上一次检测,本次检测到第三内存区域中存在新写入的第一消息的情况下,说明OVS的本地缓存不充足,SDN控制器优先处理第四内存区域中的第二消息,以使OVS释放生成被处理的第二消息的数据包所占用的本地缓存,进而达到缓解OVS的本地缓存不充足的效果,降低消息传输时延。
在一种可能的实现中,在至少一个第二消息将被所述SDN控制器读取并处理之后,以及在所述OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存之前,所述OVS接收所述SDN控制器发送的指示消息,所述指示消息用于指示所述OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
这样,OVS便可以根据所述指示消息的指示,释放生成被处理的至少一个第二消息的数据包所占用的本地缓存,进而达到缓解OVS的本地缓存不充足的效果,降低消息传输时延。
在一种可能的实现中,在所述OVS判断所述OVS的本地缓存是否足够存储所述数据包之前,所述OVS在所述OVS和所述SDN交换机之间建立基于直接内存访问方式(RDMA)的通信连接,以使所述OVS基于所述RDMA访问所述第一内存区域和所述第二内存区域。
这样,由于OVS与SDN控制器之间采用直接内存访问的方式进行通信,取代现有技术中OVS与SDN控制器之间以socket形式进行通信的方式,进而避免内核和CPU的频繁调度工作,降低内核和CPU的工作负担。
在一种可能的实现中,在OVS判断所述OVS的本地缓存是否足够存储所述数据包之前,所述OVS注册所述第一内存区域和所述第二内存区域。
其中,所述第一内存区域和所述第二内存区域均位于承载所述OVS的物理主机的本地网卡内。
第四方面,本发明实施例提供的一种SDN控制器,包括:
消息检测单元,用于检测所述SDN控制器的第三内存区域中存在的第一消息;其中,存储在所述第三内存区域内的所述第一消息是从开放式虚拟化软件交换机(OVS)的第一内存区域搬移的,存储在所述第一内存区域内的所述第一消息是在从所述OVS维护的流表中未匹配到待处理的第一数据包,且所述OVS的本地缓存不足以存储所述第一数据包的情况下,所述OVS根据所述第一数据包生成并将写入所述第一内存区域的;
消息处理单元,用于在相比于所述消息检测单元的上一次检测,所述消息检测单元的本次检测到所述第三内存区域中存在新写入的第一消息的情况下,读取并处理所述SDN控制器的第四内存区域中的至少一个第二消息,以使所述OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存;其中,存储在所述第四内存区域内的所述第二消息是从所述OVS的第二内存区域搬移的;存储在所述第二内存区域的所述第二消息是在所述OVS维护的流表中未匹配到待处理的第二数据包,且所述OVS的本地缓存足以存储所述第二数据包的情况下,所述OVS根据所述第二数据包生成并将写入所述第二内存区域的;所述第二数据包被存储在所述OVS的本地缓存。
在一种可能的实现中,在所述本次检测为首次检测的情况下,所述第三内存区域中存在的第一消息即为新写入的第一消息。
在一种可能的实现中,所述SDN控制器还包括:
内存区域注册单元,用于在所述消息检测单元检测所述第三内存区域中存在的第一消息之前,注册所述第三内存区域和所述第四内存区域。
在一种可能的实现中,所述SDN控制器还包括:
连接建立单元,用于在所述消息检测单元检测所述第三内存区域中存在的第一消息之前,在所述SDN控制器与所述OVS之间建立基于直接内存访问方式(RDMA)的通信连接,以使所述OVS基于所述RDMA访问所述第三内存区域和所述第四内存区域。
在一种可能的实现中,所述第三内存区域和所述第四内存区域均位于承载所述SDN控制器的物理主机的本地网卡内。
第五方面,本发明实施例提供的一种OVS,包括:
缓存判断单元,用于在从所述OVS维护的流表中未匹配到待处理的数据包的情况下,判断所述OVS的本地缓存是否足够存储所述数据包;
处理单元,用于在所述缓存判断单元判定所述本地缓存不足以存储所述数据包的情况下,根据所述数据包生成一个第一消息,并将所述第一消息写入所述OVS的第一内存区域;其中,存储在所述第一内存区域内的所述第一消息将被搬移到软件定义网络(SDN)控制器的第三内存区域;
所述处理单元,还用于在所述缓存判断单元判定所述本地缓存足够存储所述数据包的情况下,所述OVS将所述数据包存储在所述本地缓存,根据所述数据包生成一个第二消息,并将所述第二消息写入所述OVS的第二内存区域,所述第一内存区域和所述第二内存区域是分离的;存储在所述第二内存区域的所述第二消息将被搬移到所述SDN控制器的第四内存区域内;
缓存释放单元,用于在所述SDN控制器判定出相对于上一次检测,本次检测的所述第三内存区域内存在新写入的第一消息的情况下,在所述处理单元存储在所述第四内存区域内的至少一个第二消息被所述SDN控制器读取并处理之后,释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
在一种可能的实现中,所述缓存释放单元还用于:
在至少一个第二消息被所述SDN控制器读取并处理之后,以及在所述缓存释放单元释放生成被处理的至少一个第二消息的数据包所占用的本地缓存之前,接收所述SDN控制器发送的指示消息,所述指示消息用于指示所述缓存释放单元释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
在一种可能的实现中,所述OVS还包括:
连接建立单元,用于在所述缓存判断单元判断所述OVS的本地缓存是否足够存储所述数据包之前,在所述OVS和所述SDN交换机之间建立基于直接内存访问方式(RDMA)的通信连接,以使所述OVS基于所述RDMA访问所述第一内存区域和所述第二内存区域。
附图说明
图1为本发明实施例提供的一种OpenFlow网络结构示意图;
图2为本发明实施例提供的一种流表结构示意图;
图3A为本发明实施例提供的一种数据处理系统的结构示意图;
图3B为本发明实施例提供的一种建立数据处理系统的方法流程示意图;
图3C为本发明实施例提供的一种OVS与SDN控制器的连接结构示意图;
图4为本发明实施例提供的一种数据处理方法流程示意图;
图5为本发明实施例提供的一种SDN控制器的结构示意图;
图6为本发明实施例提供的另一种SDN控制器的结构示意图;
图7为本发明实施例提供的一种OVS的结构示意图;
图8为本发明实施例提供的另一种OVS的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例涉及OpenFlow网络,OpenFlow网络主要由OVS和SDN控制器两部分组成,OVS和SDN控制器共同完成报文转发,从而实现数据的转发和控制的分离。OVS根据流表来转发数据包,代表着数据转发平面;SDN控制器通过全网络视图和预先协商好的接口操作来控制OVS中的流表,从而达到控制数据转发的目的,SDN控制器控制逻辑表示控制平面。
以如图1所示的OpenFlow网络结构为例,SDN控制器负责管理流表(Flow Table)的生成、维护以及配置,OVS负责根据SDN控制器配置的流表对数据进行转发,OVS可以分别与SDN控制器和网络设备进行通信。OVS由流表、安全通道以及OpenFlow协议三部分组成。其中,流表是OVS进行转发策略控制的核心数据结构,如图2所示,流表包含规则(Rule)、操作(Action)和状态(Status)三部分,规则定义了数据包的特征,规则中包括10个包头标志域,包头标志域的设置用于识别不同类型的数据包;操作用以表明OVS对数据流进行的处理,主要包括以下几种:转发数据流到指定端口、封装数据并发送到SDN控制器、丢弃数据包、发送到正常处理路径、修改域;状态定义了一些计数器,用来统计OpenFlow网络中相关表、数据流和端口等的参数。安全通道用于规定OVS如何与SDN控制器建立连接、通信以及通信的消息类型。OpenFlow协议中主要定义了三种消息类型,分别为SDN控制器-OVS(Controller-to-switch)消息、异步(asynchronous)消息和对称(symmetric)消息,其中,Controller-to-switch消息由SDN控制器发起,OVS接收并且处理相应的消息,asynchronous消息主要用于OVS向SDN控制器通知状态变化等事件信息,symmetric消息主要用来建立OVS与SDN控制器之间的连接、检测对方是否在线等。
OVS的内核和用户空间中各维护一个流表。现有技术中,OVS接收到一个数据包后,将该数据包依次与内核和用户空间中维护的流表进行匹配,并执行匹配到的动作。若内核和用户空间中维护的流表都没有匹配到该数据包,则OVS根据OVS本地缓存情况,基于数据包生成相应类型的消息,并以socket形式将该生成的消息发送给SDN控制器,由SDN控制器处理该数据包。其中,OVS的本地缓存足够存储数据包时,OVS将该数据包存储在OVS的本地缓存,并将该数据包的部分内容作为消息负载发送给SDN控制器;随着OVS存储的数据包的增多,当OVS的本地缓存不足以存储数据包时,OVS将该数据包的全部内容作为消息负载发送给SDN控制器。
在高速大流量数据包需要转发的环境下,由于OVS的本地缓存有限,不足以存储大量的数据包,因此采用上述现有技术,对于大多数的数据包必然会导致数据包的全部内容作为消息负载发送给SDN控制器,进而增大消息传输时延。现有技术中OVS与SDN控制器之间以socket形式进行通信,此通信过程中需要内核和中央处理器(Central ProcessingUnit,CPU)的频繁调度工作,尤其是在高速大流量数据包需要转发的环境下,OVS与SDN控制器之间的大量通信必然会给内核和CPU造成较大的工作负担。
为解决现有的OVS与SDN控制器处理数据的技术方案存在的上述问题,本发明实施例提供了一种数据处理系统、方法及设备。其中,设备包括OVS和SDN控制器,系统、方法及设备是基于同一发明构思的,由于系统、方法及设备解决问题的原理相似,因此系统、方法及设备的实施可以相互参见,重复之处不再赘述。
下面通过具体实施例详细说明本发明实施例提供的技术方案,需要说明的是,实施例的展示顺序仅代表实施例的先后顺序,并不代表实施例所提供的技术方案的优劣。
实施例一
本发明实施例提供一种数据处理系统,该数据处理系统是基于OpenFlow网络。如图3A所示为本发明实施例提供的一种数据处理系统的结构示意图,该系统300包括OVS 301和SDN控制器302,OVS 301与SDN控制器302之间处理数据的流程基于现有的OpenFlow协议以及今后可能演进的OpenFlow协议。
在数据处理系统300中,OVS 301注册有第一内存区域和第二内存区域,第一内存区域和第二内存区域是分离的,均位于承载OVS 301的物理主机的本地网卡内。SDN控制器302注册有第三内存区域和第四内存区域,第三内存区域和第四内存区域是分离的,均位于承载SDN控制器302的物理主机的本地网卡内。
在从OVS 301维护的流表中未匹配到待处理的数据包的情况下,第一内存区域用于OVS 301在OVS 301的本地缓存不足以存储待处理的数据包时写入根据该数据包生成的第一消息,第二内存区域用于OVS 301在OVS 301的本地缓存足够存储待处理的数据包时写入根据该数据包生成的第二消息。存储在所述第一内存区域内的所有第一消息均被搬移到第三内存区域内,存储在第二内存区域内的所有第二消息均被搬移到第四内存区域内。第一内存区域至第二内存区域中的每个内存区域的起始内存地址和内存区域大小可按照实际需求配置。
基于OVS 301注册的第一内存区域和第二内存区域、以及SDN控制器302注册的第三内存区域和第四内存区域,数据处理系统300中OVS 301和SDN控制器302的工作原理如下。
在从OVS 301维护的流表中未匹配到待处理的数据包的情况下,OVS 301判断OVS301的本地缓存是否足够存储该数据包,并根据判断结果向OVS 301的不同内存区域写入数据包生成的消息。OVS 301根据判断结果向OVS 301的不同内存区域写入数据包生成的消息包括:在OVS 301的本地缓存不足以存储待处理的数据包的情况下,OVS 301根据该数据包生成一个第一消息,并将该第一消息写入OVS 301的第一内存区域;在OVS 301的本地缓存足够存储待处理的数据包的情况下,OVS 301将该数据包存储在OVS 301的本地缓存内,并根据该数据包生成一个第二消息,将该第二消息写入OVS 301的第二内存区域。存储在第一内存区域内的所有第一消息均被搬移到第三内存区域内,存储在第二内存区域内的所有第二消息均被搬移到第四内存区域内。
SDN控制器302检测SDN控制器302的第三内存区域中存在的第一消息,此检测操作可用于SDN控制器302确定OVS 301的本地缓存情况。在相比于上一次检测,本次检测到第三内存区域中存在新写入的第一消息的情况下,说明OVS 301的本地缓存不充足,SDN控制器302可优先读取并处理SDN控制器302的第四内存区域中的至少一个第二消息。
在至少一个第二消息被SDN控制器302读取并处理之后,OVS 301释放生成被处理的至少一个第二消息的数据包所占用的本地缓存,进而达到缓解OVS 301的本地缓存不充足的效果。
可选的,在数据处理系统300中,OVS 301与SDN控制器302之间建立有基于直接内存访问方式的通信连接,OVS 301与SDN控制器302之间基于直接内存访问方式进行通信,包括OVS 301用于基于直接内存访问方式访问第三内存区域和第四内存区域,以实现OVS 301将第一消息写入第一内存区域,第一消息从第一内存区域被搬移到第三内存区域,以及实现OVS 301将第二消息写入第二内存区域,第二消息从第二内存区域被搬移到第四内存区域。
本实施例中,在承载OVS 301的物理主机与承载SDN控制器302的物理主机不是同一主机的情况下,OVS 301与SDN控制器302之间基于的直接内存访问方式可以是远程直接数据存取(Remote Direct Memory Access,RDMA)方式;在承载OVS 301的物理主机与承载SDN控制器302的物理主机是同一主机的情况下,OVS 301与SDN控制器302之间基于的直接内存访问方式可以是直接数据存取(Direct Memory Access,DMA)方式。
RDMA与DMA相似,是一种完全由硬件执行输入(In,I)/输出(Out,O)交换的工作方式,能够解决网络传输中服务器端数据处理的延迟问题。在这种方式中,SDN控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和输入输出(IO)设备之间进行。工作时,由SDN控制器向内存发出地址和控制信号,进行地址修改,对传送字的个数计数,并且以中断方式向CPU报告传送操作的结束。
相比于现有技术中OVS与SDN控制器之间以socket形式进行通信,此方式会导致通信过程中需要内核和CPU的频繁调度工作,给内核和CPU造成较大的工作负担的问题。本实施例提供的数据处理系统300中,采用OVS直接访问SDN控制器的内存区域的方式,取代现有技术中OVS与SDN控制器之间以socket形式进行通信的方式,进而避免内核和CPU的频繁调度工作,降低内核和CPU的工作负担。
本发明实施例还提供一种建立数据处理系统的方法,该方法用于建立如图3A所示的数据处理系统。如图3B所示,建立数据处理系统的方法如下:
S301、OVS注册第一内存区域和第二内存区域,SDN控制器注册第三内存区域和第四内存区域。
其中,第一内存区域至第四内存区域中每个内存区域的作用,以及第一内存区域与第三内存区域、第二内存区域与第四内存区域之间的关系参见上文中数据处理系统的相关描述,在此不再赘述。
S301具体包括:OVS向承载OVS的物理主机的CPU申请注册第一内存区域和第二内存区域,CPU在承载OVS的物理主机的本地网卡上为OVS注册第一内存区域和第二内存区域。SDN控制器向承载SDN控制器的物理主机的CPU申请注册第三内存区域和第四内存区域,CPU在承载SDN控制器的物理主机的本地网卡上为SDN控制器注册第三内存区域和第四内存区域。
如图3C所示为OVS与SDN控制器的连接结构示意图。基于如图3C所示的连接结构,OVS基于直接内存访问方式访问第三内存区域的过程包括:首先,OVS生成基于直接内存访问方式的写请求消息,并通过该写请求消息将第一消息写入到OVS的第一内存区域。其次,承载OVS的物理主机的本地网卡通过网络将包括第一消息的信息传输到承载SDN控制器的物理主机的本地网卡,此过程为基于直接内存访问方式的信息传输;传输的信息除了第一消息外,还包括目标虚拟地址(即第三内存区域的地址)和内存钥匙。最后,承载SDN控制器的物理主机的本地网卡确认内存钥匙正确后,根据目标虚拟地址将第一消息写入第三内存区域。OVS基于直接内存访问方式访问第四内存区域的过程与OVS基于直接内存访问方式访问第三内存区域的过程类似,在此不在赘述。
需要说明的是,按照实际需求,OVS和SDN控制器可分别注册多于两个的内存区域。例如,OVS还可注册第五内存区域,SDN控制器还可注册第六内存区域,当第一内存区域和第二内存区域均不足以被写入消息时,该第五内存区域将作为备用内存,存储在第五内存区域内的所有消息均被搬移到第三内存区域内。由于写入第五内存区域的消息中可能同时存在第一消息和第二消息,此时需要特定标识能够区分第一消息或第二消息,以使SDN控制器通过检测在确定OVS的本地缓存不充足的情况下优先处理第二消息,进而达到缓解OVS的本地缓存不充足的效果。又例如,OVS还可注册第七内存区域和第八内存区域,第七内存区域和第八内存区域分别作为第一内存区域和第二内存区域的备用内存,SDN控制器还可注册第九内存区域和第十内存区域,第九内存区域和第十内存区域分别作为第三内存区域和第四内存区域的备用内存,存储在第七内存区域内的所有第一消息均被搬移到第九内存区域内,存储在第八内存区域内的所有第二消息均被搬移到第十内存区域内。
S302、OVS与SDN控制器之间建立基于直接内存访问方式的通信连接。
OVS与SDN控制器建立的基于直接内存访问方式的通信连接,该通信连接用于OVS与SDN控制器之间采用直接内存访问方式进行通信,包括OVS基于直接内存访问方式访问第三内存区域和第四内存区域。直接内存访问方式可参见上文中数据处理系统的相关描述,在此不再赘述。
S302具体包括:如图3C所示,OVS与SDN控制器建立socket连接,该socket连接遵循传输控制协议(Transmission Control Protocol,TCP)/互连网协议(Internet Protocol,IP);OVS与SDN控制器之间通过socket连接交互信息以获得对端信息,该信息包括注册的内存区域所在的位置、程序标识、网卡以及媒体接入控制(Media Access Control,MAC)地址等信息,OVS与SDN控制器获得对端信息后即可断开socket连接;OVS和SDN控制器将获得的对端信息存储在本地数据库中,即完成了OVS与SDN控制器之间建立基于直接内存访问方式的通信连接。
OVS与SDN控制器之间基于直接内存访问方式的通信连接实现数据处理后,可以选择不释放该通信连接,避免后续进行数据处理之前重复建立通信连接,进而提高数据处理效率。OVS与SDN控制器之间基于直接内存访问方式的通信连接实现数据处理后,若资源紧张也可以选择释放该通信连接,以保证数据处理效率与通信连接消耗资源的均衡。
实施例二
基于本发明实施例提供的数据处理系统,本发明实施例还提供了一种数据处理方法。如图4所示,本发明实施例提供的一种数据处理方法中,OVS与SDN控制器的交互过程如下:
S401、在从OVS维护的流表中未匹配到待处理的数据包的情况下,OVS判断OVS的本地缓存是否足够存储该数据包。
OVS的内核和用户空间中各维护一个流表。每当一个数据包进入OVS时,OVS将该数据包作为待处理的数据包。与现有技术相同,OVS依次将该数据包与内核中维护的流表和用户空间中维护的流表进行匹配,若匹配到该数据包,则OVS对该数据包执行匹配到的处理动作(Action),此时结束数据处理流程;若从OVS维护的流表中未匹配到待处理的数据包,此时OVS将该数据包的处理动作设置为将消息发送给SDN控制器,并执行S401中OVS判断OVS的本地缓存是否足够存储该数据包。
S402、在OVS的本地缓存不足以存储数据包的情况下,OVS根据该数据包生成一个第一消息,并将该第一消息写入OVS的第一内存区域;
其中,存储在第一内存区域内的第一消息将被搬移到SDN控制器的第三内存区域,该消息搬移过程参见上文中图3C所示的连接结构下的相关描述,此处不再赘述。
需要说明的是,第一消息是指OVS在OVS的本地缓存不足以存储待处理的数据包时根据该数据包生成的消息的统称,即将第一内存区域中写入的消息统称为第一消息。
S402具体包括:在OVS的本地缓存不足以存储数据包的情况下,OVS根据数据包生成第一消息的方法基于OpenFlow协议,即OVS将该数据包的缓存序号(buffer_id)设置为-1,表示OVS未存储该数据包,OVS将缓存序号和该数据包的全部内容作为消息负载生成第一消息,该第一消息还可携带产生该第一消息的原因,OpenFlow协议规定该第一消息的类型为Packet-in;OVS避免采用以socket形式与SDN控制器进行通信,而是基于直接内存访问的方式,将第一消息写入第一内存区域,写入第一内存区域的第一消息将被搬移到SDN控制器的第三内存区域。
需要说明的是,为实现数据处理的目的,第一消息的负载至少包括数据包的全部内容,该数据包的全部内容用于SDN控制器在处理该第一消息时构建该数据包的处理动作。
S403、在OVS的本地缓存足够存储数据包的情况下,OVS将该数据包存储在OVS的本地缓存,根据该数据包生成一个第二消息,并将该第二消息写入OVS的第二内存区域。
其中,存储在第二内存区域内的第二消息将被搬移到SDN控制器的第四内存区域,该消息搬移过程参见上文中图3C所示的连接结构下的相关描述,此处不再赘述。
需要说明的是,第二消息是指OVS在本地缓存足够存储待处理的数据包时根据该数据包生成的消息的统称,即第二内存区域中写入的消息统称为第二消息。
S403具体包括:在OVS的本地缓存足够存储数据包的情况下,OVS基于OpenFlow协议,将数据包临时存储在OVS的本地缓存中,并记录缓存序号,OVS将缓存序号和数据包的部分内容作为消息负载生成第二消息,OpenFlow协议中规定了不同类型的数据包作为第二消息的负载的部分内容,通常作为第二消息的负载的数据包的部分内容是指数据包的前128字节(bytes),第二消息还可携带产生该第二消息的原因,OpenFlow协议规定该第二消息的类型为Packet-in;OVS避免采用以socket形式与SDN控制器进行通信,而是基于直接内存访问的方式,将第二消息写入第二内存区域,写入第二内存区域的第二消息将被搬移到SDN控制器的第四内存区域。
需要说明的是,为实现数据处理的目的,第二消息的负载至少包括数据包的部分内容和缓存序号,数据包的部分内容用于SDN控制器在处理该第二消息时构建该数据包的处理动作,缓存序号用于在SDN控制器处理第二消息后,SDN控制器通过该缓存序号指示OVS释放生成该第二消息的数据包占用的OVS的本地缓存。
需要说明的,本实施例中对于待处理的一个数据包,OVS在执行S401之后,根据S401中的判断结果选择执行S402或S403。
S404、SDN控制器检测SDN控制器的第三内存区域中存在的第一消息。
SDN控制器可周期性或实时地执行S404检测第三内存区域中存在的第一消息。
需要说明的是,本实施例中并不限定S404与S401至S403的执行顺序。
S405、在相比于上一次检测,本次检测到第三内存区域中存在新写入的第一消息的情况下,SDN控制器读取并处理SDN控制器的第四内存区域中的至少一个第二消息。
S405中相比于上一次检测,本次检测到第三内存区域中存在新写入的第一消息是指,SDN控制器本次检测时第三内存区域中存在的第一消息,相比于上一次SDN控制器检测时第三内存区域中存在的第一消息,第三内存区域中存在新写入的第一消息。
SDN控制器判断相比于上一次检测,本次检测第三内存区域中是否存在新写入的第一消息的目的在于:如果本次检测相比于上一次检测,第三内存区域中存在新写入的第一消息,由于该新写入的第一消息是OVS在OVS的本地缓存不足以存储待处理的第一数据包时根据该数据包生成的,因此说明OVS的本地缓存正处于不足的状态,此时需要SDN控制器优先处理占用OVS的本地缓存的第二数据包生成的第二消息,进而达到OVS释放生成该第二消息的第二数据包的本地缓存的效果。如果本次检测相比于上一次检测,第三内存区域中不存在新写入的第一消息,则说明OVS的本地缓存正处于充足的状态,则SDN控制器可以按照消息队列中消息的先后顺序,即第三内存区域和第四内存区域中消息的写入时间先后顺序,读取并处理消息。
可选的,在SDN控制器的本次检测为SDN控制器首次检测第三内存区域中存在的第一消息的情况下,则第三内存区域中存在的第一消息即为新写入的第一消息,说明OVS的本地缓存正处于不足的状态,此时需要SDN控制器优先处理占用OVS的本地缓存的数据包生成的第二消息,即执行S405。
S405中SDN控制器读取并处理SDN控制器的第四内存区域中的至少一个第二消息,具体包括:首先,SDN控制器按照第四内存区域中所有第二消息的写入时间先后顺序,读取第四内存区域的至少一个第二消息;SDN控制器读取的第二消息的数量可配置,以在处理读取的第二消息后能够缓解OVS的本地缓存为目的。其次,SDN控制器对读取的至少一个第二消息中的每个第二消息执行如下操作:SDN控制器对通过解析该第二消息的消息负载获得缓存序号和数据包的部分内容,基于该数据包的部分内容构建该数据包的处理动作,构建数据包的处理动作的方法为现有技术,此处不再赘述。最后,SDN控制器将缓存序号和数据包的处理动作打包生成消息,OpenFlow协议规定生成的该消息的类型为Packet-out,SDN控制器将生成的消息作为数据包的处理结果发送给OVS。
S406、SDN控制器向OVS发送指示消息,该指示消息用于指示OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
S406中SDN控制器向OVS发送的指示消息可以为S405中SDN控制器将缓存序号和数据包的处理动作打包生成的消息。缓存序号用于OVS确定被SDN控制器处理的至少一个第二消息的数据包占用的OVS的本地缓存的地址,进而OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存;数据包的处理动作用于OVS维护流表,即将数据包的处理动作录入OVS维护的流表中。
通过执行S404中的检测过程,若相比于上一次检测,本次检测到第三内存区域中不存在新写入的第一消息,说明OVS的本地缓存正处于充足状态,则SDN控制器可按照第三内存区域和第四内存区域中所有消息的写入时间先后顺序,读取并处理消息,不必优先处理第四内存区域中的第二消息。
SDN控制器按照第三内存区域和第四内存区域中消息的写入时间先后顺序,读取并处理至少一个消息,具体包括:第三内存区域和第四内存区域中的所有消息按照消息的写入时间先后顺序排列在消息队列中,SDN控制器读取该消息队列中写入时间最早的至少一个消息;对于读取的消息,SDN控制器根据存储该消息的内存区域对该消息进行相应处理。
若SDN控制器读取的消息为存储在第三内存区域中的第一消息,则SDN控制器对该第一消息的处理过程包括:SDN控制器通过解析该第一消息的消息负载获得缓存序号和数据包的全部内容,基于该数据包的全部内容构建该数据包的处理动作,并对该数据包执行构建的处理动作,例如对数据包进行转发、丢弃、修改数据包的包头内容等。
若SDN控制器读取的消息为存储在第四内存区域中的第二消息,则SDN控制器对该第二消息的处理过程与S405中SDN控制器处理第二消息的处理过程相同,此处不再赘述。
S407、OVS接收到SDN控制器发送的指示消息后,根据该指示消息释放生成被SDN控制器处理的至少一个第二消息的数据包所占用的OVS的本地缓存。
本发明实施例提供的数据处理方法中,在从OVS维护的流表中未匹配到待处理的数据包的情况下,OVS根据本地缓存情况向OVS的不同内存区域写入消息,写入OVS的不同内存区域的消息将被搬移到SDN控制器的不同内存区域中,其中OVS会将生成第二消息的数据包存储在本地缓存中。SDN控制器通过检测第三内存区域中存在的第一消息,可确定OVS的本地缓存情况;在相比于上一次检测,本次检测到第三内存区域中存在新写入的第一消息的情况下,说明OVS的本地缓存不充足,SDN控制器优先处理第四内存区域中的第二消息,以使OVS释放生成被处理的第二消息的数据包所占用的本地缓存,进而达到缓解OVS的本地缓存不充足的效果,降低消息传输时延。上述方法中,由于OVS与SDN控制器之间采用直接内存访问的方式进行通信,取代现有技术中OVS与SDN控制器之间以socket形式进行通信的方式,进而避免内核和CPU的频繁调度工作,降低内核和CPU的工作负担。
本实施例中,如果OVS对根据数据包生成的消息进行标识,该标识用于指示OVS的本地缓存是否足以存储生成该消息的数据包,使得SDN控制器根据消息携带的标识可确定OVS的本地缓存是否充足,进而在确定OVS本地缓存不充足时优先处理占用OVS的本地缓存的数据包生成的消息,以达到释放OVS本地缓存的目的,在此过程中OVS与SDN控制器之间仍采用socket形式进行通信。
这种方案虽然能够达到释放OVS本地缓存的目的,但由于SDN控制器对消息进行解析获得标识的过程需要一定时间开销,不能起到降低消息传输时延的作用,因此在降低消息传输时延和避免内核和CPU的频繁调度工作方面,该方案与本实施例提供的技术方案相比性能较差。
实施例三
基于同一发明构思,本发明实施例还提供了一种SDN控制器,该SDN控制器可以是实施例一提供的数据处理系统中的SDN控制器,可以执行实施例二提供的数据处理方法中SDN控制器侧方法。参阅图5所示,SDN控制器500包括:消息检测单元501和消息处理单元502;可选的,SDN控制器500还包括:内存区域注册单元503和连接建立单元504。其中,
消息检测单元501,用于检测SDN控制器的第三内存区域中存在的第一消息;其中,存储在第三内存区域内的第一消息是从OVS的第一内存区域搬移的,存储在第一内存区域内的第一消息是在从OVS维护的流表中未匹配到待处理的第一数据包,且OVS的本地缓存不足以存储第一数据包的情况下,OVS根据第一数据包生成并将写入第一内存区域的;
消息处理单元502,用于在相比于消息检测单元501的上一次检测,消息检测单元501的本次检测到第三内存区域中存在新写入的第一消息的情况下,读取并处理SDN控制器的第四内存区域中的至少一个第二消息,以使OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存;其中,存储在第四内存区域内的第二消息是从OVS的第二内存区域搬移的;存储在第二内存区域的第二消息是在OVS维护的流表中未匹配到待处理的第二数据包,且OVS的本地缓存足以存储第二数据包的情况下,OVS根据第二数据包生成并将写入第二内存区域的;第二数据包被存储在OVS的本地缓存。
可选的,在本次检测为首次检测的情况下,第三内存区域中存在的第一消息即为新写入的第一消息。
可选的,内存区域注册单元503用于在消息检测单元501检测第三内存区域中存在的第一消息之前,注册第三内存区域和第四内存区域。
可选的,连接建立单元504用于在消息检测单元501检测第三内存区域中存在的第一消息之前,在SDN控制器与OVS之间建立基于直接内存访问方式(RDMA)的通信连接,以使OVS基于RDMA访问第三内存区域和第四内存区域。
可选的,第三内存区域和第四内存区域均位于承载SDN控制器的物理主机的本地网卡内。
需要说明的是,上述各个单元的具体功能说明可参见实施例一和实施例二,此处不再赘述。本发明实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
基于同一发明构思,本发明实施例还提供了一种SDN控制器,该SDN控制器可以是实施例一提供的数据处理系统中的SDN控制器,可以执行实施例二提供的数据处理方法中SDN控制器侧方法,可以是与图5所示的SDN控制器相同的设备。参阅图6所示,SDN控制器包括:处理器601、通信接口602以及存储器603。其中,
处理器601,用于读取存储器603中的程序,执行下列过程:
处理器601,用于检测SDN控制器的第三内存区域中存在的第一消息;其中,存储在第三内存区域内的第一消息是从OVS的第一内存区域搬移的,存储在第一内存区域内的第一消息是在从OVS维护的流表中未匹配到待处理的第一数据包,且OVS的本地缓存不足以存储第一数据包的情况下,OVS根据第一数据包生成并将写入第一内存区域的;
处理器601,在相比于上一次检测,本次检测到第三内存区域中存在新写入的第一消息的情况下,读取并处理SDN控制器的第四内存区域中的至少一个第二消息,以使OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存;其中,存储在第四内存区域内的第二消息是从OVS的第二内存区域搬移的;存储在第二内存区域的第二消息是在OVS维护的流表中未匹配到待处理的第二数据包,且OVS的本地缓存足以存储第二数据包的情况下,OVS根据第二数据包生成并将写入第二内存区域的;第二数据包被存储在OVS的本地缓存。
可选的,在本次检测为首次检测的情况下,第三内存区域中存在的第一消息即为新写入的第一消息。
可选的,处理器601还用于在检测第三内存区域中存在的第一消息之前,注册第三内存区域和第四内存区域。
其中,第三内存区域和第四内存区域均位于承载SDN控制器的物理主机的本地网卡内。
可选的,处理器601还用于在检测第三内存区域中存在的第一消息之前,在SDN控制器与OVS之间建立基于直接内存访问方式(RDMA)的通信连接,以使OVS基于RDMA访问第三内存区域和第四内存区域。
处理器601在执行上述操作时,通过通信接口602与其他设备(包括OVS)进行通信。比如,处理器601在读取并处理SDN控制器的第四内存区域中的至少一个第二消息在至少一个第二消息之后,通过通信接口602向OVS发送指示消息,指示消息用于指示OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。又比如,处理器601在注册第三内存区域和第四内存区域过程中,通过通信接口602向承载SDN控制器的物理主机的CPU发送用于指示申请注册第三内存区域和第四内存区域的请求消息。再比如,处理器601在SDN控制器与OVS之间建立基于直接内存访问方式的通信连接过程中,通过通信接口602与OVS进行对端信息的交互。
在图6中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器601代表的一个或多个处理器和存储器603代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。处理器601负责管理总线架构和通常的处理,存储器603可以存储处理器601在执行操作时所使用的数据,存储器603可以是承载SDN控制器的物理主机的内存,例如硬盘、U盘、安全数码(SecureDigital,SD)卡等等。
本实施例中还提供了一种计算机存储介质,用于储存为上述实施例的SDN控制器所用的计算机软件指令,其包含用于执行上述实施例所设计的程序。
基于同一发明构思,本发明实施例还提供了一种OVS,该OVS可以是实施例一提供的数据处理系统中的OVS,可以执行实施例二提供的数据处理方法中OVS侧方法。参阅图7所示,OVS 700包括:缓存判断单元701、处理单元702和缓存释放单元703;可选的,OVS 700还包括:连接建立单元704。其中,
缓存判断单元701,用于在从OVS维护的流表中未匹配到待处理的数据包的情况下,判断OVS的本地缓存是否足够存储数据包;
处理单元702,用于在缓存判断单元701判定本地缓存不足以存储数据包的情况下,根据数据包生成一个第一消息,并将第一消息写入OVS的第一内存区域;其中,存储在第一内存区域内的第一消息将被搬移到软件定义网络(SDN)控制器的第三内存区域;
处理单元702,还用于在缓存判断单元701判定本地缓存足够存储数据包的情况下,OVS将数据包存储在本地缓存,根据数据包生成一个第二消息,并将第二消息写入OVS的第二内存区域,第一内存区域和第二内存区域是分离的;存储在第二内存区域的第二消息将被搬移到SDN控制器的第四内存区域内;
缓存释放单元703,用于在SDN控制器判定出相对于上一次检测,本次检测的第三内存区域内存在新写入的第一消息的情况下,在处理单元702存储在第四内存区域内的至少一个第二消息被SDN控制器读取并处理之后,释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
第一内存区域和第二内存区域均位于承载OVS 700的物理主机的本地网卡内。
可选的,缓存释放单元703还用于:
在至少一个第二消息被SDN控制器读取并处理之后,以及在缓存释放单元释放生成被处理的至少一个第二消息的数据包所占用的本地缓存之前,接收SDN控制器发送的指示消息,指示消息用于指示缓存释放单元释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
可选的,连接建立单元704用于在缓存判断单元701判断OVS的本地缓存是否足够存储数据包之前,在OVS和SDN交换机之间建立基于直接内存访问方式(RDMA)的通信连接,以使OVS基于RDMA访问第一内存区域和第二内存区域。
需要说明的是,上述各个单元的具体功能说明可参见实施例一和实施例二,此处不再赘述。本发明实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
基于同一发明构思,本发明实施例还提供了一种OVS,该OVS可以是实施例一提供的数据处理系统中的OVS,可以执行实施例二提供的数据处理方法中OVS侧方法,可以是与图7所示的OVS同的设备。参阅图8所示,OVS包括:处理器801、通信接口802以及存储器803。其中,
处理器801,用于读取存储器803中的程序,执行下列过程:
处理器801,用于在从OVS维护的流表中未匹配到待处理的数据包的情况下,判断OVS的本地缓存是否足够存储数据包;
处理器801,还用于在判定本地缓存不足以存储数据包的情况下,根据数据包生成一个第一消息,并将第一消息写入OVS的第一内存区域;其中,存储在第一内存区域内的第一消息将被搬移到SDN控制器的第三内存区域;
处理器801,还用于在判定本地缓存足够存储数据包的情况下,OVS将数据包存储在本地缓存,根据数据包生成一个第二消息,并将第二消息写入OVS的第二内存区域,第一内存区域和第二内存区域是分离的;存储在第二内存区域的第二消息将被搬移到SDN控制器的第四内存区域内;
处理器801,还用于在SDN控制器判定出相对于上一次检测,本次检测的第三内存区域内存在新写入的第一消息的情况下,在存储在第四内存区域内的至少一个第二消息被SDN控制器读取并处理之后,释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
可选的,处理器801还用于在至少一个第二消息被SDN控制器读取并处理之后,以及在释放生成被处理的至少一个第二消息的数据包所占用的本地缓存之前,通过通信端口802接收SDN控制器发送的指示消息,指示消息用于指示OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
可选的,处理器801还用于在判断OVS的本地缓存是否足够存储数据包之前,在OVS和SDN交换机之间建立基于直接内存访问方式(RDMA)的通信连接,以使OVS基于RDMA访问第一内存区域和第二内存区域。
处理器801在执行上述操作时,通过通信接口802与其他设备(包括SDN控制器)进行通信。比如,处理器801在将第一消息写入第一内存区域,或将第二消息写入第二内存区域之前,处理器801还用于注册第一内存区域和第二内存区域,在此注册过程中,通过通信接口802向承载OVS的物理主机的CPU发送用于指示申请注册第一内存区域和第二内存区域的请求消息。再比如,处理器801在SDN控制器与OVS之间建立基于直接内存访问方式的通信连接过程中,通过通信接口602与SDN控制器进行对端信息的交互。
在图8中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器801代表的一个或多个处理器和存储器803代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。处理器801负责管理总线架构和通常的处理,存储器803可以存储处理器801在执行操作时所使用的数据,存储器803可以是承载OVS的物理主机的内存,例如硬盘、U盘、安全数码(Secure Digital,SD)卡等等。
本实施例中还提供了一种计算机存储介质,用于储存为上述实施例所述的OVS所用的计算机软件指令,其包含用于执行上述实施例所设计的程序。
通过本发明实施例三提供的技术方案可以解决OpenFlow网络中现有的OVS和SDN控制器转发数据的方案存在的消息传输时延大的问题。上述技术方案中,由于OVS与SDN控制器之间采用直接内存访问的方式进行通信,取代现有技术中OVS与SDN控制器之间以socket形式进行通信的方式,进而避免内核和CPU的频繁调度工作,降低内核和CPU的工作负担。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (18)
1.一种数据处理系统,其特征在于,包括开放式虚拟化软件交换机OVS和软件定义网络SDN控制器,其中,
在从所述OVS维护的流表中未匹配到待处理的数据包的情况下,所述OVS用于判断所述OVS的本地缓存是否足够存储所述数据包;
在所述本地缓存不足以存储所述数据包的情况下,所述OVS还用于根据所述数据包生成一个第一消息,并将所述第一消息写入所述OVS的第一内存区域;
在所述本地缓存足够存储所述数据包的情况下,所述OVS还用于将所述数据包存储在所述本地缓存内,并根据所述数据包生成一个第二消息,将所述第二消息写入所述OVS的第二内存区域,所述第一内存区域和所述第二内存区域是分离的;
所述SDN控制器用于检测所述SDN控制器的第三内存区域中存在的第一消息;
在相比于上一次检测,本次检测到所述第三内存区域中存在新写入的第一消息的情况下,所述SDN控制器还用于读取并处理所述SDN控制器的第四内存区域中的至少一个第二消息;其中,存储在所述第一内存区域内的所有第一消息均被搬移到所述第三内存区域内,存储在所述第二内存区域内的所有第二消息均被搬移到所述第四内存区域内;
在至少一个第二消息被所述SDN控制器读取并处理之后,所述OVS还用于释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
2.如权利要求1所述的系统,其特征在于,所述SDN控制器与所述OVS之间建立有基于直接内存访问方式RDMA的通信连接,所述OVS用于基于所述RDMA访问所述第三内存区域和所述第四内存区域。
3.一种数据处理方法,其特征在于,包括:
软件定义网络SDN控制器检测所述SDN控制器的第三内存区域中存在的第一消息;其中,存储在所述第三内存区域内的所述第一消息是从开放式虚拟化软件交换机OVS的第一内存区域搬移的,存储在所述第一内存区域内的所述第一消息是在从所述OVS维护的流表中未匹配到待处理的第一数据包,且所述OVS的本地缓存不足以存储所述第一数据包的情况下,所述OVS根据所述第一数据包生成并将写入所述第一内存区域的;
在相比于上一次检测,本次检测到所述第三内存区域中存在新写入的第一消息的情况下,所述SDN控制器读取并处理所述SDN控制器的第四内存区域中的至少一个第二消息,以使所述OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存;其中,存储在所述第四内存区域内的所述第二消息是从所述OVS的第二内存区域搬移的;存储在所述第二内存区域的所述第二消息是在所述OVS维护的流表中未匹配到待处理的第二数据包,且所述OVS的本地缓存足以存储所述第二数据包的情况下,所述OVS根据所述第二数据包生成并将写入所述第二内存区域的;所述第二数据包被存储在所述OVS的本地缓存。
4.如权利要求3所述的方法,其特征在于,在所述本次检测为首次检测的情况下,所述第三内存区域中存在的第一消息即为新写入的第一消息。
5.如权利要求3或4所述的方法,其特征在于,在所述SDN控制器检测所述第三内存区域中存在的第一消息之前,还包括:
所述SDN控制器注册所述第三内存区域和所述第四内存区域。
6.如权利要求3至4任一所述的方法,其特征在于,在所述SDN控制器检测所述第三内存区域中存在的第一消息之前,还包括:
所述SDN控制器在所述SDN控制器与所述OVS之间建立基于直接内存访问方式RDMA的通信连接,以使所述OVS基于所述RDMA访问所述第三内存区域和所述第四内存区域。
7.如权利要求3至4任一所述的方法,其特征在于,所述第三内存区域和所述第四内存区域均位于承载所述SDN控制器的物理主机的本地网卡内。
8.一种数据处理方法,其特征在于,包括:
在从开放式虚拟化软件交换机OVS维护的流表中未匹配到待处理的数据包的情况下,所述OVS判断所述OVS的本地缓存是否足够存储所述数据包;
在所述本地缓存不足以存储所述数据包的情况下,所述OVS根据所述数据包生成一个第一消息,并将所述第一消息写入所述OVS的第一内存区域;其中,存储在所述第一内存区域内的所述第一消息将被搬移到软件定义网络SDN控制器的第三内存区域;
在所述本地缓存足够存储所述数据包的情况下,所述OVS将所述数据包存储在所述本地缓存,根据所述数据包生成一个第二消息,并将所述第二消息写入所述OVS的第二内存区域,所述第一内存区域和所述第二内存区域是分离的;存储在所述第二内存区域的所述第二消息将被搬移到所述SDN控制器的第四内存区域内;
在所述SDN控制器判定出相对于上一次检测,本次检测的所述第三内存区域内存在新写入的第一消息的情况下,则在存储在所述第四内存区域内的至少一个第二消息被所述SDN控制器读取并处理之后,所述OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
9.如权利要求8所述的方法,其特征在于,在至少一个第二消息将被所述SDN控制器读取并处理之后,以及在所述OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存之前,所述方法还包括:
所述OVS接收所述SDN控制器发送的指示消息,所述指示消息用于指示所述OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
10.如权利要求8或9所述的方法,其特征在于,在所述OVS判断所述OVS的本地缓存是否足够存储所述数据包之前,还包括:
所述OVS在所述OVS和所述SDN交换机之间建立基于直接内存访问方式RDMA的通信连接,以使所述OVS基于所述RDMA访问所述第一内存区域和所述第二内存区域。
11.一种软件定义网络SDN控制器,其特征在于,包括:
消息检测单元,用于检测所述SDN控制器的第三内存区域中存在的第一消息;其中,存储在所述第三内存区域内的所述第一消息是从开放式虚拟化软件交换机OVS的第一内存区域搬移的,存储在所述第一内存区域内的所述第一消息是在从所述OVS维护的流表中未匹配到待处理的第一数据包,且所述OVS的本地缓存不足以存储所述第一数据包的情况下,所述OVS根据所述第一数据包生成并将写入所述第一内存区域的;
消息处理单元,用于在相比于所述消息检测单元的上一次检测,所述消息检测单元的本次检测到所述第三内存区域中存在新写入的第一消息的情况下,读取并处理所述SDN控制器的第四内存区域中的至少一个第二消息,以使所述OVS释放生成被处理的至少一个第二消息的数据包所占用的本地缓存;其中,存储在所述第四内存区域内的所述第二消息是从所述OVS的第二内存区域搬移的;存储在所述第二内存区域的所述第二消息是在所述OVS维护的流表中未匹配到待处理的第二数据包,且所述OVS的本地缓存足以存储所述第二数据包的情况下,所述OVS根据所述第二数据包生成并将写入所述第二内存区域的;所述第二数据包被存储在所述OVS的本地缓存。
12.如权利要求11所述的SDN控制器,其特征在于,在所述本次检测为首次检测的情况下,所述第三内存区域中存在的第一消息即为新写入的第一消息。
13.如权利要求11或12所述的SDN控制器,其特征在于,所述SDN控制器还包括:
内存区域注册单元,用于在所述消息检测单元检测所述第三内存区域中存在的第一消息之前,注册所述第三内存区域和所述第四内存区域。
14.如权利要求11至12任一所述的SDN控制器,其特征在于,所述SDN控制器还包括:
连接建立单元,用于在所述消息检测单元检测所述第三内存区域中存在的第一消息之前,在所述SDN控制器与所述OVS之间建立基于直接内存访问方式RDMA的通信连接,以使所述OVS基于所述RDMA访问所述第三内存区域和所述第四内存区域。
15.如权利要求11至12任一所述的SDN控制器,其特征在于,所述第三内存区域和所述第四内存区域均位于承载所述SDN控制器的物理主机的本地网卡内。
16.一种开放式虚拟化软件交换机OVS,其特征在于,包括:
缓存判断单元,用于在从所述OVS维护的流表中未匹配到待处理的数据包的情况下,判断所述OVS的本地缓存是否足够存储所述数据包;
处理单元,用于在所述缓存判断单元判定所述本地缓存不足以存储所述数据包的情况下,根据所述数据包生成一个第一消息,并将所述第一消息写入所述OVS的第一内存区域;其中,存储在所述第一内存区域内的所述第一消息将被搬移到软件定义网络SDN控制器的第三内存区域;
所述处理单元,还用于在所述缓存判断单元判定所述本地缓存足够存储所述数据包的情况下,所述OVS将所述数据包存储在所述本地缓存,根据所述数据包生成一个第二消息,并将所述第二消息写入所述OVS的第二内存区域,所述第一内存区域和所述第二内存区域是分离的;存储在所述第二内存区域的所述第二消息将被搬移到所述SDN控制器的第四内存区域内;
缓存释放单元,用于在所述SDN控制器判定出相对于上一次检测,本次检测的所述第三内存区域内存在新写入的第一消息的情况下,在所述处理单元存储在所述第四内存区域内的至少一个第二消息被所述SDN控制器读取并处理之后,释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
17.如权利要求16所述的OVS,其特征在于,所述缓存释放单元还用于:
在至少一个第二消息被所述SDN控制器读取并处理之后,以及在所述缓存释放单元释放生成被处理的至少一个第二消息的数据包所占用的本地缓存之前,接收所述SDN控制器发送的指示消息,所述指示消息用于指示所述缓存释放单元释放生成被处理的至少一个第二消息的数据包所占用的本地缓存。
18.如权利要求16或17所述的OVS,其特征在于,所述OVS还包括:
连接建立单元,用于在所述缓存判断单元判断所述OVS的本地缓存是否足够存储所述数据包之前,在所述OVS和所述SDN交换机之间建立基于直接内存访问方式RDMA的通信连接,以使所述OVS基于所述RDMA访问所述第一内存区域和所述第二内存区域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611089592.4A CN106603409B (zh) | 2016-11-30 | 2016-11-30 | 一种数据处理系统、方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611089592.4A CN106603409B (zh) | 2016-11-30 | 2016-11-30 | 一种数据处理系统、方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106603409A CN106603409A (zh) | 2017-04-26 |
CN106603409B true CN106603409B (zh) | 2020-02-14 |
Family
ID=58594211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611089592.4A Active CN106603409B (zh) | 2016-11-30 | 2016-11-30 | 一种数据处理系统、方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106603409B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110365591B (zh) * | 2018-04-09 | 2021-11-19 | 华为技术有限公司 | 数据包处理方法、装置及设备 |
CN110535811B (zh) * | 2018-05-25 | 2022-03-04 | 中兴通讯股份有限公司 | 远端内存管理方法及系统、服务端、客户端、存储介质 |
US11899585B2 (en) | 2021-12-24 | 2024-02-13 | Western Digital Technologies, Inc. | In-kernel caching for distributed cache |
US11934663B2 (en) | 2022-01-10 | 2024-03-19 | Western Digital Technologies, Inc. | Computational acceleration for distributed cache |
US11797379B2 (en) | 2022-02-04 | 2023-10-24 | Western Digital Technologies, Inc. | Error detection and data recovery for distributed cache |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8717895B2 (en) * | 2010-07-06 | 2014-05-06 | Nicira, Inc. | Network virtualization apparatus and method with a table mapping engine |
CN103346981B (zh) * | 2013-06-28 | 2016-08-10 | 华为技术有限公司 | 虚拟交换方法、相关装置和计算机系统 |
US9680738B2 (en) * | 2013-09-15 | 2017-06-13 | Nicira, Inc. | Tracking prefixes of values associated with different rules to generate flows |
CN104780071B (zh) * | 2015-04-21 | 2018-12-25 | 新华三技术有限公司 | 虚拟交换机的升级方法及装置 |
CN104821923A (zh) * | 2015-05-15 | 2015-08-05 | 杭州华三通信技术有限公司 | Sdn网络中发送上送控制器协议报文的方法和装置 |
CN105656805B (zh) * | 2016-01-20 | 2018-09-25 | 中国人民解放军国防科学技术大学 | 一种基于控制块预分配的分组接收方法和装置 |
-
2016
- 2016-11-30 CN CN201611089592.4A patent/CN106603409B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106603409A (zh) | 2017-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106603409B (zh) | 一种数据处理系统、方法及设备 | |
US10506434B2 (en) | System for accelerated network route update through exclusive access to routing tables | |
US10868767B2 (en) | Data transmission method and apparatus in optoelectronic hybrid network | |
US8806025B2 (en) | Systems and methods for input/output virtualization | |
US8543729B2 (en) | Virtualised receive side scaling | |
US9880954B2 (en) | Method and apparatus for providing data access | |
US20120317566A1 (en) | Virtual machine packet processing | |
CN113326228B (zh) | 基于远程直接数据存储的报文转发方法、装置及设备 | |
US11750418B2 (en) | Cross network bridging | |
WO2015058699A1 (en) | Data forwarding | |
CN108023829B (zh) | 报文处理方法及装置、存储介质、电子设备 | |
CN108965148B (zh) | 一种处理器及报文处理方法 | |
US20080077724A1 (en) | Interrupt coalescing control scheme | |
US20220078119A1 (en) | Network interface device with flow control capability | |
US9621633B2 (en) | Flow director-based low latency networking | |
WO2019033891A1 (zh) | 一种基于rdma的网络流量确定方法及装置 | |
CN105391647A (zh) | 一种流量控制的方法及系统 | |
JP5957318B2 (ja) | ネットワークシステム、情報中継装置、及びパケット配信方法 | |
CN109417507A (zh) | 部分延迟的报文访问 | |
CN106790162B (zh) | 虚拟网络优化方法与系统 | |
US9769093B2 (en) | Apparatus and method for performing InfiniBand communication between user programs in different apparatuses | |
US8914550B2 (en) | System and method for transferring data between components of a data processor | |
US20220291928A1 (en) | Event controller in a device | |
CN105939242B (zh) | 实现虚拟系统的方法及装置 | |
US9258273B2 (en) | Duplicating packets efficiently within a network security appliance |
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 |