ネットワークの検証にブリッジを使う必要が出てきたので、Raspberry pi3でブリッジ機能を設定したので、備忘録として残しておきます。
作成したブリッジを使ってDLNA通信の検証を行いました。
使用機材
- Raspberry pi3 Model B+
- USB-LANケーブルアダプタ EDC-GUA3-B
- Cat 5EのLANケーブル
操作内容
USB-LANケーブルアダプタをRaspberry piにつけた後、下記の流れで設定することで、ブリッジを実現できます。
SSH接続で設定する場合は、念のため、下記の操作が完了するまでLANケーブルをアダプタに接続しない方がいいです。
入力コマンド
apt-get install bridge-utils #bridgeを実現するためのパッケージをインストール
sysctl net.ipv4.ip_forward=1 #パケットをフォワーディングするように設定
brctl addbr br0 #ブリッジインタフェースを設定
#ブリッジインタフェースbr0に転送する二つのインタフェースを設定
brctl addif br0 eth0
brctl addif br0 eth1
brctl show #上記の設定が反映されているか確認
#インタフェースの有効化(インタフェースがUPされていれば不要)
ip link set eth0 up
ip link set eth1 up
ip link set br0 up
vim /etc/network/interfaces #下記の設定例をもとに変更
vim /etc/dhcpcd.conf #下記の設定例をもとに変更
sudo reboot
設定ファイルの参考例
/etc/network/interfaces
source-directory /etc/network/interfaces.d
auto br0
iface br0 inet manual
bridge_ports eth0 eth1
/etc/dhcpcd.conf
ファイルの最終行に下記の設定を反映させます。
(省略)
# fallback to static profile on eth0
#interface eth0
#fallback static_eth0
denyinterfaces eth0 eth1
interfaces br0
static ip_address=192.168.1.1
static_routers=192.168.1.254
DLNA通信の検証
作成したブリッジを使って、DLNA機器がどれだけパケット遅延を許容するか検証してみました。
Panasonicの「どこでもDIGA」の宅内視聴モードを利用して、遅延をかけた状態でもスマートフォンでDLNAサーバ(録画レコーダ)から録画番組リストを取得できるか、取得出来たら録画番組データを取得できるか実験してみました。
構成
[スマートフォン]←→[ルータ]←→[ブリッジ]←→[DLNA機器(DMR-BW550, Panasonic)]
使用コマンド(ブリッジ上)
sudo tc qdisc add dev eth0 root netem delay 1ms
sudo tc qdisc del dev eth0 root netem delay 1ms
sudo tc qdisc add dev eth0 root netem delay 2ms
sudo tc qdisc del dev eth0 root netem delay 2ms
sudo tc qdisc add dev eth0 root netem delay 3ms
sudo tc qdisc del dev eth0 root netem delay 3ms
sudo tc qdisc add dev eth0 root netem delay 7ms
sudo tc qdisc del dev eth0 root netem delay 7ms
結果
ひとまずブリッジは正常に動作しました。
肝心のDLNA通信ですが、パケット遅延0msのときは想定通り、録画番組リストの取得と録画番組の再生ができました。
ただパケット遅延を1ms発生させた時点で録画番組リストの取得が不安定(2回に1回は失敗)になり、録画番組の再生は全て失敗しました。
2ms以上は録画番組リストの取得すら100%失敗しました。
この様子だとこのサイトで書かれていた通り、2019年9月現在でもDTCP-IPの「RTT 7 ms」の制限はあるみたいです。
スマートフォンとRaspberry pi間でVPN構築して直接通信したいと思っていたのですが、実現は難しいでしょう。