PfSense 2.3 mit Telekom Entertain
-
Bei mir funktioniert der igmpproxy nicht in 2.3.
-
Wir werden uns wohl noch gedulden müssen. Der Bug ist heute in die Zielversion 2.3.2 geschoben worden. >:(
-
Sehr schade. Das dürfte darauf hindeuten, daß die 2.3.1 kurz bevorsteht. Außerdem scheint der Fix für #6099 eine größere Sache zu sein. Hoffen wir, daß das keine längere Hängepartie wird …
-
Bei mir läuft Entertain mit 2.3. Das Problem bezieht sich wohl auf die Vlan-fähigkeit des igmpproxy im Downstream, sonst hätte es noch nie laufen dürfen. Ich benutzt aber intern kein VLAN an der pfsense für Entertain. Habe ein Jetwayboard mit 4 Ethernetinterfacen.
-> nur bei dem jetzt kommenden Entertain 2.0 (ab2.5.16) geht es nicht mehr, da dort zwingend igmpv3 nötig ist -und im Downstream kann der igmpproxy das nicht. Warum auch immer.
-
Ja, das Problem bezieht sich auf VLANs. Mit 2.3 ist IPTV wohl dann möglich, wenn kein VLAN verwendet wird. Auf der LAN-Seite hat man das selbst in der Hand.
Aber der Bug bezieht sich auch auf die WAN-Seite! Da kommt es darauf an, wie IPTV angeliefert wird. Sofern die Trennung von VLAN8 und VLAN7 in der pfSense erfolgen muß, dann dürfte es schwierig sein. Wie ist bei Dir die WAN-Seite konfiguriert?
Welche Infos hast Du genau zu Entertain 2.0 / EntertainTV und igmpv3? Gibt es Quellen?
-
Naja, man könnte natürlich mit einem gemanageten Switch vor der pfSense die VLANs vom trunk nehmen und auf separaten Interfaces untagged in die pfSense befördern.
Im Zweifelsfall sind dazu auch "nur" 3 Ports eines größeren Switches nötig, die man durch das VLAN Un-/Tagging vom Rest abtrenntAber schön ist anders, da gebe ich schon vorsorglich jedem Recht, der sich beschweren will. ;D
-
Naja, man könnte natürlich mit einem gemanageten Switch vor der pfSense die VLANs vom trunk nehmen und auf separaten Interfaces untagged in die pfSense befördern.
Im Zweifelsfall sind dazu auch "nur" 3 Ports eines größeren Switches nötig, die man durch das VLAN Un-/Tagging vom Rest abtrenntAber schön ist anders, da gebe ich schon vorsorglich jedem Recht, der sich beschweren will. ;D
Nicht schön, aber müßte funktionieren. Das braucht zwei Ports in der pfSense. Die gleiche Lösung geht umgekehrt auch LAN-seitig, sofern man da wirklich mehrere VLANs braucht / haben will.
Ein anderer Workaround: Ich habe hier VDSL100, da kommt alles von der Telekom in einem VLAN, nicht mehr getrennt in 2 VLANs. Hier besteht auch die Möglichkeit die VLAN-Tags schon vom Modem entfernen zu lassen. Ein Vigor130 kann das z.B. und soweit ich weiß machen Speedports im Bridge-Modus das auch so.
-
Aber der Bug bezieht sich auch auf die WAN-Seite! Da kommt es darauf an, wie IPTV angeliefert wird. Sofern die Trennung von VLAN8 und VLAN7 in der pfSense erfolgen muß, dann dürfte es schwierig sein.
Der Bugreport wurde aktualisiert von Stefan. Der hat mir seine Conf geschickt. Er hat dort sehr wohl im WAN Bereich zwei VLANs aufgesetzt und bei ihm geht der igmpProxy.
Da er die gleiche Konfig hat wie ich, werde ich es wohl mit einem Update versuchen.
Wo steht, dass die Telekom igmp v3 beim Entertain 2.0 verwendet?
Das Thema ist doch alt:
http://www.schirmer-online.de/2009/06/t-home-entertain-multicast-und-igmp-v3/
Warum sollte es ab dem 2.5.2016 nicht mehr gehen, wenn doch der aktuellle igmpProxy funktioniert??? -
Der Bugreport wurde aktualisiert von Stefan. Der hat mir seine Conf geschickt. Er hat dort sehr wohl im WAN Bereich zwei VLANs aufgesetzt und bei ihm geht der igmpProxy.
Hab's gerade nachgelesen, das ist prima. Ihr habt da auf der LAN-Seite jedoch jeweils physische Interfaces konfiguriert. Es wäre jetzt noch interessant zu verifizieren, ob der Fehler auf der LAN-Seite überhaupt besteht. Wenn nicht, dann ist der ganze Bug obsolet.
Wo steht, dass die Telekom igmp v3 beim Entertain 2.0 verwendet?
Das Thema ist doch alt:
http://www.schirmer-online.de/2009/06/t-home-entertain-multicast-und-igmp-v3/
Warum sollte es ab dem 2.5.2016 nicht mehr gehen, wenn doch der aktuellle igmpProxy funktioniert???Der Schirmer-Blog dreht sich um Switches, das war hier gar nicht die Frage. Mir ging es um einen möglichen Unterschied zwischen Entertain (heute) einerseits und Entertain 2.0 / EntertainTV andererseits.
Klaus schreibt:
@kdk:
-> nur bei dem jetzt kommenden Entertain 2.0 (ab2.5.16) geht es nicht mehr, da dort zwingend igmpv3 nötig ist -und im Downstream kann der igmpproxy das nicht. Warum auch immer.
Dazu wollte ich gerne Quellen / Hintergründe, weil ich das nicht so ganz zusammenbringe.
Neu an IGMPv3 ist lediglich das source-specific multicasting. D.h. ein Empfänger kann Multicast Traffic von einer Multicast-Adresse anfordern, der auf einen bestimmten Absender eingeschränkt ist. Das ermöglicht wiederum, daß beliebige Hosts an beliebige Multicast-Adressen senden können, eben auch auf ein und dieselben Multicast-Adresse, ohne daß sich das stört, da die Empfänger den Empfang auf bestimmte Absender einschränken können.
Die Aussage, daß der IGMP-Proxy das im Downstream nicht kann, ist mir nicht klar, denn im Downstream sendet der Proxy doch wohl nur membership queries, und hier gibt es keinen Unterschied zwischen IGMPv2 und IGMPv3. Die neue Paketstruktur für join / leave und membership reports sind meinem Verständnis nach nur für den Upstream relevant.
Wenn Telekom also wirklich im Zuge von EntertainTV source-specific multicast einführen will, dann ist in der Tat IGMPv3 zwingende Voraussetzung, und dann sollte das auch der IGMPproxy beherrschen. Wenn der IGMPproxy das nicht kann, dann empfangen Clients unter einer angemeldeten Multicast-Adresse im besten Fall den Traffic aller Sender an diese Multicast-Adresse. Wenn ein heutiger Receiver bereits IGMPv3 beherrscht, dann müßte er - theoretisch - damit sogar klarkommen. Dafür wird das Netz potentiell mit nicht benötigtem Traffic belastet. Andererseits könnte das Telekomseitig für EntertainTV auch so implementiert werden, daß ein Join nur berücksichtigt wird, wenn es IGMPv3 ist. Wenn der IGMPproxy dann keinen IGMPv3 Join schicken kann, bleibt der Bildschirm schwarz. Das ist aber alles Spekulation, darum frage ich ja nach Quellen … ;)
-
Hallo,
die Thematik mit den Switches ist mir natürlich nicht entgangen ;)
Habe das nur als Referenz genommen, dass bereits damals die Telekom v3 verwendet haben soll. Nur darum ging es mir. -
Ja paßt. Deswegen ist das Thema bei den Switches auch hochrelevant. Ein IGMP-fühiger switch muß ja sinnvollerweise alle IGMP-Pakete berücksichtigen. Wenn ein MediaReceiver ein IGMP-Paket mit Kennung 0x22 (IGMPv3) versendet (selbst wenn gar kein source-specific multicast verwendet wird), dann klappt das IGMP-Snooping nur, wenn der Switch das eben auch analysieren kann.
-
Ich dachte eigentlich, dass es anders herum funktioniert: aus dem WAN kommen die igmp Pakete und der Switch sorgt dafür, dass die nur die Geräte bekommen, die igmp Pakete wollen. Per Snooping.
Vom LAN ins WAN war mir nicht bekannt -
IGMP ist "nur" das Steuerprotokoll (Internet Group Management Protocol). Da passiert ganz grob gesagt folgendes:
- Die Rechner im LAN melden sich per IGMP an Kanälen (Multicast-Gruppen) an oder ab (beim Ein / Um- oder Abschalten von Kanälen am MediaReceiver) und verteilen periodisch Mitteilungen, an welchen Multicast-Gruppen sie aktuell teilnehmen.
- Der Router leitet An- und Abmeldungen aus dem LAN ins WAN weiter, damit die Daten aus den entsprechenden Multicast-Gruppen überhaupt an den Router gesendet werden können oder damit die Sendung wieder eingestellt wird.
- Der Router fragt zusätzlich periodisch Teilnehmer ab, an welchen Kanälen sie angemeldet sind. (Eine Abmeldung könnte ja wegen eines Absturzes oder einer Unterbrechung der Netzwerkverbindung unterblieben sein).
- Der Router meldet auf Anfrage aus dem WAN die aktuell abonnierten Multicast-Gruppen. Dazu muß er hierfür eine Statistik mitführen.
Alle diese Router-Funktionen werden durch den IGMPproxy implementiert.
IGMP (IPv4) setzt in der Transportschicht direkt auf IP auf, es ist also auf derselben Ebene wie TCP und UDP. Bei IPv6 ist das Ganze Teil von ICMP.
Die Nutzdaten (Bild, Ton) kommen aus dem WAN an den Router, der sie per broadcast im LAN (in der Broadcast-Domäne) verteilt. Welches interne Subnetz an der pfSense als Ziel verwendet wird, bestimmt wiederum der IGMPproxy.
Aber diese Nutzdaten sind nicht Teil des IGMP!
Ein normaler (dummer) Switch muß alle Frames auf allen Ports ausgeben, da auf der Ethernet-Ebene (Ebene 2) keine Multicast-Logik möglich ist. Im Ethernet wird Multicast-Traffic als Broadcast verteilt, also an alle Teilnehmer. Die Teilnehmer müssen selbst auseinanderhalten, ob der Traffic für sie bestimmt ist.
Ein IGMP-fähiger Switch kann das IGMP-Protokoll mitlesen, und weiß daher über die membership reports, joins, und leaves, jederzeit, an welchen Ports Konsumenten welcher Multicast-Gruppen hängen. Entsprechenden Multicast-Traffic leitet er dann über genau diese Ports weiter, über die anderen nicht. IGMP-Pakete selbst werden durch den Switch nicht gefiltert.
-
Hi flo,
sorry dass ich mich solange nicht gemeldet habe, aber ich habe keine Emailbenachrichtung bekommen.
Das mit dem Entertain 2.0 welches ja seit 2.5. vermarktet, hab ich schon etwas länger.
Es ist so dass das "alte Entertain" im LAN auch mit igmpv2 geht, der igmpporxy spricht nach aussen igmpv3. Irgenwo steht auch dass der igmpproxy im Downstream (LAN-Seitig) nur igmpv2 sprechen kann. Weiß der Geier warum der/die das damals so programmiert haben, da er im Upstream auf die Kernelimplementierung von igmp zurückgreift.
Es gibt wohl viele patche, von denen ich mal einen unter freeBSD 10.3 amd64 kompilliert habe, aber wenn ich dann den igmpprxy auf meiner pfsense damit ersetze geht nix mehr, nach umschalten auf Multicast bleibt das Bild stehen. Laufen tut der igmpproxy aber (wird zumindest angezeigt!)
Das Problem mit dem VLAN hatte ich noch nie, das alte läuft ja. (VLAN8 wanseitig, im LAN kein VLAN auf der pfsense)
-
@kdk:
Das mit dem Entertain 2.0 welches ja seit 2.5. vermarktet, hab ich schon etwas länger.
Aha! Das erklärt, warum Du im April schon wissen konntest, daß Entertain 2.0 mit pfSense 2.3 nicht geht!
Das Problem dürfte sein, daß der Kanal nur einige Sekunden lang angezeigt wird. Ist das so?
Bist Du eigentlich Betatester? Oder ist das bei Dir einfach schon früher verfügbar gewesen?
@kdk:
Es ist so dass das "alte Entertain" im LAN auch mit igmpv2 geht, der igmpporxy spricht nach aussen igmpv3. Irgenwo steht auch dass der igmpproxy im Downstream (LAN-Seitig) nur igmpv2 sprechen kann. Weiß der Geier warum der/die das damals so programmiert haben, da er im Upstream auf die Kernelimplementierung von igmp zurückgreift.
Heißt das "da er" oder "dass er"? Wenn der igmpproxy im Upstream eine Kernelimplementierung verwendet, dann ist das doch eine plausible Erklärung dafür, daß das Verhalten zwischen Upstream und Downstream abweicht. Zudem erklärt es eine mögliche Veränderung des Verhaltens in verschiedenen FreeBSD-Versionen bei identischer Version des igmpproxy.
Ob das die Ursache für das Problem mit Entertain 2.0 ist, ist damit noch nicht aus erster Hand geklärt.
Wenn es das ist, dann kann ich mir nur eine einzige Hypothese vorstellen: Das source-specific multicasting wird tatsächlich benötigt, die Clients schicken auch entsprechende joins, der igmpproxy interpretiert den Anteil mit source-specific nicht und gibt den join im upstream nicht entsprechend weiter.
Vielleicht hast Du mal Zeit einen tcpdump laufen zu lassen? Dann könnten wir den IGMP traffic bei Entertain 2.0 sezieren. Benötigt wird der Traffic am besten auf allen Interfaces über ein paar Minuten, gefiltert auf IGMP.
@kdk:
Es gibt wohl viele patche, von denen ich mal einen unter freeBSD 10.3 amd64 kompilliert habe, aber wenn ich dann den igmpprxy auf meiner pfsense damit ersetze geht nix mehr, nach umschalten auf Multicast bleibt das Bild stehen. Laufen tut der igmpproxy aber (wird zumindest angezeigt!)
Bezieht sich auf pfSense 2.3 und Entertain 2.0? Wenn die o.a. Hypothese stimmt, dann kann das nur eine Version des igmpproxy beheben, die source specific multicast interpretiert. Wenn jemand das beim igmpproxy hinzugefügt hat, dann dürfte das in release notes sichtbar sein.
-
Vielleicht hast Du mal Zeit einen tcpdump laufen zu lassen? Dann könnten wir den IGMP traffic bei Entertain 2.0 sezieren. Benötigt wird der Traffic am besten auf allen Interfaces über ein paar Minuten, gefiltert auf IGMP.
Das geht auf der Shell, hier Beispiele.
Beispiel für WAN (VLAN und Interface anpassen):
tcpdump -v -e -n -i igb1 -w tmp1.pcap vlan 7 && igmp
Beispiel für LAN (kein VLAN, Interface anpassen):
tcpdump -v -e -n -i igb0 -w tmp1.pcap igmp
Mit -v bekommst Du die Anzahl der Pakete angezeigt, die tcpdump einsammelt.
-
Das Problem dürfte sein, daß der Kanal nur einige Sekunden lang angezeigt wird. Ist das so?
Das ist richtig. Der Unterscheid zum alten Entertain ist, dass dort das Bild einfach stehen geblieben ist wenn nicht auf Multicast umgeschaltet wird. Beim neuen ist es zumindest bei mir so, dass der Unicast weiterläuft, aber nur mir 1 Mbt/s, was natürlich nicht lange gut geht.
Das angefügte Bild zeigt wie ein so ein igmpv3 SSM ausehen muss. Dort ist zusätzlich zur Multicastadresse noch die Sourceadresse angegeben. (Ist nicht von Entertain!!)
Im igmpv2 gibt es das nicht, somit kann er trotz igmpv3 dies nicht nach aussen tragen.
Ich hab mir auch einen Speedport W723V zugelegt um zu prüfen dass es überhaupt geht. -> funktioniert
Ich werde nochmal ein paar traces machen und die dann anhängen. Ich weiß aber nicht wie schnell ich das machen kann.
PS: Es gibt jemandem, bei dem läuft das neue angeblich mit der pfsense (2.2.6), ist derjenige der den Vlan Bug eingestellt hat.
Hab mich mit ihm auch schon ausgetauscht und die Konfig verglichen, weiß aber nicht warum es bei ihm geht.
-
Das mit der Fortsetzung des Unicast finde ich keine schlechte Idee. Gut, die Qualität dürfte im Vergleich zu HD stark abfallen, aber immerhin.
Ich habe selbst mal IGMP traffic auf der LAN-Seite eingefangen. Interessantes Ergebnis: pfSense sendet periodisch membership queries (Typ 0x11) sowohl mit IGMPv2 als auch mit IGMPv3. Die Unterscheidung hier liegt nicht im Typ des Paketes. Bei IGMPv3 gibt es im Paket ein paar Felder mehr.
Das bedeutet, daß der igmpproxy auch auf LAN-Seite durchaus zumindest in Teilen IGMPv3-fähig ist. Ob er IGMPv3 membership reports und insb. source specific multicast interpretieren kann, kann ich nicht testen.
Die Antworten der hosts im LAN sind in meinem Fall ausnahmslos IGMPv2 (Typ 0x16), nicht IGMPv3 (wäre Typ 0x22). Ein MediaReceiver ist da übrigens aktuell nicht dabei, ich verwende mittlerweile TVheadend zum Fernsehen.
Wenn Du Traces erstellen kannst, können wir das weiter untersuchen:
- Was sendet ein Entertain 2.0 MediaReceiver?
- Was sendet ein igmpproxy als Ergebnis auf der WAN-Seite weiter?
Die Traces sind nicht eilig. Es ist ja leider nicht so, daß man daraus gleich eine Lösung ableiten könnte. :(
WAN-seitig werde ich aus dem traffic nicht ganz schlau. Der igmpproxy versendet join requests mit IGMPv3, membership reports aber mit IGMPv2. Warum? ??? Queries aus dem Netz kommen mit IGMPv3.
Auch da ist ein Trace mit Entertain 2.0 dann aufschlußreicher.
-
Der Unicast läuft ja nicht arg lange, dann meldet der Receiver Fehler.
Übrigens:
Es gibt 2 Programme die über rtsp "ausgestrahlt" werden: Joiz und Dog-TV, das ist dann unicast.
Was mir im System-Log auffällt:
igmpproxy 3033 RECV unk: 0x22/0x00 from 10.237.146.195 to 224.0.0.22
Warum meldet der igmpproxy RECV unkown?? Ist das seine Meldung vom Downstream Interface wenn er eine IGMPv3 Meldung erhält?? Würde es erklären.
Es hieß ja früher schon Entertain benötigt igmpv3. Ich habe mich immer gewindert warum das bei mir im LAN mit v2 funktionierte. Ist aber jetzt klar, nach aussen v3 gesprochen wird und für das "alte" Entertain SSM nicht benötigt wird.
Es kämpft übrigens auch AVM mit dem Problem, die sind aber für fast alle Modelle durch.
Die Speedport haben auch angepasste Firmewares bekommen - aud denen läuft ja auch Linux!!
-
@kdk:
Der Unicast läuft ja nicht arg lange, dann meldet der Receiver Fehler.
Ok, also bricht das im Zweifelsfall noch vor dem ersten Tor ab. ;)
Aber im Ernst, wozu diese Veränderung dann gut ist, erschließt sich mir nicht. Als Puffer, bis der Multicast läuft, gab es ja vorher schon ein paar Sekunden Unicast.
Es könnte natürlich sein, daß das dauerhaft gesendet wird, aber daß der Receiver damit nicht dauerhaft klarkommt. Nützt dann aber auch nichts.
@kdk:
Es gibt 2 Programme die über rtsp "ausgestrahlt" werden: Joiz und Dog-TV, das ist dann unicast.
Huch, gibt's dafür einen sinnvollen Grund???
@kdk:
Was mir im System-Log auffällt:
igmpproxy 3033 RECV unk: 0x22/0x00 from 10.237.146.195 to 224.0.0.22
Warum meldet der igmpproxy RECV unkown?? Ist das seine Meldung vom Downstream Interface wenn er eine IGMPv3 Meldung erhält?? Würde es erklären.
Jau, das ist ein nicht interpretiertbarer membership report aus dem LAN. (Kann gar nicht aus dem WAN kommen, da dort keine membership reports aus dem Netz empfangen werden, der igmpproxy versendet die da nur.)
Das dürfte von hier kommen ( pali / igmpproxy / master)
/** * Finds the textual name of the supplied IGMP request. */ char *igmpPacketKind(u_int type, u_int code) { static char unknown[20]; switch (type) { case IGMP_MEMBERSHIP_QUERY: return "Membership query "; case IGMP_V1_MEMBERSHIP_REPORT: return "V1 member report "; case IGMP_V2_MEMBERSHIP_REPORT: return "V2 member report "; case IGMP_V2_LEAVE_GROUP: return "Leave message "; default: sprintf(unknown, "unk: 0x%02x/0x%02x ", type, code); return unknown; } }
Hier fehlt noch IGMPv3. In dieser Version (pali / igmpproxy / pending) ist es dann drin:
/** * Finds the textual name of the supplied IGMP request. */ static const char *igmpPacketKind(unsigned int type, unsigned int code) { static char unknown[20]; switch (type) { case IGMP_MEMBERSHIP_QUERY: return "Membership query "; case IGMP_V1_MEMBERSHIP_REPORT: return "V1 member report "; case IGMP_V2_MEMBERSHIP_REPORT: return "V2 member report "; case IGMP_V3_MEMBERSHIP_REPORT: return "V3 member report "; case IGMP_V2_LEAVE_GROUP: return "Leave message "; default: sprintf(unknown, "unk: 0x%02x/0x%02x ", type, code); return unknown; } }
@kdk:
Es hieß ja früher schon Entertain benötigt igmpv3. Ich habe mich immer gewindert warum das bei mir im LAN mit v2 funktionierte. Ist aber jetzt klar, nach aussen v3 gesprochen wird und für das "alte" Entertain SSM nicht benötigt wird.
Es kämpft übrigens auch AVM mit dem Problem, die sind aber für fast alle Modelle durch.
Die Speedport haben auch angepasste Firmewares bekommen - aud denen läuft ja auch Linux!!
Wie lösen die das? Auch mit dem igmpproxy? Und passen die das selbst an oder bedienen die sich einer verfügbaren Version? Das müßte doch von AVM im source verfügbar sein, oder?