Параметр связи Mininet с удаленным контроллером

  1. Я хочу добавить параметр ссылки с коммутатора на удаленный контроллер (прожектор), как мне это сделать? Я имею в виду, что хочу указать пропускную способность канала, задержку канала... между коммутаторами и его контроллерами.

  2. это правильный способ реализовать двунаправленную связь?

    net.addLink('s1','s2', bw=43)  
    net.addLink('s2','s1', bw=35)
    

Я использую эту пользовательскую топологию

def emptyNet():
    net = Mininet(controller=RemoteController,
                  switch=OVSKernelSwitch, link=TCLink)
    c1 = net.addController('c1', controller=RemoteController,
                           ip="127.0.0.1", port=6633)
    c2 = net.addController('c2', controller=RemoteController,
                           ip="127.0.0.1", port=6632)
    c3 = net.addController('c3', controller=RemoteController,
                           ip="127.0.0.1", port=6634)

    h1 = net.addHost( 'h1' )
    h2 = net.addHost( 'h2' )
    h3 = net.addHost( 'h3' )
    h4 = net.addHost( 'h4' )
    h5 = net.addHost( 'h5' )
    h6 = net.addHost( 'h6' )
    h7 = net.addHost( 'h7' )
    h8 = net.addHost( 'h8' )
    h9 = net.addHost( 'h9' )
    s1 = net.addSwitch( 's1' , mac='00:00:00:00:00:01' )
    s2 = net.addSwitch( 's2' , mac='00:00:00:00:00:02' )
    s3 = net.addSwitch( 's3' , mac='00:00:00:00:00:03' )
    s4 = net.addSwitch( 's4' , mac='00:00:00:00:00:04' )
    s5 = net.addSwitch( 's5' , mac='00:00:00:00:00:05' )
    s6 = net.addSwitch( 's6' , mac='00:00:00:00:00:06' )
    net.addLink('s1','s2', bw=43)
    net.addLink('s2','s1', bw=35)
    net.addLink('s1','s4', bw=68)
    net.addLink('s4','s1', bw=26)
    net.addLink('s2','s3', bw=151)
    net.addLink('s3','s2', bw=230)
    net.addLink('s3','s5', bw=26)
    net.addLink('s5','s3', bw=47)
    net.addLink('s3','s6', bw=353)
    net.addLink('s1','h1')
    net.addLink('s4','h2')
    net.addLink('s1','h3')
    net.addLink('s1','h4')
    net.addLink('s5','h5')
    net.addLink('s3','h6')
    net.addLink('s2','h7')
     net.addLink('s3','h8')
    net.addLink('s1','h9')
     s1.start([c1,c2,c3])
    s2.start([c1,c2,c3])
    s3.start([c1,c2,c3])
    s4.start([c1,c2,c3])
    s5.start([c1,c2,c3])
    s6.start([c1,c2,c3])
    net.start()
    net.staticArp()
    CLI( net )
    net.stop()
 if __name__ == '__main__':
  setLogLevel( 'info' )
  emptyNet()
topos = { 'mytopo': ( lambda: MyTopo() ) }

person user1888020    schedule 03.11.2015    source источник


Ответы (1)


  1. Вы можете использовать команду управления трафиком tc в Linux, чтобы установить задержку, пропускную способность на определенном интерфейсе (скажем, eth0). tc поддерживает управление всем трафиком или только некоторым трафиком на основе заголовка пакета, такого как IP-адрес на определенном интерфейсе. Если вы хотите установить разные параметры связи для каждой связи между коммутаторами и контроллером, вы можете использовать tc для управления трафиком на основе порта TCP, поскольку контроллер подключается к коммутаторам, используя другой порт TCP.

  2. Если ваш код

    net.addLink('s1','s2', bw=43)
    net.addLink('s2','s1', bw=35)

вы получите две ссылки с разной пропускной способностью. Вы можете использовать команду net в мининете, чтобы проверить сетевое соединение, вы обнаружите, что и «s1», и «s2» откроют 2 порта для 2 ссылок, например:

s1 lo: s1-eth1:s2-eth1 s1-eth2:s2-eth2
s2 lo: s2-eth1:s1-eth1 s2-eth2:s1-eth2

person YSX    schedule 22.11.2015