Linux VRFとマルチキャストIP

Linux VRFとマルチキャストIP

Xubuntu 18.04でVRFを試しましたが、マルチキャストIPアドレスがありませんでした。使ってきたhttps://www.kernel.org/doc/Documentation/networking/vrf.txt指示として。

これは私の設定です。

sudo ip addr add 192.168.0.1/24 dev enp0s8
sudo ip li set dev enp0s8 up
sudo ip link add vrf-blue type vrf table 10
sudo ip link set dev vrf-blue up
sudo ip link set dev enp0s8 master vrf-blue

出力はip a次のとおりです。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 08:00:27:0c:19:91 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master vrf-blue state UP group default qlen 1000
    link/ether 08:00:27:5e:ed:76 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.1/24 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe5e:ed76/64 scope link 
       valid_lft forever preferred_lft forever
4: vrf-blue: <NOARP,MASTER,UP,LOWER_UP> mtu 65536 qdisc noqueue state UP group default qlen 1000
    link/ether 8a:f6:90:1c:c1:1e brd ff:ff:ff:ff:ff:ff

出力ip route show table 10

default via 192.168.0.2 dev enp0s8 
broadcast 192.168.0.0 dev enp0s8 proto kernel scope link src 192.168.0.1 
192.168.0.0/24 dev enp0s8 proto kernel scope link src 192.168.0.1 
local 192.168.0.1 dev enp0s8 proto kernel scope host src 192.168.0.1 
broadcast 192.168.0.255 dev enp0s8 proto kernel scope link src 192.168.0.1 

tcpdump -I vrf-blueローカルアドレスをpingするとインターフェイスとVRFマスターでICMPパケットが表示されますが、マルチキャストアドレスをtcpdump -I enp0s8pingするとVRFで実行されているキャプチャからのパケットのみが表示されます。いいえ相互作用。 VRFにマルチキャストフラグを設定してみましたが、ほとんど効果がありませんでした。

ping 224.0.0.1 -I vrf-blue
ping 192.168.0.2 -I vrf-blue

私が理解したように、マルチキャストピングはVRFに接続されているすべてのインターフェイスで送信する必要があります。誰でも提案できますか?

答え1

私はCumulus Networksフォーラムに同じ質問を投稿しました。 David Ahern(カーネルのほとんどのVRFコード作成者)は、次のように答えました。

IPv4マルチキャストパケットはVRFデバイスで受信できます。これはユーザーの意図しない副作用であり、変更することはできません。一般に、マルチキャストおよびリンクローカル(IPv6)は、VRFデバイスではなく実際のデバイスにバインドするように設計されています。これは、スレーブデバイスでパケット転送を行う必要があることを意味します。 VRFデバイスを介してマルチキャストアドレスにパケットを送信します。いいえスレーブデバイスごとに複製されます。

それとも、少なくともそれが働いたことを覚えています。

現在v4.17でこれを使用しており、マルチキャストIPを送信すると、ソケットはVRFの代わりにインターフェイスにバインドされます。

関連情報