[Kamailio-Users] Call duration with RADIUS support

Dani Popa dani.popa at gmail.com
Wed Nov 25 17:37:22 CET 2009


Hi,

Your radius doesn't know about sip dictionary. Include it in freeradius 
configuration and should solve your issues.

Dani






The easy way is to say it can not be done!





mbsip wrote:
> Hi,
>
> I am struggling with kamailio and radius configuration to achieve
> proper Call duration notification.
> Here is what i have:
> - kamailio 1.6
> - radiusclient-ng
> - freeradius on different server
>
> Kamailio configuration has following radius-extra:
>
> modparam("acc", "radius_extra", "User-Name=$Au; \
>                                Calling-Station-Id=$from; \
>                                Called-Station-Id=$to; \
>                                Sip-Translated-Request-URI=$ruri; \
>                                Sip-RPid=$avp(s:rpid); \
>                                Source-IP=$si; \
>                                Source-Port=$sp; \
>                                Canonical-URI=$avp(s:can_uri); \
>                                Billing-Party=$avp(s:billing_party); \
>                                Divert-Reason=$avp(s:divert_reason); \
>                                X-RTP-Stat=$hdr(X-RTP-Stat); \
>                                Contact=$hdr(contact); \
>                                Event=$hdr(event); \
>                                SIP-Proxy-IP=$avp(s:sip_proxy_ip); \
>                                ENUM-TLD=$avp(s:enum_tld)")
>
> which produce following radius data START and STOP:
>
> Mon Nov 23 16:26:38 2009
>         Acct-Status-Type = Start
>         Service-Type = IAPP-Register
>         Sip-Response-Code = 200
>         Sip-Method = Invite
>         Event-Timestamp = 1258990835
>         Sip-From-Tag = "c3716c01"
>         Sip-To-Tag = "11544D08-C80"
>         Acct-Session-Id = "Nzg5MmZlMDNkMGUwODgwN2ZkZWZkMmQ3NzYwYzNkNWY."
>         User-Name = "Mac at xx.yy.zz.vv"
>         Calling-Station-Id = "sip:Mac at xx.yy.zz.vv"
>         Called-Station-Id = "sip:123456789 at xx.yy.zz.vv"
>         Sip-Translated-Request-URI = "sip:123456789 at aa.bb.cc.dd"
>         X-Ascend-Send-Secret = 0x3135372e32352e3139322e32
>         X-Ascend-Receive-Secret = 0x3a7c
>         X-Ascend-Netware-timeout =
> 0x3c7369703a4d616369656a403139322e3136382e332e3132353a36323034323e
>         NAS-Port = 5060
>         Acct-Delay-Time = 0
>         NAS-IP-Address = xx.yy.zz.vv
>         Client-IP-Address = xx.yy.zz.vv
>         Acct-Unique-Session-Id = "a62f94528d34acfe"
>         Timestamp = 1258989998
>
> Mon Nov 23 16:26:38 2009
>         Acct-Status-Type = Stop
>         Service-Type = IAPP-Register
>         Sip-Response-Code = 200
>         Sip-Method = 8
>         Event-Timestamp = 1258990836
>         Sip-From-Tag = "c3716c01"
>         Sip-To-Tag = "11544D08-C80"
>         Acct-Session-Id = "Nzg5MmZlMDNkMGUwODgwN2ZkZWZkMmQ3NzYwYzNkNWY."
>         User-Name = "Mac at xx.yy.zz.vv"
>         Calling-Station-Id = "sip:Mac at xx.yy.zz.vv"
>         Called-Station-Id = "sip:123456789 at xx.yy.zz.vv"
>         Sip-Translated-Request-URI = "sip:123456789 at aa.bb.cc.dd:5060"
>         X-Ascend-Send-Secret = 0x3135372e32352e3139322e32
>         X-Ascend-Receive-Secret = 0x3a7c
>         X-Ascend-Netware-timeout =
> 0x3c7369703a4d616369656a403139322e3136382e332e3132353a36323034323e
>         NAS-Port = 5060
>         Acct-Delay-Time = 0
>         NAS-IP-Address = xx.yy.zz.vv
>         Client-IP-Address = xx.yy.zz.vv
>         Acct-Unique-Session-Id = "a62f94528d34acfe"
>         Timestamp = 1258989998
>
>
> The task is to upload all stored radius messages into MYSQL with
> proper call duration info.
> I've ran through many posts and found a few way-outs:
> 1) to use AVPOPS module:
>       modparam("acc", "radius_extra",  "Acct-Session-Time=$avp(call_length)")
>       modparam( "avpops", "avp_aliases", "start_timestamp=i:100")
>       modparam( "avpops", "avp_aliases", "end_timestamp=i:101")
>       modparam( "avpops", "avp_aliases", "call_length=i:102")
>
>       avp_op("$avp(end_timestamp)","sub/$avp(start_timestamp)");
>       avp_op("$avp(end_timestamp)/$avp(call_length)","sub/$avp(start_timestamp)");
>
> 2) to use DIALOG module
> modparam("acc", "radius_config",
> "/usr/local/etc/radiusclient-ng/radiusclient.conf")
> modparam("acc", "radius_flag", 1)
> modparam("acc", "radius_extra", "Acct-Session-Time=$avp(i:921)")
>
>         if (is_method("BYE")) {
>                 xlog("L_INFO", "dialog_status:$DLG_status
> duration=$DLG_lifetime\n");
>                 $avp(i:921) = $DLG_lifetime{s.int};
>         } else {
>                 $avp(i:921) = 0;
>         }
>         setflag(1);
>
> 3) to use a script or db triggers(after STOP).
>
> Could you advice which one is better/work properly.
> Maybe there are any other configuration i could use.
>
> Thanks in advance,
> Maciej
>
> _______________________________________________
> Kamailio (OpenSER) - Users mailing list
> Users at lists.kamailio.org
> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
> http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>
>   



More information about the Users mailing list