配置owamp通过带外通信测量单向延时丢包信息

主机A到主机B之间有某条待测线路C<->D,其中A、B、C、D均为IP地址,A、B为公网地址,C、D为内网地址。C<->D线路上可能出现极端的丢包情况,也可能是某个单向出现问题,这时却因为owamp无法建立控制连接导致不能测量单向丢包。

owamp设计时是允许通过别的链路建立控制连接进行测量的。

owping的参数中,可以增加创建控制连接用的server地址。但是3.2rc4版本的实现中,在上述背景下,owping会通过A创建到B的控制连接,随后进行的是A和D这两个地址之间的单向延时丢包信息,不是C<->D。owping的-S选项在manpage中说会将本地socket绑定到指定的IP上,然而它会将控制连接和测试的本地IP都指定为源地址。此时,指定-S C后,C到B根本无法创建控制连接(公网、内网不互通),也无法正确测试C<->D的单向延时丢包信息。

为此我修改了owping的代码,将-S参数的作用仅仅限定为测试时使用这个本地地址,控制连接不绑定到本地IP。补丁见:owping.patch

在patch代码后,owping就是通过系统(自动使用地址A)创建到B的控制连接,再测量C<->D链路了。然而patch owping的代码仍然不能正确运行:为了防止owping被用来攻击,(B上运行的)owampd拒绝了测试IP(C)跟控制连接的客户端(A)不同的测试请求。

        /*
         * Check for possible DoS as advised in Section 7 of owdp
         * spec.
         * (control-client MUST be receiver if openmode.)
         */

阅读owamp/sapi.c可以发现,只要不是openmode,这种测量行为就被允许。

为此,只要对owpingowampd加上验证信息,并进行正确配置。

增加验证信息的方式十分简单:在B上执行pfstore -f /etc/owampd/owampd.pfs -n yangzhe输入密码即可创建yangzhe的认证信息。将owampd.pfsyangzhe这行复制到机器A的owampd.pfs中去。

owampd.limits中,还可以增加assign user yangzhe root取消用户yangzhe的流量限制。

在B上重启owampd后,在A上就可以通过owping -S C -i 0.001 -c 1000 -k /etc/owampd/owampd.pfs -u yangzhe D B以0.001秒的间隔来回发送1000个数据包对C<->D线路进行双向测试了,并且控制连接是在A、B间建立的,不用担心C<->D本身的不稳定造成无法测量。

Advertisements

One response to this post.

  1. 虽然看不懂……………

    回复

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google+ photo

You are commenting using your Google+ account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s

%d 博主赞过: