ROHC协议库测试与改造(一)

来源:互联网 发布:兵不可偃乎 编辑:程序博客网 时间:2024/05/29 16:39

引言

之前把ROHC的库装好了,按照官方的教程把测试跑了一次,今天尝试着看懂他的测试脚本,大致了解测试的原理。
如果不知道ROHC是个什么鬼或者还没装ROHC库和测试的话,可以参考以下两篇文章

http://blog.csdn.net/u013793399/article/details/51425161 ROHC协议简介
http://blog.csdn.net/u013793399/article/details/51426548 Linux下安装ROHC协议库并测试

正文


测试脚本

ROHC的测试文件夹如下,一共有4种测试,分别是功能性测试、互动测试、无反馈测试、鲁棒性测试。这次要了解的是non_regression的测试原理。
这里写图片描述
在non_regression文件夹下,有很多的.sh脚本,这些脚本分别对应不同传输协议WLSB不同窗口大小不同CID大小等情况,官方给的测试里,只需要在non_regression目录下运行这些脚本就能看到结果。
这里写图片描述

我们来打开这些脚本看看吧。

随便选了一个,打开,如下:
这里写图片描述

WHAT THE FXXK= =||

  • 首先看上图绿框的内容。
    是test_non_regression.sh
    这是另一个脚本的名字。
  • 再看上图红框的内容。
    This script may be used by creating a link “test_non_regression_maxcontextsN_wlsbM_CIDTYPE_STREAM.sh”
    其中N和M是参数,在下面给出的解释。

再打开其他的一两个,用Beyond Compare对照了一下,内容完全一样啊。。。。只有文件名是不一样的啊!!!
文件的一开始就告诉你,这东西的用法是重命名
把文件名变成配置,这么高端的事情我还真是第一次看见。。。感觉自己弱的一笔。。。


测试程序

这个库的运行需要大量的头文件支持,shell写的脚本其实不是测试程序的本体,它只负责一些例如参数配置的事情。
本体在哪?在上面的终端窗口截图可以看到,除了大量的.sh文件,可执行文件(绿色)只有一个,就是test_non_regression
很明显,它就是测试程序本体吧?
其实并不是。。。后来打开一看,其实还是个脚本。。。

那我们就绕过脚本,直接运行这个程序吧。

这里写图片描述
弹出来的提示就是教我们怎么用的。

ROHC non-regression tool: test the ROHC library with a flow                          of IP packetsusage: test_non_regression [OPTIONS] CID_TYPE FLOWwith:  CID_TYPE                The type of CID to use among 'smallcid'                          and 'largecid'  FLOW                    The flow of Ethernet frames to compress                          (in PCAP format)options:  -v                      Print version information and exit  -h                      Print this usage and exit  -o FILE                 Save the generated ROHC packets in FILE                          (PCAP format)  -c FILE                 Compare the generated ROHC packets with the                          ROHC packets stored in FILE (PCAP format)  --rohc-size-output FILE Save the sizes of ROHC packets in FILE  --max-contexts NUM      The maximum number of ROHC contexts to                          simultaneously use during the test  --wlsb-width NUM        The width of the WLSB window to use  --compat-1-6-x          Mimic the behavior of the 1.6.x versions  --no-comparison         Is comparison with ROHC reference optional for test  --ignore-malformed      Ignore malformed packets for test  --no-tcp                Disable the TCP profile  --verbose               Run the test in verbose mode

参数有3种:
option
CID_TYPE
FLOW

其中option就是各种选项咯,
cid_type是cid的类型,可以选‘smallcid’或者‘largecid’
flow是文件流,是PCAP格式的文件

先试一下
不要option了
cid类型选择largecid
flow在input文件夹里有,每个最底层目录都有一个source.pcap,就用它作为输入吧。

这里写图片描述

上图是输出结果。
处理了10个,结果match了0个?!!
直接运行脚本的时候可以处理多少个就match多少个的诶!!
是不是哪里出错了?!!

其实并没有!

在option选项里有一个 -c FILE,

Compare the generated ROHC packets with the ROHC packets stored in FILE (PCAP format)

match的意思是,你程序的输出跟你指定的文件内容有多少个吻合。
刚刚都没有指定对比文件,怎么可能有match嘛!
我们看下那些脚本里都是怎么写的。
这里写图片描述

原来程序的入口文件是对应路径下的 source.pcap
压缩完成后,与同路径下,对应配置的 .pcap 文件对照,如果相同就match
另外,对照 .pcap 文件的同时,程序还会对照他们的 size ,对照文件是上述路径下的 对应配置的 .sizes 文件。

所以我们来重新测试一遍,这次设置输出对照。

./test_non_regression -c inputs/ipv4/esp/bug1089106-non-rtp-with-14-sn-bits/rohc_maxcontexts1_wlsb4_largecid.pcap largecid inputs/ipv4/esp/bug1089106-non-rtp-with-14-sn-bits/source.pcap

其实就是 ./脚本 -c 对照文件路径 源文件路径
输出如下:
这里写图片描述
终于都match了。

0 0