一种软件定义网络中流表项发送、接收方法及相关设备与流程

文档序号:15394666发布日期:2018-09-08 01:54阅读:129来源:国知局

本发明涉及通信技术领域,具体涉及一种软件定义网络中流表项发送、接收方法及相关设备。



背景技术:

在软件定义网络,例如开放流(英文:openflow)网络中,由控制器向交换机发送流表项用以指导流量的转发。交换机的处理器接收流表项后将流表项配置到转发芯片中。如果交换机的处理器处理流表项的能力不足,可能导致流表项在处理器上积压,不能及时将流表项配置到转发芯片。



技术实现要素:

本申请提供了一种软件定义网络中流表项发送、接收方法及相关设备,用于解决流表项在交换机的处理器上积压的问题。

第一方面提供一种软件定义网络中流表项发送方法,该软件定义网络中包括至少一个控制器和至少一个交换机,其中,该至少一个控制器和该至少一个交换机之间通过通信接口连接,该至少一个控制器和该至少一个交换机之间可以是一对一或者一对多的关系,例如,一个控制器向一个交换机发送流表项,或者一个控制器向多个交换机发送流表项。控制器先获取交换机的流表项处理量,并在该流表项处理量限制下向交换机发送流表项。可见,控制器可根据获取的流表项处理量的限制以控制向交换机发送流表项,从而避免了流表项在交换机的处理器上积压。

控制器可通过多种方式获取交换机的流表项处理量,下面是其中可能的两种实现方式:

在一种可能的实现方式中,控制器接收到交换机发送的处理量消息,其中,该处理量消息中携带该流表项处理量。控制器可以接收交换机周期性地或不定时地发送的流表项处理量,从而有效获知交换机处理流表项的能力,并根据该流表项处理量的限制确定向交换机发送流表项的数量。

在另一种可能的实现方式中,控制器向交换机发送处理量请求消息,以请求交换机发送处理量消息。其中,该处理量消息中携带该流表项处理量。控制器可以周期性地向交换机发送处理量请求消息,从而使得控制器有效获知交换机处理流表项的能力,并根据该流表项处理量的限制确定向交换机发送流表项的数量。

关于流表项处理量的表示方式可以有多种,下面介绍其中两种可能的表示方式:

在一种可能的实现方式中,该流表项处理量为交换机可处理流表项的数量,其中,控制器向交换机发送的流表项的数量不大于该流表项处理量。控制器将可发送的流表项的数量设置为该流表项处理量。控制器每发送一条流表项,对应地将可发送的流表项的数量减1。可发送的流表项的数量为0时,控制器暂不发送流表项。当再次接收到交换机发送的新的流表项处理量时,控制器依据新的流表项处理量更新可发送的流表项的数量。

在另一种可能的实现方式中,该流表项处理量为单位时间内交换机可处理流表项的数量。控制器向交换机发送的流表项的速率不大于该流表项处理量。例如,流表项处理量为20/秒,则控制器向交换机发送的流表项的速率不能大于20/秒。

第二方面提供一种软件定义网络中流表项接收方法,该软件定义网络中包括至少一个控制器和至少一个交换机,其中,该至少一个控制器和该至少一个交换机之间通过通信接口连接,该至少一个控制器和该至少一个交换机之间可以是一对一或者一对多的关系,例如,一个交换机向一个控制器发送流表项处理量,或者多个交换机向同一个控制器发送流表项处理量。首先,交换机确定流表项处理量,并将确定的该流表项处理量发送给控制器,以指示控制器根据该流表项处理量的限制向交换机发送流表项,交换机接收控制器发送的流表项。可见,由于交换机向控制器发送的流表项处理量以指示控制器根据该流表项处理量的限制向该交换机发送流表项,则交换机在自身的处理能力范围内能够及时处理接收到的流表项,从而避免了流表项在交换机的处理器上积压。

关于流表项处理量的表示方式可以有多种,下面介绍其中两种可能的表示方式:

在一种可能的实现方式中,该流表项处理量为单位时间内交换机可处理流表项的数量。假设交换机在单位时间内可处理流表项的最大数量为50,则该流表项处理量可以为不大于50/秒的任意一个速率值。例如,交换机可以将流表项处理量设置为30/秒。

在另一种可能的实现方式中,该流表项处理量为交换机发送该流表项处理量时该交换机可处理流表项的数量。假设交换机向控制器发送流表项处理量时,该交换机当前可处理流表项的最大数量为30,则该流表项处理量可以为不大于30的任意一个数值,例如,交换机可以将流表项处理量设置为20。

交换机向控制器发送流表项处理量的触发条件可以有很多种,下面是其中可能的两种实现方式:

在一种可能的实现方式中,该交换机周期性地确定流表项处理量并将该流表项处理量发送给控制器。其中,该周期时间可以由交换机默认或者用户自定义等方式所确定。假设该周期时间为10秒,则交换机每隔10秒确定一次流表项处理量,并将确定的该流表项处理量发送给控制器。如果交换机当前处理大量流表项而繁忙时,可以适当地延长确定该流表项处理量的周期时间,从而缓解交换机的工作负荷。

在另一种可能的实现方式中,该流表项处理量为预设值,每当所述交换机可处理流表项的数量达到该预设值时,交换机将该流表项处理量发送给控制器。其中,该预设值可以由交换机默认或者用户自定义等方式所确定。假设该预设值为50,则每当交换机可处理流表项的数量达到50时,则交换机将该流表项处理量发送给控制器,如果交换机可处理流表项的数量没有达到50,则无需向控制器发送流表项处理量,从而节省了交换机的通信消耗。

第三方面提供一种软件定义网络中的控制器,该控制器被配置实现上述第一方面或者第一方面的任意一种实现方式提供的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现,该硬件或软件包括一个或多个与上述功能相对应的模块。

第四方面提供一种软件定义网络中的交换机,该交换机被配置实现上述第二方面或者第二方面的任意一种实现方式提供的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现,该硬件或软件包括一个或多个与上述功能相对应的模块。

第五方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或者第一方面的任意一种实现方式或者第二方面或者第二方面的任意一种实现方式所述的方法。

附图说明

图1为本发明实施例中软件定义网络的一个结构图;

图2为本发明实施例中软件定义网络中控制器的一个结构示意图;

图3为本发明实施例中软件定义网络中交换机的一个结构示意图;

图4为本发明实施例中软件定义网络中流表项收发的一个实施例示意图;

图5为本发明实施例中软件定义网络中流表项收发的另一个实施例示意图;

图6为本发明实施例中软件定义网络中流表项发送设备的一个结构示意图;

图7为本发明实施例中软件定义网络中流表项接收设备的一个结构示意图。

具体实施方式

控制器和交换机之间的开放流协议叠加在传输控制协议(英文:transmissioncontrolprotocol,tcp)协议上。当交换机的处理器由于处理大量流表项繁忙,未能及时接收流表项时,tcp协议栈的接收窗口大小变为0,从而抑制控制器向交换机发送流表项。

但是,tcp协议栈的接收窗口大小变为0阻塞了传输层。虽然抑制了控制器向交换机发送流表项,控制器向交换机发送的其他开放流协议报文也无法正常发出,可能导致开放流协议工作异常。为了避免在抑制控制器向交换机发送流表项的同时,发生开放流协议工作异常的现象,本发明实施例提供如下系统、设备及方法。

首先,请参阅图1,介绍本发明实施例中涉及的软件定义网络。该软件定义网络中包括至少一个控制器和至少一个交换机。其中,该至少一个控制器和该至少一个交换机之间通过通信接口连接。该通信接口可以是有线网络接口或无线网络接口。有线网络接口例如为以太网接口。以太网接口可以为电接口或光接口。该软件定义网络中控制器和交换机之间运行的协议例如可以为开放流协议。该至少一个控制器和该至少一个交换机之间可以是一对一或者一对多的关系,即一个控制器向一个交换机发送流表项,或者一个控制器向多个交换机发送流表项。流表,可被视作是软件定义网络中对数据转发功能的一种抽象。一个流表中包括至少一个流表项。流表项中整合了各个网络层次的网络配置信息,从而在进行数据转发时可以使用更丰富的规则。在本发明实施例中,控制器向交换机发送流表项用以指导流量的转发。其中,控制器向交换机发送的流表项是由交换机确定的流表项处理量所限制的。由于控制器是在交换机确定的流表项处理量限制下向交换机发送流表项,控制器向交换机发送的流表项是在交换机的处理能力范围内,不会造成在交换机的处理器上积压流表项的问题。

请参阅图2,下面介绍本发明实施例中涉及的软件定义网络中的控制器。该控制器200包括处理器201和通信接口202,该处理器201与该通信接口202连接。其中,该控制器200通过该通信接口202与软件定义网络中的交换机通信,从而向交换机发送流表项。该通信接口202可以是有线网络接口或者无线网络接口。有线网络接口例如为以太网接口。以太网接口可以为电接口或光接口。该软件定义网络中控制器和交换机之间运行的协议例如可以为开放流协议。控制器200可以用一个通信接口连接一个交换机,也可以用多个通信接口连接多个交换机。该处理器201可以是中央处理器,网络处理器等。

该通信接口202用于获取交换机的流表项处理量。

通信接口202可通过多种方式获取交换机的流表项处理量,例如,通信接口202接收到交换机发送的处理量消息,其中,该处理量消息中携带该流表项处理量,该处理量消息为openflow协议中新定义的消息,包括协议头和流表项处理量字段等。又如,通信接口202通过向交换机发送处理量请求消息,以接收到交换机发送的处理量消息,其中,该处理量请求消息为openflow协议中新定义的消息。

该处理器201用于记录该流表项处理量,并在该流表项处理量的限制下确定要发送的流表项。

该通信接口202,还用于向交换机发送该处理器201确定的流表项。

该流表项处理量为交换机可处理流表项的数量,该通信接口202向交换机发送的流表项的数量不大于该流表项处理量。例如流表项处理量为30,则通信接口202可以用一个或者多个报文将不超过30个流表项发送给交换机。通信接口每发送一条流表项,对应地将可发送的流表项的数量减1。可发送的流表项的数量为0时,通信接口202暂且不再发送流表项。当再次接收到交换机发送的新的流表项处理量时,通信接口202根据新的流表项处理量更新可发送的流表项数量。

或者,该流表项处理量为单位时间内交换机可处理流表项的数量,该通信接口202向交换机发送的流表项的速率不大于该流表项处理量。假设流表项处理量为20/秒,则控制器通过该通信接口向交换机发送的流表项的速率不能大于20/秒。

该流表项处理量除了通过数量和速率中的一种方式表示外,还可以通过其他方式表示,该流表项处理量是交换机通过实际情况所确定的,具体大小不做限定。

请参阅图3,下面介绍本发明实施例中涉及的软件定义网络中的交换机。该交换机300包括处理器301和通信接口302,该处理器301和该通信接口302之间通信连接。其中,该交换机300通过该通信接口302与软件定义网络中的控制器连接,从而实现接收控制器发送的流表项。该通信接口302可以是有线网络接口或者无线网络接口。有线网络接口例如为以太网接口。以太网接口可以为电接口或光接口。该软件定义网络中控制器和交换机之间运行的协议例如可以为开放流协议。该交换机300可以用一个通信接口连接一个控制器,该处理器301可以是中央处理器,网络处理器等。该交换机还包括转发芯片303,由处理器301将流表项配置到转发芯片303,并通过转发芯片303进行数据的转发。该转发芯片可以是网络处理器、asic、fpga等。该转发芯片可以将流表项保存在独立的或者整合在该转发芯片中的内容可寻址存储器(英文:content-addressablememory,cam)304(例如三态内容可寻址存储器(tcam))内。该处理器301和该转发芯片的功能可以分别由同一个网络处理器的控制面和数据面实现。

该处理器301,用于确定流表项处理量。

处理器301可通过多种方式确定流表项处理量。例如,处理器301在单位时间内每处理1项流表项,则对应地增加一项可处理的流表项处理量。又如,处理器301在预设时间内,处理了n项流表项,则对应地增加n项可处理的流表项处理量。再如,处理器301预处理200项流表项,假设预设阈值为40%,当处理器301处理完80项流表项后,将处理完的80项流表项作为流表项处理量。

该通信接口302,用于将处理器301确定的流表项处理量发送给控制器,以指示控制器根据该流表项处理量的限制向该交换机发送流表项。

该通信接口302,还用于接收控制器发送的流表项。

该流表项处理量为单位时间内交换机可处理流表项的数量。例如,该流表项处理量为20/秒。

或者,该流表项处理量为发送该流表项处理量时该交换机可处理流表项的数量。例如,该流表项处理量为30。

该流表项处理量除了通过数量和速率中的一种方式表示外,还可以通过其他方式表示,该流表项处理量是交换机通过实际情况所确定的,具体大小不做限定。

该处理器301用于周期性地确定流表项处理量,该通信接口302用于将该处理器301确定的流表项处理量发送给控制器。假设该周期时间为10秒,则处理器301每隔10秒确定一次流表项处理量,并通过该通信接口302将流表项处理量发送给控制器。如果处理器当前处理大量流表项而繁忙时,则可以适当地延长确定流表项处理量的周期时间。

该流表项处理量为预设值,每当交换机可处理流表项的数量达到该预设值时,所述通信接口302将所述流表项处理量发送给所述控制器。其中,该预设值可以由交换机默认或者用户自定义等方式所确定。假设该预设值为50,则每当交换机可处理流表项的数量达到50时,则通信接口302将该流表项处理量发送给控制器,如果交换机可处理流表项的数量没有达到50,则无需向控制器发送流表项处理量,从而节省了交换机的通信消耗。

在交换机配置流表项的过程中,交换机可以随机或者周期性地继续检查自身的处理能力,从而触发向控制器发送处理量消息,其中,该处理量消息中携带流表项处理量。例如,以交换机的可用缓存减少或增加50兆为阈值,触发向控制器发送处理量消息。如上一次检查时交换机的可用缓存为100兆,当再次检查该可用缓存大于150兆时,触发交换机向控制器发送处理量消息。当再次检查可用缓存小于50兆时,触发交换机及时向控制器发送处理量消息,让控制器根据交换机的流表项处理量不发送或者减少发送流表项,从而避免交换机不能及时处理大量的流表项,而造成在交换机的处理上的积压流表项。

另外,触发交换机向控制器发送处理量消息也可以根据交换机自身的综合因素考虑,例如,交换机根据当前处理器的繁忙程度,当处理器的使用率超过某阈值时,交换机及时将处理量消息发送给控制器,让控制器根据交换机的流表项处理量不发送或者减少发送流表项,从而避免处理器不能及时处理大量的流表项,而造成积压流表项的问题。当处理器的使用率恢复到低于该阈值时,再次发送处理量消息,及时告知控制器流表项处理量,并使得控制器可以根据流表项处理量适当地增大可发送的流表项的数量。

请参阅图4,为本发明实施例中软件定义网络中流表项收发方法的一个实施例示意图,该实施例的流程如下:

步骤401、交换机确定流表项处理量。

步骤402、交换机将流表项处理量发送给控制器,以指示控制器根据流表项处理量的限制向交换机发送流表项。

步骤403、控制器获取交换机的流表项处理量。

步骤404、控制器在流表项处理量限制下向交换机发送流表项。

步骤405、交换机接收控制器发送的流表项。

上述方法的具体工作过程,可以参考前述图2或者图3实施例中的对应过程,在此不再赘述。

由于控制器是在流表项处理量限制下向交换机发送的流表项,则交换机接收到流表项后,交换机的处理器在预设能力范围内及时将流表项配置到转发芯片,从而有效避免了流表项在交换机的处理器上的积压问题。

请参阅图5,流表项的收发过程包括如下步骤:

步骤501、交换机根据自身的处理能力确定流表项处理量。

步骤502、交换机与控制器之间建立通信连接。

交换机向控制器发送建立连接的请求,控制器接收该请求,从而建立交换机与控制器之间的通信连接。步骤502可以先于步骤501执行,或者步骤502后于步骤501执行,或者步骤501和步骤502同时执行,此处不做具体限定。

步骤503、交换机向控制器发送处理量消息。

其中,该处理量消息中携带有流表项处理量,以指示控制器在该流表项处理量的限制下向交换机发送流表项。

可取代步骤503的方案如下述步骤504至步骤505:

步骤504、控制器向交换机发送处理量请求消息,以指示交换机向控制器发送流表项处理量。

例如,控制器预设接收流表项处理量的时间点,当当前时间超过该时间点时,控制器可以主动向交换机发送处理量请求消息。

步骤505、交换机向控制器发送处理量消息。

其中,该处理量消息中携带有流表项处理量,以指示控制器在该流表项处理量的限制下向交换机发送流表项。

步骤506、控制器接收到交换机发送的流表项处理量并保存,并向交换机发送流表项。

步骤507、交换机接收控制器发送的流表项。

上述方法的具体工作过程,可以参考前述图2或者图3实施例中的对应过程,在此不再赘述。

交换机在接收到流表项后,将该流表项进行暂时存储,并根据自身的处理能力将该流表项配置到转发芯片,并通过转发芯片进行数据的转发。

请参阅图6,本发明实施例中软件定义网络中的流表项发送设备600的一个结构示意图,该流表项发送设备600包括获取模块601和发送模块602。

获取模块601,用于获取交换机的流表项处理量;

发送模块602,用于在所述获取模块601获取的所述流表项处理量限制下向所述交换机发送流表项。

上述流表项发送设备600的工作过程的细节,可以参考前述图2实施例中的对应过程,在此不再赘述。

请参阅图7,本发明实施例中软件定义网络中的流表项接收设备700的一个结构示意图,该流表项接收设备700包括确定模块701和发送模块702以及接收模块703。

确定模块701,用于确定流表项处理量;

发送模块702,用于将所述确定模块701确定的所述流表项处理量发送给控制器,以指示所述控制器根据所述流表项处理量的限制向所述交换机发送流表项;

接收模块703,用于接收所述控制器发送的流表项。

上述流表项接收设备700的工作过程的细节,可以参考前述图3实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络设备上。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,但是本领域技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征以功能相同的特征进行替换;而这些修改或者替换,并不使相应技术方案脱离本发明权利要求的范围。

上述实施例可以全部或部分地通过软件、硬件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、双绞线或光纤)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如光盘)、或者半导体介质(例如固态硬盘)等。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1