Benoit Panizzon
2017-Nov-25 19:38 UTC
[asterisk-users] pjsip multiple transports for one endpoint (dual stack) ipv6
Hi List I have stumbled over the next question google didn't answer. I have a dual-stack environment, ipv6 and ipv4. With chan_sip asterisk was listening on ipv6 and ipv4 simultaneously. I did try to define to have pjsip listen to the ipv6 address including ipv6 mapped ipv4 addresses: [transport-udp] type=transport protocol=udp bind=[::]:5061 Google told me, pjsip is not able to parse the ipv6 mapped ipv6 address, you have to listen to ipv4 separately. So next try: [transport-udp] type=transport protocol=udp bind=[::]:5061 bind=0.0.0.0:5061 Well, this also does not work, only one address family is being bound. [transport-udp] type=transport protocol=udp bind=0.0.0.0:5061 [transport-udp6] type=transport protocol=udp bind=[::]:5061 [phone] type=endpoint transport=transport-udp transport=transport-udp6 Well, this sort of works, the phone is able to register, but qualify does not work, as it seems to always try to use the 2nd transport definition. So how the heck do you define a endpoint listening to both ip versions if you don't know if your roaming phone is going to connect from a ipv6 enable VoLTE Network without NAT problems, or is going to use the old legacy ipv4 protocol? :-) -Beno?t-
Joshua Colp
2017-Nov-25 19:41 UTC
[asterisk-users] pjsip multiple transports for one endpoint (dual stack) ipv6
On Sat, Nov 25, 2017, at 03:38 PM, Benoit Panizzon wrote:> Hi List > > I have stumbled over the next question google didn't answer. > > I have a dual-stack environment, ipv6 and ipv4. > > With chan_sip asterisk was listening on ipv6 and ipv4 simultaneously. > > I did try to define to have pjsip listen to the ipv6 address including > ipv6 mapped ipv4 addresses: > > [transport-udp] > type=transport > protocol=udp > bind=[::]:5061 > > Google told me, pjsip is not able to parse the ipv6 mapped ipv6 > address, you have to listen to ipv4 separately. > > So next try: > > [transport-udp] > type=transport > protocol=udp > bind=[::]:5061 > bind=0.0.0.0:5061 > > Well, this also does not work, only one address family is being bound. > > [transport-udp] > type=transport > protocol=udp > bind=0.0.0.0:5061 > > [transport-udp6] > type=transport > protocol=udp > bind=[::]:5061 > > [phone] > type=endpoint > transport=transport-udp > transport=transport-udp6 > > Well, this sort of works, the phone is able to register, but qualify > does not work, as it seems to always try to use the 2nd transport > definition. > > So how the heck do you define a endpoint listening to both ip versions > if you don't know if your roaming phone is going to connect from a ipv6 > enable VoLTE Network without NAT problems, or is going to use the old > legacy ipv4 protocol? :-)Don't specify a transport on the endpoint. Transport selection will automatically choose the right one in this scenario. The "transport" option only allows a single transport and it is for forcing a transport to always be used regardless. -- Joshua Colp Digium, Inc. | Senior Software Developer 445 Jan Davis Drive NW - Huntsville, AL 35806 - US Check us out at: www.digium.com & www.asterisk.org