Xena,Xena Networks公司的网络测试仪,也能覆盖以太网L2~L7层测试仪,但功能较简单,界面也很简洁,用起来比较直观方便。
1.Xena的自动化测试场景
测试PC上的AT框架-->Tcl驱动库SIG_Teq_Xena.tcl-----(以太网线)----->Xena chassis
PC上安不安装Xena的客户端XenaManager都可以。Xena的chassis内部命令不是Tcl格式的命令,而是Xena自己支持定义的xena script command;
Tcl驱动只是与xena chassis之间建立1个socket session来把xena script command下发到chassis,并获取返回值.所以测试PC上可以不安装Xena的桌面客户端XenaManager,但最好也装上吧,方便即时查看script执行效果.
安装完XenaManager后,其安装目录下会有1个XenaScriptClient_20.exe,这个应该是用来通过其手动下发xena script command到chassis的,没什么用。
因为Xena chassis内部命令是独有格式的xena script command,所以SIG_Teq_Xena.tcl文件里不需要“package require xxx”加载什么xena专用的库
2.Xena的架构层次
xena用于接收执行command的agent应该是在仪表chassis内,但桌面client也提供1个简单的脚本运行框,可以在windows下单句的执行command
因为xena chassis接收的是自己格式的command,所以采用的封装语言可以是任意的,如:Tcl,Rerl,Python,Java,Excel/VBA...只要和chassis之间建立1条Tcp/Ip连接,通过它发送command到xena hardware和接收return line就行。client软件不是必须安装的.
测试PC与Xena chassis之间建立socket时,22611是xena-chassis规定的scripting port。
下发到chassis的command是不区分大小写的,但chassis返回的内容是大写的
xena的仪表管理层级从client application上看是:
testbed--->chassis--->module--->port
1. testbed是管理软件上的逻辑的,可以人工添加多个.
2. 1个chassis对应着1个ip,即1个物理机箱,从这一级开始才是自动化要考虑的.一般1个chassis只有1个module 0,1个module下面有多个port。
3.Xena的API格式
chassis command处理的是机箱本身的基本信息和配置,而不是它的module模块或port测试端口用于脚本会话的整体控制。命令的返回值一般是包含多个元素的list列表格式。
一些command命令同时有set和get的功能,在末尾加"?"是get。
Xena的内部command的一般格式,命令前缀不同,主要分下面几类:
(1)"C_" chassis机箱的一些参数设置和读取
(2)"M_" module(相当于Ixia里的card层级,xena没有可插拔式的板卡)的一些参数设置和读取
(3)"P_" port的一些参数设置和读取
(4)"PS_" stream的一些参数设置和读取
Xena的内部command下发后,chassis返回值及其含义:
<OK> 下发到chassis并执行成功
<NOTLOGGEDON> 事先没有用C_LOGON + 正确的chassis password登录机箱
<NOTRESERVED> 没有对你想更改的资源下发a x_RESERVATION ?
<NOTWRITABLE> 这个参数是只读的,不能写
<NOTREADABLE> 这个参数是只写的,不能读
<NOTVALID> 这个操作在当前的机箱状态下是无效的,不能执行的,例如更改正在打流的端口配置参数
<BADMODULE> 提供的module的索引值参数越界
<BADPORT> 提供的port的索引值参数越界
<BADINDEX> 参数的子索引值"sub-index"是错误的
<BADSIZE> 提供的数据的值的大小不恰当,超出合理范围
<BADVALUE> 提供的数据值是错误的
<FAILED> 操作失败,没能产生结果
4.Xena AT的特点
xena配置流量的报文头(EthernetII,mpls,vlan,ip都属于报文头,后面的才是具体报文内容)
- 获得或修改前面添加的字段块的具体参数值,一般转化成16进制或2进制数处理
- Xena比较特殊,它不能像Ixia,SpirentTestcenter那样直接设置字段值,而是要按照报文字段所处的字节直接更改16进制或2进制的字节值,设置完后直接作为一个整体下发。这点使得Xena的驱动库编程很繁琐麻烦,但有一个好处,在编码过程中,帮你复习了各种协议报文的构造,各个字段的排列顺序,所处位置,每个字节代表什么意思等等。写完这个库后,收获还是非常大的。
本文只是简单的Xena自动化原理的介绍,详细的Xena API可以参阅具体的API官方文档。