DSC Server Lookup Function
DSC Server Lookup Function
1. SLF enables the DSC to route Diameter traffic on a per subscriber basis.
2. The subscriber identity is extracted from an AVP in the Request message and looked
up in a database.
3. The outcome of the lookup determines the destination of the message (routing).
• The provisioning of the subscriber data (identities and destinations) into the internal
database is possible:
– through an O&M interface, based on the CAI3G protocol (Ericsson EMA).
– Manually with a Linux command in the DSC
How to use the SLF 3
• Note: the destination is not the name of a peer! It's a "SLF destination". We can create
such a destination during the configuration of the SLF.
dsc-admin-slf-db -p imsi
Configuring the SLF 6
• Then the selector and the type of the identity must be defined. Here msg-user-name is the
name of the field which contains an IMSI into a Diameter request.
• identityType possible: IMSI, MSISDN, PRIVATE_ID, PUBLIC_ID
DscSlf=1
Destination=slf_mhss89
actionPeer="mhss89"
Destination=slf_mdsc81
actionPeer="mdsc81"
LookupProfile=LookupProfileIMSI
identityType = IMSI
selector ="msg.user-name"
destDestinationUnknown ="slf_mdsc81"
destIdentityMissing ="slf_mdsc81" Optional.
destLookupFailure ="slf_mdsc81" See description in next slide
destSubscriberNotFound ="slf_mdsc81"
Configuring the SLF 7
• Optionnal parameters
• destSubscriberNotFound
Default Destination for the case that no Destination could be found in the SLF Database for the
Subscriber Identity
• destIdentityMissing
Default Destination for the case the subscriber-identity could not be found in a Diameter request
message
• destDestinationUnknown
Default Destination for the case that the Destination found in the SLF Database is unknown
• destLookupFailure
Default Destination for the case that the access to the SLF Database failed
Configuring the SLF 8
• Be careful !! With this rule, every messages from different applications (S6a, Cx, ...) will be
routed according the LookupProfileIMSI. There is be is be an incompatibility with the
selector because each application uses a different format. For example:
• S6a is user-name = <IMSI>
• Cx is user-name = <IMSI>@ims.mnc001.mcc228.3gppnetwork.org
or public-identity = sip:<imsi>@ims.mnc001.mcc228.3gppnetwork.org
• Gx is Subscription-Id = <IMSI>
• etc.
• We should add an expression in the rule to filter only the respective application (S6a,
…) we want.
DscRule=00010
requestExpression="msg.appId = S6a
actionLookup="LookupProfileIMSI"
Subscriber is in SLF 9
• The followings slides will presents some examples of configurations and their
results.
4. destIdentityMissing configured
The subscriber-identity could not be found in a Diameter request message
(it doesn't matter if the subscriber is in SLF or not)
Subscriber is in SLF (S6a application)
Subscriber is no in SLF, destSubscriberNotFound configured 10
Definition
Check that we can route S6a messages to different HSS.
Spectra test aa_314_SLF_S6a_ULR_AIR
Send S6a ULR and AIR
Result expected
IMSI 228019991111111 In the SLF routed to mhss89
IMSI 228019999999999 not in the SLF routed to mdsc81
Configuration
#To add an IMSI in the SLF Database
echo "add | imsi | 228019991111111 | slf_mhss89" | dsc-admin-slf-db -p "imsi age >= 0"
#In DscNode=mdsc85
DscSlf=1
Destination=slf_mhss89
actionPeer ="mhss89"
Destination=slf_mdsc81
actionPeer ="mdsc81"
LookupProfile=LookupProfileIMSI
identityType=IMSI
selector ="msg.user-name"
destDestinationUnknown ="slf_mdsc81"
DscRule=00010
actionLookup="LookupProfileIMSI"
Subscriber is in SLF (Cx application)
Subscriber is no in SLF, destSubscriberNotFound configured 11
Definition
Check that we can route Cx messages to different HSS.
Spectra test aa_315_SLF_Cx_UAR
Send Cx UAR
Result expected
IMPU sip:[email protected] In the SLF routed to mhss89
IMPU sip:[email protected] not in the SLF routed to mdsc81
Configuration
#To add an IMPU in the SLF Database
echo "add | public-id | sip:[email protected] | slf_mhss89" | dsc-admin-slf-db
#In DscNode=mdsc85
DscSlf=1
Destination=slf_mhss89
actionPeer ="mhss89"
Destination=slf_mdsc81
actionPeer ="mdsc81"
LookupProfile=LookupProfileIMPU
identityType=IMSI
selector ="msg.public-identity"
destDestinationUnknown ="slf_mdsc81"
DscRule=00010
actionLookup="LookupProfileIMPU"
Subscriber is in SLF (S6a application)
Subscriber is no in SLF, destSubscriberNotFound not configured 12
Definition
Define a scenario where the Subscriber Identity is not found in the SLF Database. Don't specify the default Destination
for this case (remove destSubscriberNotFound)
Spectra test aa_314_SLF_S6a_ULR_AIR
Send S6a ULR and AIR
Result expected
IMSI 228019991111111 In the SLF routed to mhss89
IIMSI 228019999999999 not in the SLF DSC answers DIAMETER_ERROR_USER_UNKNOWN
Configuration
#To add an IMSI in the SLF Database
echo "add | imsi | 228019991111111 | slf_mhss89" | dsc-admin-slf-db -p "imsi age >= 0"
#In DscNode=mdsc85
DscSlf=1
Destination=slf_mhss89
actionPeer ="mhss89"
Destination=slf_mdsc81
actionPeer ="mdsc81"
LookupProfile=LookupProfileIMSI
identityType=IMSI
selector ="msg.user-name"
destDestinationUnknown ="slf_mdsc81"
DscRule=00010
actionLookup="LookupProfileIMSI"
destIdentityMissing configured
subscriber-identity not found in request message 13
Definition
Define a scenario where the subscriber-identity could not be found in a Diameter request message. Specify the default
Destination for this case (add destIdentityMissing)
Spectra test aa_315_SLF_Cx_UAR
Send Cx UAR instead of S6a ULR/AIR
Result expected
All Cx requests are routed to mdsc81
PS: if you repeat the same test without defining "destIdentityMissing", DSC will reply 5005 DIAMETER_MISSING_AVP
Configuration
#No need to add an identity in the SLF for this test.
#In DscNode=mdsc85
DscSlf=1
LookupProfile=LookupProfileIMSI
identityType=IMSI
selector ="msg.user-name"
destIdentityMissing ="slf_mdsc81"
DscRule=00010
actionLookup="LookupProfileIMSI"
Notes 14
• In the previous examples, the SLF was invoked in the rules like this.
DscRule=00010
actionLookup="LookupProfileIMSI"
• Be careful !! With this rule, every messages from different applications (S6a, Cx, ...) will be
routed according the LookupProfileIMSI. There is be is be an incompatibility with the
selector because each application uses a different format. For example:
• S6a is user-name = <IMSI>
• Cx is user-name = <IMSI>@ims.mnc001.mcc228.3gppnetwork.org
or public-identity = sip:<imsi>@ims.mnc001.mcc228.3gppnetwork.org
• Gx is Subscription-Id = <IMSI>
• etc.
• We should add an expression in the rule to filter only the respective application (S6a,
…) we want.
DscRule=00010
requestExpression="msg.appId = S6a
actionLookup="LookupProfileIMSI"