This is the support site for Andrews & Arnold Ltd, a UK Internet provider. Information on these pages is generally for our customers but may be useful to others, enjoy!
Example for Debian GNU/Linux
Have extracted some parameters from pppd, this may not work correctly if there is more than one instance.
eval `tdbdump /var/run/pppd2.tdb | grep CALL_FILE | cut -d'"' -f2`
As a workaround to IPv4 not customarily allowing ifindex or interface name specification in addresses, (known as scope or "%", in IPv6) route to the multicast group on the device upon which PPPoE runs, aimed at the openreach modem:
echo ip route add 22.214.171.124 dev $DEVICE
Play stream. Caveats : It starts when the network receives an IGMP join and stops with IGMP leave.
Relaying the stream
It may happen that the computer hosting PPPoE is in an inconvenient location for watching and that other networked devices should receive copies of the stream. smcroute lets one forward multicast statically at first and can even work where programs do not understand IGMP or in some situations even multicast, which can be aided with DNAT rules and/or use of -j REDIRECT on targets
It may be possible later to have other programs listen for IGMP/MLD and then "manage" smcroute, due to a possible linux limitation of only allowing one userspace program manage kernel mrouting at a time, to have maximum flexibility in upstreams and downstreams including internal sources.
For testing and usage, smcroute can reflect the multicast to other attached networks. The smcroute 2.4.4 as found in Debian 11, would not configure the interface without an IP address on it, however the very latest smcroute allows 0.0.0.0 to be used to originate the IGMP3 joins, this needed the upgrade from ip_mreq to ip_mreqn in the smcroute code.
Additionally the sysctl rp_filter is disabled on $DEVICE and "all" to allow the incoming multicast without a matching outgoing route, also desirable. iptables and/or nftables would still be used to filter.
smcroute requires the source address, this was found with wireshark or tcpdump, and could be subject to change, int0 and ext0 are example devices to copy multicast packets to, these could be internal vlans on a home network:
smcroutectl add $DEVICE 126.96.36.199 188.8.131.52 int0 ext0 smcroutectl add $DEVICE 184.108.40.206 220.127.116.11 int0 ext0 smcroutectl add $DEVICE 18.104.22.168 22.214.171.124 int0 ext0
To actually start, substituting for the other addresses beginning 234. above for the other channels.
smcroutectl join $DEVICE 126.96.36.199
smcroutectl leave $DEVICE 188.8.131.52
see for forwarding statistics:
cat /proc/net/ip_mr_cache && ip mroute show
now ffmpeg, vlc or other client can be ran elsewhere on the internal network, if their ethernet interfaces do not have legacy ip addresses and the client does allow specification of an interface for IGMP, which is more usual with ipv6, a workaround is
ip route add 184.108.40.206/32 on these devices with a device aiming towards the PPPoE host system.
This had been tested on several linux bridges for ebtables purposes, each on 802.1q vlan tags, on a managed ethernet switch where the other untagged port for PPPoE is connected to the openreach modem.