[asterisk-bugs] [JIRA] (ASTERISK-30006) Update bundled to 2.12 release stops UDP endpoints

Ross Beer (JIRA) noreply at issues.asterisk.org
Sat Apr 2 11:33:57 CDT 2022


    [ https://issues.asterisk.org/jira/browse/ASTERISK-30006?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=258696#comment-258696 ] 

Ross Beer edited comment on ASTERISK-30006 at 4/2/22 11:32 AM:
---------------------------------------------------------------

I started asterisk with the config above with 'async_operations=500' which does not appear to process packets, I then commented out 'async_operations=500' and did a 'core restart now'. After the restart asterisk started processing packets.

The config above is exactly how the transport is configured without any other options. There are other transports for TCP and TLS configured using the same options:

{noformat}
[transport-tcp]
type = transport
protocol = tcp
bind=0.0.0.0
tos=cs3
async_operations=50
symmetric_transport=yes

[transport-tls]
type=transport
protocol=tls
bind=0.0.0.0:5061
tos=cs3
cert_file=/etc/asterisk/keys/asterisk.pem
priv_key_file=/etc/asterisk/keys/asterisk.key
ca_list_file=/etc/asterisk/keys/ca.crt
symmetric_transport=yes
async_operations=50
method=tlsv1_2
cipher=AES256-GCM-SHA384,AES256-SHA256,AES128-GCM-SHA256,AES128-SHA256,AES128-SHA
{noformat}

If I set 'async_operations=1' on the UDP transport, it processes SIP traffic correctly. 

The TCP/TLS transports continue to process traffic with this option enabled, all be it the default value.

Asterisk shows the default to be 1 for async_operations without the value set:

{noformat}
hpbx05*CLI> pjsip show transport transport-udp

Transport:  <TransportId........>  <Type>  <cos>  <tos>  <BindAddress....................>
==========================================================================================

Transport:  transport-udp             udp      0     96  0.0.0.0:5060

 ParameterName              : ParameterValue
 ===========================================
 allow_reload               : false
 async_operations           : 1
 bind                       : 0.0.0.0:5060
 ca_list_file               :
 ca_list_path               :
 cert_file                  :
 cipher                     :
 cos                        : 0
 domain                     :
 external_media_address     :
 external_signaling_address :
 external_signaling_port    : 0
 local_net                  :
 method                     : unspecified
 password                   :
 priv_key_file              :
 protocol                   : udp
 require_client_cert        : No
 symmetric_transport        : true
 tos                        : 96
 verify_client              : No
 verify_server              : No
 websocket_write_timeout    : 100
{noformat}

Asterisk is showing the correct value when it is set in the config:

{noformat}
pjsip show transport transport-udp

Transport:  <TransportId........>  <Type>  <cos>  <tos>  <BindAddress....................>
==========================================================================================

Transport:  transport-udp             udp      0     96  0.0.0.0:5060

 ParameterName              : ParameterValue
 ===========================================
 allow_reload               : false
 async_operations           : 500
 bind                       : 0.0.0.0:5060
 ca_list_file               :
 ca_list_path               :
 cert_file                  :
 cipher                     :
 cos                        : 0
 domain                     :
 external_media_address     :
 external_signaling_address :
 external_signaling_port    : 0
 local_net                  :
 method                     : unspecified
 password                   :
 priv_key_file              :
 protocol                   : udp
 require_client_cert        : No
 symmetric_transport        : true
 tos                        : 96
 verify_client              : No
 verify_server              : No
 websocket_write_timeout    : 100
{noformat}


was (Author: rossbeer):
I started asterisk with the config above with 'async_operations=500' which does not appear to process packets, I then commented out 'async_operations=500' and did a 'core restart now'. After the restart asterisk started processing packets.

The config above is exactly how the transport is configured without any other options. There are other transports for TCP and TLS configured using the same options:

{noformat}
[transport-tcp]
type = transport
protocol = tcp
bind=0.0.0.0
tos=cs3
async_operations=50
symmetric_transport=yes

[transport-tls]
type=transport
protocol=tls
bind=0.0.0.0:5061
tos=cs3
cert_file=/etc/asterisk/keys/asterisk.pem
priv_key_file=/etc/asterisk/keys/asterisk.key
ca_list_file=/etc/asterisk/keys/ca.crt
symmetric_transport=yes
async_operations=50
method=tlsv1_2
cipher=AES256-GCM-SHA384,AES256-SHA256,AES128-GCM-SHA256,AES128-SHA256,AES128-SHA
{noformat}

If I set 'async_operations=50' on the UDP transport, it also stops processing. Therefore it doesn't look like the number makes a difference only that the option is defined.

The TCP/TLS transports continue to process traffic with this option enabled, all be it the default value.

Asterisk shows the default to be 1 for async_operations without the value set:

{noformat}
hpbx05*CLI> pjsip show transport transport-udp

Transport:  <TransportId........>  <Type>  <cos>  <tos>  <BindAddress....................>
==========================================================================================

Transport:  transport-udp             udp      0     96  0.0.0.0:5060

 ParameterName              : ParameterValue
 ===========================================
 allow_reload               : false
 async_operations           : 1
 bind                       : 0.0.0.0:5060
 ca_list_file               :
 ca_list_path               :
 cert_file                  :
 cipher                     :
 cos                        : 0
 domain                     :
 external_media_address     :
 external_signaling_address :
 external_signaling_port    : 0
 local_net                  :
 method                     : unspecified
 password                   :
 priv_key_file              :
 protocol                   : udp
 require_client_cert        : No
 symmetric_transport        : true
 tos                        : 96
 verify_client              : No
 verify_server              : No
 websocket_write_timeout    : 100
{noformat}

Asterisk is showing the correct value when it is set in the config:

{noformat}
pjsip show transport transport-udp

Transport:  <TransportId........>  <Type>  <cos>  <tos>  <BindAddress....................>
==========================================================================================

Transport:  transport-udp             udp      0     96  0.0.0.0:5060

 ParameterName              : ParameterValue
 ===========================================
 allow_reload               : false
 async_operations           : 500
 bind                       : 0.0.0.0:5060
 ca_list_file               :
 ca_list_path               :
 cert_file                  :
 cipher                     :
 cos                        : 0
 domain                     :
 external_media_address     :
 external_signaling_address :
 external_signaling_port    : 0
 local_net                  :
 method                     : unspecified
 password                   :
 priv_key_file              :
 protocol                   : udp
 require_client_cert        : No
 symmetric_transport        : true
 tos                        : 96
 verify_client              : No
 verify_server              : No
 websocket_write_timeout    : 100
{noformat}

> Update bundled to 2.12 release stops UDP endpoints
> --------------------------------------------------
>
>                 Key: ASTERISK-30006
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-30006
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Channels/chan_pjsip
>    Affects Versions: GIT, 18.11.0
>         Environment: CentOS
>            Reporter: Ross Beer
>            Assignee: Unassigned
>         Attachments: Ast_No_Reply.PNG
>
>
> After pulling the latest GIT version for 16/18 after reloading UDP endpoints can no longer register, however TLS/TCP can.
> When rolling back the patch https://gerrit.asterisk.org/c/asterisk/+/18075 everything then works again as expected.
> There do not appear to be any errors in the logs when loading, only that qualified peers are unreachable.
> All UDP endpoints are affected, those that register or those that have a fixed AOR or are identified by IP.
> It looks like the UDP transport isn't listening any longer. This transport is defined as below:
> {noformat}
> [transport-udp]
> type = transport
> protocol = udp
> bind=0.0.0.0
> tos=cs3
> async_operations=500
> symmetric_transport=yes
> {noformat}
> The transport is showing as configured:
> {noformat}
> pjsip show transports
> Transport:  <TransportId........>  <Type>  <cos>  <tos>  <BindAddress....................>
> ==========================================================================================
> Transport:  transport-tcp             tcp      0     96  0.0.0.0:5060
> Transport:  transport-tls             tls      0     96  0.0.0.0:5061
> Transport:  transport-udp             udp      0     96  0.0.0.0:5060
> {noformat}
> If the following line is removed, the transport appears to work correctly:
> {noformat}
> async_operations=500
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list