Charging interfaces of YateSMSC

Radius

Radius protocol usage for MO SMS authorization and charging:

SMS authorize at OCS: send Radius Access-Request

  • User-Name: MSISDN of subscriber beeing charged
  • NAS-Port-Id: See config for format. May be used to detect direction (MO/MT SMS)
  • Calling_Station_Id: SMS sender identity
  • Called_Station_Id: SMS recipient identity
  • CISCO vendor specific h323-remote-address(23): GT of node serving the subscriber beeing charged. May be used to detect roaming

SMS charging: send Radius Accounting-Request User-Name: MSISDN of subscriber beeing charged

  • Acct-Session-Id: same as the one in Access-Request
  • Acct-Status-Type: Stop(2)
  • SMS processing outcome: Acct-Input-Packets (MO SMS) / Acct-Output-Packets (MT SMS) will be set to 1 on success (SMS accepted/delivered) and 0 on failure
  • CISCO vendor specific VSA: h323_call_origin(26): ‘originate’ (MO SMS), ‘answer’ (MT SMS)
  • CISCO vendor specific VSA: h323-remote-address(23): GT of node serving the subscriber beeing charged. May be used to detect roaming

Configuration

Edit /etc/yate/smsc/yatesmsc.conf:

[general]
auth_mo_sms_ocs=yes
auth_mt_sms_ocs=yes

Edit /etc/yate/smsc/radius-custom.conf (create the file if missing):

[general]

enabled=yes
addr=<LOCAL-IP>

[nas auth_msg]
; Use Radius auth for MO/MT SMS
component=M[O,T]-SMSC
newcall=true
protocol=MAP

[nas acct_msg]
; Use Radius acct for already authorized MAP MO/MT SMS
component=SMSC
ocs_session_id=^.\+
protocol=MAP

[radius common]

; IP of Radius server, mandatory

server=<REMOTE-IP>

; Password if needed

secret=<password>

Edit /etc/yate/smsc/yradius.conf:

[msg]

; NAS Prompt service
add:Service-Type=7
add:NAS-Port-Type=5
add:NAS-Port-Id=Msg:${component$unknown}-${protocol$unknown}
add:3GPP-IMSI=${imsi}

[nas auth_msg]
; NAS for short message service authorization
rad_acct=no
rad_disc=no
route_type=msg
called=.\+
rad_ocs_session_id=yes
rad_authoritative=yes
rad_failure=reason
rad_server=common
rad_include=msg

[nas acct_msg]
; NAS for short message service accounting
route_type=msg
rad_auth=no
rad_disc=no
rad_server=common
rad_include=msg
add:h323-disconnect-cause=${cause_q931}
add:Cisco-AVPair+disconnect-text=${reason}
add:Acct-Delay-Time=0
add:Acct-Input-Packets=${inp_pkt}
add:Acct-Output-Packets=${out_pkt}

Sample Captures

Diameter Gy

JSON API

Our solutions