Skip to content

access/amt: Support for IPv6

Nicolas Zunker requested to merge noobsauce101/vlc:amt_ipv6 into master

This PR aims to extend the existing access/amt module contained in amt.c, to support IPv6. Whereas previously only ipv4 multicast groups could be tunneled across ipv4 networks, using the AMT protocol, to a vlc client, now multicast streams of either address family can be tunneled across networks of either family (provided there is an amt relay).

To achieve this the amt module was extended to a) support the MLDv2 protocol messages and IPv6 headers required for tunneling IPv6 multicast group data, and b) use a union of ipv6 and ipv4 socket addresses, where there had previously been just one ipv4 socket address, so that cross family tunneling can be done as well.

This has been tested on fedora linux 36 and macOS against ffmpeg streams of mp3 audio files as well as mp4 videos, over mpegts, with amtrelayd relays "in the wild".

Testing:

There is a classical music stream being multicast to group ff3e::800a:a02 by 2600:14e0::6 , as well as group 232.10.10.2 by 23.212.185.4

To find an AMT relay for the stream you can use the driad.py script, located here: https://raw.githubusercontent.com/GrumpyOldTroll/libmcrx/master/driad.py

Then test ipv4 traffic in an ipv6 tunnel with:

vlc -vvv "amt://23.212.185.6@232.10.10.2:12000" --amt-native-timeout 3 --amt-relay $(python3 driad.py 23.212.185.6 -f 6)

v6 in v6 with:

vlc -vvv "amt://[2600:14e0::6]@[ff3e::800a:a02]:12000" --amt-native-timeout 3 --amt-relay $(python3 driad.py 2600:14e0::6 -f 6)

and v6 in v4 with:

vlc -vvv "amt://[2600:14e0::6]@[ff3e::800a:a02]:12000" --amt-native-timeout 3 --amt-relay $(python3 driad.py 2600:14e0::6 -f 4)

As a long time user of VLC it would be a pleasure to be able to help out in any way.

Edited by Nicolas Zunker

Merge request reports