OK, so you should now have a nice and shiny Seagull installation located in the following directory:
/opt/seagull
If it isn’t, then check you’ve followed all the steps in the “How to Install Seagull Diameter Test Tool on a Linux server“ article.
The following sub-directories will be in the /opt/seagull directory
# ls config diameter doc logs run scenario
Here’s what they all mean:
/opt/seagull/doc directory contains documentation for all the installed protocols (if available)
/opt/seagull/[protocol]/doc directory contains documentation for a specific protocol
NOTE: As we are focused on Diameter, we’ll use the diameter protocol from now on for this example.
/opt/seagull/diameter/config directory contains the XML configuration files and dictionary files
/opt/seagull/diameter/logs directory contains is initially empty but will contain execution log files
/opt/seagull/diameter/run directory contains the shell scripts used to run the client and server in order to execute your scenarios
/opt/seagull/diameter/scenario directory contains the scenarios
Step 1. Define the client configuration
Define the correct client configuration in
/opt/seagull/diameter/config/conf.client.xml
Step 2. Define the dictionary
Define the correct dictionary file in
/opt/seagull/diameter/config/base_ro.xml
Step 3. Define the scenario
Define the correct scenario file
/opt/seagull/diameter/scenario/ccr-cca.client.xml
Step 4. Create the run script
Edit the run script and make sure it uses the correct files that you have created
cd /opt/seagull/diameter/run vi start_client_gx_ccr_cca.ksh #!/bin/ksh export LD_LIBRARY_PATH=/usr/local/bin seagull -conf ../config/conf.client.xml -dico ../config/base_ro.xml -scen ../scenario/ccr-cca.client.xml -log ../logs/ccr-cca.client.log -llevel ET
Step 5. Run the test!
Execute the run script to start the client
cd /opt/seagull/diameter/run ./start_client_gx_ccr_cca.ksh
Have fun!
Isaac Castro
Hi, your explanation is crystal water! question… could you please share me the config, library and run script in order to used it as frame for my lab? I am interested in Gx and Sh/Sp
Thank You!
Isaac Castro
Kerry
Hi Isaac, thanks for your comment.
You need to update or create the following files:
Good luck – let me know if you need any further info!
Kerry
Yajuvendra Rawat
Hi,
Nice explaination, I need to know what extra I need to do for sctp connection. I have already setup s6a for tcp but now I want to do it over sctp.
Br..
Yaju
Kerry
Hi Yaju, thank-you for your kind comments.
Thankfully, Seagull supports several transport protocols including TCP, UDP or SCTP, and all three can be used over IPv4 or IPv6 if desired.
You first have to define the transport to use and then a channel for the transport that you have defined.
Both transport and channels are defined in the generic configuration file, which is the file located in /opt/seagull/diameter/config called conf.client.xml
Example configuration to use SCTP over TCP:
where w.x.y.z:abcd is the IP address and port number for the server you are making a connection to.
Once defined in conf.client.xml you can then use that channel in your scenario file (which should be located in /opt/seagull/diameter/scenario) for each message that makes up your scenario:
Some important things to remember:
1. Seagull only supports SCTP over TCP transport on linux platform.
2. You will need “root” privileges to execute Seagull when using SCTP transport.
3. Seagull supports SCTP transport with SCTP library in version 1.5 and SCTP Socket api library in version 1.9.0 so make sure that you have the correct library installed on your machine. See http://www.sctp.de for more details.
Hope that helps!
Kerry
Satya
Hi,
I am setting up the diameter server for the first time, so you can please share me what are all the files i need to modify in order to get the diameter server working. Could you please send me the configuration files so that i can edit the files accordingly.
Thanks,
Satya
Kerry
Hi Satya,
Thanks for your question.
The setup for a Diameter server is almost exactly the same as for the client example, except that you need to use the server files rather than the client files.
Assuming you have installed Seagull ok on your machine, then you’ll need to edit and configure the following files:
Define the server configuration:
Define the server scenario file:
Also, you’ll need to make sure that all the Diameter AVPs you require for your application have been configured in the dictionary file:
Note: The dictionary file is used for both clients and servers, so there isn’t a separate dictionary file for the server.
Let me know how you get on!
Kind regards,
Kerry
Joan Fu
Hi Kerry,
Thank you for the explanation regarding running Seagull over SCTP. I am trying to get my Seagull to run over SCTP in Linux to generate Diameter messages. But I am quick stuck. I have the following questions/issues:
1. What do you mean that Seagull only supports SCTP over TCP on Linux?
2. I downloaded the SCTP and Socket API libraries from http://www.sctp.de. However, when gunzip the libraries (sctplib-1.0.15.tar.gz and socketapi-2.2.8.tar.gz), Linux complains that these are not in zip format. I then removed .gz, so they are only .tar files, and run tar -xzvf on them, but get complaints that these are not tar archives. Not sure how to resolve this.
3. I then installed lksctp by running “yum install lksctp*”. Hoping that this could get me the SCTP library. The installation went just fine. I then copied the libsctp.so from /usr/lib64 to /usr/local/bin. I also modified the conf.sctp_client.xml to refer to libsctp.so. However, when I run the Seagull start_ script, Seagull outputs:
|E|Symbol [/usr/local/bin/libsctp.so: undefined symbol: create_cipio_instance]
|E|Symbol [/usr/local/bin/libsctp.so: undefined symbol: delete_cipio_instance]
|A|STOP log
If you could give me any advice on these issues I have, it would be very helpful. Thank you in advance.
Joan
Kerry
Hi Joan,
Thanks for your questions! I’ll attempt some answers as follows:
1. The official http://gull.sourceforge.net website states that “…Seagull supports SCTP transport with SCTP library in version 1.5 and SCTP Socket api library in version 1.9.0”. However, it then goes on to say that “Seagull only supports SCTP over TCP transport on linux platform”
Also, what version of Linux are you using? The Seagull code has not been updated in quite a while, so it may be that if you are using a modern version of CentOs or Ubuntu (for example) your problems may be more deep-rooted and require a bit more work. Although I’ve not had to do this myself, there is some information that may be of use at https://github.com/codeghar/Seagull
2. Try using tar (which handles .gz as well). On my CentOs v6.7 system, I can do the following:
To list the files in the archive:
To extract the files in the archive
Hope that helps – please do let me know if you make any further progress as it’s always good to collect knowledge together and share learnings with others!
Warm wishes,
Kerry
Vivek
Hey Kerry,
Im totally new to Seagull. Can you please share some reference docs on how to actually use it.
Thanks in advance.
Best Regards,
Vivek.
Kerry
Hi Vivek,
All the Seagull documentation can be found online here -> http://gull.sourceforge.net/doc/
Kerry
Vivek
HI Kerry,
Thanks a ton for a quick turn back.
Yes I’ve been there but kind of no luck for me to understand the flow.
I’ve got a task to do research on this.
Will soon be starting testing on this.
Do we have any other site?
Thanks again.
Regards,
Vivek.
Kerry
Hi Vivek,
Being open source there’s not any official documentation out there (other than what is on the
sourceforge site).
What do you need to know specifically.. maybe I can help?
Kerry
Vivek
I’ve downloaded ‘Seagull’ and have installed it. Don’t know on how to proceed next 😐
Regards,
Vivek
Kerry
Ok, what protocol are you trying to test and are you wanting to act as a client or a server?
Vivek
TBH, no idea at all. 🙁
Joshua
When I try to use the octacp. I get the error bellow.
[email protected]:/opt/seagull/octcap-env# cd run/
[email protected]:/opt/seagull/octcap-env/run# ls
external_data.csv start_client_itu.ksh start_server_itu.ksh
start_client_ansi.ksh start_server_ansi.ksh
[email protected]:/opt/seagull/octcap-env/run# ./start_client_ansi.ksh
|E|Unable to open library file [libtrans_octcap.so] error [libtrans_octcap.so: cannot open shared object file: No such file or directory]
|A|STOP log
[email protected]:/opt/seagull/octcap-env/run#
Kerry
Hi Joshua,
By default, Opencall TCAP (OCTCAP) support is disabled when compiling Seagull, but there is some excellent information at http://gull.sourceforge.net/doc/octcap.html that will hopefully help you to setup.
Kind regards,
Kerry
Naji
Dear Kerry,
Please, I am new to the seagull and I want to generate traffic between GGSN and PCRF over Gx interface, and test scenarios.
Can you please help me what to do,
1-) which files I have to modify from the previously mentioned.
2-)There is any document to understand diameter protocol and AVPs?
Sincerely yours,
Kerry
Hi Naji, you can operate Seagull in client or server mode. The Gx interface exists between the GGSN and PCRF, so in your case you can either setup a Seagull server to respond to Gx requests from the GGSN, or setup a Seagull client to send requests to the PCRF.
To simulate network traffic into the GGSN (to then trigger Gx transactions towards the PCRF) would require a traffic generator on a different interface on the GGSN (for example, GTP-C) so Seagull would not be the best tool to do that!
You could make use of Seagull to send traffic directly to the PCRF, and checking the responses, thereby simulating the GGSN, but obviously that may be a different use case scenario to the one you require.
Pat A
Hi Kerry,
I am interested in sh interface. In my scenario, Seagull tool acts as HSS . I have to generate message types like UDR-UDA, SNR-SNA, etc. for this interface. How do I configure these message flows [UDR/UDA, SNR/SNA] on Seagull?
Thanks
-Pat
Pat A
Hi Kerry,
I am primarily interested in generating diameter UDR/UDA traffic thru Sh interface using Seagull tool. Can you assist in it?
Thanks
-Pat
Kerry
Hi Pat,
To setup the Sh interface you need a new dictionary file that is not included in the standard Seagull build.
However, it is available on Github at https://github.com/codeghar/Seagull/blob/master/seagull/trunk/src/exe-env/diameter-env/config/base_sh.xml
Once you have created the sh dictionary file, put it in the following directory
It’s now available to use in you scenario!
Kind regards,
Kerry
Joao F
Hi Kerry,
i would like to know if it’s possible to setup a different interface.
I need a scenario with Diameter EAP R and Diameter EAP A commands. A side of creating a new base file and the correspondent scenario, what i have to do?
Thanks,
Joao
Kerry
Hi Joao,
I’ve not used EAP before but Wikipedia states that “…EAP is not a wire protocol; instead it only defines message formats. Each protocol that uses EAP defines a way to encapsulate EAP messages within that protocol’s messages”. Diameter is one of the protocols listed that is able to encapsulate EAP messages.
So I think that as long as you can define the correct messages in the Diameter dictionary files then it should work. Remember to also include the CER/CEA and DWR/DWA messages in the default sections of the scenario file.
I’m very interested to find out how you get on so please let me know!
Best wishes,
Kerry
Joao F
Hi Kerry,
it’s finally done, and it is working well. As you said, i had to include CER/CEA and DWR/DWA.
thanks a lot.
Best wishes,
Joao
Kerry
That’s great news and you are most welcome!
Manirou
Hi Joao,
can you please help me with your configuration files
Alexandra
Hey Kerry,
Im totally new to Seagull. I want to use Seagull for testing my OCS, using Diameter Ro Credit Control Requests (CCRs).
what files do I need to configure in Seagull?
Im guessing the same as you’ve described in you text before, please let me know if I’m correct:
1- Define the client configuration – conf.client.xml
2- Define the dictionary – base_ro.xml
3- Define the scenario – ccr-cca.client.xml
I do not need to configure anything in the conf.server.xml, correct? Since “my server” will be my own mediation that will be configured to receive this traffic.
Thanks in advance.
Best Regards,
Alexandra
Kerry
Hi Alexandra, thanks for your message. As you probably know, there is a Seagull dictionary file for Diameter Ro, so hopefully you have that installed already. And you are correct in saying that for your scenario you do not need to worry about any server configuration as you will be running Seagull as the client and your system under test will be the server.
My starting point is always the run script, which would be located in the /opt/seagull/diameter/run directory. I would create a new working file and then edit that it with the required information. So starting with the standard start_client_cc.ksh file:
The important line of the file that we need to change will look something like the following:
Using vi or your favourite text editor, edit the above to something like:
Now we need to create the ../config/conf.client-ro.xml and ../scenario/ro-ccr-cca.client.xml as follows:
Note: Hopefully ../config/base_ro.xml will exist already but if not then you will need to create it and make sure that all the AVPs are defined for the messages you want to use in your scenario.
Now edit the ../config/conf.client-ro.xml file. The most important bits are the channel definition as this specifies the destination IP address of the system under test.
So change the dest=127.0.0.1:3868 to the destination IP address of your OCS. Obviously your OCS needs to be reachable from wherever you are running Seagull client!
Also, initially at least, I would recommend including the following line in the ../config/conf.client-ro.xml in the list of traffic parameters
This just tells Seagull to only make 1 call when it is run, which is useful when you are simply setting up and debugging the test. Either delete or comment out that line when you know everything is working and you are ready to run traffic.
Now edit ../scenario/ro-ccr-cca.client.xml file. There are 3 main sections the , and sections.
The section contains the one off message required to setup the Diameter peer connection and is normally a CER and then a CEA response.
The section is used to specify those messages that are not part of the traffic but that may be sent or received from time to time, usually a Device Watchdog (DWR) if the link is idle and also a Disconnect Peer (DPR) if the link is manually shut down. So you need 2 sections for each of those messages.
Finally, you can define your actual scenario in the section, so this will be the CCR-I, wait for a CCA-I response, then possibly CCR-U and waiting for CCA-U and finally a CCR-T and waiting for a CCA-T.
The log files can provide useful information when debugging the script, and it also helps if you have a real message trace when building your scenario so you can see all the required AVPs that you need to include in the messages.
Well, I hope that helps – please get in touch again if I can be of any further assistance
Best wishes,
Kerry
Vipin Nair
Hi Kerry,
I have installed seagull in my redhat server for testing my diameter server. Could you please elaborate what I need to modify in Step 1 and 2.
Kerry
Hi there,
In your conf.client.xml file edit the following line with the destination IP address of your Diameter server.
Change the dest=127.0.0.1:3868 to the destination IP address of your Diameter server. Make sure your Diameter server is reachable from the server where you are running Seagull.
Also, initially at least, I would recommend including the following line in the ../config/conf.client.xml in the list of traffic parameters
This just tells Seagull to only make 1 call when it is run, which is useful when you are simply setting up and debugging the test. Either delete or comment out that line when you know everything is working and you are ready to run traffic.
With regards to setting up the dictionary, you need to make sure that all the AVPs you will be using in your Diameter messages have been defined. What Diameter interface are you using? If you can get a real network trace for your application first that will help as you will be able to see all the AVPs in Wireshark (for example) and then you can check that each AVP you need has been defined in the dictionary file.
Thanks, Kerry
Manirou
Hi kerry,
Am actually using seagull for the first time, i’ve already install it and i did all the configuration steps, but when i run the ./start_client.ksh nothing happened, the all the field in the array remain 0.00.
Am lost, i realy need help, i would like to test the Gx or S6 interface.
Kerry
Hi Manirou,
Can you take a look in the client.log file in the /opt/seagull/diameter/logs directory; often you will see a clue in the logfile as to why things aren’t working. If you’re still having problems (and think that you have configured everything correctly) then let me know – I’ll email you and maybe you can share you configuration files for me to take a look at.
Thanks, Kerry
Manirou
Hi kerry,
i looked in the log files, its says mostly that i have “bad scenario definition” and “init scenario error”, but i did all the steps as explained and still no change.
I am just trying to give an example of diameter signaling procedure between two LTE nodes, whether on S6, Gx, or any interface.
If you have already tried one of them, please help me kerry.
[email protected]
Manirou
Hello Kerry,
Need your help please
Kerry
Hi Manirou, I sent you some files directly via email – thanks for letting me know that they helped you to make progress. Good luck!
Janani Krishnan
Hi Kerry,
Am totally new to seagull and trying to understand the files and XML elements required to create S6a and Gx & Rx traffic. Am in position to do some explore and generate the traffic by end of the day today. Could you please help me on this?
Thanks,
Janani
Kerry
Hi Janani, the Seagull installation comes with some default files in the correct format. Which bits are you trying to understand specifically?
Janani Krishnan
Hi Kerry,
Thanks for your response.
Looking for scenario and dictionary file creation for different scenario. Was tried to generate S6a traffic ,but still not clear how to send the request for each of the subscribers sequentially?
Thanks,
Janani
Kerry
Hi Janani, the messages will be sent in the same order as they are defined in the scenario file. For example, if you want to send CCR-I, listen for a CCA-I, then send a CCR-T and listen for a CCA-T, then you would just define the messages and actions in that order in the scenario.
Janani Krishnan
Thanks Kerry. If i wanted to send traffic for 10 unique subscribers and validate the diameter message, where and how to define those parameters. I have pointed the subscriber info file in external-data-file element of conf.client.xml file and its replac gets overwritten with the value of User-Name avp field in scenario file. Looking to get traffic for only set of subscriber from the subscriber info list file. Lets say 100 subscriber i have defined in subscriber_info.csv file and want to generate traffic for 10 out 100 subscriber and only one packet per subscriber.
Could you please assist me where to define those specific limitation to validate different test scenario.
Thanks,
Janani
Kerry
Hi Janani,
To send one message for each unique subscriber then just define one message in the scenario file.
To generate traffic for 10 out of your 100 subscribers defined in the .csv file, then in the conf.client.xml file define the following:
This will limit the total number of calls to 10, which in effect will send one message (as defined in the scenario file) for 10 subscribers.
You could also randomly select 10 subscribers from the 100 you have defined by using the following definition in the conf.client.xml file:
Hope that helps!
Beshu
Quick question which release and kernel version needed on Red Hat Linux? or does it matter?
Kerry
Hi, I use CentOS release 6.7. Here is the full output from cat /proc/version
Janani Krishnan
Thanks Kerry for your response – number-calls traffic-param usage.
Janani Krishnan
Hi Kerry,
While executing the CCR and CCA message using seagull, i observed the below error in the log file. Could you please help me to get it fixed?
2017-07-20.18:16:32.890|E|Unrecognized buffer header
2017-07-20.18:16:32.890|E|Unrecognized message received
2017-07-20.18:16:32.890|A|*** Unrecognized message received ***
Thanks,
Janani
Kerry
Hi Janani, are you using Seagull as both server and client and is that error in the server log or the client log?
Makarand
Hi Kerry. Not sure if you provided resolution for this. I am also facing the same issue. Yes, I am using Seagull as both server & client. This error appears in server log file
Ramz
Hi Kerry,
Am totally new to the seagull.
Can you help me in defining the params “log-stat-file” ,”log-protocol-stat-file”,”data-log-file
Kerry
Hi Ramz,
It doesn’t really matter what name you use here, as they are just used to form the log file names. To get started, I would just use the defaults but placed in a separate logs folder:
Complete info on the required parameters to setup logging is available on the Seagull documentation pages.
.
Ramz
Hi Kerry,
I am getting the below reponse while executing the script.The csv files mentioned against “log-stat-file” ,”log-protocol-stat-file”,”data-log-file are blank for me.
|E|Unknown configuration parameter [select-timeout-micros]
|A|STOP log
Kerry
Hi Ramz,
It looks like you have an incorrect parameter defined in the conf.client.xml file.
The format should be something like this instead:
The select-timeout-ms parameter is used to set the value of the timer set when listening to the system, waiting for the messages and is defined in milliseconds.
This parameter can be used when tuning the system for best performance – for a low call-rate, you should set a value at least lower than the smallest “wait” in the scenario.
Be careful, however, as the lower the value the more time that the CPU will use.
Ramz
Hi Kerry,
Thank you so much for the reply.One more query regarding the ‘Event-Timestamp’
Am getting the below error.
2017-11-06.15:58:18.880|V|Scenario Init passed call-id [0]
Fatal: Type [signed] and [string] not compatible for setting for [Event-Timestamp]
Can you tell me what should be the type of Event-Timestamp? In the input data file, I have tried giving the type as number, string etc. But did not work. I am using seagul for benchmarking of data for performance testing now.
Thanks,
Ramz
Kerry Twite
The Event-Timestamp needs to be defined as an OctetString in the dictionary file as follows:
In the scenario file, the AVP value should then be defined in an OctetString format. For example, if you wanted to define the value as “1000”, then it would be as follows:
Hope that helps!
Kerry
Ramz
Hi Kerry,
Thanks Again for your inputs. Seagul is working fine now .We were trying to do the performance testing in such a way that the application should crash at some point. Do you have any suggestion in terms of tuning some parameters?
Regards,
Ramcy
Kerry Twite
No problem, and I’m glad you got Seagull working!
I’m actually working on tuning a large Seagull installation for a client at the moment. I will share my findings with you (hopefully next week) or if there is a lot of new information maybe in a new post.
Thanks, Kerry
Ramz
Thanks, Kerry.
Awaiting your inputs 🙂
Kerry Twite
I’ve now created an article on performance tuning Seagull for Diameter testing.
Please do let me know if you find it useful or if I’ve missed anything that you have found during your own testing. Thanks, Kerry
Shantiprakash Sasmal
Hi Kerry,
I want to send a scenario where I need to send CCRu after 3 minutes of receiving CCAi. In the scenario file I give a delay of 180 s using after receiving CCAi. But the session gets terminated because my simulator doesnt responds to the DWR sent by peer. In the default section I have mentioned DWR/DWA but DWA is never sent back.
Please help me to respond with DWA within this 3 minute of delay.
Kerry Twite
Hi,
As long as you have the DWR/DWA in the default section, then you should be ok. Can you share you configuration for the DWR/DWA exchange that you have defined in the default section?
Thanks. Kerry
Shantiprakash Sasmal
The configuration is as below.
I have placed it just before the init section.
Kerry Twite
The default section needs to go AFTER the init section and BEFORE the traffic section, so try that first!
vaibhav
Hi Kerry,
I am trying to test Gx protocol. Could you please tell if below channel config is correct for it.
Kerry Twite
I don’t see any channel config in your comment – did you mean to include something else?
jovons
If you are trying to use seagull over sctp with a 21th centry centos, save it! or modify seagul source code to make it usable with kernel sctp library easier. When I run start ksh file, it say the sctp external lib is missing. Then I rpm -ivh xx-sctp.rpm in package folder it says libsctp.so is missing, then I downloaded the sctplib-1.0.15.tar.gz (weird, this is just a tar, but it ends with a gz, foreboding…). Then I read INSTALL, and run ./configure and then make. Guess what, ./configure goes wrong: cannot find glib. Then I run yum install glib, nothing to do cause it has already been installed. CANNOT install libsctp,so, CANNOT install libtrans_extsctp.so, CANNOT use sctp with seagull.
Kerry Twite
Hi jovons, seagull over sctp does cause issues, you just have to keep trying 🙂 but it should work in Linux. Seagull supports SCTP transport with SCTP library in version 1.5 and SCTP Socket api library in version 1.9.0
Install all the Seagull RPMs, then you’ll need to download, compile and install :
– sctplib-1.0.5 : for these lib you may need to modify a file because of the version of GCC
– socketapi-1.9.0 : try this configure option : ./configure –disable-static
The installation process may report a failure even when the lib is correctly compiled and installed 🙂
Now, if you want to replace TCP by SCTP, you will need to modify the configuration file (
Sachith
@Kerry
I have a diameter server developed from erlang, I want to use Seagull client to test the connectivity. I have tried this examples, but it was not working. I got an error `export: -conf: is not an identifier`
Kerry Twite
Hi Sachith, where do you see that error – is it when you attempt to execute the start script in the run directory?
Alexei
Hello, Kerry!
Thank you for sharing this, that’s wonderful.
For my needs I need to define User-Equipment-Info-Type which is Enumeral but I wasn’t able to find how can I define it in base_cc.xml. I mean I understand that to define it we should go to base_cc.xml dictionary and.. then I get confused.
From RFC 4006 “The User-Equipment-Info-Type AVP is of type Enumerated (AVP Code
459) and defines the type of user equipment information contained in
the User-Equipment-Info-Value AVP.” I get that type in Enumerated, but how to define that correctly so the script would run don’t know.
Can you help me on this?
Kerry Twite
Hi Alexei, there are a few sections in the Seagull dictionary file and each needs to be correctly defined. I agree it’s not very obvious how to set it up. Anyway, here goes I’ll try to explain what you need to do..
The dictionary file contains the following sections:
Types where you define the types needed for your protocol (such as Enumerated):
<types> </types>
Header section which contains the description of message header:
<header> </header>
Body section whcih contains the description of message body (which naturally comes after the header):
<body> </body>
And the Dictionary section itself, whish is split into an AVP sub-section and a Command sub-section. The AVP section contains the AVP defientions and the Command section contains all possible Diameter messages such as CER, CCR and so on relevant to the particular Diameter reference point you are using:
<dictionary>
<avp>
<define> </define>
</avp>
<command>
<define> </define>
</command>
</dictionary>
So you’ll need to add something like the following to add your type and AVP.
In the types section add the Enumerated type if it is not already listed with the other types in the following format:
<types>
…
…
<typedef name=”Enumerated” type=”number” size=”4″ unit=”octet”></typedef>
…
…
</types>
You then need to define the dictionary section, in fact according to the the Diameter dictionary I use (https://www.developingsolutions.com/DiaDict/Topics/About.htm) the User-Equipment-Info AVP is actually of type Grouped (meaning it has sub-AVPs) so the definition should look something like the following:
<define name=”User-Equipment-Info” type=”Grouped”>
<setfield name=”avp-code” value=”458″></setfield>
<setfield name=”flags” value=”64″></setfield>
</define>
<define name=”User-Equipment-Info-Type” type=”Enumerated”>
<setfield name=”avp-code” value=”459″></setfield>
<setfield name=”flags” value=”64″></setfield>
</define>
<define name=”User-Equipment-Info-Value” type=”OctetString”>
<setfield name=”avp-code” value=”460″></setfield>
<setfield name=”flags” value=”64″></setfield>
</define>
Hope that helps!
Kerry
Alexei
Hello, Kerry
Luckily I have made same as You told me now, but I am confused because even though everything is correct, still I am not seeing any CCA. One call – CER – success, rest Failed by timeout. Seems that system, server, does not recognize CCR. Cannot understand why. I am sending as client, server is on another side and to see, what’s wrong, merely impossible. )
Thank you anyway for your time and suggestions!
Alexei
@Kerry
Hello.
Can You please let me know, is it possible that ccr-cca client script does not stop after I’ve restarted the server side? I mean when I restart server, then there are no calls so I need to restart ./start_client_cc.ksh manually, Is it possible, that client script goes on and on and makes successful calls after server was restarted?
Martin
Hello Kerry,
great that you share your seagull experience with us here.
I’d like to use seagull to generate SS7 MAP messages. To do this I read the OCTCAP article here:
http://gull.sourceforge.net/doc/octcap.html
What I don’t understand here is, if I need an additional HP OpenCall software to have SS7 support in seagull.
The HP OpenCall inks do no work anymore and the software seems to be discontinued.
Did you use seagull for SS7 testing and do you have a hint for me?
Thanks and regards,
Martin
Kerry Twite
Hi Martin, no I’ve not used Seagull for SS7 MAP testing. Sorry
Roy Robert.S
Hi kerry,
I would like to know whether the Seagull simulator will support the simulation of S6a/S6d interface messages. can you please let me know whether it’s possible to simulate the below list of S6a/S6d interface messages.
1)AIR/AIA (Authentication-Information-Request/Answer)
2)ULR/ULA (Update-Location-Request/Answer)
3)NOR/NOA (Notification-Request/Answer)
4)PUR/PUA (Purge Request/Answer)
5)IDR/IDA(Insert-Subscription-Data-Request/Answer)
6)DSR/DSA (Delete-Subscriber-Data-Request/Answer)
7)CLR/CLA(Cancel-Location-Request/Answer)
8)RSR/RSA(Reset-Request/Answer)
Kerry Twite
Hi, Yes Seagull will support S6a/S6d, you just need the build the correct AVPs in the library file.
don
Hi Kery,
I’m new to seagull and tying to setup diameter over sctp. I can’t get past the sctp init_ack. Seagull log shows the following:
2018-05-24.12:55:59.618|A|Unknown host: [App1]
2018-05-24.12:55:59.618|A|PID [5315]
2018-05-24.12:56:02.676|E|Open channel failed
2018-05-24.12:56:16.622|A|STOP log
Any ideas here?
Thanks
Tomas
This message appears when, for example, there is nothing listening on the specified port, where you are about to send the data.
don
Update – I got past the unknown host but still get open channel failed. The server returns init_ack but client logs the error and continues to send init.
Kerry Twite
Hi, I would suggest checking the channel setup in the configuration file in the /config directory, just to make sure that’s all correct.
Dena Arif
Hi Kerry, i will use seagull for generate load traffic for diameter. if in the file scenario is only have 1 subscriber, how do i configure for many subscriber for example there is 100 subscriber.
Kerry Twite
Hi Dena,
You need to do a few things to use multiple subscribers
1. First, create a separate .csv data file with the required MSSIDNs defined.
The file needs to be located in the /opt/seagull/diameter/scenario directory
The file needs a header, and the format should be as follows:
“string”;
“447010000001”;
“447010000002”;
“447010000003”;
“447010000004”;
“447010000005”;
“447010000006”;
“447010000007”;
and so on
2. Next, define the data file in the configuration file (/opt/seagull/diameter/config/conf.client.xml)
For example, if your data file is called subscribers.csv, then add the following lines somewhere in the conf.client.xml file:
3. Finally, create a reference to the external data file in the scenario file by indicating which AVP value should be substituted.
For example, let’s say you have a scenario file called /opt/seagull/diameter/scenario/Diameter-Gx-scenario.client.xml
And you want to substitute your MSISDNs into the “Subscription-Id-Data” AVP, then in the
section in the Diameter-Gx-scenario.client.xml file include the following:
This command tells Seagull to use a value from the external data file subscribers.csv and put it into the Subscription-Id-Data AVP
NOTE: You need to do this in the section for each message type where the AVP needs substitution, i.e. CCR-I, CCR-T
Hope that make sense!
Nilesh
Hi Kerry,
Really good that you are maintaining this thread actively.
I am looking to use seagull reverse way – as a dummy HSS (Seagull as a server) 🙂
So few questions
1. As a HSS, Can it support Zh interface?
(Zh is interface between HSS and BSF (Bootstrapping server function)
2. Can single seagull as a HSS server supports request from two different clients and respond them separately?
e.g.
BSF is sending MAR request to HSS (seagull) which are responded successfully and then after few seconds another request came from TAS(Application server) for PUR. In such case can we configure seagull as a HSS server to respond them separately?
-Nilesh
Kerry Twite
Hi Nilesh,
Yes, you can run Seagull in server mode as well as client mode. After installation, in the /opt/seagull/diameter/run directory, you will notice some files called start_server.ksh as well as the start_client.ksh files. These will start Seagull in server mode.
From what I understand of the Zh interface (based on a quick 5 minute internet search!) it’s a very simple Diameter implementation with only 2 message types, a MAR (or Multimedia-Auth-Request) and a MAA (Multimedia-Auth-Answer). So you would just need to build those message types and any associated AVPs in the Seagull dictionary file.
Similarly for PUR from a separate client, as long as the message type and AVPs are defined I don’t see any issue with receiving requests from different clients; the clients will both target the same server address (IP and port) which is defined in the server configuration file.
Alexei
Hi Kerry.
There are two identical avp in scenario:
Subscription-Id-Data for MSISDN
Subscription-Id-Data for IMSI
I would like to use many MSISDNs and IMSIs in one scenario, so I will use external file, but how to replace Subscription-Id-Data for both MSISDNs and IMSIs? Tried to find any solution on the Internet, no luck ( Can you suggest anything? Thank You in advance
Kerry Twite
Hi Alexei,
I think Seagull retrieves the values from the .csv file in order, i.e. in this case you have two sub-AVPs with the same name, so order the data in the .csv file in the order that the AVPs appear in the scenario file.
For example, let’s say that you want to substitute MSISDN, IMSI and IP addresses from an external file. The external file would be formatted as follows:
“string”; “string”; “string”;
“447010000001”; “245015555500001”; “0x05010101”;
“447010000002”; “245015555500002”; “0x05010102”;
and so on…
And in the scenario file you would define the following in the appropriate places:
Because of the order of the columns in the external .csv file matches the order that the AVPs appear in the scenario, then the MSISDN should be placed into the first instance of “Subscription-Id-Data”, and the IMSI should be placed in the second instance of “Subscription-Id-Data”. I’ve not specifically tried this myself yet, but I think that’s how it works so give it a go and let me know how you get on!
Also, don’t forget to store and restore in the same order if you need to use the values later in the scenario (for example, in a CCR-T):
Alexei
Hello, Kerry!
Thank You for this solution. I’ve got little better way, used occurence in send channel > action.. Like:
where entity 1 was msisdn and entity 2 was imsi
but thanks anyway!
Kerry Twite
Hi Alexei, you are right – well spotted!
Kerry Twite
Hi Alexei, can you share your solution as mine did not work after all! Thanks, Kerry
Michael
Hi Alexei!
Could you paste more details about you method, please?
Kerry’s solution doesn’t work for me and only the first occurrence of “Subscription-Id-Data” effectively overriding imsi with msisdn number.
Thanks a lot,
Michael
Kerry Twite
Hi Michael, did you find a solution to this as indeed my method does not work in the way I thought it would! Thanks, Kerry
john
Hi Kerry,
First of all thank you for your tutorial, was very helpful. Now I’m facing an other issue that I think a lot of people will face very soon: How to generate Diameter IPv6 traffic ?
I tried putting local and global IPv6 addresses in the conf.client/server.xml , putting hexadecimal IPv6 addresses in sar-saa.client/server.xml put it never worked…
I’m doing this locally to begin (my machine is both the server and the client) and it works flawlessly with my local IPv4 address (127.0.0.1)
Thank you for your time 😉
john
Oh and I wanted to add that there is NO documentation at all on the internet (this is to save some time to the person reading this comment), did a whole day of googling, the “official” documentation is very poor
(i tried the hex ipv6 addresses in the ccr-cca.*.xml file too)
Kerry Twite
Hi John, I’ve never tried to setup Seagull to use IPv6 either, so unfortunately don’t have any experience I can share with you! Kerry
Sachin
Hi Kerry,
I would like to know if seagull can be used to send only CER traffic under load.
How should the scenario file look like for this?
Kerry Twite
Hi Sachin,
I’ve not tried it but I think it should be possible by defining the CER in the traffic section of the scenario file. Let me know if that works!
Suresh Vallapu
hi Kerry ,
I am trying to use sctp over tcp with Seagull clinet mode.
i have installed seagull using rpm commands and below sctp related libs are extracted to /usr/local/bin by default.
libtrans_extsctp.so
libsctplib.so.1.0.8
libsctplib.la
libsctplib.a
And i am using below sctp configurations in cong clinet file
Server configured with proper sctp channels and already established connection with Network element. But when i used above configuration of sctp and trying to send traffic but still i am getting problem as
” |external data select [sequential]
2019-03-22.04:47:45.705|A|PID [19191]
2019-03-22.04:47:48.763|E|Open channel failed
2019-03-22.04:47:55.718|A|STOP log”
please can you help what can be wrong in my configuration.
if it is connection issue with server how should i trouble shoot because with server already a network element sending/.receiving traffic over sctp.
Aleksandar Otasevic
Hello Kerry,
Could you please let me know if SWx diameter protocol is able to be tested using Seagull?
I guess it is possible, as soon as it is one of diameter protocols, but wanted to confirm with You.
Thanks,
Alex
Kerry Twite
Hi Alex,
Yes, you should be able to implement SWx using Seagull, you’ll just need to define the messages and parameters for the SWx protocol in a dictionary file.
Kerry
Ethan
Hi, Kerry
I’m going to use the seagull to simulate the Rx related messages, in the scenario file, I just want to use a strict sequence to send/recv messsges, therefore I define the scenario as below:
I expected that the seagull should send out the RAR message to the peer 2s later after it sent out the AAA, but the seagull did not act as my expected, it can send out the AAA, but can not sent out RAR message..
Please tell me how to make the traffic scenario follow the strict sequence to sent/recv messages, such like: AAR/AAA -> AAR/AAA->RAR/RAA-> AAR/AAA?
Many thanks!
David R
Hello Kerry,
I use Seagull to simulate DiameterRo traffic.
In my tests I need to have continue connection from Seagull client to my OCS server. Now it seems that after a message is sent, connection will be down. Do you know any configuration which can be applied to Seagull client to keep this connection alive?
pouria
Hi Kerry Twite,
When I try to run ./start_client_test.ksh (modified to SCTP)
>> I get:
>>
>>
>> /$./start_client_test.ksh
>> ERROR: Kernel SCTP seems to be available! You cannout use sctplib
>> and kernel SCTP simultaneously!
>> Aborted (core dumped)
It really worked
I’ve changed:
> RedHat style
> in /etc/modprobe.d/dccp-blacklist.conf
blacklist sctp
Now its “working”, but I cannot see any difference between TCP
(file=”libtrans_ip.so”)
and SCTP (file=”libtrans_extsctp.so”)…
would you please guide me?
Thank you
Best regards
pouria
Prakash
Hello Kerry,
I’m using seagull as a server. i’m getting the below error messages for CCR and CCA.
2019-07-30.00:56:24.300|E|Unrecognized buffer header
2019-07-30.00:56:24.300|E|Unrecognized message received
2019-07-30.00:56:24.300|A|*** Unrecognized message received ***
Could u please help me out in this. This error is from server log.
Seagull Version:- seagull
Version tool : 1.8.1.2.417-6.fc18
FLOCK protocol version : 5
FLOCK protocol version : 4
Robert Hewitt
Hi Kerry.
I am trying for more than a simple scenario, but am getting :
Unexpexted message that doesn’t match the scenario.
Roughly my server should receive CMR, send CMA; then receive ODR and send ODA, but though it recognises the ODR it says unexpected !
Thanks
Robert
Kerry Twite
Hi Robert, that error is generated where the returned message is unexpected. In other words, somewhere in the scenario file you will have a line or two of code that is doing a check on received messages. For example, in your case you receive an ODR but it says it is unexpected. Look in the scneario file for something like the following:
You may have other actions in there as well, but the point is that in the example above we are checking for a certain behaviour (in this case Result-Code AVP = 2001) and anything else will cause the error message you are seeing. So this could be valid, i.e. your client or server is returning an invalid code because it is not able to do what is being asked of it or it is misconfigured. Or it may be that simply the check that is defined in the scenario is not correct or appropriate for the application you have setup.
Anyway, hope that helps! Kerry
Robert Hewitt
Hi – Forget that -apparently the Session-Id needs to be the same in the two commands. Now it works.
https://stackoverflow.com/questions/33038677/seagull-error-unexpected-no-scenario-found-call-with-session-id?rq=1
was useful
Kerry Twite
Hi Robert,
Thanks for that link – very useful. And it does remind me that the Seagull log file can provide some useful information when trying to debug issues such as this!
Thanks again,
Kerry