0x1b - ESCAPE
HTML PDF Postscript
 Mehr Multicast 
Computer Geschrieben von Beat Rubischon (Link) am Mittwoch, 19. Juli 2006, 19:11
aus dem leisevormichhinfluch dept.

Nach dem Einrichten von Multicast auf meinem Cisco packte mich die Wut und ich installierte Ganglia. Immerhin stehen zuhause zwei Linux Boxen und machen etwas Load.

Der gmond verteilt sein "Wissen" über den Zustand der Maschine per Multicast und so erfahren alle beteiligten Systeme vom aktuellen Zustand aller Nachbarn. Der gmetad fragt diese Informationen per TCP aus einem oder mehreren gmond ab und speichert sie in RRD Files. Daraus lässt sich ein nettes Webinterface füttern.

So weit so gut. Nur stand ich eben drei Stunden lang vor dem Problem, dass sich die beiden gmond nicht sahen. Erst kam tcpdump -i eth0 -v port 8649 zum Zug. Die Pakete gehen in die Welt hinaus, aber enden nicht beim Ziel. Halt! die TTL ist auf eins. Erst las ich das Konfigfile. Dann las ich die Doku. Dann googelte ich. Dann las ich die Source und fand die Option ttl im udp_send_channel Abschnitt. Also den einmal auf 64 schrauben.

Half nicht. Vielleicht macht Ganglia Müll? Google brachte mich auf ein nettes Testprogramm für Multicast. So einfach, dass selbst ich es verstehe :-) Copy & Paste in ein File, durch den gcc und starten. Nichts passiert.

Auf dem Businessnetz das Programm auf zwei Computern starten. Aha, es wünscht einem frohe Weihnachten und das bei über 30°. Nur der Cisco will es nicht forwarden.

Dann war ich dann so weit, auf der Routerkonsole debug ip macket zu tippen. Der Erfolg war sofort da:

Jul 19 18:41:38 rt-1 170: Jul 19 18:41:37.717 CEST: IP(0): s=212.25.17.162 (Ethe rnet0) d=239.2.11.72 id=0, ttl=63, prot=17, len=82(68), RPF lookup failed for source or RP

hmm... Viel interessantes ist mit dieser Fehlermeldung nicht zu finden. Ja, ein japanischer Blog. Hilft auch nicht. Nach mehr Googlen fand ich eine Anleitung zum Aufsetzen von Multicast direkt bei Cisco, die im einfachen Fall nicht PIM sparse mode sondern PIM dense mode benutzt. Eigentlich benutze ich ja sowieso kein PIN, sondern IGMP. Ob es trotzdem hilft?

Es half. Die beiden Ethernet Interfaces umstellen, nicht verstehen warum, Freude haben. Morgen kommt das Webinterface hinzu :-)


Klicken um Attachment herunterzuladen mtest.c 4KB (4494 bytes)


Permalink

Das Kleingedruckte: Der Besitzer der folgenden Kommentare ist wer immer sie eingeschickt hat. Wir sind in keiner Weise für sie verantwortlich.

  • mathias@weyland.ch Re: Mehr Multicast
    Geschrieben von Mathias Weyland (Link) am Donnerstag, 20. Juli 2006, 12:11

    Aehm ja. Mein Wissen ueber multicast ist relativ beschraenkt, ich hab mir das angeguckt als hier waehrend der Fussball-WM ploetzlich mehrere Leute TV gucken wollten. Aber ev. kann ich dir trotzdem ein bisschen weiterhelfen. Cisco kennt zwei Arten, um PIM zu machen, naemlich sparse und dense. sparse ist die richtig komplizierte Methode, waehrend dense ein bisschen holzhammermaessig ist. Bei nur einem Router sollte das allerdings eh egal sein. Das Problem ist, dass irgendwie sichergestellt werden muss, dass es keine routing-loops gibt. Im dense-Modus wird einfach mal drauflos geroutet, bis ein anderer Router mit 'nein danke' ablehnt. Der sparse-Modus hingegen macht einen sogenannten RPF-check (siehe Doku [1], ist besser als wenn ichs erklaere) und verwirft Pakete, welche den Test nicht bestehen. Das koennte bei dir der Fall sein. In der Doku hats auch commands wie man das abchecken kann und so.

    Liebe Gruesse
    Mathias

    [1] http://www.mbone.de/cisco1-2.html
    [2] http://www.netcraftsmen.net/welcher/papers/multicast02.html

    • beat@0x1b.ch Re: Mehr Multicast
      Geschrieben von Beat Rubischon (Link) am Donnerstag, 20. Juli 2006, 15:12

      Danke für die Hints! Werde ihnen nachgehen. Was mich dennoch fasziniert ist die Tatsache, dass ich PIM aktivieren muss, obwohl ich es gar nicht brauche. Cisco scheint die Routingfunktionalität und das Routingprotokoll derart eng miteinander verknüpft zu haben, dass das eine ohne das andere nicht tut.

      Unter Linux reicht für ein simples Setup der mrouted, welcher einfach auf beide Seiten IGMPv3 spricht und dem Kernel mitteilt, was Sache ist. Der pimd muss man nur dann installieren, wenn noch mehr Gateways vorhanden sind, mit denen die Routingtabellen ausgetauscht werden müssen.