Aus Linux-Magazin 11/2013

Audio Video Bridging unter Linux

© Muharrem Zengin, 123RF

Audio Video Bridging (AVB) überträgt Multimediadaten in Echtzeit durchs modernisierte Ethernet. Ein Überblick über Protokolle, geeignete Hardware und Linux-Unterstützung.

Audio Video Bridging (AVB) heißt eine neue Funktion für Ethernet-Netzwerke. Sie bietet präzise Synchronisation aller Teilnehmer sowie Quality of Service auf der Netzwerkschicht 2. Damit schafft sie die Voraussetzung dafür, digitales Audio und Video in Echtzeit durchs Netzwerk zu schicken.

Alles per Ethernet

Für AVB gibt es ein Reihe von Anwendungsbereichen. Sie lassen sich bereits erraten, wenn man sich die Mitgliederliste der Avnu Alliance [1] ansieht, die sich um die Zertifizierung von AVB-Geräten und die Etablierung der Standards kümmert. Neben Chipherstellern wie Intel und Broadcom findet sich hier mit der Harman-Gruppe, Yamaha und Meyer Sound die professionelle Audio- und Video-Branche. Mit EADS ist zudem die Luftfahrt- und Rüstungsindustrie mit von der Partie. Für die Autoindustrie gibt es sogar ein eigenes Whitepaper zur neuen Netzwerktechnologie [2]. Hier soll AVB nicht nur für das In-Vehicle-Infotainment zum Einsatz kommen, sondern auch Busse wie CAN ersetzen. AVB benötigt weniger Kabelstrecke und trägt der hochgradigen Dezentralisierung der Systeme im Fahrzeug Rechnung.

Die Ethernet-Erweiterungen sind im Grunde interessant für alle, die Audio und Video übertragen möchten. Dazu gehören Konferenzzentren und Hotels sowie die Veranstaltungstechnik allgemein mit ihren zahlreichen Mikrofonen, Lautsprechern und Mischpulten, Kameras und Bildschirmen. Selbst Privatleute mit Heimkino und Stereoanlage sollen künftig alle ihre Geräte mit dem Ethernet-Stecker verbinden und Abschied von HDMI, DVI, Miniklinke und Cinch nehmen.

Abbildung 1 zeigt ein kleines AVB-Netzwerk für die Beschallung einer Veranstaltung. Es streamt die Mikrofonsignale von der Bühne mit den Musikern über AVB. Das Mischpult empfängt und verarbeitet die Signale aus diesem Stream, um anschließend einen neuen AVB-Stream mit einem gemischten Audiosignal zu den Lautsprechern zu schicken. Daneben zeichnet ein PC mit Aufnahmesoftware den AVB-Stream des Mikrofonvorverstärkers auf. Außerhalb des eigentlichen AVB-Netzwerks befindet sich ein Laptop, der über keine AVB-Hardware verfügt. Er steuert jedoch die AVB-Teilnehmer mit Hilfe des Protokolls IEEE 1722.1.

Abbildung 1: Ein kleines AVB-Netzwerk für eine Beschallungssituation mit Mikrofon, Mischpult, Aktivlautsprecher, zwei AVB-Switches und Aufzeichnungsgerät.

Abbildung 1: Ein kleines AVB-Netzwerk für eine Beschallungssituation mit Mikrofon, Mischpult, Aktivlautsprecher, zwei AVB-Switches und Aufzeichnungsgerät.

AVB-Protokolle

Definiert ist AVB in Standards der Reihe 802 des Institute of Electrical and Electronics Engineers (IEEE). Die meisten der Spezifikationen sind nach Registrierung kostenlos herunterzuladen.

Um sicherzustellen, dass alle Audiosamples und Videoframes zur richtigen Zeit wiedergegeben werden, benötigt AVB einen Synchronisationsmechanismus. Sonst könnten beispielsweise zwei Lautsprecher, die Audiosamples zu leicht unterschiedlichen Zeiten geliefert bekommen, unerwünschte gegenseitige Auslöschungen hervorrufen.

Zur Abstimmung dient das Precision Time Protocol (PTP), definiert in IEEE 802.1AS [3], das alle Clocks innerhalb einer Domäne synchronisiert. Die Clocks sind hierarchisch als Baum aufgebaut: Ein Grand Master generiert die beste lokale Clock und taktet die AS-Domäne. Den Grand Master ermittelt der Best-Master-Clock-Algorithmus (BMCA). Die Buchstaben S und M an den Switchports in Abbildung 1 zeigen die hierarchische Struktur: M steht für Master-, S für Slaveport (X bindet den Laptop an).

Da es einen undefinierten Zeitraum dauert, bis ein Paket die unterste Schicht eines Protokollstapels erreicht hat, misst jeder PTP-Teilnehmer den Zeitraum der Bearbeitung vom Senden bis kurz vor der Bitübertragungsschicht und kommuniziert diesen. Zusätzlich messen auch die PTP-Instanzen der AVB-Switches Zeitverzögerungen im Netzwerk.

Um Unterbrechungsfreiheit zu gewährleisten, fordern Talker und Listener Netzwerkressourcen per Stream Reservation Protocol (SRP) bei den AVB-Switches an (IEEE 802.1Q-2011 Paragraph 35, [4]). Die genauen Methoden beschreibt Kapitel 10 des Standards IEEE 802.1ak als Multiple Registration Protocol (MRP, [5]). Die wichtigsten Nachrichten sind »TalkerAdvertise« und »ListenerReady« .

Streams reservieren

Der wesentliche Faktor für die unterbrechungsfreie Übertragung ist ein gleichmäßig geformter Datenstrom. Einerseits soll AVB zeitkritische Frames gegenüber unkritischen bevorzugen, andererseits soll es ein Überlaufen der Switchport-Puffer durch Bursts vermeiden.

Ein via SRP registrierter Stream wird bevorzugt weitergeleitet, sodass im Falle knapper Bandbreite der nicht registrierte Datenverkehr warten muss. Ein kreditbasiertes Warteverfahren, eine Art Leaky-Bucket-Algorithmus, vermeidet Zeitüberschreitungen nicht registrierten Verkehrs. Näheres dazu findet sich in IEEE 802.1Q-2011, Paragraph 34 [6].

Der Standard IEEE 1722 [7] umfasst zwei Protokolle: Das MAC Address Acquisition Protocol (MAAP) für die Reservierung von Multicast-MAC-Adressbereichen und das Audio Video Transport Protocol (AVTP) für den Transport der Nutzdaten. Das MAAP beschreibt Funktionen, die notwendig sind, um mehrere MAC-Adressen für eine Schicht-2-Multicast-Übertragung zu registrieren.

AVTP spezifiziert das Rahmenformat des Audio- und Videodatenstroms, in ihm werden Pakete nach den Standards IEC 61883-2, 4, 6, 7, 8 verpackt [8]. Diese IEC-Standards dienen auch zur Übertragung über Firewire (IEEE 1394). Videodaten lassen sich im Mpeg-2/TS-Format verschicken, Audiodaten mit nicht-linearen Audioformaten wie AC3 oder mit dem linearen PCM-Codec mit bis zu 196 Bit Genauigkeit.

Bei Steuerung und Synchronisation setzt AVB auf etablierte Protokolle wie MIDI und SMPTE-Timecode. Die Presentation Time ist ein 32-Bit-Timestamp, berechnet aus dem Zeitpunkt, zu dem der AVTP-Rahmen den Talker verlassen hat (Bitsicherungsschicht), akkumuliert mit der Worst-Case-Latenz der Übertragungsstrecke zum Listener. Sie nennt den genauen Zeitpunkt, zu dem der Rahmen den Listener spätestens erreichen darf.

Eine 64-Bit-Stream-ID stellt den einzigartigen Erkennungswert des Streams dar. Diese Stream-ID ist die Grundlage für jeden Transportstrom, um mit SRP Netzwerkressourcen zu reservieren und bei der Weiterleitung zeitkritischer Ethernet-Rahmen berücksichtigt zu werden.

Management

Im Standard IEEE 1722.1 “Audio/Video Discovery, Enumeration, Configuration and Control” (AVDECC, [9]) sind mehrere Protokolle und Funktionen zusammengefasst. Er befindet sich noch im Entwurfsstadium, der aktuelle Stand ist D23v2. Speziell bei diesem Standard hat es lange gedauert, bis sich alle Parteien des Gremiums einigen konnten, nun steht er kurz vor der Ratifizierung.

Jedes zum IEEE 1722.1 konforme Endgerät besitzt ein AVDECC Entity Model (AEM), das unterschiedliche Konfigurationen speichern kann. Die enthaltenen Informationen sind für die drei Protokolle AVDECC Connection Management Protocol (ACMP), AVDECC Enumeration and Control Protocol (AECP) und AVDECC Discovery Protocol (ADP) erforderlich. Mit ADP können sich Endgeräte in der AVB-Domäne an- und abmelden sowie nach anderen Endgeräten suchen. Verschiedene Steuerfunktionen der Endgeräte lassen sich per AECP realisieren, beispielsweise Konfigurationen umschalten, die Firmware aktualisieren oder Parameter in Echtzeit steuern.

ACMP steuert den Auf- und Abbau der Verbindung zwischen Talker und Listener. Die Bandbreite für den Stream wird mit SRP reserviert. Der Talker sichert sich mit Hilfe des MAAP alle benötigten MAC-Adressen (Listener, Switchports der Route). Es gibt zwei Modi beim Verbindungsaufbau. Entweder bauen mehrere Endgeräte im Fast-Connect-Modus eine automatische Verbindung mit ihren gespeicherten Informationen auf oder ein AVDECC-Controller steuert die Verbindung im Controller-Connect-Modus.

Hardware

Die AVB-Protokolle der Netzwerkschicht 2 benötigen zwingend Hardware-Unterstützung. Auf dem Markt gibt es bereits Systeme, die AVB unterstützen, obwohl noch nicht alle Standards abgeschlossen sind. Die Firma Riedel [10] hat schon ein paar Geräte in ihrem Portfolio, die Firma Audinate [11] beschreibt ihre Dante-Produkte als “AVB Ready”. Zudem gibt es Komplettlösungen von Uman [12]. Auch andere Mitglieder der Avnu haben AVB-Produkte im Angebot.

Der britische Prozessorhersteller Xmos [13] bietet mit seinen Entwickler-Boards Xcore eine günstige Lösung für kleine AVB-Anwendungen und benutzt dabei einen Open-Source-Stack. Auch die Firma Uman unterstützt die Xcore-Plattform. Lab X [14] bietet ebenfalls AVB-Software-Lizenzen für Xilinx und Marvell, sowie neuerdings auch für Altera, die jedoch für Endnutzer unerschwinglich sind.

Aus Hongkong kommt vom Hersteller DSP4You [15] ein erschwinglicher 5-Port-AVB-Switch für rund 100 US-Dollar, der auf dem Chipset 88E7251 von Marvell basiert. Ihm fehlt ein Webinterface für etwaige Einstellungen, er lässt sich aber als AVB-Endgerät für eigene Entwicklungen einsetzen. Die Firma Lab X hat einen kleinen 5-Port-AVB-Switch namens Titanium 411 für 800 Dollar im Angebot, Features wie Port Mirroring fehlen aber.

Der Hersteller Netgear [16] bietet zusammen mit dem Pro-Audio-Hersteller BSS den 24-Port-AVB-Switch GS724T an, sein Preis lag zur Markteinführung bei 1800 Euro. Für Rechenzentren liefert Extreme Networks [17] skalierbare AVB-Lösungen. Marvell vermarktet seine Netzwerkkarte Yukon Optima 88E8059 mit AVB-Support [18]. Die Dokumentation gibt es jedoch erst bei einer Abnahme von mehr als 100  000 Stück und der aktuelle Treiber Sky2 bietet keine AVB-Funktionen.

Anders ist das bei einer im Frühjahr 2013 erschienenen Produktreihe von Intel, die bei Händlern wie Reichelt und Amazon rund 70 Euro kostet. Die Serie I 210 bietet kompletten AVB-Hardware-Support, das dafür erforderliche IGB-Modul ist seit Version 3.4.0 im Linux-Kernel integriert (Abbildung 2).

Abbildung 2: Intel vermarktet die Netzwerkkarten seiner Serie I210 unter dem Schlagwort AVB.

Abbildung 2: Intel vermarktet die Netzwerkkarten seiner Serie I210 unter dem Schlagwort AVB.

Open AVB

Für AVB-Treiber und weitere Software sorgt das Open-Source-Projekt Open AVB, das Intel ins Leben gerufen hat [19]. Der Code für den Kernel steht unter GPLv2, weitere Komponenten unter BSD-Lizenz. Der aktuelle Zweig ist »open-avb-next« . Das Projekt umfasst ein IGB-AVB-Kernelmodul, einen GPTP-Daemon (eine von mehreren Linux-Implementierungen des PTP-Protokolls), einen MRP-Daemon sowie Beispielanwendungen für Talker und Listener.

Im Unterschied zum Standard-IGB-Modul von Linux verfügt das AVB-Modul über zwei spezielle Queues für AVB-Streams. Sie kommen bei der Priorisierung des Ethernet-Verkehrs zum Einsatz. Das AVB-Modul kompiliert der Anwender mit PTP-Clock-Unterstützung, anschließend lädt er das Modul und lenkt die Standard-LAN-Queues des Userspace mit dem Shellskript in Listing 1 um.

Listing 1

Linux-AVB aktivieren

01 #!/bin/bash
02
03 rmmod igb
04 rmmod igb_avb
05 insmod ./igb_avb.ko
06 sleep 1
07 ifconfig eth1 down
08 echo 0 > /sys/class/net/eth1 /queues/tx-0/xps_cpus
09 echo 0 > /sys/class/net/eth1/queues/tx-1/xps_cpus
10 echo f > /sys/class/net/eth1/queues/tx-2/xps_cpus
11 echo f > /sys/class/net/eth1/queues/tx-3/xps_cpus
12 ifconfig eth1 up

Der Autor hat den Open-AVB-Stack auf Linux Mint 14 (AMD 64) mit der Kernelversion 3.9.0-rc8-generic getestet. Als Netzwerkkarte diente eine Intel I 210. Über einen Lab-X-Titanium 411 oder einen DSP4U-AVB-Switch war der Rechner mit zwei Xmos-AVB-Entwicklungsboards verbunden. Auf den Boards hatte er je eine Listener- und eine Talker- Instanz konfiguriert, die als Gegenstellen für die Tests dienten.

Kinderkrankheiten

Der GPTP-Daemon synchronisiert sich nach seinem Start erwartungsgemäß mit der verbundenen 802.1AS-Domäne. Mit einem Titanium-AVB-Switch von Lab X kann es jedoch vorkommen, dass folgende Fehlermeldung erscheint:

Error (TX) timestamping Sync, error=-72

Der Switch verliert dabei seine PTP-Synchronität und alle Streams reißen ab. Der Fehler liegt in der Firmware des Titanium, der Hersteller arbeitet derzeit an Abhilfe. Eine Alternative ist der Switch von DSP4You. Dieser verursacht jedoch bislang unerklärte Inter Packet Gaps (IPG) von 900 Mikrosekunden statt der geforderten 125 Mikrosekunden.

Der MRP-Daemon hingegen funktionierte im Test des Autors einwandfrei. Eingehende »TalkerAdvertise« -Nachrichten bestätigt er mit »ListenerReady« -Messages, als Antwort auf »TalkerAdvertise« kommt »ListenerReady« . Die »ListenerReady« -Nachricht setzt dabei die Beispielanwendung »simple_listener« aus dem Open-AVB-Quelltext ab (Abbildung 3). Dieses kleine Programm verbindet sich mit einem Talker und erzeugt nach erfolgreichem Verbindungsaufbau eine Wav-Datei. Die Nachricht »TalkerAdvertise« verschickt das Beispielprogramm »simple_talker« . Es erzeugt eine synthetische Sinusschwingung von 480 Hz.

 Abbildung 3: Das Beispielprogramm simple_listener schreibt die empfangenen Audiodaten in eine Wav-Datei.

Abbildung 3: Das Beispielprogramm simple_listener schreibt die empfangenen Audiodaten in eine Wav-Datei.

Der Verbindungsaufbau war nach dem Anpassen einiger Parameter im Xmos-Quellcode möglich, doch es ließen sich keine Audiosamples empfangen oder versenden. Der Grund hierfür ist die noch unvollständige Implementierung des Open-AVB Stacks: Es gibt noch keine Schnittstellen für die Integration von AVB mit Soundsystemen wie Alsa oder Jack. Solche Anpassungen diskutieren die Entwickler derzeit auf der Mailingliste des Open-AVB-Projekts. In Setups mit zwei Linux-Rechnern, die über eine I-210-Karte mit dem AVB-Netzwerk verbunden sind, soll die korrekte Übertragung von AVB-Streams bereits geglückt sein.

Mit dem Netzwerk-Tool Wireshark lassen sich alle AVB-Frames betrachten. Dafür sind die Filter in Tabelle 1 relevant: So lässt sich beispielsweise die MRP-Nachricht »TalkerAdvertise« in den Netzwerkdaten finden (Abbildung 4).

Tabelle 1

Wireshark-Filter für AVB

Protokoll Filterausdruck
PTP ptp
MSRP mrp-msrp
MVRP mrp-mvrp
MMRP mrp-mmrp
IEEE 1722 ieee1722
AVDECC 1722.1 ieee1722

"Abbildung

Zahlreiche Firmen investieren in die Entwicklung und Umsetzung von AVB. Allerdings gibt es trotz Standardisierung durch die IEEE noch erhebliche Unterschiede bei der Implementierung. Zurückzuführen sind sie auf die vielen unterschiedlichen Entwürfe der Standards.

Work in Progress

Der Open-AVB-Stack und die Intel-Karte I 210 stellen die erste öffentliche Implementierung von AVB für Linux dar. Man darf gespannt sein, ob andere Hersteller folgen und eigene Hardware anbieten. Offen ist, ob sie in diesem Fall die Treiber in den Open-AVB-Stack integrieren oder einen eigenen Stack bereitstellen. Wer derzeit AVB auf einem Linux-Rechner benutzen möchte, ist auf Intels I 210 angewiesen. Zudem muss er noch viel Anpassungs- und Integrationsarbeit investieren. (mhu)

Infos

  1. Avnu Alliance: http://www.avnu.org
  2. Avnu Alliance, “AVB for Automotive Use”: http://www.avnu.org/files/static_page_files/AADD34CC-1D09-3519-AD2D3D331F524CF6/AVnu%20Automotive__White%20Paper.pdf
  3. IEEE 802.1AS, “Timing and Synchronization for Time (PTP)”: http://standards.ieee.org/findstds/standard/802.1AS-2011.html
  4. IEEE 802.1Q-2011, Paragraph 35, “Stream Reservation Protocol (SRP)”: http://standards.ieee.org/findstds/standard/802.1Q-2011.html
  5. IEEE 802.1ak, “Multiple Registration Protocol (MRP)”: http://standards.ieee.org/findstds/standard/802.1ak-2007.html
  6. IEEE 802.1Q-2011, Paragraph 34, “Forwarding and Queueing Enhancements for Time-Sensitive Streams”: http://standards.ieee.org/findstds/standard/802.1Q-2011.html
  7. IEEE 1722, “Layer 2 Transport Protocol for Time Sensitive Applications”: http://standards.ieee.org/findstds/standard/1722-2011.html
  8. IEC 61883: http://www.iec-normen.de/suche/ergebnis/?produktsuche=IEC+61883
  9. IEEE 1722.1, (AVDECC) D23v2, “Audio/Video Discovery, Enumeration, Configuration and Control”: http://standards.ieee.org/develop/project/1722.1.html
  10. Riedel: http://www.riedel.net
  11. Audinate: http://www.audinate.com
  12. Uman http://umannet.de
  13. XMOS: http://www.xmos.com
  14. Labx Technologies: http://www.labxtechnologies.com
  15. DSP4You: http://www.dsp4you.com
  16. Netgear: http://www.netgear.de
  17. Extreme Networks: http://www.extremenetworks.com
  18. Marvell-Netzwerkkarten: http://www.marvell.com/pc-connectivity/
  19. Open AVB: https://github.com/intel-ethernet/Open-AVB

Der Autor

Christoph Kuhr stammt aus dem Rheinland und arbeitet als freiberuflicher Tontechniker sowie Digital-Audio-Entwickler. Sein Bachelorstudium der technischen Informatik hat er mit einer Arbeit über AVB abgeschlossen. In der Freizeit spielt er leidenschaftlich gerne Gitarre.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben