*ブロードキャストパケットの受信とユニキャスト再送信 [#i4a9b23a]
**概要 [#m8cd3143]
構内LANを使用して電源設備監視をリモートで行うことになり、
その際に生じたトラブルを表題の方法で解決したもの。
***システム導入 [#b30c11ae]
電源設備を監視するシステムを導入し、リモートにて監視を行うことになった。

伝送路としては既存の社内ネットワークを使用。
設備メーカーには担当部署経由で事前にネットワーク構成図を提出。

システム導入後、リモートでの監視が行えないとの不具合が発生した。
#ref(BACnet.gif,wrap)
このシステムでは、BACnet/IPというプロトコルを使用して通信を行う。
このメーカの実装では、GCS (Global Control Server)や LCS (Local Control Server) から HIS (Human Interface Station) へ
データの同報を47808/UDPのブロードキャストパケットで行っている。 

''→ 上の構成では当然他セグメントには伝播しない。''

**ソリューション [#d4a36411]
#ref(BACnet-Repeater.gif,wrap)
ネットワークを同一セグメントで構成し、VPN上はL2で接続し直すなどの案も出たが、
最終的にはブロードキャストパケットをキャプチャし、ユニキャストに変換して個々のHISに送りつける変換機を作成した。

***Perlで実装 [#eb0acb53]
-Net::RawIPを使う&br;&ref(testcode.pl.txt);
--pcap APIを使用
--pcap libraryのフィルタリングルールが適用可能。

-Socketを使う&br;&ref(relay_udp_packet.pl.txt);
--ソケットオプションで SO_BROADCASTを指定すると、自アドレス宛だけでなく自身の属しているネットワーク宛のブロードキャストパケットも受信できる。
Top Index Search Recent Backups  Help  RSS