Upload
trinhanh
View
217
Download
0
Embed Size (px)
Citation preview
Dresden,16. April 2014
Implementierung eines UDP/IP-Stacks in Hardware
Jan Frenzel
Fakultät Informatik, Institut für Technische Informatik, Professur für VLSI - EDA
UDP/IPJan Frenzel Slide 2 / 2516. April 2014
Gliederung
1. Aufgabenstellung2. Überblick
1. Allgemein2. MAC3. IP4. UDP5. ARP6. LocalLink
3. Implementierung1. Datenfluss2. Hardware3. Software/API
4. Auswertung5. Zusammenfassung und Ausblick
UDP/IPJan Frenzel Slide 4 / 2516. April 2014
Aufgaben
- Bereitstellen von IP-Cores zum Senden und Empfangen von Nachrichten über die Protokolle
- MAC
- IP
- UDP
- Senden und Empfangen von ARP-Nachrichten zur Adressauflösung
- Verwalten der Adressen
- Basis: Gigabit-Ethernet Takt von min. 125 MHz
UDP/IPJan Frenzel Slide 6 / 2516. April 2014
Überblick - Netzwerkprotokolle
Header Nutzdaten
NutzdatenPräambel CRC
Header Nutzdaten
Header Nutzdaten
NutzdatenAnwendung
UDP
IP
MAC
NachrichtARP
UDP/IPJan Frenzel Slide 7 / 2516. April 2014
Überblick - Media Access Control (MAC)
-Wrapper um Ethernet
Ziel-MAC-Adresse (6 Byte)
Quell-MAC-Adresse (6 Byte)
Typ(2 Byte)
Daten (max. 1500 Byte)
0x0800 für IP0x0806 für ARP
UDP/IPJan Frenzel Slide 8 / 2516. April 2014
Überblick - Internet Protocol (IP)Version(4 bit)
HeaderLänge/4(4 bit)
Type of Service(1 Byte)
Paket-Länge (2 Byte)
Identifikationsnummer (2 Byte)Flags(3 bit)
Fragment-Offset (13 bit)
Time-To-Live(1 Byte)
Nutzdaten-Typ(1 Byte)
Header-Checksum (2 Byte)
Ziel-IP-Adresse (4 Byte)
Quell-IP-Adresse (4 Byte)
<Optionen>
Daten (max. 1480 Byte)
UDP/IPJan Frenzel Slide 9 / 2516. April 2014
Überblick – Checksum-Berechnung
Pseudocode:
1. s0 , e
2. Für alle ei in e:1. (c,s)s+ei
2. Solange (c!=0):(c,s)s+c
3. s‘s xor 0xFFFF
4. Wenn s=0xFFFF:ps, sonst ps‘
Beispiel
1. e={0xFFFF,0xFFFF}
2. Für alle ei in e:
1. c=0, s=0xFFFF
1. c=1, s=0xFFFE
2. c=0, s=0xFFFF
3. s‘=0x0000
4. p=0xFFFF
UDP/IPJan Frenzel Slide 10 / 2516. April 2014
Überblick – User Datagram Protocol (UDP)
-Verbindung: Anwendung zu Anwendung
Quell-Port(2 Byte)
Ziel-Port(2 Byte)
Daten (max. 1472 Byte)
inkl. IP-Pseudo-Header
Länge(2 Byte)
Checksum(2 Byte)
UDP/IPJan Frenzel Slide 11 / 2516. April 2014
Überblick – IP-Pseudo-Header
Quell-IP-Adresse (4 Byte)
Ziel-IP-Adresse (4 Byte)
0x0 0x11UDP-Paket-
Länge (2 Byte)
-Zusatzdaten für die Berechnung der UDP-Prüfsumme
-Bindet UDP an IP
UDP/IPJan Frenzel Slide 12 / 2516. April 2014
Überblick – Address Resolution Protocol (ARP)
-Adressauflösung: MAC-Adresse zu IP-Adresse finden
Hardwareadresstyp(2 Byte)
Protokoll-adresslänge
(1 Byte)
Quell-IP-Adresse(4 Byte)
0x01 für Request0x02 für Response
Hardware-adresslänge
(1 Byte)
Operation(2 Byte)
Quell-MAC-Adresse (6 Byte)
Ziel-IP-Adresse(4 Byte)
Ziel-MAC-Adresse(6 Byte)
…
…
Protokoll-adresstyp(2 Byte)
0x00010x0800
0x060x04
UDP/IPJan Frenzel Slide 13 / 2516. April 2014
Überblick – LocalLink Protocol
Clk
SOF
EOF
Src_Rdy
Dst_Rdy
Data(8 bit)
UDP/IPJan Frenzel Slide 16 / 2516. April 2014
Implementierung – Erweiterung des LocalLinkProtocol
Clk
SOF
EOF
Src_Rdy
Dst_Rdy
Data(8 bit)
Meta-daten
UDP/IPJan Frenzel Slide 18 / 2516. April 2014
Implementierung – Checksum
-Eingabestrom von Datenbytes
-Einführung eines Zustands für Byteindex
Zu addierendes Byte
Aktuelle SummeÜbertrag
UDP/IPJan Frenzel Slide 20 / 2516. April 2014
Auswertung
-ML505-Board mit einem Virtex 5-FPGA
-Max. Taktfrequenz: 125,565 MHz
-3328 Register, 7066 LUTs, 2 BlockRAM
-Theoret. Obergrenze: ~119,64 MB/s
-Messung: ~112 MB/s (93,6%)
-Abweichung durch:- Andere Pakete
- Betriebssystem- bzw. JavaVM-Overhead
UDP/IPJan Frenzel Slide 22 / 2516. April 2014
Zusammenfassung und Ausblick
-Modularer Aufbau Erweiterung durch
weitere Protokolle möglich
-Erweiterung zu Server/Service erfordert Überarbeitung
-Weitere Optimierung bzgl. Latenz möglich
UDP/IPJan Frenzel Slide 23 / 2516. April 2014
Quellen
[1] IEEE 802.3 (Ethernet)
[2] RFC 826, http://tools.ietf.org/html/rfc826 (ARP)
[3] RFC 791, http://tools.ietf.org/html/rfc791 (IP)
[4] RFC 768, http://tools.ietf.org/html/rfc768 (UDP)
[5] LocalLink Interface Specification, XILINX, 2005, http://tu-dresden.de/die_tu_dresden/fakultaeten/fakultaet_informatik/tei/vlsi/lehre/lehrmat/kompl_prak/sp006_LocalLink.pdf
[6] Virtex-5 FPGA Embedded Tri-Mode Ethernet MAC User Guide, XILINX, http://tu-dresden.de/die_tu_dresden/fakultaeten/fakultaet_informatik/tei/vlsi/lehre/lehrmat/kompl_prak/ug194_Virtex5_EthMAC.pdf