[SR-Users] How Kamailio processes SIP ACK on local 4XX reply?
Daniel-Constantin Mierla
miconda at gmail.com
Mon May 11 13:56:31 CEST 2020
Hello,
the problem here is that the ACK has Route headers and looks like the
ACK inside dialog.
The 407 is for a re-INVITE, so the To-tag is present, it is not
generated by sl module to be able to filter it out. It gets to config
where the requests are routed using loose_route() like a request part of
a dialog.
I haven't checked the specs right not for a 100% accurate answer, but
ACK for a failure code is hop-by-hop, it should have no Route headers,
being intended for next hop only, and I expect most UA implementation do
it like this, not having similar reports in more or less 20 years.
If the ACK will be without Route headers, it should be stopped locally.
You can try to play with the order of checks for transaction and use of
other tm functions to detect such case (eventually combined with htable)
and drop the ACK.
Cheers,
Daniel
On 07.05.20 17:10, Denys Pozniak wrote:
> Hello!
>
> I have some misunderstanding regarding the processing of SIP ACK on
> local Kamailio 4xx reply (eg 407 Proxy Authentication Required).
> In the picture below you can see that such a message just goes through
> the proxy and moreover gets into the *request_route* section.
> I expect this SIP ACK to be consumed by the sl module without hitting
> script logic.
>
>
>
> I put the part below to the very top of the *request_route* section:
>
> *request_route* {
>
> if ( is_method("ACK") ) {
> t_check_trans();
> $var(error) = $rc;
> xlog("L_ERR", "[CATCH_ACK] m=$rm cseq=$cs ru=$ru
> err=$var(error) [$ci]");
> }
> ....
>
>
> And as a result, I detected in syslog:
>
> May 7 16:15:34 test-edge /usr/sbin/kamailio[11642]: ERROR:
> <script>: [CATCH_ACK] m=ACK cseq=153
> ru=sip:mod_sofia at 10.0.7.3:5060
> <http://sip:mod_sofia@10.0.7.3:5060> err=-1
> [051e7c50-0b10-1239-2996-001dd8b71cb2]
>
>
> *SIP re-INVITE (hold) from Phone:*
>
> 2020/05/07 16:15:34.629973 176.6.4.6:1024 <http://176.6.4.6:1024>
> -> 185.9.7.7:5060 <http://185.9.7.7:5060>
> INVITE sip:mod_sofia at 10.0.7.3:5060
> <http://sip:mod_sofia@10.0.7.3:5060> SIP/2.0
> Via: SIP/2.0/UDP
> 192.168.11.111:5060;branch=z9hG4bK00475de2da8eea118ec67caaaddc98fb;rport
> Route: <sip:185.9.7.7;r2=on;lr=on;did=f98.f3f4>
> Route: <sip:10.0.7.5;r2=on;lr=on;did=f98.f3f4>
> Route: <sip:10.0.7.6;lr=on;did=f98.fbe>
> From: <sip:312222222222 at 10.0.7.6
> <mailto:sip%3A312222222222 at 10.0.7.6>>;tag=00dfd3d8da8eea118ec67caaaddc98fb
> To: "Denys VOIP" <sip:5008 at 185.9.7.7
> <mailto:sip%3A5008 at 185.9.7.7>>;tag=54Q0XNHgXBUvp
> Call-ID: 051e7c50-0b10-1239-2996-001dd8b71cb2
> CSeq: 153 INVITE
> Contact:
> <sip:312222222222 at 192.168.11.111:5060;gr=00DCB21F-BD8E-EA11-8E88-7CAAADDC98FB>
> Content-Type: application/sdp
> Allow: INVITE, ACK, BYE, CANCEL, INFO, MESSAGE, NOTIFY, OPTIONS,
> REFER, UPDATE, PRACK
> Max-Forwards: 70
> Supported: 100rel, replaces, from-change, gruu
> User-Agent: SIPPER for PhonerLite
> Content-Length: 313
>
>
> v=0
> o=- 3858283927 2 IN IP4 192.168.11.111
> s=SIPPER for PhonerLite
> c=IN IP4 192.168.11.111
> t=0 0
> m=audio 5062 RTP/AVP 8 0 9 107 101
> a=rtpmap:8 PCMA/8000
> a=rtpmap:0 PCMU/8000
> a=rtpmap:9 G722/8000
> a=rtpmap:107 opus/48000/2
> a=rtpmap:101 telephone-event/8000
> a=fmtp:101 0-16
> a=ssrc:782125221
> a=sendonly
>
>
> *SIP 407 from Kamailio:*
>
> 2020/05/07 16:15:34.632298 185.9.7.7:5060 <http://185.9.7.7:5060>
> -> 176.6.4.6:1024 <http://176.6.4.6:1024>
> SIP/2.0 407 Proxy Authentication Required
> Via: SIP/2.0/UDP
> 192.168.11.111:5060;branch=z9hG4bK00475de2da8eea118ec67caaaddc98fb;rport=1024;received=176.6.4.6
> From: <sip:312222222222 at 10.0.7.6
> <mailto:sip%3A312222222222 at 10.0.7.6>>;tag=00dfd3d8da8eea118ec67caaaddc98fb
> To: "Denys VOIP" <sip:5008 at 185.9.7.7
> <mailto:sip%3A5008 at 185.9.7.7>>;tag=54Q0XNHgXBUvp
> Call-ID: 051e7c50-0b10-1239-2996-001dd8b71cb2
> CSeq: 153 INVITE
> Proxy-Authenticate: Digest realm="185.9.7.7",
> nonce="XrQaXjfjyrftyrtiyrft7uO"
> Server: kamailio (5.2.2 (x86_64/linux))
> Content-Length: 0
>
>
> *SIP ACK from Phone:*
>
> 2020/05/07 16:15:34.672872 176.6.4.6:1024 <http://176.6.4.6:1024>
> -> 185.9.7.7:5060 <http://185.9.7.7:5060>
> ACK sip:mod_sofia at 10.0.7.3:5060
> <http://sip:mod_sofia@10.0.7.3:5060> SIP/2.0
> Via: SIP/2.0/UDP
> 192.168.11.111:5060;branch=z9hG4bK00475de2da8eea118ec67caaaddc98fb;rport
> Route: <sip:185.9.7.7;r2=on;lr=on;did=f98.f3f4>
> Route: <sip:10.0.7.5;r2=on;lr=on;did=f98.f3f4>
> Route: <sip:10.0.7.6;lr=on;did=f98.fbe>
> From: <sip:312222222222 at 10.0.7.6
> <mailto:sip%3A312222222222 at 10.0.7.6>>;tag=00dfd3d8da8eea118ec67caaaddc98fb
> To: "Denys VOIP" <sip:5008 at 185.9.7.7
> <mailto:sip%3A5008 at 185.9.7.7>>;tag=54Q0XNHgXBUvp
> Call-ID: 051e7c50-0b10-1239-2996-001dd8b71cb2
> CSeq: 153 ACK
> Content-Length: 0
>
>
> *SIP ACK (unwanted) from Kamailio to Core:*
>
> 2020/05/07 16:15:34.675546 10.0.7.5:5060 <http://10.0.7.5:5060> ->
> 10.0.7.6:5060 <http://10.0.7.6:5060>
> ACK sip:mod_sofia at 10.0.7.3:5060
> <http://sip:mod_sofia@10.0.7.3:5060> SIP/2.0
> Max-Forwards: 10
> Via: SIP/2.0/UDP
> 10.0.7.5;branch=z9hG4bK0d46.c33c3556c3cffbac49e717352b3575f6.0
> Via: SIP/2.0/UDP
> 192.168.11.111:5060;received=176.6.4.6;branch=z9hG4bK00475de2da8eea118ec67caaaddc98fb;rport=1024
> Route: <sip:10.0.7.6;lr=on;did=f98.fbe>
> From: <sip:312222222222 at 10.0.7.6
> <mailto:sip%3A312222222222 at 10.0.7.6>>;tag=00dfd3d8da8eea118ec67caaaddc98fb
> To: "Denys VOIP" <sip:5008 at 185.9.7.7
> <mailto:sip%3A5008 at 185.9.7.7>>;tag=54Q0XNHgXBUvp
> Call-ID: 051e7c50-0b10-1239-2996-001dd8b71cb2
> CSeq: 153 ACK
> Content-Length: 0
> loose-route: done
>
>
> *IP addresses and call-flow:*
>
> Core (10.0.7.6) --> [ Kamailio (10.0.7.5) -> Kamailio (185.9.7.7)
> ] --> Phone (176.6.4.6)
>
>
> [root at test-edge kamailio]$ kamailio -v
> version: kamailio 5.2.2 (x86_64/linux)
> flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS,
> USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM,
> SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY,
> USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER,
> USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
> ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE
> 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
> poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
> id: unknown
> compiled on 19:29:40 Jun 20 2019 with gcc 4.8.5
>
>
>
> --
>
> BR,
> Denys Pozniak
>
>
>
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
--
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Funding: https://www.paypal.me/dcmierla
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20200511/77a27d07/attachment.html>
More information about the sr-users
mailing list