Protokoly k synchronizaci času pro paketovou síť

Autor: M. Pravda <pravdm2(at)fel.cvut.cz>, Pracoviště: České vysoké učení technické v Praze, FEL, Téma: Aplikace a služby, Vydáno dne: 10. 10. 2008

Cílem bylo navrhnout, vytvořit a otestovat možnost přenosu synchronizace přes paketovou síť. Tento článek představuje protokoly použitelné pro synchronizaci navržených synchronizačních jednotek.


Protocols for synchronization in packet network - Abstract
This work deals with possibilities of synchronization transmission across packet network. This article introduce protocols usable for synchronization two devices.

V dnešním digitálním věku se synchronizace stala nutnou podmínkou k tomu, aby dvě různá zařízení (často jich je více) mohla mezi sebou komunikovat. Synchronizací se rozumí postup pro dosažení žádaného fázového vztahu (synchronnosti) taktovacích signálů jednotlivých zařízení, které jsou navzájem propojeny.

Synchronizační protokoly a jejich porovnání

Pro synchronizaci systémů v běžně používaných sítích TCP/IP je možné využít protokolů běžících na aplikační vrstvě. Bylo publikováno několik různých protokolů, které byly koncipovány pro konkrétní aplikaci, vždy ale se společným cílem, kterým je přesná synchronizace času. Mezi nejznámější protokoly patří NTP (Network Time Protocol) a RTP (Real-time Transport Protocol). Dále se ještě zmíníme o standardu IEEE 1588, který byl vytvořen za účelem přesné synchronizace kontrolních systémů a měřicích zařízení v síti. Tento standard se dá využít i v průmyslových řídicích systémech, například pro přesné řízení motorů.

Protokol NTP

Protokol NTP (Network Time Protocol) je jedním z nejstarších protokolů a existuje už téměř dvacet let. Tento protokol je primárně určen pro synchronizaci vnitřních hodin počítačů po paketové síti, která má proměnlivou délku zpoždění. NTP klient je schopný přijímat časové údaje od několika serverů najednou a určit výsledný čas. Pro stanovení času se používá Marzullův algoritmus. Základním přenosovým protokolem je UDP (User Datagram Protocol). Jeho výhoda tkví v neexistenci trvalého spojení a v případě výpadku velmi vytíženého serveru nedochází k podstatnému snížení přesnosti.

NTP je v současné době velmi důmyslný systém využívající řady zajímavých algoritmů a statistických metod. Celý proces je založen na postupném přibližování se k přesnému času. Při synchronizaci lze rozlišit dvě fáze. V případě velkých rozdílů (nad 128 ms) dochází k tzv. skokové (stepping) synchronizaci, která zaručí okamžité srovnání času. V případě menších rozdílů pak probíhá tzv. slewing, což je postupné přibližování. Dosažení velmi dobré přesnosti tak není otázkou okamžiku, ale spíše několika minut. Během synchronizace se musí změřit a následně korigovat různá zpoždění při přenosu času.

Protokol NTP je dnes velice rozšířený a stal se nejpoužívanějším protokolem pro synchronizaci času. Jeho hlavní výhodou je dostupnost po celém internetu. Přesnost synchronizace tímto protokolem není příliš vysoká, ale je plně dostačující pro synchronizaci času v PC a pohybuje se v řádu desítek milisekund.

Protokol RTP

Tento protokol byl navržen pro multimediální přenosy (zvukové a obrazové přenosy) v reálném čase. Často se používá v streaming media systémech (ve spojení s RTSP) nebo u videokonferencí. Vhodnost tohoto protokolu pro synchronizaci času není příliš dobrá, protože je primárně určen pro multimediální přenosy. Tento protokol nezaručuje doručení dat ani správné pořadí jednotlivých paketů, ale definuje jejich pořadová čísla, podle kterých mohou aplikace rozpoznat chybějící pakety. K multimediálnímu obsahu je připojeno záhlaví, které kromě pořadového čísla paketu a jeho časové známky, která je použita pro časovou rekonstrukci datového proudu, obsahuje rovněž označení typu obsahu.

Ve spojení s protokolem RTP pracuje protokol RTCP (RTP Control Protocol). Vytváří zpětnou vazbu mezi účastníky relace protokolu RTP, ve které periodicky probíhá výměna RTCP paketů. RTCP pakety obsahují informace, podle kterých může vysílající strana multimediální proud dynamicky měnit. Protokol RTCP tedy poskytuje služby řízení toku a kontroly zahlcení sítě.

Protokol IEEE 1588 (PTP)

Měřicí a řídicí aplikace často vyžadují přesnou synchronizaci událostí nejen lokálně, ale i v celých distribuovaných sítích. Norma IEEE 1588 (PTP – Precision Time Protocol) definuje standardizované metody pro takovéto aplikace, umožňuje synchronizovat více zařízení připojených do sítě s lepší než mikrosekundovou přesností. IEEE 1588 je optimalizovaná pro distribuované systémy, síť zatěžuje jen minimálně a strojový čas procesoru neznatelně.

V síti se může nacházet mnoho síťových zařízení. Alespoň jedno zařízení musí být definováno jako hlavní (Master). V principu může jedno zařízení fungovat jako Master i Slave. Tímto dochází k rozšiřování oblasti synchronizace. Hlavní časová základna (Master clock) synchronizuje vedlejší časové základny.

V dané síti je vždy vytvořena hierarchie, která udává, jaké hodiny jsou nejpřesnější. Přesnost je udávána parametrem stratum, který charakterizuje, na jaké vrstvě v dané hierarchii se časová základna nachází. Na nejvyšší vrstvě se nacházejí atomové hodiny a parametr stratum má hodnotu 1. Vedlejší časové základny si před synchronizací vždy najdou nejpřesnější hodiny a definují je jako hlavní. Jelikož časový rozdíl mezi hlavními a podřízenými hodinami je součtem offsetu hodin a přenosovým zpožděním sítě, probíhá synchronizace ve dvou fázích: oprava offsetu a korekce vlivu síťového zpoždění.

Dosahovaná přesnost většiny implementací bude lepší než 1 µs, ale skutečné parametry synchronizace se mohou významně lišit v závislosti na konkrétní aplikaci. Vzdálenost 400 m je maximální vzdálenost na kterou můžeme tento standard využít bez dalšího aktivního zařízení. Tento protokol se v posledním období velice rychle vyvíjí a začíná se postupně implementovat v různých typech zařízení.

Porovnání jednotlivých protokolů

Protokol NTP je jeden z nejstarších protokolů, který se stále vyvíjí a dokáže konkurovat i novým protokolům. Jeho hlavní výhodou je dostupnost po celém internetu. Přesnost tohoto protokolu není příliš vysoká. Lépe je na tom protokol podle standardu IEEE 1588, který poskytuje mnohem větší přesnost. Tato přesnost je dosažena zmenšením vzdálenosti mezi uzly. Maximální vzdálenost po které musí být umístěny další hodiny je 400 m. Uplatnění jistě najde v lokálních sítí a z hlediska budoucnosti je třeba s tímto protokolem počítat. Výhodou protokolu NTP je jeho robustnost, stálost a díky rozsáhlé dokumentaci i snadná implementace. Je používán po celém světě a je stále vyvíjen a zlepšován. Tyto vlastnosti staví protokol NTP na přední pozici ze zde zmíněných protokolů.

Zpoždění paketové sítě

Paketová síť byla navržena pro přenos paketů, tj. relativně samostatných segmentů dat, a to sebou přináší jisté výhody i nevýhody. Hlavní výhodou při přenosu dat je rozdělení zpráv do jednotlivých paketů, které se mohou přenášet různými cestami sítě. To zlepšuje využití přenosových kapacit sítě a hlavně umožňuje reagovat na přetížení v jednotlivých uzlech sítě a následně posílat pakety jinou cestou. Zpoždění paketu při průchodu sítí se mění vlivem změny zatížení jednotlivých bodů sítě nebo aktuální změnou topologie sítě například při výpadku určitého spojení. Tato vlastnost omezuje využít paketové sítě pro přenos informací, které se musí přenést v reálném čase, jako například přenos hovoru nebo videa.

Vliv proměnného zpoždění na přesnost synchronizace je poměrně zásadní. Abychom si udělali představu o rozptylu zpoždění v paketové síti, který je pro přesnost synchronizace důležitý, provedli jsme několik měření. Rozptyl zpoždění paketů při přímém propojení koncových zařízení je samozřejmě nejmenší, a to s hodnotou přibližně 100 μs. Při měření v reálné síti, kdy jsme se pomocí NTP klienta dotazovali veřejného NTP serveru, jsme naměřili rozptyl zpoždění přibližně 5 ms (obr. 1). Z grafu je dále patrné, že nejvíce paketů má zpoždění okolo hodnoty 7,1 ms. Pakety s vyšší hodnotou zpoždění byly nejspíše ovlivněny dobou zpracování na určitém síťovém prvku, který mohl být v určitém okamžiku více vytížen.

Obr1

Obr. 1 Četnost zpoždění paketů při spojení do internetu

Hlavním problémem při přenosu časové informace z NTP serveru je právě proměnné zpoždění, které nejsme schopni predikovat. Zpoždění paketů při cestě od NTP klienta k NTP serveru může být jiné než při zpáteční cestě od NTP serveru k NTP klientu. Toto zpoždění se snaží kompenzovat algoritmy obsažené v NTP protokolu.

Korekce zpoždění u NTP protokolu

Protokol NTP je založen na předávání časových informací z jednotlivých zařízení. Časové informace se přenášejí pomocí NTP paketů. Komunikaci zahajuje klient, který vysílá dotaz na NTP server. Tento dotaz obsahuje čas odeslání paketu z klienta, který si označíme jako T1. Server přijme NTP paket a vloží do něj čas přijetí paketu T2 a čas odeslání paketu T3 a pošle paket zpět klientovi. Klient si po přijetí paketu zaznamená ještě čas příchodu paketu T4 (obr. 2). Je nutné upozornit, že jednotlivé časy nejsou absolutní. Na klientu běží hodiny, které mohou být oproti serveru rozdílné. Časy klienta jsou T1 a T4 a časy serveru jsou T1 a T3.

Obr. 2 Princip přenosu paketu s časovými zprávami přes paketovou síť

Z těchto časů lze například vypočítat zpoždění paketu průchodem sítě δ jedním směrem a dále korekci času klienta.

δ = 0,5[(T4 − T1 ) − (T3 − T2 )] (1)

Výpočet zpoždění paketu jedním směrem je založen na předpokladu, že časy průchodu paketu k serveru i zpět budou stejné. Ze známých časů T1 až T4 lze přesně spočítat jen celé zpoždění tam a zpět.

Dále je možné z přijatých časů vypočítat korekci klienta k, která představuje rozdíl času serveru a klienta.

k = T3 − T4 + δ (2)

Výsledná korekce k nabývá kladných i záporných hodnot a udává čas, který se má přičíst respektive odečíst k času klienta. Po provedení této korekce by časy serveru a klienta měly být úplně stejné. Tomu samozřejmě tak není, protože nedokážeme přesně určit zpoždění sítě.

Přesnost synchronizace času pomocí NTP protokolu dosahuje chyby v řádu 10 ms. Při použití na lokálních sítích lze dosahovat přesnosti až 200 μs. V navazujícím článku se budeme zabývat metodami, jak tuto přesnost ještě zvýšit. Rozebereme si několik algoritmů, které jsme za tímto účelem navrhli a ukážeme si, jakých výsledků dosahují.

Literatura

[1] RFC 1305, Network Time Protocol (Version 3), 1992.
[2] NTP Reference and Implementation Guide. [online], 2006 [cit. 2007–10–21]. Dostupný z WWW: http://www.cis.udel.edu/~mills/database/reports/ntp4/ntp4.pdf
[3] Matlab. [online], [cit. 2008–04–24]. Dostupný z WWW: http://www.mathworks.com
[4] Ladislav Strnad. Digitální sítě 1. Vydavatelství ČVUT, Květen 1996.
[5] Ladislav Strnad. Úzkopásmové a širokopásmové sítě. Vydavatelství ČVUT, Únor 2003.
[6] RFC 3550, RTP: A Transport Protocol for Real-Time Applications, 2003.
[7] IEEE 1588 – Precise Time Synchronization. [online], 2006 [cit. 2007–04–25]. Dostupný z WWW: http://www.industrialnetworking.com/support/general faqs info/Precise Time Sync.pdf