Automation: How to streamline a networkwide switch upgrade
Automatisierung kann bei sich wiederholenden Netzwerkaufgaben einen großen Unterschied machen, und genau das haben wir getan, um ein Enterprise-Switch-Upgrade mit Skripts zu optimieren, die wir mit Python und einer Reihe von Open-Source-Tools erstellt haben.
Das Projekt brachte mehrere Vorteile, von denen drei die Eliminierung vieler menschlicher Fehler waren, die dem manuellen Prozess innewohnen, eine insgesamt schnellere Bereitstellung und erhebliche Kosteneinsparungen.
Die Aufrüstung eines großen Switched-Netzwerks ist immer eine Herausforderung. Die typische Lösung besteht darin, die alten Switch-Konfigurationen und die Verkabelung zum Patchpanel sorgfältig zu dokumentieren, dann die neuen Switches manuell zu konfigurieren und die Verkabelung zu ersetzen. Die Endpunkte müssen sorgfältig nachverfolgt werden, damit sie dem richtigen VLAN zugewiesen werden und die richtige Schnittstellenkonfiguration haben.
Dieser Prozess kann weiter verkompliziert werden, da neue Switches möglicherweise neue Funktionen und zwangsläufig ein anderes Schnittstellenlayout als die alten Switches haben.
Hier beschreiben wir das Projekt, mit dessen Durchführung NetCraftsmen beauftragt wurde, den manuellen Prozess, der vom Switch-Anbieter vorgeschlagen wurde, und den automatisierten Prozess, den wir selbst geschrieben haben. Es war ein großartiges Beispiel für die Nutzung eines Upgrades als Gelegenheit, angesammelte technische Schulden zu beseitigen.
Das Projekt
Unser Kunde beschäftigt über 20.000 Mitarbeiter an 100 Standorten. Ihr Netzwerk verwendete ein Route/Switch-Design mit mehr als 100 alternden 1-Gigabit-Switches, von denen einige das Ende ihrer Lebensdauer erreicht hatten und für die der Anbieter keine Software-Updates mehr bereitstellen würde.
Bei der Untersuchung der Kabelschränke stellten wir fest, dass die Verbindungen zu den Patchbays gereinigt werden mussten. Wir mussten die Rack-Verkabelung durch Cat5e-Verkabelung ersetzen, aber glücklicherweise war es nicht erforderlich, die Verkabelung von den Patchfeldern zu den Wandbuchsen zu ändern. Wir müssten auch ungenutzte Schnittstellen identifizieren, die für die zukünftige Verwendung verfügbar gemacht werden könnten.
Eine Bestandsaufnahme ergab, dass 100 Switches mit durchschnittlich 200 Ports pro Switch ersetzt werden mussten. Die Arbeit hatte bereits manuell begonnen, als NetCraftsmen beteiligt wurde, also wussten wir, was funktionieren würde, aber unser Team sah dies als eine großartige Gelegenheit, Automatisierung einzusetzen, um den Prozess zu rationalisieren.
Mach es manuell
Der meist manuelle Prozess, der vom Switch-Anbieter definiert wurde, umfasste das Aufspüren jeder Patchpanel-Verbindung, das Überprüfen der Endpunkte, das Ersetzen des Switches, das erneute Patchen aktiver Verbindungen, das Aktualisieren der neuen Switch-Konfiguration und das Überprüfen der Konnektivität. Darauf folgte die abschließende Fehlerbehebung, um Dinge zu beheben, die nicht funktionierten.
Das manuelle Sammeln der Informationen war zeitaufwändig und fehleranfällig; das Fehlen eines Kopierens und Einfügens um ein Zeichen würde eine Rückverfolgung erfordern, um den Fehler zu identifizieren und zu korrigieren.
Wir haben Switch-Ports als aktiv eingestuft, wenn sie in den letzten 180 Tagen verwendet wurden, wodurch wir die vielen kabelgebundenen Ports überspringen konnten, die seit Jahren inaktiv waren. Das führte zu viel mehr ungenutzten Ports auf den neuen Switches als auf den alten, aber wir ersetzten die alten Switches eins zu eins, weil die Flexibilität, mehr verfügbare Ports zu haben, wichtiger war als der Versuch, die Portauslastung zu maximieren.
Diese Phase des Prozesses wurde durch die Notwendigkeit erschwert, die Verbindungen zwischen den Switches und den Patchfeldern zu bereinigen. Wir haben eine detaillierte Dokumentation erstellt, um die alten Switch-Port-Verbindungen den Ports auf dem neuen Switch zuzuordnen.
Der Prozess erforderte auch die Untersuchung der alten Switch-Konfigurationen, um Endpunkte zu identifizieren, die spezielle Konfigurationen wie 10 MBit/s oder Halbduplex erforderten. Diese Endpunkte könnten dann kompatiblen Ports auf dem neuen Switch zugewiesen werden. Nachdem alle diese Informationen gesammelt waren, konnte die neue Switch-Konfiguration aus den Konfigurationsvorlagen des Kunden erstellt werden.
Nach Abschluss der Dokumentation und Planung konnte der alte Switch entfernt und der neue Switch installiert werden. Jede Endpunktverbindung musste manuell validiert werden, sowohl anhand des Switch-Port-Status als auch durch Anpingen des Geräts. (Hinweis: Es ist immer ratsam, Endpunkte zu identifizieren, die nicht auf Pings reagieren, wie z. B. IoT-Geräte, die ein proprietäres Protokoll verwenden, um mit einem benutzerdefinierten Controller zu kommunizieren. Das Beste, was Sie tun können, ist, die Verbindungskonnektivität, die MAC-Adresse und den Paketfluss zu überprüfen .) Dann mussten die unvermeidlichen Verkabelungsfehler behoben werden.
Unser Team begann seine Arbeit, indem es dem vom Anbieter definierten Prozess folgte und prognostizierte, dass die Aufrüstung des Verteilerschranks jeweils zwei bis drei Stunden dauern würde, einige jedoch vier bis fünf. Wir haben schnell den Automatisierungsbedarf erkannt.
Robert Hallinan, einer der Teamleiter von NetCraftsmen, erstellte einen einfacheren, kostengünstigeren Prozess, der einen Großteil der Konfiguration sowie die Validierung der Konnektivität für alle Endpunkte, die auf Ping reagierten, automatisierte. Er erstellte die Lösung mit Python, Nornir (einem Open-Source-Python-Automatisierungsframework), Pandas (einer Open-Source-Bibliothek zum Bearbeiten numerischer Daten), TextFSM (einem Open-Source-Python-Modul zum Umwandeln von Text in strukturierte Daten) und verwandten Tools . Hier ist seine Schritt-für-Schritt-Beschreibung seiner Verwendung.
Der automatisierte Prozess
Vor Beginn des Wartungsfensters erstellen wir immer eine Momentaufnahme des Zustands des alten Switches mithilfe eines für dieses Projekt entwickelten Datenerfassungsskripts. Der Automatisierungsprozess verwendet die Daten, um einen Stationsbericht zu erstellen, der alle Ports, ihren aktuellen Zustand, die MAC-Adresse (und das Nachschlagen des Organizationally Unique Identifier (OUI)), die IP-Adresse, die Rückwärtssuche des DNS-Namens, der an jedem Port gelernt wurde, auflistet, Einbindungen zum Abrufen von Telefondaten, Cisco Discovery Protocol (CDP), Geschwindigkeit/Duplex usw.
Das Skript generiert auch eine Textdatei, die direkt in pingInfoView importiert werden kann, einen kostenlosen Ping-Sweeper, den wir zur Validierung der Konnektivität verwendet haben. Ich habe das Datenerfassungsskript erweitert, um auch eine Flatfile-Datenbank mit einer Teilmenge dieser Informationen auszugeben, einschließlich der Frage, ob ein Gerät angepingt werden kann.
Wir haben eine Beispiellaborumgebung erstellt, um die Entwicklung der Automatisierung zu ermöglichen, ohne das Produktionsnetzwerk zu beeinträchtigen (siehe Diagramm unten). Mehrere virtuelle PCs (VPCs) – die für unsere Testumgebung verwendeten virtuellen Endpunkte – wurden in drei VLANs (20, 30 und 40) platziert. Ursprünglich waren sie wie abgebildet verkabelt.
Abbildung 1: Beispielumgebung
Dann habe ich in tkinter eine GUI erstellt, die Standard-Python-Schnittstelle zum Tcl/Tk-GUI-Toolkit, die die Gerätedatei aus dem Gather-Skript und den Stationsberichtsskripten, Benutzeranmeldeinformationen, die Datenbank aus dem Stationsbericht und ein VLAN aufnehmen kann Standardisierungsdatei. Nach dem Start meldet sich das Tool regelmäßig beim Switch an und ruft die ARP- und MAC-Adresstabellen ab, um sie der Geräte-Tracking-Datenbank hinzuzufügen.
Dieser Prozess erkennt die MAC-Adresse des Endpunktgeräts an neuen Ports, wenn sie verbunden werden, und prüft, ob die VLAN-Konfiguration so ist, wie sie sein sollte. Wenn dies der Fall ist, wird der Prozess fortgesetzt. Ist dies nicht der Fall, meldet es sich beim Switch an, korrigiert die Konfiguration und sendet den Port zurück. Es prüft auch die gelernte IP-Adresse und protokolliert diese.
Darüber hinaus pingt das Skript regelmäßig die IP-Adressen an, die den Endpunkten zugeordnet sind. Ändert sich die Adresse während des Wartungsfensters, wird die alte IP durch die neue ersetzt. Auf diese Weise zeigt ein Ping-Tool keinen fehlenden Host an, da es die alte Adresse, die jetzt ersetzt wurde, nicht anpingen kann.
All dies wird aus der Datenbank in einen Pandas-Datenrahmen geladen, der regelmäßig auf dem Bildschirm aktualisiert wird. Es ermöglicht auch den einfachen Export des angezeigten Frames in CSV und bietet Einblick in fehlende Geräte oder Geräte, die nicht mehr angepingt werden können usw. Dann erhalten wir auch ein besseres Bild, wenn sich die IP-Adresse eines Geräts ändert, weil eine neue Adresse von DHCP ausgegeben wird . Am Ende des Wartungsfensters liefert der gesamte Prozess problemlos einen Bericht an den Kunden. Unten sehen Sie einen Screenshot eines Berichts, bevor der neue Switch und die Geräte online sind.
Abbildung 2: Bevor ein neuer Switch online ist
Wir müssen auch die Ausreißer – die Endpunkte mit speziellen Portkonfigurationen – nicht mehr vorab bereitstellen. Die einzige manuelle Konfiguration (und ich arbeite daran, diesen Teil zu automatisieren) besteht darin, den Netzwerktechniker am Ende des Wartungsfensters vor Ort zu befragen, um die Ausreißer-Ports zu identifizieren, die zu Beginn des Fensters nicht verbunden waren. Dieser Schritt ist erforderlich, da wir die MAC-Adresse eines nicht verbundenen Ports während des anfänglichen Datenerfassungsskripts nicht erkennen können. Stattdessen verwenden wir ein Tool, um den Switch-Port von der Patchpanel-Seite zu erkennen und sicherzustellen, dass die Konfiguration übernommen wird.
Nach der „Neuverkabelung“ der Laborumgebung wurden den Endpunkten Ports zugewiesen und die Kunden-VLANs wurden neu standardisiert, von 20, 30 und 40 auf 200, 300 und 400, wie in Abbildung 3 unten gezeigt.
Abbildung 3: Aufgerüstetes Labornetzwerk
Eine nette Ergänzung zur Automatisierung ist, dass die GUI einen Fortschrittszähler enthält, der anzeigt, wie viele Endpunkte noch neu verbunden werden müssen. Die Automatisierung wird alle paar Minuten ausgeführt, sammelt neue Endpunktverbindungsdaten und aktualisiert die aktive und verbleibende Anzahl. Siehe den Zähler oben rechts im Screenshot unten:
Abbildung 4: Fortschrittszähler oben rechts
Schließlich zeigt der Überwachungsbildschirm an, wann das Switch-Upgrade abgeschlossen ist:
Abbildung 5: GUI mit abgeschlossenem Upgrade
Ersparnisse
Der Automatisierungsprozess spart mehr als eine Stunde während des Staging-Prozesses und durchschnittlich 1,5 Stunden pro Wartungsfenster, multipliziert mit der Teamgröße von fünf oder sechs Personen. Die Gesamteinsparung beträgt ca. 8,5 Personenstunden pro Wechsel. In Verteilerschränken mit mehreren Schaltern wurde mehr Zeit gespart. Als wir uns einmischten und die Automatisierung bauten, mussten nur noch 40 Switches aufgerüstet werden. Unser automatisiertes System wurde verwendet, um das Hardware-Upgrade dieser letzten 40 Switches zu überwachen, um bisher geschätzte 340 Stunden einzusparen.
Insgesamt dauerte es etwa 80 Stunden, um den automatisierten Prozess zu erstellen, hauptsächlich aufgrund des Erlernens der Verwendung von tkinter zum Erstellen der GUI. Die anderen Softwaretools wurden bereits für andere Projekte verwendet und viele der erforderlichen Funktionen waren bereits gut bekannt. Die bisherige Nettoeinsparung betrug 260 Stunden und das System kann für zukünftige Upgrades verwendet werden.
Es gibt noch eine weitere Einsparung, die unermesslich ist: die Verringerung des Mitarbeiterstresses. Umfangreiche Netzwerk-Upgrades sind anstrengend, da ein einziger Fehler ein Wartungsfenster in einen nächtlichen Marathon verwandeln kann. Die Automatisierung kann diese mühsamen, stressigen Aufgaben in befriedigende Aufgaben zur Verbesserung der Infrastruktur verwandeln.
Dieses Projekt zeigt, wie die Automatisierung einen bestehenden Änderungsprozess verbessern, den Aufwand reduzieren und die Genauigkeit der Änderungen erhöhen kann. Der Kunde war mit den Ergebnissen sehr zufrieden und das Upgrade-Team freute sich über den stark vereinfachten Prozess. Die Einsparung von 260 Stunden machte die Führungskräfte und das technische Personal des Kunden sehr glücklich und unterstützte zukünftige Automatisierungsbemühungen. Es ist schön, dass eine größere Infrastrukturänderung reibungslos und mit minimalen Auswirkungen auf die Benutzergemeinschaft abläuft.
Copyright © 2022 IDG Communications, Inc.