Sdp not forwarding annexb

Hello, I’ve a problem with a customer who is sending annexb=no as sdp parameter to me, sems is not forwarding this parameter to my carrier who replies with annexb=yes, so I have 2 legs with different annexb. How can I relay this sdp part to my carrier?
Thank you

Could you provide routing simulation log for such call?

I paste only relevant data stripping out all the unnecessary stuff

sdp invite from origination to me

m=audio XXX RTP/AVP 18 8 101
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=ptime:20
a=sendrecv
a=maxptime:150

invite from sems to termination

m=audio XXX RTP/AVP 18 8 101
a=rtpmap:18 G729/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=ptime:20
a=sendrecv
a=maxptime:150   

183 reply from termination

m=audio XXX RTP/AVP 18 101
a=fmtp:18 annexb=yes
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv

183 reply to origination

m=audio XXX RTP/AVP 18 101
a=fmtp:18 annexb=no
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv

I’m using the default configuration using sems as b2bua but it seems it can’t forward fmtp settings of my origination causing kind of codec mismatch. Audio in conversation is ok but Asterisk of my customer is recording out of sync audio so I just need to assure that bot legs are using the same codec and the same annexb settings. Both legs are using the same g729 codec, sems is not employed as a transcoder, it just relays rtp and I think that the annexb difference is causing this sync problem.

Thank you

This is not routing simulation log. You have to open CDR for call and click “Routing simulation” button, then provide log from panel “log”.

I’ve done it right now but i receive:

  • WARNING: Adding LNP resolvers sockets: . Resolver timeout: 1000ms
    and then blank

I’ve multiple routings enabled, I see it tries every routing but in the last one it says “TM/404 - No routes”

Could you provide all log from panel “log”. Or you see only “WARNING: Adding LNP resolvers sockets: . Resolver timeout: 1000ms” there?

i see only this log WARNING: Adding LNP resolvers sockets: . Resolver timeout: 1000ms

then nothing else

Ok, your routing simulation log doesn’t work by some reasons.

it seems it’s not creating logs but I see on “results” it’s correctly using all my routing terminations and last one, the fourth, is “TM/404 - No routes”

I can try to update yeti-web

after yeti-web update it says: An unhandled lowlevel error occurred. The application logs may have details. how can I fix it? I can’t access the web portal anymore

i fixed it with secret key, but routing simulation still doesn’t work

Hello, I finally managed to have the routing simulation, i’ve stripped out all sensitive data. Thank you

5.551 ms -> process-DP. Found dialpeer: {"id":1377159, "enabled":true, "prefix":"XXX", "src_rewrite_rule":"^(.*)$", "dst_rewrite_rule":"^(.*)$", "acd_limit":0, "asr_limit":0, "gateway_id":null, "routing_group_id":24, "next_rate":XXX, "connect_fee":0.0, "vendor_id":10, "account_id":30, "src_rewrite_result":"+\\1", "dst_rewrite_result":"+\\1", "locked":false, "priority":100, "capacity":null, "lcr_rate_multiplier":1.0, "initial_rate":XXX, "initial_interval":1, "next_interval":1, "valid_from":"2023-04-03T16:48:00+00:00", "valid_till":"2028-04-03T16:48:00+00:00", "gateway_group_id":3, "force_hit_rate":1, "network_prefix_id":XXX, "created_at":"2023-05-03T17:38:54.195698+00:00", "short_calls_limit":1, "current_rate_id":null, "external_id":null, "src_name_rewrite_rule":null, "src_name_rewrite_result":null, "exclusive_route":false, "dst_number_min_length":0, "dst_number_max_length":100, "reverse_billing":false, "routing_tag_ids":[], "routing_tag_mode_id":0, "routeset_discriminator_id":1}
6.107 ms -> DP. Found dialpeer: {"id":1377159, "enabled":true, "prefix":"XXX", "src_rewrite_rule":"^(.*)$", "dst_rewrite_rule":"^(.*)$", "acd_limit":0, "asr_limit":0, "gateway_id":null, "routing_group_id":24, "next_rate":XXX, "connect_fee":0.0, "vendor_id":10, "account_id":30, "src_rewrite_result":"+\\1", "dst_rewrite_result":"+\\1", "locked":false, "priority":100, "capacity":null, "lcr_rate_multiplier":1.0, "initial_rate":XXX, "initial_interval":1, "next_interval":1, "valid_from":"2023-04-03T16:48:00+00:00", "valid_till":"2028-04-03T16:48:00+00:00", "gateway_group_id":3, "force_hit_rate":1, "network_prefix_id":XXX, "created_at":"2023-05-03T17:38:54.195698+00:00", "short_calls_limit":1, "current_rate_id":null, "external_id":null, "src_name_rewrite_rule":null, "src_name_rewrite_result":null, "exclusive_route":false, "dst_number_min_length":0, "dst_number_max_length":100, "reverse_billing":false, "routing_tag_ids":[], "routing_tag_mode_id":0, "routeset_discriminator_id":1}
6.163 ms -> process_gw: customer time limit is not set, calculating
6.18 ms -> process_gw: customer time limit: 24000001
6.195 ms -> DP. Before rewrite src_prefix: XXX , dst_prefix: XXX
6.274 ms -> DP. After rewrite src_prefix: +XXX , dst_prefix: +XXX
6.291 ms -> GW. Before numberlist processing src_prefix: +XXX , dst_prefix: +XXX
6.302 ms -> GW. Before rewrite src_prefix: +XXX , dst_prefix: +XXX
6.313 ms -> GW. After rewrite src_prefix: +XXX , dst_prefix: +XXX
6.353 ms -> DP. Finished: {"ruri":"sip:+XXX@XXX", "bleg_transport_protocol_id":1, "from":"from_name <sip:+XXX@$Oi>", "to":"<sip:+XXX@XXX>", "call_id":"", "dlg_nat_handling":true, "force_outbound_proxy":false, "outbound_proxy":null, "bleg_outbound_proxy_transport_protocol_id":null, "aleg_force_outbound_proxy":false, "aleg_outbound_proxy":null, "aleg_outbound_proxy_transport_protocol_id":null, "next_hop":null, "next_hop_1st_req":false, "aleg_next_hop":"", "sdp_filter_type_id":0, "sdp_filter_list":"", "sdp_alines_filter_type_id":0, "sdp_alines_filter_list":"", "enable_session_timer":false, "enable_aleg_session_timer":false, "session_expires":50, "minimum_timer":50, "maximum_timer":50, "session_refresh_method_id":3, "accept_501_reply":"true", "aleg_session_expires":50, "aleg_minimum_timer":50, "aleg_maximum_timer":50, "aleg_session_refresh_method_id":3, "aleg_accept_501_reply":"true", "enable_auth":false, "auth_user":"", "auth_pwd":"", "enable_aleg_auth":false, "auth_aleg_user":"", "auth_aleg_pwd":"", "append_headers":null, "append_headers_req":"P-Asserted-Identity: <tel:+XXX>", "aleg_append_headers_req":"", "disconnect_code_id":null, "enable_rtprelay":true, "rtprelay_interface":"", "aleg_rtprelay_interface":"", "outbound_interface":"", "aleg_outbound_interface":"", "contact_displayname":null, "contact_user":null, "contact_host":null, "contact_port":null, "try_avoid_transcoding":true, "rtprelay_dtmf_filtering":true, "rtprelay_dtmf_detection":true, "dump_level_id":3, "time_limit":7200, "resources":"XXX", "cache_time":10, "reply_translations":"", "aleg_policy_id":null, "bleg_policy_id":null, "aleg_codecs_group_id":1, "bleg_codecs_group_id":12, "aleg_single_codec_in_200ok":false, "bleg_single_codec_in_200ok":false, "ringing_timeout":null, "global_tag":null, "patch_ruri_next_hop":false, "rtprelay_force_dtmf_relay":false, "aleg_force_symmetric_rtp":true, "bleg_force_symmetric_rtp":true, "aleg_symmetric_rtp_nonstop":false, "bleg_symmetric_rtp_nonstop":false, "aleg_symmetric_rtp_ignore_rtcp":false, "bleg_symmetric_rtp_ignore_rtcp":false, "aleg_rtp_ping":false, "bleg_rtp_ping":false, "aleg_relay_options":false, "bleg_relay_options":false, "filter_noaudio_streams":false, "aleg_relay_reinvite":false, "bleg_relay_reinvite":false, "aleg_relay_hold":false, "bleg_relay_hold":false, "aleg_relay_prack":false, "bleg_relay_prack":false, "aleg_sdp_c_location_id":2, "bleg_sdp_c_location_id":2, "trusted_hdrs_gw":false, "aleg_append_headers_reply":"", "bleg_sdp_alines_filter_list":"", "bleg_sdp_alines_filter_type_id":0, "dead_rtp_time":0, "rtp_relay_timestamp_aligning":false, "allow_1xx_wo2tag":false, "invite_timeout":8000, "srv_failover_timeout":2000, "rtp_force_relay_cn":true, "aleg_sensor_id":null, "aleg_sensor_level_id":1, "bleg_sensor_id":null, "bleg_sensor_level_id":1, "aleg_dtmf_send_mode_id":1, "bleg_dtmf_send_mode_id":1, "aleg_dtmf_recv_modes":1, "bleg_dtmf_recv_modes":1, "suppress_early_media":false, "aleg_relay_update":false, "bleg_relay_update":false, "force_one_way_early_media":false, "radius_auth_profile_id":null, "record_audio":false, "aleg_radius_acc_profile_id":null, "bleg_radius_acc_profile_id":null, "transit_headers_a2b":";", "transit_headers_b2a":";", "src_number_radius":"XXX", "dst_number_radius":"XXX", "orig_gw_name":"XXX", "customer_auth_name":"XXX", "customer_name":"XXX", "customer_account_name":"XXX", "term_gw_name":"XXX", "fake_180_timer":null, "aleg_rel100_mode_id":4, "bleg_rel100_mode_id":4, "bleg_max_30x_redirects":0, "bleg_max_transfers":0, "aleg_auth_required":null, "aleg_rtp_filter_inband_dtmf":false, "bleg_rtp_filter_inband_dtmf":false, "bleg_protocol_priority_id":0, "aleg_media_encryption_mode_id":0, "bleg_media_encryption_mode_id":0, "aleg_sip_acl":null, "aleg_rtp_acl":null, "bleg_sip_acl":null, "bleg_rtp_acl":null, "registered_aor_id":null, "customer_id":6, "vendor_id":10, "customer_acc_id":26, "vendor_acc_id":30, "customer_auth_id":20087, "destination_id":4201538, "destination_prefix":"XXX", "dialpeer_id":1377159, "dialpeer_prefix":"XXX", "orig_gw_id":20, "term_gw_id":29, "routing_group_id":24, "rateplan_id":18, "destination_initial_rate":XXX, "destination_next_rate":XXX, "destination_initial_interval":1, "destination_next_interval":1, "destination_rate_policy_id":1, "dialpeer_initial_interval":1, "dialpeer_next_interval":1, "dialpeer_next_rate":XXX, "destination_fee":0.0, "dialpeer_initial_rate":XXX, "dialpeer_fee":0.0, "dst_prefix_in":"XXX", "dst_prefix_out":"+XXX", "src_prefix_in":"XXX", "src_prefix_out":"+XXX", "src_name_in":"from_name", "src_name_out":"from_name", "diversion_in":null, "diversion_out":null, "auth_orig_protocol_id":1, "auth_orig_ip":"XXX", "auth_orig_port":5060, "src_network_id":XX, "src_country_id":XX, "dst_country_id":XX, "dst_network_id":XX, "dst_prefix_routing":"XXX", "src_prefix_routing":"XXX", "routing_plan_id":4, "lrn":null, "lnp_database_id":null, "from_domain":"XXX", "to_domain":"XXX", "ruri_domain":"XXX", "src_area_id":null, "dst_area_id":null, "routing_tag_ids":[], "pai_in":"", "ppi_in":"", "privacy_in":"", "rpid_in":"", "rpid_privacy_in":"", "pai_out":"<tel:+XXX>", "ppi_out":null, "privacy_out":null, "rpid_out":null, "rpid_privacy_out":null, "customer_acc_check_balance":true, "destination_reverse_billing":false, "dialpeer_reverse_billing":false, "customer_auth_external_id":null, "customer_external_id":null, "vendor_external_id":null, "customer_acc_external_id":null, "vendor_acc_external_id":null, "orig_gw_external_id":null, "term_gw_external_id":null, "customer_acc_vat":0, "lega_ss_status_id":null, "legb_ss_status_id":null, "bleg_force_cancel_routeset":false, "registered_aor_mode_id":0, "metadata":null, "customer_auth_external_type":null, "ss_crt_id":null, "ss_otn":null, "ss_dtn":null, "ss_attest_id":null}

If I deactivate the “Proxy media” toggle to the carrier side, the sdp is correctly forwarded to the carrier, including all parameters. If I activate the proxy media, all options set by customer inside the sdp are removed

I’ve forced annexb=no via “FORMAT PARAMETERS” of G729 codec in codec group, now it’s terminating with correct annexb. The problem is that I would like to manage this parameter dynamically, based on customer settings.
It’s clear that media proxy is stripping out that fmt parameter because of codec “format parameters” blank rewrite. I’m just wondering if there’s a parameter that can help on dynamically change the annexb value.

In the vendor gateway, under the signaling tab,what did you set Sdp alines filter type* to?
Transparent?

Hello, thanks a lot for your reply.
Yes it’s set as default to “transparent”, I think there’s a bug in the way the media proxy manages codecs. If there is no media proxy, for both sides, the signaling is flowing correctly, when I enable the media proxy there’s the fmtp rewrite because sems is using the preferences set in codecs related to the termination part. So if the codec setting have a blank “FORMAT PARAMETERS”, it rewrites the fmtp to blank.
I think the problem is in that logic.

yes. Currently we are not relaying annexb parameter to other leg. As workaround you can add annexb=no to parameters, it will disable annexb negotiation.