Wowza Community

PushPublishRTMP doesn't work with IPv6

Hi

I’ve managed to set up WSE4.0.5 so that it picks up a stream from our Axis Q1755 camera, and then sends it to Youtube Live.

This is done using the instructions on https://www.wowza.com/docs/how-to-stream-to-youtube.

This works great when the box has dual stack addresses (IPv4 + IPv6).

The production box is meant to be IPv6 only, which seems to ALMOST succeed.

Various bits can do IPv6, for instance by using the -Djava.net.preferIPv4Stack=false statement.

Unfortunately there is one thing that is failing.

First, what does work:

  • VM is IPv6-only (Ubuntu 14.04)

  • /usr/bin/WowzaStreamingEngined is running fine on IPv6

  • /usr/bin/WowzaStreamingEngineManagerd is running fine on IPv6

  • By using an HTTP proxy the license manager is also kept happy (it requests URLs with literal IPv4 addresses, but that’s another issue)

  • The Axis camera stream is being picked up OK (i.e. I can watch it fine using the “Test Players”)

    The thing that is now failing is the pushing to Youtube:

    WARN    server  comment 2014-08-01      17:32:45        -       -       -       -       -       1050.558        -       -       -       -       -       -
           -       -       PushPublishRTMP.Reconnector[rtmp://a.rtmp.youtube.com:1935/live2/blahblah]: TROUBLE CONNECTING!! Retrying in 60 seconds. app:live/_definst_
    

    Since everything else seems to work just fine regardless of IPv4/IPv6, I wonder whether this is a bug in the PushPublic module?

    I realize that this is a corner case :cool:… but I really would like to get this to work…

    Anyone got an idea?

    Many thanks :slight_smile:

Update :slight_smile:

I’ve seen some bugs in the past with IPv6 only applications where the IPv4 address was used, despite that fact that the host name resolved to both IPv4 and IPv6. This obviously is an issue when there is no IPv4 connectivity.

The hostnames a.rtmp.youtube.com and b.rtmp.youtube.com both have A and AAAA records:

visser@cajones:~$ host a.rtmp.youtube.com
a.rtmp.youtube.com is an alias for rtmp.l.google.com.
rtmp.l.google.com has address 74.125.136.150
rtmp.l.google.com has IPv6 address 2a00:1450:4013:c01::96
visser@cajones:~$ host b.rtmp.youtube.com
b.rtmp.youtube.com is an alias for nonxt1.l.google.com.
nonxt1.l.google.com has address 173.194.137.230
nonxt1.l.google.com has address 173.194.137.231
nonxt1.l.google.com has address 173.194.137.232
nonxt1.l.google.com has address 173.194.137.233
nonxt1.l.google.com has address 173.194.137.234
nonxt1.l.google.com has address 173.194.137.235
nonxt1.l.google.com has address 173.194.137.236
nonxt1.l.google.com has address 173.194.137.237
nonxt1.l.google.com has address 173.194.137.238
nonxt1.l.google.com has address 173.194.137.239
nonxt1.l.google.com has address 173.194.137.240
nonxt1.l.google.com has address 173.194.137.241
nonxt1.l.google.com has address 173.194.137.242
nonxt1.l.google.com has address 173.194.137.243
nonxt1.l.google.com has address 173.194.137.244
nonxt1.l.google.com has address 173.194.137.245
nonxt1.l.google.com has address 173.194.137.246
nonxt1.l.google.com has address 173.194.137.247
nonxt1.l.google.com has address 173.194.137.248
nonxt1.l.google.com has address 173.194.137.249
nonxt1.l.google.com has IPv6 address 2a00:1450:4009:34::10

I just manually created two DNS RRs in my own zone which only list AAAA records:

visser@cajones:~$ host rtmp-a.terena.org
rtmp-a.terena.org has IPv6 address 2a00:1450:4013:c01::96
visser@cajones:~$ host rtmp-b.terena.org
rtmp-b.terena.org has IPv6 address 2a00:1450:4009:4a::7

If I use these hostnames in conf/PushPublishMap.txt then the live stream is successfully delivered to Youtube :slight_smile:

http://www.youtube.com/watch?v=Sm8m4WeeJHg

Could it be that the Push Publishing code isn’t picking up the -Djava.net.preferIPv4Stack=false stuff?

In any case, it should be considered a bug.

Anyway, my system is running now without IPv4 addresses.

Could it be that the Push Publishing code isn’t picking up the -Djava.net.preferIPv4Stack=false stuff?

Hi,

I tested this and did not find any issue with Wowza Push Publish and IPv6. My test was local: rtmp pushed app to app on same instance. I set IPv6 to false in Wowza, and I disabled IPv6 in Windows 7. I used IPv6 address in Push Publish configuration, and played back from the destination app over IPv6.

This may have been a network, connectivity issue of some kind between you and the youtube destination.

Richard

Problem solved. I needed to add preferIPv6Addresses to Tune.xml as well:

                 <VMOption>-Djava.net.preferIPv4Stack=false</VMOption>
                 <VMOption>-Djava.net.preferIPv6Addresses=true</VMOption>

After this the stream was successfully being delivered to Youtube’s rtmp hosts:

visser@coppi:~$ netstat -W | grep 1935
tcp6       0      0 coppi.terena.org:40615  2a00:1450:4007:8::10:1935 ESTABLISHED
tcp6       0      0 coppi.terena.org:38680  2a00:1450:4013:c01::96:1935 ESTABLISHED

My Wowza machine is humming along nicely without IPv4 connectivity.

Thanks to Matthew Young for helping me out here :slight_smile:

Hi,

Thanks for reporting this. Certainly seems like an issue, and we should be able to fix this in a near future release.

Best regards,

Daren

Thank you for updating this thread! Glad it worked out.

Thanks,

Matt