Ошибки сети Mininet при настройке tc

Я пытаюсь указать потерю пакетов с помощью команды tc на интерфейсе (порте) 1 части коммутатора сети, которую я создал с помощью mininet: sudo tc qdisc change dev s1-eth1 root netem loss 0.1%, но получаю ошибку: RTNETLINK answers: Invalid argument

Любая помощь будет оценена по достоинству.

Сетевые данные:

Это сеть mininet на основе древовидной топологии в Ubuntu 14.04 с глубиной = 2 и разветвлением = 5. На первом уровне коммутатор подключен к 5 коммутаторам, каждый из которых подключен к 5 хостам. Все коммутаторы OpenvSwitch.

Сеть Mininet:

#!/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

person sinhayash    schedule 16.07.2015    source источник


Ответы (2)


Я не знаю, как решить проблему, которая у вас есть. Но я знаю, что вы можете указать задержку и скорость потерь в API мининета.

Взгляните на строку 29 ниже: https://github.com/mininet/mininet/blob/master/examples/simpleperf.py

person Ehsan Ab    schedule 16.07.2015
comment
Разве это не приводит к потере пакетов еще до переполнения очереди? - person sinhayash; 19.07.2015
comment
Я думаю, что да, потеря пакетов происходит из-за сбоя соединения или т. Д. - person Ehsan Ab; 20.07.2015
comment
Вы ищете сбой в другой части сети? - person Ehsan Ab; 20.07.2015
comment
в ссылке могут произойти падения из-за сбоя ссылки (например, ссылка обрезана и т. д.). Или падение может произойти в коммутаторе из-за переполнения или т. Д., Правильно? - person Ehsan Ab; 22.07.2015
comment
Я читал из кода мининета, что он использует tc qdisc внутри для имитации потери пакетов, используют ли коммутаторы ovs это? - person sinhayash; 23.07.2015
comment
Я знаю, что мининет по умолчанию использует коммутаторы ovs. Так что я думаю, что ovs тоже использует это. - person Ehsan Ab; 23.07.2015

По этой ссылке кажется, что mininet использует tc команды для внутренней установки packet loss, delay и т. д.

Он пытается перезаписать файл qdisc, поэтому возникает ошибка RTNETLINK answers: Invalid argument.

Чтобы установить потерю пакетов, задайте ее в самом скрипте mininet, используя параметр loss при создании ссылки. Пример см. в этом.

person sinhayash    schedule 24.07.2015