PTP(Precision Time Protocol)のご利益
1) 時刻合わせの必要性
集中処理で行われていた製造業のラインの制御は、市場が求める多種多様な要求を満たすために複雑さを増してきました。ダウンサイジングに伴って、高価なプロセッサを使って集中的に制御するよりも、各プロセスに適合した安価なプロセッサにより制御し、分散処理したものをネットワークを通じて纏めるというものです。
システム開発に於いてもソフトウェアの開発も並列して行われ、また構成する装置はすべて一社で開発製造するよりは、複数ベンダーから市場に出回っている装置を選び構成し、ソフトウェアの開発等の並列化で生産性を向上させることが可能となったのです。
一方、インターネットを中心とする分散処理に対応するネットワーク環境は、Ethernetを中心に発展してきました。そして産業界にも、Ethernetを適用する動きが起こりました。
Ethernetは、元々非同期通信が前提で発展してきましたが、産業用組み込みシステムでは、基本同期通信が必要とされています。制御処理が複数に分散化された装置間は、ネットワークを通して同期通信が必要となりました。ネットワークでは、NTP(Network Time Protocol)により時刻合わせができる環境がありましたが、必要とする精度を満たすことはできず、産業分野を中心により高い精度の時刻合わせがネットワークを通じて行う方法が必要となりました。
2) 高精度時刻同期 解決への道筋
これらの問題を解決すべく国際的な標準化団体であるIEEE(Institute of Electrical and Electronics Engineers)が、2002年に1588(Precision Time Protocol:PTP)を策定しました。その後2008年に改訂版(IEEE1588v2)が策定され、FA(Factory Automation)、移動体を中心とする通信システム、分散型の計測システム、映像・音声システム(Video Over IP)などの同期通信を必要とする分野への対応に十分な高い時刻精度(マイクロ秒単位)を実現できるようになりました。
このような業界の動きの中でMellanoxは、システム(NICおよびスイッチ)のIEEE1588対応製品を出荷しています。
3) MellanoxスイッチPTPについて
MellanoxスイッチのPTPはBoundary Clockモードであり、下図の様に境界の間でGrand Master Clockとスイッチの間は、GMC(Master) -スイッチ(Slave)の関係になります。 そして、Sスイッチ(Master)に接続されるたノード(Slave)へ、Switchを仲介して段階的に時刻合わせがなされシステム全体が同期することとなります。
一方で、Grand Master ClockからSlaveへ直接時刻合わせをするTransparency Clockモードがありますが、Melanoxのスイッチは、現時点ではそのモードをサポートしておりません。
実際に、スイッチをPTPモードにセットするとSlaveとMasterの双方の役割を演じることとなります。
それでは、スイッチのPTPモードのセットアップをしてみましょう。
なお、Mellanoxスイッチは、次のようにディフォルトでSMPTE 2059-2でのパラメータ設定になっておりますので、このまま利用します。ただ、他のPTPモードを設定する際は別途パラメータを合致させてください。
検証環境
PTPの設定
スイッチモードの設定 (VLAN 100/200)
switch-MSN2010 [standalone: master] (config) # vlan 100
switch-MSN2010 [standalone: master] (config vlan 100) #exit
Grand Master Clock用のポートをPort 1/1に設定
switch-MSN2010 [standalone: master] (config) # interface ethernet 1/1 switchport mode access
switch-MSN2010 [standalone: master] (config) # interface ethernet 1/1 switchport access vlan 100
同様にSlave用のポートをPort 1/2に設定
switch-MSN2010 [standalone: master] (config) # interface ethernet 1/2 switchport mode access
switch-MSN2010 [standalone: master] (config) # interface ethernet 1/2 switchport access vlan 100
ディフォルトでセットされているNTPモードを解除します。
switch-MSN2010 [standalone: master] (config) # ntp disable
PTPモードの設定をします。
switch-MSN2010 [standalone: master] (config) # protocol ptp
VLAN 100にIPアドレスを割り付けます。
switch-MSN2010 [standalone: master] (config) # interface vlan 100 ip address 10.0.0.1/30
VLAN100でのPTP転送をイネーブルにします。
switch-MSN2010 [standalone: master] (config) # interface vlan 100 ptp enable
Port 1およびPort 2のPTP転送をイネーブルにします。
switch-MSN2010 [standalone: master] (config) # interface ethernet 1/1 ptp enable
switch-MSN2010 [standalone: master] (config) # interface ethernet 1/2 ptp enable
ポートを起動します
switch-MSN2010 [standalone: master] (config) # interface ethernet 1/1 no shutdown
switch-MSN2010 [standalone: master] (config) # interface ethernet 1/2 no shutdown
switch-MSN2010 [standalone: master] (config) # interface ethernet 1/4 no shutdown
ここで別途スレーブとなるスイッチをスレーブとしてセットアップします。
PTPの状態確認
switch-MSN2010 [standalone: master] (config) # show ptp
PTP mode : Boundary Clock
Message format : Mixed
Acceptable Master Table : Disabled
Domain : 127
Clock identity : 50:6B:4B:FF:FE:8E:5F:88
GMC identity : 00:80:15:FF:FE:D2:07:5F
Number of master ports : 1
Slave port interface : Eth1/2 (VLAN 100)
PTP enabled interfaces:
————————————————————————
Port Po VLAN VRF State Forced Master
————————————————————————
Eth1/1 N/A 100 default MASTER no
Eth1/2 N/A 100 default SLAVE no
このようにPort1および2がMASTER およびSLAVEになります。
さて、PTPでのパケットのやり取りはどのようになっているのでしょうか。 Port1(GMC-Switch)のやり取りをモニターしてみましょう。
以上の様に、PTP関連のパケットの授受が行われています。
実際に検証構成では、GMCを外した状態で2台のスイッチの時刻をバラバラにセットしました。ここでGMCを接続すると、GMCと2台のスイッチ時刻はぴったり合致します。