Forum: Mikrocontroller und Digitale Elektronik PTP (Precise Time Protocol)


von Sto C. (fox3123)


Lesenswert?

Hallo,

vielleicht weiß von Euch jemand, ob es folgendes gibt. Ich selbst, hab 
bis jetzt noch nichts gefunden, bin sehr frisch in dieses Thema 
eingestiegen vor kurzem, und versuch hier mal mein Glück :-). Bin 
deshalb über jeden Tipp dankbar.

Es geht um PTP (Precise Time Protocol) Detektion auf Netzwerkkarten 
(Linux) - Hardware Timestamping auf niedrigster Ebene (Layer 1/2) ohne 
(viel) Software Einfluss.

Ich würde gerne, dass eine spezielle PTP fähige Netzwerkkarte, ein 
Signal auf eine externe Leitung abgibt, sobald ein bestimmter Timestamp 
erreicht wurde. Das sollte wenn möglich alles in Hardware passieren (und 
so wenig wie möglich in Software / Linux Kernel), um so schnell wie 
möglich zu sein.

Anders formuliert:
Generell würde ich gerne die Zeit mehrerer PCs (>= 2) so exakt wie 
möglich synchronisieren (< 40 ns). Weiters muss/soll die Netzwerkkarte 
selbst sobald ein gewisser Timestamp (selbst einstellbar wenn möglich) 
erreicht ist, ein Signal auf eine externen Pin absetzen (Interrupt), 
welches ich per Oszi oder anderere Peripherie abgreifen kann.

Daher meine Fragen:
Ist das technisch eigentlich aus PTP und Netzwerkkarten sicht möglich 
oder nehm ich mir da zuviel vor und es kann gar nicht funktionieren, so 
wie ich es mir denke.

Alternative Vorschläge (Sync. muss über Netzwerkkabel funktionieren).

Vielen Dank :-)
lg

von Johnny B. (johnnyb)


Lesenswert?

Sto C. schrieb:
> so exakt wie möglich synchronisieren (< 40 ns)

Das geht sicherlich nicht mit normaler Computerhardware. Ich befürchte, 
dass Du für sowas extra eine Hardware als Standalone Gerät oder als 
Karte für einen Computer entwickeln lassen musst.
Ich meine, bei 40ns ist ja sogar schon der Jitter von einem normalen 
Quarz sehr störend und dann gibt es noch ganz viele weitere 
Herausforderungen.

von Jim M. (turboj)


Lesenswert?

Sto C. schrieb:
> Generell würde ich gerne die Zeit mehrerer PCs (>= 2) so exakt wie
> möglich synchronisieren (< 40 ns).

Der Hacker würde einfach das serielle Signal einer GPS Maus aufsplitten. 
Die haben mitunter auch einen genauen 1PPS (Puls Pro Sekunde) Ausgang.


Ich würde hier aber zu Bedenken geben dass die internen HF Taktquellen 
im PC normalerweise nicht so genau laufen und temperaturabhängig sind.

von Horst (Gast)


Lesenswert?

Sto C. schrieb:
> (< 40 ns)

Wie weit stehen die Geräte denn auseinander?
Wenn man mal c als Signalgeschwindigkeit annimmt, sind das 12Meter und 
so schnell ist der Strom nicht.

von Win DJ Ammer (Gast)


Lesenswert?

Das Ansinnen toent nach grossem Furz. Was soll's denn werden ?

von c-hater (Gast)


Lesenswert?

Sto C. schrieb:

> vielleicht weiß von Euch jemand, ob es folgendes gibt.
[...]

Gibt es nicht, kann es auch nicht geben. Allein die 
Netzwerkinfrastruktur (sprich: Switches) hat schon einen deutlich 
größeren Jitter. Die Laufzeit im Kabel wurde auch schon erwähnt. Sprich: 
so, wie du dir das vorstellst, wird es auf keinen Fall funktionieren.

Was der Sache noch am nächsten käme, wäre IndustrialEthernet/Profinet. 
Ist aber Größenordnungen von deinen völlig schwachsinnigen Forderungen 
entfernt.

> Bin
> deshalb über jeden Tipp dankbar.

LERNE SELBER DENKEN!

von Wolfgang (Gast)


Lesenswert?

Sto C. schrieb:
> Generell würde ich gerne die Zeit mehrerer PCs (>= 2) so exakt wie
> möglich synchronisieren (< 40 ns).

Was bezeichnest du als "synchron".  Vor rund hundert Jahren hat sich mal 
jemand mit dem Problem der Gleichzeitigkeit beschäftigt. Die Ergebnisse 
solltest du dir mal zu Gemüte führen. Bei Forderungen mit <40ns bist du 
in einem Bereich, wo du dir überlegen musst, wie du deine Rechner, 
bezogen auf den Beobachter, der die Synchronität überprüfen soll, 
aufstellen musst.

von reihaus (Gast)


Lesenswert?


von Paul (Gast)


Lesenswert?

Sto C. schrieb:
> Ist das technisch eigentlich aus PTP und Netzwerkkartensicht möglich
Ja. Wird am CERN gemacht:
https://en.wikipedia.org/wiki/The_White_Rabbit_Project

Wenn man die Netzwerkkarte im FPGA realisiert, kann man PTP in Hardware 
machen:
https://arxiv.org/pdf/1510.01384.pdf

Dabei darf dann natürlich kein Switch im Spiel sein, der den 
Ethernetpaketen unbekannte Latenzen hinzufügt und dessen 
Taktrückgewinnung nicht dokumentiert ist.

von WhiteRabbitschlumpf (Gast)


Lesenswert?

Das Verfahren das sowas kann, nennt sich White Rabbit.

Und Switche die konstante und niedrige Latenzen haben,
hat uns der HF-Handel der Börsen beschert. (z.B. von Arista)
Schon lächerlich, gell?

Aber das hat natürlich nichts mit den völlig falschen
(aka naiven) Vorstellungen des TO zu tun, wie man sowas anstellt.

von Sto C. (fox3123)


Lesenswert?

Hallo,

boah, vielen Dank für Eure Antworten einmal! Ich bin gerade dabei, 
selber noch in die PTP Thematik reinzufühlen.

Also, die Signale müssen nicht innerhalb von 40ns zwischen den PCs 
hin&her geschickt werden, sondern die Zeit (PTP Hardware clocks) muss 
bei beiden PCs so exakt wie möglich synchron sein. Und um diese synchron 
zu halten, sollte PTP verwendet werden.

Mit "der Zeit" ist die PHC (PTP Hardware Clock) der Netzwerkkarte 
gemeint.
(Die ca. 40ns beziehen sich auf die Offset RMS (root mean square) der 
PHCs der (>=2) PCs).

Siehe zB: 
https://events.static.linuxfound.org/sites/events/files/slides/lcjp14_ichikawa_0.pdf 
(Seite 32).

Nun würde ich weiters gerne bei einem gewissten Timestamp (das ich 
vorher festlegen kann), ein Signal bei der Netzwerkkarte haben, das ich 
abfangen kann.

lG

Update: Bin kurz noch auf etwas gestoßen:
Eventuell kann der externe Interrupt dann mit einem PPS Signal 
(https://www.kernel.org/doc/Documentation/pps/pps.txt) oder Interrupts 
irgendwie realisiert werden. (Dazu muss nat. die Hardware Interrupts 
bereitstellen).

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

PTP kann solche Genauigkeiten erreichen. Dazu muss es nicht komplett in 
Hardware implementiert sein, aber Hardware-Unterstützung muss vorhanden 
sein (Erzeugung von HW-Zeitstempeln von PTP-Paketen). Das können einige 
Netzwerkkarten - kann man unter Linux z.B. für eth0 mit "ethtool -T 
eth0" prüfen. Auf meinem Rechner sieht die Ausgabe z.B. so aus:
1
Time stamping parameters for eth0:
2
Capabilities:
3
        hardware-transmit     (SOF_TIMESTAMPING_TX_HARDWARE)
4
        software-transmit     (SOF_TIMESTAMPING_TX_SOFTWARE)
5
        hardware-receive      (SOF_TIMESTAMPING_RX_HARDWARE)
6
        software-receive      (SOF_TIMESTAMPING_RX_SOFTWARE)
7
        software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
8
        hardware-raw-clock    (SOF_TIMESTAMPING_RAW_HARDWARE)
9
PTP Hardware Clock: 0
10
Hardware Transmit Timestamp Modes:
11
        off                   (HWTSTAMP_TX_OFF)
12
        on                    (HWTSTAMP_TX_ON)
13
Hardware Receive Filter Modes:
14
        none                  (HWTSTAMP_FILTER_NONE)
15
        all                   (HWTSTAMP_FILTER_ALL)
16
        ptpv1-l4-sync         (HWTSTAMP_FILTER_PTP_V1_L4_SYNC)
17
        ptpv1-l4-delay-req    (HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ)
18
        ptpv2-l4-sync         (HWTSTAMP_FILTER_PTP_V2_L4_SYNC)
19
        ptpv2-l4-delay-req    (HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ)
20
        ptpv2-l2-sync         (HWTSTAMP_FILTER_PTP_V2_L2_SYNC)
21
        ptpv2-l2-delay-req    (HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ)
22
        ptpv2-event           (HWTSTAMP_FILTER_PTP_V2_EVENT)
23
        ptpv2-sync            (HWTSTAMP_FILTER_PTP_V2_SYNC)
24
        ptpv2-delay-req       (HWTSTAMP_FILTER_PTP_V2_DELAY_REQ)

Aber eine Netzwerkkarte, die dann von sich aus noch ein separates Signal 
zu einer bestimmten Zeit senden kann, wäre mir nicht bekannt.

: Bearbeitet durch User
von Marco H. (damarco)


Lesenswert?

Das Delay wird ja vorher ermittelt und wenn es zu sehr schwankt ist dies 
ein clock der nie Master wird im System.

Bei PTP geht es darum die Uhren des Systems zu synchronisieren. Wann das 
Paket ankommt ist ganz grob gesagt Wurst. Hauptsache alle Faktoren 
wurden berücksichtigt und sind relativ konstant.

Den ISR muss das System auslösen und wenn alles okay ist sind diese mit 
1n konstant.

von Holger B. (vilu)


Lesenswert?

Viele aktuelle Ethernet-Controller und -Switches haben GPIOs, die für 
PTP-Trigger verwendet werden lönnen, Intel i210 beispielsweise. Da lässt 
sich vielleicht mit Standardhardware was basteln, ansonsten müsstest du 
mehr Geld in die Hand nehmen, beispielsweise für 
http://www.oreganosystems.at/?page_id=71.

von Sto C. (fox3123)


Lesenswert?

Vielen Dank einmal! Also Hardware-Timestamping unterstützt meine 
Netzwerkkarte, jedoch nicht gut genug wie ich finde. Und ich hab leider 
auch keine Signale/Interrupts/Events.

Ich werde mir mal den PHY von Oregano ansehen, was dieser so kann. Danke 
für den Tipp einmal!

von Marco H. (damarco)


Lesenswert?

Du hast uns ja nicht verraten was du vor hast? Es ist auch kein Problem 
die PTP in Software zu lösen. FPGA oder auch Xmos...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.