一种基于以太网交换芯片的以太网流量生成和分析的方法

文档序号:8000589阅读:595来源:国知局
一种基于以太网交换芯片的以太网流量生成和分析的方法
【专利摘要】本发明利用以太网交换芯片的通用功能,基于以太网交换机的通用硬件架构,提供一种以太网流量生成和分析的方法,以实现流量生成,流量分析两大功能,具体包括:发送流量的报文内容构造、发送报文数量的控制,发送流量速率的控制,发送和接收流量的计数、接收流量的捕获,转发时延测量的功能,以及协议报文的交互功能。
【专利说明】—种基于以太网交换芯片的以太网流量生成和分析的方法
【技术领域】
[0001]本发明涉及数据通信中的流量分析技术,尤其涉及一种基于以太网交换芯片的以太网流量生成和分析的方法。
【背景技术】
[0002]随着以太网技术在通信领域的应用不断发展,小至家庭局域网(二层交换机),大到企业网和城域网(二三层交换机、路由器),甚至骨干网(传输设备、骨干路由器)都在广泛使用以太网接口,因此产生了以太网流量生成和分析设备(简称测试设备),针对具有以太网接口的通信设备(简称被测试设备),在研发和生产过程中进行测试分析。一般的测试场景为:测试设备与被测试设备之间通过网线连接了一个或多个物理端口,测试设备构造出特定内容的报文,以特定的速率通过某个物理端口发送到被测试设备,被测试设备接收到测试流量,经内部处理后,通过某个物理端口发送回到测试设备,测试设备对接收到的流量报文进行分析,得出相应的指标数据。而测试设备提供的功能概括分为流量生成和流量分析两个方面,其中流量生成包括:测试报文内容的构造,发送报文个数的控制,发送流量速率的控制;流量分析包括:发送和接收流量的计数,接收流量报文内容的捕获(即抓包),被测试设备转发时延的测量。
[0003]现有的测试设备一般采用FPGA芯片来实现流量的生成和分析,其研发成本高,周期长,技术难度大,同时FPGA具有功耗大的特点,在实际设备中需要使用大功率风扇辅助散热,所产生的噪声也对测试环境造成了影响。
[0004]目前,市面上成熟的商用以太网交换芯片一般用于二三层以太网交换机,主要面向企业和城域网用户。其芯片内部的处理流程一般为,当接收端口从物理线路上接收到完整的一帧以太网数据后,根据设定的二三层转发方式进行查表,得到出口信息,然后进入发送端口的发送队列后等待调度,在由流量整形功能(令牌桶)调整发送速率后,发送到物理线路上。在这个基本处理过程中,为了灵活地满足各种转发需求,一般会引入流分类功能,即设定内容匹配规则,对满足匹配条件的报文施加相应的处理动作。匹配规则可以选择通用的报文数据字段,也可以自定义偏移量和数据宽度。处理动作一般包括丢弃报文,重新指定出口,流量限速(令牌桶),修改报文内容等,其中流量限速动作又可以进一步衍生出带宽内动作和超过带宽动作。以太网交换芯片,结合通用处理器(CPU),构成了以太网交换机的基本硬件架构,该通用处理器一般通过特定总线接口(如PCI/SPI/GMII等)访问以太网交换芯片,对芯片的硬件寄存器进行配置,以及将CPU生成的报文插入到芯片内部的发送队列中,或者从芯片内部提取报文到CPU。

【发明内容】

[0005]本发明利用上述以太网交换芯片的通用功能,基于以太网交换机的通用硬件架构,提供一种以太网流量生成和分析的方法,以实现流量生成,流量分析两大功能,具体包括:发送流量的报文内容构造、发送报文数量的控制,发送流量速率的控制,发送和接收流量的计数、接收流量的捕获,转发时延测量的功能,以及协议报文的交互功能。
[0006]为达到上述目的,本发明的技术方案是这样实现:
[0007]本发明提供的一种基于以太网交换芯片的以太网流量生成和分析的方法,该方法包括:固定内容流量生成模块、变化内容流量生成模块、发送报文个数控制模块、发送流量速率控制模块、报文捕获模块、流量计数模块、报文时延测量模块及协议交互模块,其中,固定内容流量生成模块实现固定内容流量的生成方法,变化内容流量生成模块实现变化内容流量的生成方法,发送报文个数控制模块实现发送流量报文个数的控制方法,发送流量速率控制模块实现流量发送速率的控制方法,报文捕获模块实现接收流量的捕获方法、流量计数模块实现收发流量的计数方法、报文时延测量模块实现转发时延的测量方法,协议交互模块实现各类协议的测试方法,固定内容流量生成模块和变化内容流量生成模块,统一为流量生成模块,所述模块可单独或组合使用。
[0008]上述方案中,所述固定内容流量生成模块具体通过以太网交换芯片上的两个物理端口 A和B,配合CPU实现。其中端口 A为外部不可见端口且收发处于环回状态,定义为引擎端口,端口 B外部可见,并连接到了被测试设备,定义为发送端口。首先由CPU构造出用户指定内容的以太网测试报文,插入到引擎端口 A的发送队列,并发送到物理线路上,由于环回状态,该报文进入引擎端口 A的接收入口,利用流分类功能,将其复制到引擎端口 A和发送端口 B的发送队列。进入发送端口 B的发送队列的报文,随之发送到物理线路上,该报文作为测试设备生成的测试流量报文送往被测试设备。进入引擎端口 A发送队列的报文,再次重复上述过程,从而发送端口 B能够源源不断向被测试设备发送出内容固定的测试流量报文。进一步的,使用引擎端口上的多个发送队列或多个引擎端口,可以构造出多条不同内容的并发的测试流量。
[0009]上述方案中,所述变化内容流量生成模块具体为:在固定内容流量生成模块的基础上,配合使用引擎端口上的大容量的发送队列,实现内容变化的流量。首先将引擎端口的发送队列深度设置为最大,取决于交换芯片的报文缓存大小,定义最大队列深度为N,然后关闭引擎端口的发送功能,即发送队列中的报文将积压等待发送。然后CPU连续向引擎端口的发送队列注入N个内容变化的报文。最后打开引擎端口的发送功能。基于固定内容流量生成模块的工作流程,队列中N个内容变化的报文将被反复地复制到发送端口上,实现内容变化的持续流量。将固定内容流量生成模块和变化内容流量生成模块,统称为流量生成模块。
[0010]上述方案中,所述发送报文个数控制模块具体为:在流量生成模块的基础上,利用引擎端口的入口流分类功能中的流量限速功能,实现发送报文数量的精确控制。首先设置流量限速功能的令牌桶的工作模式为报文模式,即令牌数的消耗取决于报文个数而不是报文字节数。其次关闭令牌注入功能,不再有新令牌产生,每个报文消耗的令牌都是存量令牌。然后根据用户希望发送报文的数量,计算出所需要的令牌数,并设置为令牌桶的当前存量令牌数,同时确保令牌桶深度大于该令牌数。最后配置流量限速的带宽内动作为复制到引擎端口和发送端口,带宽外动作为丢弃。基于流量生成模块的工作流程,每一个环回进入引擎端口的报文,都会在通过流分类的流量限速时获得对应的动作,当存量令牌尚未耗尽时,报文会被复制到引擎端口和发送端口,当令牌数耗尽后,报文立即被丢弃,流量随之结束。[0011]上述方案中,所述发送流量速率控制模块具体为:在流量生成模块的基础上,配合引擎端口发送队列上的流量整形功能,实现流量发送速率的精确控制。首先在CPU向引擎端口发送队列注入报文前,将流量整形功能的令牌桶的令牌注入关闭,并清空存量令牌,此时令牌桶中无可用令牌,发送队列中的报文将积压在队列内等待可用令牌。然后由CPU注入报文到引擎端口的发送队列,所有报文处于等待发送状态。最后启动令牌注入功能,注入速率为用户希望的测试流量的发送速率,队列中的报文等待到可用令牌后开始发送,发送速率与令牌的注入速率一致。基于流量生成模块的工作流程,发送端口的报文发送速率与引擎端口的报文发送速率保持一致。通过使用多个引擎端口的发送队列及其流量整形功能,可以实现多条测试流量的相互独立的速率控制。
[0012]进一步的,当多条测试流量之间的速率存在一定比例时,可以优化为使用单个发送队列生成多条不同速率的流量,具体方法为:CPU向引擎端口的同一个发送队列注入每条流量对应的报文,每条流量注入报文的数量取决于流量之间的速率比例,最终发送队列中将形成一组报文序列,不同流量之间的报文个数比例对应于他们之间的速率比例,基于流量生成模块的工作流程,该报文序列将保持不变地通过发送端口发送出去,从而达到多条流量之间的速率保持固定比例,实现了单个队列生成不同速率的多条流量。
[0013]上述方案中,所述报文捕获模块具体利用以太网芯片上的一个物理端口,配合流分类功能和CPU实现指定内容和指定数量的报文的捕获和显示。该物理端口外部可见,并连接到了被测试设备,用于接收从被测试设备发送出来的报文,定义为接收端口。首先接收端口接收到被测试设备发送出来的报文,利用流分类功能识别出需要捕获的指定内容的报文,对于不符合内容要求的报文将不做捕获处理。对于符合指定内容要求的报文,流分类的流量限速功能将进行速率或数量的控制,对于超过限速的报文将不做进一步处理。对于通过限速检查的报文,利用流分类功能将该报文转发到CPU端口的发送队列,同时携带时间戳信息,然后CPU端口发送队列中的报文通过总线传送到CPU,运行在CPU上的软件模块接收到报文后,解析报文内容和时间戳信息,并呈现在用户交互界面上。
[0014]上述方案中,所述流量计数模块具体分为针对发送流量的计数和针对接收流量的计数。发送流量的计数利用引擎端口的流分类功能,对每一条流量,施加计数动作,统计发送报文的数量;接收流量的计数利用接收端口上的流分类功能,对接收到的所有报文施加计数动作,或针对特定内容的报文施加计数动作。
[0015]上述方案中,所述报文时延测量模块具体为:利用交换芯片上的一个处于环回状态的物理端口,定义为为时延测量端口,得到时延测量所需要的发送时间戳,再配合报文捕获模块,得到时延测量所需要的接收时间戳,从而计算出被测试设备的转发时延。首先CPU向引擎端口注入一个特定内容的报文,用于时延测量,报文从引擎端口发送出去并环回进入引擎端口,利用引擎端口的流分类功能识别出该特定测量报文,将其复制到时延测量端口和发送端口的发送队列,报文分别从发送端口和时延测量端口同时发送出去。时延测量端口设置为环回状态,测量报文随即重新进入该端口,利用流分类功能识别出该测量报文,将其送往CPU端口的发送队列,并携带时间戳Tl,最终CPU上的软件模块接收到该报文和时间戳。发送端口的报文送往被测试设备,经其转发处理后,送回到测试设备的接收端口,利用接收端口的流分类功能识别出该测量报文,将其送往CPU端口的发送队列,携带时间戳T2,最终CPU上的软件模块接收到该报文和时间戳,CPU上的软件模块计算出时延为T2 -Tl。
[0016]上述方案中,所述协议交互模块具体为:CPU上的软件协议模块生成协议报文,并直接插入到发送端口的发送队列,发送到被测试设备。测试设备的接收端口接收到被测试设备发出的响应协议报文后,通过流分类功能识别出特定的协议报文,转发到CPU端口,最终CPU上的软件协议模块接收到该报文。该交互序列也可以是先接收报文,再发送报文,并且可以反复进行,取决于具体协议的交互序列。
[0017]本发明基于通用的以太网交换芯片和以太网交换机的硬件架构,提供一种以太网流量生成和分析的方法,相比当前同类测试设备的实现,将大大降低研发成本和硬件成本,同时,基于交换机的硬件架构具有明显的低功耗和低噪音的优势,并且在设备体积和端口密度方面具有更大的潜力。
【专利附图】

【附图说明】
[0018]下面结合附图对本发明的【具体实施方式】作进一步详细的说明,其中:
图1是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法的功能结构
图;
图2是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中固定内容流量生成模块流程图;
图3是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中固定内容流量生成模块的多流量生成的流程图;
图4是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中变化内容流量生成模块流程图;
图5是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中发送报文个数控制模块流程图;
图6是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中令牌桶突发特性的示意图;
图7是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中发送流量速率控制模块流程图;
图8是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中发送流量速率控制模块的优化流程图;
图9是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中报文捕获模块流程图;
图10是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中报文流量计数模块的发送流量计数流程图;
图11是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中报文流量计数模块的接收流量计数流程图;
图12是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中报文时延测量模块流程图;
图13是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中报文时延测量模块的报文结构示意图; 图14是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中协议交互模块流程图;
图15是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中二层以太网交换机测试流程图;
图16是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中三层路由器测试流程图;
图17是本发明一种基于以太网交换芯片的以太网流量生成和分析的方法中三层以太网交换机测试流程图。
【具体实施方式】
[0019]为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
[0020]本发明利用以太网交换芯片的通用功能,基于以太网交换机的通用硬件架构,提供一种以太网流量生成和分析的方法,以实现流量生成,流量分析两大功能,具体包括:发送流量的报文内容构造、发送报文个数的控制,发送流量速率的控制,发送和接收流量的计数、接收流量的捕获(即抓包),转发时延测量的功能,以及协议报文的交互功能。
[0021]本发明所述的一种基于以太网交换芯片的以太网流量生成和分析的方法,如图1所示,该方法包括:固定内容流量生成模块、变化内容流量生成模块、发送报文个数控制模块、发送流量速率控制模块、报文捕获模块、报文流量计数模块、报文时延测量模块及协议交互模块,其中,固定内容流量生成模块实现固定内容流量的生成方法,变化内容流量生成模块实现变化内容流量的生成方法,发送报文个数控制模块实现发送流量报文个数的控制方法,发送流量速率控制模块实现流量发送速率的控制方法,报文捕获模块实现接收流量的捕获方法、报文流量计数模块实现收发流量的计数方法、报文时延测量模块实现转发时延的测量方法,协议交互模块实现各类协议的测试方法,所述模块可单独或组合使用。
[0022]如图2所示,固定内容流量生成模块具体通过以太网交换芯片上的两个物理端口,并配合CPU实现。其中一个端口为外部不可见端口且收发处于环回状态,定义为引擎端口,另一个端口外部可见,并连接到了被测试设备,定义为发送端口。具体方法为:
1、CPU构造出以太网报文,插入到引擎端口的发送队列;
2、该报文发送到物理线路上;
3、引擎端口设置为环回方式(MAC层或者PHY层的内环),所有本端口发送出去的报文都会回到本端口接收入口;
4、引擎端口接收到报文后,利用流分类功能施加报文复制动作,将报文复制后同时送往引擎端口和发送端口的发送队列;
5、进入发送端口发送队列的报文,发送到物理线路,送往被测试设备;
6、进入引擎端口发送队列的报文,再次重复步骤2。
基于上述方法,只要往引擎端口的发送队列注入一个报文,该报文就会持续反复地进入引擎端口,从而发送端口就可以持续发送出测试测量,并可以达到物理线速发送的性能。进一步地,作为一个测试设备,需要能够在一个端口同时发送出多条内容不同的测试流量,多流量的生成方法,如图3所示:
UCPU向引擎端口的队列I注入报文A,报文环回到引擎端口的入口 ;
2、CPU向引擎端口的队列2注入报文B,报文环回到引擎端口的入口;
3、引擎端口的流分类功能通过识别特定的内容,区分出A流量报文和B流量报文,并施加相应复制动作,将报文复制后分别送往引擎端口和发送端口的发送队列中。一个引擎端口上的不同流量可以复制到不同的发送端口,同样的,多个引擎端口上的多条流量也可以复制到同一个发送端口。
多流量情况下,引擎端口的流分类功能需要识别出报文属于哪条流量,据此来指定相应的复制端口。除了通过完整地检查报文内容来识别出流量外,还可以简化地实现为,对每条流量添加一个外层vlan tag,通过其中唯一的vlan id来标识流量,并在发送端口发送前剥掉该vlan tag。
[0023]如图4所示,变化内容流量生成模块在固定内容流量生成模块的基础上,配合使用引擎端口上的大容量的发送队列,实现内容变化的流量。具体为:
1、将引擎端口的发送队列深度扩展到最大,具体取决于交换芯片的报文缓存大小,假设队列深度为N个报文;
2、CPU连续向引擎端口的发送队列注入N个内容变化的报文;
3、启动引擎端口的发送;
4、报文环回后,利用引擎端口的流分类功能,最终复制到发送端口上。
[0024]如图5所示的发送报文个数控制模块的实现方法为利用引擎端口的入口流分类功能中的流量限速功能,实现发送报文数量的精确控制。具体为:
1、流量限速所使用的令牌桶工作模式设置为报文模式,即令牌数的消耗取决于报文个数而不是报文字节数;
2、、关闭令牌注入功能,不再有新令牌自动产生,报文通过与否完全取决于存量令牌
数;
3、根据需要发送的报文数量,假设为L,计算出对应的令牌数,并设置为令牌桶的当前存量令牌数,同时确保桶深度大于当前令牌数;
4、配置流量限速的带宽内动作为复制到引擎端口和发送端口;
5、配置流量限速的带宽外动作为丢弃;
6、CPU注入初始流量并启动发送;
7、报文环回到引擎端口后,开始向发送端口复制报文;
8、由于令牌桶没有新的令牌注入,当发送了L个数的报文后,存量令牌数耗尽,报文立即被丢弃,流量也随之结束。
[0025]流量速率控制模块的实现方法是,利用引擎端口发送队列的流量整形功能(shaper),我们可以控制该队列上报文发送的速率(速率单位为bps,比特每秒,或fps中贞每秒),从而也就决定了该流量在发送端口的发送速率。除此之外,我们还需要考虑最大速率和速率均匀度问题,以及如何优化队列资源利用。最大速率,即报文和报文之间不存在空闲的间隙,一般也叫做“线速”。这时候需要考虑,从引擎端口从入口收到一个包开始,经过流分类施加复制动作送往发送队列,一直等到报文真正开始发送到物理线路上为止,这整个过程所需要的时间,假设为Tl ;如果CPU只注入一个报文到引擎端口的发送队列,那么物理线路上报文和报文之间必然会间隔Tl时间;再设一帧报文从传输第一个bit到物理线路上,一直到整一帧的最后一个bit完成传输,所需的时间为T2,如果Τ2>T1,那么我们只需要在引擎端口连续注入两个报文,就能保证报文之间没有空闲间隔;T1 一般是固定的,取决于交换芯片的转发处理性能,而T2取决于物理线路速率以及包长,因此可以计算出需要注入多少个包才能满足线速性能,即T1/T2+1,也可以定义一个固定的保守值M,简化处理。关于速率均匀度,一般以太网交换芯片的令牌桶机制普遍存在突发(burst)特性,即在累积的令牌数耗尽之前,报文通过速率取决于实际物理线路的可用速率,这种情况一直持续到存量令牌数耗尽,然后新令牌注入的速率决定了报文的通过速率,这整个过程的报文通过速率如图6所示,而作为测试设备,需要始终保持一个恒定均匀的发送速率,因此需要通过如下方法控制流量整形功能的令牌桶,来达到均匀的发送速率,如图7所示,
1、在CPU流量注入前,停止新令牌注入,同时将存量令牌清空;
2、CPU注入M个报文到引擎端口的发送队列,此时由于令牌桶无可用令牌,队列中的报文将积压在队列内等待可用令牌;
3、启动令牌注入功能,注入速率是恒定均匀的,队列中的报文等待到可用令牌后开始发送,发送的速率完全依赖于令牌的注入速率,因此发送速率也是恒定均匀的。
进一步的,考虑到多条并发流量的情况下,每条流量都需要独立占用引擎端口的一个发送队列来控制发送速率,因此有限的队列资源成为了并发流量数的瓶颈,假设测试环境只对所有流量的速率总和有要求,且每条流量之间存在一定的速率比例,例如有三条流量A,B, C,他们之间的速率 比为1:1:2,那么对发送流量速率控制模块的优化方法如图8所示:
1、CPU往引擎端口的发送队列注入初始流量,按照速率比例注入对应的报文序列,序列为 A、B、C、C ;
2、引擎端口逐个发送并环回报文,报文的序列始终保持不变;
3、经过流分类复制到引擎端口和发送端口的报文序列也始终保持不变;
4、发送端口发送出去报文序列也始终保持不变。
由于报文序列始终不变,因此不同流量之间的速率比例也保持不变,从而使用单个队列生成了不同速率的多条流量。
[0026]如图9所示的报文捕获模块,利用以太网芯片上的一个物理端口,配合流分类功能和CPU实现指定内容和指定数量的报文的捕获和显示。该物理端口外部可见,并连接到了被测试设备,用于接收从被测试设备发送出来的报文,定义为接收端口。具体实现如下:
1、接收端口接收到从被测试设备发送出来的报文流量;
2、接收端口的流分类功能识别出需要捕获的特定内容的报文,对不符合匹配条件的报文不做捕获处理;
3、流分类的流量限速功能对符合匹配条件的报文进行数量或速率的控制,对于超出限速的报文不做进一步处理。
4、对于符合限速的报文,利用流分类功能将报文转发到CPU端口的发送队列,并携带时间戳信息;
5、CPU端口发送队列中的报文通过特定总线传送到CPU;
6、CPU上的软件模块接收到报文后,解析报文内容和时间戳信息,并通过交互界面显示出来。
[0027]报文流量计数模块具体分为发送流量的计数和接收流量的计数。如图10所示,发送流量的计数,在引擎端口上针对每一条流,利用流分类功能,加入一个计数动作。特别的,对于需要控制发送报文个数的流量,只对限速带宽内的报文进行计数。与发送流量的计数类似的,接收流量的计数如图11所示,在接收口上通过流分类的计数动作来统计接收流量,可以对接收端口收到的所有流量进行计数,也可以针对特定内容的流量。
[0028]报文时延测量模块用于测量一个报文在被测试设备内部停留的时间,即发送到被测试设备和从被测试设备接收到之间的时间差,一般称之为转发时延。如图12所示,需要利用以太网芯片上一个处于环回状态的端口(定义为时延测量端口),获取发送时间戳,具体如下:
UCPU向引擎端口注入一个特定内容的报文,用于时延测量;
2、报文从引擎端口发送出去并环回再次进入引擎端口;
3、引擎端口的流分类功能识别出该特定的测量报文,将其复制到时延测量端口和发送端口的发送队列。由于没有复制到引擎端口,因此该报文不会再次进入引擎端口,即只会被发送端口发送一次;
4、报文分别从发送端口和时延测量端口,同时发送出去,发送端口的报文送往被测试设备,经其转发处理后,将回到测试设备的某个接收端口,时延测量端口设置为环回状态,测量报文立即重新进入该端口 ;
5、时延测量端口的流分类功能识别出该测量报文,将其送往CPU端口的发送队列,并携带时间戳Tl;
6、CPU端口将携带着时间戳Tl的报文送到CPU,运行在CPU上的软件模块接收到报文,并解析出报文内容和时间戳;
7、从被测试设备发出的特定测量报文抵达了测试设备的接收端口,流分类功能识别出该特定报文,将其送往CPU端口的发送队列,携带时间戳T2 ;
8、CPU端口将携带着时间戳T2的报文送到CPU,运行在CPU上的软件模块接收到报文,并解析出报文内容和时间戳;
9、CPU上的软件模块计算出时延为T2- Tl。
进一步的,考虑误差问题,在存在多条并发测试流量的情况,时延测量报文可能会在发送端口的发送队列中积压一段时间,等待该队列中排在前面的其他报文完成发送,而由于时延测量端口总是处于空闲状态,这就会导致时延测量端口取到的时间戳Tl和该测量报文在发送端口实际发送的时间之间存在误差。针对上述问题,如果引擎端口在向发送端口复制流量的同时也向时延测量端口复制一份,也就是说时延测量端口与发送端口始终同时发送相同的流量,且端口速率相同,那么上述问题将得到避免。
另外,考虑到端口资源的利用效率,可以在设备范围内共享时延测量端口。一般时延的范围是毫秒级别的,也就是说一次时延测量的周期并不长,因此可以串行地在各个发送端口间依次进行测量。如果全局有两个时延测量端口,那么就可以同时进行两组时延测量,即时延测量端口的数量决定设备时延测试的性能,即性能和成本之间的平衡。
通常在测试某一条流量时,会关注其所需要的转发时延。该流量的任意一个报文的内容可能是完全相同的,而时延测试必然要求能够识别出特定的某个报文,才能确定收发时间。考虑到测试报文一般只关心报文头的内容(因为通信设备一般只关心报文头),而对净荷(payload)本身不做要求,因此针对时延测试的报文,在报文头后引入一个特定的数据段(delay tag),其内容包括标识符和序列号,如图13所示,标识符固定为某个数值,用于区分普通测量报文和时延测量报文,序列号可以唯一标识每个时延测量的报文,由于delay tag属于非标准协议字段,因此必须使用流分类功能中的自定义偏移量的匹配模式,匹配内容为delay tag内的标识符,而后由CPU上的软件模块来解析出序列号,并计算相同序列号报文的T2和Tl的差值。
[0029]当前的测试设备开始逐渐支持越来越多的协议交互的功能,例如ARP,IGMP, PPPoEdiscovery,这将大大方便针对协议功能的测试。基于以太网交换机的架构,实现协议交互模块非常方便。如图14所示,具体方法为:
UCPU上的软件协议模块生成协议报文,并直接插入到发送端口的发送队列,并发送到被测试设备;
2、接收端口收到被测试设备发出的协议报文后,通过流分类功能识别出特定的协议报文,转发到CPU端口。
步骤I和2先后顺序可交换,且可重复循环,取决于具体协议的交互序列。
[0030]实施例一,如图15所示,被测试设备是一台二层以太网交换机,其转发方式基于目的MAC地址的查找。当查找失败时,报文广播到所有端口(接收端口除外),而当查找成功时,报文只单播到对应的出口。对于接收到的每个报文的源MAC,交换机会记录其接收端口的信息。测试设备提供三个外部可见的端口为A、B、C,即前文所述的发送端口和接收端口,其中A、B分别拥有一个内部的引擎端口 X、Y,为其提供流量生成功能;被测试设备也提供三个外部可见端口为D、E、F,具备二层转发功能;AB⑶EF均工作在100 mbps (兆比特每秒)的速率。
通过下面几个步骤,我们来验证该二层交换机的转发行为。
步骤1:测试设备在端口 A上构造一条流量,目的MAC为FF:FF:FF:FF:FF:FF,源MAC为00:00:00:00:00:01,帧长度为64字节,数量为I个。这条流量将用于交换机学习MAC地址,使其记录MAC 00:00:00:00:00:01对应的端口为D。
利用“发送报文个数控制模块”控制发送数量,利用“流量计数模块”实现发送流量的计数,具体操作为:
I)引擎端口 X的入口流量限速令牌桶设置为报文模式;2)关闭新令牌注入;3)假设一个令牌对应一个报文,设置当前存量令牌数为1,设置最大桶深为I个令牌;4)设置流量限速的带宽内动作为复制到端口 A和端口 X,并进行计数动作;5)设置流量限速的带宽外动作为丢弃
利用“固定内容流量生成模块”生成测试流量,具体操作为
I)设置引擎端口 X为环回状态;2) CPU注入报文到引擎端口 X的发送队列1,报文的目的嫩(:为??:??:??:??:??:??,源嫩(:为00:00:00:00:00:01,长度为64字节,注入I个。报文经过环回后,经过流量限速功能的令牌桶,第I个报文符合带宽内的条件,被复制到端口 A和端口 X的发送队列;第2个报文超过带宽限制,被丢弃。复制到端口 A的报文将送往被测试设备的端口 D ;运行在CPU上的软件模块读取引擎端口 X的流分类的发送计数,显示在用户交互界面上。步骤2:被测试设备在端口 D接收到报文,由于其目的MAC为广播地址,因此广播到端口 E,F。同时,被测试设备记录下MAC 00:00:00:00:00:01对应的端口为D。
步骤3:测试设备接收端口 B、C接收到来自对端被测试设备发出的报文,同时利用“报文捕获模块”捕获报文内容,利用“流量计数模块”获得接收流量计数,具体操作为:
I)端口 B,C的流分类功能将所有接收到的报文转发到CPU端口,并携带时间戳,同时进行计数动作;2) CPU端口将报文传送到CPU ;3)运行在CPU上的软件模块接收到报文后,解析出报文内容和时间戳,然后在用户交互界面上显示出来,并读取端口 B、C上的接收计数,也一并在用户交互界面上显示出来。
步骤4:测试设备在端口 B上构造一条持续流量,目的MAC为00:00:00:00:00:01,源MAC 为 00:00:00:00:00:02,长度为 64 字节,速率为 IOOmbps0
利用“固定内容流量生成模块”和“发送流量速率控制模块”生成测试流量,利用“流量计数模块”实现发送流量计数,具体操作为:
1)设置引擎端口 Y为环回状态;2)引擎端口 Y的流分类动作设置为将报文复制到端口 B和端口 Y,同时进行计数动作;3)设置引擎端口 Y的队列I的流量整形功能的令牌桶,关闭新令牌注入,清空当前存量令牌;4) CPU注入报文到引擎端口 Y的发送队列1,报文的目的 MAC 为 00:00:00:00:00:01,源 MAC 为 00:00:00:00:00:02,长度为 64 字节。连续注入10个以保证线速性能,由于令牌桶无可用令牌,报文积压在发送队列中;5)设置流量整形令牌桶的令牌注入数量,假设一个令牌对应I个字节,注入的周期为125微秒,即每秒钟注入8000次,那么IOOmbps的速率需要每次注入:100000000/8/8000=1562.5个令牌;6)设置令牌桶深度为1563,大于每次刷新的令牌数即可;7)启动令牌注入功能。
令牌注入启动后,端口 B立即开始持续地以IOOmbps的速率向外发送报文,运行在CPU上的软件模块读取端口 Y的流分类发送计数,并在用户交互界面显示出来。
步骤5:被测试设备在端口 E上接收到报文,根据目的MAC 00:00:00:00:00:01查找出对应端口为D,将其转发到D端口。
步骤6:测试设备在端口 A上接收到来自被测试设备端口 D发出的报文,进行报文接收
计数
利用“流量计数模块”,端口 A的流分类功能将接收到的报文进行计数,运行在CPU上的软件模块读取端口 A的接收计数,并在用户交互界面显示出来。
经过上述几个步骤,利用测试设备提供的功能,我们可以验证被测试设备是否具备二层转发的能力,以及转发的性能是否达到lOOmbps。
[0031]实施例二,如图16所示,被测试设备为一台三层路由器,提供了四个端口:E、F、G、H,速率均为IG bps。设定路由规则配置为:
F 端口为通往 192.168.1.1 ~192.168.1.254 网段的接口,
G 端口为通往 192.168.2.1 ~192.168.2.254 网段的接口,
H 端口为通往 192.168.3.1 ~192.168.3.254 网段的接口,
测试设备提供四个外部端口:A、B、C、D,速率均为IG bps,内部有一个引擎端口 X和时延测量端口 Y,速率均为IG bps。
通过下述测试流量,我们来验证该路由器是否具备路由功能,以及转发性能。
从A端口发送三条测试流量,分别为: 1)目的IP为192.168.1.100,帧长为1500字节,速率为1000 pps,持续流量;
2)目的IP为192.168.2.100,帧长为1500字节,速率为2000 pps,持续流量;
3)目的IP为192.168.3.1?192.168.3.255递增循环变化,帧长为1500字节,速率为500mbps,持续流量。
同时,还将对流量192.168.1.100进行时延测量。
步骤1:利用“固定内容流量生成模块”,“变化内容流量生成模块”和“发送流量速率控制模块”,生成三条持续的测试流量,具体步骤为:
I)设置端口 X为环回;2)设置端口 X的流分类,添加三条流量识别规则,基于报文的最外层vlan tag中的vlan id,分别为:vlan id为I的报文识别为测试流量192.168.1.100,复制到端口 A,X的队列1,并计数;vlan id为2的报文识别为测试流量192.168.2.100,复制到端口 A,X的队列1,并计数;vlan id为3的报文识别为测试流量192.168.3.x,复制到端口 A,X的队列2,并计数;3)设置端口 A,在出口方向剥除所有报文的最外层vlan tag,该层vlan tag只在测试设备内部用于标识流量;4)设置端口 X发送队列I上的流量整形功能的令牌桶,工作模式为报文模式,关闭令牌注入功能,清空当前存量令牌;5) CPU注入以下报文序列到端口 X的发送队列I:目的IP为192.168.1.100,携带vlan id为I的vlantag,帧长为1500字节,报文注入数量2个;目的IP为192.168.2.100,携带vlan id为2的vlan tag,帧长为1500字节,报文注入数量4个;由于没有可用令牌,以上报文将积压在队列I中;6)设置端口 X发送队列I上的流量整形功能,假设I个令牌对应一个报文,令牌注入的平率是每秒8000次,而队列I上的总流量为3000pps,因此每次令牌注入数量为3/8个令牌,令牌桶的深度为1,即大于每次令牌注入数量即可,启动令牌注入功能,队列I上的报文开始发送,流量I和流量2按照1:2的比例,最终由发送端口 A发送出去,运行在CPU上的软件模块读取端口 X的流量I和流量2的流分类发送计数,并在用户交互界面显示出来;7)设置端口 X发送队列2上的流量整形功能的令牌桶,工作模式为字节模式,即消耗的令牌数取决于报文字节数,关闭令牌注入功能,清空当前存量令牌;8)设置发送端口 X的发送队列2的深度,使之能够容纳255个报文;9) CPU注入以下报文序列到端口 X的发送队列2:目的IP为192.168.3.1?192.168.3.255递增变化,携带vlan id为3的vlan tag,帧长1500字节,数量255个,由于没有可用存量令牌,以上报文将积压在队列2中;10)设置端口X发送队列2上的流量整形功能,假设I个令牌对应一个字节,令牌注入的平率是每秒8000次,而队列2上的总流量为500mbps,因此每次令牌注入数量为,500000000/8/8000=7812.5个令牌,设置令牌桶的深度为7813,即大于每次令牌注入数量即可,启动令牌注入功能,队列2上的报文开始发送,流量3以500mbps到速率由端口 A发送出去,运行在CPU上的软件模块读取端口 X的流量3的流分类发送计数,并在用户交互界面显示出来。
步骤2:被测试设备依据路由规则,转发接收到的三条流量,流量192.168.1.100转发到端口 F,流量192.168.2.100转发到端口 G,流量192.168.3.x转发到端口 H。
步骤3:测试设备在端口 B,C,D上接收到来自对端被测试设备发出的报文流量,利用“流量接收的计数模块”进行接收流量计数,具体操作为:
I)设置端口 B的流分类,匹配目的IP为192.168.1.100的报文,进行计数;2)设置端口 C的流分类,匹配目的IP为192.168.2.100的报文,进行计数;3)设置端口 D的流分类,匹配目的IP为192.168.3.X的报文,进行计数;4)运行在CPU上的软件模块读取端口 B、C、D的流分类计数,并在用户交互界面显示出来。
步骤4:利用“时延测量模块”,测量流量192.168.1.100的时延,具体操作方法为:
O设置将端口 A发送方向的所有流量镜像到端口 Y,这样两个端口在发送报文的时间上将达到完全的步调一致;2)设置端口 X的流分类,匹配vlan id为4094的报文,只复制到端口 A,并不复制到端口 X。这里的vlan id 4094用于在测试设备内部标识时延测量报文;3)设置端口 Y为环回;4)设置端口 Y的流分类,匹配vlan id为4094的报文,转发到CPU端口,并携带时间戳,丢弃所有其他接收到的报文;5)设置端口 B的流分类,匹配偏移量为第43?44字节为DDDD的报文,转发到CPU端口,并携带时间戳,在本例中,设定报文为TCP/UDP结构,第43个字节开始,是UDP的净荷数据,我们在此位置设置一个4字节的自定义数据段,即前文中的delay tag,标识符为两个字节,内容为DDDD,序列号为两个字节;6)CPU生成以下报文序列,注入到端口 X的队列I中,目的IP为192.168.1.100,携带vlan id为4094的vlan tag, UDP静荷的前两个字节为DDDD,随后两个字节为序列号,帧长1500字节,报文注入数量10个,前文所述的序列号分别为I?10递增;7)该序列报文从端口 X发送并环回到入口,利用流分类复制到端口 A和端口 Y,报文在端口 Y环回到入口,利用流分转发到CPU端口,并携带时间戳,报文在端口 A发送出去后,经过被测试设备路由转发到F端口,送到了测试设备的B端口,利用流分类功能转发到CPU端口,并携带时间戳;8)CPU上的软件模块依次收到20个报文,包含10组序列号,每个序列号对应有两个报文,携带不同的时间戳,分别计算这10组时间戳的差值,得到10个转发时延的数据,再进一步计算平均值,得到流量192.168.1.100的转发时延。
通过以上步骤,利用测试设备提供的功能,我们可以验证该路由设备的路由转发行为,以及转发的性能和时延。
[0032]实施例三,如图17所示,被测试设备为以太网三层交换机,提供了外部端口 B,该端口上绑定了三层接口 192.168.1.1,因此会响应ARP request报文(查询IP为192.168.1.1),测试设备提供了外部端口 A。
通过以下步骤,我们来验证该三层交换机的ARP协议交互功能。
步骤1:利用“协议交互模块”生成ARP request报文,具体操作为:CPU上的软件模块生成查询IP地址为192.168.1.1的ARP request报文,并插入到端口 A的发送队列中,随即报文发送到了被测试设备的端口 B ;
步骤2:被测试设备上的软件模块处理ARP request报文后,生成ARP reply报文,并从端口 B发送出来;
步骤3:利用“协议交互模块”和“报文捕获模块”,捕获并分析接收到的协议响应报文,具体操作为:
I)设置端口 A的流分类,将以太网类型字段为0806的报文转发到CPU端口 ;2)CPU上的软件模块解析接收到的ARP request报文,分析是否符合协议交互标准,并在用户交互界面上显示报文内容和分析结果。
通过以上步骤,利用测试设备提供的功能,我们可以验证被测试设备的协议交互行为。
【权利要求】
1.一种基于以太网交换芯片的以太网流量生成和分析的方法,该方法包括:固定内容流量生成模块、变化内容流量生成模块、发送报文个数控制模块、发送流量速率控制模块、报文捕获模块、流量计数模块、报文时延测量模块及协议交互模块,其中,固定内容流量生成模块实现固定内容流量的生成方法,变化内容流量生成模块实现变化内容流量的生成方法,发送报文个数控制模块实现发送流量报文个数的控制方法,发送流量速率控制模块实现流量发送速率的控制方法,报文捕获模块实现接收流量的捕获方法、流量计数模块实现收发流量的计数方法、报文时延测量模块实现转发时延的测量方法,协议交互模块实现各类协议的测试方法,固定内容流量生成模块和变化内容流量生成模块,统一为流量生成模块,所述模块可单独或组合使用。
2.如权利要求1所述的一种基于以太网交换芯片的以太网流量生成和分析的方法,其特征在于,所述固定内容流量生成模块具体通过以太网交换芯片上的两个物理端口 A和B,配合CPU实现,其中端口 A为外部不可见端口且收发处于环回状态,定义为引擎端口,端口 B外部可见,并连接到了被测试设备,定义为发送端口 ;首先由CPU构造出用户指定内容的以太网测试报文,插入到引擎端口 A的发送队列,并发送到物理线路上,由于环回状态,该报文进入引擎端口 A的接收入口,利用流分类功能,将其复制到引擎端口 A和发送端口 B的发送队列;进入发送端口 B的发送队列的报文,随之发送到物理线路上,该报文作为测试设备生成的测试流量报文送往被测试设备。进入引擎端口 A发送队列的报文,再次重复上述过程,从而发送端口 B能够源源不断向被测试设备发送出内容固定的测试流量报文;使用引擎端口上的多个发送队列或多个引擎端口,可以构造出多条不同内容的并发的测试流量。
3.如权利要求1所述的一种基于以太网交换芯片的以太网流量生成和分析的方法,其特征在于,所述变化内容流量生成模块具体为:在固定内容流量生成模块的基础上,配合使用引擎端口上的大容量的发送队列,实现内容变化的流量;首先将引擎端口的发送队列深度设置为最大,取决于交换芯片的报文缓存大小,定义最大队列深度为N,然后关闭引擎端口的发送功能,即发送队列中的报文将积压等待发送;然后CPU连续向引擎端口的发送队列注入N个内容变化的 报文;最后打开引擎端口的发送功能。
4.如权利要求1所述的一种基于以太网交换芯片的以太网流量生成和分析的方法,其特征在于,所述发送报文个数控制模块具体为:在流量生成模块的基础上,利用引擎端口的入口流分类功能中的流量限速功能,实现发送报文数量的精确控制;首先设置流量限速功能的令牌桶的工作模式为报文模式,即令牌数的消耗取决于报文个数而不是报文字节数;其次关闭令牌注入功能,不再有新令牌产生,每个报文消耗的令牌都是存量令牌;然后根据用户希望发送报文的数量,计算出所需要的令牌数,并设置为令牌桶的当前存量令牌数,同时确保令牌桶深度大于该令牌数;最后配置流量限速的带宽内动作为复制到引擎端口和发送端口,带宽外动作为丢弃。
5.如权利要求1所述的一种基于以太网交换芯片的以太网流量生成和分析的方法,其特征在于,所述发送流量速率控制模块具体为:在流量生成模块的基础上,配合引擎端口发送队列上的流量整形功能,实现流量发送速率的精确控制;首先在CPU向引擎端口发送队列注入报文前,将流量整形功能的令牌桶的令牌注入关闭,并清空存量令牌,此时令牌桶中无可用令牌,发送队列中的报文将积压在队列内等待可用令牌;然后由CPU注入报文到引擎端口的发送队列,所有报文处于等待发送状态;最后启动令牌注入功能,注入速率为用户希望的测试流量的发送速率,队列中的报文等待到可用令牌后开始发送,发送速率与令牌的注入速率一致。
6.如权利要求1所述的一种基于以太网交换芯片的以太网流量生成和分析的方法,其特征在于,所述报文捕获模块具体利用以太网芯片上的一个物理端口,配合流分类功能和CPU实现指定内容和指定数量的报文的捕获和显示,该物理端口外部可见,并连接到了被测试设备,用于接收从被测试设备发送出来的报文,定义为接收端口 ;首先接收端口接收到被测试设备发送出来的报文,利用流分类功能识别出需要捕获的指定内容的报文,对于不符合内容要求的报文将不做捕获处理;对于符合指定内容要求的报文,流分类的流量限速功能将进行速率或数量的控制,对于超过限速的报文将不做进一步处理;对于通过限速检查的报文,利用流分类功能将该报文转发到CPU端口的发送队列,同时携带时间戳信息,然后CPU端口发送队列中的报文通过总线传送到CPU,运行在CPU上的软件模块接收到报文后,解析报文内容和时间戳信息,并呈现在用户交互界面上。
7.如权利要求1所述的一种基于以太网交换芯片的以太网流量生成和分析的方法,其特征在于,所述流量计数模块具体分为针对发送流量的计数和针对接收流量的计数,发送流量的计数利用引擎端口的流分类功能,对每一条流量,施加计数动作,统计发送报文的数量;接收流量的计数利用接收端口上的流分类功能,对接收到的所有报文施加计数动作,或针对特定内容的报文施加计数动作。
8.如权利要求1所述的一种基于以太网交换芯片的以太网流量生成和分析的方法,其特征在于,所述报文时延测量模块具体为:利用交换芯片上的一个处于环回状态的物理端口,定义为时延测量端口,得到时延测量所需要的发送时间戳,再配合报文捕获模块,得到时延测量所需要的接收时间戳,从而计算出被测试设备的转发时延;首先CPU向引擎端口注入一个特定内容的报文,用于时延测量,报文从引擎端口发送出去并环回进入引擎端口,利用引擎端口的流分类功能识别出该特定测量报文,将其复制到时延测量端口和发送端口的发送队列,报文分别从发送端口和时延测量端口同时发送出去;时延测量端口设置为环回状态,测量报文随即重新进入该端口,利用流分类功能识别出该测量报文,将其送往CPU端口的发送队列,并携带时间戳Tl,最终CPU上的软件模块接收到该报文和时间戳;发送端口的报文送往被测试设备,·经其转发处理后,送回到测试设备的接收端口,利用接收端口的流分类功能识别出该测量报文,将其送往CPU端口的发送队列,携带时间戳T2,最终CPU上的软件模块接收到该报文和时间戳,CPU上的软件模块计算出时延为T2 - Tl。
9.如权利要求1所述的一种基于以太网交换芯片的以太网流量生成和分析的方法,其特征在于,所述协议交互模块具体为:CPU上的软件协议模块生成协议报文,并直接插入到发送端口的发送队列,发送到被测试设备。测试设备的接收端口接收到被测试设备发出的响应协议报文后,通过流分类功能识别出特定的协议报文,转发到CPU端口,最终CPU上的软件协议模块接收到该报文;该交互序列也可以是先接收报文,再发送报文,并且可以反复进行,取决于具体协议的交互序列。
【文档编号】H04L12/801GK103716248SQ201310227029
【公开日】2014年4月9日 申请日期:2013年6月7日 优先权日:2013年6月7日
【发明者】潘晶 申请人:潘晶
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1