#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
 
 
Top Index Search Recent Backups  Help  RSS