User Tools

Site Tools


netzwerk:switches:cumulus

Cumulus Linux

Unsere Doku wurde erstellt unter Cumulus 3.7 & 4.1

ONIE

Ist ein kleines Busy Box OS das sich um die Installation von Cumulus kümmert.

Installieren

Fresh Install
Wir haben die Switches mit ONIE Vorinstalliert bekommen. Das Cumulus Linux ist jedoch noch nicht installiert.
Um einen Switch zu Installieren gibt es mehrere Möglichkeiten. Dazu verlinke ich die offizielle Doku.
https://docs.cumulusnetworks.com/cumulus-linux-42/Installation-Management/Installing-a-New-Cumulus-Linux-Image/#install-using-a-usb-drive

Wir haben unsere Switches via USB Stick installiert. Zu beachten ist auch noch ob man einen Switch mit ARM oder AMD64 CPU hat.
In der Regel kann man sagen

  • 1G Switches haben meistens ein ARM CPU
  • 10G oder schneller haben meistens eine AMD64 CPU (Intel Atom)


System Infos

Hardware Infos

net show system
decode-syseeprom


Software Infos

net show version
cat /etc/lsb-release  


Erstellen eines Support Files

sudo cl-support


Lizenz

Anzeigen der Lizenz

cl-license


Einspielen einer Lizenz

cl-license –i <key file>

Danach muss der Switch entweder rebootet oder der switchd Daemon neugestartet werden.

ACHTUNG
Ein Neustart vom switchd unterbricht die Switch Funktion für ca. eine Minute

sudo systemctl restart switchd


Löschen einer Lizenz

cl-license –d <key file>


User anlegen

Der Root User ist per default (wie oft unter Linux) so eingestellt das man diesen nur Lokal direkt am Gerät (Seriel) verwenden kann.
Daher legen wir uns einen eigenen User an der via sudo alle Rechte hat

groupadd -g 3001 ontec
useradd -g 3001 -u 3001 -G 1000,27 -m -s /bin/bash ontec
passwd ontec

visudo
ontec    ALL=(ALL:ALL) ALL


Restlichen User absichern

passwd root
passwd cumulus

OOB Management

Das OOB Interface ist immer das eth0. Default ist dieses auf DHCP gestellt.
Konfigurieren von eth0

net add interface eth0 ip address <address/prefix>
net add interface eth0 ip gateway <default gw>
net add dns nameserver <dns>
net pending
net commit


eth0 wieder auf DHCP zurück stellen

net add interface eth0 ip address dhcp
net commit


Das ganze kann natürlich auch einfach via Linux Shell bzw. den normalen Config Files unter Linux gemacht werden.

NTP

Setzten der richtigen Zeitzone

dpkg-reconfigure tzdata

Die NTP Server selbst sind so wie unter Linux unter ntp.conf zu setzten.

Neustart NTP Server

systemctl restart ntp


Kontrolle der NTP Verbindung

ntpq -p


Hostname

Ist wie unter Linux zu setzten

vim /etc/hostname


Config

Übersicht der Config

net show configuration


Übersicht der net Befehle

net show configuration command


Linux Level Configs

net show configuration files


Anzeigen spezifischer Dinge. Beispiele:

net show configuration interface swp<num>
net show configuration dot1x
net show configuration ospf


Interfaces

Typen von Ports

  • Physical Port: swp<num>
  • Bond: bond<num>
  • VLAN: vlan<num>
  • Brdige: bridge<num>


Anzeigen der Interfaces

net show interfaces


Enable a Port

net add interface swp<n> link up


Disable a Port

net del interface swp<n> link down


Port Speed ändern.
ACHTUNG! Port Speed von 25G auf 10G kann man nicht so einfach umstellen.

net add interface swp<n> link speed 1000


Port Speed ändern 25G oder größer.
Dies muss über ein Config File erledigt werden. Danach muss auch noch der Service switchd neu gestartet werden. Dies bedeutet einen kurzen komplett Ausfall vom Switch

vim /etc/cumulus/ports.conf
systemctl restart switchd.service


Ein Neustart hat bei uns im Test 46 Sekunden gedauert.

Interface Status anzeigen

ethtool swpX


Interface Stats anzeigen

ethtool -S swpX


Interface Transceiver (SFP) Stats anzeigen

ethtool -m swpX


Interface Monitoring

net show interface 
net show interface swp<n>
net show interface swp<n> detail


Reset Counter

net clear counters


Bond (ohne CLAG)

Erstellen eines Bond auf dem selben Switch (kein CLAG)

net add bond <bond-interface> bond slaves <interfaces>

Beispiel:
net add bond bond1 bond slaves swp9-10


Setzten von LACP

net add bond <bond-interface> bond mode 802.3ad
net add bond <bond-interface> bond miimon 100

Beispiel:
net add bond bond1 bond mode 802.3ad
net add bond bond1 bond miimon 100


Anzeigen der Bond Interfaces

net show int <bond>
net show int <bond> detail


Löschen eines Bond Interfaces

net del bond <bond>

VLAN Brdige

Es gibt zwei Arten von VLAN Bridge bei Cumulus.

  • Traditional Bridge
  • VLAN-Aware Bridge

Wir verwenden den “VLAN-Aware Bridge”. Genauer möchte ich darauf nicht eingehen.
Es kann immer nur einen “VLAN-Aware Bridge” pro Switch geben.

Anzeigen einer Bridge

net show interface bridge 
net show bridge vlan


Anlegen eines VLAN-Aware Bridge inkl. Ports und VLANs

net add bridge <bridge-name> ports swp<n>
net add bridge <bridge-name> vids <vlans>
net add bridge <bridge-name> pvid <vlan>
net pending
net commit

Beispiel:
net add bridge bridge0 ports swp1-2
net add bridge bridge0 vids 100,200
net add bridge bridge0 pvid 1
net pending
net commit


WICHTIG! Die Bridge bekommt VLANs und Ports zugewiesen. Alle Ports die in dieser Bridge sind sprechen automatisch diese VLANs.
Man muss erst den Ports die richtigen VLANs zuweisen damit diese nur die nötigen VLANs sprechen.

VLAN (Tagged) einem Port zuweisen

net add interface swp<n> bridge vids 100,200
net add interface swp<n> bridge pvid 1
net pending
net commit

Beispiel:
net add interface swp33 bridge vids 100
net add interface swp33 bridge pvid 1
net pending
net commit


VLAN (Access) einem Port zuweisen

net add interface swp<n> bridge access 200
net pending
net commit

Beispiel:
net add interface swp34 bridge access 200
net pending
net commit


Drop untagged Traffic

net add interface swp<n> bridge allow-untagged no

Beispiel:
net add interface swp46 bridge allow-untagged no

VLANs


CLAG (MLAG)

Um ein MLAG mit zwei Switches zu bauen muss es eine direkte verbindung (peerlink) zwischen den beiden Switches geben(This is typically a bond for increased reliability and bandwidth)

Zu erst muss der Peelink konfiguriert werden:

net commands
============
switch1# net add clag peer sys-mac <mac-address> interface <swp3-4 oder swp49,swp52> primary backup-ip <ip-address>

Welche MAC Adresse? Cumulus Linx gibt hier folgenden Range for:

switch1# net add clag peer sys-mac <mac-address> interface swp3-4 primary backup-ip <ip-address>
<code>
root@cumulus:~# net add clag peer sys-mac
    <mac-clag>  :  A MAC address from the 44:38:39:FF:00:00 to 44:38:39:FF:FF:FF range

Interface: alle Interfaces der “Stack-Verbindung” angeben Primary: hier kann festgelegt werden welche Rolle der Switch haben soll Backup IP ist frei wählbar (sollte aber glaub ich nicht routebar sein)! Jeder Member benötigt seine eigene IP

Die Konfiguration muss auf beiden Switches durchgeführt werden!!!

Beispiel:

Switch1# net add clag peer sys-mac 44:38:39:FF:00:01 interface swp49,swp52 primary backup-ip 192.0.2.1
Switch1# net pening
Switch1# net commit

Switch2# net add clag peer sys-mac 44:38:39:FF:00:01 interface swp49,swp52 primary backup-ip 192.0.2.2
Switch2# net pening
Switch2# net commit

Das CLAG/MLAG kann dann wie folgt überprüft werden:

root@cumulus:~# net show clag
The peer is alive
     Our Priority, ID, and Role: 1000 b8:6a:97:29:5d:06 secondary
    Peer Priority, ID, and Role: 1000 8c:ea:1b:86:04:b8 primary
          Peer Interface and IP: peerlink.4094 fe80::8eea:1bff:fe86:4b8 (linklocal)
                      Backup IP: 192.0.2.1 (inactive)
                     System MAC: 44:38:39:ff:00:01

Server Anbindung mit Bond:

net add clag port bond <bond-name> interface <interface> clag-id <zahl>
 net add bond <bond-name> bridge access <vlan-id>

Bond: Bond name definieren z.B.: ESX01-Bond Interface: alle Switchports angeben (achtung nur von dem Switch der gerade konfiguriert wird) Clag-id: ist sowas wie die Portchannel ID unter Cisco

Die Konfiguration muss auf beiden Switches durchgeführt werden!!!

Beispiel:

Switch1# net add clag port bond server-bond interface swp1 clag-id 1
Switch1# net add bond server-bond bridge access 106
Switch1# net pending
Switch1# net commit

Switch2# net add clag port bond server-bond interface swp1 clag-id 1
Switch2# net add bond server-bond bridge access 106
Switch2# net pending
Switch2# net commit

Anmerkungen:

  • Ports, Peerlink und Bonds dürfen vorab nicht der Bridge zugewiesen sein

Offene Fragen:

  • woher weiß er das er in dem Clag Bond LACP spricht ? vielleicht default

User Management

Der Default User ist “comulus” mit dem Passwort “CumulusLinux!”. Dieser User hat Admin Rechte und kann via sudo alles machen.
Der Root User ist per default in der sshd Config deaktiviert.
Es können ganz normal via Linux Shell hinzugefügt werden (adduser oder useradd).
Es gibt zwei default Gruppen von Cumulus

  • netedit –> Changes möglich
  • netshow –> ReadOnly

Ein User kann zu diesen Gruppen via Linux Shell hinzugefügt werden.


POE

POE unterstützen nicht alle EdgeCore Switches. Hier sollte an das Datenblatt genau lesen.

POE ist per default auf allen 1G Interfaces mit der Priorität “low” aktiv.
Diese Priorität gibt es:

  • Low
  • High
  • Critical

Man kann einem Port eine Klasse geben. Geht dem Switch der Strom für POE aus werden zuerst die Ports in der Low Klasse deaktiviert. Danach wird High deaktiviert. Critical bleibt immer online (wenn dies möglich ist).

POE Enable / Disable

sudo poectl -e swp<n>
sudo poectl -d swp<n>

Beispiel:
sudo poectl -e swp1
sudo poectl- e swp1-30


Ändern der Priorität

sudo poectl -p swp<n> <low|high|critical>

Beispiel:
sudo poectl -p swp1 ciritical
sudo poectl -p swp2-5,10 low


Switch Status

sudo poectl -s


Port Information

sudo poectl -i


Passwort Reset via ONI

Boot in Recover Mode

                       GNU GRUB  version 2.02-cl3u3
     
 +----------------------------------------------------------------------------+
 | Cumulus Linux GNU/Linux                                                    |
 |*Advanced options for Cumulus Linux GNU/Linux                               |
 | ONIE                                                                       |
 |                                                                            |
 +----------------------------------------------------------------------------+     
                       GNU GRUB  version 2.02-cl3u3
     
 +----------------------------------------------------------------------------+
 | Cumulus Linux GNU/Linux, with Linux 4.1.0-cl-7-amd64                       |
 |*Cumulus Linux GNU/Linux, with Linux 4.1.0-cl-7-amd64 (recovery mode)       |
 |                                                                            |
 +----------------------------------------------------------------------------+  
root@switch:~# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

reboot


Update Cumulus

Es gibt diese Update Möglichkeiten:

  • Minor Update via apt-get
  • Minor Update via Disk Install (Oni)
  • Major Update via Disk Install (Oni)

Aufpassen muss man auch noch ob man Switches via MLAG verbunden hat oder ob dies Single Switches sind.

Minor Update via apt-get Single Switch

Es kann ein Minor Update auf einem Single Switch einfach via apt-get durchgeführt werden. Hier gibt es auch recht wenig zu beachten. Beim Update werden vom OS Services neugestartet. Daher kann es zu Unterbrechungen kommen. Es kann auch sein das ein Reboot benötigt wird. Dies zeigt das OS nach dem Update an.
Achtung das Update kann auf Geräte die nicht so stark sind (zB. nur ein Gbit Switch) recht lange dauern. Eine Stunde vergeht hier recht schnell.

apt-get update
apt-get upgrade


Minor Update via apt-get MLAG Switches

Hier wird ein Switch nach dem anderen gepatcht. Der Switch der die Updates einspielt ist im Verbund offline.

Kontrolle Master Slave Rolle Der Switch den wir Updaten wollen muss die Slave Rolle haben.

root@cumulus:~# clagctl status
The peer is alive
     Our Priority, ID, and Role: 1000 b8:6a:97:29:5d:06 secondary
    Peer Priority, ID, and Role: 1000 8c:ea:1b:86:04:b8 primary
          Peer Interface and IP: peerlink.4094 fe80::8eea:1bff:fe86:4b8 (linklocal)
                      Backup IP: 192.0.2.1 (inactive)
                     System MAC: 44:38:39:ff:00:01

CLAG Interfaces
Our Interface      Peer Interface     CLAG Id   Conflicts              Proto-Down Reason
----------------   ----------------   -------   --------------------   -----------------
     server-bond   server-bond        1         -                      -              


Shutdown Core Uplink Port
Man sollte wenn es einen Hauptuplink zum Switch gibt diesen abdrehen damit es nicht zu Routingproblemen kommen kann.

ip link set swpX down


Shutdown Peer Link
Abdrehen vom MLAG Peer Link

ip link set peerlink down


Update via apt-get

apt-get update
apt-get upgrade


Reboot

reboot


Kontrolle STP
Auf beiden Switches muss kurz STP kontrolliert werden

mstpctl showall


Kontrolle Links
Kontrolle ob Core Uplink und Peer Links wieder up sind

net show interface


Kontrolle MLAG
Kontrolle vom MLAG Status

clagctl status


Ist wieder alles ok können wir alles vorbereiten damit wir den 2. Member machen können.

Slave Switch zum Master machen
Den Switch den wir gerade gepatcht haben der der Slave ist machen wir jetzt zum Master

clagctl priority 999


Kontrolle ob der Switch der gepatcht werden soll auch wirklich der Secondary ist.

clagctl status


Wenn dies der Fall ist kann mit diesen Schritten weiter machen:

  • Shutdown Core Uplink Port
  • Shutdown Peer Link
  • Update via apt-get
  • Reboot
  • Kontrolle STP
  • Kontrolle Links
  • Kontrolle MLAG


MLAG Priority richtig setzten
Wenn beide Switches ihre Updates gemacht haben und wieder online sind muss man noch die MLAG Priorität richtig setzten.
Optimal wäre es wenn man noch die alten wissen würde. Wenn nicht setzte man einfach den Wert “32768” auf den Switch der aktuell der primäre ist.
In meinem Fall wir dies 1000. Daher setzte ich die Prio jetzt auf 1000.

clagctl priority 1000
netzwerk/switches/cumulus.txt · Last modified: by stone