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
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.
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.
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.
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!
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.
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.
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.
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
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
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.
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.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.