Entwicklung Eines Programmierbaren User-Space-Switches
Total Page:16
File Type:pdf, Size:1020Kb
Technische Universität Ilmenau Fakultät für Elektrotechnik und Informationstechnik Bachelorarbeit Entwicklung eines programmierbaren User-Space-Switches vorgelegt von: Carsten Andrich eingereicht am: 15. 05. 2014 geboren am: Studiengang: Elektrotechnik und Informationstechnik Studienrichtung: Informations- und Kommunikationstechnik Anfertigung im Fachgebiet: Kommunikationsnetze Fakultät für Elektrotechnik und Informationstechnik Verantwortlicher Professor: Prof. Dr. rer. nat. Jochen Seitz Wissenschaftlicher Betreuer: M.Sc. Markus Hager Kurzfassung Unsere moderne Informationsgesellschaft ist auf leistungsfähige Netzwerktechnologien angewiesen. Dazu zählt auch Ethernet, das heute nahezu exklusiv für kabelgebundene lokale Netzwerke eingesetzt wird. Da die Anforderungen an solche Netze exponenti- ell wachsen, wird der Ethernet-Standard kontinuierlich weiterentwickelt, wobei neben einer Steigerung der Übertragungsgeschwindigkeit auch Protokolle für die Umsetzung von Dienstgütegarantien im Mittelpunkt der Forschung stehen. Zur Unterstützung der Entwicklung neuer Protokolle stellen sowohl computergestützte Simulationen als auch Testnetzwerke probate Erprobungsmittel dar, wobei für Letztere programmierba- re Switches benötigt werden. Ein solcher Switch wird in dieser Arbeit als Anwendung im Linux User-Space entwickelt. Aufgrund von Unzulänglichkeiten bezüglich der Programmierbarkeit bestehender Software-Switches wird eine Neuimplementation in Angriff genommen. Im Fokus liegt dabei eine effiziente und skalierende Umsetzung der Ethernet-Frameweiterleitung mit- tels Multi-Threading. Es erfolgt zunächst eine detaillierte Untersuchung verschiede- ner Linux-APIs, Threading-Modelle, nebenläufigen Datenstrukturen und Synchroni- sationsoperationen. Unter Abwägung der Resultate wird dann ein simpler, program- mierbarer Switch implementiert. Abschließende Untersuchungen zeigen, dass dieser größtenteils mit Hardware-Switches vergleichbare Leistungscharakteristiken aufweist. Zusätzlich wird weiteres Optimierungspotenzial anhand konkreter Beispiele identifi- ziert. Abstract High-capacity networking technology plays an integral part in our modern information society. As such a technology, Ethernet is nowadays almost exclusively employed for wired local area networks. The associated standard is continuously refined to meet the exponentially growing requirements for these networks. Primary objects of current research are the increase of transfer rate and protocols for quality of service guarantees. To support the development of new protocols, both computer-aided simulations and test networks are used as suitable means of evaluation, whereupon the latter require programmable switches. In this thesis such a switch is being developed as a Linux user-space application. A reimplementation is conducted, since existing software switches suffer from shortcomings regarding programmability. The development focuses on an efficient and scalable realization of Ethernet frame-forwarding via multi-threading. Preparatorily, multiple Linux APIs, threading models, concurrent data structures and synchroniza- tion methods are examined in detail. Based on the results a simple yet programmable switch is then implemented. Concluding analyses show that it mostly features perfor- mance characteristics comparable to those of hardware switches. Additionally, further potential for optimization is identified with the help of concrete examples. Inhaltsverzeichnis i Inhaltsverzeichnis 1 Problemstellung 1 1.1 Motivation . .1 1.2 Aufgabe . .3 1.3 Related Work . .4 1.3.1 Linux Bridge . .4 1.3.2 OpenFlow Protokoll . .6 1.3.3 Open vSwitch . .9 1.3.4 Zusammenfassung . 12 1.4 Anforderungen . 13 2 Lösungsansatz 15 2.1 Entwicklungshardware . 15 2.1.1 NIC-Speicherzugriff . 16 2.1.2 CPU-Speicherzugriff . 17 2.1.2.1 Latenz . 18 2.1.2.2 Datenrate . 19 2.1.3 Zusammenfassung . 20 2.2 Messsoftware . 21 2.2.1 Paketgenerierung . 21 2.2.2 Paketempfang . 22 2.2.3 Fazit . 23 2.3 Messverfahren . 23 2.3.1 Ethernet-Paketformat . 23 2.3.2 Standardisierte Verfahren . 25 2.3.3 Vereinfachte Messmethodik . 25 2.3.3.1 Implementation . 27 2.3.3.2 Messergebnisse . 28 2.3.3.3 Folgerungen . 33 2.4 Zusammenfassung . 34 Bachelorarbeit Carsten Andrich ii Inhaltsverzeichnis 3 Implementation 35 3.1 Entwicklungsumgebung . 35 3.2 Grundlagen . 35 3.2.1 recvfrom()/sendto() . 36 3.2.2 PACKET_RX_RING/PACKET_TX_RING . 37 3.2.3 Fazit . 39 3.3 Multi-Threading . 40 3.3.1 Statisches Thread-Modell . 40 3.3.2 Synchronisationsmechanismen . 42 3.3.3 Zusammenfassung . 46 3.4 Prioritätswarteschlange . 47 3.4.1 Datentyp . 47 3.4.2 Umsetzung . 48 3.4.3 Optimierungsmöglichkeiten . 50 3.5 Programmierinterface . 51 3.5.1 Beispiele . 52 3.5.1.1 Hub . 52 3.5.1.2 Switch . 52 4 Ergebnisbewertung 55 4.1 Quantitativ . 55 4.1.1 PLUS-Konfigurationen . 55 4.1.1.1 Framerate . 56 4.1.1.2 Latenz . 57 4.1.1.3 Schlussfolgerungen . 59 4.1.2 Switches . 59 4.1.2.1 Framerate . 60 4.1.2.2 Latenz . 61 4.1.2.3 Schlussfolgerungen . 63 4.1.3 Zusammenfassung . 63 4.2 Qualitativ . 64 5 Zusammenfassung mit Ausblick 65 A Alternative Thread-Modelle 69 A.1 Dynamische Thread-Modelle . 69 A.1.1 Gemeinsamer Ringpuffer . 70 Bachelorarbeit Carsten Andrich Inhaltsverzeichnis iii A.1.2 Private Ringpuffer . 71 A.1.3 Fazit . 72 A.2 Erweitertes statisches Thread-Modell . 72 B Inhaltsverzeichnis Datenträger 73 Literaturverzeichnis 75 Abbildungsverzeichnis 79 Tabellenverzeichnis 81 Quellcodeverzeichnis 83 Abkürzungsverzeichnis und Formelzeichen 85 Thesen zur Bachelorarbeit 87 Erklärung 89 Bachelorarbeit Carsten Andrich 1 1 Problemstellung 1.1 Motivation Netzwerktechnologien spielen in unserer modernen Informationsgesellschaft eine zen- trale Rolle. Für Local Area Networks (LAN) hat sich Ethernet sowohl im privaten als auch im professionellen Umfeld als De-facto-Standardtechnik zur Vernetzung etabliert. Ethernet wurde im Jahr 1983 vom Institute of Electrical and Electronics Engineers (IEEE) in Form der IEEE-Norm 802.3 standardisiert und konnte die konkurrierenden Standards Token Ring [IEE01] und Token Bus [IEE90] faktisch vom Markt verdrängen. Im Verlauf der letzten 30 Jahre hat sich Ethernet einem erheblichen Wandel un- terzogen, um mit den exponentiell gestiegenen Anforderungen moderner Kommuni- kationsnetze schritthalten zu können. Anfänglich war lediglich 10-Mbit/s-Ethernet unter Verwendung von Kupfer-Koaxialkabel bei einer maximalen Segmentlänge von 100 Metern standardisiert. Inzwischen wird hauptsächlich Twisted-Pair-Kupfer- und Glasfaserkabel eingesetzt, wobei Letzteres 100-Gbit/s-Ethernet über Segmentlängen von mindestens 40 Kilometern ermöglicht. Das ursprünglich für Ethernet entwickel- te Mehrfachzugriffsverfahren Carrier Sense Multiple Access with Collision Detection (CSMA/CD) wurde mit dem flächendeckenden Einsatz von Switches und Vollduplex- Verbindungen obsolet. Natürlich stagniert die Weiterentwicklung des Ethernet-Standards nicht, sondern wird kontinuierlich vorangetrieben. Besonderes Interesse gilt hier nicht nur einer wei- teren Erhöhung der Übertragungsgeschwindigkeit, sondern ebenfalls neuen Möglich- keiten, die steigenden Dienstgüteanforderungen zu erfüllen und dabei die bewährte Switch-basierte Infrastruktur von Ethernet beizubehalten. Hierzu zählen unter ande- rem: • IEEE 802.1Qau Congestion Notification • IEEE 802.1aq Shortest Path Bridging • IETF RFC 6326 Transparent Interconnection of Lots of Links Bachelorarbeit Carsten Andrich 2 1 Problemstellung Für die Entwicklung sowie Evaluation solcher neuer Standards stellen softwarebasierte Netzwerksimulatoren ein adäquates Werkzeug dar. Im Gegensatz zur Implementation in Hardware sind Simulationen kostengünstig, vergleichsweise wenig zeitaufwändig in der Realisierung und erlauben eine nahezu unbegrenzte Skalierung des untersuchten Systems. Letzteres ist für die Entwicklung von Standards im Bereich der Dienstgüte von besonderer Bedeutung, da sich Auswirkungen vor allem in großen Netzwerken erkennen lassen, deren testweiser Aufbau mit hohen Kosten verbunden ist. Allerdings setzen Simulationen meist ideale Rahmenbedingungen voraus, weshalb Simulationsergebnisse nicht direkt auf Produktivnetze1 übertragen werden können. Als besondere Herausforderung tritt hier die Heterogenität2 von Produktivnetzen her- vor, denn diese werden zumeist mit einer Vielzahl von Komponenten unterschiedlicher Hersteller und Baujahre betrieben, die auf verschiedene Hardware, Firmware und/oder Betriebssysteme setzen. Dies trifft sowohl auf die Switches, die im Netzinneren zum Einsatz kommen, als auch besonders ausgeprägt auf die Endknoten zu. Deren Cha- rakteristika können von Simulationen nur bedingt wiedergegeben werden, was unter anderem mit der Komplexität des zu simulierenden Gesamtsystems oder der Abge- schlossenheit proprietärer Komponenten begründet werden kann. Dennoch ist für die Wirtschaftlichkeit von Produktivnetzen ein Investitionsschutz in Form von Abwärts- kompatibilität erforderlich, die auch vom Ethernet-Standard vorgesehen wird, obwohl darin potentiell ein Innovationshemmnis besteht. Um neue Standards oder deren Entwürfe unter möglichst realitätsnahen Bedin- gungen evaluieren zu können, ist somit die Erprobung in einem Testnetz erforderlich. Switches, als zentrale Komponenten moderner Ethernet-Netzwerke, müssen folglich auch in Testnetzen herangezogen werden. Hardware-Switches sind jedoch im Regelfall proprietäre Systeme, die lediglich über einen vom Hersteller definierten Funktionsum- fang verfügen. Die Implementation liegt in der Regel nur in Binärform vor und kann darüber hinaus nicht erweitert werden, was eine Verwendung zur Erprobung