流表更新方法和流表更新装置制造方法
【专利摘要】流表更新方法和流表更新装置。根据本发明,提出了一种在多个网络节点中将基于旧规则的流表更新为基于新规则的流表的流表更新方法,包括:从基于旧规则的流表和基于新规则的流表中均使用的至少一个匹配域中确定特定匹配域;选定特定匹配域中的未使用地址代替该特定匹配域中的原使用地址,来构造流表项,作为临时流表项;以及在新规则所涉及的各网络节点的流表的所述特定匹配域中使用由选定的地址构造的临时流表项,来临时实现新规则,直到旧规则所涉及的各网络节点中的基于旧规则的动作完成为止。
【专利说明】流表更新方法和流表更新装置
【技术领域】
[0001] 本发明涉及软件定义网络,特别是用于软件定义网络中的流表更新方法和流表更 新装置。
【背景技术】
[0002] 基于OpenFlow协议的软件定义网络(SDN)技术,其核心特点是实现数据平面和控 制平面的解耦:数据平面由OpenFlow交换机、主机等组成;控制平面则是由控制器对全网 进行集中式控制。具体地,各个交换机根据本地流表中的所有流表项来与数据包匹配,根据 最佳匹配结果来处理数据包。控制器负责各个交换机本地流表中的所有流表项的写入、修 改和删除。如果各个交换机遇到新的数据包,无法在本地流表中找到匹配结果,则将数据包 通过控制平面链路上传给控制器,由控制器决定如何处理。数据包与流表项的匹配,是将数 据包包头域与流表项中的匹配信息所包含的匹配域进行匹配,匹配方式包括完全匹配、最 长匹配。常用的流表项匹配域包括源IP地址、目的IP地址、源Mac地址、目的Mac地址、 VLAN标签、TCP端口等。
[0003] 现有文献介绍
[0004] 现有文献 I :Mark Reitblatt,Nate Foster,Jennifer Rexford,Cole Schlesinger.and David Walker. Abstractions For Network Update. In ACM SIGC0MM' 12, Helsinki,Finland,August2012.
[0005] 文献I阐述软件定义网络中流表更新问题的必要性和重要性:在软件定义网络 中,由于路由切换、网络设备定期维修等原因,网络状态经常发生变化;控制器需要根据网 络状态变化的原因,在多个交换机中进行多条流表项的更新,使其从旧规则更新至新规则。 如果流表更新过程处理不恰当,可能导致网络内数据包的错误处理。文献I提出一种技术 方案,给数据包打上不同的VLAN标签,以区别新、旧两套规则,并在交换机中把VLAN标签作 为两套规则的流表区分标志。随后,控制器在各个交换机上写入基于新规则的流表项,此时 在各交换机内仍有旧流表规则对应的流表项。最终,控制器在入口交换机上改变数据包的 VLAN标签,让数据包依新规则对应的流表项进行转发,从而实现流表更新。
[0006] 在文献I中固定使用VLAN标签来区分新、旧两套规则,有如下问题:1)如果VLAN 标签是两套规则中某些流表项的匹配信息,那么该方案不适用;2)如果VLAN标签不是两套 规则中任何流表项的匹配信息,例如在数据转发中一般不将VLAN标签作为流表项的匹配 信息,那么可以使用该方案,然而,该方案修改了数据包的包头信息,在流表更新过程结束 后无法将数据包的VLAN域改回原值,可能在后继操作中造成错误;3) VLAN标签只有4096 个,是一种重要网络资源,该方案将VLAN标签作为额外代价。
【发明内容】
[0007] 为了克服现有技术的上述缺陷,提出了本发明。因此,本发明的目的是提出一种流 表更新方法和流表更新装置,能够正确有效地实现流表更新,而无需使用固定包头域。
[0008] 为了实现上述目的,根据本发明,提出了一种在多个网络节点中将基于旧规则的 流表更新为基于新规则的流表的流表更新方法,包括:从基于旧规则的流表和基于新规则 的流表中均使用的至少一个匹配域中确定特定匹配域;选定特定匹配域中的未使用地址代 替该特定匹配域中的原使用地址,来构造流表项,作为临时流表项;以及在新规则所涉及的 各网络节点的流表的所述特定匹配域中使用由选定的地址构造的临时流表项,来临时实现 新规则,直到旧规则所涉及的各网络节点中的基于旧规则的动作完成为止。
[0009] 优选地,当基于旧规则的动作完成之后,将旧规则所涉及的流表项删除;在所有旧 规则的流表项成功删除之后,在新规则所涉及的各网络节点上写入新规则的流表项,来替 换之前写入的临时流表项,在数据包按照新规则的流表项处理之后,删除所有临时流表项。
[0010] 优选地,所述网络节点是软件定义网络中的网络节点。
[0011] 优选地,所述网络节点为交换机,所述旧规则是旧路径上的分组转发规则,所述新 规则是新路径上的分组转发规则。
[0012] 优选地,所述特定匹配域是分组转发的源地址域和/或目的地址域。
[0013] 优选地,所述特定匹配域中的未使用的地址是预先设定的或者是随机选取的。
[0014] 优选地,将统计得出的基于旧规则的流表和基于新规则的流表中均使用的匹配域 中使用程度最小的匹配域确定为特定匹配域。
[0015] 另外,根据本发明,还提出了一种在多个网络节点中将基于旧规则的流表更新为 基于新规则的流表的流表更新装置,包括:从基于旧规则的流表和基于新规则的流表中均 使用的至少一个匹配域中确定特定匹配域的单元;选定特定匹配域中的未使用地址代替该 特定匹配域中的原使用地址,来构造流表项,作为临时流表项的单元;以及在新规则所涉及 的各网络节点的流表的所述特定匹配域中使用由选定的地址构造的临时流表项,来临时实 现新规则,直到旧规则所涉及的各网络节点中的基于旧规则的动作完成为止的单元。
[0016] 由此,针对软件定义网络的流表更新问题,本发明提出一种通用的技术方案,即基 于两套规则来选择一个包头域,以此作为区分新、旧规则的标志;同时,在流表更新过程结 束后,能够保持数据包的原有包头信息。相对于文献I中的使用固定包头域(VLAN标签) 来作为区分标志的方案,本发明所提方案将根据新、旧两套规则来选择一个包头域或多个 包头域的组合(源IP、目的IP、源Mac、目的Mac、VLAN等),这就增加了本发明所提方案的 通用性。另外,本发明所提方案能够实现在流表更新过程结束后恢复数据包的原有包头信 息,从而避免文献I的方案中数据包在离开软件定义网络之后可能导致的各种错误处理。
【专利附图】
【附图说明】
[0017] 通过参考以下组合附图对所采用的优选实施方式的详细描述,本发明的上述目 的、优点和特征将变得更显而易见,其中:
[0018] 图1是示出了软件定义网络系统结构的图;
[0019] 图2是示出了控制器功能模块的图;
[0020] 图3是示出了交换机功能模块的图;
[0021] 图4是示出了控制器、交换机的流表存储模块的结构图;
[0022] 图5是示出了控制器、交换机中的流表信息存储格式的示意图;
[0023] 图6是示出了基于旧规则的全局流表信息存储情况的示意图;
[0024] 图7是示出了控制器内流表更新模块的结构图;
[0025] 图8是示出了控制器内流表信息统计模块的具体内容的示意图;
[0026] 图9是示出了控制器内交换机分类模块的结构图;
[0027] 图10是示出了控制器内网络拓扑存储模块的具体内容的示意图;
[0028] 图11是示出了交换机内数据包与流表匹配模块的流程图;
[0029] 图12是示出了控制器内流表信息统计模块的流程图;
[0030] 图13是示出了控制器内交换机分类模块的流程图;
[0031] 图14是示出了本发明所提流表更新方案的流程图;
[0032] 图15是示出了算法1 (选择特定匹配域)的流程图;
[0033] 图16是示出了算法2 (在匹配域中选择特殊地址)的流程图;
[0034] 图17是示出了算法2中生成预设空白地址的流程图;
[0035] 图18是示出了算法2中随机选取特殊地址的流程图;
[0036] 图19是示出了算法3 (流表更新第1阶段)的流程图;
[0037] 图20是示出了算法3 (流表更新第1阶段)的时序图;
[0038] 图21是示出了算法4 (流表更新第2阶段)的流程图;
[0039] 图22是示出了算法4 (流表更新第2阶段)的时序图;
[0040] 图23是示出了算法5 (处理占用特殊地址的新数据流)的流程图;
[0041] 图24是示出了实施例1的流表更新过程的中间状态图;
[0042] 图25是示出了实施例1中2个匹配域的可用值计算结果的图。
【具体实施方式】
[0043] 下面结合附图1-24对实施例1进行说明。
[0044] 所述实施例描述当软件定义网络中发生路径切换时,对旧路径、新路径上的交换 机中的流表进行更新的过程。实施例中的旧路径、新路径都以主机108为源,以主机109为 目的,旧路径上的交换机顺序为"交换机102 -交换机103 -交换机104 -交换机105",新 路径上的交换机顺序为"交换机102 -交换机106 -交换机107 -交换机105"。
[0045] 图1示出了一个软件定义网络的系统结构,具体由1个控制器(控制器101)、6个 交换机(交换机102、交换机103、交换机104、交换机105、交换机106、交换机107)和7个 主机(主机108、主机109、主机110、主机111、主机112、主机113、主机121)构成。控制器 101与各个交换机均有控制链路相连,用于交换控制平面信息120。所述控制链路可以是以 带内方式连接的虚拟链路,也可以是以带外方式连接的物理链路。各个交换机之间通过物 理链路相连,构成全局网络拓扑,总计有6条物理链路,例如物理链路114连接交换机102 和交换机103。每个主机与一个交换机相连:主机108与交换机102相连、主机109与交换 机105相连、主机110和主机111都与交换机106相连、主机112与交换机107相连、主机 113与交换机104相连、主机121与交换机107相连。
[0046] 图2示出了控制器101内部的功能模块,这些模块按照用途可以分为两部分。第一 部分是控制器101的基本模块,用以实现软件定义网络的各项基本功能,包括用于存储网 络拓扑信息(例如物理链路信息)的网络拓扑存储模块201、用于向交换机102-107写入、 修改流表的流表写入/修改模块202、用于进行集中算路的路由计算模块203、用于主动探 测网络拓扑变化的网络拓扑发现模块204、用于对其他模块(例如路由计算模块203、网络 拓扑发现模块204)进行编译和调试的编译及调试模块205、用于与交换机102-107进行通 信的控制平面通信模块206、用于存储交换机102-107流表信息的全局流表存储模块207 ; 第二部分则是控制器101用以实现本发明所提方案的模块,包括用于统计流表更新事件相 关信息的流表更新模块208、用于分析全局流表存储模块207中信息的流表信息统计模块 209、用于对待更新流表的交换机(交换机102-107)进行分类的交换机分类模块210。本 发明所提方案除了需要用到第二部分中的3个模块,也需要用到第一部分中的部分功能模 块。
[0047] 图3示出了交换机102-107内部的功能模块,其中控制平面通信模块301实现与 控制器101之间的通信,本地流表存储模块302用于存储本地流表,交换机系统配置模块 303用于实现交换机102-107的相应配置工作,数据包与流表匹配模块304用于为数据包寻 找适用的流表,路由转发模块305用于处理数据包。
[0048] 下面通过图4-图6对流表的存储模块、存储格式进行说明,并示出实施例中的基 于旧规则的全局流表信息。
[0049] 图4示出了两个流表存储模块的结构图,控制器101内全局流表存储模块207如 图4-1所示、交换机102-107内本地流表存储模块302如图4_2所示。全局流表存储模块 207中有2个存储结构:预设地址存储模块401和全局交换机流表信息404。预设地址存 储模块401,包含IP地址列表402和Mac地址列表403这2部分,分别存储预设的IP、Mac 地址。全局交换机流表信息404,存储了所有交换机(交换机102-107)的本地流表信息 (405-410),以及流表项数量统计总表411。本地流表存储模块302包括本地流表412和本 地流表项数量统计表413。
[0050] 由于各个交换机(交换机102-107)中的流表信息、流表项数量统计同时也在控制 器101中进行存储,因此在交换机102-107、控制器101中采用一样的流表存储格式,如图 5中的表5-1和表5-2所不。表5-1不出了具体的流表存储格式,每一条流表项包括匹配 域、执行操作、优先级这3部分。常用的匹配域包括源Mac、目的Mac、源IP、目的IP、VLAN、 TCP,执行操作包括转发、丢包、上传控制器、修改等,优先级则是0-65536的数值(值越大越 优先)。表5-2示出了流表项数量统计表的内容,包括流表项容量、现有流表项数、现有流表 项数/流表项容量这3个统计结果,流表项容量指交换机能够容纳的流表项总数(由交换 机的具体型号决定),现有流表项数指已经写入的流表项数量,现有流表项数/流表项容量 显示流表的已使用程度。
[0051] 图6示出了实施例中基于旧规则的全局流表信息存储情况。表6-1示出交换机 102-107中的流表信息总表,表6-2示出交换机102-107的流表项数量统计总表。与路径 切换相关的流表项如下:交换机102的流表项#1、交换机103的流表项#1、交换机104的 流表项#1、交换机105的流表项#1。这4条流表项都使用了源IP、目的IP这2个匹配域, 源IP地址为166. 111. 90. 50(主机108的IP地址),目的IP地址为166. 111. 10. 50 (主机 109的IP地址)。表6-1的信息由控制器101产生,当控制器101每次向各个交换机(交 换机102-107)写入、修改或者删除流表项,同时会在表6-1中添加、修改或者删除相应的流 表项。
[0052] 图7示出了控制器101内流表更新模块208的结构图,包括流表更新事件统计信 息701、旧规则的流表信息702、新规则的流表信息703这3部分。流表更新事件统计信息 701的详细内容由表7-1示出,记录最近1天内每次流表更新事件的发生时刻、距上次时间 的时间间隔、事件耗费时间;同时,根据所有事件的信息,计算流表更新事件的发生频率N 次/秒、平均间隔T秒、平均耗费时间L秒。旧规则的流表信息702的详细内容由表7-2示 出,记录交换机索引、匹配信息、执行操作和优先级;新规则的流表信息703的详细内容由 表7-3示出,记录交换机索引、匹配信息、执行操作和优先级。
[0053] 图8示出了控制器101内流表信息统计模块209的具体内容,由5张表构成。表 8- 1示出是否统计各个交换机(交换机102-107)的流表信息,1表示统计,0表示不统计。 基于表8-1的信息,表8-2示出各常用匹配域在已统计流表信息的交换机所有流表项中的 使用频次情况,对每个常用匹配域记录使用频次,再根据已统计流表信息的交换机的流表 项总数,计算"使用频次/已统计流表信息的交换机流表项总数"一值。同样基于表8-1的 信息,表8-3示出各常用匹配域在已统计流表信息的交换机流表中的地址使用情况,对每 个常用匹配域记录已使用地址数,再根据所辖地址总数,计算"已使用地址数/所辖地址总 数"一值。表8-4示出各常用匹配已使用地址的具体存储结构,源IP、目的IP地址均使用 24层树存储,源Mac、目的Mac地址均使用哈希表存储,VLAN、TCP均使用定长数组存储。根 据表8-1和全局流表存储模块207中表6-2的信息,表8-5示出已统计流表信息的交换机的 流表项数量情况,并计算已统计流表信息的交换机的"现有流表项数/流表项容量" 一值。
[0054] 图9示出了控制器101内交换机分类模块210的结构图,具体包括待更新交换机 列表901 (详见表9-1)、入口交换机列表902 (详见表9-2)、中间交换机列表903 (详见表 9- 3)、出口交换机列表904(详见表9-4)。表9-1示出各个交换机(交换机102-107)是否 需要进行流表更新,在实施例中,交换机102-107都需要更新流表;表9-2示出各个交换机 (交换机102-107)是否为入口交换机,在实施例中,交换机102是入口交换机;表9-3示出 各个交换机(交换机102-107)是否为中间交换机,在实施例中,交换机103、交换机104、交 换机106、交换机107是中间交换机;表9-4示出各个交换机(交换机102-107)是否为出 口交换机,在实施例中,交换机105是出口交换机。
[0055] 图10示出了控制器101内网络拓扑存储模块201的具体内容,表10-1示出各个 物理链路(物理链路114-119)的平均延时情况。根据表10-1的内容,可以计算各个主机 (主机108-113)之间的端到端延时。例如,在实施例中,旧路径上交换机102与交换机105 之间的端到端延时为7. 2秒,新路径上交换机102与交换机105之间的端到端延时为5. 1 秒。
[0056] 图11示出了交换机102-107内数据包与流表匹配模块304的具体匹配流程,以当 数据包从主机108到达交换机102时为例。在S1101中交换机102提取数据包包头信息, 在S1102中数据包与本地流表存储模块412中的所有流表项依次进行完全匹配。根据匹配 结果,在S1103中进行选择判断"是否存在完全匹配的流表项"。如果S1103的判断结果为 "否",则在S1105中交换机102将数据包上传至控制器101处理,等待控制器101制定相应 流表规则来处理该数据包。如果S1103的判断结果为"是",则在S1104中再进行选择判断 "是否存在多条完全匹配的流表项"。如果S1104的判断结果为"否",则在S1107中交换机 102将该条流表项作为匹配结果。如果S1104的判断结果为"是",则在S1106中交换机102 选择优先级最高的流表项作为匹配结果。在S1108中,交换机102按照匹配结果中的执行 操作对数据包进行相应处理即可。
[0057] 图12示出了控制器101内流表信息统计模块209的具体计算流程。由于只需要 对受流表更新影响的交换机(交换机102-107)进行流表信息统计,在S1201中控制器101 把交换机分类模块210的表9-1信息更新到流表信息统计模块209的表8-1中。在S1202 中控制器101把全局流表存储模块207的表6-1中信息更新到流表信息统计模块209的表 8-4中,即将各常用匹配域的已使用地址分别进行存储。在S1203中控制器101根据流表信 息统计模块209的表8-4和全局流表存储模块207的表6-2,更新流表信息统计模块209的 表8-2、表8-3、表8-5中相应信息。上述即完成了流表信息统计模块209内各表内容的一 次计算过程。在S1204中控制器101对流表信息统计模块209内各表内容进行更新操作, 每隔T秒(流表更新模块208的表7-1中数据)重新提取全局流表存储模块207的表6-1 信息,来对流表信息统计模块209的表8-2、表8-3、表8-4、表8-5的信息进行更新。
[0058] 图13示出了控制器101内交换机分类模块210的具体流程。在S1301中控制器 101提取流表更新模块208中的表7-2、表7-3信息,即分析新、旧两套规则的流表信息。在 S1302中控制器101利用流表更新模块208的表7-2、表7-3中信息来更新交换机分类模 块210的表9-1,即确定哪些交换机需要更新流表。具体地,流表更新模块208的表7-2、表 7-3中所有流表项"交换机索引"一栏中的交换机,都是需要进行流表更新的交换机。在实 施例中,由于流表更新模块208中的表7-2、表7-3中8条流表项中出现了 6个交换机(交 换机102-107),则交换机分类模块210的表9-1中交换机102-107都需要进行流表更新。 在S1303中控制器101对入口交换机进行分析,假设数据包按新规则转发,根据流表更新模 块208中的表7-3中信息,经过交换机分类模块210的表9-1中的第一个交换机,记为入口 交换机(更新交换机分类模块210的表9-2)。在S1304中控制器101对中间交换机和出口 交换机进行分析,数据包经过入口交换机之后,根据流表更新模块208的表7-3中信息,将 途经交换机分类模块210的表9-1中所有其他交换机,除最后一个记为出口交换机,其他均 记为中间交换机(更新交换机分类模块210的表9-3、表9-4)。
[0059] 下面结合图12-23对实施例1中的流表更新过程进行说明。其中图14为总体流 程,图13是图14中S1403的详细流程,图12是图14中S1404的详细流程,图15是图14中 S1405的详细流程,图16、图17、图18是图14中S1406的详细流程,图19是图14中S1407 的详细流程,图20是图14中S1407的时序,图21是图14中S1408的详细流程,图22是图 14中S1408的时序,图23是图14中S1410的详细流程。在图14中,本实施例的流表更新 过程分为预处理(S1401-S1406)、阶段1(S1407)、阶段2(S1408-S1411)这3部分。在S1401 中控制器101触发流表更新过程开始。在S1402中控制器101对新、旧两套规则进行分析, 并更新流表更新模块208的表7-2、表7-3中信息。在S1403中控制器101在交换机分类模 块210中,对待更新流表的交换机进行分类,详细流程如图13所示。根据交换机分类结果, 在S1404中控制器101在流表信息统计模块209中,对待更新流表的交换机中的流表信息 进行分析,详细流程如图12所示。在S1405中控制器101利用算法1进行特定匹配域的选 定,详细流程如图15所示。根据算法1的结果,在S1406中控制器101利用算法2进行特 定匹配域中特殊地址的选定,详细流程如图16所示。根据上述2个算法的结果,在S1407 中控制器101根据算法3进行流表更新第1阶段,详细流程如图19所示,时序图如图20所 示。流表更新第1阶段结束后,在S1408中控制器101根据算法4进行流表更新第2阶段, 详细流程如图21所示,时序图如图22所示。在S1409中控制器101进行"在第2阶段中 该特殊地址是否被新数据流使用"的选择判断。如果S1409的判断结果为"是",则在S1410 中控制器101根据算法5对该数据流进行处理,详细流程如图23所示。如果S1409的判断 结果为"否",则在S1411中控制器101认为整个流表更新过程已完成。
[0060] 图15示出了算法1 :选择特定匹配域的流程图。在S1501中控制器101根据流表 更新模块208的表7-2、表7-3中所有流表项的"匹配信息"一栏中的内容,来确定新、旧两 套规则中所有流表项匹配信息所使用的匹配域,在本实施例中,所使用的匹配域为源IP地 址、目的IP地址。根据匹配域的个数,在S1502中进行"是否只有1个匹配域"的选择判断。 如果S1502的判断结果为"是",在S1503中控制器101将其选定为特定匹配域。如果S1502 的判断结果为"否",在S1504中控制器101需要在多个匹配域中选择特定的匹配域。如果存 在多个匹配域,为每个匹配域A设定可用值 Ci,来表征这个匹配域的已使用程度,作为选择 匹配域的指标。在本实施例中,有2个匹配域(源IP地址、目的IP地址),记源IP地址为 Ai、目的IP地址为A2、源IP地址的可用值为Cl、目的IP地址的可用值为c2。在S1505中,控 制器101对每个匹配域Ai进行可用值计算Ci = α叫+β nii。叫指Ai在流表项中出现频次比 例,即流表信息统计模块209中表8-2的"使用频次/已统计流表信息的交换机现有流表项 总数" 一值,该数据每隔T秒更新一次。叫指&的已使用地址比例,即流表信息统计 模块209中表8-3的"已使用地址数/所辖地址总数(%) ",该数据每隔T秒更新一次。两 个权重α、β根据如下算式计算:α = 2_μ,β = 1+μ (0彡μ彡1)。其中,μ代表"所 有待更新流表的交换机中现有流表项数/流表项容量(% " 一值,数据来自流表信息统计 模块209中表8-5,该数据每隔Τ秒刷新一次。在S1506中,控制器101进行"是否某个匹 配域的叫=1"的选择判断。如果S1506的判断结果为"是",在S1507中控制器101记该 匹配域的可用值q =°〇。如果S1506的判断结果为"否",在S1508中控制器101对所有匹 配域的可用值进行排序。在S1509中,控制器101进行"是否对所有匹配域都有c =c?"的 选择判断。如果S1509的判断结果为"是",则在S1510中控制器101选择2个叫值最小、 次最小的匹配域Α+Α」;如果S1509的判断结果为"否",则在S1511中控制器选择可用值最 小的A作为特定匹配域。至S1512为止,控制器101已经选择出特定的匹配域,算法1结 束。例如,在本实施例中,2个匹配域的相应计算结果如图25中表25-1所示,源IP地址的 可用值为133. 20%,目的IP地址的可用值为199. 70%,且2个匹配域的叫均小于1,(^均 为有限值,则控制器101选择可用值最小的源IP地址作为特定匹配域。
[0061] 图16示出了算法2 :在匹配域中选择特殊地址的流程图。根据算法1的结果,在 S1601中控制器101已经知道选定的匹配域,例如,在本实施例中,源IP地址即是特定匹配 域。在S1602中,控制器101进行"是否只选定1个匹配域"的选择判断。如果S1602的判 断结果为"否",则在S1603中控制器101使用2个匹配域A#」,在S1604中控制器101通 过随机选取的方式,在每个域中选择一个地址,构成地址对afaj。在S1605中,控制器101 进行"该地址对是否已在全局流表存储模块207的表6-1中出现"的选择判断。如果S1605 的判断结果为"是",则回到S1604继续随机产生地址对;如果S1605的判断结果为"否",在 S1606中控制器101将其选为特殊地址。举例说明S1603-S1606,假设某次流表更新过程中, 控制器101使用VLAN、目的IP地址这2个域作为特定匹配域,控制器101在S1604中通过 随机选取方式产生地址对"VLAN = 5、目的IP地址=166. 111. 171. 1",该地址对在S1605 中与全局流表存储模块207的表6-1中所有表项的匹配信息进行依次完全匹配,结果发现 全局流表存储模块207的表6-1中交换机103的流表项#2同样使用"VLAN = 5、目的IP地 址=166. 111. 171. 1"作为匹配信息,因此该地址对不能使用,继续回到S1604随机出地址 对"VLAN = 50、目的IP地址=166. 111. 1113. 1",在此与全局流表存储模块207的表6-1 中所有表项进行匹配,发现"VLAN = 50、目的IP地址=166. 111. 1113. 1"未被使用,则在 S1606中控制器101将其作为选定的特殊地址。如果S1602的判断结果为"是",则在S1607 中控制器101使用1个匹配域需要选出一个特殊地址%。在S1608中,进行"是否有预 设空白地址"的选择判断,。如果S1608的判断结果为"是",则在S1609中控制器101随机 选择一个预设空白地址作为特殊地址;如果S16008的判断结果为"否",则在S1610中控制 器101以随机选择的方式选择一个未被使用地址作为特殊地址,详细流程如图18所示。其 中S1608和S1609所使用的"预设空白地址"由控制器101在系统初始化时自动设定或者 人工设定,其中自动设定的具体流程如图17所示。至S1611为止,已经在特定匹配域中选 定特殊地址,算法2结束。例如,在本实施例中,只有1个特定匹配域,即源IP地址,因此控 制器101只需在其中选择一个特殊地址,用于后继流表更新过程;控制器101以随机选择的 方式,在源IP地址中选择出一个未被使用的地址166. 111. 50. 50,作为特殊地址。
[0062] 图17示出了算法2中使用的预设空白地址的生成方法。在S1701中,控制器101 提取流表更新模块208的表7-1中的2个数据:流表更新事件发生频率N次/秒、每次更新 平均耗费时间?;秒。在S1702中,控制器101根据爱尔兰B公式计算所需预设的空白地址 数N。。在S1703中,控制器101在各个常用匹配域中,只针对IP、Mac地址的4个域进行空 白地址预设。在S1704中,进行"该域是否使用IP地址"的选择判断。如果S1704的判断 结果为"是",在S1705中利用控制器101定义的保留IP地址(参考国际标准RFC1918)作 为预设地址,例如C类地址段192. 168. 0. 0到192. 168. 255. 255。如果S1704的判断结果为 "否",在S1706中控制器101继续进行"该域是否使用Mac地址"的选择判断。如果S1706 的判断结果为"否",则在S1707中控制器101不再对其他匹配域进行空白地址的预设。如 果S1706的判断结果为"是",在S1708中控制器101在网络中创建若干主机,分配Mac地 址,这些主机不进行任何通信,则Mac地址不在数据流中使用,可作预设空白地址。例如,在 实施例中,控制器101创建主机121,为期分配Mac地址00-1F-16-15-2E-B2,并将其作为预 设空白Mac地址。在S1709中,控制器101已对IP、Mac地址相关的4个常用域进行空白地 址的预设。
[0063] 图18示出了算法2中随机选取特殊地址的具体流程。在S1801中,控制器101提 取已选定匹配域的信息,例如,在实施例中,已选定匹配域为源IP地址。在S1802中,进行 "该域是否使用IP地址"的选择判断。如果S1802的判断结果为"否",控制器101在S1803 中随机选取该域的一个地址,再在S1804中进行"该地址是否已在对流表信息统计模块209 的表8-4中出现"的选择判断。如果S1804的判断结果为"是",则继续回到S1803进行随 机地址选取;如果S1804的判断结果为"否",则控制器101在S1805中将其选为特殊地址。 如果S1802的判断结果为"是",控制器101在S1806中提取对流表信息统计模块209的表 8-4中由该域已用地址构成的24层树,例如,在实施例中,提取表8-4中由源IP地址中已 使用地址构成的24层树。针对这颗24层树,在S1807中进行"第24层叶子节点是否张满" 的选择判断。如果S1807的判断结果为"是",控制器101在S1808中根据第24层叶子节点 信息选择一个子网地址已使用数量最少的C类网段,并在S1809中在该网段中寻找一个空 白地址作为特殊地址。如果S1807的判断结果为"否",控制器101在S1810中选择一个未 被使用的C类网段,任选其中一个子网地址作为特殊地址。在S1811中,控制器101已经在 选定的特定匹配域中选出特殊地址。
[0064] 图19示出了算法3 :流表更新第1阶段的具体流程。根据流表更新模块208的 表7-2和表7-3信息,新、旧两套规则的所有流表项都使用共同的匹配信息:源IP地址 166. 11L 90. 50+ 目的 IP 地址 166. 11L 10.50。下文中,源 IP 地址 166. 11L 90. 50 用 A指 代,目的IP地址166. 111. 10. 50用B指代(参考图24-1)。基于算法1和算法2,已经选定 用于流表更新过程的特定地址Z,本实施例中Z是源IP地址166. 111. 50. 50 (参考图24-2)。 在流表更新第1阶段中,首先不删除旧路径上各个交换机(交换机102-105)的流表项,使 得数据包能够继续传输(在旧路径上按照旧规则传输);然后,在新路径上各个交换机(交 换机102、交换机105-107)中按照一定顺序写入以Z+B为匹配信息的流表项,并在入口交 换机(交换机102)上通过新流表项将数据包的包头信息A+B改为Z+B,从而实现从旧路径 到新路径的切换;接着,等待旧路径上的端到端延时,以保证旧路径上的所有数据包最终完 成传输过程;最后,删除旧路径上各个交换机(交换机102、交换机105-107)中的基于旧规 则的流表项。在S1901中,控制器101基于算法1和算法2,已经选定了特定匹配域(算法 1),并在该域中选定了一个特殊地址(算法2),来用于流表更新过程中。例如,在本实施例 中,特定匹配域是源IP地址,特定地址Z。在S1902中,控制器101向中间交换机(交换机 106-107)、出口交换机(交换机105)写入以Z+B作为匹配信息的新流表项(参考图24-2)。 在S1903中,控制器101要求上述交换机(即交换机105-107)在新流表项写入成功后向控 制器返回写入成功信息。在S1904中,进行"是否每个交换机都已返回写入成功信息"的选 择判断。如果S1904的判断结果为"否",控制器101在S1905中等待其他交换机返回写入 成功信息。如果S1904的判断结果为"是",控制器101在S1906中,向入口交换机(交换机 102)写入2条新流表项:第1条是以Z+B为匹配 /[目息的流表项;第2条是以A+B为匹配/[目 息的流表项,将数据包的包头信息从A+B改为Z+B。这2条流表项的优先级应高于入口交换 机(交换机102)的所有流表项的优先级,例如,在本实施例中,根据全局流表存储模块207 的表6-1中信息,入口交换机(交换机102)上所有流表项的优先级最高值为12,则新写入 的2条流表项的优先级可设为20 (参考图24-3)。在S1907中,入口交换机(交换机102) 在这2条流表项写入成功后向控制器101返回写入成功信息。在S1908中,根据网络拓扑 存储模块201的表10-1中物理链路平均延时信息,控制器101可以计算旧路径的端到端延 时,在等待该延时长度后,在交换机102-104中删除旧规则对应的流表项,例如,在本实施 例中,删除交换机102的流表项#1、交换机103的流表项#1、交换机104的流表项#1 (参考 图24-3)。在S1909中,控制器101要求上述交换机(交换机102-104)在流表项删除成功 后向控制器101返回删除成功信息。在S1910中,进行"是否每个交换机都已返回删除成功 信息"的选择判断。如果S1910的判断结果为"否",控制器101在S1911中等待其他交换 机返回删除成功信息。如果S1910的判断结果为"是",则控制器101在S1912中已完成流 表更新第1阶段(参考图24-4)。此时,数据包按照以Z+B为匹配信息的流表项转发,已经 从旧路径切换到新路径上。
[0065] 图20用时序图说明了算法3的执行过程。S2001表示控制器101向中间交换机 (交换机106-107)、出口交换机(交换机105)写入以Z+B作为匹配信息的新流表项。S2002、 S2003分别表示中间交换机(交换机106-107)、出口交换机(交换机105)在成功写入流 表项之后向控制器101返回写入成功信息。S2004表不控制器101向入口交换机(交换机 102)写入2条新流表项。S2005表示入口交换机(交换机102)在成功写入这2条流表项 之后向控制器101返回写入成功信息。S2006表示控制器101等待旧路径的端到端延时。 S2007表示控制器101向入口交换机(交换机102)、中间交换机(交换机103-104、交换机 106-107)、出口交换机(交换机105)发出删除旧规则对应流表项的指令。S2008、S2009、 S2010分别表示入口交换机(交换机102)、中间交换机(交换机103-104、交换机106-107)、 出口交换机(交换机105)在成功删除流表项之后向控制器101返回删除成功信息。
[0066] 在流表更新第1阶段完成后,已经实现了从旧路径到新路径的切换,但是数据包 的包头信息被改变:在入口交换机(交换机102)上从A+B改为Z+B,然后根据新路径上各 个交换机(交换机102、交换机105-107)中以Z+B为匹配信息的流表项进行传输。这就和 现有文献I中一样,在流表更新过程结束后,数据包的包头信息被改变,现有文献I所提方 案将导致数据包VLAN标签的改变,本发明所提方案的流表更新第1阶段将导致数据包源IP 地址的改变。假设数据包在到达主机109后,主机109将根据数据包的源IP地址(或者 VLAN标签),对数据包进行进一步处理,那么本发明(或者现有文献I)所提方案的实施,将 导致数据包的错误处理。因此,本发明所提方案在实现流表更新第1阶段之后,通过算法4 来执行流表更新第2阶段,目的是流表更新过程完成后不改变数据包的包头信息。
[0067] 图21示出了算法4 :流表更新第2阶段的具体流程。在S2101中,控制器101向中 间交换机(交换机106-107)、出口交换机(交换机105)写入以A+B为匹配信息的新流表项 (参考图24-5)。在S2102中,控制器101要求上述交换机(交换机105-107)在流表项写 入成功后向控制器101返回写入成功信息。在S2103中,进行"是否每个交换机都已返回写 入成功信息"的选择判断。如果S2103的判断结果为"否",则控制器101在S2104中等待其 他交换机返回写入成功信息。如果S2103的判断结果为"是",控制器101在S2105中在入 口交换机(交换机102)写入以A+B为匹配信息的新流表项,优先级低于已有的将A+B改为 Z+B的流表项的优先级(参考图24-6)。例如,在本实施例中,入口交换机(交换机102)上 以A+B为匹配信息的流表项优先级为10,将A+B改为Z+B的流表项的优先级为20。在S2106 中,控制器101要求入口交换机(交换机102)在流表项写入成功后返回写入成功信息。在 S2107中,控制器101在入口交换机(交换机102)上删除将A+B改为Z+B的流表项(参考 图24-7)。在S2108中,控制器101要求入口交换机(交换机102)在流表项删除成功后返 回删除成功信息。在S2109中,控制器101根据网络拓扑存储模块201的表10-1信息,计 算新路径的端到端延时,在等待该延时长度后,控制器101在交换机102、交换机105-107中 删除以Z+B为匹配信息的流表项。在S2110中,控制器101要求上述交换机(交换机102、 交换机105-107)在流表项删除成功后返回删除成功信息。在S2111中,进行"是否每个交 换机都已返回删除成功信息"的选择判断。如果S2111的判断结果为"否",则控制器101在 S2112中等待其他交换机返回删除成功信息。如果S2111的判断结果为"是",则控制器101 在S2113中已完成流表更新第2阶段(参考图24-8)。此时,数据包在新路径上按照以A+B 为匹配信息的流表项进行转发,并且数据包的包头信息没有被改变。
[0068] 图22用时序图说明了算法4的执行过程。S2201表示控制器101向中间交换机 (交换机106-107)、出口交换机(交换机105)写入以A+B作为匹配信息的新流表项。S2202、 S2203分别表示中间交换机(交换机106-107)、出口交换机(交换机105)在成功写入流表 项之后返回的写入成功信息。S2204表示控制器101向入口交换机(交换机102)写入以 A+B为匹配信息的新流表。S2205表示入口交换机(交换机102)在成功写入流表项之后返 回的写入成功信息。S2206表示控制器101向入口交换机(交换机102)删除将A+B改为 Z+B的流表项。S2207表示入口交换机(交换机102)在成功删除流表之后返回的删除成功 信息。S2208表示控制器101等待新路径的端到端延时。S2209表示控制器101向入口交 换机(交换机102)、中间交换机(交换机103-104、交换机106-107)、出口交换机(交换机 105)发出删除以Z+B为匹配信息流表项的指令。S2210、S2211、S2212分别表示入口交换机 (交换机102)、中间交换机(交换机103-104、交换机106-107)、出口交换机(交换机105) 在成功删除流表之后返回的删除成功信息。在算法3(图19)和算法4(图21)中,特殊地 址Z -直被用于流表更新过程。虽然特殊地址Z在选择时(图16的算法2)是未被使用的 地址,但是也存在如下小概率事件:在流表更新过程中,控制器101所辖的各个交换机(交 换机102-107)中突然有以Z作为匹配信息的数据包。那么,需要对这种情况进行处理,即 特殊地址(Z)在流表更新过程中被新数据包用作匹配信息。因此,提出算法5 :处理占用特 殊地址的新数据流,具体流程如图23所示。在S2301中,控制器101获悉Z已经被选作特 殊地址,用于流表更新过程。在S2302中,控制器101进行"以Z作为匹配信息的数据包进 入任一所辖交换机"的选择判断。如果S2302的判断结果为"否",则控制器101在S2303中 无需特殊处理。如果S2302的判断结果为"是",假设有以Z作为匹配信息的数据包进入交 换机102,则控制器101在S2304中将以预设空白地址(图17)或者随机选择的方式(图 18),为Z选取另一个空白地址Z。。在S2305中,控制器101将向该交换机(交换机102)写 入一条新流表项,对以Z作为匹配信息的数据包,将Z修改为&,同时将该流表记为流表#0。 在S2306中,控制器101进行"流表更新第2阶段是否结束"的选择判断。如果S2306的判 断结果为"否",则控制器101在S2307中无需特殊处理。如果S2306的判断结果为"是", 则控制器101在S2308中在该交换机(交换机102)上,写入一条以Z作为匹配信息且执行 流表#0相同操作的流表项,该交换机(交换机102)写入成功后向控制器101返回成功写 入信息。在S2309中,控制器101在该交换机上(交换机102)删除流表#0,释放使用的空 白地址Z。。
[0069] 图24示出了实施例更新过程的中间状态。图24-1是基于旧规则的流表情况,数 据包按照旧路径进行转发。图24-2是执行完S1902,且流表项全部成功写入之后的状态,此 时中间交换机(交换机106-107)、出口交换机(交换机105)中都有以Z+B为匹配信息的流 表项。图24-3是执行完S1906,且2条流表项全部成功写入之后的状态,此时入口交换机 (交换机102)新近的以A+B为匹配信息的数据包,包头先被改成Z+B,再按照新规则进行转 发。图24-4是流表更新第1阶段结束时的状态。图24-5是执行完S2101,且全部流表项成 功写入之后的状态,此时中间交换机(交换机106-107)、出口交换机(交换机105)中都有 以A+B为匹配信息的流表项。图24-6是执行完S2106之后的状态,此时入口交换机上(交 换机102)也有以A+B为匹配信息的流表项。图24-7是执行完S2108之后的状态,此时以 Z+B为匹配信息的流表项不发挥作用,数据包按照以A+B为匹配信息的新规则转发。图24-8 是流表更新第2阶段结束时的状态。
[0070] 尽管以上已经结合本发明的优选实施例示出了本发明,但是本领域的技术人员将 会理解,在不脱离本发明的精神和范围的情况下,可以对本发明进行各种修改、替换和改 变。因此,本发明不应由上述实施例来限定,而应由所附权利要求及其等价物来限定。
【权利要求】
1. 一种在多个网络节点中将基于旧规则的流表更新为基于新规则的流表的流表更新 方法,包括: 从基于旧规则的流表和基于新规则的流表中均使用的至少一个匹配域中确定特定匹 配域; 选定特定匹配域中的未使用地址代替该特定匹配域中的原使用地址,来构造流表项, 作为临时流表项;以及 在新规则所涉及的各网络节点的流表的所述特定匹配域中使用由选定的地址构造的 临时流表项,来临时实现新规则,直到旧规则所涉及的各网络节点中的基于旧规则的动作 完成为止。
2. 根据权利要求1所述的流表更新方法,其中, 当基于旧规则的动作完成之后,将旧规则所涉及的流表项删除;在所有旧规则的流表 项成功删除之后,在新规则所涉及的各网络节点上写入新规则的流表项,来替换之前写入 的临时流表项,在数据包按照新规则的流表项处理之后,删除所有临时流表项。
3. 根据权利要求1所述的流表更新方法,其中, 所述网络节点是软件定义网络中的网络节点。
4. 根据权利要求1所述的流表更新方法,其中, 所述网络节点为交换机,所述旧规则是旧路径上的分组转发规则,所述新规则是新路 径上的分组转发规则。
5. 根据权利要求4所述的流表更新方法,其中, 所述特定匹配域是分组转发的源地址域和/或目的地址域。
6. 根据权利要求1所述的流表更新方法,其中, 所述特定匹配域中的未使用的地址是预先设定的或者是随机选取的。
7. 根据权利要求1所述的流表更新方法,其中, 将统计得出的基于旧规则的流表和基于新规则的流表中均使用的匹配域中使用程度 最小的匹配域确定为特定匹配域。
8. -种在多个网络节点中将基于旧规则的流表更新为基于新规则的流表的流表更新 装置,包括: 从基于旧规则的流表和基于新规则的流表中均使用的至少一个匹配域中确定特定匹 配域的单元; 选定特定匹配域中的未使用地址代替该特定匹配域中的原使用地址,来构造流表项, 作为临时流表项的单元;以及 在新规则所涉及的各网络节点的流表的所述特定匹配域中使用由选定的地址构造的 临时流表项,来临时实现新规则,直到旧规则所涉及的各网络节点中的基于旧规则的动作 完成为止的单元。
【文档编号】H04L12/937GK104052685SQ201310081828
【公开日】2014年9月17日 申请日期:2013年3月14日 优先权日:2013年3月14日
【发明者】周烨, 李勇, 石颖, 吴娟, 金德鹏 申请人:日立(中国)研究开发有限公司, 清华大学