#topicpath
*ブロードキャストパケットの受信とユニキャスト再送信 [#i4a9b23a]
RIGHT:EBUG 第34回会合 ~
2010年6月21日、十日町市 ~
川俣吉広、kaw@on.rim.or.jp
**概要 [#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を指定すると、自アドレス宛だけでなく自身の属しているネットワーク宛のブロードキャストパケットも受信できる。
----
#topicpath

Front page   Edit Diff History Attach Copy Rename Reload   New Page list Search Recent changes   Help   RSS of recent changes