12-LinuxPTPによる時間同期(ソフト/ハードウェアタイムスタンプ)-研一

6477 ワード

長い間引きずって、半日かけて測ってみましたが、効果はまあまあで、隣の原子時計から離れて開発テストをすることができます.
参考文献:http://linuxptp.sourceforge.net/
0、ハードウェアサポート
NICがソフト・ハードウェアのタイムスタンプをサポートしているかどうかを確認します:sudo ethtool -T eno1
Time stamping parameters for eno1:
Capabilities:
	hardware-transmit     (SOF_TIMESTAMPING_TX_HARDWARE)
	software-transmit     (SOF_TIMESTAMPING_TX_SOFTWARE)
	hardware-receive      (SOF_TIMESTAMPING_RX_HARDWARE)
	software-receive      (SOF_TIMESTAMPING_RX_SOFTWARE)
	software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
	hardware-raw-clock    (SOF_TIMESTAMPING_RAW_HARDWARE)
PTP Hardware Clock: 0
Hardware Transmit Timestamp Modes:
	off                   (HWTSTAMP_TX_OFF)
	on                    (HWTSTAMP_TX_ON)
Hardware Receive Filter Modes:
	none                  (HWTSTAMP_FILTER_NONE)
	all                   (HWTSTAMP_FILTER_ALL)
	ptpv1-l4-sync         (HWTSTAMP_FILTER_PTP_V1_L4_SYNC)
	ptpv1-l4-delay-req    (HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ)
	ptpv2-l4-sync         (HWTSTAMP_FILTER_PTP_V2_L4_SYNC)
	ptpv2-l4-delay-req    (HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ)
	ptpv2-l2-sync         (HWTSTAMP_FILTER_PTP_V2_L2_SYNC)
	ptpv2-l2-delay-req    (HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ)
	ptpv2-event           (HWTSTAMP_FILTER_PTP_V2_EVENT)
	ptpv2-sync            (HWTSTAMP_FILTER_PTP_V2_SYNC)
	ptpv2-delay-req       (HWTSTAMP_FILTER_PTP_V2_DELAY_REQ)
  • ソフトウェアタイムスタンプには、パラメータSOF_を含める必要があります.TIMESTAMPING_SOFTWARE SOF_TIMESTAMPING_TX_SOFTWARE SOF_TIMESTAMPING_RX_SOFTWARE
  • ハードウェアタイムスタンプには、パラメータSOF_を含める必要があります.TIMESTAMPING_RAW_HARDWARE SOF_TIMESTAMPING_TX_HARDWARE SOF_TIMESTAMPING_RX_HARDWARE

  • 1、LinuxPTPソースコードのダウンロード
    sudo git clone git://git.code.sf.net/p/linuxptp/code linuxptp
    cd linuxptp
    sudo make
    sudo make install
    

    Usageの表示
    ptp4l -h
    
            
      -A 			Auto,        。, E2E  ,             P2P
      -E 			E2E,       -   (E2E)  。         。   PTP                   。   E2E               ,   warning
      -P 			P2P,      
            
      -2 			IEEE 802.3
      -4 			UDP IPV4(  )
      -6 			UDP IPV6
           
      -H  			       (  )
      -S  			       					
      -L  			LEGACY HW   
          
      -f	[file]	     file     。               。
      -i	[dev]	  PTP    ,  eth0(     )                    。
      -p	[dev]	 Linux  v3.5  ,            PHC  。                  PHC  (  / dev/ptp0)。        ,   auto,    / LEGACY HW   (        )
      -s			slaveOnly mode,     (      )
      -t			      
      -l	[num]	          'num',   6
      -m			      stdout
      -q			      syslog
      -v			         
      -h			help
    

    2、run linuxptp
  • 2.1ソフトウェアタイムスタンプ、マスタスレーブモードテスト
  • サービス側(メインクロック):
    sudo ptp4l -i enp0s31f6 -m -S
    

    クライアント(時計):
    sudo ptp4l -i eno1 -m -S -s
    

    実行結果:メインクロック:12 - 利用LinuxPTP进行时间同步(软/硬件时间戳) - 研一_第1张图片スレーブクロック:12 - 利用LinuxPTP进行时间同步(软/硬件时间戳) - 研一_第2张图片実行後:12 - 利用LinuxPTP进行时间同步(软/硬件时间戳) - 研一_第3张图片 logの内容は:
  • master offset:PTPプロトコルで定義されたプライマリ・スレーブ時間差、単位:ns
  • s 0,s 1,s 2:クロックサーバーの異なる状態を示し、s 0はロックされていないことを示し、s 1は同期中であることを示し、s 2はロックを示し、ロック状態はステップ同期が発生しないことを示し、
  • を緩やかに調整する
  • freq:
  • port 0:INITIALIZING to LISTENING on INIT_COMPLET:ローカルPTP管理のUnixドメインsocket;
  • port 1:new foreign...:eno 1上のポート;
  • が時計ポート状態からUNCALIBRATEDからSLAVEに変化すると、時計はbest masterと同期することに成功する.
  • 2.2ハードウェアタイムスタンプテストサービス側(メインクロック):
  • sudo ptp4l -i enp0s31f6 -m -H
    

    クライアント(時計):
    sudo ptp4l -i eno1 -m -H -s
    

    実行結果:時計:12 - 利用LinuxPTP进行时间同步(软/硬件时间戳) - 研一_第4张图片から明らかにハードウェアタイムスタンプで同期する精度がずっと高く、これは普通のネットワークカードにすぎず、キャンパスネットワークを歩いているのか......
  • 2.3透明クロック(TC)モードテスト(問題あり)
  • /-このバグは修復されたようです-
    TCとBCは少なくとも2つのインターフェースが必要です.次のコマンドを実行します.
    sudo ptp4l -i eno1 eno2 -m -H -t
    

    ヒント無効なオプション:在这里插入图片描述うん?USageにははっきりと-tはtransparent clockですねsudo vim ptp4l.8ええ、-f-i-m-p-l-i-A-E-P-2-4-6-H-S-L-q-v-h?-tがなくて、分かりません
  • 手動TC/BC:デバイスに2つのネットワークカードが必要で、1つのカードは時計の1つのカードからメイン時計を縛って、TC/BCを実現します.効果は実はそれほど悪くない.
  • 最近開発時に遭遇したUSRPのULO問題:
  • 「U」エラーhost PCまたはそれに実行されているアプリケーションがUSRPに十分な高速率でサンプル値を提供できない場合、「U」エラーが発生することがよくあります.例えば、USRPは設定されたサンプリングレートが5 M/sの需要サンプル値であり、host PCは5 M/s未満のレートでサンプル値を提供するしかない場合、「U」エラーが発生します.
  • "O"エラーhost PCまたはそれに実行されているアプリケーションがUSRPで提供されたサンプル値を十分に速いレートで処理できない場合、よく"O"エラーが発生します.距離説明:USRPが設定されたサンプリングレートで5 M/sのサンプル値を提供し、host PCが5 M/s未満のレートでサンプル値を処理するしかない場合、"O"エラーが発生します.
  • "L"エラーUSRPの設計メカニズムは、PacketのタイムスタンプがFPGAのタイムスタンプよりも早いことを要求することである.命令がFPGAに到達したときにPacketのタイムスタンプが古くなった場合、USRPは「L」エラー、すなわち命令の到達時間が予想実行時間より遅いことを示す.

  • ここでは、2台のセシウム原子時計クロックサーバを用いて、SDRプラットフォーム(OAI EPC+srs eNB+COTS UE)を介して、キャビティについて15時間のテストを行ったデータのセットがあり、キャビティ性能分析を行うことができる.
    更に:ダイヤル接続が調和しています・・・
    12 - 利用LinuxPTP进行时间同步(软/硬件时间戳) - 研一_第5张图片