Firstly, it has been widely discussed on these forums that VF TV uses 'multicast', but I'd like to elaborate on that slightly here...
IGMP or 'Internet Group Message Protocol' is basically a way for multicast clients to request or 'join' groups, or in our case, a way for the STB request the stream for a particular TV channel.
The STB sends 'join' requests to inform the upstream Vodafone devices that it would like to receive a particular stream; to get this working behind NAT, the Residential Gateway must be configured as an IGMP Proxy. (This is because your internal addressing is not-routable and 'hidden' to Vodafone)
This works in two parts:
1) The inside interface of the router must have IGMP enabled so it can send membership queries and receive join requests/membership reports.
In other words, it listens for and receives multicast requests from the STB.
2) The outside interface of the router is configured as an IGMP proxy interface so it can send join requests / membership reports on behalf of the clients sitting on the internal LAN.
In terms of the actual config, here's what I have configured:
# Enable multicast routing / igmp globally
# Internal interface settings
description Internal Network
ip address 192.168.20.0 255.255.255.0
# External interface settings
vlan-type dot1q vid 10
firewall packet-filter 3000 inbound
firewall aspf 1 outbound
nat outbound 2101
ip address dhcp-alloc
igmp proxying enable
acl number 3000
rule 20 permit igmp source 10.0.0.2 0 destination 126.96.36.199 0
rule 25 permit udp source 188.8.131.52 0
The 2 lines above allow IGMP membership queries from the upstream Vodafone router to my router, and allow the actual TV streams (each use a different UDP port) from the multicast source.
10.0.0.2 is the VF multicast querier, 184.108.40.206 is the 'all hosts' multicast group address, and 220.127.116.11 is the multicast source.
I had to use a sub-interface on a physical interface for the IGMP proxy, a VLAN interface would not work properly.
I believe the STB supports both IGMP version 2 and 3, but I have chosen to use version 3 in my setup.
IGMP fast leave is enabled so that when channel changes occur, the router leaves the multicast group immediately to prevent congestion from multiple streams stacking up from quick channel changes.
Hope this can be useful to someone else trying to get this working on their device! :)