CN104717139B - 一种数据通信的方法、控制设备以及节点 - Google Patents
一种数据通信的方法、控制设备以及节点 Download PDFInfo
- Publication number
- CN104717139B CN104717139B CN201310687651.8A CN201310687651A CN104717139B CN 104717139 B CN104717139 B CN 104717139B CN 201310687651 A CN201310687651 A CN 201310687651A CN 104717139 B CN104717139 B CN 104717139B
- Authority
- CN
- China
- Prior art keywords
- node
- flow table
- table item
- message
- received
- 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
Abstract
本发明的实施例提供一种数据通信的方法、控制设备以及节点,涉及通信领域,在完成报文传输的同时,降低了报文丢包的可能性,提高了报文传输的成功率。具体方案为:获取报文传输路径,执行同时向该路径上的各个节点下发对应的流表项的操作,判断同时向报文传输路径上的各个节点下发对应的流表项的操作是否成功,若操作失败,并再次执行获取报文传输路径的步骤、同时向各个节点下发流表项的步骤以及判断下发是否成功的步骤,直至各个节点全部成功接收到对应的流表项;若操作成功,则向首节点下发激活流表项消息,指示首节点执行接收到的流表项,以便各个节点按照接收到的对应的流表项传输报文。本发明用于数据通信。
Description
技术领域
本发明涉及通信领域,尤其涉及一种数据通信的方法、控制设备以及节点。
背景技术
目前,软件定义网络(Software Defined Network,SDN)技术受到广泛关注,OpenFlow(开放流)是其中的一个开放式协议标准。该技术主要包括Open Flow交换机、控制设备两部分。Open Flow交换机根据流表(Flow Table)来转发数据,控制设备管控流表的生成、维护和配置。Open Flow交换机负责数据转发,主要由三部分组成:流表(Flow Table)、安全信道(Secure Channel)和Open Flow协议(Open Flow Protocol)。安全通道是连接OpenFlow交换机和控制设备的接口,控制设备通过这个接口,按照Open Flow协议规定的格式来配置和管理Open Flow交换机。每个Open Flow交换机的处理单元由流表构成,每个流表由许多流表项组成,流表项代表转发规则,进入交换机的数据包通过查询流表来取得对应的操作。流表项主要由匹配字段(Match Fields)、计数器(Counters)和操作(Actions)等三部分组成,匹配字段(Match Fields)的结构包含很多匹配项,涵盖了链路层、网络层和传输层大部分标识,用来匹配网络报文。计数器(Counters)用来记录匹配到的报文数。操作(Actions)规定了对匹配上的报文所做的操作。
在Open Flow技术中,主机之间的通信是报文经过报文传输路径上的各个OpenFlow交换机进行转发来实现的,在没有可用的报文传输路径时,根据需要首先计算出一条报文传输路径,控制设备向该报文传输路径上的各个Open Flow交换机下发流表项,当所有流表项成功下发后,主机之间的报文经过报文传输路径上的各个Open Flow交换机转发后完成数据通信。
现有技术会存在以下问题:由于网络状态不是理想情况,控制设备对报文传输路径上的各个Open Flow交换机下发流表项所到达的时间也不尽相同,如果报文经过报文传输路径到达某个Open Flow交换机而该交换机暂时未收到流表项或因为网络异常无法向该交换机下发流表项,那么报文到达该交换机后无法继续进行转发,从而造成报文丢包。
发明内容
本发明的实施例提供一种数据通信的方法、控制设备以及节点,在完成报文传输的同时,降低了报文丢包的可能性,提高了报文传输的成功率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种数据通信的方法,所述方法包括:
获取报文传输路径;
执行同时向所述报文传输路径上的各个节点下发对应的流表项的操作;并指示所述报文传输路径上的首节点不执行接收到的流表项,指示所述报文传输路径上除首节点外的其他节点执行接收到的流表项;
判断所述同时向所述报文传输路径上的各个节点下发对应的流表项的操作是否成功;
若所述各个节点中任一节点未能成功接收所述对应流表项,则确定所述操作失败,指示所述各个节点中已成功接收所述对应流表项的节点删除接收到的流表项,并再次执行获取报文传输路径的步骤、同时向各个节点下发流表项的步骤以及判断下发是否成功的步骤,,直至所述各个节点全部成功接收到所述对应的流表项;
若所述各个节点全部成功接收到所述对应的流表项,则确定所述操作成功,向所述首节点下发激活流表项消息,指示所述首节点执行接收到的流表项,以便所述各个节点按照接收到的所述对应的流表项传输报文。
结合第一方面,在第一种可能的实现方式中,所述指示所述报文传输路径上的首节点不执行流表项包括:
在向所述首节点下发的流表项中携带标识字段,所述标识字段为未激活,用于指示所述首节点不执行接收到的流表项并将匹配到所述流表项的报文缓存在所述首节点的缓存队列中;或
在向所述首节点下发的流表项中携带指示信息,所述指示信息用于指示所述首节点将接收到的流表项插入去激活流表并将匹配到所述流表项的报文缓存在所述首节点的缓存队列中,其中所述缓存队列为所述去激活流表对应的缓存队列。
结合第一方面,在第二种可能的实现方式中,所述判断所述同时向所述报文传输路径上的各个节点下发对应的流表项的操作是否成功包括:
判断在预设时间内是否收到所述各个节点反馈的响应消息;
若在所述预设时间内收到所述各个节点反馈的响应消息,则所述各个节点成功接收所述对应的流表项并确定所述操作成功;
若在所述预设时间内未收到所述各个节点中任一节点反馈的响应消息,则确定所述各个节点未成功接收所述对应的流表项并确定所述操作失败。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,若所述操作是通过控制设备中的至少一个控制节点执行的,则为所述操作分配有对应的操作信息,所述操作信息包括:操作标识符、操作失败标识、所述至少一个控制节点的控制节点总数以及操作成功的节点数;
其中,所述操作信息是由所述控制设备中的应用程序生成后分配给所述至少一个控制节点的,或者由所述至少一个控制节点生成的;所述至少一个控制节点中的任意一个控制节点具有对所述操作信息进行修改、读取、订阅的权限。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,若所述各个节点是通过多个控制节点控制的,所述判断在预设时间内是否收到所述各个节点反馈的响应消息包括:
若一个控制节点在预设时间内收到所述一个控制节点所控制的所有节点反馈的响应消息,则将所述操作成功的节点数加1;
将所述操作成功的节点数的增量与控制所述各个节点的控制节点总数比较,若所述操作成功的节点数的增量与所述控制节点总数相等,则确定在预设时间内收到所述各个节点反馈的响应消息;否则,确定在预设时间内未收到所述各个节点反馈的响应消息。
结合第一方面,在第五种可能的实现方式中,所述若所述各个节点中任一节点未能成功接收所述对应流表项,则确定所述操作失败,指示所述各个节点中已成功接收所述对应流表项的节点删除接收到的流表项包括:
若所述各个节点中任一节点未能成功接收所述对应流表项,则向所述各个节点中已成功接收所述对应流表项的节点发送删除消息,指示所述各个节点中已成功接收所述对应流表项的节点删除收到的流表项。
结合第一方面,在第六种可能的实现方式中,若所述各个节点是通过多个控制节点控制的,所述若所述各个节点中任一节点未能成功接收所述对应流表项,则确定所述操作失败,指示所述各个节点中已成功接收所述对应流表项的节点删除接收到的流表项包括:
若第一节点未能成功接收所述对应流表项,所述第一节点为所述各个节点中的任一节点,则接受所述第一节点的控制节点对所述操作失败标识的修改,所述操作失败标识用于标记本次流表项下发流程是否失败;
向所述多个控制节点中除所述第一节点的控制节点的其他控制节点发送通知消息,所述通知消息包括修改后的操作失败标识,用于通知所述其他控制节点本次流表项下发流程失败,使所述多个控制节点分别向所述各个节点中已经接收到流表项的节点发送删除消息,指示所述各个节点中已成功接收流表项的节点删除收到的流表项。
第二方面,提供一种数据通信的方法,所述方法包括:
从控制设备获取流表项;
确定是否执行所述流表项,若不执行所述流表项,则等待所述控制设备下发激活流表项消息;
接收所述控制设备发送的所述激活流表项消息,执行所述流表项,使报文按照所述流表项对应的操作进行传输。
结合第二方面,在第一种可能的实现方式中,所述确定是否执行所述流表项包括:
若从控制设备获取的流表项中携带的标识字段为激活,则执行所述流表项;
若从控制设备获取的流表项中携带的标识字段为未激活,则不执行所述流表项并将匹配到所述流表项的报文缓存在缓存队列中;或者
若从控制设备获取的流表项中携带的指示信息指示所述首节点将接收到的流表项插入去激活流表,则将接收到的流表项插入去激活流表,不执行所述流表项并将匹配到所述流表项的报文缓存在缓存队列中,其中所述缓存队列为所述去激活流表对应的缓存队列。
结合第二方面或者第二方面的第一种可能的实现方式,在第二种可能的实现方式中,在从所述控制设备获取流表项后,所述方法还包括:
接收所述控制设备下发的删除消息,将已获取的所述流表项删除,所述删除消息是由所述控制设备确定所述节点所在的报文传输路径中各个节点的至少一个节点未成功接收对应的流表项后发送的。
第三方面,提供一种控制设备,所述设备包括:
第一获取单元,用于获取报文传输路径;
下发单元,用于执行同时向所述报文传输路径上的各个节点下发对应的流表项的操作;并指示所述报文传输路径上的首节点不执行接收到的流表项,指示所述报文传输路径上除首节点外的其他节点执行接收到的流表项;
判断单元,用于判断所述同时向所述报文传输路径上的各个节点下发对应的流表项的操作是否成功;
第一删除单元,用于若所述各个节点中任一节点未能成功接收所述对应流表项,则确定所述操作失败,指示所述各个节点中已成功接收所述对应流表项的节点将接收到的流表项删除;
第一激活单元,用于若所述各个节点全部成功接收到所述对应的流表项,则向所述首节点下发激活流表项消息,指示所述首节点执行接收到的流表项,以便所述各个节点按照接收到的所述对应的流表项传输报文。
结合第三方面,在第一种可能的实现方式中,所述下发单元具体用于:
在向所述首节点下发的流表项中携带标识字段,所述标识字段为未激活,用于指示所述首节点不执行接收到的流表项并将匹配到所述流表项的报文缓存在所述首节点的缓存队列中;或
在向所述首节点下发的流表项中携带指示信息,所述指示信息用于指示所述首节点将接收到的流表项插入去激活流表并将匹配到所述流表项的报文缓存在所述首节点的缓存队列中,其中所述缓存队列为所述去激活流表对应的缓存队列。
结合第三方面,在第二种可能的实现方式中,所述判断单元具体用于:
判断在预设时间内是否收到所述各个节点反馈的响应消息;
若在所述预设时间内收到所述各个节点反馈的响应消息,则确定所述各个节点成功接收所述对应的流表项并确定所述操作成功;
若在所述预设时间内未收到所述各个节点中任一节点反馈的响应消息,则确定所述各个节点未成功接收所述对应的流表项并确定所述操作失败。
结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,若所述操作是通过控制设备中的至少一个控制节点执行的,则为所述操作分配有对应的操作信息,所述操作信息包括:操作标识符、操作失败标识、所述至少一个控制节点的控制节点总数以及操作成功的节点数;
其中,所述操作信息是由所述控制设备中的应用程序生成后分配给所述至少一个控制节点的,或者由所述至少一个控制节点生成的;所述至少一个控制节点中的任意一个控制节点具有对所述操作信息进行修改、读取、订阅的权限。
结合第三方面的第三种可能的实现方式,在第四种可能的实现方式中,若所述各个节点是通过多个控制节点控制的,所述判断单元还具体用于:
若一个控制节点在预设时间内收到所述一个控制节点所控制的所有节点反馈的响应消息,则将所述操作成功的节点数加1;
将所述操作成功的节点数的增量与控制所述各个节点的控制节点总数比较,若所述操作成功的节点数的增量与所述控制节点总数相等,则确定在预设时间内收到所述各个节点反馈的响应消息;否则,确定在预设时间内未收到所述各个节点反馈的响应消息。
结合第三方面,在第五种可能的实现方式中,所述第一删除单元具体用于:
若所述各个节点中任一节点未能成功接收所述对应流表项,则向所述各个节点中已成功接收所述对应流表项的节点发送删除消息,指示所述各个节点中已成功接收所述对应流表项的节点删除收到的流表项。
结合第三方面,在第六种可能的实现方式中,若所述各个节点是通过多个控制节点控制的,所述第一删除单元还具体用于:
若第一节点未能成功接收所述对应流表项,所述第一节点为所述各个节点中的任一节点,则接受所述第一节点的控制节点对所述操作失败标识的修改,所述操作失败标识用于标记本次流表项下发流程是否失败;
向所述多个控制节点中除所述第一节点的控制节点的其他控制节点发送通知消息,所述通知消息包括修改后的操作失败标识,用于通知所述其他控制节点本次流表项下发流程失败,使所述多个控制节点分别向所述各个节点中已经接收到流表项的节点发送删除消息,指示所述各个节点中已成功接收流表项的节点删除收到的流表项。
第四方面,提供一种节点,所述节点包括:
第二获取单元,用于从控制设备获取流表项;
确定单元,用于确定是否执行所述流表项,若不执行所述流表项,则等待所述控制设备下发激活流表项消息;
第二激活单元,用于接收所述控制设备发送的所述激活流表项消息,执行所述流表项,使报文按照所述流表项对应的操作进行传输。
结合第四方面,在第一种可能的实现方式中,所述确定单元具体用于:
若从控制设备获取的流表项中携带的标识字段为激活,则执行所述流表项;
若从控制设备获取的流表项中携带的标识字段为未激活,则不执行所述流表项并将匹配到所述流表项的报文缓存在缓存队列中;或者
若从控制设备获取的流表项中携带的指示信息指示所述首节点将接收到的流表项插入去激活流表,则将接收到的流表项插入去激活流表,不执行所述流表项并将匹配到所述流表项的报文缓存在缓存队列中,其中所述缓存队列为所述去激活流表对应的缓存队列。
结合第四方面或者第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述节点还可以包括:
第二删除单元,用于在从所述控制设备获取流表项后,接收所述控制设备下发的删除消息,将已获取的所述流表项删除,所述删除消息是由所述控制设备确定所述节点所在的报文传输路径中各个节点的至少一个节点未成功接收对应的流表项后发送的。
本发明的实施例提供一种数据通信的方法、控制设备以及节点,首先获取报文传输路径,然后执行同时向所述报文传输路径上的各个节点下发对应的流表项的操作;并指示所述报文传输路径上的首节点不执行接收到的流表项,指示所述报文传输路径上除首节点外的其他节点执行接收到的流表项;再判断所述同时向所述报文传输路径上的各个节点下发对应的流表项的操作是否成功;若所述各个节点中任一节点未能成功接收所述对应流表项,则确定所述操作失败,指示所述各个节点中已成功接收所述对应流表项的节点将接收到的流表项删除,并再次执行获取报文传输路径的步骤、同时向各个节点下发流表项的步骤以及判断下发是否成功的步骤,直至所述各个节点全部成功接收到所述对应的流表项;若所述各个节点全部成功接收到所述对应的流表项,则确定所述操作成功,向所述首节点下发激活流表项消息,指示所述首节点执行接收到的流表项,以便所述各个节点按照接收到的所述对应的流表项传输报文。这样,在完成报文传输的同时,降低了报文丢包的可能性,提高了报文传输的成功率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的实施例提供的一种数据通信的方法的流程示意图一;
图2为本发明的实施例提供的一种数据通信的方法的流程示意图二;
图3为本发明的实施例提供的一种数据通信的方法的流程示意图三;
图4为本发明的实施例提供的一种数据通信的方法的效果示意图;
图5为本发明的实施例提供的一种控制设备的结构示意图;
图6为本发明的实施例提供的一种节点的结构示意图一;
图7为本发明的实施例提供的一种节点的结构示意图二;
图8为本发明的实施例提供的另一种控制设备的结构示意图;
图9为本发明的实施例提供的另一种节点的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的实施例提供一种数据通信的方法,如图1所示,该方法包括:
101、控制设备获取报文传输路径。
102、控制设备执行同时向报文传输路径上的各个节点下发对应的流表项的操作;并指示报文传输路径上的首节点不执行接收到的流表项,指示报文传输路径上除首节点外的其他节点执行接收到的流表项。
103、控制设备判断同时向报文传输路径上的各个节点下发对应的流表项的操作是否成功。
104、若各个节点中任一节点未能成功接收所述对应流表项,则确定操作失败,控制设备指示各个节点中已成功接收对应流表项的节点删除接收到的流表项,并再次执行101-103,直至各个节点全部成功接收到对应的流表项。
105、若各个节点全部成功接收到对应的流表项,则确定操作成功,控制设备向首节点下发激活流表项消息,指示首节点执行接收到的流表项,以便各个节点按照接收到的对应的流表项传输报文。
其中,上述控制设备可以是单个控制设备,也可以是包括多个控制节点的控制设备。
本发明的实施例提供一种数据通信的方法,首先获取报文传输路径,然后执行同时向报文传输路径上的各个节点下发对应的流表项的操作;并指示报文传输路径上的首节点不执行接收到的流表项,指示报文传输路径上除首节点外的其他节点执行接收到的流表项;再判断同时向报文传输路径上的各个节点下发对应的流表项的操作是否成功;若各个节点中任一节点未能成功接收对应流表项,则确定操作失败,指示各个节点中已成功接收对应流表项的节点将接收到的流表项删除,并再次执行获取报文传输路径的步骤、同时向各个节点下发流表项的步骤以及判断下发是否成功的步骤,直至各个节点全部成功接收到对应的流表项;若各个节点全部成功接收到对应的流表项,则确定操作成功,向首节点下发激活流表项消息,指示首节点执行接收到的流表项,以便各个节点按照接收到的对应的流表项传输报文。这样,在完成报文传输的同时,降低了报文丢包的可能性,提高了报文传输的成功率。
本发明的实施例还提供一种数据通信的方法,如图2所示,该方法包括:
201、节点从控制设备获取流表项。
202、节点确定是否执行流表项,若不执行流表项,则等待控制设备下发激活流表项消息。
203、节点接收控制设备发送的激活流表项消息,执行流表项,使报文按照流表项对应的操作进行传输。
本发明的实施例提供一种数据通信的方法,首先节点从控制设备获取流表项,然后节点确定是否执行流表项,若不执行流表项,则等待控制设备下发激活流表项消息,最后节点接收控制设备发送的激活流表项消息,执行流表项,使报文按照流表项对应的操作进行传输。这样,在完成报文传输的同时,降低了报文丢包的可能性,提高了报文传输的成功率。
为了使本领域技术人员能够更清楚地理解本发明实施例提供的技术方案,下面通过具体的实施例,对本发明的实施例提供的数据通信的方法进行详细说明,在本实施例中节点以交换机为例,如图3所示,该方法包括:
301、控制设备获取报文传输路径。
示例性的,如图4所示,假设主机1要与主机2进行通信,主机1发出的报文到达与它直接相连的交换机(Switch)A,交换机A在它的流表中对报文进行匹配,没有匹配到对应的流表项,因此,交换机A通过Open Flow协议将报文上报给控制设备,控制设备将该事件上报给对应的应用程序进行处理,控制设备判断该报文是一个由主机1发往主机2的报文,因此,控制设备根据网络视图计算出一条从主机1到主机2的报文传输路径:主机1->交换机A->交换机B->交换机C->交换机E->主机2。
302、控制设备同时向报文传输路径上的各个节点下发对应的流表项。
示例性的,控制设备可以是包括多个控制节点的控制设备,报文传输路径上的各个节点是由对应的控制节点控制的,在获取报文传输路径后,各个控制节点向其控制的节点下发对应的流表项。
示例性的,如图4所示,主机1到主机2的报文传输路径为主机1->交换机A->交换机B->交换机C->交换机E->主机2,控制设备包括控制节点(Controller)1和控制节点2,交换机A和交换机B由控制节点1控制,交换机C和交换机E由控制节点2控制,则控制节点1向交换机A和交换机B下发对应的流表项,控制节点2向交换机C和交换机E下发对应的流表项。
303、控制设备指示报文传输路径上的首节点不执行接收到的流表项,指示报文传输路径上除首节点外的其他节点执行接收到的流表项。
具体的,控制设备给除首节点以外的其他节点下发可以直接执行的流表项。
控制设备可以向首节点下发的流表项中携带标识字段,该标识字段为未激活,用于指示所述首节点不执行接收到的流表项并将匹配到该流表项的报文缓存在首节点的缓存队列中。
举例说明,可以在流表项中添加一个字段:“Active”,修改后流表项如下表所示:
Match Fields | Conuters | Actions | Active |
“Active”为布尔型(初始值为false),用来标识流表项所处的状态。当“Active”值为“true”时,流表项处于激活状态,交换机对流表项进行正常的匹配流程并且对匹配到的报文执行相应的Actions;当“Active”值为“false”时,当报文匹配到该流表项后,不立即执行该流表项的Actions,而是将报文推送到交换机本地的缓存队列缓存起来。
或者,具体的,还可以向首节点下发的流表项中携带指示信息,该指示信息用于指示首节点将接收到的流表项插入去激活流表并将匹配到该流表项的报文缓存在首节点的缓存队列中,该缓存队列为去激活流表对应的缓存队列。
举例说明,还可以不修改流表项结构,使用Open Flow协议的现有流表项,为了区分流表项的状态,增加一个特殊的流表,叫去激活(Inactive)流表。该流表中匹配到的流表项不执行相应的Actions,而是将匹配的报文推送到交换机本地的缓存队列缓存起来。在修改流表项的消息中,还要指明流表项是插入普通流表还是插入Inactive流表,在交换机中,不同的流表使用不同的缓存队列。例如在Open Flow协议中,可以用修改流表项的匹配字段的ofp_flow_mod中的command字段来指定。标准中的command字段有如下几个值:
可以再加入一个值:OFPFC_ADD_INACTIVE,当ofp_flow_mod消息中的command字段为该值时,将流表项加入Inactive流表,否则,按正常流程处理。
304、节点接收到对应流表项后向控制设备发送反馈响应消息。
示例性的,交换机接收到对应的流表项后向控制设备发送一个反馈响应消息,该响应消息可以是Ack消息,该Ack消息用于一个交换机在成功收到控制节点下发的流表项后向控制节点反馈此次流表项下发是成功的。
305、控制设备判断同时向报文传输路径上的各个节点下发对应的流表项的操作是否成功。若各个节点未能成功接收对应的流表项则确定操作失败并执行306,若各个节点成功接收对应的流表项则确定操作成功并执行307。
示例性的,控制设备判断在预设时间内是否收到各个交换机反馈的Ack消息;
若控制设备在预设时间内收到各个交换机反馈的Ack消息,则认为各个交换机成功接收对应的流表项;
若控制设备在预设时间内未收到各个节点中任一节点反馈的Ack消息,则认为各个交换机未成功接收对应的流表项。
其中,预设时间是根据需要设定的。
需要说明的是,控制设备进行的每次操作,如建立转发路径、向交换机下发流表项等,都有一个与该操作唯一对应的标识符。该标识符可以由控制设备生成后下发给各控制节点,也可以由控制节点根据操作的统一信息来生成。分布式协调系统,比较常用的是Zookeeper(针对大型分布式系统的可靠协调系统)。分布式协调系统的作用是协调和同步分布式系统中各个控制节点之间的状态,分布式协调系统中的任何节点都可以向分布式协调系统中写入信息,同时这些信息可以被其它节点读取,并且节点可以订阅事件,当有信息被写入或修改时,订阅者将会得到通知。在控制节点向交换机发送消息前,首先它要到分布式协调系统中根据操作标识符查询一下是否有该操作的信息,如果没有,则为这个操作新建一条信息,如果有,则该节点订阅操作信息的变化事件,当有其它控制节点更改该操作信息时,订阅此事件的控制节点将收到通知。
其中,与操作相对应的信息中应该包含如下内容:操作失败标志(布尔型,初始值为false)、本操作总的控制节点数(整型,初始值根据实际情况而定)、已经操作成功的控制节点数(整型,初始值为0)。
另外,如果控制设备包括多个控制节点,各个节点是通过多个控制节点控制的,则判断各个节点是否成功接收对应的流表项可以具体包括:
若一个控制节点在预设时间内收到该控制节点所控制的所有节点反馈的响应消息,则将操作成功的控制节点数加1;
将操作成功的节点数的增量与控制各个节点的控制节点总数比较,若操作成功的控制节点数的增量与控制节点总数相等,则确定在预设时间内收到各个节点反馈的响应消息;否则,确定在预设时间内未收到各个节点反馈的响应消息。
示例性的,如图4所示,主机1与主机2的报文传输路径为主机1->交换机A->交换机B->交换机C->交换机E->主机2,交换机A和交换机B是由控制节点1管理的,交换机C和交换机E是由控制节点2管理的,如果控制节点2向其控制的交换机C和交换机E下发流表项成功(即收到交换机C和交换机E反馈的Ack消息),则控制节点2将分布式协调系统中对应的操作信息中的已成功控制节点数加1,控制节点1通过订阅该操作信息,收到成功的控制节点数变化的通知后,判断操作已成功的控制节点数目与报文传输路径上下发流表项的控制节点总数是否相等,如果相等,则说明所有节点的流表项均已下发成功。
306、控制设备指示各个节点中已成功接收对应流表项的节点删除接收到的流表项,并执行301-305,直至各个节点全部成功接收到对应的流表项。
具体的,报文传输路径上任意一个节点未能成功接收对应的流表项,该控制节点向其他已成功接收对应流表项的节点发送删除流表项的消息,指示已成功接收对应流表项的节点删除接收到的流表项。
示例性的,如图4所示,主机1与主机2的报文传输路径为主机1->交换机A->交换机B->交换机C->交换机E->主机2,交换机A和交换机B是由控制节点1管理的,交换机C和交换机E是由控制节点2管理的,如果仅交换机C在预设时间内未能向控制节点2反馈Ack消息,则认为控制节点2本次向交换机C和交换机E操作失败,控制节点2向交换机E下发删除流表项的消息指示交换机E将已接收的流表项删除。同时,控制节点2修改分布式协调系统中本次下发流表项操作对应的消息中的失败标识为真,控制节点1订阅了本次操作对应的信息的变化事件并且会收到通知,控制节点1收到通知后读取失败标识,判断其为真后,向交换机A和交换机B下发删除流表项信息,交换机A和交换机B将接收到的流表项删除。
307、控制设备向首节点下发激活流表项消息,指示首节点执行接收到的流表项,以便各个节点按照接收到的对应的流表项传输报文。
示例性的,假设各个节点全部成功接收到对应的流表项,
如果是在对首节点下发的流表项添加有标识字段“Active”的情况,那么控制首节点的控制节点向首节点下发激活流表项消息,激活消息中包含“Match Fields”和“Actions”字段,与待激活的流表项的对应字段具有相同的值,用于索引待激活流表项,首节点索引到待激活流表项之后,将其“Active”值改为“true”,并找到相应队列,将缓冲在队列中的报文按顺序执行流表项中的Actions以便各个节点按照接收到的对应的流表项传输报文;
如果是将首节点接收的流表项插入去激活流表的情况,那么控制首节点的控制节点向首节点下发激活流表项消息,首节点收到激活流表项消息后,将待激活的流表项从Inactive流表移至普通流表内,并将缓存队列中的报文执行相应的Actions以便各个节点按照接收到的对应的流表项传输报文。
本发明的实施例提供一种数据通信的方法,首先获取报文传输路径,然后执行同时向报文传输路径上的各个节点下发对应的流表项的操作;并指示报文传输路径上的首节点不执行接收到的流表项并将匹配到该流表项的报文缓存在首节点中,指示报文传输路径上除首节点外的其他节点执行接收到的流表项;再判断同时向报文传输路径上的各个节点下发对应的流表项的操作是否成功;若各个节点中任一节点未能成功接收对应流表项,则确定操作失败,指示各个节点中已成功接收对应流表项的节点将接收到的流表项删除,并再次执行获取报文传输路径的步骤、同时向各个节点下发流表项的步骤以及判断下发是否成功的步骤,直至各个节点全部成功接收到对应的流表项;若各个节点全部成功接收到对应的流表项,则确定操作成功,向首节点下发激活流表项消息,指示首节点执行接收到的流表项,以便各个节点按照接收到的对应的流表项传输报文。这样,在完成报文传输的同时,降低了报文丢包的可能性,提高了报文传输的成功率。
本发明的实施例提供一种控制设备00,如图5所示,该设备00包括:
第一获取单元10,用于获取报文传输路径。
下发单元20,用于执行同时向报文传输路径上的各个节点下发对应的流表项的操作;并指示报文传输路径上的首节点不执行接收到的流表项,指示报文传输路径上除首节点外的其他节点执行接收到的流表项。
判断单元30,用于判断同时向报文传输路径上的各个节点下发对应的流表项的操作是否成功。
第一删除单元40,用于若各个节点中任一节点未能成功接收对应流表项,则确定操作失败,指示各个节点中已成功接收对应流表项的节点将接收到的流表项删除。
第一激活单元50,用于若各个节点全部成功接收到对应的流表项,则确定操作成功,向首节点下发激活流表项消息,指示首节点执行接收到的流表项,以便各个节点按照接收到的对应的流表项传输报文。
可选的,下发单元20可以具体用于:
在向首节点下发的流表项中携带标识字段,该标识字段为未激活,用于指示首节点不执行接收到的流表项并将匹配到该流表项的报文缓存在首节点的缓存队列中;或
在向首节点下发的流表项中携带指示信息,该指示信息用于指示首节点将接收到的流表项插入去激活流表并将匹配到该流表项的报文缓存在首节点的缓存队列中,其中该缓存队列为去激活流表对应的缓存队列。
可选的,判断单元30具体用于:
判断在预设时间内是否收到各个节点反馈的响应消息;
若在预设时间内收到各个节点反馈的响应消息,则确定各个节点成功接收对应的流表项并确定操作成功;
若在预设时间内未收到各个节点中任一节点反馈的响应消息,则确定各个节点未成功接收所述对应的流表项并确定操作失败。
可选的,若同时向报文传输路径上的各个节点下发对应的流表项的操作是通过控制设备中的至少一个控制节点执行的,则为该操作分配有对应的操作信息,操作信息包括:操作标识符、操作失败标识、至少一个控制节点的控制节点总数以及操作成功的节点数;
其中,操作信息是由控制设备中的应用程序生成后分配给至少一个控制节点的,或者由至少一个控制节点生成的;至少一个控制节点中的任意一个控制节点具有对操作信息进行修改、读取、订阅的权限。
可选的,若各个节点是通过多个控制节点控制的,判断单元30还可以具体用于:
若一个控制节点在预设时间内收到该一个控制节点所控制的所有节点反馈的响应消息,则将操作成功的节点数加1;
将操作成功的节点数的增量与控制各个节点的控制节点总数比较,若操作成功的节点数的增量与控制节点总数相等,则确定在预设时间内收到各个节点反馈的响应消息;否则,确定在预设时间内未收到各个节点反馈的响应消息。
可选的,第一删除单元40具体用于:
若各个节点中任一节点未能成功接收对应流表项,则向各个节点中已成功接收对应流表项的节点发送删除消息,指示各个节点中已成功接收对应流表项的节点删除收到的流表项。
可选的,若各个节点是通过多个控制节点控制的,第一删除单元40还可以具体用于:
若第一节点未能成功接收对应流表项,第一节点未能成功接收所述对应流表项,第一节点为各个节点中的任一节点,则接受第一节点的控制节点对操作失败标识的修改,操作失败标识用于标记本次流表项下发流程是否失败;
向多个控制节点中除第一节点的控制节点的其他控制节点发送通知消息,通知消息包括修改后的操作失败标识,用于通知其他控制节点本次流表项下发流程失败,使多个控制节点分别向各个节点中已经接收到流表项的节点发送删除消息,指示各个节点中已成功接收流表项的节点删除收到的流表项。
本发明的实施例提供一种控制设备,首先获取报文传输路径,然后执行同时向报文传输路径上的各个节点下发对应的流表项的操作;并指示报文传输路径上的首节点不执行接收到的流表项并将匹配到该流表项的报文缓存在首节点中,指示报文传输路径上除首节点外的其他节点执行接收到的流表项;再判断同时向报文传输路径上的各个节点下发对应的流表项的操作是否成功;若各个节点中任一节点未能成功接收对应流表项,则确定操作失败,指示各个节点中已成功接收对应流表项的节点将接收到的流表项删除,并再次执行获取报文传输路径的步骤、同时向各个节点下发流表项的步骤以及判断下发是否成功的步骤,直至各个节点全部成功接收到对应的流表项;若各个节点全部成功接收到对应的流表项,则确定操作成功,向首节点下发激活流表项消息,指示首节点执行接收到的流表项,以便各个节点按照接收到的对应的流表项传输报文。这样,在完成报文传输的同时,降低了报文丢包的可能性,提高了报文传输的成功率。
本发明的实施例还提供一种节点60,如图6所示,该节点60包括:
第二获取单元61,用于从控制设备获取流表项。
确定单元62,用于确定是否执行流表项,若不执行流表项,则等待控制设备下发激活流表项消息。
第二激活单元63,用于接收控制设备发送的激活流表项消息,执行流表项,使报文按照流表项对应的操作进行传输。
可选的,确定单元62可以具体用于:
若从控制设备获取的流表项中携带的标识字段为激活,则执行流表项;
若从控制设备获取的流表项中携带的标识字段为未激活,则不执行流表项并将匹配到该流表项的报文缓存在缓存队列中;或者
若从控制设备获取的流表项中携带的指示信息指示首节点将接收到的流表项插入去激活流表,则将接收到的流表项插入去激活流表,不执行流表项并将匹配到该流表项的报文缓存在缓存队列中,其中该缓存队列为去激活流表对应的缓存队列。
可选的,如图7所示,节点60还可以包括:
第二删除单元64,用于在从控制设备获取流表项后,接收控制设备下发的删除消息,将已获取的流表项删除,删除消息是由控制设备确定节点所在的报文传输路径中各个节点的至少一个节点未成功接收对应的流表项后发送的。
本发明的实施例提供一种节点,首先节点从控制设备获取流表项,然后节点确定是否执行流表项,若不执行流表项,则缓存匹配到该流表项的报文并等待控制设备下发激活流表项消息,最后节点接收控制设备发送的激活流表项消息,执行流表项,使报文按照流表项对应的操作进行传输。这样,在完成报文传输的同时,降低了报文丢包的可能性,提高了报文传输的成功率。
本发明实施例还提供了一种控制设备80,如图8所示,该设备80包括:总线84;以及连接到总线84的处理器81、存储器82和接口83,其中该接口83用于通信;该存储器82用于存储指令821,处理器81执行指令821用于:
获取报文传输路径;
执行同时向报文传输路径上的各个节点下发对应的流表项的操作;并指示报文传输路径上的首节点不执行接收到的流表项,指示报文传输路径上除首节点外的其他节点执行接收到的流表项;
判断同时向报文传输路径上的各个节点下发对应的流表项的操作是否成功;
若各个节点中任一节点未能成功接收对应流表项,则确定操作失败,指示各个节点中已成功接收对应流表项的节点删除接收到的流表项,并再次执行获取报文传输路径的步骤、同时向各个节点下发流表项的步骤以及判断下发是否成功的步骤,直至各个节点全部成功接收到对应的流表项;
若各个节点全部成功接收到对应的流表项,则确定操作成功,向首节点下发激活流表项消息,指示首节点执行接收到的流表项,以便各个节点按照接收到的对应的流表项传输报文。
可选的,处理器81执行指令821用于指示报文传输路径上的首节点不执行流表项,具体可以包括:
在向首节点下发的流表项中携带标识字段,标识字段为未激活,用于指示首节点不执行接收到的流表项并将匹配到该流表项的报文缓存在首节点的缓存队列中;
或,在向首节点下发的流表项中携带指示信息,指示信息用于指示首节点将接收到的流表项插入去激活流表并将匹配到该流表项的报文缓存在首节点的缓存队列中,其中该缓存队列为去激活流表对应的缓存队列。
可选的,处理器81执行指令821用于判断同时向报文传输路径上的各个节点下发对应的流表项的操作是否成功,具体可以包括:
判断在预设时间内是否收到各个节点反馈的响应消息;
若在预设时间内收到各个节点反馈的响应消息,则各个节点成功接收对应的流表项并确定操作成功;
若在预设时间内未收到各个节点中任一节点反馈的响应消息,则确定各个节点未成功接收对应的流表项并确定操作失败。
可选的,若同时向报文传输路径上的各个节点下发对应的流表项的操作是通过控制设备中的至少一个控制节点执行的,则为该操作分配有对应的操作信息,操作信息包括:操作标识符、操作失败标识、至少一个控制节点的控制节点总数以及操作成功的节点数;
其中,操作信息是由控制设备中的应用程序生成后分配给至少一个控制节点的,或者由至少一个控制节点生成的;至少一个控制节点中的任意一个控制节点具有对操作信息进行修改、读取、订阅的权限。
可选的,若各个节点是通过多个控制节点控制的,处理器81执行指令821用于判断同时向报文传输路径上的各个节点下发对应的流表项的操作是否成功,具体可以包括:
若一个控制节点在预设时间内收到一个控制节点所控制的所有节点反馈的响应消息,则将操作成功的节点数加1;
将操作成功的节点数的增量与控制各个节点的控制节点总数比较,若操作成功的节点数的增量与控制节点总数相等,则确定在预设时间内收到各个节点反馈的响应消息;否则,确定在预设时间内未收到各个节点反馈的响应消息。
可选的,处理器81执行指令821用于若各个节点中任一节点未能成功接收对应流表项,则确定操作失败,指示各个节点中已成功接收对应流表项的节点将接收到的流表项删除,具体可以包括:
若各个节点中任一节点未能成功接收对应流表项,则向各个节点中已成功接收对应流表项的节点发送删除消息,指示各个节点中已成功接收对应流表项的节点删除收到的流表项。
可选的,若各个节点是通过多个控制节点控制的,处理器81执行指令821用于若各个节点中任一节点未能成功接收对应流表项,则确定操作失败,指示各个节点中已成功接收对应流表项的节点删除接收到的流表项,具体可以包括:
若第一节点未能成功接收对应流表项,第一节点为各个节点中的任一节点,则接受第一节点的控制节点对操作失败标识的修改,操作失败标识用于标记本次流表项下发流程是否失败;
向多个控制节点中除第一节点的控制节点的其他控制节点发送通知消息,通知消息包括修改后的操作失败标识,用于通知其他控制节点本次流表项下发流程失败,使多个控制节点分别向各个节点中已经接收到流表项的节点发送删除消息,指示各个节点中已成功接收流表项的节点将收到的流表项删除。
本发明的实施例提供一种控制设备,首先获取报文传输路径,然后执行同时向报文传输路径上的各个节点下发对应的流表项的操作;并指示报文传输路径上的首节点不执行接收到的流表项并将匹配到该流表项的报文缓存在首节点中,指示报文传输路径上除首节点外的其他节点执行接收到的流表项;再判断同时向报文传输路径上的各个节点下发对应的流表项的操作是否成功;若各个节点中任一节点未能成功接收对应流表项,则确定操作失败,指示各个节点中已成功接收对应流表项的节点将接收到的流表项删除,并再次执行获取报文传输路径的步骤、同时向各个节点下发流表项的步骤以及判断下发是否成功的步骤,直至各个节点全部成功接收到对应的流表项;若各个节点全部成功接收到对应的流表项,则确定操作成功,向首节点下发激活流表项消息,指示首节点执行接收到的流表项,以便各个节点按照接收到的对应的流表项传输报文。这样,在完成报文传输的同时,降低了报文丢包的可能性,提高了报文传输的成功率。
本发明实施例还提供了一种节点90,如图9所示,该节点90包括:总线94;以及连接到总线94的处理器91、存储器92和接口93,其中该接口93用于通信;该存储器92用于存储指令921,处理器91执行指令921用于:
从控制设备获取流表项;
确定是否执行流表项,若不执行流表项,则等待控制设备下发激活流表项消息;
接收控制设备发送的激活流表项消息,执行流表项,使报文按照流表项对应的操作进行传输。
可选的,处理器91执行指令921用于确定是否执行流表项,具体可以包括:
若从控制设备获取的流表项中携带的标识字段为激活,则执行流表项;
若从控制设备获取的流表项中携带的标识字段为未激活,则不执行流表项并将匹配到该流表项的报文缓存在缓存队列中;或者
若从控制设备获取的流表项中携带的指示信息指示首节点将接收到的流表项插入去激活流表,则将接收到的流表项插入去激活流表,不执行流表项并将匹配到该流表项的报文缓存在缓存队列中,其中该缓存队列为去激活流表对应的缓存队列。
可选的,在从控制设备获取流表项后,处理器91执行指令921还用于:
接收控制设备下发的删除消息,将已获取的流表项删除,删除消息是由控制设备确定节点所在的报文传输路径中各个节点的至少一个节点未成功接收对应的流表项后发送的。
本发明的实施例提供一种节点,首先节点从控制设备获取流表项,然后节点确定是否执行流表项,若不执行流表项,则缓存匹配到该流表项的报文并等待控制设备下发激活流表项消息,最后节点接收控制设备发送的激活流表项消息,执行流表项,使报文按照流表项对应的操作进行传输。这样,在完成报文传输的同时,降低了报文丢包的可能性,提高了报文传输的成功率。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的区分,仅仅为一种逻辑功能区分,实际实现时可以有另外的区分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (20)
1.一种数据通信的方法,其特征在于,包括:
获取报文传输路径;
执行同时向所述报文传输路径上的各个节点下发对应的流表项的操作;并指示所述报文传输路径上的首节点不执行接收到的流表项,指示所述报文传输路径上除首节点外的其他节点执行接收到的流表项;
判断所述同时向所述报文传输路径上的各个节点下发对应的流表项的操作是否成功;
若所述各个节点中任一节点未能成功接收所述对应流表项,则确定所述操作失败,指示所述各个节点中已成功接收所述对应流表项的节点删除接收到的流表项,并再次执行获取报文传输路径的步骤、同时向各个节点下发流表项的步骤以及判断下发是否成功的步骤,直至所述各个节点全部成功接收到所述对应的流表项;
若所述各个节点全部成功接收到所述对应的流表项,则确定所述操作成功,向所述首节点下发激活流表项消息,指示所述首节点执行接收到的流表项,以便所述各个节点按照接收到的所述对应的流表项传输报文。
2.根据权利要求1所述的方法,其特征在于,所述指示所述报文传输路径上的首节点不执行流表项包括:
在向所述首节点下发的流表项中携带标识字段,所述标识字段为未激活,用于指示所述首节点不执行接收到的流表项并将匹配到所述流表项的报文缓存在所述首节点的缓存队列中;或
在向所述首节点下发的流表项中携带指示信息,所述指示信息用于指示所述首节点将接收到的流表项插入去激活流表,并将匹配到所述流表项的报文缓存在所述首节点的缓存队列中,其中所述缓存队列为所述去激活流表对应的缓存队列。
3.根据权利要求1所述的方法,其特征在于,所述判断所述同时向所述报文传输路径上的各个节点下发对应的流表项的操作是否成功包括:
判断在预设时间内是否收到所述各个节点反馈的响应消息;
若在所述预设时间内收到所述各个节点反馈的响应消息,则所述各个节点成功接收所述对应的流表项并确定所述操作成功;
若在所述预设时间内未收到所述各个节点中任一节点反馈的响应消息,则所述各个节点未成功接收所述对应的流表项并确定所述操作失败。
4.根据权利要求3所述的方法,其特征在于,若所述操作是通过控制设备中的至少一个控制节点执行的,则为所述操作分配有对应的操作信息,所述操作信息包括:操作标识符、操作失败标识、所述至少一个控制节点的控制节点总数以及操作成功的节点数;
其中,所述操作信息是由所述控制设备中的应用程序生成后分配给所述至少一个控制节点的,或者由所述至少一个控制节点生成的;所述至少一个控制节点中的任意一个控制节点具有对所述操作信息进行修改、读取、订阅的权限。
5.根据权利要求4所述的方法,其特征在于,若所述各个节点是通过多个控制节点控制的,所述判断在预设时间内是否收到所述各个节点反馈的响应消息包括:
若一个控制节点在预设时间内收到所述一个控制节点所控制的所有节点反馈的响应消息,则将所述操作成功的节点数加1;
将所述操作成功的节点数的增量与控制所述各个节点的控制节点总数比较,若所述操作成功的节点数的增量与所述控制节点总数相等,则确定在预设时间内收到所述各个节点反馈的响应消息;否则,确定在预设时间内未收到所述各个节点反馈的响应消息。
6.根据权利要求1所述的方法,其特征在于,所述若所述各个节点中任一节点未能成功接收所述对应流表项,则确定所述操作失败,指示所述各个节点中已成功接收所述对应流表项的节点删除接收到的流表项包括:
若所述各个节点中任一节点未能成功接收所述对应流表项,则向所述各个节点中已成功接收所述对应流表项的节点发送删除消息,指示所述各个节点中已成功接收所述对应流表项的节点删除收到的流表项。
7.根据权利要求1所述的方法,其特征在于,若所述各个节点是通过多个控制节点控制的,所述若所述各个节点中任一节点未能成功接收所述对应流表项,则确定所述操作失败,指示所述各个节点中已成功接收所述对应流表项的节点删除接收到的流表项包括:
若第一节点未能成功接收所述对应流表项,所述第一节点为所述各个节点中的任一节点,则接受所述第一节点的控制节点对所述操作失败标识的修改,所述操作失败标识用于标记本次流表项下发流程是否失败;
向所述多个控制节点中除所述第一节点的控制节点的其他控制节点发送通知消息,所述通知消息包括修改后的操作失败标识,用于通知所述其他控制节点本次流表项下发流程失败,使所述多个控制节点分别向所述各个节点中已经接收到流表项的节点发送删除消息,指示所述各个节点中已成功接收流表项的节点删除收到的流表项。
8.一种数据通信的方法,其特征在于,包括:
从控制设备获取流表项;
确定是否执行所述流表项,若不执行所述流表项,则等待所述控制设备下发激活流表项消息,所述激活流表项消息是在所有节点均成功接收到对应的流表项后发出的;
接收所述控制设备发送的所述激活流表项消息,执行所述流表项,使报文按照所述流表项对应的操作进行传输。
9.根据权利要求8所述的方法,其特征在于,所述确定是否执行所述流表项包括:
若从控制设备获取的流表项中携带的标识字段为激活,则执行所述流表项;
若从控制设备获取的流表项中携带的标识字段为未激活,则不执行所述流表项并将匹配到所述流表项的报文缓存在缓存队列中;或者
若从控制设备获取的流表项中携带的指示信息指示节点将接收到的流表项插入去激活流表,则将接收到的流表项插入去激活流表,不执行所述流表项并将匹配到所述流表项的报文缓存在缓存队列中,其中所述缓存队列为所述去激活流表对应的缓存队列。
10.根据权利要求9所述的方法,其特征在于,在从所述控制设备获取流表项后,所述方法还包括:
接收所述控制设备下发的删除消息,将已获取的所述流表项删除,所述删除消息是由所述控制设备确定所述节点所在的报文传输路径中各个节点的至少一个节点未成功接收对应的流表项后发送的。
11.一种控制设备,其特征在于,包括:
第一获取单元,用于获取报文传输路径;
下发单元,用于执行同时向所述报文传输路径上的各个节点下发对应的流表项的操作;并指示所述报文传输路径上的首节点不执行接收到的流表项,指示所述报文传输路径上除首节点外的其他节点执行接收到的流表项;
判断单元,用于判断所述同时向所述报文传输路径上的各个节点下发对应的流表项的操作是否成功;
第一删除单元,用于若所述各个节点中任一节点未能成功接收所述对应流表项,则确定所述操作失败,指示所述各个节点中已成功接收所述对应流表项的节点将接收到的流表项删除;
第一激活单元,用于若所述各个节点全部成功接收到所述对应的流表项,则确定所述操作成功,向所述首节点下发激活流表项消息,指示所述首节点执行接收到的流表项,以便所述各个节点按照接收到的所述对应的流表项传输报文。
12.根据权利要求11所述的设备,其特征在于,所述下发单元具体用于:
在向所述首节点下发的流表项中携带标识字段,所述标识字段为未激活,用于指示所述首节点不执行接收到的流表项并将匹配到所述流表项的报文缓存在所述首节点的缓存队列中;或
在向所述首节点下发的流表项中携带指示信息,所述指示信息用于指示所述首节点将接收到的流表项插入去激活流表并将匹配到所述流表项的报文缓存在所述首节点的缓存队列中,其中对不同的流表使用不同的缓存队列。
13.根据权利要求11所述的设备,其特征在于,所述判断单元具体用于:
判断在预设时间内是否收到所述各个节点反馈的响应消息;
若在所述预设时间内收到所述各个节点反馈的响应消息,则确定所述各个节点成功接收所述对应的流表项并确定所述操作成功;
若在所述预设时间内未收到所述各个节点中任一节点反馈的响应消息,则确定所述各个节点未成功接收所述对应的流表项并确定所述操作失败。
14.根据权利要求13所述的设备,其特征在于,若所述操作是通过控制设备中的至少一个控制节点执行的,则为所述操作分配有对应的操作信息,所述操作信息包括:操作标识符、操作失败标识、所述至少一个控制节点的控制节点总数以及操作成功的节点数;
其中,所述操作信息是由所述控制设备中的应用程序生成后分配给所述至少一个控制节点的,或者由所述至少一个控制节点生成的;所述至少一个控制节点中的任意一个控制节点具有对所述操作信息进行修改、读取、订阅的权限。
15.根据权利要求14所述的设备,其特征在于,若所述各个节点是通过多个控制节点控制的,所述判断单元还具体用于:
若一个控制节点在预设时间内收到所述一个控制节点所控制的所有节点反馈的响应消息,则将所述操作成功的节点数加1;
将所述操作成功的节点数的增量与控制所述各个节点的控制节点总数比较,若所述操作成功的节点数的增量与所述控制节点总数相等,则确定在预设时间内收到所述各个节点反馈的响应消息;否则,确定在预设时间内未收到所述各个节点反馈的响应消息。
16.根据权利要求11所述的设备,其特征在于,所述第一删除单元具体用于:
若所述各个节点中任一节点未能成功接收所述对应流表项,则向所述各个节点中已成功接收所述对应流表项的节点发送删除消息,指示所述各个节点中已成功接收所述对应流表项的节点删除收到的流表项。
17.根据权利要求11所述的设备,其特征在于,若所述各个节点是通过多个控制节点控制的,所述第一删除单元还具体用于:
若第一节点未能成功接收所述对应流表项,所述第一节点为所述各个节点中的任一节点,则接受所述第一节点的控制节点对所述操作失败标识的修改,所述操作失败标识用于标记本次流表项下发流程是否失败;
向所述多个控制节点中除所述第一节点的控制节点的其他控制节点发送通知消息,所述通知消息包括修改后的操作失败标识,用于通知所述其他控制节点本次流表项下发流程失败,使所述多个控制节点分别向所述各个节点中已经接收到流表项的节点发送删除消息,指示所述各个节点中已成功接收流表项的节点删除收到的流表项。
18.一种节点,其特征在于,包括:
第二获取单元,用于从控制设备获取流表项;
确定单元,用于确定是否执行所述流表项,若不执行所述流表项,则等待所述控制设备下发激活流表项消息,所述激活流表项消息是在所有节点均成功接收到对应的流表项后发出的;
第二激活单元,用于接收所述控制设备发送的所述激活流表项消息,执行所述流表项,使报文按照所述流表项对应的操作进行传输。
19.根据权利要求18所述的节点,其特征在于,所述确定单元具体用于:
若从控制设备获取的流表项中携带的标识字段为激活,则执行所述流表项;
若从控制设备获取的流表项中携带的标识字段为未激活,则不执行所述流表项并将匹配到所述流表项的报文缓存在缓存队列中;或者
若从控制设备获取的流表项中携带的指示信息指示所述节点将接收到的流表项插入去激活流表,则将接收到的流表项插入去激活流表,不执行所述流表项并将匹配到所述流表项的报文缓存在缓存队列中,其中所述缓存队列为所述去激活流表对应的缓存队列。
20.根据权利要求18或19所述的节点,其特征在于,所述节点还可以包括:
第二删除单元,用于在从所述控制设备获取流表项后,接收所述控制设备下发的删除消息,将已获取的所述流表项删除,所述删除消息是由所述控制设备确定所述节点所在的报文传输路径中各个节点的至少一个节点未成功接收对应的流表项后发送的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310687651.8A CN104717139B (zh) | 2013-12-12 | 2013-12-12 | 一种数据通信的方法、控制设备以及节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310687651.8A CN104717139B (zh) | 2013-12-12 | 2013-12-12 | 一种数据通信的方法、控制设备以及节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104717139A CN104717139A (zh) | 2015-06-17 |
CN104717139B true CN104717139B (zh) | 2017-11-24 |
Family
ID=53416119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310687651.8A Active CN104717139B (zh) | 2013-12-12 | 2013-12-12 | 一种数据通信的方法、控制设备以及节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104717139B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105357119A (zh) * | 2015-10-28 | 2016-02-24 | 蓝盾信息安全技术股份有限公司 | 一种sdn网络中准确转发数据包的方法 |
CN111030868B (zh) * | 2019-12-19 | 2023-12-05 | 紫光云(南京)数字技术有限公司 | 一种弹性公网ip下发设备失败的解决方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005057408A (ja) * | 2003-08-01 | 2005-03-03 | Nippon Telegr & Teleph Corp <Ntt> | Upc装置 |
CN101127691A (zh) * | 2006-08-17 | 2008-02-20 | 王玉鹏 | 一种在网络处理器上实现的基于流的策略路由的方法 |
CN103200112A (zh) * | 2012-01-06 | 2013-07-10 | 北京奇策科技有限公司 | 一种计算机网络tcp流量控制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7580355B2 (en) * | 2003-08-25 | 2009-08-25 | Integrated Device Technology, Inc. | Method of performing weighted round-robin queue scheduling using a dynamic link list and structure for implementing same |
-
2013
- 2013-12-12 CN CN201310687651.8A patent/CN104717139B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005057408A (ja) * | 2003-08-01 | 2005-03-03 | Nippon Telegr & Teleph Corp <Ntt> | Upc装置 |
CN101127691A (zh) * | 2006-08-17 | 2008-02-20 | 王玉鹏 | 一种在网络处理器上实现的基于流的策略路由的方法 |
CN103200112A (zh) * | 2012-01-06 | 2013-07-10 | 北京奇策科技有限公司 | 一种计算机网络tcp流量控制方法 |
Non-Patent Citations (1)
Title |
---|
OpenFlow交换机模型及关键技术研究与实现;韦兴军;《中国优秀硕士论文电子期刊网》;20100515;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104717139A (zh) | 2015-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103155497B (zh) | 通信系统、控制设备、节点、处理规则设置方法以及程序 | |
CN104092718B (zh) | 分布式系统及分布式系统中配置信息的更新方法 | |
CN103812823B (zh) | 虚拟机热迁移时配置信息迁移的方法、设备及系统 | |
CN102197627B (zh) | 组播流量收敛的改善 | |
JP5715185B2 (ja) | パケット処理方法、装置及びシステム | |
CN101494572B (zh) | 设备告警信息远程管理方法及系统 | |
CN105227385B (zh) | 一种故障处理的方法及系统 | |
CN103795570B (zh) | 环形拓扑的堆叠交换机系统的单播报文恢复方法及装置 | |
CN104852867A (zh) | 数据包转发方法、装置及系统 | |
CN101009628A (zh) | 一种交换网络拓扑变化时组播表项更新的方法及装置 | |
CN105933342A (zh) | 一种视频监控数据的传输方法及装置 | |
CN108075936A (zh) | VxLAN探测方法及装置 | |
CN101827032A (zh) | 一种收敛二层组播网络的方法及设备 | |
CN110011840A (zh) | 控制器的状态处理方法、装置和控制器 | |
CN104717139B (zh) | 一种数据通信的方法、控制设备以及节点 | |
CN106210123A (zh) | 一个多节点的软件定义网络控制器系统 | |
CN104135379B (zh) | 基于OpenFlow协议的端口控制方法及装置 | |
CN106911769A (zh) | 云平台路由数据的处理方法和云平台的物理服务器 | |
CN108566298A (zh) | 一种链路故障处理方法、交换机和链路故障处理系统 | |
CN102142931B (zh) | 一种防止e-trunk丢包的方法、装置和系统 | |
CN104507059B (zh) | 一种彩信发送管理方法和彩信发送管理装置 | |
CN103618630B (zh) | 一种基于双上行链路的数据安全传输方法及设备 | |
CN103327643B (zh) | 微波网元及微波网元间的信息传输方法、装置 | |
TW201023563A (en) | Processing method of ring network redundancy checking | |
CN101102231A (zh) | 一种ppp链路路由设备的自动发现方法和装置 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220210 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |