Übung zur Vorlesung Echtzeitsysteme



Ähnliche Dokumente
Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu)

Implementierung und Vergleich verschiedener Strategien zur Durchführung von Ethernet-Performancemessungen

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Einführung in die Programmierung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Unified Communication Client Installation Guide

Sie können diesen Service verwenden, um fast beliebig große Dateien auch über 2 GB zu versenden.

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Powermanager Server- Client- Installation

Inhaltverzeichnis 1 Einführung Zugang zu den Unifr Servern Zugang zu den Druckern Nützliche Links... 6

SIMP 1.01 Protokollspezifikation (Mindestanforderung)

Gezielt über Folien hinweg springen

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

A. Ersetzung einer veralteten Govello-ID ( Absenderadresse )

Zählen von Objekten einer bestimmten Klasse

Routing im Internet Wie findet ein IP Paket den Weg zum Zielrechner?

SHAREPOINT Unterschiede zwischen SharePoint 2010 & 2013

Anleitung zum Prüfen von WebDAV

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

Systemvoraussetzung < zurück weiter >

STRATO Mail Einrichtung Mozilla Thunderbird

Version 0.3. Installation von MinGW und Eclipse CDT

Dokumentation zum Inco- FORM

Einführung in die Programmierung (EPR)

Einrichtung eines -konto mit Thunderbird

Übung: Verwendung von Java-Threads

ZEITSYNCHRONISATION IM DS-WIN EINRICHTEN

Zeitstempel für digitale Dokumente. Ein neuer Dienst in der DFN-PKI

Electronic Systems GmbH & Co. KG

Hinweise zur Kalibrierung von Kameras mit einer AICON Kalibriertafel

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Informationen zur Verwendung von Visual Studio und cmake

Smap3D PDM 10. Installation. Stand-Alone-Migration-Analyzer

STRATO Mail Einrichtung Android 4.4

Outlook - CommuniGate Pro Schnittstelle installieren. Outlook - Elemente freigeben. Outlook - Freigegebene Elemente öffnen

Fernzugang Uniklinikum über VMware View

Tutorium Rechnerorganisation

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

3 Konfiguration OfficeMaster 3.10 SNMP

-konfiguration THE BAT! homepageheute.de ein Produkt der medialand GmbH, Schornsheimer Chaussee 9, Wörrstadt, Deutschland

Wir arbeiten mit Zufallszahlen

Benutzung der LS-Miniscanner

DIGITALVARIO. Anleitung Bootloader. Ausgabe 0.1 deutsch für Direkt-Digital-Vario. Firmware ab Hardware 01 Seriennummer ab 0003

Enigmail Konfiguration

Installation OMNIKEY 3121 USB

GEONET Anleitung für Web-Autoren

ICMP Internet Control Message Protocol. Michael Ziegler

Begleitendes Praktikum zur Vorlesung Künstliche Intelligenz

Programmierung in C. Grundlagen. Stefan Kallerhoff

Update / Inbetriebnahme domovea Server. Update/Inbetriebnahme domovea Server Technische Änderungen vorbehalten

Medea3 Print-Client (m3_print)

Bitte beachten Sie. Nur für Kabelmodem! - 1 -

Computerarithmetik ( )

Erstellen einer in OWA (Outlook Web App)

Virtual Private Network

Titel. App-V 5 Single Server Anleitung zur Installation

LANiS Mailversender ( Version 1.2 September 2006)

Übersicht. Generierung von IPv6-Paketen mit Scapy. Scapy GUI - Kurzvorstellung. Szameitpreiks - Beuth Hochschule für Technik Berlin

ELSTER Daten versenden

FIREBIRD BETRIEB DER SAFESCAN TA UND TA+ SOFTWARE AUF MEHR ALS EINEM COMPUTER

Nach der Installation des FolderShare-Satellits wird Ihr persönliches FolderShare -Konto erstellt.

Alice & More Anleitung. GigaMail.

Anleitung E Mail Thurcom E Mail Anleitung Version

Profi cash (Version 10.3 oder höher) Erfassen und Verwalten von SEPA- Lastschriften

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Feiertage in Marvin hinterlegen

Terminabgleich mit Mobiltelefonen

Einführung in die Java- Programmierung

WinVetpro im Betriebsmodus Laptop

[DvBROWSER] Offline-Viewer für [DvARCHIV] und [DvARCHIVpersonal] Version 2.2

Print2CAD 2017, 8th Generation. Netzwerkversionen

Abwesenheitsnotiz im Exchange Server 2010

KMS-Aktivierung von MS Software

Vorstellung Version 1.00 vom 03. März 2009 Christian Schnettelker,

> Soft.ZIV. Maple Mathematisches Software System

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Anleitung über den Umgang mit Schildern

POP -Konto auf iphone mit ios 6 einrichten

Windows 7 Ordner und Dateien in die Taskleiste einfügen

Erste Schritte am Rechner

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Tutorial Windows XP SP2 verteilen

regify Installationsanleitung für IBM Lotus Notes / Domino Version volker.schmid@regify.com

ASA Schnittstelle zu Endian Firewall Hotspot aktivieren. Konfiguration ASA jhotel

OP-LOG

Anwendungsprotokolle: HTTP, POP, SMTP

ASDI Benchmarking Projekt. Anleitung zum Datenexport

Grundlagen verteilter Systeme

EasyProfil unter Windows 7 64-Bit Home Premium (Die Installation der VirtualBox und EasyProfil)

Formular»Fragenkatalog BIM-Server«

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

MPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven

Um unsere Gemeindewebseite für Ihre Zwecke zu nutzen, haben Sie folgende Möglichkeiten:

Einführung in die Programmierung

anleitung für einen NETVS- Account im Microsoft Outlook 2007

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Installation und Inbetriebnahme von Microsoft Visual C Express

Transkript:

Technische Universität München Fakultät für Informatik Forschungs- und Lehreinheit Informatik VI Übung zur Vorlesung Echtzeitsysteme Aufgabe 3 Nadine Keddis keddis@fortiss.org Stephan Sommer sommerst@in.tum.de Dominik Sojer sojer@in.tum.de Michael Geisinger geisinge@in.tum.de Wintersemester 2011/12

Simple Network Time Protocol (SNTP) Um in einem verteilen System Ereignisse zeitgenau auslösen bzw. registrieren zu können ist eine gemeinsame Zeitbasis notwendig. Das Problem dabei ist, dass Uhren, sebst wenn sie initial alle die gleiche Zeit anzeigen, im laufe der Zeit voneinander abweichen bzw. auseinander driften. Ausgelöst wird dies duch minimalste Frequenzunterschiede. Um trotzdem eine zuverlässige Zeitbasis zu erhalten, müssen die Uhren in verteilten System in geeigneten Abständen synchronisiert werden. Um die Synchronisierung druchführen zu können, benötigt man geeignete Protokolle. Verbreitete Protokolle sind das Precision Time Protocol (PTP) und Network Time Protocol (NTP). Eine vereinfachte Variante von NTP ist SNTP. SNTP steht für Simple Network Time Protocol und ist in RFC 2030 spezifiziert (siehe http://www.faqs.org/rfcs/rfc2030. html). (S)NTP verwendet UDP für die Nachrichtenübertragung (UDP Port 123). Die Genauigkeit der Zeitsynchronisierung beträgt 10 Millisekunden in einem globalen Netzwerk und 200 Mikrosekunden in einem lokalen Netzwerk. NTP wird meist mit einer UTC-Zeitskala eingesetzt. UTC (Coordinated Universal Time) beachtet Schaltsekunden im Gegensatz zu z.b. der TAI Zeitskala (International Atomic Time). Eine Übersicht zu unterschiedlichen Zeitskalen finden Sie unter http://stjarnhimlen.se/comp/time.html. Sowohl SNTP als auch NTP verwenden das gleiche Netzwerkpaketformat. Die Unterschiede bestehen vor allem darin, dass SNTP, im Gegensatz zu NTP, nur einen Zeitserver verwendet. Die Genauigkeit des SNTP Protokolls ist deshalb fast immer schlechter als die einer vollwertigen NTP Implementierung. Ausserdem kann SNTP Zeitsprünge aufgrund von Schaltsekunden nicht vermeiden. Um die Grundlagen der Zeitsynchronisierung zu verdeutlichen, ist das SNTP Protokoll jedoch ausreichend. Ziel In der Übung wird ein SNTP Client implementiert, der die aktuelle Zeit von einem NTP Server (ntp.in.tum.de) bezieht und basierend darauf den Offset der eigenen Uhr berechnet. Neben der Funktionsweise eines (S)NTP Clients wird hierbei auch die Socket Schnitstelle (Schnitstelle zur Netzwerk-Kommunikation) betrachtet. Die Aufgabe wird in der Programmiersprache C implementiert. Zum übersetzen wird Microsoft Visual Studio verwendet. 2/6

Entwicklungsumgebung Zum erstellen eines Projekts gehen Sie wie folgt vor. Nach dem Starten von Visual Studio: File New Project Win32 Win32 Console Application Project Properties Configuration properties C/C++ Advanced Compile as compile as C code Anschliessend muss die Socket Bibliothek zum erstellten Projekt gelinkt werden: Project Properties Linker CommandLine und tippen Sie wsock32.lib ein. Kopieren Sie nun das Rahmenprogramm aus der Datei SNTPClient.c in Ihre Projekt Sourcen. Die Programmiersprache C bietet fast die gleiche Socket Schnittstelle unter Windows wie unter VxWorks. Die Aufgabe wird unter Windows gelöst, weil der Simulator in VxWorks nur begrenzte Netzwerk-Funktionalität hat. Aufgabe 3: SNTP Client Aufgabe 3.1: Netzwerk-Kommunikation Um mit einem NTP Server kommunizieren zu können, muss zuerst die Kommunikation implementiert werden. Ergänzen Sie dazu die fehlenden Teile der Netzwerkfunktionalität des Rahmenprogramm aus SNTPClient.c and geeigneter Stelle. Implementierungshinweis Verwenden Sie für die UDP Kommunikation als Zielserver ntp.in.tum.de und als Port 123. Um eine Nachricht an den Server zu schicken benutzen Sie folgende Aufrufe: socket(); Erzeugt einen Socket für z.b. UDP sendto(); Schickt eine Nachricht zu einer angegeben Adresse... closesocket(); Schliesst das angegebene Socket Um eine Nachricht von dem Server empfangen zu können, sind folgende Funktionen nötig: 3/6

socket(); Erzeugt ein Socket, das auf z.b. UDP gebunden ist recvfrom(); Empfängt eine Nachricht von einem Socket und speichert die Senderadresse... closesocket(); Schliesst den angegebenen Socket Zum Senden und Empfangen kann der gleiche Socket verwendet werden. Die (S)NTP Nachricht wird mit der Funktion createn T P M essage() erzeugt. Als Parameter benötigt diese Funktion unter anderem die Sendezeit des Paketes. Die aktuelle Zeigt erhält man under Windows durch den Aufruf von time(), der einen time t Wert zurückliefert (http://msdn.microsoft.com/de-de/library/1f4c8f33%28vs.80%29.aspx). Je nach Betriebssystem werden folgende Datentypen für die Zeitrepräsentation verwendet: time t : stellt die Zeit als Anzahl von Sekunden (Windows, Linux, VxWorks) struct timeval : stellt die Zeit als 2 Werte dar: Sekunden und Mikrosekunden (Linux) struct timespec : stellt die Zeit als 2 Werte dar: Sekunden und Nanosekunden (Vx- WOrks) Aufgabe 3.2: Erzeugen und Parsen von den NTP Nachrichten Implementieren Sie die Funktion decodetimestamp(), die das Parsen eines Zeitstempels einer (S)NTP Nachricht realisiert. Implementierungshinweise decodetimestamp Die Zeitstempel von NTP werden als 64-bit Festkomma Werte codiert. Dabei umfasst der Ganzzahl Anteil 4 Byte und der Nachkommaanteil ebenfalls 4 Byte. Zu beachten ist, dass Big Endian bei der Anordnung der Bytes verwendet wird. Dies bedeutet, dass das most significant Byte die niedrigste Adresse hat. Beispielscode zur Umrechnung eines Byte-Arrays im Big-Endian Format in einen double Datentyp: // char p o i n t e r [ ] i s the given array i n t i ; // v a r i a b l e to i t e r a t e in the array s h o rt byte ; double base ; double timestamp = 0. 0 ; 4/6

f o r ( i = 0 ; i < 8 ; i++) { / byte i s a signed data type / byte = ( i + p o i n t e r ) ; / s h o r t i s a signed data type / i f ( ( ( ( i + p o i n t e r ) ) & 0x80 ) == 0x80 ) byte = ( s hort ) (128 + ( ( ( i + p o i n t e r ) ) & 0 x7f ) ) ; / 2ˆ24, 2ˆ16, 2ˆ8, 2ˆ0, 2ˆ 8, 2ˆ 16, 2ˆ 24, 2ˆ 32 / base = pow ( ( double )2, ( double ) ( 3 i ) 8 ) ; timestamp = timestamp + ( double ) ( byte base ) ; } return timestamp ; Testen Sie Ihre Implementierung Funktion int decodetimestamp test(). von decodetimestamp() mittels der vorgegebenen parsentpmessage Die Struktur eines NTP Paketes ist im Bild dargestellt. Eine Nachricht wird dabei als ein Array bestimmter Länge repräsentiert. Überlegen Sie sich eine mögliche Implementierung der Funktion parsentpmessage und vergleichen Sie anschliessend Ihre Lösung mit der aus dem Rahmenprogramm. Genauere Informationen bezüglich des Aufbaus einer SNTP Message finden Sie unter http://www.networksorcery.com/enp/protocol/sntp.htm. Zum Versenden der SNTP Nachricht müssen folgende Felder gesetzt werden: 5/6

Leap Indicator - LI Version Number - VN Mode Transmit Timestamp - ist nicht zwingend notwendig aber empfohlen Aufgabe 3.3: Roundtrip Delay und Local Clock Offset Bestimmen Sie den Roundtrip Delay und den Local Clock Offset und geben Sie diese Daten aus. Nähere Informationen hierzu können Sie der RFC2030 entnehmen. Implementierungshinweis Die Uhrzeit des lokalen Rechners kann man durch den time() Aufruf ermittelt werden. Merken Sie sich die aktuelle Uhrzeit in der Variable localtimestamp vor dem Senden des (S)NTP Packetes und übergeben Sie diese Uhrzeit der Funktion createntpmessage(). Merken Sie die Empfangszeit des (S)NTP Paketes in der Variable localtimestamp, sie wird bei der späteren Berechnung benötigt. Windows als auch Linux verwenden für (S)NTP Nachrichten eine UTC Zeitskala. Es ist jedoch zu beachten, dass UTC verschiedene Epochen erlaubt. NTP zählt die Zeit seit dem 1. Januar 1900, Windows und Linux seit dem 1. Januar 1970. Um diese Zeitstempel umzurechnen müssen 2208988800 Sekunden addiert oder subtrahiert werden. Wie sich der RoundT ripdelay bzw. der Offset zur lokalen Uhr berechnen lassen, kann der RF C2030 entnommen werden. Einen Hinweis dazu finden Sie auch im Rahmenprogramm. 6/6