CN114465924B - 网络设备测试方法、数据包发生方法和交换芯片 - Google Patents

网络设备测试方法、数据包发生方法和交换芯片 Download PDF

Info

Publication number
CN114465924B
CN114465924B CN202111601666.9A CN202111601666A CN114465924B CN 114465924 B CN114465924 B CN 114465924B CN 202111601666 A CN202111601666 A CN 202111601666A CN 114465924 B CN114465924 B CN 114465924B
Authority
CN
China
Prior art keywords
data packet
data packets
pipeline
output data
packets
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
Application number
CN202111601666.9A
Other languages
English (en)
Other versions
CN114465924A (zh
Inventor
田冰川
戴力
翟恩南
周禹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202111601666.9A priority Critical patent/CN114465924B/zh
Publication of CN114465924A publication Critical patent/CN114465924A/zh
Application granted granted Critical
Publication of CN114465924B publication Critical patent/CN114465924B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开实施例公开了一种网络设备测试方法、数据包发生方法和交换芯片。所述网络设备测试方法包括:获取输入数据包;基于所述输入数据包得到多个输出数据包,包括:基于所述输入数据包得到中间数据包,通过对所述中间数据包进行预设处理得到所述多个输出数据包,所述预设处理包括对所述中间数据包进行复制;向网络设备发送所述输出数据包,以对所述网络设备进行测试。

Description

网络设备测试方法、数据包发生方法和交换芯片
技术领域
本公开涉及网络测试技术领域,具体涉及一种网络设备测试方法、数据包发生方法和交换芯片。
背景技术
网络性能测试是指通过向网络中注入高速数据流,明确被测设备在高负载下的转发性能与潜在缺陷。在传统的网络性能测试中,将多个服务器连接到被测设备,通过服务器向被测设备发送流量,但由于单台服务器的发包能力有限,因此当对Tbps级别的高速数据流的转发速率等参数进行测试时,往往需要几十台服务器共同发包,设备成本、功耗和场地空间成本均很高。
发明内容
为了解决相关技术中的问题,本公开实施例提供一种网络设备测试方法、数据包发生方法和交换芯片。
第一方面,本公开实施例中提供了一种网络设备测试方法,包括:
获取输入数据包;
基于所述输入数据包得到多个输出数据包,包括:基于所述输入数据包得到中间数据包,通过对所述中间数据包进行预设处理得到所述多个输出数据包,所述预设处理包括对所述中间数据包进行复制;
向网络设备发送所述输出数据包,以对所述网络设备进行测试。
第二方面,本公开实施例中提供了一种数据包发生方法。
具体地,所述数据包发生方法,包括:
获取输入数据包;
基于所述输入数据包得到多个输出数据包,包括:基于所述输入数据包得到中间数据包,通过对所述中间数据包进行预设处理得到所述多个输出数据包,所述预设处理包括对所述中间数据包进行复制;
输出所述多个输出数据包。
结合第二方面,本公开在第二方面的第一种实现方式中,还包括:基于所述中间数据包更新所述输入数据包。
结合第二方面,本公开在第二方面的第二种实现方式中,所述基于所述输入数据包得到中间数据包,包括通过对所述输入数据包进行第一随机化处理,得到所述中间数据包;
所述通过对所述中间数据包进行预设处理得到多个输出数据包,包括通过对所述中间数据包进行复制得到多个复制数据包,对所述多个复制数据包分别进行第二随机化处理,得到所述多个输出数据包。
结合第二方面的第二种实现方式,本公开在第二方面的第三种实现方式中,所述方法在交换芯片中实现,所述交换芯片包括多个部件,所述部件包括:外部出方向流水线、内部出方向流水线、流量管理模块;
所述通过将所述输入数据包进行第一随机化处理,得到所述中间数据包,包括通过所述内部出方向流水线对所述输入数据包进行第一随机化处理,得到所述中间数据包;
所述通过对所述中间数据包进行复制得到多个复制数据包,包括通过所述流量管理模块对所述中间数据包进行复制得到所述多个复制数据包;
所述对所述多个复制数据包分别进行第二随机化处理,得到所述多个输出数据包,包括通过多个外部出方向流水线分别对所述多个复制数据包进行第二随机化处理,得到所述多个输出数据包。
结合第二方面的第三种实现方式,本公开在第二方面的第四种实现方式中,所述部件还包括内部入方向流水线,所述方法还包括:
通过所述内部入方向流水线从所述内部出方向流水线接收所述中间数据包;
通过所述内部入方向流水线将所述中间数据包发送到所述流量管理模块,使用所述流量管理模块中的单播功能将所述中间数据包作为更新的输入数据包发送到所述内部出方向流水线,
其中,所述通过对所述中间数据包进行复制得到多个复制数据包,包括通过所述内部入方向流水线将所述中间数据包发送到所述流量管理模块,使用所述流量管理模块中的多播功能对所述中间数据包进行复制得到多个复制数据包并发送到所述多个外部出方向流水线。
结合第二方面的第四种实现方式,本公开在第二方面的第五种实现方式中,其中:
所述获取输入数据包,包括获取多个不同输入数据包;
所述基于所述输入数据包得到多个输出数据包,包括以串行方式对所述多个不同输入数据包进行处理,得到所述多个输出数据包,其中,在任一时刻,所述交换芯片的不同部件处理的数据包对应于不同的输入数据包。
结合第二方面的第二种实现方式,本公开在第二方面的第六种实现方式中,还包括:对于所述输入数据包、中间数据包、复制数据包、输出数据包中的任意一种数据包:
使用N个计数器,依次在计数时间间隔t内对所述数据包进行连续计数,第i个计数器计数完毕之后,第i+1个计数器开始计数,i<N,第N个计数器计数完毕之后,第1个计数器开始计数,N的最小值由计数时间间隔t和读取计数器的时间间隔T的计时误差e确定,时间间隔T由计数时间间隔t和误差e确定;
在时刻T1读取所述N个计数器的第一组计数值;
在时刻T2读取所述N个计数器的第二组计数值,T2-T1=T;
根据所述第一组计数值和所述第二组计数值、计数时间间隔t计算所述数据包的速率。
结合第二方面,本公开在第二方面的第七种实现方式中,所述方法还包括对所述中间数据包串行执行两级限速,包括:
在第一级限速中,按照预设规则丢弃中间数据包,使得未丢弃的中间数据包的传输速率小于等于预设阈值,且未丢弃的中间数据包的时间间隔大致相等;
在第二级限速中,每隔m个中间数据包,丢弃连续的n个中间数据包。
结合第二方面,本公开在第二方面的第八种实现方式中,所述方法还包括:
向指定设备发送多个输出数据包;
接收由所述指定设备转发回的所述输出数据包;
根据发送的输出数据包的数量、时间戳和接收的输出数据包的数量、时间戳,计算网络时延。
结合第二方面的第八种实现方式,本公开在第二方面的第九种实现方式中,所述根据发送的输出数据包的数量、时间戳和接收的输出数据包的数量、时间戳,计算网络时延,包括:
对于第一个发送的输出数据包,将当前时间戳记录为发送时间戳偏移量,对于后续发送的输出数据包,记录当前时间戳与发送时间戳偏移量的差值的第一累加值;
对于第一个接收的输出数据包,将当前时间戳记录为接收时间戳偏移量,对于后续接收的输出数据包,记录当前时间戳与接收时间戳偏移量的差值的第二累加值;
根据发送的输出数据包的数量、接收的输出数据包的数量、发送时间戳偏移量、接收时间戳偏移量、第一累加值、第二累加值,计算所述网络时延。
第三方面,本公开实施例中提供了一种交换芯片。
具体地,所述交换芯片,包括多个部件,所述部件包括内部入方向流水线、内部出方向流水线、外部出方向流水线、流量管理模块,其中:
所述内部出方向流水线获取输入数据包;
所述内部出方向流水线基于所述输入数据包得到中间数据包,将所述中间数据包发送到所述内部入方向流水线;
所述内部入方向流水线将所述中间数据包发送到所述流量管理模块;
所述流量管理模块和所述外部出方向流水线通过对所述中间数据包进行预设处理得到多个输出数据包,所述预设处理包括对所述中间数据包进行复制;
所述外部出方向流水线输出所述多个输出数据包。
结合第三方面,本公开的第三方面的第一种实现方式中,所述内部出方向流水线基于所述输入数据包得到中间数据包,包括所述内部出方向流水线通过对所述输入数据包进行第一随机化处理,得到所述中间数据包;
所述流量管理模块和所述外部出方向流水线通过对所述中间数据包进行预设处理得到多个输出数据包,包括:
所述流量管理模块对所述中间数据包进行复制得到多个复制数据包并发送到所述多个外部出方向流水线;
所述多个外部出方向流水线分别对所述多个复制数据包进行第二随机化处理,得到所述多个输出数据包。
结合第三方面的第一种实现方式,本公开的第三方面的第二种实现方式中,所述交换芯片还包括N个计数器,用于依次在计数时间间隔t内对所述输入数据包、中间数据包、复制数据包、输出数据包中的任意一种数据包进行连续计数,第i个计数器计数完毕之后,第i+1个计数器开始计数,i<N,第N个计数器计数完毕之后,第1个计数器开始计数,N的最小值由计数时间间隔t和读取计数器的时间间隔T的计时误差e确定,时间间隔T由计数时间间隔t和误差e确定,
其中,所述N个计数器在时刻T1的第一组计数值、在时刻T2的第二组计数值以及计数时间间隔t用于计算所述数据包的速率,T2-T1=T。
结合第三方面,本公开的第三方面的第三种实现方式中,所述流量管理模块将所述中间数据包作为更新的输入数据包发送到所述内部出方向流水线。
结合第三方面,本公开的第三方面的第四种实现方式中,其中,在所述入方向流水线中对所述中间数据包串行执行两级限速,包括:
在第一级限速中,按照预设规则丢弃中间数据包,使得未丢弃的中间数据包的传输速率小于等于预设阈值,且未丢弃的中间数据包的时间间隔大致相等;
在第二级限速中,每隔m个中间数据包,丢弃连续的n个中间数据包。
结合第三方面,本公开的第三方面的第五种实现方式中,其中:
所述部件还包括外部入方向流水线;
所述外部出方向流水线向指定设备发送多个输出数据包,对于第一个发送的输出数据包,将当前时间戳记录为发送时间戳偏移量,对于后续发送的输出数据包,记录当前时间戳与发送时间戳偏移量的差值的第一累加值;
所述外部入方向流水线接收由所述指定设备转发回的所述输出数据包,对于第一个接收的输出数据包,将当前时间戳记录为接收时间戳偏移量,对于后续接收的输出数据包,记录当前时间戳与接收时间戳偏移量的差值的第二累加值,
其中,输出数据包的数量、接收的输出数据包的数量、发送时间戳偏移量、接收时间戳偏移量、第一累加值、第二累加值用于计算从所述交换芯片到所述指定设备之间的网络时延。
第四方面,本公开实施例中提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现如第一方面至第二方面的第九种实现方式中的任一项所述的方法。
第五方面,本公开实施例中提供了一种计算机程序产品,包括计算机指令,该计算机指令被处理器执行时实现如第一方面至第二方面的第九种实现方式中的任一项所述的方法步骤。
根据本公开实施例提供的技术方案,首先获取输入数据包,然后基于所述输入数据包得到中间数据包,最后通过对所述中间数据包进行包括对所述中间数据包进行复制的预设处理得到并输出多个输出数据包,解决了目前获取高速数据流成本较高的技术问题。在本技术方案中,基于输入数据包得到中间数据包,对所述中间数据包进行包括复制的预设处理得到并输出多个输出数据包,无需多台服务器共同发包,即可获得Tbps级别的高速数据流,降低了设备成本、功耗和场地空间成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:
图1示出根据本公开的实施例的数据包发生方法的流程图;
图2示出根据本公开实施例的交换芯片的结构示意图;
图3示出在图2所示交换芯片中实现所述数据包发生方法的示意图;
图4A-4C示出在根据本公开的实施例的数据包发生方法中对所述中间数据包串行执行两级限速的方法的示意图;
图5示出以t=1s,e=0.5s,N=5,T1=3.1,T2=5.8为例对所述数据包发生方法中的任一种数据包的速率进行测量的方法的示意图;
图6示出根据本公开实施例的数据包发生方法中网络时延进行高精度测量的方法的示意图;
图7示出根据本公开实施例的数据包发生方法的应用场景示意图;
图8示出根据本公开实施例的交换芯片的结构框图;
图9示出适于用来实现根据本公开实施例的方法的计算机系统的结构示意图。
具体实施方式
下文中,将参考附图详细描述本公开的示例性实施例,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施例无关的部分。
在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
在本公开中,对用户信息或用户数据的获取均为经用户授权、确认,或由用户主动选择的操作。
上文提及,在传统的网络性能测试中,将多个服务器连接到被测设备,通过服务器向被测设备发送流量,但由于单台服务器的发包能力有限,因此当对Tbps级别的高速数据流的转发速率等参数进行测试时,往往需要几十台服务器共同发包,设备成本、功耗和场地空间成本均很高。
鉴于此,本公开提出一种数据包发生方法,通过首先获取输入数据包,然后基于所述输入数据包得到中间数据包,最后通过对所述中间数据包进行包括对所述中间数据包进行复制的预设处理得到并输出多个输出数据包,解决了目前获取高速数据流成本较高的技术问题。在本技术方案中,基于输入数据包得到中间数据包,对所述中间数据包进行包括复制的预设处理得到并输出多个输出数据包,无需多台服务器共同发包,即可获得Tbps级别的高速数据流,降低了设备成本、功耗和场地空间成本。
图1示出根据本公开的实施例的数据包发生方法的流程图。如图1所示,所述数据包发生方法包括以下步骤S101-S103:
在步骤S101中,获取输入数据包;
在步骤S102中,基于所述输入数据包得到多个输出数据包;
在步骤S103中,输出所述多个输出数据包。在本公开实施例中,所述基于所述输入数据包得到多个输出数据包可以包括:基于所述输入数据包得到中间数据包,通过对所述中间数据包进行预设处理得到所述多个输出数据包,所述预设处理包括对所述中间数据包进行复制。在本公开实施例中,还可以基于所述中间数据包更新所述输入数据包。
在本公开实施例中,所述基于所述输入数据包得到中间数据包,包括通过对所述输入数据包进行第一随机化处理,得到所述中间数据包;所述通过对所述中间数据包进行预设处理得到多个输出数据包,包括通过对所述中间数据包进行复制得到多个复制数据包,对所述多个复制数据包分别进行第二随机化处理,得到所述多个输出数据包。
根据本公开的实施例,所述基于所述输入数据包得到中间数据包,包括通过对所述输入数据包进行第一随机化处理,得到所述中间数据包;所述通过对所述中间数据包进行预设处理得到多个输出数据包,包括通过对所述中间数据包进行复制得到多个复制数据包,将所述复制数据包作为所述输出数据包。
根据本公开的实施例,所述基于所述输入数据包得到中间数据包,包括将所述输入数据包作为所述中间数据包,所述通过对所述中间数据包进行预设处理得到多个输出数据包,包括通过对所述中间数据包进行复制得到多个复制数据包,对所述多个复制数据包分别进行第二随机化处理,得到所述多个输出数据包。
根据本公开的实施例,所述基于所述输入数据包得到中间数据包,包括将所述输入数据包作为所述中间数据包,所述通过对所述中间数据包进行预设处理得到多个输出数据包,包括通过对所述中间数据包进行复制得到多个复制数据包,将所述复制数据包作为所述输出数据包。
本公开实施例还提供了一种网络设备测试方法,包括:获取输入数据包;基于所述输入数据包得到多个输出数据包,包括:基于所述输入数据包得到中间数据包,通过对所述中间数据包进行预设处理得到所述多个输出数据包,所述预设处理包括对所述中间数据包进行复制;向网络设备发送所述输出数据包,以对所述网络设备进行测试。
根据本公开实施例提供的技术方案,首先获取输入数据包,然后基于所述输入数据包得到中间数据包,最后通过对所述中间数据包进行包括对所述中间数据包进行复制的预设处理得到并输出多个输出数据包,解决了目前获取高速数据流成本较高的技术问题。在本技术方案中,基于输入数据包得到中间数据包,对所述中间数据包进行包括复制的预设处理得到并输出多个输出数据包,无需多台服务器共同发包,即可获得Tbps级别的高速数据流,降低了设备成本、功耗和场地空间成本。
在本公开实施例中,所述数据包发生方法可以在交换芯片中实现。
图2示出根据本公开实施例的交换芯片的结构示意图。
交换芯片包括交换机内用于数据包转发的专用集成芯片或可编程交换芯片,其包括多个部件。如图2所示,交换芯片通常包括入方向流水线(Ingress pipeline)、流量管理模块(Traffic Manager)和出方向流水线(Egress pipeline),入方向流水线、流量管理模块和出方向流水线为交换芯片内的硬件或固件模块。所述入方向流水线负责数据包从端口入方向进入交换芯片后所执行的逻辑,例如基于路由表确定出端口、流量过滤和媒体访问控制(Media Access Control,MAC)地址学习等;所述流量管理模块接收入方向流水线送来的数据包,并根据入方向流水线指定的出端口,将数据包送往对应的出方向流水线;所述出方向流水线负责数据包离开流量管理模块后所执行的逻辑,例如MAC地址更新、生存时间值(Time to Live,TTL)更新、校验和重算等。当多个入方向流水线同时向一个出方向流水线发送数据包时,数据包将在流量管理模块内排队。
在图2所示的交换芯片中,所述入方向流水线包括中央处理单元(CentralProcessing Unit,CPU)入方向流水线、外部入方向流水线和内部入方向流水线,所述出方向流水线包括CPU出方向流水线、外部出方向流水线和内部出方向流水线。其中,所述CPU出方向流水线通过PCIE总线连接至外接CPU,外接CPU通过外围组件高速互联(PeripheralComponent Interconnect Express,PCIE)总线连接至所述CPU入方向流水线;所述外部入方向流水线和外部出方向流水线均通过光纤连接至外部设备(例如其他交换机、服务器等);所述内部出方向流水线通过内部硬件连线连接至所述内部入方向流水线。
当图2中的交换芯片为可编程交换芯片时,可以利用P4等语言对其进行编程,以此控制交换芯片对数据包的处理行为,例如数据包转发、数据包过滤、包头增删和包头字段修改等,从而解决传统交换芯片由于功能被固定在硬件中,仅能控制平面进行有限的配置,无法进行复杂功能的定制的技术问题。当所述交换芯片为可编程交换芯片时,由实际处理数据包的功能模块构成的数据平面的全部功能均发生在芯片内部,通过对硬件编程实现;由控制数据平面行为的功能模块组成的控制平面的功能运行在外接CPU中,而不是交换芯片内。控制平面程序通过软件在CPU上完成计算,并将计算结果下发至数据平面的芯片中;或读取数据平面芯片内存储的数据后,通过软件在CPU上完成计算,并将计算结果反馈给用户。
图3示出在图2所示交换芯片中实现所述数据包发生方法的示意图。
如图3所示,在S1所示的步骤中,交换芯片获取输入数据包。具体地,可以是交换芯片的CPU入方向流水线从外接CPU获取输入数据包,并将所述输入数据包转发至内部出方向流水线。其中,所述输入数据包通常带有特殊标记,以与来自CPU的协议报文相区分。所述CPU入方向流水线识别到所述特殊标记后,即将所述输入数据包转发至某个预先指定的内部端口对应的内部出方向流水线。
在S2-S4所示的步骤中,交换芯片基于所述输入数据包得到多个输出数据包。具体地,所述交换芯片基于所述输入数据包得到多个输出数据包可以是,在S2所示的步骤中,内部出方向流水线基于所述输入数据包得到中间数据包,并通过内部硬件连线将所述中间数据包转发至内部入方向流水线;在S3所示的步骤中,内部入方向流水线将所述中间数据包发送至流量管理模块;在S4所示的步骤中,使用流量管理模块中的多播功能对所述中间数据包进行复制得到多个输出数据包并发送到多个外部出方向流水线。
在S5所示的步骤中,所述交换芯片输出所述多个输出数据包。具体地,可以是交换芯片的所述多个外部出方向流水线输出所述多个输出数据包。
根据本公开实施例提供的技术方案,交换芯片首先获取输入数据包,然后基于所述输入数据包得到中间数据包,最后通过对所述中间数据包进行包括对所述中间数据包进行复制的预设处理得到并输出多个输出数据包,解决了目前获取高速数据流成本较高的技术问题。在本技术方案中,交换芯片基于输入数据包得到中间数据包,对所述中间数据包进行包括复制的预设处理得到并输出多个输出数据包,无需多台服务器共同发包,即可获得Tbps级别的高速数据流,降低了设备成本、功耗和场地空间成本。
在本公开实施例中,在图3中S6所示的步骤中,交换芯片还可以使用所述流量管理模块中的单播功能将所述中间数据包作为更新的输入数据包发送到所述内部出方向流水线,然后重复执行S2-S5所示的步骤,从而实现输入数据包在所述交换芯片内高速循环,每轮循环期间产生自身的若干副本,并将所述副本作为数据流发出,以此产生稳定的高速数据流。
在本公开实施例中,所述CPU入方向流水线从外接CPU获取输入数据包可以是,CPU入方向流水线从外接CPU获取多个不同输入数据包。所述交换芯片基于所述输入数据包得到多个输出数据包可以是,以串行方式对所述多个不同输入数据包进行处理,得到所述多个输出数据包,其中,在任一时刻,所述交换芯片的不同部件处理的数据包对应于不同的输入数据包,从而使所述输入数据包在内部的每一轮循环都形成一条多阶段流水线,通过多个数据包在同一时间分别占用流水线的不同阶段,将内部端口的循环速率提升至最大。例如,在同一时间,内部出方向流水线处理的数据包对应于第一输入数据包,内部入方向流水线处理的数据包对应于第二输入数据包,流量管理模块处理的数据包对应于第三输入数据包,外部出方向流水线处理的数据包对应于第四输入数据包。根据本公开的实施例,数据包对应于输入数据包,是指所述数据包是所述输入数据包,或是基于所述输入数据包生成的中间数据包、复制数据包、输出数据包之一。采用这种方式,每秒钟内输入数据包最多可累计循环1.488*10^8轮,每次向交换芯片注入不超过100个种子包即可自动产生最高3.2Tbps的稳定流量。
上述在交换芯片中实现的数据包发生方法,产生的多个输出数据包由于是对中间数据包经过复制处理得到的,因此该多个输出数据包与所述输入数据包完全相同,使得输出的数据包的五元组,即源IP、目的IP、源端口、目的端口和协议号,也一致,从而导致在诸如网络性能测试等应用场景下,这些输出的数据包通过被测设备时,总是触发相同的行为,例如总是匹配到相同的路由条目与访问控制列表(Access Control List,ACL)条目,导致高速缓存一直命中,进而不能反映真实场景下的性能,对于记录连接状态的网络设备,由于该类设备基于五元组记录数据流状态,数据包五元组完全相同会导致设备内仅有1条记录,因此无法测试到多流并发时潜在的性能瓶颈,进而也无法触发连接建立的过程,从而使性能测试变得不充分。
鉴于此,在本公开实施例中,所述内部出方向流水线基于所述输入数据包得到中间数据包可以是,通过所述内部出方向流水线将所述输入数据包进行第一随机化处理,得到所述中间数据包。所述通过对所述中间数据包进行复制得到多个复制数据包可以是,通过多个外部出方向流水线分别对所述多个复制数据包进行第二随机化处理,得到所述多个输出数据包。
由于外部出方向流水线通常集成的功能较多,没有很多硬件资源留给数据包随机化处理,因此复杂的随机算法不能放在该流水线。然而,对复制得到的数据包而言,外部出方向流水线又是其唯一经历的流水线,因此需要在该流水线中进行某种程度的随机,以区分同一轮多播复制出的多个复制数据包。基于上述原因,根据本公开的实施例,可以将第一随机化处理的复杂度设置为高于第二随机化处理的复杂度,即,将数据包随机分为两个阶段,复杂的第一随机化处理放在硬件资源相对宽松的内部出方向流水线,用以区分多轮多播复制出的复制数据包;而将简单的二次随机化处理放在外部出方向流水线,以降低对外部出方向流水线的硬件资源占用,区分单轮多播复制出的多个数据包。
例如,所述第一随机化处理可以由通过在每轮循环中修改发送至所述内部出方向流水线的输入数据包的五元组取值实现,修改五元组取值可以采用直接随机修改法、直接递增修改法、间接随机修改法和简洁递增修改法。所述直接随机修改法为将指定字段替换为交换芯片生成的指定范围内的随机数;所述直接递增修改法为每轮循环对给定字段的取值加k,若超出指定范围的上界,则重置为指定范围的下界,其中,k为正整数。所述间接随机修改法和间接递增修改法分别与所述直接随机修改法和直接递增修改法类似,不同的是,随机出的或递增得到的值并非直接作为五元组内字段的取值,而是作为下标索引去查询交换芯片寄存器数组,并将寄存器数组中对应元素的取值读出,作为五元组内字段的取值。这里的寄存器数组可以由用户给定,并通过控制平面下发至芯片。
所述第二随机化处理在外部出方向流水线实现,由于所述外部出方向流水线通常没有足够的硬件资源留给数据包随机,因此所述第二随机化处理可以采用简单字段修改方式实现。所述简单字段修改方式实现是指,将五元组中某个字段的指定比特置为与出端口编号相关的常量。例如对于第一个出端口,可以将port字段最高位置为0,对于第二个出端口,可以将port字段最高位置为1,通过这种方法实现不同端口间输出数据包的区分。
根据本公开实施例提供的技术方案,通过在内部出方向流水线将所述输入数据包进行第一随机化处理,解决了各轮循环中输入数据包完全相同,导致得到的中间数据包也完全相同的技术问题,并通过在多个外部出方向流水线分别对所述多个复制数据包进行第二随机化处理,解决了在同一轮循环中,对所述中间数据包复制得到的多个输出数据包完全相同的技术问题,从而使获得的输出数据包更接近于真实数据,在网络性能测试等应用中提升了被测设备性能瓶颈的检出率。
图4A-4C示出在根据本公开的实施例的数据包发生方法中对所述中间数据包串行执行两级限速的方法的示意图。
如图4A所示,所述在交换芯片中实现的数据包发生方法还可以包括对所述中间数据包串行执行两级限速,其中,在第一级限速中,按照预设规则丢弃中间数据包,使得未丢弃的中间数据包的传输速率小于等于预设阈值,且未丢弃的中间数据包的时间间隔大致相等;在第二级限速中,每隔m个中间数据包,丢弃连续的n个中间数据包。其中,所述未丢弃的中间数据包的时间间隔大致相等是指,所述未丢弃的中间数据包的时间间隔在误差允许范围内相等,所述误差允许范围可以根据实际情况自行设定。
具体地,在所述第一级限速中,可以在所述交换芯片的内部入方向流水线中,首先基于流量测速器(Meter)实现第一级限速,所述Meter可以是设置在交换芯片数据平面的硬件Meter,所述硬件Meter可以通过令牌桶算法实现。例如,可以以令牌桶的承诺信息速率CIR(Committed information Rate)均匀地向令牌桶中投入令牌,当数据包到达令牌桶时,若所述令牌桶中有令牌,则将该数据包转发,若令牌桶中没有令牌,则将该数据包丢弃或者使该数据包在令牌桶中等待下一个令牌到达。通过这样的方式,实现了对数据包速率大于所述令牌桶的CIR的数据包的均匀限速。
在所述第二级限速中,可以通过交换芯片中的寄存器实现“每有连续m个数据包通过后,丢弃接下来连续n个数据包”的语义,从而实现第二级限速。具体而言,可以使用交换芯片中的寄存器对所述中间数据包进行计数,所述寄存器的初始值为0,每有一个数据包通过第一阶段限速后,则递增寄存器的取值,若寄存器取值达到m+n,则重置为0;若寄存器递增前的取值小于m,则放通当前数据包,否则丢弃当前数据包,其中,m和n均为正整数。
在本公开实施例中,如图4B所示,可以通过第一级和第二级两阶段限速的配合,提升数据流限速精度。假设硬件Meter仅支持50%、25%和10%三个限速档位,在图4B所示的示例中,需要将速率为100Mpps的数据流限速至20Mpps。不难发现,仅通过硬件Meter无法达成目标,只能选择25%的限速档位作为近似,限速误差达到20%。如果使用本公开的实施例两级限速策略,可以首先选择硬件Meter为稍大于目标速率的档位,再通过寄存器限速对速率进行更为精确的调整。例如,首先选择Meter限速档位为25%,得到了速率为25Mpps的数据流,接下来配置寄存器限速参数为“每通过4个数据包后丢弃1个数据包”,即丢包比例为1/(4+1)=20%,即可得到25Mpps*(1-20%)=20Mpps的数据流,满足了速率限制要求。
在本公开实施例中,如图4C所示,可以通过第一级和第二级两阶段限速的配合,实现具备流量突发功能的数据流限速。仍然假设硬件Meter仅支持50%、25%和10%三个限速档位,在图4C所示的示例中,需要将100Mpps的数据流限速至20Mpps,其中每2000个数据包为一组,以50%的速率突发。由于硬件Meter为均匀限速,不支持流量突发,因此仅使用Meter无法达成目标。如果使用本公开的实施例两级限速策略,可以首先利用硬件Meter控制组内相邻数据包间隔,再通过寄存器限速控制组间数据包间隔。例如,首先选择Meter限速档位为50%,则Meter输出的数据包被均匀限速到50Mpps,接下来配置寄存器限速参数为“每通过2000个数据包后丢弃3000个数据包”,即丢包比例为3000/(2000+3000)=60%,即可得到50Mpps*(1-60%)=20Mpps的数据流。该数据流每2000个数据包为一组,以50Mpps的速率发出,发完一组后等待相当于3000/50%=6000个数据包发送的时间后,继续发送下一组2000个数据包,综合速率仍为20Mpps,在具备流量突发功能的同时满足了速率限制要求。
根据本公开实施例提供的技术方案,通过对所述中间数据包串行执行两级限速,提升了数据流限速精度,并能实现具备流量突发功能的数据流限速,提高了所述数据包发生方法的敏捷性和通用性。
在本公开实施例中,可以对所述数据包发生方法中的任一种数据包的速率进行测量。
传统的数据包速率测量方法包括,读取计数器取值c1;等待一小段时间t,所述时间t由CPU计时获得;读取计数器取值c2;根据公式pps=(c2-c1)/t计算数据包速率。该方法仅能用于粗略的速率测量,其测量值可产生最大约10%的波动。波动产生的根源在于计时误差,而计时误差来源于如下三方面:(1)所述计算数据包速率等操作通过设置于控制平面的程序执行实现,所述设置于控制平面的程序运行在CPU中,执行时间受操作系统、其他进程/线程影响较大,每一步的执行时间都没有保障;(2)计数器取值的读取依赖于CPU与交换芯片之间的数据同步,而软硬件同步耗时存在波动;(3)等待时间t由CPU控制,而CPU计时可存在数十毫秒的误差。因此,由于计时存在误差,c1与c2之间所经过的时间无法精确表征,最终引起计算出的数据包速率出现误差。
鉴于此,在本公开实施例中,提出了可以通过不依赖控制平面的计时精度对所述数据包发生方法中任一种数据包的速率进行测量的方法。所述不依赖控制平面的计时精度对所述数据包发生方法中任一种数据包的速率进行测量的方法包括,对于所述输入数据包、中间数据包、复制数据包、输出数据包中的任意一种数据包:使用N个计数器,依次在计数时间间隔t内对所述数据包进行连续计数,第i个计数器计数完毕之后,第i+1个计数器开始计数,i<N,第N个计数器计数完毕之后,第1个计数器开始计数,N的最小值由计数时间间隔t和读取计数器的时间间隔T的计时误差e确定,读取计数器的时间间隔T由计数时间间隔t和误差e确定;在时刻T1读取所述N个计数器的第一组计数值;在时刻T2读取所述N个计数器的第二组计数值,T2-T1=T;根据所述第一组计数值和所述第二组计数值、计数时间间隔t计算所述数据包的速率。
在本公开实施例中,所述N为正整数,其取值通过以下方法实现:为保证两次读取计数器期间能够覆盖至少1个完整的计数时间间隔t,读取计数器的时间间隔T至少取为2t。考虑如CPU的计时误差等误差带来的影响,为了保障在所述误差最大的情况下依然能够覆盖至少1个计数时间间隔t,读取计数器的时间间隔T应该取为2t+e;此时从芯片的视角看,实际读取计数器的时间间隔T为(2t+e)±e,即2t至2t+2e之间。例如当实际读取计数器的时间间隔T为2t时,可以覆盖2-3个计数时间间隔t;当实际读取计数器的时间间隔T为2t+2e时,至多可以覆盖个计数时间间隔t,其中,/>表示向上取整。换句话说,在两次计数器读取结果中,至多有/>个计数器的取值发生了变化。在上述各类情况中,第2个或倒数第2个发生变化的计数器,其增量恰好对应时间t内的数据包数目。当循环使用计数器时,由于需要知道哪些计数器发生了变化,因此至少需要一个取值没有发生变化的计数器作为参照,其下下个计数器,即为所需要的第2个发生变化的计数器。因此,至少需要/>个计数器,来完成对一条数据流的高精度实时速率统计。例如,当t=1s且e=0.5s时,至少需要5个计数器,N=5。
以t=1s,e=0.5s,N=5为例,在本公开实施例中,对所述数据包发生方法中的任一种数据包的速率进行测量包括:读取5个计数器的取值c1[0]、c1[1]、c1[2]、c1[3]和c1[4];等待2.5秒;读取5个计数器的取值c2[0]、c2[1]、c2[2]、c2[3]和c2[4];设i为某个索引,使得c1[i]=c2[i]且c1[(i+1)%5]<c2[(i+1)%5],由于此时t=1s,因此当前速率pps=c2[(i+2)%5]-c1[(i+2)%5],其中,%为取模运算。
图5示出以t=1s,e=0.5s,N=5,T1=3.1,T2=5.8为例对所述数据包发生方法中的任一种数据包的速率进行测量的方法的示意图。
如图5所示,c[0]-c[4]为数据平面内的5个计数器,在第0-4秒内,活跃计数器分别为c[0]-c[4],从第5秒开始,活跃计数器重新变为c[0],并如此循环。自第3秒起,数据包以每秒10个的速率均匀发出,图5示出各个时刻下计数器组的取值;对计数器组的两次读取操作分别发生在3.1秒与5.8秒,根据两时刻间计数器取值的差值,可以从图5所示表格中得出第一个发生变化的计数器索引为(i+1)%5=(2+1)%5=3,因此,下一个计数器c[4]的差值即为测量得到的速率,即pps=10,与实际情况一致。相比之下,若使用传统方法测量速率,则测出的pps=(9+10+8)/2.5=10.8,与真实值相比偏大8%。
根据本公开实施例提供的技术方案,通过设置多个计数器依次在计数时间间隔t内对所述数据包进行连续计数,并根据前后两组组计数值和计数时间间隔t计算所述数据包的速率,避免了如CPU的计时误差等控制平面的计时误差为数据包速率测量带来的影响,提高了测量精度。
在本公开实施例中,还可以对所述数据包发生方法中的网络时延进行测量。
传统的网络时延测量方法包括:连接测试设备与被测设备,使得测试设备发出的数据包由被测设备转发回测试设备;发送n个数据包,记录每个数据包的序号与时间戳;同时接收n个数据包,记录每个数据包的序号与时间戳;计算每个数据包从被测试设备发出到被测试设备收到所经历的时延,并求出n个数据包时延的平均值作为实验测量结果。该方法可以用于时延较大,例如毫秒级的场景,例如控制平面可以通过ping来测量网络中两设备间的往返时延。然而,当被测设备时延较低,例如微秒级甚至纳秒级时,控制平面的软件执行耗时将长于被测设备时延,此时测量结果存在较大误差。此外,该测试方法也无法直接应用于数据平面,其原因在于,在网络性能测试等场景下,时延测量发出的数据包数目往往较大,而交换芯片的内存资源非常有限,无法针对数据包存储两个时间戳。
鉴于此,在本公开实施例中,提出了对所述数据包发生方法中的网络时延进行高精度测量的方法。对所述数据包发生方法中的网络时延进行高精度测量的方法包括:向指定设备发送多个输出数据包;接收由所述指定设备转发回的所述输出数据包;根据发送的输出数据包的数量、时间戳和接收的输出数据包的数量、时间戳,计算网络时延。其中,所述指定设备即被测设备,所述根据发送的输出数据包的数量、时间戳和接收的输出数据包的数量、时间戳,计算网络时延,包括:对于第一个发送的输出数据包,将当前时间戳记录为发送时间戳偏移量,对于后续发送的输出数据包,记录当前时间戳与发送时间戳偏移量的差值的第一累加值;对于第一个接收的输出数据包,将当前时间戳记录为接收时间戳偏移量,对于后续接收的输出数据包,记录当前时间戳与接收时间戳偏移量的差值的第二累加值;根据发送的输出数据包的数量、接收的输出数据包的数量、发送时间戳偏移量、接收时间戳偏移量、第一累加值、第二累加值,计算所述网络时延。
图6示出根据本公开实施例的数据包发生方法中网络时延进行高精度测量的方法的示意图。如图6所示,可以在外部出方向流水线记录所述发送时间戳偏移量tx_offset和第一累加值tx_sum=tx_sum+(tx_timestamp-tx_offset),其中,tx_timestamp为外部出方向流水线的当前时间戳,在外部出方向流水线通过发包计数器记录所述发送的输出数据包的数量tx_count;在外部入方向流水线记录所述接收时间戳偏移量rx_offset和第二累加值rx_sum=rx_sum+(rx_timestamp-rx_offset),其中,rx_timestamp为外部入方向流水线的当前时间戳,在外部入方向流水线通过发包计数器记录所述发送的输出数据包的数量rx_count。
当数据平面完成数据包的发送与接收后,控制平面读取交换芯片内寄存器的取值,包括tx_count、tx_offset、tx_sum、rx_count、rx_offset和tx_sum,并通过公式delay=(rx_offset+rx_sum/rx_count)-(tx_offset+tx_sum/tx_count)计算得到所述网络时延。当被测设备不存在丢包时,时延为:
delay=(rx_offset+rx_sum/rx_count)-(tx_offset+tx_sum/tx_count)=(r[0]+∑(r[i]-r[0])/n)-(t[0]+∑(t[i]-t[0])/n)=(∑r[i])/n-(∑t[i])/n。
根据本公开实施例提供的技术方案,通过在数据平面即交换芯片内首先完成时间戳信息的记录和统计计算,然后在控制平面计算所述网络时延,避免了传统测量方法中,将每个数据包的时间戳信息发送至控制平面带来的时延干扰,大幅提高了网络时延测量的精度。同时,通过在外部出流水线方向和外部入流水线方向分布记录发送和接收的时间戳偏移量与当前时间戳的差值,大幅降低了数据量,使得具有有限内存资源的交换芯片也可顺利实现时间戳相关信息的记录,进而实现网络时延的测试。
图7示出根据本公开实施例的数据包发生方法的应用场景示意图。如图7所示,所述数据包发生方法可以应用于交换芯片,所述交换芯片包括流量管理模块、外部入方向流水线、外部出方向流水线、内部入方向流水线和内部出方向流水线。在所述交换芯片中,可以通过在所述内部出方向流水线设置第一随机化处理单元,以在每轮循环中修改发送至所述内部出方向流水线的输入数据包的五元组的取值,从而在每轮循环中获得不同的中间数据包;可以通过在所述外部出方向流水线设置第二随机化处理单元,以在同一轮循环中修改由所述流量管理模块多播复制出的、发送至所述外部出方向流水线各端口的多个数据包,从而在同一轮循环中获得多个不同的输出数据包;可以通过在所述内部入方向流水线设置数据包限速单元,以提高数据流限速精度并实现具备流量突发功能的数据流限速;可以通过在所述外部出方向流水线设置高精度速率测量单元,以实现对所述数据包发生方法中任一种数据包的速率的高精度测量;还可以在所述外部出方向流水线设置发送端时延测量单元,以记录发送的输出数据包的发送时间戳的偏移量、累加值和所述发送的输出数据包的数量,在所述外部入方向流水线设置接收端时延测量单元,以记录接收的输出数据包的接收时间戳的偏移量、累加值和所述接收的输出数据包的数量,并根据上述记录的参数计算网络时延。
根据本公开实施例提供的技术方案,通过在内部出方向流水线将所述输入数据包进行第一随机化处理,解决了各轮循环中输入数据包完全相同,导致得到的中间数据包也完全相同的技术问题,并通过在多个外部出方向流水线分别对所述多个复制数据包进行第二随机化处理,解决了在同一轮循环中,对所述中间数据包复制得到的多个输出数据包完全相同的技术问题,从而使获得的输出数据包更接近于真实数据,在网络性能测试等应用中提升了被测设备性能瓶颈的检出率;通过对所述中间数据包串行执行两级限速,提升了数据流限速精度,并能实现具备流量突发功能的数据流限速,提高了所述数据包发生方法的敏捷性和通用性;通过设置多个计数器依次在计数时间间隔t内对所述数据包进行连续计数,并根据前后两组组计数值和计数时间间隔t计算所述数据包的速率,避免了如CPU的计时误差等控制平面的计时误差为数据包速率测量带来的影响,提高了测量精度;通过在数据平面即交换芯片内首先完成时间戳信息的记录和统计计算,然后在控制平面计算所述网络时延,避免了传统测量方法中,将每个数据包的时间戳信息发送至控制平面带来的时延干扰,大幅提高了网络时延测量的精度,同时,通过在外部出流水线方向和外部入流水线方向分布记录发送和接收的时间戳偏移量与当前时间戳的差值,大幅降低了数据量,使得具有有限内存资源的交换芯片也可顺利实现时间戳相关信息的记录,进而实现网络时延的测试。
图8示出根据本公开实施例的交换芯片的结构框图。
如图8所示,所述交换芯片包括多个部件,所述部件包括内部入方向流水线、内部出方向流水线、外部出方向流水线、流量管理模块,其中:
所述内部出方向流水线获取输入数据包;
所述内部出方向流水线基于所述输入数据包得到中间数据包,将所述中间数据包发送到所述内部入方向流水线;
所述内部入方向流水线将所述中间数据包发送到所述流量管理模块;
所述流量管理模块和所述外部出方向流水线通过对所述中间数据包进行预设处理得到多个输出数据包,所述预设处理包括对所述中间数据包进行复制;
所述外部出方向流水线输出所述多个输出数据包。
根据本公开实施例提供的技术方案,首先获取输入数据包,然后基于所述输入数据包得到中间数据包,最后通过对所述中间数据包进行包括对所述中间数据包进行复制的预设处理得到并输出多个输出数据包,解决了目前获取高速数据流成本较高的技术问题。在本技术方案中,基于输入数据包得到中间数据包,对所述中间数据包进行包括复制的预设处理得到并输出多个输出数据包,无需专用集成芯片或多台服务器共同发包,即可获得Tbps级别的高速数据流,成本低、敏捷性高,且可跟随标准化协议的迭代更新进行升级,通用性好。
在本公开实施例中,所述内部出方向流水线基于所述输入数据包得到中间数据包,包括所述内部出方向流水线通过对所述输入数据包进行第一随机化处理,得到所述中间数据包;所述流量管理模块和所述外部出方向流水线通过对所述中间数据包进行预设处理得到多个输出数据包,包括:所述流量管理模块对所述中间数据包进行复制得到多个复制数据包并发送到所述多个外部出方向流水线;所述多个外部出方向流水线分别对所述多个复制数据包进行第二随机化处理,得到所述多个输出数据包。
根据本公开实施例提供的技术方案,通过在内部出方向流水线将所述输入数据包进行第一随机化处理,解决了各轮循环中输入数据包完全相同,导致得到的中间数据包也完全相同的技术问题,并通过在多个外部出方向流水线分别对所述多个复制数据包进行第二随机化处理,解决了在同一轮循环中,对所述中间数据包复制得到的多个输出数据包完全相同的技术问题,从而使获得的输出数据包更接近于真实数据,在网络性能测试等应用中提升了被测设备性能瓶颈的检出率。
在本公开实施例中,所述交换芯片还包括N个计数器,用于依次在计数时间间隔t内对所述输入数据包、中间数据包、复制数据包、输出数据包中的任意一种数据包进行连续计数,第i个计数器计数完毕之后,第i+1个计数器开始计数,i<N,第N个计数器计数完毕之后,第1个计数器开始计数,N的最小值由计数时间间隔t和读取计数器的时间间隔T的计时误差e确定,时间间隔T由计数时间间隔t和误差e确定,其中,所述N个计数器在时刻T1的第一组计数值、在时刻T2的第二组计数值以及计数时间间隔t用于计算所述数据包的速率,T2-T1=T。
根据本公开实施例提供的技术方案,通过设置多个计数器依次在计数时间间隔t内对所述数据包进行连续计数,并根据前后两组组计数值和计数时间间隔t计算所述数据包的速率,避免了如CPU的计时误差等控制平面的计时误差为数据包速率测量带来的影响,提高了测量精度。
在本公开实施例中,所述流量管理模块将所述中间数据包作为更新的输入数据包发送到所述内部出方向流水线。
在本公开实施例中,在所述入方向流水线中对所述中间数据包串行执行两级限速,包括:在第一级限速中,按照预设规则丢弃中间数据包,使得未丢弃的中间数据包的传输速率小于等于预设阈值,且未丢弃的中间数据包的时间间隔大致相等;在第二级限速中,每隔m个中间数据包,丢弃连续的n个中间数据包。
根据本公开实施例提供的技术方案,通过对所述中间数据包串行执行两级限速,提升了数据流限速精度,并能实现具备流量突发功能的数据流限速,提高了所述数据包发生方法的敏捷性和通用性。
在本公开实施例中,所述部件还包括外部入方向流水线;所述外部出方向流水线向指定设备发送多个输出数据包,对于第一个发送的输出数据包,将当前时间戳记录为发送时间戳偏移量,对于后续发送的输出数据包,记录当前时间戳与发送时间戳偏移量的差值的第一累加值;所述外部入方向流水线接收由所述指定设备转发回的所述输出数据包,对于第一个接收的输出数据包,将当前时间戳记录为接收时间戳偏移量,对于后续接收的输出数据包,记录当前时间戳与接收时间戳偏移量的差值的第二累加值,其中,输出数据包的数量、接收的输出数据包的数量、发送时间戳偏移量、接收时间戳偏移量、第一累加值、第二累加值用于计算从所述交换芯片到所述指定设备之间的网络时延。
根据本公开实施例提供的技术方案,通过在数据平面即交换芯片内首先完成时间戳信息的记录和统计计算,然后在控制平面计算所述网络时延,避免了传统测量方法中,将每个数据包的时间戳信息发送至控制平面带来的时延干扰,大幅提高了网络时延测量的精度。同时,通过在外部出流水线方向和外部入流水线方向分布记录发送和接收的时间戳偏移量与当前时间戳的差值,大幅降低了数据量,使得具有有限内存资源的交换芯片也可顺利实现时间戳相关信息的记录,进而实现网络时延的测试。
图9示出适于用来实现根据本公开实施例的方法的计算机系统的结构示意图。
如图9所示,计算机系统900包括处理单元901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行上述实施例中的各种处理。在RAM 903中,还存储有系统900操作所需的各种程序和数据。处理单元901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。其中,所述处理单元901可实现为CPU、GPU、TPU、FPGA、NPU、交换芯片等处理单元。
特别地,根据本公开的实施例,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括计算机指令,该计算机指令被处理器执行时实现上文所述的方法步骤。在这样的实施例中,该计算机程序产品可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过可编程硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中电子设备或计算机系统中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (13)

1.一种网络设备测试方法,包括:
获取输入数据包;所述方法在交换芯片中实现,所述交换芯片包括多个部件,所述部件包括:外部出方向流水线、流量管理模块,内部入方向流水线;
基于所述输入数据包得到多个输出数据包,包括:基于所述输入数据包得到中间数据包,通过所述内部入方向流水线将所述中间数据包发送到所述流量管理模块,使用所述流量管理模块中的多播功能对所述中间数据包进行复制得到多个复制数据包并发送到多个外部出方向流水线;
还包括对所述中间数据包串行执行两级限速,包括:在第一级限速中,按照预设规则丢弃中间数据包,使得未丢弃的中间数据包的传输速率小于等于预设阈值,且未丢弃的中间数据包的时间间隔相等;在第二级限速中,每隔m个中间数据包,丢弃连续的n个中间数据包;
向网络设备发送所述输出数据包,以对所述网络设备进行测试。
2.一种数据包发生方法,包括:
获取输入数据包;所述方法在交换芯片中实现,所述交换芯片包括多个部件,所述部件包括:外部出方向流水线、流量管理模块,内部入方向流水线;
基于所述输入数据包得到多个输出数据包,包括:基于所述输入数据包得到中间数据包,通过所述内部入方向流水线将所述中间数据包发送到所述流量管理模块,使用所述流量管理模块中的多播功能对所述中间数据包进行复制得到多个复制数据包并发送到多个外部出方向流水线;
还包括对所述中间数据包串行执行两级限速,包括:在第一级限速中,按照预设规则丢弃中间数据包,使得未丢弃的中间数据包的传输速率小于等于预设阈值,且未丢弃的中间数据包的时间间隔相等;在第二级限速中,每隔m个中间数据包,丢弃连续的n个中间数据包;
输出所述多个输出数据包。
3.根据权利要求2所述的方法,还包括:
基于所述中间数据包更新所述输入数据包。
4.根据权利要求2所述的方法,其中:
所述基于所述输入数据包得到中间数据包,包括通过对所述输入数据包进行第一随机化处理,得到所述中间数据包;
所述通过对所述中间数据包进行预设处理得到多个输出数据包,包括通过对所述中间数据包进行复制得到多个复制数据包,对所述多个复制数据包分别进行第二随机化处理,得到所述多个输出数据包。
5.根据权利要求4所述的方法,其中:
所述部件还包括:内部出方向流水线;
所述通过将所述输入数据包进行第一随机化处理,得到所述中间数据包,包括通过所述内部出方向流水线对所述输入数据包进行第一随机化处理,得到所述中间数据包;
所述通过对所述中间数据包进行复制得到多个复制数据包,包括通过所述流量管理模块对所述中间数据包进行复制得到所述多个复制数据包;
所述对所述多个复制数据包分别进行第二随机化处理,得到所述多个输出数据包,包括通过多个外部出方向流水线分别对所述多个复制数据包进行第二随机化处理,得到所述多个输出数据包。
6.根据权利要求5所述的方法,其中,所述方法还包括:
通过所述内部入方向流水线从所述内部出方向流水线接收所述中间数据包;
通过所述内部入方向流水线将所述中间数据包发送到所述流量管理模块,使用所述流量管理模块中的单播功能将所述中间数据包作为更新的输入数据包发送到所述内部出方向流水线。
7.根据权利要求6所述的方法,其中:
所述获取输入数据包,包括获取多个不同输入数据包;
所述基于所述输入数据包得到多个输出数据包,包括以串行方式对所述多个不同输入数据包进行处理,得到所述多个输出数据包,其中,在任一时刻,所述交换芯片的不同部件处理的数据包对应于不同的输入数据包。
8.根据权利要求4所述的方法,还包括:对于所述输入数据包、中间数据包、复制数据包、输出数据包中的任意一种数据包:
使用N个计数器,依次在计数时间间隔t内对所述数据包进行连续计数,第i个计数器计数完毕之后,第i+1个计数器开始计数,i<N,第N个计数器计数完毕之后,第1个计数器开始计数,N的最小值由计数时间间隔t和读取计数器的时间间隔T的计时误差e确定,时间间隔T由计数时间间隔t和误差e确定;
在时刻T1读取所述N个计数器的第一组计数值;
在时刻T2读取所述N个计数器的第二组计数值,T2-T1=T;
根据所述第一组计数值和所述第二组计数值、计数时间间隔t计算所述数据包的速率。
9.根据权利要求2所述的方法,还包括:
向指定设备发送多个输出数据包;
接收由所述指定设备转发回的所述输出数据包;
根据发送的输出数据包的数量、时间戳和接收的输出数据包的数量、时间戳,计算网络时延,其中,所述根据发送的输出数据包的数量、时间戳和接收的输出数据包的数量、时间戳,计算网络时延,包括:
对于第一个发送的输出数据包,将当前时间戳记录为发送时间戳偏移量,对于后续发送的输出数据包,记录当前时间戳与发送时间戳偏移量的差值的第一累加值;
对于第一个接收的输出数据包,将当前时间戳记录为接收时间戳偏移量,对于后续接收的输出数据包,记录当前时间戳与接收时间戳偏移量的差值的第二累加值;
根据发送的输出数据包的数量、接收的输出数据包的数量、发送时间戳偏移量、接收时间戳偏移量、第一累加值、第二累加值,计算所述网络时延。
10.一种交换芯片,包括多个部件,所述部件包括内部入方向流水线、内部出方向流水线、外部出方向流水线、流量管理模块,其中:
所述内部出方向流水线获取输入数据包;
所述内部出方向流水线基于所述输入数据包得到中间数据包,将所述中间数据包发送到所述内部入方向流水线;
所述内部入方向流水线将所述中间数据包发送到所述流量管理模块;
所述流量管理模块将所述中间数据包作为更新的输入数据包发送到所述内部出方向流水线;
在所述入方向流水线中对所述中间数据包串行执行两级限速,包括:在第一级限速中,按照预设规则丢弃中间数据包,使得未丢弃的中间数据包的传输速率小于等于预设阈值,且未丢弃的中间数据包的时间间隔相等;在第二级限速中,每隔m个中间数据包,丢弃连续的n个中间数据包;
所述流量管理模块和所述外部出方向流水线通过对所述中间数据包进行预设处理得到多个输出数据包,所述预设处理包括对所述中间数据包进行复制;
所述外部出方向流水线输出所述多个输出数据包。
11.根据权利要求10所述的交换芯片,其中:
所述内部出方向流水线基于所述输入数据包得到中间数据包,包括所述内部出方向流水线通过对所述输入数据包进行第一随机化处理,得到所述中间数据包;
所述流量管理模块和所述外部出方向流水线通过对所述中间数据包进行预设处理得到多个输出数据包,包括:
所述流量管理模块对所述中间数据包进行复制得到多个复制数据包并发送到多个外部出方向流水线;
所述多个外部出方向流水线分别对所述多个复制数据包进行第二随机化处理,得到所述多个输出数据包。
12.根据权利要求11所述的交换芯片,还包括N个计数器,用于依次在计数时间间隔t内对所述输入数据包、中间数据包、复制数据包、输出数据包中的任意一种数据包进行连续计数,第i个计数器计数完毕之后,第i+1个计数器开始计数,i<N,第N个计数器计数完毕之后,第1个计数器开始计数,N的最小值由计数时间间隔t和读取计数器的时间间隔T的计时误差e确定,时间间隔T由计数时间间隔t和误差e确定,
其中,所述N个计数器在时刻T1的第一组计数值、在时刻T2的第二组计数值以及计数时间间隔t用于计算所述数据包的速率,T2-T1=T。
13.根据权利要求10所述的交换芯片,其中:
所述部件还包括外部入方向流水线;
所述外部出方向流水线向指定设备发送多个输出数据包,对于第一个发送的输出数据包,将当前时间戳记录为发送时间戳偏移量,对于后续发送的输出数据包,记录当前时间戳与发送时间戳偏移量的差值的第一累加值;
所述外部入方向流水线接收由所述指定设备转发回的所述输出数据包,对于第一个接收的输出数据包,将当前时间戳记录为接收时间戳偏移量,对于后续接收的输出数据包,记录当前时间戳与接收时间戳偏移量的差值的第二累加值,
其中,输出数据包的数量、接收的输出数据包的数量、发送时间戳偏移量、接收时间戳偏移量、第一累加值、第二累加值用于计算从所述交换芯片到所述指定设备之间的网络时延。
CN202111601666.9A 2021-12-24 2021-12-24 网络设备测试方法、数据包发生方法和交换芯片 Active CN114465924B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111601666.9A CN114465924B (zh) 2021-12-24 2021-12-24 网络设备测试方法、数据包发生方法和交换芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111601666.9A CN114465924B (zh) 2021-12-24 2021-12-24 网络设备测试方法、数据包发生方法和交换芯片

Publications (2)

Publication Number Publication Date
CN114465924A CN114465924A (zh) 2022-05-10
CN114465924B true CN114465924B (zh) 2023-12-22

Family

ID=81408376

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111601666.9A Active CN114465924B (zh) 2021-12-24 2021-12-24 网络设备测试方法、数据包发生方法和交换芯片

Country Status (1)

Country Link
CN (1) CN114465924B (zh)

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6751219B1 (en) * 2000-04-20 2004-06-15 Aztech Partners, Inc. Multicast packet duplication at random node or at egress port with frame synchronization
CN103209103A (zh) * 2013-03-25 2013-07-17 华为技术有限公司 网络设备的测试方法及装置
CN104144088A (zh) * 2014-07-24 2014-11-12 重庆邮电大学 一种提高时延测量精度的网络时延测量方法
CN107547435A (zh) * 2016-06-29 2018-01-05 迈普通信技术股份有限公司 网络设备过载保护方法、过载保护功能测试方法及系统
CN108183926A (zh) * 2018-03-14 2018-06-19 北京奇艺世纪科技有限公司 一种数据包处理方法和装置
CN108616409A (zh) * 2016-12-09 2018-10-02 中兴通讯股份有限公司 一种网络流量的产生方法、装置及系统
CN109995608A (zh) * 2018-01-03 2019-07-09 华为技术有限公司 网络速率计算方法和装置
CN110120887A (zh) * 2019-04-25 2019-08-13 新华三技术有限公司合肥分公司 一种网络质量信息监控方法、电子设备及存储介质
CN110233779A (zh) * 2019-07-16 2019-09-13 迈普通信技术股份有限公司 测试方法、测试系统及计算机可读存储介质
CN110460485A (zh) * 2018-05-07 2019-11-15 大唐移动通信设备有限公司 测试以太网接口性能的装置及方法
CN111193641A (zh) * 2019-12-27 2020-05-22 京信通信系统(中国)有限公司 终端网络测试方法、装置、基站设备和存储介质
CN112039783A (zh) * 2020-08-19 2020-12-04 恒安嘉新(北京)科技股份公司 通信数据输出方法、装置、计算机设备及存储介质
CN112104651A (zh) * 2020-09-15 2020-12-18 清华大学 一种数据包生成器及数据包生成方法
CN112260896A (zh) * 2020-10-16 2021-01-22 山东云海国创云计算装备产业创新中心有限公司 一种网络传输测试方法、装置、设备及可读存储介质
CN112866002A (zh) * 2020-11-10 2021-05-28 网络通信与安全紫金山实验室 面向多播流量的带内遥测方法、交换设备节点以及计算机可读存储介质
CN113132504A (zh) * 2019-12-31 2021-07-16 奇安信科技集团股份有限公司 网络地址转换设备的识别方法、装置和计算机设备
CN113489652A (zh) * 2021-07-08 2021-10-08 恒安嘉新(北京)科技股份公司 一种数据流放大方法、装置、汇聚分流器以及存储介质
CN113765732A (zh) * 2020-06-02 2021-12-07 华为技术有限公司 网络性能的测量方法、装置、设备、系统及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120155466A1 (en) * 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US20050141502A1 (en) * 2003-12-30 2005-06-30 Alok Kumar Method and apparatus to provide multicast support on a network device
US7519054B2 (en) * 2005-01-27 2009-04-14 Intel Corporation Replication of multicast data packets in a multi-stage switching system
CN100438449C (zh) * 2006-12-07 2008-11-26 华为技术有限公司 网络时延测量方法及系统
US8248926B2 (en) * 2010-05-11 2012-08-21 Ixia Packet rate detection apparatus and method
US9059915B2 (en) * 2012-08-31 2015-06-16 Cisco Technology, Inc. Multicast replication skip
US10009226B2 (en) * 2013-04-12 2018-06-26 International Business Machines Corporation Software implementation of network switch/router
CN109391559B (zh) * 2017-08-10 2022-10-18 华为技术有限公司 网络设备
KR101953824B1 (ko) * 2017-10-27 2019-03-05 아토리서치(주) 소프트웨어 정의 네트워킹을 이용한 네트워크 기능 가상화 장치 및 그 동작 방법
US11595289B2 (en) * 2019-03-29 2023-02-28 Barefoot Networks, Inc. Network testing using a programmable packet engine
US11025519B2 (en) * 2019-04-10 2021-06-01 At&T Intellectual Property I, L.P. Systems, methods and computer-readable media for external non-intrusive packet delay measurement

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6751219B1 (en) * 2000-04-20 2004-06-15 Aztech Partners, Inc. Multicast packet duplication at random node or at egress port with frame synchronization
CN103209103A (zh) * 2013-03-25 2013-07-17 华为技术有限公司 网络设备的测试方法及装置
CN104144088A (zh) * 2014-07-24 2014-11-12 重庆邮电大学 一种提高时延测量精度的网络时延测量方法
CN107547435A (zh) * 2016-06-29 2018-01-05 迈普通信技术股份有限公司 网络设备过载保护方法、过载保护功能测试方法及系统
CN108616409A (zh) * 2016-12-09 2018-10-02 中兴通讯股份有限公司 一种网络流量的产生方法、装置及系统
CN109995608A (zh) * 2018-01-03 2019-07-09 华为技术有限公司 网络速率计算方法和装置
CN108183926A (zh) * 2018-03-14 2018-06-19 北京奇艺世纪科技有限公司 一种数据包处理方法和装置
CN110460485A (zh) * 2018-05-07 2019-11-15 大唐移动通信设备有限公司 测试以太网接口性能的装置及方法
CN110120887A (zh) * 2019-04-25 2019-08-13 新华三技术有限公司合肥分公司 一种网络质量信息监控方法、电子设备及存储介质
CN110233779A (zh) * 2019-07-16 2019-09-13 迈普通信技术股份有限公司 测试方法、测试系统及计算机可读存储介质
CN111193641A (zh) * 2019-12-27 2020-05-22 京信通信系统(中国)有限公司 终端网络测试方法、装置、基站设备和存储介质
CN113132504A (zh) * 2019-12-31 2021-07-16 奇安信科技集团股份有限公司 网络地址转换设备的识别方法、装置和计算机设备
CN113765732A (zh) * 2020-06-02 2021-12-07 华为技术有限公司 网络性能的测量方法、装置、设备、系统及存储介质
CN112039783A (zh) * 2020-08-19 2020-12-04 恒安嘉新(北京)科技股份公司 通信数据输出方法、装置、计算机设备及存储介质
CN112104651A (zh) * 2020-09-15 2020-12-18 清华大学 一种数据包生成器及数据包生成方法
CN112260896A (zh) * 2020-10-16 2021-01-22 山东云海国创云计算装备产业创新中心有限公司 一种网络传输测试方法、装置、设备及可读存储介质
CN112866002A (zh) * 2020-11-10 2021-05-28 网络通信与安全紫金山实验室 面向多播流量的带内遥测方法、交换设备节点以及计算机可读存储介质
CN113489652A (zh) * 2021-07-08 2021-10-08 恒安嘉新(北京)科技股份公司 一种数据流放大方法、装置、汇聚分流器以及存储介质

Also Published As

Publication number Publication date
CN114465924A (zh) 2022-05-10

Similar Documents

Publication Publication Date Title
US11502932B2 (en) Indirect testing using impairment rules
JP5270901B2 (ja) ネットワーク試験装置及び方法
US9686169B2 (en) Real-time highly accurate network latency measurement with low generated traffic or data requirements
JP4995310B2 (ja) 送信先違いパケットの検出装置および検出方法
CN103716248B (zh) 一种基于以太网交换芯片的以太网流量生成和分析的方法
CN110661716B (zh) 网络丢包的通知方法、监控装置、交换机和存储介质
Kundel et al. P4STA: High performance packet timestamping with programmable packet processors
US9432295B2 (en) Systems and methods for high throughput traffic pattern generation
Anantharamu et al. Packet latency of deterministic broadcasting in adversarial multiple access channels
CN111585836A (zh) 网络测试方法和装置
CN114465924B (zh) 网络设备测试方法、数据包发生方法和交换芯片
CN114513428B (zh) 一种数据处理方法及装置
Lei et al. Printqueue: performance diagnosis via queue measurement in the data plane
Shahzad et al. Noise can help: Accurate and efficient per-flow latency measurement without packet probing and time stamping
CN110838950B (zh) 一种网络性能抖动值的确定方法及装置
CN106936664B (zh) 软件定义网络路径性能测试装置和方法
CN107846291B (zh) 报文处理方法、故障定位方法及网络设备
US20230058383A1 (en) Network and method of collecting and processing packet information
CN110995546B (zh) 报文采样方法及装置
CN109714150A (zh) 基于区块链hash值生成数列的系统与方法
CN113162829B (zh) 传输时延的确定方法、装置以及存储介质
RU2558375C2 (ru) Устройство управления передачей данных по радиоканалу
US8165025B2 (en) Method and apparatus for generating a unique packet identifier
CN111092788A (zh) 一种交换机测试系统
US11290361B1 (en) Programmable network measurement engine

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant