Ошибки сети Mininet при настройке по tc
Я пытаюсь указать потерю пакета командой tc на интерфейсе (порт) 1 коммутатора части сети, которую я создал с помощью mininet: sudo tc qdisc change dev s1-eth1 root netem loss 0.1%
но ошибка gettring: RTNETLINK answers: Invalid argument
Любая помощь будет оценена.
Детали сети:
Это сеть мининетов на основе древовидной топологии в Ubuntu 14.04 с глубиной = 2 и разветвлением = 5. На первом уровне коммутатор подключен к 5 коммутаторам, каждый из которых подключен к 5 хостам. Все переключатели являются OpenvSwitch.
Сеть Мининет:
#!/usr/bin/python
from functools import partial
from mininet.cli import CLI
from mininet.link import TCLink
from mininet.log import setLogLevel
from mininet.net import Mininet
from mininet.node import OVSKernelSwitch
from mininet.node import RemoteController
from mininet.topo import Topo
from mininet.util import dumpNodeConnections
class MyNet( Topo ):
"Simple topology example."
def __init__( self ):
"Create custom topo."
# Initialize topology
Topo.__init__( self )
# Add hosts
h1 = self.addHost( 'h1' )
h2 = self.addHost( 'h2' )
h3 = self.addHost( 'h3' )
h4 = self.addHost( 'h4' )
h5 = self.addHost( 'h5' )
h6 = self.addHost( 'h6' )
h7 = self.addHost( 'h7' )
h8 = self.addHost( 'h8' )
h9 = self.addHost( 'h9' )
h10 = self.addHost( 'h10' )
h11 = self.addHost( 'h11' )
h12 = self.addHost( 'h12' )
h13 = self.addHost( 'h13' )
h14 = self.addHost( 'h14' )
h15 = self.addHost( 'h15' )
h16 = self.addHost( 'h16' )
h17 = self.addHost( 'h17' )
h18 = self.addHost( 'h18' )
h19 = self.addHost( 'h19' )
h20 = self.addHost( 'h20' )
h21 = self.addHost( 'h21' )
h22 = self.addHost( 'h22' )
h23 = self.addHost( 'h23' )
h24 = self.addHost( 'h24' )
h25 = self.addHost( 'h25' )
# Add switches
s1 = self.addSwitch( 's1' )
s2 = self.addSwitch( 's2' )
s3 = self.addSwitch( 's3' )
s4 = self.addSwitch( 's4' )
s5 = self.addSwitch( 's5' )
s6 = self.addSwitch( 's6' )
# Add links
self.addLink( s2, s1 ,bw=0.1)
self.addLink( s3, s1 ,bw=10)
self.addLink( s4, s1 ,bw=10)
self.addLink( s5, s1 ,bw=10)
self.addLink( s6, s1 ,bw=100)
self.addLink( h1, s2 ,bw=0.1)
self.addLink( h2, s2 ,bw=10)
self.addLink( h3, s2 ,bw=10)
self.addLink( h4, s2 ,bw=10)
self.addLink( h5, s2 ,bw=10)
self.addLink( h6, s3 ,bw=10)
self.addLink( h7, s3 ,bw=10)
self.addLink( h8, s3 ,bw=10)
self.addLink( h9, s3 ,bw=10)
self.addLink( h10, s3 ,bw=10)
self.addLink( h11, s4 ,bw=10)
self.addLink( h12, s4 ,bw=10)
self.addLink( h13, s4 ,bw=10)
self.addLink( h14, s4 ,bw=10)
self.addLink( h15, s4 ,bw=10)
self.addLink( h16, s4 ,bw=10)
self.addLink( h17, s4 ,bw=10)
self.addLink( h18, s4 ,bw=10)
self.addLink( h19, s4 ,bw=10)
self.addLink( h20, s4 ,bw=10)
self.addLink( h21, s6 ,bw=10)
self.addLink( h22, s6 ,bw=10)
self.addLink( h23, s6 ,bw=10)
self.addLink( h24, s6 ,bw=10)
self.addLink( h25, s6 ,bw=100)
topos = { 'MyNet': ( lambda: MyNet() ) }
#sudo mn --custom MyNet.py --topo MyNet --controller=remote,ip=10.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13 --link tc
2 ответа
По этой ссылке, кажется, что мининет использует tc
команды для установки packet loss
, delay
и т.д. внутри.
Он пытается перезаписать файл qdisc, поэтому он выдает ошибки RTNETLINK answers: Invalid argument
,
Чтобы установить потерю пакета, установите его в mininet
сам скрипт с помощью loss
параметр при создании ссылки. Для примера посмотрите это.
Я не знаю, как решить вашу проблему. Но я знаю, что вы можете указать задержку и коэффициент потерь в mininet API.
Взгляните на строку 29 ниже: https://github.com/mininet/mininet/blob/master/examples/simpleperf.py