25
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

Implementierung eines UDP/IP-Stacks in Hardware Jan Frenzel · Dresden, 16. April 2014 Implementierung eines UDP/IP-Stacks in Hardware Jan Frenzel Fakultät Informatik, Institut für

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 3 / 2516. April 2014

AUFGABENSTELLUNG

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 5 / 2516. April 2014

ÜBERBLICK

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 14 / 2516. April 2014

IMPLEMENTIERUNG

UDP/IPJan Frenzel Slide 15 / 2516. April 2014

Implementierung

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 17 / 2516. April 2014

Implementierung – Sender

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 19 / 2516. April 2014

AUSWERTUNG

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 21 / 2516. April 2014

ZUSAMMENFASSUNG UND AUSBLICK

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

UDP/IPJan Frenzel Slide 24 / 2516. April 2014

Vielen Dank für die Aufmerksamkeit!

UDP/IPJan Frenzel Slide 25 / 2516. April 2014

Fragen /

Diskussion