我正在开发一款使用设备绑定和多宿主协议等网络功能的软件产品。与任何协议开发一样,测试代码需要考虑延迟、数据包丢失等问题。因此,我试图创建一个虚拟网络环境,在其中我可以进行可控、可重现的测试。
我想要测试的两个主要功能(即测量性能、稳定性等):
- 客户端使用多个端点的 SCTP 多宿主关联。
- 多个设备的设备绑定。
如上所述,我希望能够在网络中的节点之间进行流量控制,以及流量过滤以模拟传统 NAT 等。
示例测试:
该测试旨在模拟具有四个 NIC(wifi、usb、蓝牙、以太网)的客户端通过互联网与单接口服务器进行通信。
我想创建一个模拟此布局的虚拟网络。一个设备模拟 WAN 节点,另外四个设备代表客户端接口。客户端接口和服务器接口之间的带宽限制为 1 Mb/s,数据包丢失率为 1%。
创建四个客户端接口的bonding设备,将iperf服务器绑定到WAN地址,将客户端绑定到bonding设备地址并连接到WAN服务器。
答案1
听起来你想使用类似“tc”(sehttp://www.linuxcommand.org/man_pages/tc8.html有关更多详细信息,请参见使用“netem”内核组件在各种接口上进行配置。
例如:
tc qdisc add dev eth1 root handle 1: netem delay 500ms 125ms reorder 3% loss 2%
看http://man.he.net/man8/tc有关‘tc’的手册页。
看http://www.linuxfoundation.org/collaborate/workgroups/networking/netem有关如何将 netem 模块与 tc 一起使用的信息。