Hello
This is how my registrar module is configured, hoping that min-expires set to 30 wont allow registration attempts more often than 30 seconds, but if I configure a UAC to register every 15 seconds I see that kamailio allows it. Shouldn't it reply with "422 Session Interval Too Small" or "423 Interval Too Brief"?
# ----- registrar params ----- modparam("registrar", "default_expires", 120) modparam("registrar", "min_expires", 30) modparam("registrar", "method_filtering", 1) /* uncomment the next line to disable parallel forking via location */ # modparam("registrar", "append_branches", 0) /* uncomment the next line not to allow more than 10 contacts per AOR */ #modparam("registrar", "max_contacts", 10)
131.380336 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194 131.381174 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
144.386014 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194 144.387110 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
157.395358 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194 157.396340 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
170.404905 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194 170.405771 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
183.414375 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194 183.415217 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
txs fborot
Hello,
On 8/18/11 6:20 PM, Fabian Borot wrote:
Hello
This is how my registrar module is configured, hoping that min-expires set to 30 wont allow registration attempts more often than 30 seconds, but if I configure a UAC to register every 15 seconds I see that kamailio allows it. Shouldn't it reply with "422 Session Interval Too Small" or "423 Interval Too Brief"?
it will not allow a REGISTER with Expires value less than 30sec. But even the phone sends a REGISTER with Expires 3600 (for example), it can send again in 10 sec another REGISTER with Expires 3600. In order to see if there is something incorrect, send us full REGISTER requests and the replies.
Cheers, Daniel
# ----- registrar params ----- modparam("registrar", "default_expires", 120) modparam("registrar", "min_expires", 30) modparam("registrar", "method_filtering", 1) /* uncomment the next line to disable parallel forking via location */ # modparam("registrar", "append_branches", 0) /* uncomment the next line not to allow more than 10 contacts per AOR */ #modparam("registrar", "max_contacts", 10)
131.380336 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194 131.381174 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
144.386014 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194 144.387110 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
157.395358 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194 157.396340 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
170.404905 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194 170.405771 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
183.414375 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194 183.415217 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
txs fborot
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Hi Daniel, thank you for looking into this. I understand what you are saying and what is happening is very similar. The linksys is set to 10 secs, so around 8 secs it sends a new registration. Kamailio replies with 30 but the linksys ignores it and keeps sending the registration every 8 secs. But the fact is that the AOR is being updated every 8 seconds, as you can see below [at the bottom of the email], which can be a problem with a lot of customers and registration interval of 2-3 secs.
mysql> select username,contact,received,expires,cseq,last_modified,user_agent from location where username = '300'; +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ | username | contact | received | expires | cseq | last_modified | user_agent | +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ | 300 | sip:300@192.168.1.6:41264 | NULL | 2011-08-19 07:47:54 | 21584 | 2011-08-19 07:47:24 | Linksys/PAP2T-5.1.6(LS) | +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ 1 row in set (0.00 sec)
mysql> select username,contact,received,expires,cseq,last_modified,user_agent from location where username = '300'; +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ | username | contact | received | expires | cseq | last_modified | user_agent | +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ | 300 | sip:300@192.168.1.6:41264 | NULL | 2011-08-19 07:48:02 | 21585 | 2011-08-19 07:47:32 | Linksys/PAP2T-5.1.6(LS) | +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ 1 row in set (0.00 sec)
mysql> select username,contact,received,expires,cseq,last_modified,user_agent from location where username = '300'; +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ | username | contact | received | expires | cseq | last_modified | user_agent | +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ | 300 | sip:300@192.168.1.6:41264 | NULL | 2011-08-19 07:48:10 | 21586 | 2011-08-19 07:47:40 | Linksys/PAP2T-5.1.6(LS) | +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ 1 row in set (0.00 sec)
mysql> select username,contact,received,expires,cseq,last_modified,user_agent from location where username = '300'; +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ | username | contact | received | expires | cseq | last_modified | user_agent | +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ | 300 | sip:300@192.168.1.6:41264 | NULL | 2011-08-19 07:48:18 | 21587 | 2011-08-19 07:47:48 | Linksys/PAP2T-5.1.6(LS) | +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ 1 row in set (0.00 sec)
mysql> select username,contact,received,expires,cseq,last_modified,user_agent from location where username = '300'; +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ | username | contact | received | expires | cseq | last_modified | user_agent | +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ | 300 | sip:300@192.168.1.6:41264 | NULL | 2011-08-19 07:48:26 | 21588 | 2011-08-19 07:47:56 | Linksys/PAP2T-5.1.6(LS) | +----------+---------------------------+----------+---------------------+-------+---------------------+-------------------------+ 1 row in set (0.00 sec)
REGISTER sip:192.168.1.194 SIP/2.0 Via: SIP/2.0/UDP 192.168.1.6:41264;branch=z9hG4bK-9b668c64 From: 300 sip:300@192.168.1.194;tag=b5ca67bbbdf6bco0 To: 300 sip:300@192.168.1.194 Call-ID: f9529c78-63628117@172.31.196.45 CSeq: 21584 REGISTER Max-Forwards: 70 Authorization: Digest username="300",realm="192.168.1.194",nonce="Tk5OZ05OTTsZu75W6fbHxQjiBwnTxMwHdJ7+cYA=",uri="sip:192.168.1.194",algorithm=MD5,response="14e9fb5fe39d959ad92fc08f0aed1539" Contact: 300 sip:300@192.168.1.6:41264;expires=10 User-Agent: Linksys/PAP2T-5.1.6(LS) Content-Length: 0 Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER Supported: x-sipura, replaces
SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.1.6:41264;branch=z9hG4bK-9b668c64 From: 300 sip:300@192.168.1.194;tag=b5ca67bbbdf6bco0 To: 300 sip:300@192.168.1.194;tag=b27e1a1d33761e85846fc98f5f3a7e58.c5d8 Call-ID: f9529c78-63628117@172.31.196.45 CSeq: 21584 REGISTER Contact: sip:300@192.168.1.6:41264;expires=30 Server: kamailio (3.1.4 (x86_64/linux)) Content-Length: 0
REGISTER sip:192.168.1.194 SIP/2.0 Via: SIP/2.0/UDP 192.168.1.6:41264;branch=z9hG4bK-5777b8c From: 300 sip:300@192.168.1.194;tag=b5ca67bbbdf6bco0 To: 300 sip:300@192.168.1.194 Call-ID: f9529c78-63628117@172.31.196.45 CSeq: 21585 REGISTER Max-Forwards: 70 Authorization: Digest username="300",realm="192.168.1.194",nonce="Tk5OZ05OTTsZu75W6fbHxQjiBwnTxMwHdJ7+cYA=",uri="sip:192.168.1.194",algorithm=MD5,response="14e9fb5fe39d959ad92fc08f0aed1539" Contact: 300 sip:300@192.168.1.6:41264;expires=10 User-Agent: Linksys/PAP2T-5.1.6(LS) Content-Length: 0 Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER Supported: x-sipura, replaces
SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.1.6:41264;branch=z9hG4bK-5777b8c From: 300 sip:300@192.168.1.194;tag=b5ca67bbbdf6bco0 To: 300 sip:300@192.168.1.194;tag=b27e1a1d33761e85846fc98f5f3a7e58.7c3e Call-ID: f9529c78-63628117@172.31.196.45 CSeq: 21585 REGISTER Contact: sip:300@192.168.1.6:41264;expires=30 Server: kamailio (3.1.4 (x86_64/linux)) Content-Length: 0
REGISTER sip:192.168.1.194 SIP/2.0 Via: SIP/2.0/UDP 192.168.1.6:41264;branch=z9hG4bK-e85319a5 From: 300 sip:300@192.168.1.194;tag=b5ca67bbbdf6bco0 To: 300 sip:300@192.168.1.194 Call-ID: f9529c78-63628117@172.31.196.45 CSeq: 21586 REGISTER Max-Forwards: 70 Authorization: Digest username="300",realm="192.168.1.194",nonce="Tk5OZ05OTTsZu75W6fbHxQjiBwnTxMwHdJ7+cYA=",uri="sip:192.168.1.194",algorithm=MD5,response="14e9fb5fe39d959ad92fc08f0aed1539" Contact: 300 sip:300@192.168.1.6:41264;expires=10 User-Agent: Linksys/PAP2T-5.1.6(LS) Content-Length: 0 Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER Supported: x-sipura, replaces
SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.1.6:41264;branch=z9hG4bK-e85319a5 From: 300 sip:300@192.168.1.194;tag=b5ca67bbbdf6bco0 To: 300 sip:300@192.168.1.194;tag=b27e1a1d33761e85846fc98f5f3a7e58.a8fb Call-ID: f9529c78-63628117@172.31.196.45 CSeq: 21586 REGISTER Contact: sip:300@192.168.1.6:41264;expires=30 Server: kamailio (3.1.4 (x86_64/linux)) Content-Length: 0
this is how the AOR in memory looks like if the linksys is set to 3 secs, it sends it roughly every 1 sec
[root@mia-sbc-registrar1 sbin]# ./kamctl ul show Domain:: location table=512 records=1 max_slot=1 AOR:: 300 Contact:: sip:300@192.168.1.6:41264 Q= Expires:: 29 Callid:: f9529c78-63628117@172.31.196.45 Cseq:: 21798 User-agent:: Linksys/PAP2T-5.1.6(LS) State:: CS_DIRTY Flags:: 0 Cflag:: 0 Socket:: udp:192.168.1.194:5060 Methods:: 4767 [root@mia-sbc-registrar1 sbin]# ./kamctl ul show Domain:: location table=512 records=1 max_slot=1 AOR:: 300 Contact:: sip:300@192.168.1.6:41264 Q= Expires:: 29 Callid:: f9529c78-63628117@172.31.196.45 Cseq:: 21799 User-agent:: Linksys/PAP2T-5.1.6(LS) State:: CS_DIRTY Flags:: 0 Cflag:: 0 Socket:: udp:192.168.1.194:5060 Methods:: 4767 [root@mia-sbc-registrar1 sbin]# ./kamctl ul show Domain:: location table=512 records=1 max_slot=1 AOR:: 300 Contact:: sip:300@192.168.1.6:41264 Q= Expires:: 29 Callid:: f9529c78-63628117@172.31.196.45 Cseq:: 21800 User-agent:: Linksys/PAP2T-5.1.6(LS) State:: CS_DIRTY Flags:: 0 Cflag:: 0 Socket:: udp:192.168.1.194:5060 Methods:: 4767 [root@mia-sbc-registrar1 sbin]# ./kamctl ul show Domain:: location table=512 records=1 max_slot=1 AOR:: 300 Contact:: sip:300@192.168.1.6:41264 Q= Expires:: 30 Callid:: f9529c78-63628117@172.31.196.45 Cseq:: 21801 User-agent:: Linksys/PAP2T-5.1.6(LS) State:: CS_DIRTY Flags:: 0 Cflag:: 0 Socket:: udp:192.168.1.194:5060 Methods:: 4767 [root@mia-sbc-registrar1 sbin]# ./kamctl ul show
Date: Fri, 19 Aug 2011 13:04:29 +0200 From: miconda@gmail.com To: sr-users@lists.sip-router.org CC: fborot@hotmail.com Subject: Re: [SR-Users] min expires question
Hello,
On 8/18/11 6:20 PM, Fabian Borot wrote:
Hello
This is how my registrar module is configured, hoping that min-expires set to 30 wont allow registration attempts more often than 30 seconds, but if I configure a UAC to register every 15 seconds I see that kamailio allows it. Shouldn't it reply with "422 Session Interval Too Small" or "423 Interval Too Brief"?
it will not allow a REGISTER with Expires value less than 30sec. But even the phone sends a REGISTER with Expires 3600 (for example), it can send again in 10 sec another REGISTER with Expires 3600. In order to see if there is something incorrect, send us full REGISTER requests and the replies.
Cheers,
Daniel
# ----- registrar params -----
modparam("registrar", "default_expires", 120)
modparam("registrar", "min_expires", 30)
modparam("registrar", "method_filtering", 1)
/* uncomment the next line to disable parallel forking via location */
# modparam("registrar", "append_branches", 0)
/* uncomment the next line not to allow more than 10 contacts per AOR */
#modparam("registrar", "max_contacts", 10)
131.380336 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194
131.381174 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
144.386014 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194
144.387110 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
157.395358 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194
157.396340 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
170.404905 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194
170.405771 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
183.414375 192.168.1.6 -> 192.168.1.194 SIP Request: REGISTER sip:192.168.1.194
183.415217 192.168.1.194 -> 192.168.1.6 SIP Status: 200 OK (1 bindings)
txs fborot
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla -- http://www.asipto.com Kamailio Advanced Training, Oct 10-13, Berlin: http://asipto.com/u/kat http://linkedin.com/in/miconda -- http://twitter.com/miconda
I think that can easily become a problem if all the users decide to send registrations as they please. I tried looking into ratelimit and pike and it wont solve my problem. What is the extent of the setting min_expires on this module? Will it create a 423 reply to the user or is not the intended behavior?
In the mean time I am trying to craft a 423 Message when the expires in the Contact header or in the Expires header is less than the min_expires set in the config but I am having problems parsing and looking for the Expires header. With the expires in the contact is easy using the select feature or parsing the whole contact using $ct:
xlog("L_INFO","mylog: Contact Header: [$ct].\n"); $var(c_expires) = $(ct{s.select,1,=});
or this way, it is more accurate
$sel(@contact.expires)
but I can't find a way to do the same thing with the Expires headers. In the same page that I found the "select " it says: "The select is a READ-ONLY "function", that helps to get direct access to some parts of SIP message within the script (like @to, @cseg.method, @msg["P-anyheader-youwant"]) ...."
So I am trying to use this @msg["P-anyheader-youwant"] but I can't make it work.
Any ideas? txs a lot in advance
There is no way to prevent that a SIP client sends you a request at any time.
The standard defined behavior for setting REGISTER interval is by setting the expires header.
Of course you could block which does not use the provided expires header, but then it may increase load on your support team because customers will start to complain.
regards Klaus
Am 22.08.2011 15:15, schrieb Fabian Borot:
I think that can easily become a problem if all the users decide to send registrations as they please. I tried looking into ratelimit and pike and it wont solve my problem. What is the extent of the setting min_expires on this module? Will it create a 423 reply to the user or is not the intended behavior?
In the mean time I am trying to craft a 423 Message when the expires in the Contact header or in the Expires header is less than the min_expires set in the config but I am having problems parsing and looking for the Expires header. With the expires in the contact is easy using the select feature or parsing the whole contact using $ct:
xlog("L_INFO","mylog: Contact Header: [$ct].\n"); $var(c_expires) = $(ct{s.select,1,=});
or this way, it is more accurate
$sel(@contact.expires)
but I can't find a way to do the same thing with the Expires headers. In the same page that I found the "select " it says: "The *select* is a READ-ONLY "function", that helps to get direct access to some parts of SIP message within the script (like @to, @cseg.method, @msg["P-anyheader-youwant"]) ...."
So I am trying to use this @msg["P-anyheader-youwant"] but I can't make it work.
Any ideas? txs a lot in advance
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users