当前位置: 首页 > news >正文

RFC2889转发性能測试用例设计和自己主动化脚本实现

一、203_TC_FrameRate-1.tcl


set chassisAddr 10.132.238.190

set islot 1
set portList {9 10} ;#端口的排列顺序是port1, port2
set ipList {10.0.0.3 20.0.0.3} ;#ip列表与port的排列顺序相相应
set macList {00-00-00-00-00-01 00-00-00-00-00-02}
set gwList {10.0.0.1 20.0.0.1}
set iFramelen 256
set streamLoad 100

if { [catch {
     cd ../Source
    #载入HLAPI Lib
    source ./CSTC.tcl

    SetLogOption -Debug Enable
    
    # 開始连接机器
    TestDevice chassis1 $chassisAddr

    # 開始预留两个port
    for {set i 0} {$i <[llength $portList]} {incr i} {
        chassis1 CreateTestPort -PortLocation $islot/[lindex $portList $i] -PortName port[expr $i+1] -PortType Ethernet
    }
    port1 CreateTraffic -TrafficName traffic1
    traffic1 CreateProfile -Name profile1 -TrafficLoad 100 -TrafficLoadUnit fps
    
    traffic1 CreateStream -StreamName stream1 -FrameLen 500 -ProfileName profile1 \
        -L2 ethernet -L3 IPv4 -L4 Udp -IpSrcAddr 192.168.0.1 -IpDstAddr 192.168.5.7 -udpsrcport 2000 -udpdstport 3000
    
    traffic1 ConfigStream -StreamName stream1 -L2 ethernet -L3 IPv4 -EthDst 00:00:10:E1:01:08 -EthSrc 00:00:11:E1:00:09
    
    #创建统计和分析对象Statistics1,Statistics2,Analysis2
    port1 CreateStaEngine -StaEngineName Statistics1 -StaType Statistics
    port2 CreateStaEngine -StaEngineName Statistics2 -StaType Statistics
    port2 CreateStaEngine -StaEngineName Analysis2 -StaType Analysis
    #SaveConfigAsXML "c:/framerate.xml"
    puts "配置捕获模式。将数据报capture到指定文件。可用于数据包的分析"
    Analysis2 ConfigCaptureMode -CaptureMode allpkt -CaptureFile "c:/Framerate.pcap"
    
    # 開始捕获报文     
    puts "開始捕获报文"
    
    for {set i 0} {$i < 1} {incr i} {
       traffic1 ConfigProfile -Name profile1 -TrafficLoad [expr 100 + $i * 100] -TrafficLoadUnit fps
       Analysis2 StartCapture
       puts "配置捕获模式,将数据报capture到指定文件"
       Analysis2 ConfigCaptureMode -CaptureMode allpkt -CaptureFile "c:/Framerate[expr 100 + $i * 100].pcap"
       port1 StartStaEngine
       port2 StartStaEngine
       port1 StartTraffic

       # 等待5秒
       after 5000

       # 在txport停止流量发送
       port1 StopTraffic
       
       after 5000
       
       array set stats1 [Statistics1 GetPortStats ]
       parray stats1
    
       array set stats2 [Statistics2 GetPortStats ]
       parray stats2
   
       # 基于流,获取stream1,stream2,stream3,stream4的统计值。存储在stats数组并打印出来
       array set stats3 [Statistics1 GetStreamStats -StreamName stream1]
       parray  stats3
       
       #array set stats4 [Statistics1 GetStreamStats -StreamName stream2]
       #parray  stats4
    
       #array set stats5 [Statistics1 GetStreamStats -StreamName stream3]
       #parray  stats5      


       port1 StopStaEngine
       port2 StopStaEngine
       Analysis2 StopCapture
    }

    
    #清除測试过程中所作的全部配置和释放測试过程中占用的全部资源
    chassis1 CleanupTest                     
}  err ] } {
    puts "脚本执行中出现错误: $err"

    #清除測试过程中所作的全部配置和释放測试过程中占用的全部资源
    chassis1 CleanupTest                     
}

二、203_TC_FrameRate-2.tcl


set chassisAddr 10.132.238.190
set islot 1
set portList {9 10} ;#端口的排列顺序是port1, port2
set ipList {10.0.0.3 20.0.0.3} ;#ip列表与port的排列顺序相相应
set macList {00-00-00-00-00-01 00-00-00-00-00-02}
set gwList {10.0.0.1 20.0.0.1}
set iFramelen {64 128 256 512 1518}
set streamLoad 100

if { [catch {
     cd ../Source
    #载入HLAPI Lib
    source ./CSTC.tcl

    SetLogOption -Debug Enable
    
    # 開始连接机器
    TestDevice chassis1 $chassisAddr

    # 開始预留两个port
    for {set i 0} {$i <[llength $portList]} {incr i} {
        chassis1 CreateTestPort -PortLocation $islot/[lindex $portList $i] -PortName port[expr $i+1] -PortType Ethernet
    }
    port1 CreateTraffic -TrafficName traffic1
    traffic1 CreateProfile -Name profile1 -TrafficLoad 100 -TrafficLoadUnit fps
    
    traffic1 CreateStream -StreamName stream1 -FrameLen 500 -ProfileName profile1 \
        -L2 ethernet -L3 IPv4 -L4 Udp -IpSrcAddr 192.168.0.1 -IpDstAddr 192.168.5.7 -udpsrcport 2000 -udpdstport 3000
    
    traffic1 ConfigStream -StreamName stream1 -L2 ethernet -L3 IPv4 -EthDst 00:00:10:E1:01:08 -EthSrc 00:00:11:E1:00:09
    
    #创建统计和分析对象Statistics1,Statistics2,Analysis2
    port1 CreateStaEngine -StaEngineName TxStatistics1 -StaType Statistics
    port2 CreateStaEngine -StaEngineName RxStatistics1 -StaType Statistics
    port2 CreateStaEngine -StaEngineName Analysis2 -StaType Analysis
    #SaveConfigAsXML "c:/framerate.xml"
    puts "配置捕获模式,将数据报capture到指定文件。可用于数据包的分析"
    Analysis2 ConfigCaptureMode -CaptureMode allpkt -CaptureFile "c:/Framerate.pcap"
    
    # 開始捕获报文     
    puts "開始捕获报文"
    
    for {set i 0} {$i < 3} {incr i} {
       traffic1 ConfigProfile -Name profile1 -TrafficLoad [expr 100 + $i * 100] -TrafficLoadUnit fps
       traffic1 ConfigStream -StreamName stream1 -FrameLen [ lindex $iFramelen $i ]
       Analysis2 StartCapture
       puts "配置捕获模式,将数据报capture到指定文件"
       Analysis2 ConfigCaptureMode -CaptureMode allpkt -CaptureFile "c:/Framerate[expr 100 + $i * 100].pcap"
       port1 StartStaEngine
       port2 StartStaEngine
       port1 StartTraffic

       # 等待5秒
       after 5000

       # 在txport停止流量发送
       port1 StopTraffic
       
       after 5000
       
       
        set TxStats1 [TxStatistics1 GetPortStats ]
       puts "-------------------------------"
       puts $TxStats1
       puts "-------------------------------"
       set txFrameIndex [lsearch $TxStats1 -TxSignature ]
       set txFrameRateIndex [lsearch $TxStats1 -TxSignatureRate]
       set txFrameNum [lindex $TxStats1 [expr $txFrameIndex + 1]]
       set txFrameRate [lindex $TxStats1 [expr $txFrameRateIndex + 1]]
       
       
           
       #array set RxStats1 [RxStatistics1 GetPortStats ]
       set RxStats1 [RxStatistics1 GetPortStats ]
       puts "-------------------------------"
       puts $RxStats1
       puts "-------------------------------"
       set rxFrameIndex [lsearch $RxStats1 -RxSignature ]
       set rxFrameRateIndex [lsearch $RxStats1 -RxSignatureRate ]
       set rxFrameNum [lindex $RxStats1 [expr $rxFrameIndex + 1]]
       set rxFrameRate [lindex $RxStats1 [expr $rxFrameRateIndex + 1]]
       
       puts "TxFrame=$txFrameNum"
       puts "RxFrame=$rxFrameNum"
       
          


       port1 StopStaEngine
       port2 StopStaEngine
       Analysis2 StopCapture
    }

    
    #清除測试过程中所作的全部配置和释放測试过程中占用的全部资源
    chassis1 CleanupTest                     
}  err ] } {
    puts "脚本执行中出现错误: $err"

    #清除測试过程中所作的全部配置和释放測试过程中占用的全部资源
    chassis1 CleanupTest                     
}





相关文章:

  • 探秘Java虚拟机——内存管理与垃圾回收(转)
  • 我的运维之路
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • vSphere中CPU的设置选择及运行流程
  • iOS 系统状态栏 隐藏 或 显示
  • 页面常见效果js实现
  • Java GBK中文乱码问题分析
  • 巧用位运算求解二进制中1的个数
  • Linux Netcat 命令——网络工具中的瑞士军刀
  • python学习笔记-Day14 -js/dom/jquery
  • C++构造函数详解及显式调用构造函数
  • web应用中log4j应用--log4j.xml同时输出多种日志
  • apache的动态和静态
  • Navicat 结构同步常规设置讲解
  • hbase参考官方文档搭建完全分布式环境遇到的问题
  • $translatePartialLoader加载失败及解决方式
  • conda常用的命令
  • const let
  • HTTP请求重发
  • JAVA SE 6 GC调优笔记
  • java第三方包学习之lombok
  • java概述
  • JS字符串转数字方法总结
  • Phpstorm怎样批量删除空行?
  • Rancher如何对接Ceph-RBD块存储
  • React+TypeScript入门
  • Transformer-XL: Unleashing the Potential of Attention Models
  • vue的全局变量和全局拦截请求器
  • 服务器从安装到部署全过程(二)
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 浅谈web中前端模板引擎的使用
  • 首页查询功能的一次实现过程
  • 消息队列系列二(IOT中消息队列的应用)
  • linux 淘宝开源监控工具tsar
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • !!Dom4j 学习笔记
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #{}和${}的区别是什么 -- java面试
  • #pragma 指令
  • ( 10 )MySQL中的外键
  • (33)STM32——485实验笔记
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (规划)24届春招和25届暑假实习路线准备规划
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)为C# Windows服务添加安装程序
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net core控制台应用程序初识