网络测试与评价

第一章 概述

网络测试的基本概念

   网络测试是指以科学的方法,通过测量手段/工具,取得网络产品或正在运行网络的性能参数和服务质量参数,这些参数包括可用性、差错率、吞吐量、时延、丢包率、连接建立时间、故障检测和改正时间等。

典型的网络测试方法

  1. 使用测试设备单独对网络设备进行测试 即单品测试,这种测试多用于再网络设备的研发阶段对设备的质量进行保障
  2. 将网络设备放在具体网络环境中进行测试,以评估该设备的互通性及互操作性,这种在真实环境下的测试常见于运营商、企业网中

网络测试的时间

  • 网络产品的生命周期通常包括产品立项,硬件开发,协议栈开发,系统联调,互通性验证,性能评估,入网测试,产品售后维护等阶段
  • 网络建设生命周期一般要经历规划、设计、部署、运行和升级5阶段。

RFC文档参考

RFC_PAGE

应用层 RFC 3511 RFC 2544
表示层 RFC 3511 RFC 2544
会话层 RFC 3511 RFC 2544
传输层 RFC 3511 RFC 2544
网络层 RFC 3222 RFC 2544
数据链路层 RFC 2889 RFC 2544
物理层 NULL NULL

网络测试分类📖

一致性测试

测试设备相关协议的实现是否遵循协议规范

功能测试

验证产品标称支持的功能是否能正常实现

性能测试

通常被看成是一种“压力测试”,目的是观察设备在业务压力下的表现

  • 性能测验测试
  • 负载测试
  • 压力测试

被动测试

在真实的运行状态下观察协议运行的过程,一般在两种状态下观察

  1. 在无外界干扰的情况下按照协议的正常流程去观察
  2. 人为制造一些如错误的路由协议报文,关闭了路由协议的端口等异常事件并观察协议运行的状态

性能测试一般规则🤨

  • 一般需要具体分析
    1. 为什么要对它进行测试,明确测试目的
    2. 明确测试对象
    3. 由谁来执行测试,测试执行者应具备怎样的技术条件
    4. 完成测试任务大约需要时间
    5. 达到测试目的所付出的成本是多少,软硬件如何配置
    6. 如何制定详细的测试方法,是否有成文的测试方法学作为参考
  • 制定测试方法前需要具备的前提条件
    1. 理解技术 : 如何运作 | 相关参数 | 正常情况
    2. 理解被测试的设备或系统 : 支持协议 | 特点 | 运行期望
    3. 理解测试设备 : 配置方法 | 如何正确测试

测试方法

需要经过测试床搭建、测试环境配置、执行测试、测试结果记录及分析等阶段

  1. 配置DUT/SUT/NUT设备
  2. 连接测试仪表
  3. 运行控制软件并使之能控制仪表
  4. 配置相应端口的基本参数
  5. 使用软件模拟网络并进行相应配置
  6. 配置常规的测试参数,在软件界面配置相关参数,比如流的设置、包的大小
  7. 运行测试
  8. 保存测试结果

注意

  • 测试帧长中 :最小帧长为64 最大帧长为1518
  • 每个实验测试持续时间最少达到60秒

第一章 习题

  • 选择题
    • 路由器OSPF Hello报文相关字段验证不属于性能测试
    • BMWG进行网络测试方法学方面的研究
    • 在网络产品的生命周期中,应该按照一致性测试,功能测试,性能测试的顺序执行测试
    • 对以太网Pause帧格式进行验证属于以太网一致性测试
    • RFC3511适用于防火墙的测试
    • RFC2544只适用于网络二三层设备的测试
  1. 对一台具有三层功能的防火墙进行测试,可以参考RFC 3222 与 RFC 2544
  2. RFC2511 中的测试项目
    • 吞吐量测试
    • 等待时间测试
    • 帧损失率测试
    • 背靠背帧测试
    • 系统恢复测试
    • 重置测试
  3. 对一台2E+2POS口的路由器进行性能测试:

根据RFC2544标准对吞吐量进行测试

目的: 测试出目标路由器的吞吐量参数

步骤:

  1. 配置路由器与测试器
  2. 连接测试器
  3. 运行控制软件并使之能控制路由器
  4. 配置相应端口的基本参数
  5. 使用软件模拟网络并进行吞吐量测试设置
  6. 运行测试
  7. 保存测试结果

第二章 第二层以太网测试

交换机体系结构

  • 共享总线型
  • 共享存储器
  • 纵横式矩阵交换结构

性能测试

性能试验测试通常可以被看成是一种“压力测试”,目的是观察设备在业务压力下的表现。

没有负载或低负载、基本功能(比如验证网络设备的基本转发及可用性测试等)的验证。

负载测试

确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。

压力测试

是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。

数据传输层相关指标

  • 负载

信道或设备在单位时间内所承受的通信流量称为负载(Load)。

  • 转发速率

转发速率(Forwarding Rate)是用于描述交换设备帧转发能力的指标

  • 丢帧率

传输过程中丢失的数据帧占应转发帧的比例称为丢帧率(Frame Loss Ratio)

  • 吞吐量

在没有出现丢帧的条件下,能够传输给交换机让其转发到指定输出端口的每秒最大帧数

  • 突发

一组以合法最小帧间隔传输的以太网帧称为突发(Burst),在网络中,突发通常由节点的突发数据流量引发。一次突发传输中所包含的帧数被称为突发量(Burst Size)

传输控制层面相关指标

  • 拥塞控制

也称为流量控制,指在以太网上控制源端发送数据的数量及速度使其不超过接收端所能承受的能力,以避免产生帧的丢失。

  • 地址处理

交换机基于第二次MAC地址完成帧的过滤和转发

  • 地址缓存容量

设备或端口模块所能拥有的最大MAC数,也就是地址交换表的最大容量

  • 地址学习速率

在没有广播和丢帧的情况下,交换机学习新地址的最大速度

  • 错误帧过滤

错误帧(Error Frame):指所有过长(>1518B),过短(<64B),错位或含有错误校验序列的帧

  • 广播

当交换机的输入端口收到一个帧,并且在地址表中找不到与帧的目的的MAC地址所对应的目的端口时,就会采用向所有端口泛洪广播的方法来转发该帧。

  • 广播速率:一台交换设备在某个指定的广播负载下,1秒内向它所在的广播域的所有端口发送的广播帧的数量
  • 广播延迟:交换机将广播帧转发到位于同一个广播域中的每一个端口所需的时间
  • 流量隔离 用于衡量交换机VLAN流量隔离功能的指标

产生拥塞控制的主要原因

  • 过载
  • 线端堵塞

背压(Backpressure )

当外出或输出端口出现拥塞现象时,被交换机用来通知发送端降低帧发送速度,以阻止外部数据源继续向拥塞端口传输帧的那些方法。

前压(Forward pressure )

当上游设备以小于最小帧间隙的间隔或以超过线速的速率向下游交换机发送流量时,往往会导致下游交换机出现接收缓冲(buffer)溢出甚至阻塞。某些交换机可通过减缓输出队伍的饱和程度、禁止上游设备发送帧等强制性机制来消除或减少上述丢帧现象。具有上述功能的交换机被认为具有前压机制。

网状流量

非网状流量

一对一关系

部分网状流量

一对多,多对一或多对多

全网状流量

完全多对多,对于一个有n个被测端口的交互机而言,在单向流量时,将会形成$n(n-1)/2$的端口对,而在双向流量时,相当于有$n(n-1)$个端口对

测试设置中的二层地址学习

目的

在测试开始之前让被测试交换机学习测试中将要用到的MAC地址。

要求

先学习、再验证、后测试

注意

  1. 发送地址学习帧的速率不可太大(建议:<=50帧每秒),以免因DUT地址学习速率上的限制而导致地址学习失败。
  2. 调整被测试交换机的地址老化时间,使得其足够长( 建议:大于测试学习时间、测试持续时间、配置测试设备时间的和) ,确保在测试结束前所学到的地址都不被老化。

注意

  • 规定最小帧长是为了避免冲突
  • 时延测试必须在吞吐之后

第二章 习题

  • 选择题
    • 规定最小帧长是为了让各节点公平访问共享介质 是为了避免产生冲突,防止线路上的信号碰撞
    • 确定一个设备的MAC地址学习速率和地址表容量属于以太网性能测试
    • 检查一个设备是否遵循以太网的有关协议标准属于一致性测试
      确定一个设备是否支持IEEE802.3x流量控制属于功能测试
    • 当要对两个设备之间的上行链路进行测试时,应该选用非网状测试拓扑
    • 在设备MAC地址处理能力测试中,需要在DUT上检查所能够配置的静态地址表项
    • 根据RFC2544,在以太网测试种,对于每种测试条件,必须在至少5种不同的帧长下进行
    • 对第二层设备进行性能测试时,可查RFC1252,RFC2544,RFC2285,RFC2889
    • 任何情况下都可能出现提交负载与期望负载不相同

1.关于吞吐量与帧长的关系曲线图说明了:帧长到一定程度后,帧越长,同一段时间内帧数量就越少,设备吞吐量就越大

2.如图 循环轮转发送数据帧,尽可能使每个接口都受到测试,使测试结果可靠

端口#1 2 3 4 5 6 2…
端口#2 3 4 5 6 1 3…
端口#3 4 5 6 1 2 4…
端口#4 5 6 1 2 3 5…
端口#5 6 1 2 3 4 6…
端口#6 1 2 3 4 5 1…

3.给出了2个端口组成的测试拓扑,能否有效实现?至少四个,2个端口不足以测试出拥塞控制

4.给出了8个由端口组成的测试块,是否必须?4个测试源端口,4个测试目的端口,是必须的

5.有人设计了一种时间触发器方法,分析可行性:端口UE多,需要复制转发的帧就越多,可能会导致延迟加长,导致测试不准

6.设计可用于VLAN隔离功能测试的拓扑,思路:4个端口,俩端口在同一VLAN 俩不在同一个VLAN 控制变量测试功能

第三章 第三层网络测试

路由器组成

路由选择部分

主要作用是通过路由协议交换网络拓扑结构信息,依照拓扑结构动态更新和维护路由表,其核心构件是路由选择处理机,运行的路由协议可以有不同的类型

分组转发部分

根据控制层面生成的转发表FIB转发IP分组,由交换结构,输入端口和输出端口构成

交换结构

根据FIB对来自某个输入端口的分组进行处理,并使其从一个合适的输出端口转发,完成输入输出端口间的互连功能

输入端口🍉

输入端口是物理链路的连接点,也是分组(数据包)的接收点。端口通常由线卡提供,一块线卡一般支持4、8或16个端口,每个输入端口有3个模块,分别对应物理层,数据链路层和网络层。

如果接受的分组是路由器之间的路由交换信息,则将这种分组送交路由器的路由选择处理机。

当一个分组正在查找转发表时,后面又紧跟着从这个输入端口收到的另一个数据包,则后到的分组旧必须在输入队列中排队等待

输出端口

队列和缓冲管理

路由器的体系结构⛷️

路由器的传输控制层面

运行在通用CPU系统中,多年来一直没有多少变化。在高可用性路由器设计中,大多采用双主控进行主从式备份,以保证传输控制平面的可靠性

路由器的数据转发层面

为适应不同的线路速度和不同的系统容量,采用了不同的实现技术

路由器工作原理

基本功能

路由处理和分组转发处理

路由处理

通过路由协议收集网络拓扑信息并动态形成路由表RIB

路由表

存放到特定网络的所有路由信息

数据转发

根据转发表FIB转发IP分组,FIB是根据RIB生成的,其表项和RIB项间又直接的对应关系,但FIB和RIB的内容并不一定匹配,格式也不相同,FIB在发送分组时可供路由协议使用,FIB更适合实现快速查找

转发流程

线路输入→分组头部分析→数据存储→分组头部修改和线路输出

路由器类型

性能划分

高中低档路由器

背板转发大于40Gbps 在25~40Gbps 之间 小于24Gbps的路由器

线速|非线速路由器

线速: 完全可以按照传输介质贷款进行分组转发,传输过程基本上没有间断和延时

结构划分

  • 模块化路由
  • 非模块化路由

所处位置划分

  • 边界路由器
  • 中间节点路由器

应用划分

  • 通用路由器
  • 专用路由器

数据转发层面相关指标

主要考察包的转发是否准确,有无丢包,转发延迟多大等

  • 吞吐量

在没有丢包的情况下,路由设备能够转发的最大速率

  1. 保证待转发的每个包都能从输入端口准确转发到适当的输出端口
  2. DUT在不丢包的前提下,单位时间内能够转发的最大包数量
  • 延迟

包的第一个比特进入路由器到最后一个比特离开路由器的时间间隔,又叫时延

  • 丢包率

路由器在稳定负载情况下,由于缺乏资源而不能被网络设备转发的包所占所有应被转发的包的百分比

  • 背对背

指的是在一段较短的时间内,以合法的最小帧间隙在传输媒介上连续发送固定长度的包不引起丢包时的包数量。

  • 时延抖动

时延的变化

  • 背板能力

背板指路由设备输入和输出间的物理通路,无法直接测试,但是可以体现在吞吐量上,通常大于依赖吞吐量和测试包长所计算的值

  • 系统恢复

路由设备从超载情况下恢复到正常转发状态的行为特征,主要表现为系统恢复速度的快慢

  • 系统重启

系统重启时,不能正常工作,这段不可用时间的长短对评估性能优劣相当重要

数据控制层面相关的指标

  • 路由振荡
  • 路由表容量
  • 路由收敛时间

帧长度与最大理论速率

帧长度/B 以太网/fps 16Mbps令牌环/fps FDDI/fps
64 14880 24691 152439

第三章 习题

  • 选择题
    • 延迟测试应该在吞吐量测试之后进行
    • RFC2544中没有涉及地址学习速率
    • RFC1242中没有描述集线器
    • 进行第三层设备性能测试时可以参考RFC1242,RFC2544,RFC3222 (以上全部)
    • 在每一种测试条件下必须至少采用5种测试帧长
  1. IP包头最大长度60字节,根据RFC791标准 ,最低20字节,最大长度60字节
  2. 数据传输层面衡量路由器性能的主要技术指标:吞吐量,延迟,丢包率,背对背,时延抖动,背板能力,系统恢复,系统重启
  3. 吞吐量是在没有丢包的情况下,路由设备能够转发的最大速率。
    在每一轮吞吐量测试中,以某个特定的速度发送测试帧,并对DUT转发的帧数进行统计。如果接收到的帧数比发送的帧数少,则下一轮测试的帧速率应降低,否则应提高。最常用的吞吐量搜索算法是二分搜索法,只需要设置初始帧速率(或负荷百分比)、最小速率和最大速率即可。若丢帧,下一轮测试速率为当前速率与最小速率的中值,否则则为当前速率与最大速率的中值。当前测试与前一次测试的帧速率之间小与或等于设置的精度时,测试结束。
    吞吐量测试应该每次持续60s以上
  4. 延迟指第一个Byte进入DUT到最后一个Byte离开DUT的时间间隔
    如果超过吞吐量就会产生丢包,失去测试意义
  5. 丢包率测试目的,与吞吐量的关系:
    反应网络超负荷运作下的性能

    丢包率主要反映网络设备在超负荷运转的情况下的处理策略,设备应该采用合适的丢弃策略,尽量确保关键帧和重要帧的顺利传输

    分类:数据帧,学习帧,路由更新帧,管理帧等 可能导致大量数据帧无法交换而引起更大的丢包率的某个关键的路由信息帧和那些具有QoS保证的应用数据帧都不能被丢弃,需要及时转发
  6. 背对背:指的是在一段较短的时间内,以合法的最小帧间隙在传输媒介上连续发送固定长度的包不引起丢包时的包数量。需要确定DUT在不丢包的情况下能够处理的最大包数目,以考察路由器接口对于突发数据的缓存能力。

第四章 IP路由测试

路由表的生成和维护

静态路由

适用于拓扑结构比较简单的环境

默认路由可以减少路由表规模并且降低路由表的维护开销

动态路由

  • RIP(距离矢量路由协议)
  • OSPF(链路状态路由协议)
  • IS-IS(链路状态路由协议)
  • BGP(距离矢量路由协议)

OSPF

每个OSPF路由器以自己为根,采用SPF计算得到每个目的网络的最短路径,最终得到一棵SPT,然后使用通向每个网络的最佳路径填充路由表

路由收敛(Convergence)

路由收敛是指同一个网络中所有路由器对网络拓扑的认识达到一致的过程。也被理解为路由变化通知到全网所用时间。收敛是评估路由协议的一个关键指标。路由协议的收敛速度越快,其运行性能就越好。

路由震荡(Flapping)

又叫路由波动是指由于种种原因导致到某个目的网络的路由在短期内反复撤销和重现。路由震荡通常以每秒更新路由的数量来衡量,每秒更新路由的数量越大,说明路由震荡越严重。路由震荡是路由不稳定性的主要表现,对路由器转发能力有很大的影响

路由震荡测试基本设计思路

使用测试仪表的一个端口向DUT下发多个特定IP网络前缀的路由。另一端口用来发送到这些特定IP网络前缀的测试流量,并且在路由震荡测试的整个过程中,流量发送端口始终保持流量的发送状态不变。当路由已稳定时,撤消下发的多个特定IP网络前缀中的部分路由。等路由再次稳定时,又重新下发刚撤消的路由。如此反复下发、撤消,人为制造出路由震荡的环境。然后在测试仪表上观测控制层面的转发,并同时观测数据转发层面测试流的转发速率,得到测试结果

路由震荡测试方法基本原理

在网络中,某些事件可能导致全网范围内的路由重新计算,直接影响到路由的稳定性,从而影响IP报文的转发。路由震荡是网络中路由不稳定的主要表现形式。

第四章 习题

  • 选择题
    • Spirent TestCenter不支持EIBGP路由协议
    • 控制台读数法,控制层面学习法,数据转发层面和控制层面结合法测出的路由器容量都是FIB表的容量
    • 路由真的测试和路由收敛测试谁先测试均可以
    • 进行OSPF点到点链路形成全邻接状态的实验可以参考RFC4063
  1. 协议指标是路由指标的基础
  2. 为了测试传输、泛洪等不属于处理一条LSA时间的额外时间,仪表仿真的OSPF路由器需要向DUT下发一个已经存在于DUT的LSDB中的重复LSA,观察这个LSA下发与收到LSAck的时间差(处理重复LSA的时间dupLSAprocTime),由于对重复LSA不会又对LSA的处理,因此该事件即为处理一条LSA时间无关的那些用于LSA发送和LSAck传输的额外时间
  3. 先测试传输,泛洪等其他额外时间,需要下发一个重复LSA,观察下发与收到LSAck的时间差,该事件为用于发送与Ack的传输等的额外时间,然后发布第二次重复LSA,获取与LSAck的时间差,此时获取到的为全部SPF时间,用该全部SPF时间减去传输额外时间即为SPF算法运行的时间

第五章 第4~7层网络性能测试

TCP层面指标

  • 最大TCP连接建立速率

最大TCP连接建立速率是指被测设备或被测系统能够成功处理请求连接的前提下,在单位时间内所能承受的最大TCP连接建立数目,用connections/sec 表示,这一指标通常被称为最大TCP新建速率。它主要反映了被测设备的CPU使用情况以及对连接的处理速度。

  • 最大TCP连接拆除速率

并发TCP连接容量:并发连接是指多个主机或用户同时连接到一个主机或设备进行数据传输,并发TCP连接容量是指被测设备能够同时成功处理的最大TCP连接数目,它反映出被测设备对多个连接的访问控制能力和连接状态跟踪能力。

最大TCP连接建立速率测试方法

测试目的

被测设备的CPU使用情况以及对连接的处理速度。

测试过程

使用二分搜索法

并发TCP连接容量测试方法

测试目的

为了检验被测设备或被测系统内存性能及其连接状态表能同时容纳的最大连接数目。

测试过程

使用二分搜索法来确定最大并发TCP连接容量。首先。。。如果(pg115)

采用协议

HTTP1.1或以上版本

原因

  1. HTTP报文通常较小,对带宽的占用较少,
  2. HTTP1.1或以上版本具有默认维持TCP链接的特性,在次特性下才能检测到被检设备所支持的并发TCP连接容量的最大值。

第五章 习题

  • 选择题
    • 第4~7层网络测试关注的重点是面向用户的网络应用部署是否合理
    • TCP和HTTP 是 4~7层 测试中常用的主要协议
    • RFC3511 提供了4~7层网络的相关测试方法学
    • 传输层的UDP协议用于网络应用中的非实时业务
    • 并发TCP连接容量,最大TCP连接建立速率和最大TCP连接拆除速率 都是4~7层网络测试主要关注的
    • 突发流量处理,最大同步用户数,最大事务处理速率 是第4~7层网络测试中所关注的HTTP层面上的3个关键指标
  1. 关闭TCP连接方式:三次握手关闭 ,四次握手关闭
    基本过程:FIN with SEQ → ACK → FIN with SEQ → Ack
    简化过程:FIN Ack → FIN Ack → ACK
  2. 采用哪几种模式对系统进行全方位测试评估:服务器系统模式,网络设备模式,网络系统模式
  3. 最大TCP连接建立速率测试期望曲线和当前曲线基本吻合说明了DUT最大连接建立速率已经接近该值

第六章 网络安全性能测试

网络安全的基本概念

计算机网络安全是指利用各种技术和管理措施,确保网络系统正常运行,从而保证网络数据的可用性、完整性、保密性。

网络入侵

又称为网络攻击,一般分为网络存取攻击和资源消耗攻击。

网络存取攻击

通过非法途径获得网络中的资源使用权限或者利用网络从事非法攻击活动,如非法侵入企业内部网络获取商业机密信息等

资源消耗攻击

攻击者通过某种手段扰乱或者阻止网络系统为用户提供正常服务,如通过DoS攻击方式致使Web服务器瘫痪等

常见的分布式拒绝服务攻击:

SYN Flood攻击、Land-based 攻击、Reset Flood攻击、ARP Flood攻击

第七章 网络服务质量测试

QoS(Quality of Service) 服务质量🤏🏽

定义为网络在传输数据流时要求满足的一系列服务请求,具体可以量化为带宽、时延、时延抖动、吞吐量和丢包率等性能指标。强调传输服务在端到端(end-to-end)或者网络边界到网络边界范围的整体性。服务质量的最终目的就是为各种业务提供可靠的端到端的服务质量保证

  • 能够保障要求:保障服务
  • 能够预测但是不能保障:预测服务
  • 不完全保障但可达部分服务:尽力服务

节点功能

  1. 按照不同业务等级协定SLA提供不同服务
  2. 能够满足高优先级业务的资源需求,可以网络资源预约(资源预留),或拥有相应的资源调度算法
  3. 尽量保证高优先级服务不发生丢弃,满足其时延,抖动要求,各个节点有合理的排队算法和队列管理调度算法

端到端QoS保证

端到端通信:源主机进程到目的主机进程之间的通信

从结构出发,逐层保证

TCP/IP 结构

  • 802.1P协议头包括一个三位优先级字段
  • 网络层:IP数据包首部的TOS,用于标注优先级
  • 传输层:端口号作为传输层提供给应用层的访问点

QoS模型

  • 尽力而为服务:无QoS
  • 综合服务模型:信令化/动态QoS
  • 区分服务(DiffServ)模型:预先部署QoS
  • Diff-IntServ综合模型

服务类型🦴

  • 有保证服务(GS)
  • 负载可控服务(CLS)
  • 尽力而为服务(BS)

分组分类

五元组:

源/目的IP,源/目的端口,协议类型

原则:考虑分类粒度和处理开销之间的平衡

用于分类的字段越多,处理开销越大

Qos测试

$jitter = |(R_xA-T_xA)-(R_xB-T_xB)|$

$R_xA$表示包A的接收时间

$T_xA$表示包A的发送时间

逐跳行为PHB

根据服务等级协议SLA进行设置,不同PHB有不同的限制,因此需要不同的转发行为

主动队列管理是当前队列管理的热点 WRED算法是当前使用最为广泛的主动队列管理算法

实验

ensp中运用两个路由进行nqa测试 抖动/时延

网络质量分析

绘制网络拓扑图,连通路由

R1中建立NQA测试实例

1
2
3
4
5
6
7
8
9
naq test-instance Elimos lessonwork

test-type icmp

destination-address ipv4 1.1.1.1

frequency 100 # 配置测试频率位100ms

start now

查看测试结果

display nqa result lessonwork Elimos 1

iperf:udp/tcp带宽测试

带宽测试

  1. DUTS 分别连接在路由器的两个端口上,配置路由器使DUTS互通
  2. 首先配置好DUT:服务器端和客户端,进行iperf软件安装,通常使用

sudo apt-get install iperf进行安装

  1. 服务器端运行 iperf -s
  2. 客户端进行TCP测试iperf -c $serverip -b 2000M -t 1200 -i 1
  3. 客户端进行UDP测试iperf -c -u $serverip -b 2000M -t 1200 -i 1
  4. 输出测试结果
  • 参数解析
1
2
-s      # 以server模式启动,iperf -s
-c host # 以client模式启动,host是server端
  • 通用参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
-f # [kmKM] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,
-i # sec 以秒为单位显示报告间隔
-l # 缓冲区大小,默认是8KB,
-m # 显示tcp最大mtu值
-o # 将报告和错误信息输出到文件
-p # 指定服务器端使用的端口或客户端所连接的端口
-u # 使用udp协议
-w # 指定TCP窗口大小,默认是8KB
-B # 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
-C # 兼容旧版本(当server端和client端版本不一样时使用)
-M # 设定TCP数据包的最大mtu值
-N # 设定TCP不延时
-V # 传输ipv6数据包
  • server专用参数
1
2
-D #  以服务方式运行。
-R # 停止iperf服务。针对-D
  • client端专用参数
1
2
3
4
5
6
-d # 同时进行双向传输测试
-n # 指定传输的字节数,
-r # 单独进行双向传输测试
-t # 测试时间,默认20秒,
-F # 指定需要传输的文件
-T # 指定ttl值

分析基于http测试工具WRK进行网站压力测试结果

压力测试

安装

Debian

1
sudo apt-get install wrk

Others

Wrk Download (APK, DEB, RPM, XBPS, ZST)

命令

验证安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
elimos@pixel:~$ wrk -v
wrk debian/4.1.0-3 [epoll] Copyright (C) 2012 Will Glozer
Usage: wrk <options> <url>
Options:
-c, --connections <N> Connections to keep open
-d, --duration <T> Duration of test
-t, --threads <N> Number of threads to use

-s, --script <S> Load Lua script file
-H, --header <H> Add header to request
--latency Print latency statistics
--timeout <T> Socket/request timeout
-v, --version Print version details

Numeric arguments may include a SI unit (1k, 1M, 1G)
Time arguments may include a time unit (2s, 2m, 2h)

测试

wrk -t 10 -d 10s -c 2000 --latency [https://baidu.com](https://baidu.com/)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 测试结果
Running 10s test @ https://baidu.com
10 threads and 800 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 75.51ms 20.79ms 420.43ms 90.16%
Req/Sec 199.38 167.78 656.00 63.09%
Latency Distribution
50% 71.54ms
75% 80.01ms
90% 91.93ms
99% 144.13ms
12012 requests in 10.06s, 4.09MB read
Requests/sec: 1193.73
Transfer/sec: 416.12KB

命令解析

  • d

测试时间 支持s秒 m分 h时

  • t

线程数

  • c

连接数

  • latency

显示分布式相应信息

结果解析

进行了30s的对baidu.com的压力测试,使用了12线程并发400连接,单一线程平均耗时933.14ms,最高延迟2s,在30秒内发送了发送了8181个请求,读取到了121.83MB,无套接字错误,平均请求速率是271.82/s,转发速率4.05MB/s

如图

wrkimage.bmp

  • Tread Stats

线程状态

  • Avg

平均时间

  • stdev

标准差

  1. 结果分析
  • Tread Stats 线程状态
  • Avg 平均时间
  • +/- stdev 标准差

基于scapy进行的 syn/rst flood测试代码

SYN

1
2
3
4
5
6
7
8
9
10
11
12
13
# SYN : 请求同步 DDoS攻击

sport = random.randint(1,65535)

ip = IP(src=src,dst=dst)

tcp = TCP(sport = sport ,dport = dport)

SYN = ip /tcp

SYN.summary()

send(SYN , verbose = 0)

RST Flood

1
2
3
4
5
6
7
8
9
10

# 构建大量SYN标志位的TCP报文进行DDoS攻击

def poison(packet):

packet[TCP].flags='R'

sendp(packet)

sniff(filter='tcp',prn=poison)
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2022 Elimos
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信