dsTest Frequently Asked Questions

What information should I send to Developing Solutions Support when requesting assistance?

General Topics Index

dsTest Example Configuration files

Common Errors Messages and Situations

General Questions Regarding Using dsTest

dsTest Features

dsClient GUI FAQs

Licensing FAQs

Operational Measurements

Call Detail Records

Support Requests Tool

The FAQ list covers many of the issues users may incur when first using Developing Solutions' products.

Common Error Messages/Situations

When I start dsTest, I get the message "Failure: Unable to get floating license" or "system corrupt" or failed to read header".

I can not reach my desired total transactions per second with my dsTest configuration.

Can I specify options that will be used each time I start dsTest?

Connectivity issues with my RedHat/CentOS server

How do I generate a core dump when dsTest crashes?

I am unable to register for notifications.

I receive a message about "Control Interface locked".

system corrupt

license invalid

Failed to initialize control interface: Address already in use.

Socket failed to connect

command not found

permission denied

Error starting node

All nodes not starting (large number of nodes)

unable to open primary document entity

File: <file name> failed validation

element <element name> is not allowed for content model

value <value> does not match regular expression facet

Failed to locate/create Subscriber database

Cannot configure existing node

Error setting:msisdn

 

General

How does the S6 Authentication process work?

How does dsTest using the Diameter Secondary Interface?

Can I use a Virtual Machine (VM) with dsTest?

What Operating Systems are compatible with dsTest?

What are the minimum system requirements (including memory usage) for dsTest?

How can I control dsTest with automation tools?

How many actions can be active on a single node at one time?

Where do I set the number of subscribers in my configuration?

Can two or more nodes share a subscriber database?

Why are only 100 of my 1000 subscribers active at any given time?

How can I protect my running tests from other users of the same dsTest server?

What ports must be open for dsClient and dsTest to communicate across a firewall?

What do the values displayed by the Node Status CLI command mean?

Can I define startup options for dsTest?

Can I run multiple instances of dsTest on the same server?

How do I use SCTP Multi-Homing/Mutli-Streaming/Fragmentation with dsTest?

 

dsTest Features

How do I use the Diameter Dictionary to determine how to configure specific AVPs in my messages?

What version(s) of the 3GPP Diameter specifications does dsTest support?

What is Dynamic Identity?

How does S6a Authentication work with dsTest when testing a HSS?

Is there a way to force dsTest SGW and PGW emulator instances to send GTP-U packets over dedicated bearers instead of the default bearer? 

 

dsClient GUI

What version of Java do I need for using dsClient GUI?

When I start the GUI, I get a pop-up error message that says I require a different version.

 

Licensing

When I start dsTest, I get the message "Failure: Unable to get floating license" or "system corrupt" or failed to read header".

How do I start/stop the dsTest license server?

How can I determine the status of my dsTest license?

After starting dsTest, I get a "system corrupt" message.

After starting dsTest, I get an "License Invalid" message.

 

Operational Measurements

My om.db file is corrupt.  How can I recover the information in the file?

How do I view OMs from the command line?

What are Diameter Transaction Timeouts/Transmit Overruns OMs?

What unit of time is used for the Interface Application transaction duration and message delay OMs?

 

Call Detail Records (CDR)

How do I create a csv formatted file from my CDR file?

 

Support Request Tool

What is the URL for the Support Request Site?

What can I do if I forget my password or my user name?

What do the icons indicate?

How can I select multiple fields from a drop-down menu?

Why can't I edit my request after submitting it?

Why can't I add my attachment?

How can I copy and paste my answers from an external source?

How do I contact Developing Solutions Support?

 

What information should I send to Developing Solutions Support when requesting assistance?

Generally, the following information should be provided to Developing Solutions Support when you are requesting assistance with a dsTest issue:

A brief description of what the test is to accomplish;

pcap or other message trace that shows the desired message flow and message content;

dsTest configuration files (xml and/or dsx) used in the test(s);

ds_log file, set at the highest level possible (e.g. level 10) based upon the requirement of the test (Note - a log level above level 6 may impact test performance);

Operational Measurement files (om.db) for the test(s);

Any other information as requested by Developing Solutions Support that may provide additional information

Providing this information with the first request to Developing Solutions Support will speed the investigative process and will allow Support to solve your issue in a timely manner.

Please see Getting Help for more information on gathering this information.  If using dsClient GUI, please use the "Collect Results" button to collect and send the required information.

I can not reach my desired total transactions per second (TPS) with my dsTest configuration.

For the purposes of TPS calculation,  transactions are defined in dsTest as one request and one response.   So the TPS for a test case is the number of transactions in the message flow times the number of flow starts per second.  For example, if your message flow consists of 8 transactions and you start 1000 subscribers per second you would achieve a transaction rate of 8000 TPS.  dsTest will not fail sessions if you exceed the allowed (licensed) TPS but will throttle the starts to maintain the transaction rate at the licensed TPS, unless the allow_overrun element is set to 'true'.

 

Overruns occur when the system attempts to send messages faster than the interface or peer can handle them.  Normally, output is reduced by back pressure (throttling) to prevent overruns, however this prevents errors by reducing transaction rates which may prevent the system meeting its objective transaction rate due to the inability of the network/peer to maintain the rate.  Setting the allow_overrun element to 'true' allows dsTest to maintain the objective transaction rate independent of the ability of the network or DUT to keep up.  

 

There are several reasons why the total TPS target can not be reached.  Each of the items below should be investigated.  The source of the issue may be a combination of these factors.

 

Interface Transaction Count

Check the transaction count for each of the interface applications in your configuration.  dsTest defaults the transaction count to 100.  For tests involving higher TPS,  this is probably inadequate.  Transaction count must be at least the number of transactions that are active at any one time.  For some stateful interfaces such as Gx, an upper limit of transaction count would be the same as the number of subscribers.   For other stateful transactions, such as Rx, it is possible to have multiple sessions active for the same subscriber at the same time, so the upper limit would be the number of subscribers multiplied by the number of sessions active at any one time.

 

Subscriber Count

The number of defined subscribers must support the total TPS configured for your test.  For example,  if you have specified an initial rate of 1000 per second, and the session is active for a total of 10 seconds, you will need at a minimum (1000*10) subscribers defined.  Otherwise, dsTest will not be able to start a new transaction because no subscribers are available.

 

Duration of Call

As described in the two items above, the duration of the call, or the length of time that a session will be active, affects the TPS if you do not have enough transactions or subscribers defined to support the duration of a call and the TPS you are trying to achieve.

 

Your dsTest License

Your dsTest license must support the TPS you are try to achieve.  For example, your license may specify a total of 1000TPS.  This would be the maximum TPS allowed under your license.  If you are on a floating license, and others are sharing the license (and thus the total TPS), less that 1000TPS may be available to you when you are running your test.

 

Your specified TPS when starting dsTest

One of the options when starting dsTest is the -t option.  With this option, you specify the maximum TPS that will be allowed under that test session.  You can not exceed this TPS during your test, so it must be at least the amount of TPS your require in your test.  As pointed out in the previous item, there may not be an adequate number of TPS available if you are sharing a floating license.

 

Other factors not directly related to your dsTest configuration must also be considered. 

The network test configuration

The number of nodes and their placement in the testing environment will affect your achievable TPS.   For example, if you have a license for 10K TPS and have a device under test (DUT) that will be responding back to dsTest in the same server as the transaction originator (such as testing a DRA), the 10K transactions would be spread across both the originating dsTest node and the receiving dsTest node, with approximate 5K sent and 5K received by the dsTest server.

 

Latency and delays in message responses

If your traffic is originating from a dsTest server to an external DUT,  delays in responses from the DUT may affect the number of transaction initiated by dsTestdsTest will attempt to buffer transactions, and will reduce the number of transactions initiated if the response time from the DUT is excessive.  In addition, you should verify that the Diameter timeout value is not set too low.

 

See also this FAQ regarding maximum sessions. 

If you have inspected all of these common reasons for not achieving the desired TPS, and still can not determine why you are not achieving the desired TPS, please contact Support.

Can I specify options that will take affect automatically when I start dsTest?

There are two ways that dsTest startup options can be automatically applied.  If starting dsTest as a service, the file dsTest.conf can specify desired startup options.  If dsTest is started with the command line, the file dsTest.opt can specify startup options.  dsTest.conf is in the directory  /usr/local/devsol/run and will be applied when dsTest is started as a service.  dsTest.opt is in the directory from which dsTest is launched manually (usually /home/devsol).   dsTest.conf takes precedence over dsTest.opt.

 

For more information on dsTest.conf see Running dsTest as a Service.  For more information regarding dsTest.opt, see Launching dsTest.

After installing a license file, a system corrupt message is returned when dsTest is launched.

Licenses are time-sensitive and dsTest requires the date and time on the server platform be accurately configured.  A system corrupt error or unable to get floating license message to is generated when dsTest is started without a valid license or when there is a conflict between the license and the configured date and time on the server.  Developing Solutions recommends synchronizing the server date and time with an NTP server.  Commands for configuring NTP on your system can be found here.  If you continue to receive system corrupt errors after installing your license and confirming that the server is properly configured, please contact Support.

After installing a license file, a license invalid message is returned when dsTest is launched.

Licenses are keyed to specific hardware platforms.  Make sure the proper license is being applied to the proper hardware platform. If you continue to receive license invalid please contact Support.

When dsTest is launched a Failed to initialize control interface error message is returned.

Failed to initialize control interface: Address already in use.

Please insure another instance of the application is not already running

Only one instance of dsTest can be active on a platform.  If a second instance is launched this error message will be returned.

When dsClient is launched a Socket failed to connect error message is returned.

          Socket failed to connect (127.0.0.1): Connection refused

This message is returned when dsTest is not running. After launching dsTest wait 10 to 15 seconds to launch dsClient.

When launching dsTest or dsClient a command not found error is returned.<

<user name>@<test system>:~$ dsClient

No command 'dsClient' found, did you mean:

The most likely cause is that the .bashrc file does not have the path to /usr/local/devsol/bin. The path can be specified as part of the command or you can add this to the PATH in your /home/user/.bashrc file.

When launching dsTest or dsClient a permission denied error is returned.

<user name>@<test system>:~$ dsClient

Permission denied

The most likely cause is that the user does not have root permissions or is not part of the devsol group. We recommend that you add your username to the devsol group with the command:

adduser <user name> devsol

When issuing a start command an error is returned.

Error starting node: <node type>:<node name>

The most likely cause for this error is that the combination of ip_address and port specified in the XML file does not match any of the configured interfaces on the test server.

 

Less frequently, other configuration issues can cause this error to occur, such as a misconfiguration of the subscriber database.  A node will not start unless every defined subscriber has at least one subscriber ID defined.  This situation may occur when using multiple ranges of subscribers.  Ensure that all defined subscribers are included in one of the ranges.  The types of subscriber IDs are:

IMSI

MSISDN

IMEI

Private Identity

Public Identity

Dynamic Identity

This error can also be caused by a duplicate subscriber ID (e.g. IMSI, IMEI, etc).  Make sure that no two subscribers have the same subscriber ID(s) assigned. 

When sourcing an XML document a fatal error is returned.

 

Fatal Error at file , line 0, char 0, Message: unable to open primary document entity '/<path>/<file name>.xml'

 

This error indicates that the referenced file could not be found due to an incorrect path and/or file name.

When sourcing an XML document a validation error is returned.

 

          File: <file name> failed validation

 

All XML documents are validated against the dsTest schema when they are sourced.  The schema defines the content and ordering of the various XML elements, and the types and range of values supported in attributes and elements.  A validation error is returned when the contents of an XML document do not follow the rules laid out in the schema.  Two of the most common validation errors are described below.

Error at file /home/devsol/temp.xml, line 23, char 16, Message: element 'realm' is not allowed for content model '(socket?,host,realm,vendor_id?,product_name,dest_host?,dest_realm?,mode?,cer_wait?,dw_interval?,max_idle?,timeout?,allow_duplicate_peers?)

 

This error indicates that the parameter in the specified position, "realm," is out of place according to the order specified by the dsTest schema. In this document the realm element was followed by the host element but the schema requires that the order be reversed. The correct order is displayed by the list of elements in parentheses ("?" indicates optional elements).

Error at file /usr/local/devsol/config/temp.xml, line 85, char 102, Message: value '1000' does not match regular expression facet '[0-9]{1,2}|[0-1][0-9]{2}|2[0-4][0-9]|25[0-5]|0x[0-9a-fA-F]{1,2}|'

 

This error indicates that the value at the specified position does not match the restrictions defined for the element's value as defined in the schema, which are referred to as "facets."   Facets can consist of a list of valid values (e.g. WLAN, UTRAN, GERAN, etc.) or a list of regular expressions as shown above.  Acceptable values for the subject element are 0-255 decimal or 0x0-0xFF hexadecimal as defined by the facets. Facets are shown in the Restrictions table in the schema help topics.

 

By using dsClient GUI, validation errors are avoided, as building your dsTest configuration using the GUI guarantees that the XML is valid.

 

Can I use a Virtual Machine (VM) with dsTest?

For Node-locked licenses,  dsTest MUST run on a native Linux OS environment.  Virtual Machine (VM) environments are NOT supported with this type of license.

 

For Floating (non-hosted) licenses, the dsTest license server MUST run on a native Linux OS environment.  Virtual Machine (VM) environments are NOT supported for the license server.  Instances of dsTest CAN run of VMs that have connectivity to the license server, but the license server itself must run on a native Linux OS environment.

 

For Floating (hosted) licenses, instances of dsTest CAN run of VMs that have connectivity to the license server.

 

In order to optimize performance, dsTest is tested against real or virtual systems that mirror standard CPU architecture and configurations.  Non-standard configurations, such as those with odd number of cores and/or chip configurations may introduce operational anomalies with dsTest.

What Operating Systems are compatible with dsTest?

dsTest is currently supported on these 64-bit Linux operating systems.

 

How do I start/stop the dsTest license server?

 

To start the dsTest license server:

 

   Ubuntu systems supporting the invoke command:

 

     invoke-rc.d  licenseServer start

 

   Older Ubuntu systems or to manually start:

 

        /etc/init.d/licenseServer start

 

To stop the dsTest License Server:

 

   Ubuntu systems supporting the invoke command:

 

     invoke-rc.d licenseServer stop

 

   Older Ubuntu systems or to manually stop:

 

        /etc/init.d/licenseServer stop

What are the minimum requirements (including memory usage) for dsTest?

dsTest requires a 64 bit processor/memory/OS system, and at least 1GB of memory.  dsTest itself requires a minimum of 400MB of free memory to launch, and  at least 2GB of free disk space.

 

Refer to this topic for a discussion of memory utilization for dsTest and dsTest test configurations.

 

How can I view Operational Measurements from the command line?

Operational Measurements (OMs) are generally collected and reported at the application and interface levels. The available measurements, along with their IDs, types, and descriptions, are shown in the Measurements table in the applicable command schema help topic.  For example, the measurements available for the S6 application are shown here.

To view the application OMs of a running node using dsClient CLI, use the following command:

<node element name>:<node name attribute value> <application element name> om

To view the S6 OMs for a HSS that has not been named:

hss s6 om

To view the S6 OMs for a HSS whose name attribute is set to "hss_1":

hss:hss_1 s6 om

To view the SmartEvents OMs for a SPR whose name attribute is set to "spr_1":

spr:spr_1 subscriber_database subscriber_profiles SmartProfile SmartEvents om

You can use the nodes command to display the element and name values of active nodes.

OM time values are displayed in microseconds, and are reset each OM interval.

Where do I set the number of subscribers in my configuration?

The number of subscribers in a subscriber database is defined by the "count" attribute in the "subscriber_database" element of the configuration section:

          <subscriber_database count='1000'>

Why are only 100 of my 1000 subscribers active at any given time?

The most likely cause is that there are not enough transactions provisioned for the application. The "count" attribute in an application element defines the maximum number of concurrent transactions supported: <gx count='1000'>. If the count attribute is not included the default value is 100. For stateful applications such as Gx or Rx, one transaction spans the lifetime of a subscriber's session and therefore stateful applications must be provisioned to support the number of subscribers that will be active at any given time. For stateless applications such as S6, a transaction only encompasses the request/response exchanges necessary to complete a procedure, allowing those applications to support a smaller number of concurrent transactions for the same number of active subscribers.

Can one or more of my nodes share a subscriber database?

If two nodes share a connection via dsTest, they can NOT share a subscriber database, as both sides (server, client) will be updating the database.  This can lead to unpredictable test behavior and results.

 

Nodes that do not share a connection can generally share a subscriber database.

 

For example, if an MME and HSS share a S6 connection within dsTest, they can NOT share the same subscriber database, as both sides will be updating the database with information specific to the server or client nature of their respective end of the connection.

 

Nodes that do not share a connection within dsTest, such as a MME and a OCS, can share a subscriber database.

When sourcing an XML document a subscriber database error is returned.

source Examples/example_app_s6_hss.xml
Error Returned:
Failed to locate/create Subscriber database: hss
Error at Line 25, char 12, Message: Unsupported element found: imsi
Error at Line 31, char 17, Message: Unsupported element found: auth_type
Error at Line 32, char 11, Message: Unsupported element found: key

.

.

.

The most likely cause is that the configuration file(s) loaded on the test server caused the total number of subscribers provisioned to exceed the total number of subscribers licensed for the system.

When sourcing an XML document an existing node error is returned.

source configs/example_app_ga_cdf.xml

Error Returned:

Error at Line 7, char 22, Message: Cannot configure existing node!! Must use command to alter existing configuration.

This error indicates that at least one node of the same type and name has already been configured on the system, causing a conflict. You can either change the name attribute of the node in your XML document to allow both nodes to be configured, or you can remove the configured node from the system. Delete the node by entering:

<node element name>:<node name attribute value> delete

or

nodes delete  (This will delete all nodes on the system.)

When sourcing an XML document an IMSI error is returned.

source Examples/example_app_s6_hss.xml
Error Returned:

Error at Line 28, char 15, Message: Error setting: imsi

This error indicates that a node with a subscriber database of the same name is already provisioned with this IMSI. Unique subscriber identifiers such as IMSI and MSISDN cannot overlap between groups of subscribers in the same database. When multiple subscriber databases are configured on the system, each must have a unique name attribute value and they can then operate independently.

          <subscriber_database name='hss_db' count='1000'>

<subscriber_database name='mme_db' count='1000'>

 

Not all of my nodes are starting when I have a large number of nodes.

 

If some nodes start but others don't and you determine it is not an IP address issue then it is likely due to the number of open files that Linux permits. By default Linux limits the number of open file descriptors per process to 1K, and you may be hitting this limit.

 

If this is the case you will see the following error in your ds_log file:

 

linuxSocket.cc:initSocket:434:SCTP Socket failed to create: Too many open files

 

To increase the number of open files Linux will permit, two lines should be added to the bottom of /etc/security/limits.conf (you will need root privilege to modify this file):

:

 

*               hard   nofile          65536

*               soft   nofile          65536

 

After modifying and saving the file , reboot the server and then run the command:

 

> ulimit -n

 

It should return 65536.

I am not able to register for notifications.

If you are trying to register for notifications via dsClient CLI and get an error similar to this:

 

Error Returned:

Error at Line 2, char 37, Message: Unable to register failure (wrong client port?)

 

you are probably trying to register for the notification(s) on the high priority client port, which is not allowed.  You can only register for notifications on the low priority port.  To use the low priority port, you must start dsClient CLI using the -s option.  Refer to Launching dsClient.

What are Diameter Transaction Timeouts/Transmit Overrun Errors OMs?

Transmit Overruns can lead to Diameter Transaction Timeouts.  When dsTest is recording Diameter Transaction Timeouts, it is not receiving answers to Diameter messages being sent.   Transmit Overruns means that dsTest is not able to transmit the packets that it is generating because the receiving end is not acknowledging the receipt of those packets fast enough.  Thus the TCP window closes - meaning dsTest can not send more packets - and packets are buffered until they fill the available internal dsTest queues.  Once the queue is full, packets are discarded, and the discarded packets are counted as Transmit Overruns.  Investigate the receiving node(s) to see if it is not able to process messages from dsTest at the rate they are being generated.

What unit of time is used for Interface Application transaction duration and message "Delay" OMs?

These OMs are in microseconds.  For example, see the Gx OM descriptions here.

Failure: Unable to get floating license.

Run the command:

 

 ~>dsTest -f;date

 

and observe the results.  This command should return a license report from the license server, and display the date/time of the local server.

 

This command returns a license report from the license server that shows license resources and availability and a list of the current licenses checked out. 

 

1. If there no report is displayed, then you have an communication issue with the license server.  Check your network connections to insure that your dsTest server can talk to the license server.   See this FAQ regarding which ports must be open on your server.

 

2. If a report is displayed, it will show the current situation of the resources in your license.  There must be sufficient resources to grant the license you are requesting (TPS, subscribers, etc).  If there are not sufficient resources then you will not be granted a license. The users that have checked out resources from the license are displayed, and you must contact those users to resolve the issue.

 

3. If there are multiple instances of dsTest running on the same server, each instance of dsTest must be assigned a unique management address using the -i option when starting dsTest.

 

4. Licenses are time-sensitive and dsTest requires the date and time on the server platform be accurately configured.  compare the date/time from the license server with the date/time of the local server.  See this FAQ about using NTP to keep your server in sync with the license server.

 

5.  Licenses are keyed to specific hardware platforms.  Make sure the proper license is being applied to the proper hardware platform.  If you continue to receive an error please contact Support.

 

How can I determine the status of my current dsTest license?

You can get license information from your dsTest servers using the dsClient ‘license’ command as shown below.

For floating licenses (hosted or non-hosted), you can get additional resource usage information regarding your license by using the ‘dsTest –f’ command as shown below.  This option will NOT launch dsTest, and can be executed while dsTest is running.

Node-Locked Licensing

~> dsClient

Application: dsClient  Version: 2.7.20131030a  Build: Wed Oct 30 18:18:08 2013

dsTest> license

License Name: test46  Serial Number: 4d674d6745d4d7

Version: 2.7 Expires: 50:9:34 (days:hours:minutes)

 

dsTest> license:verbose:1

License Name: test46  Serial Number: 4d674d6745d4d7

Version: 2.7 Expires: 50:9:32 (days:hours:minutes)

 

      work_threads contents:11

      interfaces contents:2048

      subscriber_database contents:60000000

      diameter_agent contents:true

      gtp_cv1 contents:true

      gtp_cv2 contents:true

      interface_bp end='both' contents:true

      interface_c end='both' contents:true

      interface_cc end='both' contents:true

      interface_cx end='both' contents:true

      interface_d end='both' contents:true

      interface_ga end='both' contents:true

      interface_gc end='both' contents:true

      interface_gd end='both' contents:true

      interface_ge end='both' contents:true

      interface_gf end='both' contents:true

      interface_gr end='both' contents:true

      interface_gs end='both' contents:true

      interface_gx end='both' contents:true

      interface_gxx end='both' contents:true

      interface_rf end='both' contents:true

      interface_ro end='both' contents:true

      interface_rx end='both' contents:true

      interface_s6 end='both' contents:true

      interface_s6b end='both' contents:true

      interface_s9 end='both' contents:true

      interface_s13 end='both' contents:true

      interface_sd end='both' contents:true

      interface_sgs end='both' contents:true

      interface_sh end='both' contents:true

      interface_slg end='both' contents:true

      interface_sls end='both' contents:true

      interface_sta end='both' contents:true

      interface_swa end='both' contents:true

      interface_swm end='both' contents:true

      interface_sy end='both' contents:true

      interface_wx end='both' contents:true

      protocol_radius contents:true

dsTest>

Floating Licensing (non-Hosted or Hosted)

~> dsClient

Application: dsClient  Version: 2.7.20131030a  Build: Wed Oct 30 18:18:08 2013

dsTest> license

License Name: test46  Serial Number: 4d674d6745d4d7

Version: 2.7 Expires: 0:0:6 (days:hours:minutes)

Floating License Server: 192.168.34.55

 

dsTest> license:verbose:1

License Name: test41  Serial Number: 4ea102f4af847

Version: 2.7 Expires: 0:0:5 (days:hours:minutes)

Floating License Server: 192.168.34.55

License Server: 192.168.34.55  Status: ACTIVE

 

      interfaces contents:10

      subscriber_database contents:1000

      trans_per_sec contents:20000

      floating_license contents:true

      diameter_agent contents:true

      pass_thru_data contents:true

      gtp_cv1 contents:true

      gtp_cv2 contents:true

      native_socket contents:true

      interface_c end='both' contents:true

      interface_cc end='both' contents:true

      interface_cx end='both' contents:true

      interface_d end='both' contents:true

      interface_dhcp end='both' contents:true

      interface_ga end='both' contents:true

      interface_gc end='both' contents:true

      interface_gd end='both' contents:true

      interface_ge end='both' contents:true

      interface_gf end='both' contents:true

      interface_gr end='both' contents:true

      interface_gs end='both' contents:true

      interface_gx end='both' contents:true

      interface_gxx end='both' contents:true

      interface_rf end='both' contents:true

      interface_ro end='both' contents:true

      interface_rx end='both' contents:true

      interface_s6 end='both' contents:true

      interface_s6b end='both' contents:true

      interface_s9 end='both' contents:true

      interface_s13 end='both' contents:true

      interface_sd end='both' contents:true

      interface_sgs end='both' contents:true

      interface_sh end='both' contents:true

      interface_slg end='both' contents:true

      interface_slh end='both' contents:true

      interface_sls end='both' contents:true

      interface_sta end='both' contents:true

      interface_swa end='both' contents:true

      interface_swm end='both' contents:true

      interface_sy end='both' contents:true

      interface_sy_legacy end='both' contents:true

      interface_wx end='both' contents:true

      interface_radius end='both' contents:true

      interface_3gpp_radius end='both' contents:true

      interface_wa_radius end='both' contents:true

dsTest>

 

~> dsTest -f

 

License Status:

Resources Report: test41  users: 6(4)

Resources Total(Available): cores: 0(0)  tps: 80000(40000)  subs: 2000000(1998000)

Resources Total(Available): interfaces: 1000(970)  connectionless: 0(0)

 

Client Host Name: test42   Contact:

Resources Used: cores:0   tps: 20000   subscribers: 1000  interfaces: 10  connectionless: 10

Expires in: 419 seconds

 

Client Host Name: test41   Contact: support@developingsolutions.com

Resources Used: cores:0   tps: 20000   subscribers: 1000  interfaces: 10  connectionless: 0

Expires in: 378 seconds

 

~>

 

Note the email address specified in the output of the dsTest -f -- this should be the email you should contact to resolve your dsTest resources issues. 

 

Licenses are time-sensitive and dsTest requires that the date and time on all servers be properly configured and that the configured date and time on the License Server and all servers that request licenses from the License Server be within 5 secondsDeveloping Solutions recommends synchronizing the server(s) date and time with an NTP server.  An error message is generated when dsTest is started without a valid license or when there is a conflict between the license and the configured date and time on the server.  If you continue to receive "system corrupt" errors after installing your license and confirming that all servers are properly configured, please contact Support.

 

A "WARNING: Client and Server Time of Day not synchronized"" message is generated by the dsTest -f command if the servers are not synchronized.

 

What ports must be open for dsTest and dsClient GUI?

If traffic between dsClient and dsTest must transit a firewall, TCP ports 9996-10008 and UDP port 10009 should be allowed in both directions.  If only individual ports can be opened, the following ports must be opened:

 

9996   - CDR streaming (closed when not in use)

9997   - Packet streaming (closed when not in use)

9998   - High priority port for dsClient (always open)

9999   - Low priority port for dsClient (dsClient -s option) (always open)

10000 - SmartControl (closed when not in use)

10001-10003 (for future use)

10004 - Redundancy (not currently used)

10005-10008 (for future use)

10009 (UDP) - Floating License Server (always open for floating license installations)

 

What is the URL for the Support Request Site?

Click on the link above or copy and paste this link into your browser: https://support.developingsolutions.com/request

What can I do if I forget my password or my user name for the Support Request Site?
From the login screen, click on "If you have forgotten your password, click here."  On the Reset Password Page, enter your email address, your user name, or both (both will be required if your email address is associated with more than one account) and then type the Challenge Code that appears into the Confirmation Code field.  If the email address and/or user name that you entered match those on your account, a new password will be created and mailed to the email address on record.  The reset email contains a link that will automatically log you in. You will have to change your password before you are allowed to access any other page.

If you are unable to provide enough information to uniquely identify the account, contact Developing Solutions Support.

What do the icons indicate?
The icons represent the status of each form:

 Add a new request.

 Export selected CRs to a csv file.

 Import values to a CR from a csv file.

 Print selected requests.

 Save current work.

  A green check mark indicates that all of the required fields in a form have been completed.

 A yellow check mark indicates that all of the required fields in a form have been completed, but some optional fields are empty. This is only a warning and will not prevent you from submitting your document.

 

 A red X is shown when at least one required field in a form is empty or contains an invalid entry. Your document cannot be submitted while any of its forms are incomplete. If you hover your mouse over the X, pop-up text will list the reasons that a form is considered incomplete.

How can I select multiple fields from a drop-down menu?
Some answers allow multiple values from a drop-down menu. Always use the "Ctrl" key on your keyboard when you click with the mouse to select additional values. If you do not use the "Ctrl" key, all other options will be cleared. If you change your mind and want to clear selected value, use the "Ctrl" key again and click on the value that you want to clear. REMEMBER: "Ctrl" key + mouse click will select or clear one value.

Why can't I edit my support request after submitting it?
Once you submit your request, your editing capabilities are removed. If you need to make any changes, contact Developing Solutions Support and request that your document be "un-submitted."

Why can't I add my attachment?
The size of an attachment has to be less than 100 Megabytes. Please make sure that the file that you are trying to attach does not exceed that size.  Refer to Getting Help information on what data to collect and how to submit it.

How can I copy and paste my answers from an external source?
If you want to copy and paste from an external file into the support request,  use "Ctrl"-C for copying the selected text and "Ctrl"-V for pasting the copied text.

How do I contact Developing Solutions Support?
Contact Developing Solutions Support.

What is Dynamic Identity?

The dynamic identity feature allows dsTest to learn the identity of an attaching subscriber from the value in the request.  When dynamic identity has been configured and an unknown identity value is received dsTest will attempt to assign that value to the next available subscriber (the next subscriber that does not already have a value for that particular identity).  You can configure an identity for a portion of the subscribers in your database and allow the values in the remaining subscribers to be assigned dynamically.  If you configure a particular identity for all subscribers in your database, however, you have effectively disabled dynamic identity since there will not be any subscribers that can receive a dynamic value.  See: Dynamic Identity.  

What do the values displayed by the Nodes Status command mean?

 

   spr name='spr_1' -------------------------------- Note 1.

      status

         started contents:true --------------------- Note 2.

         ready contents:true ----------------------- Note 3.

         active contents:false---------------------- Note 4.

         interfaces_connected contents:0 ----------- Note 5.

      pcef name='pcef_1'

      status

         started contents:true

         ready contents:true

         active contents:false

         interfaces_connected contents:1

 

1. Name of the node.

2. 'Started": Node is started/has received a start command and was successful in binding to the IP Address/source port defined in the configuration.  SPR nodes do not have to be started unless they contain SmartEvents action commands.

3. 'Ready':  Node is started and has at least one application ready and has successfully established a connection with at least one other node and is thus ready to receive or send  messages.

4. 'Active':  Node is actively generating messages to be sent to other nodes.  This does not apply to sending responses to messages received from other nodes.  This status will be true if the node was sending out (for example) inserts, inits, or cancels as a result of an action command.

5. 'Interfaces_connected': A count of the active interfaces on a node.  If there is one node connection,  would be '1', if there were 4 nodes connected,  it would be 4, etc.  SPR nodes do not have connections, so this will always be '0' for an SPR node. 

 

Interface_connected:0    would indicate there are no other nodes currently attached.  This would be true if you sourced the node and did a status before starting the node or if a peer node has not attached for some reason.

 

See Node Status for more information.

How do I use the Diameter Dictionary to determine how to configure specific AVPs in my messages?

The best way to determine the configuration element that relates to an AVP is by using our Diameter Dictionary.

 

Once you go to the Dictionary you will see an expandable tree on the left.  You can look up AVP or messages by application which will define all of the AVPs.  For example, go to Applications>3GPP Gx and start with the Credit-Control-Request Gx.  When you select this tree element the right hand pane will display information about that message.  Scroll down to the Contained AVPs table.  Here you can find the individual AVPs.  If you select an AVP name in the first column that particular AVP will be opened and you can see all of the information regarding that AVP. 

 

You can then use the back button on your browser to go back to the previous page.  If you look at the right hand column of the Contained AVPs table you will see Value Source.  If there is an value source entry, it is a fixed value (not configurable, i.e. Auth-Application-Id) or a configuration element name for dsTest.  If you click on the element, the dsTest OnLine Help schema definition will open in a new window.  You can use the element name to locate the field in the GUI.  The element tree in the GUI is the same as the element tree displayed on the left when you select the individual element, allowing you to locate it in the GUI.

What version(s) of the 3GPP Diameter specifications does dsTest support?

dsTest tries to provide full functionality for each release (R11, R10, R8, R9).  If  you have a requirement for functionality that is not currently supported, we will do our best to add support for it.  Our goal is to provide all the functionality that our customers are interested in using, within the boundaries of the 3GPP specifications.

 

Not all interface applications require that a specific version be configured for the application.  dsTest tries to provide the desired functionality based upon data within the configuration.  For example, if a new release may contains a new AVP, dsTest may decide to send that AVP based on the availability of configuration data for that AVP rather than the release version specified.  However, the configuration data may not have enough information to determine how the message should be formatted or processed.  In this case, configuration of the specific desired version would be required.

 

For an interface applications such as Gx, the major release version is specified within the Supported-Features AVP.  However, for R11, there is not a 'Release 11' bit specified within the Supported-Features AVP.  In this case, Developing Solutions may have to add missing functionality based upon your requirements. 

 

Turnaround on these types of changes is typically very short, depending upon the desired functionality. Contact Developing Solutions Support to request additional dsTest functionality.

How does S6a Authentication work with dsTest when testing a HSS?

When the HSS is the device under test, dsTest simulates both the MME and the UE.  For s6a authentication both the UE and the HSS have to know the key and the op or opc.  These are used as input to the authentication algorithm (Milenage, TUAK, etc.) which generates vector sets.  The vector sets are then transmitted from the HSS to the MME in the S6a AIA message and the UE checks the set it generated against this set from the HSS.  If they don't match, authentication fails.

 

Diameter success in the AIA means the HSS was able to locate the requesting subscriber in its database and was able to generate the necessary vectors.  It does NOT mean that authentication was successful.  The primary reason the AIR would fail at the HSS is because the subscriber-id could not be found (Unknown Subscriber).

 

References: 3GPP TS 33.102 and 3GPP TS 35.205

See also this FAQ on the Authentication Process.

What version of Java do I need to use dsClient GUI?

dsClient GUI supports Java version 7 and 8.  Download Java from this Java website.  For best performance and results, you should use always use the version of Java that fits the platform and browser you are using (64-bit or 32-bit).  Be sure get the correct version for your platform.  Note the caution on the Java download page: "If you use 32-bit and 64-bit browsers interchangeably, you will need to install both 32-bit and 64-bit Java in order to have the Java plug-in for both browsers."

My om.db file is corrupted.  How can I recover the information in the file?

The usual cause of om.db to be corrupted is because it was copied from the dsTest server before it was closed.  om.db is closed only when one of these actions occur:

dsTest is stopped and restarted;

All dsTest nodes are deleted;

the command 'diag om close' is executed.

 

If you have a corrupted om.db file, you can attempt to recover at least some of the data in the file by using the dprp utility that is provided with dsTest.  In the directory from which you start dsTest (usually 'devsol'), execute the following CLI command:

 

          > dbrp -d <database file> -o <output file name>

 

dbrp will recover counters, intervals, and objects OM information from the input database file and write the results to the specified output file.

Is there a way to force SGW and PGW dsTest emulator instances for sending GTP-U packets over dedicated tunnels instead of the default tunnel?

 

When creating a dedicated bearer, a Traffic Filter Template (TFT) can be defined for the data to be sent over that bearer.  dsTest will send the data on the bearer matching the TFT.

 

TFTs consist of components:

 

Component Types (defined in TS 24.008) are:

    Remote IPv4 = 16

    Local IPv4 = 17

    Remote IPv6 = 32

    Local IPv6 = 35

    Protocol = 48

    Local Port = 64

    Local Port Range (end) = 65

    Remote Port = 80

    Remote Port Range (end) = 81

    SPI = 96

    TOS = 112

    Flow Label = 128

 

Refer to the example below.  The component value is a hex string.  Note the mask needs to follow the IP addresses as the example indicates.  A packet to match filter 1 below would have a source IP address of 10.10.2.1 and a destination address of 192.1.0.1.  The f's following the address indicate a 32 bit mask.  The mask can be modified to accept a range of addresses.

 

<bearer_tft>

          <op_code>Create</op_code>

          <e_bit>0</e_bit>

          <num_filters>2</num_filters>

          <packet_filter>

              <id>1</id>

         <direction>1</direction>

         <precedence>1</precedence>

         <component>

         <component_type>16</component_type>

            <component_value>0x0a0a0201ffffffff</component_value>

         </component>

         <component>

            <component_type>17</component_type>

            <component_value>0xc0010001ffffffff</component_value>

         </component>

      </packet_filter>

      <packet_filter>

         <id>2</id>

         <direction>2</direction>

         <component>

            <component_type>16</component_type>

            <component_value>0x0a0a0201ffffffff</component_value>

            </component>

         <component>

            <component_type>17</component_type>

            <component_value>0xc0010001ffffffff</component_value>

            </component>

     </packet_filter>

   </bearer_tft>

 

To filter all ICMP messages you would use:

 

<bearer_tft>

      <op_code>Create</op_code>

      <e_bit>0</e_bit>

      <num_filters>1</num_filters>

      <packet_filter>

         <id>1</id>

         <direction>1</direction>

         <precedence>1</precedence>

         <component>

            <component_type>48</component_type>

            <component_value>0x01</component_value>

         </component>

      </packet_filter>

   </bearer_tft>

 

Refer to bearer_tft for more information.

How do I create a core dump when dsTest crashes?

 

If dsTest crashes,  Developing Solutions Support may request a core dump file.   You first need to make sure core files are enabled on the server by using the following command:

 

~>ulimit -a   

 

If the core file size is given as 0, core dumps are disabled. 

 

Set the core file size with the following command:

 

~>ulimit -c unlimited

 

for unlimited resources or:

 

~>ulimit -c xxxxxxx 

 

where xxxxxxx is the number of 1KB blocks that are to be allocated for core dumps.  This size should be equal to the size of memory on the server so the content of all memory is contained in the core file.

 

Rerun the test to see if a core dump file is created.  If, after enabling core dumps on the server, a core dump file is still not created, launch dsTest with the  -O option and run the test again.   A core dump file should be created in the directory from which you launched dsTest.

How do I use SCTP Multi-Homing/Mutlistreaming/Fragmentation with dsTest?

 

dsTest utilizes the standard Linux OS drivers for SCTP.   Multi-homing, Multi-streaming and Fragmentation/Reassembly are features of those drivers and the Linux OS, not of the dsTest application.  dsTest provides configuration support for Multi-homing by permitting multiple IP Address in the SCTP socket configuration.   For multi-homing, the client and server advertise multiple address and either side can use any of the addresses that are advertised but the primary (1st address in the list) is used unless it becomes unavailable.

 

It is possible that you will need to adjust some Linux parameters, such as the retransmission timers, to make Multi-Homing work on the dsTest server.   There are example configurations on the dsTest server in /usr/local/devsol/dstest/examples and in the GUI XML library that demonstrate how to configure multi-homing in dsTest.

 

For Multi-streaming, dsTest will initiate Diameter messages on stream 0 and it will receive and respond to messages received on other streams (1-15).  For M3UA,  the specification RFC 4960 states management messages will utilize stream 0 and all other messages will not utilize stream zero (0).  dsTest uses stream one (1) for data messages and will respond to data messages received on streams 2-15.  You can find some configuration elements for SCTP to help with the OS settings in the SCCP SCTP Socket or the Diameter SCTP Socket.

 

Fragmentation/Reassembly is handled by the Linux OS after/before the messages are handed to the dsTest application.  The ability to send and reassemble fragmented packets will be determined by the settings in the OS. 

How does dsTest use the secondary Diameter Interface?

 

dsTest will retry on the alternate interface when it is available under the following conditions:

 

Current interface failure.  All requests that are pending a response and any new requests will use the alternate interface.

 

When a DIAMETER_TOO_BUSY response is received and retries are enabled,  dsTest will delay for 3 seconds and then resend the request on the alternate interface with the retransmit  bit set.

 

When the UNABLE_TO_DELIVER response is received.

 

When the request times out and retries are enabled, dsTest will delay for 3 seconds and then resend the request on the alternate interface with the retransmit  bit set.

 

Retries are enabled under the interface application (e.g, gx, s6 ...) as <retry_count>.

 

Theses are the only cases under which a request will be retransmitted.

 

There are example configurations on the dsTest server in /usr/local/devsol/dstest/examples and in the GUI XML library that demonstrate how to configure redundancy/secondary diameter interfaces  in dsTest.

When I start the GUI, I get a pop-up error message that says I require a different version.

This message indicates that your dsClient GUI installation and one or more of your dsTest installations are not compatible. You will need to insure that you have the latest dsTest and dsClient GUI installed before you can proceed.  See Managing Your Servers.

How many actions can be active on a single node at one time?

The number of actions that can be started on a single node at any one time is limited. Developing Solutions Support if you think you are having an issue starting multiple actions on the same node at the same time.

How does dsTest provide authentication with an emulated HSS node?

 

A sample configuration for s6 on a dsTest HSS node emulator can be found in the dsClient GUI by selecting the folder icon on the left side of the workspace, expanding the read-only Examples folder, selecting the S6 folder and selecting the example_app_s6_hss.dsx file.  XML versions of the same example files can be found on the dsTest test server in the /usr/local/devsol/dsTest/examples folder.

 

The authentication process uses the configuration elements in the Authentication Profile  and Subscriber_Group Subscriber_Identities  configuration information when using one of the vector generation functions.  If fixed vectors are to be used, they must be configured in the Fixed Vector Values section.

 

The Authentication Process

 

When subscriber makes an authentication request, it is forwarded to the HSS in an S6 AIR message that contains the subscriber identity (Username AVP - normally the IMSI) and the number of requested vectors.  The HSS locates the subscriber in its database using the subscriber identity  and returns a set of vectors (based on the Authentication Profile and Identity information) in an S6 AIA message.  The type and number of the vectors are determined by the test case configuration.  Upon receiving the AIA from the HSS, the subscriber will use the information it has and some of the information returned by the HSS (specifically the RAND) to generate a set of vectors based on its configuration and compare those vectors to the ones received from the HSS.  If the vectors match the authentication is successful.  If the information does not match, authentication will fail.

 

There are two basic configurations that can be used:

Dynamic Vectors (how the network normally works)

Fixed Vectors.

 

For Dynamic Vectors, the HSS uses the configuration in the Authentication Profile, primarily the Authentication Type, Authentication Algorithm and the Generated Vectors, to determine the type and number of vector sets to generate and returns that information in the AIA message.

 

The Authentication Type determines what vectors are generated:

GPRSr99 = 2G

UMTS = 3G

EUTRAN = 4G. 

The Authentication Algorithm will determine what algorithm will be used to generate the vectors:

Milenage (default and what the network normally uses)

TestUSim (used in some lab simulations)

Fixed 

The vectors values are:

RAND

AUTN,

(X)RES

Kasme

CK

IK

KC

For UMTS (UTRAN), the vector set includes RAND, RES, AUTN, CK and IK. 

For EUTRAN, the vector set includes RAND, RES, AUTN and Kasme.

 

When the Milenage or TestUSim authentication algorithm is used, dsTest will use the KEY and OP or OPc defined in the Subscriber_Identities as inputs to these algorithms in order to generate the required set of vectors.  In order for a Dynamic Vector authentication to succeed the UE and HSS must share the same Key and OP or OPc information.

 

If the Fixed authentication algorithm is selected, the HSS will not generate any vectors but instead supply the vectors that are configured in the Fixed Vector Values section of the Subscriber_Group.  Since the vectors are not generated by the HSS, the Key and OP or OPc information is not used and the Authentication Type is used to determine which fixed vector set is sent.

See also this FAQ on the HSS authentication process.