Multicast Join auf Linux und IGMPv3

8

Wir sind auf ein heikles Problem gestoßen. Wir schreiben ein C ++ - Programm, das Multicast-UDP-Datenverkehr empfängt. Wir sind dabei, unsere Anwendungen in eine andere Netzwerkumgebung zu verschieben, und unser Betriebsteam hat darum gebeten, dass wir IGMPv3-Mitgliedschaftsankündigungen von unseren Anwendungen unterstützen. Erste Untersuchungen zeigen, dass Linux 2.6 Kernel IGMPv3 unterstützen. Daher bin ich verwirrt, wenn wir tcpdump ausführen, sehen wir die folgenden Ausgabe-Traces:

%Vor%

Nach meinem Verständnis könnte man den Kernel zwingen, eine niedrigere Version von IGMP zu verwenden, indem man einen Wert ungleich Null in der Datei /proc/sys/net/ipv4/conf/eth1.22/force_igmp_version angibt; Ich habe jedoch bestätigt, dass die Datei eine Nullwertkonfiguration hat.

Unsere Anwendung verwendet den folgenden Code, um der Multicast-Gruppe beizutreten:

%Vor%

Gibt es etwas Zusätzliches, das wir in das Quellprogramm aufnehmen müssen, um IGMPv3 zu erzwingen?

    
terson 22.10.2008, 19:50
quelle

1 Antwort

12

Ein paar Dinge, die Sie beachten sollten.

Der erste ist, dass (wie ich es verstehe) das Setzen von /proc/sys/net/ipv4/conf/eth1.22/force_igmp_version auf 0 nicht "v3 verwenden" bedeutet, sondern "auto". Ich glaube, dass Sie es auf 3 setzen können, um es zu zwingen, igmp v3 zu verwenden.

Die andere Sache, die Sie beachten sollten, ist, dass das Verhalten des igmp-Stacks von der Umgebung bestimmt wird, in der es sich befindet. Wenn Ihre Linux-Box Mitgliedschaftsanfragen von einem Upstream-IGMP-Router empfängt, dann glaube ich dass das Standard-Linux-Verhalten (wie von der igmp v3 rfc vorgeschrieben) darin besteht, nur igmp v2 für Berichte zu verwenden.

Wie ich es verstehe, wenn Sie /proc/sys/net/ipv4/conf/eth1.22/force_igmp_version auf 0 setzen, verwendet es dieses Verhalten.

    
Andrew Edgecombe 23.10.2008, 00:02
quelle

Tags und Links