(S)NTP: Referenz und

Ähnliche Dokumente
(S)NTP: Implementierung auf einem AVR

Das Network Time Protocol - NTP. Das Network Time Protocol - NTP. Das Network Time Protocol - NTP. Das Network Time Protocol - NTP

Übung zur Vorlesung Echtzeitsysteme

Vorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme NTP) Verteilte Systeme, Sommersemester 1999 Folie 4.2

Network Time Protocol NTP

Kommunikation in drahtlosen Sensornetzen

Internet Control Message Protocol (ICMP)

3.5 Das Network Time Protocol - NTP

Themen. Vermittlungsschicht. Routing-Algorithmen. IP-Adressierung ARP, RARP, BOOTP, DHCP

Systeme II 4. Die Vermittlungsschicht

DECUS Symposium Bonn File: decus_tim Peter Schuerholt. Casium-Uhr. DECUS Symposium Bonn Peter Schuerholt

Peer-to-Peer- Netzwerke

Hochschule Bonn-Rhein-Sieg. Prof. Dr. Kerstin Uhde Hochleistungsnetze u. Mobilkommunikation. Modul 5: IPv6. Netze, BCS, 2.

One way Delay (OWD) Determination Techniques

Grundlagen der Rechnernetze. Internetworking

ARP, ICMP, ping. Jörn Stuphorn Bielefeld, den 4. Mai Mai Universität Bielefeld Technische Fakultät

Übungsblatt 4. (Router, Layer-3-Switch, Gateway) Aufgabe 2 (Kollisionsdomäne, Broadcast- Domäne)

Algorithmus von Berkeley (1989)

Protokolle und Schichten. Grundlagen der Rechnernetze Einführung 41

Überblick. Zeit Motivation Konvergenz-Algorithmus CNV Network Time Protocol (NTP) Logische Uhren. c td VS (SS17) Zeit 8 1

Übungsblatt 4. (Router, Layer-3-Switch, Gateway) Aufgabe 2 (Kollisionsdomäne, Broadcast- Domäne)

Protokollgraph. Host 1. Host 2. Protokoll 2. Protokoll 1. Protokoll 3. Protokoll 4. Grundlagen der Rechnernetze Einführung 46

Überblick. Zeit Motivation Network Time Protocol (NTP) Logische Uhren. c td VS (SS16) Zeit 9 1

Tutorübung zur Vorlesung Grundlagen Rechnernetze und Verteilte Systeme Übungsblatt 6 (27. Mai 31. Mai 2013)

Fachbereich Medienproduktion

Grundlagen der Rechnernetze. Internetworking

ICMP Protokoll & Anwendung Einige Risiken von ICMP erkennen und verstehen! FRITZ Gerald

Konsequenz für Forwarding Tabellen

DHCP und NTP. Jörn Stuphorn Universität Bielefeld Technische Fakultät

Projektierung und Betrieb von Rechnernetzen

Telekommunikationsnetze 2

Internetprotokoll TCP / IP

RARP, BOOTP, DHCP Wie ermittelt ein Client seine IP-Adresse?

Inhaltsverzeichnis. Teil I TCP/IP-Grundlagen Einführung... 11

IP Internet Protokoll

CCNA Exploration Network Fundamentals. ARP Address Resolution Protocol

Übung Prüfen von Ethernet-Rahmen mit Wireshark

IPv4- und IPv6 Header Analyse und Vergleich

Internetprotokoll und Adressvergabe

Schwachstellensuche. Qualitätsüberwachung im Netz durch Klassifizierung des HADES One-Way-Delays. Dr. Stephan Kraft, Birgit König, Martin

Adressierung eines Kommunikationspartners in der TCP/IP-Familie

DHCP DY NA M I C H O S T C O NF I G UR AT I O N P R OTO C O L. A u t o m a t isc h e Ve r ga b e v o n I P - A d r e sse n a n C lie n t s

UDP User Datagramm Protokoll

Kommunikation im lokalen Netz

Herausforderung Multicast IPTV

Version: Das Versionsfeld gibt an ob es sich um IPv4 oder um IPv6 handelt.

Zeitsynchronisation in drahtlosen Sensornetzen Verfahren und Anwendungen

Domain Name Service (DNS)

ICMP Internet Control Message Protocol. Michael Ziegler

Fakultät Informatik, Institut für Technische Informatik, Professur für VLSI - EDA. Implementierung eines UDP/IP-Stacks in Hardware.

Implementierung eines universellen IPv6 Protokollstapels

UDP-/ICMP-Erweiterung für fwtest

Installationsanleitung

Verteilte Systeme - 3. Übung

Thomas Schön Albert-Ludwigs-Universität Freiburg

Device Management Schnittstellen. Referat von Peter Voser Embedded Development GmbH

Grundkurs Computernetzwerke

Statisches Routing. Jörn Stuphorn Bielefeld, den Juni Juni Universität Bielefeld Technische Fakultät

Rechnern netze und Organisatio on

Modul 7: DHCP (Dynamic Host Configuration Protocol)

NTP Eine Zusammenfassung. ProSeminar: Kommunikationsprotokolle SS 2003

Internet-Praktikum II Lab 3: Virtual Private Networks (VPN)

Modul 12: DHCP (Dynamic Host Configuration Protocol)

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff

Zeitsynchronisation in Sensornetzen. Kay Römer ETH Zürich Switzerland

Erkenntnisleitende Fragestellungen zu CIDR, VLSM, Subnetting und Netzgrundlagen

Grundlagen TCP/IP. C3D2 Chaostreff Dresden. Sven Klemm

Praktikum Rechnernetze Aufgabe 3: Messung mit dem Protokollanalyzer

shri Raw Sockets Prof. Dr. Ch. Reich

KN Das Internet

CCNA Exploration Network Fundamentals. ARP Address Resolution Protocol

Mobilkommunikationsnetze - TCP/IP (und andere)-

Netzwerkprotokolle. Physikalische Verbindungsebene Datenübertragungsebene

4.4 statisches Routen 4.5 Routing- Algorithmen. 4.1 Einleitung 4.2 Aufbau eines Routers 4.3 IP Internet Protocol. 4.6 Routing im Internet

Adressauflösung. IP Adresse Physikalische Adresse :FF:AA:36:AB: :48:A4:28:AA:18

Übung 6. Tutorübung zu Grundlagen: Rechnernetze und Verteilte Systeme (Gruppen MI-T7 / DO-T5 SS 2015) Michael Schwarz

Übung 7. Tutorübung zu Grundlagen: Rechnernetze und Verteilte Systeme (Gruppen Mo-T1 / Di-T11 SS 2016) Dennis Fischer

Multicast & Anycast. Jens Link FFG2012. jenslink@quux.de. Jens Link (jenslink@quux.de) Multicast & Anycast 1 / 29

Vermittlungsschicht im Internet - Bsp. Forschungseinrichtungen DFN als Provider für Hochschulen und Universitäten Kopplung von Providernetzen zum

Verbindungslose Netzwerk-Protokolle

Übung 3 - Ethernet Frames

Erweiterung der DHCP Admin -Datenbank zur Bestimmung des IPv4 Nutzungsgrades. Seminarvortrag von Philipp Tomazin

Migration IPv4 auf IPv6. Untersuchung verschiedener Methoden für die Migration von IPv4 auf Ipv6 Tobias Brunner,

7. OSI-Modell als Rollenspiel

Chapter 8 ICMP. CCNA 2 version 3.0 Wolfgang Riggert, FH Flensburg auf der Grundlage von

IPV6. Eine Einführung

Netzwerk Linux-Kurs der Unix-AG

IPv6 Vorbereitungen auf die neuen IP-Adressen

Verteilte Systeme Übung T5

Transkript:

:, Berlin, 14. Juli 2005

Übersicht NTP Hardware SNTP Implementierung Details und Probleme Präsentation 2

NTP Motivation viele Anwendungen hängen von Zeit ab (z.b. make) Anwendungen im Netzwerk auf möglichst identische Uhren auf mehreren Rechnern angewiesen manuelles Stellen von Rechneruhren viel zu ungenau manche Rechner verfügen über Funkuhren o.ä.! es genügt Clients von diesen Rechnern aus zu synchronisieren 3

NTP - Geschichte Geschichte 1985 im RFC 958 erster Vorschlag des 'Network Time Protocol': "This RFC suggests a proposed protocol for the ARPA-Internet community, and requests discussion and suggestions for improvements. Distribution of this memo is unlimited." 4

NTP - Geschichte Geschichte 1985 im RFC 958 erster Vorschlag des 'Network Time Protocol': erlaubt hierarchische Anordnung von NTP Hosts legt Nachrichtenformat fest nur symmetrischer Modus verfügbar Definition eines 64 Bit NTP Timestamps Berücksichtigung von Schaltsekunden und Netzwerkverzögerungen ABER: keine Vorschrift für Synchronisationsalgorithmen 5

NTP - Geschichte Entwicklung der Spezifikation 1985 Network Time Protocol, RFC 958 14 Seiten 1988 Network Time Protocol (Version 1), RFC 1059 58 Seiten 1989 Network Time Protocol (Version 2), RFC 1119 64 Seiten 1992 Network Time Protocol (Version 3), RFC 1305 120 Seiten! Umfang von NTP3 nötigte Entwickler zu einem neuen Zweig: Simple Network Time Protocol 1992 Simple Network Time Protocol (SNTP), RFC 1361 10 Seiten 1995 Simple Network Time Protocol (SNTP), RFC 1769 14 Seiten 1996 SNTP v4 for IPv4, IPv6 and OSI, RFC 2030 18 Seiten 6

NTP - Geschichte NTP 4? Hat moderneren Ansatz als Vorgänger " Die Implementierung existiert bereits 7

NTP - Architektur Architektur (NTPv3) Primäre Zeitserver Haben korrekte Zeit (über Funk, oder sonstwie) Stellen übers Internet anderen NTP Hosts Zeit zur Verfügung Sekundäre Zeitserver holen sich Zeit von primären Zeitservern stellen Zeit für übrige Hosts zur Verfügung Zusätzliche Hosts mit ungenauerer Funkuhr o.ä. Sonstige Hosts 8

NTP - Architektur Definitionen: stability - Stabilität (Konstanz der Frequenz) accuracy - Korrektheit (geht die Uhr richtig?) precision - Genauigkeit (wie genau diese Werte eingehalten werden) offset - Versatz (Abstand zweier Uhren) skew - Verzerrung (Frequenzunterschied zweier Uhren)! 1. Ableitung des Offset drift - Veränderung von skew über die Zeit(2. Ableitung v. Offset), aber in NTPv3 wird drift == 0 angenommen 9

NTP - Architektur Ergebnisse von NTP sind: clock offset (Abweichung von Referenzuhr) roundtrip delay dispersion (max. Abweichung von Referenzuhr)! NTP Protokoll ermöglicht diese Werte weiterzugeben, so dass sich die End-Hosts ein Bild von der Genauigkeit (precision) abhängig vom verwendeten (meist sekundären) Zeitserver machen können. 10

NTP - Architektur Genauigkeit Allgemein: Uhrensynchronisation braucht lange Zeit schnelle Anpassungen der Uhr dennoch möglich Genauigkeit im Millisekundenbereich, bzw. ausmerzen von skew verlangt längeren Stellzeitraum Theoretisch aber Genauigkeit bis zu ca. 200 Picosekunden möglich. (1/2 32 s) 11

NTP - Architektur smodell Client/Server: Client fragt Server, dreht paar Felder in der Anfrage um und schickt sie zurück an Client, welcher lokal seine Uhr anpasst. Voller NTP Funktionsumfang verlangt verteilte Teilnahme von vielen Peers in einer dynamisch rekonfigurierbaren, hierarchisch verteilten Konfiguration. Verlangt sind auch ausgefeilte Algorithmen Assoziationsmanagement Datenmanipulation Uhrenkontrolle 12

NTP - Architektur Netzwerkkonfiguration stratum - Schichten (primärer Server <-> stratum==1) Synchronisation darf keine Kreise enthalten! Variante des Bellman/Ford, findet minimal-weight spanning trees mit primären Servern als Wurzel. Metrik: stratum + synchronisations Entfernung Synchr.Entfernung = dispersion + 1/2 absolutes delay Subnetz organisiert automatisch Master/Slave Konfiguration 13

NTP - Das Protokoll Datenformate Zweierkomplement, Festkommaarithmetik, BigEndian 64 Bit NTP Timestamps, Sekunden seit 1. Jan 1900 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Integer Part +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fraction Part +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ inzwischen kann, Bit0==0 auch als Jahr 2036 interpretiert werden 14

NTP - Das Protokoll NTP Paketaufbau 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ LI VN Mode Stratum Poll Precision +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Root Delay (32) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Root Dispersion (32) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Reference Identifier (32) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Reference Timestamp (64) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Originate Timestamp (64) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Receive Timestamp (64) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Transmit Timestamp (64) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Authenticator (optional) (96) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 15

NTP - Das Protokoll Paketvariablen Leap Indicator (00:nix, 01: +1s, 10: -1s, 11: not synced) Version Mode (sym. active, sym. passive, client, server, broadcast, control message) NTP Control Messages als SNMP-Ersatz Stratum Poll Interval (min. Intervall zw. Nachrichten) Precision (signed int:uhrgenauigkeit als aufgerundete 2er Potenz) Root Delay Root Dispersion 16

NTP - Das Protokoll Paketvariablen (Fortsetzung) Reference Clock Id (Stratum 0/1 Art der Uhr, sonst IP des Peer) Bsp: 'ATOM' für Atomuhr Reference Timestamp (letztes Update der lokalen Uhr) Originate Timestamp Receive Timestamp Transmit Timestamp Key Identifier Crypto-Checksum 17

NTP - Das Protokoll Operationsmodi 1 Symmetrisch Aktiv, Host sendet periodisch Pakete/Willensbekundung 2 Symmetrisch Passiv, wenn Nachricht von sym. aktivem Host empfangen 3 Client, Host sendet periodisch Pakete/Willensbekundung 4 Server, wenn Nachricht von Client empfangen, 1 reply 5 Broadcast, Willensbekundung alle Peers zu synchronisiern In symmetrischen Modi verschwinden Client/Server Grenzen, symm. passiv sind vor allem Peers nahe der Wurzelknoten Zugriffskontrolle, z.b. über "Preconfigured Associations 18

Boardaufbau Stromversorgung ATmega32 ISA-Karte JTAG-Interface 19

ATmega32 8bit RISC Mikrocontroller 32 programmierbare E/A-Kanäle 32 kb Programmspeicher 2 kb RAM 20

SNTP NTP für kompaktere einfache Synchronisation Protokoll und Pakete identisch zu NTP 21

SNTP T1 T4 tclient T2 T3 tserver Berechnung der Differenz ((T2 - T1) + (T3 - T4)) / 2 22

Implementierung Probleme wenig RAM extrem wenig RAM irgendwann geht der Programmspeicher aus ausserdem 23

Implementierung 24

Speicherverwaltung Globales Byte-Array Bereiche für verschiedene Schichten Übergabe von Pointern 25

Programmierung Interrupt-Routinen Gemeinheiten des Compilers Programmfluss Optimierung insgesamt dank avr-libc recht komfortabel 26

Paket Hinweg: NTP Beginn der NTP-Schleife Struct wird über reservierten Speicher gelegt Aufrufen von UDP_Send() 27

Paket Hinweg: UDP Setzen der Struct Header füllen Prüfsummenberechnung Aufrufen von IP_Send() 28

Paket Hinweg: IP IP_Send( ) empfängt Pointer auf Daten, IP Adressen, etc. erstellt IP Header, ermittelt Ziel MAC Adresse (über ARP) Für Pakete außerhalb des eigenen Subnets wird die MAC Adresse des Gateways bestimmt. beachtet, dass IP Puffer während des Sendevorgangs gesperrt wird 29

Paket Hinweg: Ethernet Erstellen des Ethernet-Headers Initialisieren der Netzwerkkarte Schreiben der einzelnen Puffer Terminieren und Abschicken 30

Paket Rückweg: Ethernet Interrupt von der Netzwerkkarte über Schleife alle Pakete auslesen Ethernet-Header einlesen PacketType analysieren und weiterleiten 31

Paket Rückweg: IP Einlesen und Prüfen des IP Headers Einlesen der Payload Auswertung des Payloadprotokolls und Weiterleitung zur entsprechenden Receive Routine des Protokolls Im Problemfall Paket verwerfen, z.b. wenn: Header (Checksum, DstIP, ) fehlerhaft IP geblockt (Puffer in Benutzung) ist 32

Paket Rückweg: UDP UDP_Receive() bekommt alle wichtigen Daten übergeben IP-Adressen von Source und Destination Pointer auf den Rest des Paketes Struct rüberlegen Prüfsumme berechnen Existiert ein Handler für diesen Port (123)? 33

Paket Rückweg: NTP NTP_Receive() Berechnungen ausführen Zeit setzen und nochmal das ganze 34

Details und Probleme Wiederholung: Ziel unserer Implementierung Verschicken von NTP Paketen Empfangen von NTP Paketen Berechnung der Zeitdifferenz d = ((T2 - T1) + (T3 - T4)) / 2 35

Details und Probleme Verschicken von NTP Paketen void NTP_Send(){ struct NTP_Packet* ntp; ntp = (struct NTP_Packet *) &reservedmemory[mem_ntp_offset]; ntp_client=&(udp_sockets[0]); ntp_client->ip[0]=ipconfig->ipaddress[0]; ntp_client->ip[1]=ipconfig->ipaddress[1]; ntp_client->ip[2]=ipconfig->ipaddress[2]; ntp_client->ip[3]=ipconfig->ipaddress[3]; ntp_client->port[0]=0; ntp_client->port[1]=udp_port_ntp; ntp_server=&(udp_sockets[1]); ntp_server->ip[0]=ntpconfig.servers[0][0]; ntp_server->ip[1]=ntpconfig.servers[0][1]; ntp_server->ip[2]=ntpconfig.servers[0][2]; ntp_server->ip[3]=ntpconfig.servers[0][3]; ntp_server->port[0]=0; ntp_server->port[1]=udp_port_ntp; UDP_Send(ntp_server,ntp_client,(unsigned char*) ntp, NTP_PACKET_SIZE); } 36

Details und Probleme Füllen des Paketpuffers struct NTP_Packet* ntp; ntp = (struct NTP_Packet *) &reservedmemory[mem_ntp_offset]; ntp->li_vn_mode = (3 << NTP_LI_OFFSET) // LeapIndicator + (4 << NTP_VN_OFFSET) // VersionNumber + (3 << NTP_MODE_OFFSET); //Mode (3:Client) ntp->stratum = 0; ntp->poll = 0; [...] ntp->transmittimestamp[0] = time>>24; ntp->transmittimestamp[1] = time>>16; ntp->transmittimestamp[2] = time>>8; ntp->transmittimestamp[3] = time; ntp->mtransmittimestamp[0] = mtime; ntp->mtransmittimestamp[1] = 0; ntp->mtransmittimestamp[2] = 0; ntp->mtransmittimestamp[3] = 0; 37

Details und Probleme Empfangen von Paketen void NTP_Receive(unsigned char* packet, int packetlen){ } struct NTP_Packet* ntp; ntp = (struct NTP_Packet *) packet; int i = 0; [...] 38

Details und Probleme Berechnen von: d = ((T2 - T1) + (T3 - T4)) / 2 64 Bit Zahlen Wir haben 8 Bit Microcontroller! Gleichung so wie oben einzugeben benötigt nicht unerhebliche Mengen Programmspeicher (Assembler) Wahrscheinlich hätte es auch viel Stack verbraten, wir kamen nicht dazu dies zu testen Out of program memory Wir brauchten etwas wie: subtract (char* t1, char* t2, char* t3) 39

Details und Probleme Programmieren eines Byte Subtracters void NTP_Subtract(T_NTP_UnsignedTime *t1, T_NTP_UnsignedTime* t2, T_NTP_SignedTime *res){ } unsigned char i_carry=0; for (i_carry = sizeof(struct NTP_UnsignedTime)-1;(I(i_carry+1))>0;i_carry--){ // Subtract next Byte and save it to result res->secs[i(i_carry)] = t1->secs[i(i_carry)]-(t2->secs[i(i_carry)]+carry(i_carry)); // check if we got a Carry Flag if (((unsigned char)(t2->secs[i(i_carry)]+carry(i_carry)==0) && (CARRY(i_carry)!=0)) (res->secs[i(i_carry)]>t1->secs[i(i_carry)])) // set Carry Flag to 1 i_carry = I(i_carry) 0x80; else { // set Carry Flag to 0 i_carry = I(i_carry); } } if (i_carry==255) res->sign=0; else res->sign=0xff; #define I(i_carry) #define CARRY(i_carry) (0x7F & (i_carry)) ((i_carry)>>7) typedef struct NTP_SignedTime { unsigned char sign; unsigned char secs[4]; unsigned char msecs[ntp_precision]; } T_NTP_SignedTime; 40

Details und Probleme Zwischenfrage: Unter welchen Umständen wird die Bedingung war? unsigend char x; unsigned char y; [...] y = 1; if (x+y == 0) { [...] } 41

Präsentation Versuchsaufbau 1 AVR Webserver 1 Patchkabel 1 Notebook mit Autosensing DHCP Server NTP Server 42

43

44

Quellen Verwendete Quellen RFC 958 (NTPv0) RFC 1305 (NTPv3) RFC 2030 (SNTPv4) diverse Datenblätter zu den AVR Microcontrollern www.atmel.de/products/avr Danke! 45