RFC2889——拥塞控制测试

一、简介

RFC 2889LAN交换设备的基准测试提供了方法学,它将RFC 2544中为网络互联设备基准测试所定义的方法学扩展到了交换设备,提供了交换机转发性能(Forwarding Performance)、拥塞控制(Congestion Control)、延迟(Latency)、地址处理(Address Handling)和错误过滤(Error Filtering)等基准测试的方法说明。除去备忘录状态、介绍、要求以及后面的安全机制、参考文献等辅助性说明外,RFC 2889的核心内容分别为测试设置、帧格式与长度和基准测试3大部分。

 

基准测试是RFC 2889的最主要内容,它从测试目标、参数设置、测试过程、测量方法和测试报告格式等方面,详细描述了下列10个针对局域网交换设备的基准测试:

 

· 全网状互连条件下的吞吐量、丢帧率和转发速率(Fully Meshed Throughput, Frame Loss and Forwarding Rates

· 部分网状互连条件下的一对多/多对一(Partially Meshed One-To-Many/Many-To-One

· 部分互连的多个设备(Partially Meshed Multiple Devices

· 部分网状互连条件下的单向通信流量(Partially Meshed Unidirectional Traffic

· 拥塞控制(Congestion Control

· 转发压力和最大转发速率(Forward Pressure Maximum Forwarding Rate

· 地址缓冲容量(Address Caching Capacity

· 地址学习速率(Address Learning Rate

· 错误帧过滤(Errored Frame Filtering

· 广播帧转发和时延(Broadcast Frame Forwarding and Latency

 

接下来将为您演示使用BigTao-V网络测试仪进行拥塞控制测试。

 

 

 

 

二、拥塞控制概述

1.拥塞控制

拥塞控制测试项包含两个测试内容

· 拥塞控制: 一个DUT是否执行拥塞控制(背压/反压)

· 列头拥塞: 一个拥塞的端口是否会影响到另一个没有拥塞的端口

 

拥塞

· 定义: 注入设备/网络的报文过多, 超过设备/链路 的处理能力

· 后果: 部分报文会被丢弃, 则网络中会重传, 是的网络有效吞吐量下降

 

拥塞控制

· 定义: 发生拥塞时, 控制进入设备/网络的数据数量

· 技术:  IEEE802.3X Flow Control技术

 

Flow Control

· 在流量过载时, 通过发送Pause, 让发送方降低发送速率

 

2.Flow Control

测试仪和DUT都启用Flow Control

背压/反压

· Backpressure

· DUT的缓冲区满以后, 处理不了测试仪发送的报文

· DUT给发送方(测试仪)发送Pause, 表示”报文太多, 已经处理不了了”(反压)

· 测试仪收到Pause帧以后, 在特定时间内, 就会停止发送数据

· DUT处理完报文以后, 可以发送Pause, 让测试仪恢复发送

· 当测试仪收到Pause帧以后, 就会恢复发送数据

 

 

3.列头拥塞

· 每个输入port都采用FIFO的机制来传输frames

· Input 端口队列里的数字1,2,3,4分别表示需要转发到output端口1,2,3,4

· 在一个clock cycle时间内, 1个队列和第3个队列都需要把frames从第4out port转发, 假设switching fabric选择的是第3个队列里的frames, 则第1个队列里的所有frames都不能被转发, 包括那些被转发给其它output端口的frames(例如ports 1,2,3)

· 后果: 拥塞端口对其非拥塞端口造成影响

 

 

二、测试说明

测试拓扑

测试端口

· 最少需要4个端口

· 测试端口数是4的倍数

 

 

 

预期结果

· 流量模型

· 端口1向端口3,4各发送50%流量

· 端口2向端口4发送100%流量

· 非拥塞端口: 端口3收到50%流量

· 拥塞端口: 端口4收到150%流量

预期结果

· 拥塞控制: 反压生效, 拥塞端口不丢包

· 无列头阻塞: 拥塞端口对非拥塞端口 无影响, 非拥塞端口不丢包

 

拥塞控制 测试流程

添加机框预约端口选择向导选择拥塞控制配置接口配置流量配置测试参数配置拥塞控制参数运行测试查看结果导出报告

 

准备工作: 添加机框

 

 

准备工作: 预约端口

 

启用Flow Control

· 选择所有端口

· 右键, 选择配置端口

· Flow Control值为Enable

 

 

Switch配置

以华为交换机S5720为例

· 4个与测试仪相连的端口配置在一个VLAN

· 接口上启用Flow-Control

 

配置VLAN

[HUAWEI]vlan 20

Info: This operation may take a few seconds.     Please wait for a moment...done.

 

4个端口都做如下配置

#-

interface GigabitEthernet0/0/1

 flow-control

 port link-type access

 port default vlan 20

#-

interface GigabitEthernet0/0/2

 flow-control

 port link-type access

 port default vlan 20

#-

 

#-

interface GigabitEthernet0/0/3           

 flow-control

 port link-type access

 port default vlan 20

#-

interface GigabitEthernet0/0/4

 flow-control

 port link-type access

 port default vlan 20

#-

 

 

三、测试配置

选择向导

选择RFC2889向导

 

 

选择地址容量测试

测试项目

· 选择 拥塞控制 测试

 

 

选择端口

· 选择参与测试的端口

 

 

 

配置接口

· 默认无接口

· 选择添加接口

 

 

 

向导配置接口

· 一步一步根据需求填充

 

 

 

 

向导配置接口: VLAN

· 根据场景决定是否添加

· 本例中不需要添加

 

 

 

配置MAC地址

· 可选 配置

· 默认即可, 也可以修改

 

 

 

向导接口配置结果

· 创建4Interface, 每个Port各一个

· 对于二层交换机来说, 只关注MAC地址

 

 

 

选择接口

· 刚才配置的接口

· MAC/IP等 可修改 

 

 

 

 

选择流量模型

根据左侧拓扑选择

· 传输端口1

· 传输端口2

· 非拥塞端口

· 拥塞端口

 

添加流量

· 端口1 50%  非拥塞

· 端口1 50%   拥塞

· 端口2 100% 拥塞

 

 

 

 

选择测试参数

时间

· 开始发送流量之前等待2

· 停止发送流量之后等待10

 

结果保存路径

· 默认路径

· 可以自己指定

 

时延

· 本项测试不关注

 

启用学习

· 二层学习

· 频率可 自定义

 

 

 

 

配置 拥塞控制 参数

测试时长

· 默认1

· 默认60

 

负载

· 100%速率测试

· 使用最大速率

 

帧长度

· 默认取7个特殊字节来测试

 

 

 

自动生成Smart Script

Smart Scripts

· 根据配置自动生成Smart Scripts

· 从右侧自动弹出

 

 

 

开始测试

点击Start按钮 自动 开始测试

 

 

 

四、测试报告

测试进度查看

· 消息界面里, 实时显示当前测试的字节

· 预测花费时间

 

 

 

 

自动弹出Result Analyzer

结果分析

· 专业软件

· 自动弹出

 

手工打开

· 自动安装

· 打开结果

 

 

 

Result Analyzer结果分析

结果分析

· 点击 汇总测试

· Head of Line Blocking一列为False表示没有列头拥塞, 结果正确

· BackPressure一列值为True表示拥塞控制生效, 结果正确

 

 

 

 

测试报告导出

导出格式

· PDF

· HTML

结果定制

· 默认会保存所有测试内容

· 太过详细

· 可以选择汇总模板

· 只保存汇总信息

 

 

 

 

测试报告内容

打开测试报告

· 查看 列头拥塞(Head of Line Blocking)

· 查看拥塞控制(Backpressure)

· 配置信息: 包含当前的测试配置信息

 

 

 

错误结果1

 

 

 

错误结果2

posted @   信而泰XINERTEL  阅读(2352)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示