マルチキャスト通信について「どうしてこうなるの?」という現象について、よくご存じの方にヒントをいただきたく、よろしくお願いいたします。
先に結論を言えば、net.ipv4.conf.eth2.rp_filter
が0
では受けられず、2
でしか受けられません。なぜ0
で受けられないのか、ここが不可解です。
不可解な現象
あるLinuxサーバで、マルチキャストのパケットが受けられない事象がありました。色々条件を変えてみると、受けられない条件は限られていることが分かりました。
(受けられない時の)ネットワークの構成は以下です。
受信するLinuxサーバはC74_2
です。C74_1
からマルチキャスト・パケットを送付したところ、C74_2
のNIC迄届いていることはtcpdumpやWireSharkで確認できています。しかし、C言語で作った受信プログラムでは受けられません。
環境
今回の実験はGNS3
下の環境で実施しましたが、実物でも同様の現象を確認しています。
C74_1、C74_2
- OS : CentOS 7
- NIC
** eth0 : NAT、default gateway
** eth1 : 192.168.56.0/24
** eth2 : マルチキャストを送受信するNIC(アドレスは上図)
R1、R2
- Ciscoルータ
受けられる条件と受けられない条件
今のところわかっている「マルチキャストが受けられる条件」は2つです。
受けられる条件①
ルーティングしている時。C74_1
とC74_2
の間はpingが通る。
受けられる条件②
ルーティングもされていなくとも、net.ipv4.conf.eth2.rp_filter
が、2
の時。
受けられない条件
C74_1
とC74_2
ネットワーク・アドレスは別であり、ルーティングされておらず、net.ipv4.conf.eth2.rp_filter
、又は、net.ipv4.conf.all.rp_filter
が、0
又は1
の時は受けられません。
所感
この問題はreserve path filteringに関連しているところまではアタリがついています。
ただ、net.ipv4.conf.eth2.rp_filter
が0
(ソース確認無し)で受けられることを期待したのですが、0
では受けられず、2
でしか受けられません。なぜ0
で受けられないのか、ここが不可解です。
net.ipv4.conf.eth2.rp_filter
を0
にすることは、reverse path filteringを無効、すなわち、フィルタリング(パケット破棄)は無効にする、という意味ではないのでしょうか?
以上

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。