PfSense 2.3 mit Telekom Entertain
-
@kdk:
Kannst du auch rausfinden wie/warum der igmpproxy im Upstream auf denigmp im Kernel zugreift und im Downstream nicht??
Nee, sorry. Ich habe jetzt eine Weile durchgeschaut, aber ich finde im Code einfach nicht heraus, wo überhaupt IGMP-Nachrichten im Upstream versendet werden. :(
Da muß ich mir mal etwas mehr Zeit nehmen.
Geht doch. 8)
Der igmpproxy hat eine Routine zum Versenden von Queries: In igmc.c in der Funktion sendIgmp() wird buildIgmp() aufgerufen, hier wird struct igmp *igmp; von <netinet igmp.h="">referenziert. Das beinhaltet nicht die IGMPv3-Erweiterungen. Aus <netinet igmp.h="">(FreeBSD):
/* 52 * IGMPv1/v2 query and host report format. 53 */ 54 struct igmp { 55 u_char igmp_type; /* version & type of IGMP message */ 56 u_char igmp_code; /* subtype for routing msgs */ 57 u_short igmp_cksum; /* IP-style checksum */ 58 struct in_addr igmp_group; /* group address being reported */ 59 }; /* (zero for queries) */ 60 61 /* 62 * IGMP v3 query format. 63 */ 64 struct igmpv3 { 65 u_char igmp_type; /* version & type of IGMP message */ 66 u_char igmp_code; /* subtype for routing msgs */ 67 u_short igmp_cksum; /* IP-style checksum */ 68 struct in_addr igmp_group; /* group address being reported */ 69 /* (zero for queries) */ 70 u_char igmp_misc; /* reserved/suppress/robustness */ 71 u_char igmp_qqi; /* querier's query interval */ 72 u_short igmp_numsrc; /* number of sources */ 73 /*struct in_addr igmp_sources[1];*/ /* source addresses */ 74 };
sendIgmp() wird im igmpproxy ausschließlich verwendet von sendGeneralMembershipQuery() und sendGroupSpecificMemberQuery() in request.c. Soweit ich das verstehe, werden diese ausschließlich auf LAN-Seite versendet.
Die Nachrichten im Upstream generiert das OS selbst, wenn ein Interface über die routine setsockopt() zu einer Multicast-Gruppe hinzugefügt wird. Hier hängt es von der Konfiguration ab, welche IGMP-Version das OS verwendet.
Das Ganze ist schon aus dem aktuellen Branch. Die IGMPv3-Erweiterung ändert daran also nichts.
Meine Beobachtungen erklärt das noch nicht ganz: Ich sehe nämlich im Trace auch IGMPv3 membership queries. Diese dürften dann vom OS erzeugt worden sein.
Eine mögliche Verbesserung wäre, wenn der igmpproxy seine membership queries sowohl mit IGMPv3 als auch mit IGMPv2 erzeugt, wobei die IGMPv3-Version zuerst versendet werden sollte. Ein Host, der zwischen IGMPv3 und IGMPv2 auswählt, würde sich dann für IGMPv3 entscheiden. Noch einfacher wäre, einfach nur IGMPv3 membership query Pakete zu versenden. Diese haben den gleichen Typ, nur eben ein paar Felder mehr. Laut RFC müßten unbekannte Felder m.W. ignoriert werden. D.h. ein korrekt implementierter IGMPv2-Client würde in diesem Fall auch das IGMPv3 membership query Paket verstehen.</netinet></netinet>
-
@kdk:
Na dann werde ich wohl oder übel mal Debian mit dem mcproxy testen müssen.
https://mcproxy.realmv6.org/trac/
Da gibt es eine lesenswerte Bachelorarbeit dazu.
Kann das Ding denn source specific multicast? In der Arbeit steht das nämlich im Ausblick noch als Todo. Und ich habe keine Doku gefunden, wo das so richtig drinsteht.
Hilft das für pfSense, wenn es unter Linux läuft? Die Implementierung für OS X und FreeBSD stand in der Arbeit auch noch als offen drin …
-
Naja, für mich stellt sich das so dar, wenn jemand schreibt der proxy beherscht igmpv3, dann bitte ganz, SSM dazugehört.
-
Ich habe mal im source des mcproxy nach dem SSM geschaut und es sind zumindest die Routinen drin (Version 1.1.1 des mcproxy, im File mc_socket.cpp), die dem OS die entsprechenden sources als Filter übergeben. Sieht also so aus, als wäre das SSM implementiert!
In der Doku steht drin, daß das unter Linux läuft. Zumindest stellenweise sind in den includes auch linux-spezifische Dateien eingebunden. Ob sich das unter FreeBSD überhaupt bauen läßt, ist also unsicher. Da ich aber nicht gerade viel Routine in C und C++ habe, halte ich mich aus entsprechenden Versuchen raus. Das führt zu nichts. ;D
-
Hi flo,
danke dass du mal nachgeschaut hast. Werde jetzt mal ein Debian oder OpenWRT (da gibt es wohl Sourcen vom mcproxy) testen. Das wird aber etwas dauern, da ich mir zuerst passende Hardware mit mind. 2x NIC bestellen muss.
Hoffentlich nimmt sich jemand der sich mit Programmierung auskennt dem ganzen mal an, sonst wird die pfsense für mich untauglich aussortiert, obwohl sie das beste WebGUI von allen freien Firewalls hat. Die Linux basierten IPCOp und IPFire sind von der WebGUI lange nicht so gut.
-
Die neuen Multicast Adressen sind aus diesem Bereich (RFC4607):
![2016-05-07 23_53_13-IPv4 Multicast Address Space Registry.png](/public/imported_attachments/1/2016-05-07 23_53_13-IPv4 Multicast Address Space Registry.png)
![2016-05-07 23_53_13-IPv4 Multicast Address Space Registry.png_thumb](/public/imported_attachments/1/2016-05-07 23_53_13-IPv4 Multicast Address Space Registry.png_thumb) -
-
Hallo flo,
habe jetzt mal versucht den mcproxy auf Ubuntu zu kompilieren, das geht aber er läuft nicht, sondern bricht mit Fehler ab. IPCop und IPFire habe ich mir mal angeschaut, aber dort ein Package zu erstellen ist mir zu schwierig, da ich leider nicht programmieren kann.
Teeconnector hat jetzt alle Patches mal zusammengetragen und ich hoffe es wird da eine Lösung geben. Er selbst kann sich leider nicht weiter darum kümmern.
Ich für meinen Teil habe jetzt eine Überganslösung gefunden: ich habe eine Bridge zwischen Interface vlan8 und dem Mediareceiver Interface eingerichtet und den igmpporxy Dienst ausgeschaltet. Dann funktioniert es auch mit dem neuen Entertain und mann kann auch schön im Trace die igmpv3 Meldungen mit SSM sehen.
Das wird allerdings nur solange funnktionieren bis mein Anschluß auf BNG umgeschaltet wird. Dann läuft nämlich alles nur noch über vlan7. Und es ist mir ein bischen unsicher.
Btw: dass der Unicast weiterläuft wenn auf Multicast umgeschaltet werden soll ist anders als beim alten Entertain, wo dann der TV Stream einfach aufgehört hat. Aber es wird ja wie berichtet nur mit ca. 1MBit/s gesendet was im Endefekt zum Abbruch durch den Receiver führt.
Die Source die angegeben wird scheint zumindest bei mir immer die gleiche zu sein die den Multicast versendet.(87.141.215.251)Gruß,
Klaus -
Schade. Ich hoffe, daß sich jemand des igmpproxy mal annimmt für SSM.
@kdk:
Ich für meinen Teil habe jetzt eine Überganslösung gefunden: ich habe eine Bridge zwischen Interface vlan8 und dem Mediareceiver Interface eingerichtet und den igmpporxy Dienst ausgeschaltet. Dann funktioniert es auch mit dem neuen Entertain und mann kann auch schön im Trace die igmpv3 Meldungen mit SSM sehen.
Das wird allerdings nur solange funnktionieren bis mein Anschluß auf BNG umgeschaltet wird. Dann läuft nämlich alles nur noch über vlan7. Und es ist mir ein bischen unsicher.
Sehe ich auch so. Und diese Umstellung hast Du ja nicht in der Hand. Ich bin auf BNG schon umgestellt worden mit meiner Migration auf VDSL100. Hat mir nur leider keiner vorher gesagt. Plötzlich kein IPTV auf VLAN8 mehr. :o Hat ein bißchen gebraucht, bis ich einen an der Strippe hatte, der mir gesagt hat, daß das Absicht war und wie es richtig funktioniert. Wenn man das dann weiß, kein Problem. :)
@kdk:
Btw: dass der Unicast weiterläuft wenn auf Multicast umgeschaltet werden soll ist anders als beim alten Entertain, wo dann der TV Stream einfach aufgehört hat.
Ich habe da mal recherchiert. Offenbar gibt es mit dem neuen Entertain ("EntertainTV") tatsächlich diverse Sender, die überhaupt nur per Unicast ausgestrahlt werden, also gar nicht per Multicast verfügbar sind. Das sind wohl wenig frequentierte Sender, aber dennoch fand ich das überraschend. Für Konsumenten ist das soweit wurscht, wenn man nicht gerade mehrere Empfänger im eigenen Netzwerk hat.
-flo-
-
Hallo Flo,
nach der Umstellung bei Dir auf BNG: wie "wählst" die pfsense Box sich dann ein, wenn es nicht PPPoE ist? Welche Config hast Du dann? Keine VLANs mehr? igmpproxy auf das eine Netz?
Wie stellt man diese Umstellung fest?Gruß
Matthias -
Meine pfSense wählt sich über ein Vigor 130 mit PPPoE ein. Internet und Entertain werden über VLAN7 angeliefert, also hat der igmpproxy jetzt das WAN als upstream.
Ich habe das WAN-Interface auf VLAN7 konfiguriert, einfach weil ich das schon so hatte. Das IPTV-Interface mit VLAN8 ist weggefallen. Einfacher wäre es ansonsten, wenn das Modem das VLAN-Tag gleich entfernen würde. Wenn es nur ein VLAN gibt, ist das ja trivial. Damit könnte man anstelle des Vigor130 sogar einen Speedport im Bridgemode verwenden.
PPPoE habe ich einfach konfiguriert gelassen. An einem BNG-Anschluß müßte das m.W. auch ohne PPPoE gehen. Ob das bei mir klappen würde, habe ich nie probiert. (Mir hat ja keiner gesagt, was sich da ändert … >:( ) Telekom schaltet PPPoE wohl auf Antrag im Kundencenter ein, wenn man das will. Aber wenn ich die Roadmap der Telekom richtig verstehe, ist am Ende (Stichwort TeraStream) der Rückbau der gesamten PPPoE-Technik das Ziel.
Wie man die Umstellung feststellt? Für Entertain-User ganz einfach: Entertain kommt im VLAN7, nicht im VLAN8. Ansonsten könnte man probieren, ob man ohne PPPoE Verbindung kriegt.
-
PPPoE habe ich einfach konfiguriert gelassen. An einem BNG-Anschluß müßte das m.W. auch ohne PPPoE gehen. Ob das bei mir klappen würde, habe ich nie probiert.
Dazu müsste Dein Modem über TR-069 von der Telekom provisioniert werden. Dazu fehlen ihm aber meist die Daten.
Ich habe ein ZyXEL VMG1312, das ich nicht über die Telekom bezogen habe. Dort fehlen die Angaben zum ACS Server und finden konnte ich die Daten auch nirgendwo.Telekom schaltet PPPoE wohl auf Antrag im Kundencenter ein, wenn man das will.
unter https://kundencenter.telekom.de kann mal das selbst machen:
Automatischer Internet-Zugang
Mit dem automatischen Internet-Zugang müssen ihre Zugangsdaten nicht mehr in ihrem Router (z.B. Telekom Speedport) gespeichert werden. Der Aufbau der Internet-Verbindung erfolgt automatisch. -
Hast Du dazu eine Quelle?
https://www.telekom.com/webinar-All-IP
Das ist aber schon etwas älter …
-
Ich habe mal im source des mcproxy nach dem SSM geschaut und es sind zumindest die Routinen drin (Version 1.1.1 des mcproxy, im File mc_socket.cpp), die dem OS die entsprechenden sources als Filter übergeben. Sieht also so aus, als wäre das SSM implementiert!
In der Doku steht drin, daß das unter Linux läuft. Zumindest stellenweise sind in den includes auch linux-spezifische Dateien eingebunden. Ob sich das unter FreeBSD überhaupt bauen läßt, ist also unsicher. Da ich aber nicht gerade viel Routine in C und C++ habe, halte ich mich aus entsprechenden Versuchen raus. Das führt zu nichts. ;D
Die Doku hatte recht. Allerdings habe ich das ganze auf FreeBSD portiert bzw. kompilierfähig gemacht:
https://github.com/ViToni/mcproxy/tree/portingNehme gerne Feedback dazu ;)
Momentan sind meine Entwicklungsumgebung (10-3) und pfSense (10-1) nicht kompatibel, daher kann ich nicht live testen …
-
Ja da ist doch ein zünftiger Applaus fällig!!
-
:D ;D 8)
zu Entertain 2.0: ich hab nur einen 16MBit Anschluss, aber ich finde die Bildqualität richtig super, ebenso das unkomplizierte Umscvhalten zwischen SD und HD. Nur die Bedienung ist ein wenig gewöhnungsbedürftig.
-
Würde deinen Port des mcproxy gerne testen, hast du eine Anleitung zur Installation?
Leider bin ich auf FreeBSD nicht zu Hause sondern will eigentlich nur eine Pfsense am zukünftigen FTTH Anschluss betreiben. Aktuell unter VDSL 50 hab ich massive Probleme über igmpproxy Multicast an meine 4 Telekom Receiver zu verteilen. Sobald mehr als einer aktiv ist, kommt es zu sporadischen Hängern . -
Frage am Rande:
Ist Entertain bereits am Hybrid-Anschluss verfügbar? Die Telekom-Seite gibt da etwas positives aus, allerdings neigt die Webseite auch manchmal zu Fehlinformationen. -
Nehme gerne Feedback dazu ;)
Hallo, habe mir heute Zeit genommen und eine Entwicklungsumgebung unter FreeBSD 10.3 aufgesetzt, deinen Port heruntergeladen und
kompiliert. Soweit in Ordnung.Das ganze dann auf einer pfSense 2.3.1 konfiguriert und ausgeführt. War ein kurzes Vergnügen ;)
[2.3.1-RELEASE][root@router]/root: ./mcproxy -d
ERROR: failed to add VIF! Error: Can't assign requested address errno: 49
ERROR: failed to add VIF! Error: Can't assign requested address errno: 49
ERROR: failed to set source filter! Error: Invalid argument errno: 22
ERROR: failed to subscribe multicast router groups
Abort (core dumped)Anbei meine Konfigurationsdatei:
######################################
##– mcproxy configuration script --##
######################################
protocol IGMPv3; #IPv4pinstance myProxy: igb0_vlan8 ==> igb1;
und meine Interfacekonfiguration
igb0_vlan8: flags=8843 <up,broadcast,running,simplex,multicast>metric 0 mtu 1500
options=3 <rxcsum,txcsum>ether 0c:c4:7a:6d:02:24
inet6 fe80::ec4:7aff:fe6d:224%igb0_vlan8 prefixlen 64 scopeid 0x9
inet 10.239.22.18 netmask 0xffffe000 broadcast 10.239.31.255
nd6 options=21 <performnud,auto_linklocal>media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vlan: 8 vlanpcp: 5 parent interface: igb0igb1: flags=8943 <up,broadcast,running,promisc,simplex,multicast>metric 0 mtu 1500
options=400bb <rxcsum,txcsum,vlan_mtu,vlan_hwtagging,jumbo_mtu,vlan_hwcsum,vlan_hwtso>ether 0c:c4:7a:6d:02:25
inet 192.168.1.254 netmask 0xffffff00 broadcast 192.168.1.255
inet6 2003:7a:44c:3300:ec4:7aff:fe6d:225 prefixlen 64
inet6 fe80::1:1%igb1 prefixlen 64 scopeid 0x2
nd6 options=21 <performnud,auto_linklocal>media: Ethernet autoselect (1000baseT <full-duplex>)
status: activeIrgend eine Idee?</full-duplex></performnud,auto_linklocal></rxcsum,txcsum,vlan_mtu,vlan_hwtagging,jumbo_mtu,vlan_hwcsum,vlan_hwtso></up,broadcast,running,promisc,simplex,multicast></full-duplex></performnud,auto_linklocal></rxcsum,txcsum></up,broadcast,running,simplex,multicast>
-
Hi, ich sehe mit mcproxy dasselbe Verhalten, ich würde vermuten, das
die Interface-Erkennung nicht sauber funktioniert - dies Problem ist ja auch im igmpproxy (Bug 6099) vorhanden.
Ggf. müssten man die Codestrecke für die Erkennung aus dem gepatchten igmpproxy in den mcproxy überführen - wobei dann sicherlich allerlei anderes kaputt geht :D