一种POF交换机idle定时的测试系统及方法
技术领域
本发明涉及网络通信领域,具体涉及到一种POF交换机idle定时的测试系统及方法。
背景技术
软件定义网络(Software Defined Networking,SDN)通过将网络设备的控制功能和数据转发功能解耦,由逻辑集中的控制器管理交换机的行为,交换机仅负责数据转发,从而实现了底层设备的可编程,大大提高了网络的灵活性,降低了设备更新的成本。OpenFlow是应用最广泛的SDN实现,已经成为事实上的标准。然而OpenFlow通过预先定义的方式支持协议字段,在扩展新的网络协议时存在兼容性问题。为了摆脱OpenFlow的局限性,华为公司提出了协议无感知转发(Protocol Obliviously Forwarding,POF)技术,POF通过偏移和长度定义字段,支持任意的协议格式。
POF控制器通过下发POF消息管理交换机,使用流表控制其数据转发行为。流表包含若干个表项,每个表项包含匹配域、匹配值、优先级、指令等信息。若POF交换机收到的数据包与表项匹配,则执行相应的指令,从而实现对数据包的处理和转发。
为了充分利用交换机流表存储空间,减少控制器通讯开销,POF与OpenFlow都提供了表项失效机制,允许交换机主动清理不活跃的表项,包括idle定时和hard定时两种机制。在idle定时机制中,若表项一段时间未匹配数据包,将被交换机清除。Idle定时机制也被用于网络测量与路由更新。Idle定时的准确性将影响上述应用的性能,是交换机的重要性能指标之一。目前,POF交换机没有公开的测试idle定时的方法,OpenFlow交换机测试idle定时的方法主要有:
(1)修改idle设置表项的标志,令其在被移除时向控制器发送Flow_removed消息,认为收到Flow_removed消息的时刻为idle定时到期的时刻。然而这种方法既不可靠也不准确,对交换机的测试,不能依靠交换机来检查,交换机是一个黑盒,测试人员无法得知idle是否真的到期,表项是否真的被移除,且这种方法引入了封装并发送Flow_removed消息的延时,测试结果不够准确。
(2)通过hard定时机制进行验证,设置优先级高的表项的hard_timeout,当优先级高的表项到期后,测试数据包匹配到优先级低的idle设置表项,通过idle设置表项的指令是否被执行判断其是否已经移除,用hard_timeout不断逼近idle_timeout,直到结果满足测试精度。这种方法首先需要测试hard定时机制,而hard定时具有一定误差,基于hard定时去测试idle定时将带来更大的误差。此外,这种方法需要多次尝试hard_timeout,测试过程较为繁琐。
发明内容
本发明的目的在于克服上述技术缺陷,提供一种测试POF交换机idle定时的测试系统及方法,采用测试数据包进行验证,结果可靠,同时,只需一次测试即可获得准确的测试结果。
为实现上述目的,本发明提出了一种测试POF交换机idle定时的测试系统,用于对POF交换机的idle定时功能进行测试,所述系统包含:测试表项配置模块、测试数据发送模块、转发监听模块和定时误差计算模块;
所述测试表项配置模块,与待测POF交换机的控制端口连接,用于向待测POF交换机配置预定的POF流表,并向定时误差计算模块提供idle定时时间和idle定时的配置时刻;
所述测试数据发送模块,与待测POF交换机的输入数据端口连接,用于向待测POF交换机连续发送测试数据包;
所述转发监听模块:与待测POF交换机的输出数据端口连接,用于监听待测POF交换机的转发测试数据包的行为,当转发行为发生变化时,记录转发行为变化时刻,并向定时误差计算模块发送该时刻;
所述定时误差计算模块:基于idle定时时间、idle定时的配置时刻和转发行为变化的时刻,计算idle定时误差,形成测试结果。
作为上述系统的一种改进,所述预定的POF流表中,设置idle的表项A位于流表1,处理数据的表项B位于流表2;设置表项A的匹配值为1;利用POF指令将表项A的匹配值赋值给表项B,并设置表项B的数据处理动作;若表项A失效,表项B的匹配值将被POF指令设为0;设置表项A的idle定时时间,记录idle定时的配置时刻。
作为上述系统的一种改进,所述测试数据包的匹配字段值为0;所述测试数据包的发送间隔低于t/10;t为测试要求的时间精度。
作为上述系统的一种改进,所述转发行为变化时刻为当idle表项被移除后,转发监听模块收到POF交换机转发的第一个数据包的时刻。
作为上述系统的一种改进,所述idle定时误差e的计算公式为:
e=|Td-Tc-Ti|/Ti*100%
其中,Ti为idle定时时间,Tc为idle定时配置时刻,Td为转发行为变化时刻。
本发明还提供了一种POF交换机idle定时的测试方法,所述方法包括:
步骤1)向待测POF交换机配置预定的POF流表;
步骤2)POF流表设置完毕后,向POF交换机连续发送测试数据包;
步骤3)通过flow_mod消息设置idle表项的定时时间为Ti;记录idle定时的配置时刻Tc;
步骤4)监听POF交换机的输出数据端口,当idle表项被移除后,记录POF交换机的转发行为变化时刻Td;
步骤5)计算idle定时与设置的定时之间的误差e:
e=|Td-Tc-Ti|/Ti*100%
形成测试结果。
本发明的优势在于:
本发明的测试系统使用数据包验证表项移除,结果可靠,只需执行一次测试即可获得准确的测试结果,简单有效。
附图说明
图1是本发明的POF交换机idle定时的测试系统的示意图;
图2是本发明的POF交换机idle定时的测试方法的流程图;
图3是本发明的流表配置示意图。
具体实施方式
下面结合附图和优选实例对本发明进行详细说明。
如图1所示,本发明的一种POF交换机idle定时的测试系统,所述系统包含:
测试表项配置模块:与待测POF交换机的控制端口连接,用于向待测POF交换机配置预定的POF流表,并向定时误差计算模块提供idle定时的配置时间;
配置待测POF交换机的流表,其中,设置idle的表项A位于流表1,处理数据的表项B位于流表2;设置表项A的匹配值为非缺省值(缺省值一般为0);利用POF指令将表项A的匹配值赋值给表项B,并设置表项B的数据处理动作(如output);数据包不匹配表项A,每个数据包都尝试匹配表项B,若表项A失效,表项B的匹配值将被POF指令设为缺省值;设置表项A的idle定时,记录配置时间,提供给定时误差计算模块。
测试数据发送模块:与待测POF交换机的输入数据端口连接,用于连续向待测POF交换机发送测试数据包;
向待测交换机循环发送数据包,数据包的匹配字段值为缺省值;设测试要求的时间精度为t,则数据包的发送间隔低于t/10。
转发监听模块:与待测POF交换机的输出数据端口连接,用于监听待测POF交换机的转发行为,当转发行为发生变化时,向定时误差计算模块发送该变化时间;
监听待测POF交换机的转发行为,当转发行为发生变化时,如收到交换机转发的第一个数据包时,记录发生该变化的时间,提供给定时误差计算模块。
定时误差计算模块:基于idle定时的配置时间和转发行为变化的时间,计算idle定时误差。
从测试表项配置模块获取idle定时时间Ti和idle定时配置时间Tc,从转发监听模块获取转发行为变化时间Td,计算idle定时的百分比误差e=|Td-Tc-Ti|/Ti*100%。
测试前,按照图1所示,将待测POF交换机与测试系统相连,并清除现有流表。
如图2所示,本发明的POF交换机idle定时的测试方法,所述方法包括:
步骤1)现有规则清除完毕后,配置待测POF交换机流表,通过table_mod消息分别添加3个流表,通过flow_mod消息添加表项,表项配置如图3所示。3个流表的匹配域相同,本例中,为IP首部目的地址的最后一位。流表1含有1个表项,由于掩码为0x0,可以匹配任意数据包,动作为:Get Table Entry指令获得流表3中表项1的匹配值,保存在metadata域;SetTable Entry将其从metadata域取出,设置为流表2中表项1的匹配值;Goto Table进入流表2。流表2含有1个表项,其匹配值为1,动作为Output,转发端口为输出数据端口。流表3含有1个表项,为idle设置表项,匹配值为1。
步骤2)流表设置完毕后,向POF交换机发送数据流,发送数据流的速率为R,1/R比测试精度至少小一个量级,如此数据包之间的时间间隔足够小,idle设置表项被移除的时刻可以“恰好”有数据包到达,速率越大测试精度越高,但发送速率受到待测交换机处理速率的限制,数据包在交换机中不能排队等待,以免影响测试结果。
测试数据包为IP包,IP首部目的地址字段的最后一位为0,idle设置表项存在时,流表1的表项1可以获得idle设置表项的匹配值,即1,赋予流表2的表项1。测试数据包无法匹配流表2的表项,数据包被丢弃;idle设置表项被移除后,流表1的表项1无法得到idle设置表项的匹配值,流表2的表项1的匹配值将被赋为metadata的缺省值,即0。测试数据包将能够匹配流表2的表项1,数据包被转发出去。
步骤3)通过flow_mod消息设置idle设置表项的idle_timeout时间为Ti。
步骤4)记录设置idle定时的flow_mod消息发出的时刻Tc。
步骤5)监听输出数据端口,当idle设置表项被移除后,收取交换机转发的第一个数据包,并记录其接收时刻Td。
步骤6)计算idle定时与设置的定时之间的误差e=|Td-Tc-Ti|/Ti*100%。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。