Zkuste si OpenSwitch i bez železa (2) – Mininet a virtuální topologie

V minulém díle jsme mluvili o OpenSwitch – open source operačnímu systému pro fyzické switche jako je HPE Altoline. Ukázali jsme si, jak si vyzkoušet virtuální verzi v kontejneru. Dnes se zaměříme na integraci s Mininet, která nám umožní vytvořit prvků hned několik a propojit je mezi sebou. Vyzkoušíme si tak LLDP nebo BGP.

OpenSwitch a Mininet

Pokračujeme ve VM z předchozí části a nainstalujeme si Mininet.

git clone
git://github.com/mininet/mininet
cd mininet
git checkout -b 2.2.1 2.2.1
util/install.sh

Dále nainstalujeme některé návaznosti a stáhneme ops-vsi. Jde o kód vývojářů OpenSwitch integrující Mininet pro účely testování kódu (nebo v našem případě pro pohrání si s prvkem).

sudo apt-get install python-pip
sudo pip install pytest
cd ~
git clone git://git.openswitch.net/openswitch/ops-vsi
cd ops-vsi
sudo ./setup.py install

Vytvořte ve VM následující soubor s popisem virtuální topologie a nazvěte ho mynet.py

#!/usr/bin/python

from mininet.net import *
from mininet.topo import *
from mininet.node import *
from mininet.link import *
from mininet.cli import *
from mininet.log import *
from mininet.util import *
from subprocess import *
from subprocess import *
from opsvsi.docker import *
from opsvsi.opsvsitest import *
import select

class myTopo( Topo ):
    def build(self, **_opts):
        self.addSwitch('s1')
        self.addSwitch('s2')
        self.addLink('s1', 's2')

class demoTest( OpsVsiTest ):

    def setupNet(self):
        self.net = Mininet(topo=myTopo(hopts=self.getHostOpts(),
                                       sopts=self.getSwitchOpts()),
                           switch=VsiOpenSwitch,
                           host=OpsVsiHost,
                           link=OpsVsiLink, controller=None,
                           build=True)

if __name__ == '__main__':
    test = demoTest()

Výborně – můžeme topologii spustit.

sudo python mynet.py

Získali jsme dva propojené kontejnery – podívejte se na jejich názvy.

docker ps
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS               NAMES
1f970631b664        openswitch/genericx86-64   "/sbin/init"        2 minutes ago       Up 2 minutes                            225_s2
7c6dbf7450b8        openswitch/genericx86-64   "/sbin/init"        2 minutes ago       Up 2 minutes                            225_s1

Vyzkoušejme LLDP

Připojte se do prvního z prvků, zapněte port a protokol LLDP.

sudo docker exec -ti 225_s1 vtysh
switch# configure terminal
switch(config)# hostname sw1
switch(config)# interface 1
sw1(config-if)# no shut
sw1(config-if)# exit
sw1(config)# feature lldp
sw1(config)# exit
sw1# show int 1

Interface 1 is up
 Admin state is up
 Hardware: Ethernet, MAC Address: aa:55:aa:55:00:17
 MTU 0
 Full-duplex
 Speed 1000 Mb/s
 Auto-Negotiation is turned on
 Input flow-control is off, output flow-control is off
 RX
            0 input packets              0 bytes
            0 input error                0 dropped
            0 CRC/FCS
 TX
            0 output packets             0 bytes
            0 input error                0 dropped
            0 collision

sw1# exit

Připojte se do druhého prvku, zapněte port a LLDP. Vidíte souseda?

sudo docker exec -ti 230_s2 vtysh
switch# configure terminal
switch(config)# hostname sw2
switch(config)# interface 1
sw2(config-if)# no shut
sw2(config-if)# exit
sw2(config)# feature lldp
sw2(config)# exit
sw2# show int 1

Interface 1 is up
 Admin state is up
 Hardware: Ethernet, MAC Address: aa:55:aa:55:00:17
 MTU 0
 Full-duplex
 Speed 1000 Mb/s
 Auto-Negotiation is turned on
 Input flow-control is off, output flow-control is off
 RX
            0 input packets              0 bytes
            0 input error                0 dropped
            0 CRC/FCS
 TX
            0 output packets             0 bytes
            0 input error                0 dropped
            0 collision

sw2# show lldp neighbor-info 1
Port                           : 1
Neighbor entries               : 1
Neighbor entries deleted       : 0
Neighbor entries dropped       : 0
Neighbor entries age-out       : 0
Neighbor Chassis-Name          : 191_s1
Neighbor Chassis-Description   : OpenSwitch 0.1.0 (basil) Linux 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64
Neighbor Chassis-ID            : 8a:f1:fc:5b:a2:47
Chassis Capabilities Available : Bridge, Router
Chassis Capabilities Enabled   : Bridge, Router
Neighbor Port-ID               : 1
TTL                            : 120

Spojme se přes BGP

Nastavte BGP v prvním prvku a vypište si informace – nejsme ve stavu Estabilished (což je dle očekávání).

sw1# configure terminal
sw1(config)# interface 1
sw1(config-if)# ip address 192.168.1.1/30
sw1(config-if)# exit
sw1(config)# router bgp 65001
sw1(config-router)# neighbor 192.168.1.2 remote-as 65002
sw1(config-router)# bgp router-id 1.1.1.1
sw1(config-router)# end
sw1# show bgp neighbors
  name: 192.168.1.2, remote-as: 65002
    state: Active
    tcp_port_number: 179

    statistics:
       bgp_peer_dropped_count: 0
       bgp_peer_dynamic_cap_in_count: 0
       bgp_peer_dynamic_cap_out_count: 0
       bgp_peer_established_count: 0
       bgp_peer_keepalive_in_count: 0
       bgp_peer_keepalive_out_count: 0
       bgp_peer_notify_in_count: 0
       bgp_peer_notify_out_count: 0
       bgp_peer_open_in_count: 0
       bgp_peer_open_out_count: 0
       bgp_peer_readtime: 10549
       bgp_peer_refresh_in_count: 0
       bgp_peer_refresh_out_count: 0
       bgp_peer_resettime: 10549
       bgp_peer_update_in_count: 0
       bgp_peer_update_out_count: 0
       bgp_peer_uptime: 0

Nakonfigurujte druhý prvek. Je BGP spojeno?

sw2# configure terminal
sw2(config)# interface 1
sw2(config-if)# ip address 192.168.1.2/30
sw2(config-if)# exit
sw2(config)# router bgp 65002
sw2(config-router)# neighbor 192.168.1.1 remote-as 65001
sw2(config-router)# bgp router-id 2.2.2.2
sw2(config-router)# end
sw2# show bgp neighbors
  name: 192.168.1.1, remote-as: 65001
    state: Established
    tcp_port_number: 179

    statistics:
       bgp_peer_dropped_count: 0
       bgp_peer_dynamic_cap_in_count: 0
       bgp_peer_dynamic_cap_out_count: 0
       bgp_peer_established_count: 1
       bgp_peer_keepalive_in_count: 2
       bgp_peer_keepalive_out_count: 3
       bgp_peer_notify_in_count: 0
       bgp_peer_notify_out_count: 0
       bgp_peer_open_in_count: 1
       bgp_peer_open_out_count: 1
       bgp_peer_readtime: 10715
       bgp_peer_refresh_in_count: 0
       bgp_peer_refresh_out_count: 0
       bgp_peer_resettime: 10650
       bgp_peer_update_in_count: 1
       bgp_peer_update_out_count: 1
       bgp_peer_uptime: 10655

Zrušte Mininet

Před skončením nejen zlikvidujte kontejnery, ale také vyčistěte Mininet (jinak vám i po restartu nebudou fungovat spojení v jiných topologiích).

docker ps
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS               NAMES
1f970631b664        openswitch/genericx86-64   "/sbin/init"        2 minutes ago       Up 2 minutes                            225_s2
7c6dbf7450b8        openswitch/genericx86-64   "/sbin/init"        2 minutes ago       Up 2 minutes                            225_s1

docker rm –f 1f970631b664
docker rm –f 7c6dbf7450b8

sudo mn -c
Vyzkoušejte openswitch.net ještě dnes. Prvky HPE Altoline jsou k dispozici už dnes pro OS Cumulus a Pica8. Distribuci OpenSwitch chystá HPE na polovinu příštího roku. OpenStack, CloudFoundry, Docker, Linux, Openvswitch … OpenSwitch je v opravdu dobré společnosti.
Similar posts
  • Moderní 10G v datovém centru s novou ... HPE tento týden oznámilo evoluční vývoj portfolia v oblasti data center 1U prvků s 10G/40G/100G technologií, konkrétně novou řadu 5940. Co je nového? Hardwarové vlastnosti Prvky přichází s novou generací 10/40/100 čipů, které umožnily mít nově prvky se 100G uplinky (a to hned šesti) a také přináší podporou nových vlastností jako je směrování VXLAN (předchozí [...]
  • ArubaOS-Switch 16.02: IP SLA i pro Ar... IP SLA Ve světě směrovačů už poměrně dlouho existuje možnost monitorovat dostupnost a kvalitu spojení s využitím L3 protokolů. Můžete například z pobočky v pravidelných intervalech testovat dostupnost brány datového centra nebo klíčového serveru včetně měření doby jeho reakce (round-trip-time). Dá se také namířit dva routery proti sobě tak, že jeden se ptá a druhý [...]
  • OpenSwitch v GNS3 – chcete GUI ... GNS3 verze 1.5 Pokud neznáte GNS3, jde o velmi dobrý síťový simulátor. Narozdíl od jiných řešení, o kterých jsem na netSvět už psal (Docker, shell skript, Mininet), je zaměřený především na síťaře, kteří chtějí pracovat s virtuální sítí a přizpůsobuje se jejich pohodlí. Do CI/CD pipeline se tedy moc nehodí, ale za to má výborné [...]
  • OpenSwitch a Ansible automatizace pra... Posledně jsme si nastavili naší virtuální OpenSwitch leaf-spine topologii a vybudovali jsme BGP L3 fabric. Dnes si ukážeme více z životního cyklu s použitím Ansible – otestování sítě, vrácení odchylek do požadovaného stavu sítě a rolování změn. Jste líní číst? Mrkněte na video: Playbook pro testování sítě Ansible můžete použít i pro testování, že síť [...]
  • OpenSwitch a Ansible automatizace pra... Minule jsme napojili naši virtuální topologii na Ansible a spustili náš první testovací Playbook. Dnes provodeme automatizovanou konfiguraci L3 fabric a otestujeme síť. Příprava konfiguračních podkladů Pro zprovoznění L3 fabric potřebujeme Loopback adresu, IP adresy na jednotlivých spojeních mezi prvky a nastavení BGP (autonomní systémy, peering). V našem Ansible prostředí si vytvoříme jeden YAML soubor, [...]

No Comments Yet

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *