如何模拟网络问题,如数据包丢失、音频流传输时的延迟



我有音频文件,我想在上面应用一些网络问题,如数据包丢失、抖动、延迟。。我需要模拟器在我的音频文件上应用此网络条件。。请选择适合我工作的最佳模拟器,并可以将其安装在windows上。。。

假设您正在研究如何实现这一点,正如标题所示,并且不想在这里启动模拟器/模拟器仇恨战争。我建议你看看迷你网。

它有一个简单任务的命令行界面和一个python API,可以让你定制网络的大部分方面(如带宽容量、延迟、丢失率等(。您所需要做的就是设置两个(或多个(主机,用链接连接它们并配置链接属性。这是一种根据您的要求获得不同延迟的简单方法。此外,您可以将链路丢失百分比设置为0-100%。但是,如果您正在考虑丢弃特定的数据包,则必须在传输协议的帮助下在主机本身进行丢弃,或者创建一个自定义控制器(交换机实现(。

下面是一个使用python API的片段,它可能会让你开始:

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import CPULimitedHost
from mininet.link import TCLink
from mininet.util import irange
class MySingleSwitchTopo( Topo ):
"Single switch connected to k hosts."
def build( self, k=2, **_opts ):
"k: number of hosts"
self.k = k
switch = self.addSwitch( 's1' )
for h in irange( 1, k ):
host = self.addHost( 'h%s' % h )
self.addLink( host, switch, loss=0.1, latency=20, bw=5 ) # create a link with 20ms latency, 0.1% loss chance and 5Mb bandwidth capacity
if __name__ == '__main__':
topo = MySingleSwitchTopo()
net = Mininet(topo=topo, host=CPULimitedHost, link=TCLink)
net.start()
h1, h2 = net.get('h1', 'h2')
h1.cmd('iperf -s&') # Replace with your audio server app
out = h2.cmd('iperf -c ' + h1.IP()) # Replace with your audio client app
print(out) # output from the client app
net.stop()

最新更新