Top / EBUG勉強会 / 20100621_Bcast2Ucast

ブロードキャストパケットの受信とユニキャスト再送信

EBUG 第34回会合
2010年6月21日、十日町市
川俣吉広、kaw@on.rim.or.jp

概要

構内LANを使用して電源設備監視をリモートで行うことになり、 その際に生じたトラブルを表題の方法で解決したもの。

システム導入

電源設備を監視するシステムを導入し、リモートにて監視を行うことになった。

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

システム導入後、リモートでの監視が行えないとの不具合が発生した。

BACnet.gif

このシステムでは、BACnet/IPというプロトコルを使用して通信を行う。 このメーカの実装では、GCS (Global Control Server)や LCS (Local Control Server) から HIS (Human Interface Station) へ データの同報を47808/UDPのブロードキャストパケットで行っている。

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

ソリューション

BACnet-Repeater.gif

ネットワークを同一セグメントで構成し、VPN上はL2で接続し直すなどの案も出たが、 最終的にはブロードキャストパケットをキャプチャし、ユニキャストに変換して個々のHISに送りつける変換機を作成した。

Perlで実装

  • Net::RawIPを使う
    filetestcode.pl.txt
    • pcap APIを使用
    • pcap libraryのフィルタリングルールが適用可能。
  • Socketを使う
    filerelay_udp_packet.pl.txt
    • ソケットオプションで SO_BROADCASTを指定すると、自アドレス宛だけでなく自身の属しているネットワーク宛のブロードキャストパケットも受信できる。

Top / EBUG勉強会 / 20100621_Bcast2Ucast

Attach file: fileBACnet.fig 606 download [Information] fileBACnet-Repeater.fig 588 download [Information] filerelay_udp_packet.pl.txt 695 download [Information] filetestcode.pl.txt 663 download [Information] fileBACnet-Repeater.gif 840 download [Information] fileBACnet.gif 826 download [Information]
Reload  New Edit Freeze Diff Attach Copy Rename  Top Index Search Recent Backups  Help  RSS
Last-modified: 2010-07-12 (Mon) 11:00:39 (3052d)