异步通信方法和装置与流程

文档序号:13391436阅读:116来源:国知局
本公开涉及通信领域,尤其涉及异步通信方法和异步通信装置。
背景技术
::sdn(softwaredefinednetwork,软件定义网络)是一种新型网络创新架构,其核心思想是将网络设备的控制层面与转发层面分离,以实现对网络流量的灵活控制,从而为核心网络及应用的创新提供良好的平台。在sdn网络中,控制器和交换机之间可采用openflow协议作为控制层和转发层的信令通道。控制器通过该信令通道配置和管理交换机。控制器和交换机之间存在一些不需要应答的消息,例如控制器发送到交换机的修改状态(modifystate)消息(用于修改交换机的流表的消息),又如,用于告知交换机的端口状态更新的端口状态(portstatus)消息等,这些不需要对端应答的消息可以称为异步消息。在这种异步消息无应答的情况下,在对端有未执行的异步消息时,控制器或交换机也会认为对端已执行所有的异步消息,从而做出错误的判断,可能会导致报文转发错误。技术实现要素:有鉴于此,本公开提出了能够便于实现异步消息应答的方法,本公开还提出了相应的装置。根据本公开的一方面,提供了一种异步通信方法,所述方法包括:本端发送用于确认异步消息执行状态的请求消息至对端,所述请求消息包括异步消息标识字段,所述异步消息标识字段包括至少一个异步消息的标识,以使所述对端发送用于确认所述标识对应的异步消息在所述对端的执行状态的应答消息;所述本端接收所述对端发送的所述应答消息,所述应答消息包括异步消息指示字段,所述异步消息指示字段用于指示所述至少一个异步消息在所述对端的执行状态。根据本公开的另一方面,提供了一种异步通信通信装置,所述装置应用于本端,所述装置包括:请求消息发送单元,发送用于确认异步消息执行状态的请求消息至对端,所述请求消息包括异步消息标识字段,所述异步消息标识字段包括至少一个异步消息的标识,以使所述对端发送用于确认所述标识对应的异步消息在所述对端的执行状态的应答消息;应答消息接收单元,接收所述对端发送的所述应答消息,所述应答消息包括异步消息指示字段,所述异步消息指示字段用于指示所述至少一个异步消息在所述对端的执行状态。通过请求对端确认异步消息的执行状态,并从对端返回的应答消息中得知这些异步消息的执行状态,根据本公开的各方面能够有效避免因异步消息无应答导致的错误判断以及导致的报文转发错误等。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。附图说明包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。图1示出了基于openflow协议交互的控制器和交换机的示意图。图2示出了根据本公开的一个示例性实施例的异步通信方法的流程图。图3示出了根据本公开的一个示例性实施例的用于确认异步消息执行状态的请求消息的示意图。图4示出了根据本公开的一个示例性实施例的用于确认异步消息执行状态的请求消息的示意图。图5示出了根据本公开的一个示例性实施例的本端收到的应答消息的示意图。图6示出了根据本公开的一个示例性实施例的本端收到的应答消息的示意图。图7示出了根据本公开的一个示例性实施例的本端收到的应答消息的示意图。图8示出了根据本公开的一个示例性实施例的异步通信装置的结构框图。图9示出了根据本公开的一个示例性实施例的异步通信装置的结构框图。图10示出了sdn网络下的示例性异步通信示意图。具体实施方式以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。图1示出了基于openflow协议交互的控制器和交换机的示意图。控制器102完成控制面的工作,其收集整个网络的拓扑和资源以形成拓扑视图和资源视图,并实现对openflow交换机104的管理和控制。交换机104完成转发面的工作,即负责数据包转发。控制器102管理和配置交换机104的流表(flowtable),流表由多个流表项(entry)组成,每个流表项规定了一个转发规则。对于进入交换机104的数据包,交换机104通过查询流表来获得转发路径。控制器102和交换机104间基于openflow协议通信。图2示出了根据本公开的一个示例性实施例的异步通信方法的流程图。该方法可以应用于控制器,也可以应用于交换机。当该方法应用于控制器时,控制器即为本端,而交换机即为对端;反之,当该方法应用于交换机时,交换机即为本端,而控制器即为对端。如图2所示,该方法包括:步骤202,本端发送用于确认异步消息执行状态的请求消息至对端,所述请求消息包括异步消息标识字段,所述异步消息标识字段包括至少一个异步消息的标识,以使所述对端发送用于确认所述标识对应的异步消息在所述对端的执行状态的应答消息;步骤204,所述本端接收所述对端发送的所述应答消息,所述应答消息包括异步消息指示字段,所述异步消息指示字段用于指示所述至少一个异步消息在所述对端的执行状态。上述实施例中,通过请求对端确认异步消息的执行状态,并从对端返回的应答消息中得知这些异步消息的执行状态,根据本公开的各方面能够有效避免因异步消息无应答导致的错误判断以及可能导致的报文转发错误等。图3示出了根据本公开的一个示例性实施例的用于确认异步消息执行状态的请求消息的示意图。如图3所示,请求消息300可以包括异步消息标识字段302。异步消息标识字段302可以包括3个异步消息的标识1、2、3,例如,该标识可以是与消息一一对应的transactionid(业务标识)。可以理解的是,图3中示出了3个标识,其目的仅在于示例,不在于以任何形式限定标识的数量。图3也不以任何形式限定异步消息标识字段302在请求消息300中的位置,本领域技术人员可根据需要进行设置。图4示出了根据本公开的一个示例性实施例的用于确认异步消息执行状态的请求消息的示意图。如图所示,除了异步消息标识字段402,请求消息400还可以包括超时指示字段404。超时指示字段404可以用于指示所述对端从接收所述请求消息至发送所述应答消息的时限。一些情况下,如果本端发送的请求消息400中携带较多标识,对端可能需要较长时间来执行这些标识对应的异步消息,则本端在发出请求消息之后很久才能收到应答消息。还有一些情况下,如果本端发送的某些异步消息未送达对端或者因为各种原因未能被对端执行,则对端可能一直不会返回相应的应答消息,本端可能一直陷入等待状态中。考虑到诸如如上所述的情况等,如图4所示的请求消息400中可携带超时指示字段404,例如,对端在收到请求消息400后,可在等待时间达到超时指示字段404所指示的时限(例如,5秒)时即返回相应的应答消息。举例来说,控制器发送给交换机的请求消息中携带了1000个modifystate消息的transactionid,该请求消息中的超时指示字段所指示的时限为5秒,交换机在收到该请求消息后的5秒内只执行了这些消息中的80%。此时,尽管等待5秒后交换机仍未能执行完这1000个modifystate消息,交换机仍会在等待时间达到该时限(即5秒)时返回应答消息。该应答消息可告知这1000个modifystate消息中哪些modifystate消息在交换机中已被执行。本领域技术人员可以理解的是,对端可以在等待时间达到该时限时,才返回应答消息,而不考虑这些异步消息(在请求消息中的异步消息标识字段中的标识对应的)的执行情况;或者,在达到该时限时,如果对端还未发送响应于所述请求消息的应答消息,则发送响应于所述请求消息的应答消息,例如,在一些情况下,在达到该时限之前,对端可能已经执行完所有标识对应的异步消息并返回了相应的应答消息,此时,在达到该时限时,无需再发送应答消息。举例来说,控制器发送给交换机的请求消息中携带了100个modifystate消息的transactionid,该请求消息中的超时指示字段4024所指示的时限为5秒,交换机在收到该请求消息后的第4秒执行完这100个modifystate消息。在一种可能的实现方式中,交换机可以在接收到该请求消息并等待5秒时,返回相应的应答消息,该应答消息可告知这100个modifystate消息均已被执行。在另一种可能的实现方式中,对端可在执行完这100个modifystate消息时,即接收到该请求消息后的第4秒,返回相应应答消息,该应答消息可告知这100个modifystate消息均已被执行,而无需等待5秒再返回该应答消息。本领域技术人员可以理解的是,在上述实现方式中,本端可通过请求消息中的超时指示字段来显式地告知对端该时限,在根据本公开的另一些实现方式中,本端也可通过其他方式告知对端该时限,或者可直接在对端配置该时限,本领域技术人员可根据需要采用任意适用的时限配置方式。图5示出了根据本公开的一个示例性实施例的本端收到的应答消息500的示意图。该应答消息500中的异步消息指示字段502可以包括(例如,仅包括)第一标记子字段5022。第一标记子字段5022可以被配置为用于指示所述至少一个异步消息(请求消息中的异步消息标识字段所指示的)在对端都已被执行。在需要确认执行状态的所有异步消息都被执行的情况下,可考虑采用如图5所示的请求消息500。图6示出了根据本公开的一个示例性实施例的本端收到的应答消息600的示意图。该应答消息600中的异步消息指示字段602可以包括所述至少一个异步消息中在对端已被执行的异步消息的标识(例如,transactionid)。本领域技术人员可以理解的是,虽然图6中示出的异步消息指示字段602包括标识1、2、3,但这仅用于示例,不用于以任何形式限制异步消息指示字段602所包括的标识的数量。例如,如果本端发送了1000个要求确认执行状态的异步消息以及相应的请求消息,而对端在等待时间达到时限时执行了其中的800个,则异步消息指示字段602中可以包括这800个异步消息的标识(例如,transactionid),即800个标识。或者,图6所示的应答消息600中的异步消息指示字段602可以包括所述至少一个异步消息中在对端未被执行的异步消息的标识。例如,如果本端发送了1000个要求确认执行状态的异步消息以及相应的请求消息,而对端在等待时间达到时限时执行了其中的800个,则异步消息指示字段602中可以包括在对端未被执行的200异步消息的标识(例如,transactionid),即200个标识。图7示出了根据本公开的一个示例性实施例的应答消息700的示意图。该应答消息700中的异步消息指示字段702可以包括第二标记子字段7022和标识子字段7024。在第二标记子字段7022为第一值的情况下,标识子字段7024包括所述至少一个异步消息中在对端已被执行的异步消息的标识;在第二标记子字段7022为第二值的情况下,标识子字段7024包括所述至少一个异步消息中在对端未被执行的异步消息的标识。例如,如果本端发送了1000个要求确认执行状态的异步消息以及相应的请求消息,而对端在等待时间达到时限时执行了其中的800个,则如果第二标记子字段7022为第一值,则标识子字段7024可包括已被执行的800个异步消息的标识(例如,transactionid),即800个标识;如果第二标记子字段7022为第二值,则标识子字段7024可包括未被执行的200个异步消息的标识(例如,transactionid),即200个标识。以上仅示出了请求消息和应答消息的一些示例性格式,其仅用于示例的目的,不以任何方式限定相应字段在相应消息中的位置(包括相对位置)、长度等信息,本领域技术人员可根据需要进行配置。在一种可能的实现方式中,所述方法还包括:确定所述至少一个异步消息中在所述对端未被执行的异步消息;所述本端再次发送用于确认异步消息执行状态的请求消息至所述对端,再次发送的用于确认异步消息执行状态的请求消息的异步消息标识字段包括所确定的所述未被执行的异步消息的标识,以使所述对端发送用于确认所述未被执行的异步消息的标识对应的异步消息在所述对端的执行状态的应答消息。在现有技术中,例如,控制器向交换机发送1000个携带流表的消息(即向交换机发送1000个流表),如果其中部分消息还未被交换机执行,而由于控制器难以知晓这一情况,误以为均已被执行,从而不会采取后续措施,可能出现丢包的情况。根据本实现方式,作为本端的控制器发送1000个消息,可发送请求消息以确认这1000个消息的执行状态。当等待时间达到时限时,作为对端的交换机执行了其中的800个消息,则该交换机可返回应答消息以告知在该交换机中800个消息已被执行。收到该应答消息后,控制器可再次发送请求消息以确认剩余200个消息的最新执行状态,并根据反馈情况采取相应措施以尽量减少丢包现象。例如,响应于该再次发送的请求消息,交换机返回(例如,在等待时间达到时限时或执行完剩余的200个消息时)新的应答消息以告知这200个消息的执行状况。如果新的应答消息指示这200个消息已全部被执行,则控制器可以确认直至此时流表已发送成功;如果新的应答消息指示这200个消息仍未被全部执行,控制器可基于这一信息采取进一步的处理措施,以有效减少丢包等情况的发生。在一种可能的实现方式中,所述方法还包括:在再次发送用于确认异步消息执行状态的请求消息至所述对端之前,本端发送所述未被执行的异步消息至所述对端。在现有技术中,例如,如果交换机发送多个portstatus消息,而其中的部分未被控制器执行,则如果控制器不向交换机返回消息执行情况,那么交换机会认为所有portstatus消息都已被执行,不会再向控制器发送未执行的portstatus消息(其中可能包括控制器未接收到的portstatus消息),那么控制器根据portstatus消息获得的网络拓扑中的端口状态是不准确的,从而导致计算出错误的转发路径。根据本实现方式,作为本端的交换机向作为对端的控制器上报多个portstatus消息,以告知多个端口发生了变化,并发送用于确认该多个portstatus消息的执行状态的请求消息。当交换机基于控制器返回的应答消息得知有部分portstatus消息在控制器中未被执行,例如控制器未能接收到或未能解析这部分portstatus消息等都可能导致其无法被执行,则交换机可再次发送未被执行的这部分portstatus消息,并随后再次发送请求消息以确认这部分portstatus消息的执行状态,直至交换机确认所述多个portstatus消息均已在控制器中被执行,从而有效避免控制器由于未能接收或解析部分异步消息而做出错误判断。如上所述,上述本端可以为控制器或交换机。特别地,当上述本端为交换机时,可利用openflow协议中的阻塞(barrier)消息机制,即可扩展现有的阻塞请求消息和阻塞回答消息以实施上述方法。根据openflow相关协议,控制器可利用阻塞(barrier)消息机制对发送的修改状态(modifystate)消息等进行确认,例如,控制器可以在发出modifystate消息后,发送阻塞请求(barrierrequest)消息至交换机,交换机可在执行modifystate消息后返回阻塞回答(barrierreply)消息。但目前的barrierrequest消息不携带消息体,即无法告知要求对端确认哪些消息,交换机通常认为需要对在当前barrierrequest消息的接收时间和上一个barrierrequest消息的接收时间之间收到的所有异步消息予以应答。假设控制器发送了1000个异步消息,并期望交换机应答夹杂在其中的100个异步消息。如果利用现有barrier消息机制,可能需要在特定的100个时间段针对这100个异步消息分别发送100个barrierrequest消息,并接受100个barrierreply消息,实现代价非常高,在很多情况下并不适用。如果针对这1000个异步消息发送1个barrierrequest消息,则等待应答的时间可能非常长,特别地,如果部分异步消息未成功发送或者未被执行,则可能难以等到应答,也难以知晓是哪些异步消息未成功发送或者未被执行。发明人经过深入研究后发现,可基于本公开的构思并利用现有阻塞消息机制,对现有的阻塞消息机制进行扩展。可对现有的barrierrequest消息进行扩展,即增加异步消息标识字段,可将该扩展的barrierrequest消息作为如上所述的用于确认异步消息执行状态的请求消息。可选地,如上所述,根据需要barrierrequest消息还可考虑增加超时指示字段。可对现有的barrierreply进行扩展,即增加异步消息指示字段,可将该扩展的barrierreply消息作为如上所述的应答消息,从而充分利用已有消息机制。在一些情况下,这有利于简化根据本公开的方案的实施。图8示出了根据本公开的一个示例性实施例的异步通信装置800的结构框图。如图8所示,装置800包括请求消息发送单元802和应答消息接收单元804。请求消息发送单元802发送用于确认异步消息执行状态的请求消息至对端,所述请求消息包括异步消息标识字段,所述异步消息标识字段包括至少一个异步消息的标识,以使所述对端发送用于确认所述标识对应的异步消息在所述对端的执行状态的应答消息。应答消息接收单元804接收所述对端发送的所述应答消息,所述应答消息包括异步消息指示字段,所述异步消息指示字段用于指示所述至少一个异步消息在所述对端的执行状态。在一种可能的实现方式中,所述请求消息还可以包括超时指示字段,所述超时指示字段用于指示所述对端从接收到所述请求消息至发送所述应答消息的时限。在一种可能的实现方式中,所述异步消息指示字段为:所述异步消息指示字段包括第一标记子字段,所述第一标记子字段被配置为用于指示所述至少一个异步消息在所述对端都已被执行;或者,所述异步消息指示字段包括所述至少一个异步消息中在所述对端已被执行的异步消息的标识;或者,所述异步消息指示字段包括所述至少一个异步消息中在所述对端未被执行的异步消息的标识;或者,所述异步消息指示字段包括第二标记子字段和标识子字段,在所述第二标记子字段为第一值的情况下,所述标识子字段包括所述至少一个异步消息中在所述对端已被执行的异步消息的标识,在所述第二标记子字段为第二值的情况下,所述标识子字段包括所述至少一个异步消息中在所述对端未被执行的异步消息的标识。在一种可能的实现方式中,所述装置还可以包括:未执行消息确定单元(未示出),用于基于所述应答消息,确定所述至少一个异步消息中在所述对端未被执行的异步消息。此时,请求消息发送单元802还可以用于再次发送用于确认异步消息执行状态的请求消息至所述对端,再次发送的用于确认异步消息执行状态的请求消息的异步消息标识字段包括所确定的所述未被执行的异步消息的标识,以使所述对端发送用于确认所述未被执行的异步消息的标识对应的异步消息在所述对端的执行状态的应答消息。在一种可能的实现方式中,所述装置还可以包括:异步消息发送单元(未示出),用于在再次发送用于确认异步消息执行状态的请求消息至所述对端之前,发送所述未被执行的异步消息至所述对端。上述本端可以是控制器或交换机。当上述本端是控制器时,所述请求消息可以是扩展的barrierrequest(阻塞请求)消息,所述应答消息是扩展的barrierreply(阻塞回答)消息。图9是根据一示例性实施例示出的一种用于异步通信装置900的框图。参照图9,该装置900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与异步通信逻辑对应的机器可执行指令以执行上文所述的异步通信方法。本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。图10示出了sdn网络下的示例性异步通信示意图。在如图所示的sdn网络中,交换机1004和1006是与控制器1002关联的openflow交换机;r1、r2、r3、r4为中间设备,例如,其可能是路由器,也可能是不与控制器1002关联的交换机等。控制器1002和openflow交换机1004、1006间存在openflow通道。控制器1002通过该通道向交换机1004、1006发送流表、group(组)表、meter(计量)表等内容,这些都是异步openflow消息。交换机1004、1006则可以采用异步消息机制及时向控制器1002上报portstatus、tablestatus等状态通告消息。以下以控制器1002和交换机1004之间的交互为例对本公开的应用场景进行示例性说明。先以控制器1002主动发送异步消息为例进行说明。如图10所示的拓扑结构建立并且虚拟主机上线后,控制器1002向交换机1004发送了1000个携带流表的消息和100个携带group表的消息,即向交换机1004发送了1000个流表和100个group表,其中这100个携带group表的消息需要被确认。根据本公开,控制器1002可生成扩展的barrierrequest消息,并将其发送至交换机1004。该扩展的barrierrequest消息可以包括异步消息标识字段和超时指示字段,该异步消息标识字段可以包括要求应答的100个携带group表的消息的transactionid,该超时指示字段可指示交换机1002从接收到该扩展的barrierrequest消息至返回相应的应答消息的时限,例如,该超时指示字段可被配置为5秒。交换机1004接收到该扩展的barrierrequest消息并等待5秒,发现此时已执行完90个携带group表的异步消息,还剩余10个携带group表的消息在缓存中未执行。此时,交换机1004可以发送扩展的barrierreply消息,该扩展的barrierreply消息包括异步消息指示字段,该异步消息指示字段可以包括尚未被执行的10个消息的transactionid。控制器1002在接收到该扩展的barrierreply消息后,得知还有10个携带group表的消息未被执行,则控制器1002可发送新的扩展的barrierrequest消息,该扩展的barrierrequest消息的异步消息标识字段可以包括这10个未被执行的携带group表的消息的transactionid,其超时指示字段可以被配置为3秒。交换机1004接收到该新的扩展的barrierrequest消息,发现这10个携带group表的消息已被执行,则立即返回相应的扩展的barrierreply消息,该扩展的barrierreply消息的异步消息指示字段可包括这10个携带group表的消息的transactionid。控制器1002在接收到该扩展的barrierreply消息后,得知100个携带group表的消息均已被执行,则完成流表发送的进程。本领域技术人员可以理解的是,在一些情况下,交换机1004可能返回用于上报某个携带group表的消息执行失败的error消息,控制器1002可能认为这也属于该携带group表的消息已被执行的情况,因此,控制器1002可将其从未完成的携带group表的消息中删除,即,在发送的新的请求消息中不再携带该已执行失败的携带group表的消息的transactionid。下文以交换机1004主动上报异步消息为例进行说明。在某时刻,交换机1004与中间设备r1间的全部端口1、2、3、4(未示出)都断开,交换机1004向控制器1002上报4个portstatus消息,portstatus消息为异步消息。此时,交换机1004可生成请求消息,并将其发送至控制器1002。该请求消息的异步消息标识字段可以包括这4个portstatus消息的transactionid,该请求消息还可包括超时指示字段。4个portstatus消息中的一个被异常丢弃,控制器1002按照成功解析的3个portstatus消息来调整报文转发路径,由于缺失了一个portstatus消息,因此调整后的报文转发路径仍保留了交换机1004和中间设备r1间的1个端口。而且,控制器1002响应于交换机1004发送的请求消息,向交换机1004返回应答消息,其异步消息指示字段可包括已被执行的3个portstatus消息的transactionid。交换机1004在接收到该应答消息后,知道控制器1002已执行完3个portstatus消息,剩余1个还未执行。因此,交换机1004可继续发送未执行的portstatus消息至控制器1002,同时发送新的请求消息,其异步消息标识字段可包括该重新发送的portstatus消息的transactionid。控制器1002接收到该重新发送的portstatus消息,可对其进行解析,并按照解析结果调整报文转发路径。此次调整后的报文转发路径中,交换机1004和r1之间不存在可用链路。控制器1002还可响应于新的请求消息,向交换机1004返回相应的应答消息,其异步消息指示字段可包括此次执行的portstatus消息的transactionid。交换机1004在接收到该应答消息后,知道控制器1002已执行完所有portstatus消息,则结束端口状态通告流程。以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本
技术领域
:的其它普通技术人员能理解本文披露的各实施例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1