Updated on 120112 by André Guimarães
Switzernet.com
I. Radius
unavailable – Master down/without service
This document lists the specifications of Astrad version V011.
It also defines how to validate this version according to its previous and new specifications as well as normal use.
The Astrad V011 needs to be slave of a DBA V006.
To be able to validate all tests you need:
o Root access to a newly installed server with Debian Etch
o Access to Puppet Master server. [5]
o Login and password of MySQL for Astrads.
o 2 VoIP equipments to register on the test Astrad.
o 1 VoIP equipment registered on a Porta-SIP.
o 1 VoIP equipment registered on another Astrad.
o
1 external phone (phone
connected to an external line Swisscom,
Every test should be made to test a new version. To test a new installation only call tests are needed.
For each new Astrad version edit this document and add new tests as needed to fully cover all cases that might be affected by the new changes introduced in that version.
To allow an easy replacement or addition of SIP servers the installation method should be easy to follow. It should respect the following conditions:
1. The installation method is well documented;
2. The installation should be made by Puppet. [5]
An Astrad server purpose is to route VoIP calls, providing some basic functionalities to a SIP equipment or software configured with a valid account:
It also should be possible to:
The following codecs should be available:
For an increased performance, Astrad should have a local replication of Billing Masters database. The local tables should be simplified versions of Masters tables with only the required information to the correct functioning of the system. It should follow these guidelines:
When a customer makes a new call, certain requirements and
conditions should be met to allow a successful call. If not the user should
hear the corresponding error message in the language configured in
Call messages compatibility is very important. Radius packets should be correctly transmitted to the compatibility server.
On the SIP server, 5 daemons should be continuously working.
1. The customer should be able to choose in which language he hears the messages in the SIP server (at least for English, French and German).
2. When a call is put on hold the other person should hear music.
3. Customers should be able to hide/show their caller id number.
4. Customers should be able to mask their caller id number.
5. If a customer registers more than one phone with the same account all phones should ring simultaneously when the number is called.
6. If a customer defines Follow Me the incoming calls should follow the configured rules.
In case of problems in central server, there should be an authentication alternative. [2]
For each new version of an Astrad server, there should be two documents: one describing the changes in the version and other (this) with the required tests to validate those changes. Both documents should have links to related tests and developing documentation. It is also required:
CT |
Spec |
Task |
Result |
Success |
||
1.1 |
A.1 |
On the Puppet Master server, open the module for this version and check the contents of its root |
A readme file, a document describing how to install the version or a hyperlink describing how to install the version should be visible in the root folder of the module. |
|
||
1.2 |
A.2 |
In a newly installed Debian server follow the instructions of A1 file |
On the second execution of the following command (after the Master accepts the key) puppetd --server puppet.switzernet.com --test you shouldn’t see any error message (yellow color) during the installation. You shouldn’t also see any Warning message (violet) except for the occasional XML error “XMLRPC returned wrong size. Retrying.”. |
|
||
2.1 |
B.1 B.7 |
Register two phones in the new server with valid accounts. |
The phone registers without showing any error message. On Accounts page in Billing the user agent and IP address are correctly filled. |
|
||
2.2 |
B.2 |
From one of the registered phones call the other phone. The call should be longer than 45 seconds. |
The other phone rings and after answering there is sound in both directions |
|
||
2.3 |
B.3 |
From one of the registered phones call a phone in a Porta-SIP. The call should be longer than 45 seconds. |
The other phone rings and after answering there is sound in both directions |
|
||
2.4 |
B.4 |
From one of the registered phones call a phone in an Astrad. The call should be longer than 45 seconds. |
The other phone rings and after answering there is sound in both directions |
|
||
2.5 |
B.5 |
From one of the
registered phones call a phone in the public network (ex. Swisscom, |
The other phone rings and after answering there is sound in both directions |
|
||
2.6 |
B.6 |
From a phone registered in a Porta-SIP call one of the registered phones. The call should be longer than 45 seconds. |
The other phone rings and after answering there is sound in both directions |
|
||
2.7 |
B.6 |
From a phone registered in an Astrad call one of the registered phones. The call should be longer than 45 seconds. |
The other phone rings and after answering there is sound in both directions |
|
||
2.8 |
B.6 |
From an
external phone (ex. Swisscom, |
The other phone rings and after answering there is sound in both directions |
|
||
3.1 |
C.1 |
In the Astrad server execute the commande : astrad:~# asterisk -rx "core show translation" |
Every column should be filled with values except for siren7 and 14 and g719 g723 gsm ulaw alaw g726aal2 adpcm slin lpc10 g729 speex ilbc g726 g722 siren7 siren14 slin16 g719 speex16 testlaw g723 - 2 2 2 4002 2 1 2 4002 8001 8001 4001 2 - - 2 - 4002 2 gsm 12001 - 4001 4001 8001 4001 4000 4001 8001 12000 12000 8000 4001 - - 4001 - 8001 4001 ulaw 8002 2 - 1 4002 2 1 2 4002 8001 8001 4001 2 - - 2 - 4002 2 alaw 8002 2 1 - 4002 2 1 2 4002 8001 8001 4001 2 - - 2 - 4002 2 g726aal2 8002 2 2 2 - 2 1 2 4002 8001 8001 4001 2 - - 2 - 4002 2 adpcm 8002 2 2 2 4002 - 1 2 4002 8001 8001 4001 2 - - 2 - 4002 2 slin 8001 1 1 1 4001 1 - 1 4001 8000 8000 4000 1 - - 1 - 4001 1 lpc10 8002 2 2 2 4002 2 1 - 4002 8001 8001 4001 2 - - 2 - 4002 2 g729 8002 2 2 2 4002 2 1 2 - 8001 8001 4001 2 - - 2 - 4002 2 speex 12001 4001 4001 4001 8001 4001 4000 4001 8001 - 12000 8000 4001 - - 4001 - 8001 4001 ilbc 12001 4001 4001 4001 8001 4001 4000 4001 8001 12000 - 8000 4001 - - 4001 - 8001 4001 g726 8002 2 2 2 4002 2 1 2 4002 8001 8001 - 2 - - 2 - 4002 2 g722 8002 2 2 2 4002 2 1 2 4002 8001 8001 4001 - - - 1 - 4001 2 siren7 - - - - - - - - - - - - - - - - - - - siren14 - - - - - - - - - - - - - - - - - - - slin16 8003 3 3 3 4003 3 2 3 4003 8002 8002 4002 1 - - - - 4000 3 g719 - - - - - - - - - - - - - - - - - - - speex16 12004 4004 4004 4004 8004 4004 4003 4004 8004 12003 12003 8003 4002 - - 4001 - - 4004
testlaw 8002 2
2 2
4002 2 1
2 4002 8001
8001 4001 2
- - 2
- 4002 - |
|
||
4.1 |
D.2 |
On the Astrad server enter MySQL and execute the following command to show the existing tables in DB asterisk : mysql -uroot -p asterisk mysql> SHOW TABLES; |
You should have at least the tables: +-----------------------+ | Tables_in_asterisk | +-----------------------+ | location3 | | multiple_ua | | radius_packets_Failed | | registration | | route_multiple_ua | | sipconfig | | sipdevices | | sipdevices2 | +-----------------------+ |
|
||
4.2 |
D.2 |
Still inside MySQL, select the 50 first lines to verify if there are nodes and users inside the table: mysql> SELECT * FROM sipdevices order by context desc LIMIT 50; mysql> SELECT count(*) FROM sipdevices; |
You should see a list with all vendors and nodes (Astrads and Porta-SIPs) and some customers (about 15000 accounts). The context should be fromaccount in all customers, fromnode for each node, fromhost in each vendor and forbidden for unused previous servers (nodes or vendors). +----+-----------------+----------------------------------+-----------------+------+-------------+----------+ | id | name | md5secret | host | port | context | insecure | +----+-----------------+----------------------------------+-----------------+------+-------------+----------+ |… | | 29 | 91.121.16.79 | NULL | 91.121.16.79 | 5060 | fromnode | port | |… | | 5 | 212.249.15.3 | NULL | 212.249.15.3 | 5060 | fromhost | port | |… | | 16 | 412X55XXXXX | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | dynamic | NULL | fromaccount | no | |…
| +----+-----------------+----------------------------------+-----------------+------+-------------+----------+ |
|
||
4.4 |
D.3 |
Execute the following query where 4121550xxxx is an unregistered account: mysql> SELECT * FROM location3 WHERE username="4121550xxxx"; Configure one of the phones with that account. Immediately after execute the query: mysql> SELECT * FROM location3 WHERE username ="4121550xxxx"; |
The first query should not return any results. The second query should return only one result with the correct IP address, port and user agent. |
|
||
4.5 |
D.5 |
Execute the following query: mysql> SELECT * FROM location3 WHERE name="4121550xxxx"; Unplug the registered phone (without unregistering) with the number 4121550xxxx. Execute the same query after 5 minutes: mysql> SELECT * FROM location3 WHERE name="4121550xxxx"; After this test reconnect the device! |
The first query should return only one result with the correct IP address, port and user agent. The second query should not return any results. |
|
||
5.1 |
E.1 |
Reconfigure one of the phones with the wrong password. After this test insert the correct password on the device! |
The phone should show a message showing that it could not register. |
|
||
5.2 |
E.2 |
In Porta-Billing, in the Accounts page change the credit limit to a value equal or bellow the balance (the account type should be prepaid). Make a call to a paid destination. After this test return the credit limit to the previous value! |
It is not possible to call that destination and you should hear a voice message in the configured language saying that you passed the credit limit. |
|
||
5.3 |
E.3 |
In Porta-Billing, in the Accounts page block the account. Make a call to an existing destination. After this test unblock the account! |
It is not possible to call that destination and you should hear a voice message in the configured language saying the account is blocked. |
|
||
5.4 |
E.4 |
In Porta-Billing, in the Customers page block the customer. Make a call to an existing destination. After this test unblock the customer! |
It is not possible to call that destination and you should hear a voice message in the configured language saying the account is blocked. |
|
||
5.5 |
E.5 |
In Porta-Billing, in the Accounts page change the account expiration date. Make a call to an existing destination. After this test change back the account expiration date! |
It is not possible to call that destination and you should hear a voice message in the configured language saying the account has expired. |
|
||
5.6 |
E.6 |
Register a Linksys SPA 921 and make a call to a free destination inside Switzernet network. |
Before the call establishment you should hear a message saying that the call is free in the configured language. |
|
||
5.7 |
E.7 |
Make a call of over 2 hours to any destination. |
Before reaching the two hours you should hear a message indicating that the call will be disconnected. After that each 30 seconds a reminder should be played. The call should be automatically disconnected after 2 hours. |
|
||
5.8 |
E.8 |
From a Private account with maximum simultaneous call set as 1, make a call. From another phone with the same login and password (or from the second line if supported by the phone) make a seconds call. |
The second call should fail and you should hear a voice message in the configured language saying the simultaneous calls limit has been reached. |
|
||
5.9 |
E.9 |
Visit https://www.intarnetinc.com/rates.html, click on the Rate named Dead End, then Rates and filter by effective from Now Prefix. Then call one of those prefixes. |
It is not possible to call that destination and you should hear a voice message in the configured language saying the number is invalid. |
|
||
5.10 |
E.10 |
Call a Switzernet net number which is not currently registered |
The call should fail and you should hear a voice message in the configured language saying the number wasn’t found. |
|
||
5.11 |
E.11/H.1 |
In Porta-Billing, in the Accounts > Call Features page change the Preferred IVR Language to one of the following languages: en, fr or de (different from the one it was already configured) and redo tests 5.2 through 5.10 for each other language. |
You should start hearing the error messages in the select language. |
|
||
6.1 |
F.1 |
Make a call to
an external number. Access Porta-Billing > Trace Call. Find the call filtering
by the destination number in the last 10 minutes. Click on |
In the view log there is a message containing the following fields;
|
|
||
6.2 |
F.2 |
Still in the same log, read each of the parameters of the message found in 6.1 |
Each parameter listed in the F.2 specification is present. |
|
||
6.3 |
F.3 |
Still in the same log, read each of the parameters of the message found in 6.1 |
The time of connection, call establishment and disconnection are in GMT format. |
|
||
7.1 |
G.1 |
Execute the following command as root: /etc/init.d/astrad status |
This command returns the state of asterisk and of all astrad daemons. Each line should return the PID of the corresponding process. |
|
||
7.2 |
G.1 |
Execute the following command as root (with astrad processes running): /etc/init.d/astrad
stop /etc/init.d/astrad
status |
This command should return ok for each line indicating the processes are stopped. When executing again the command in 7.2 each process should show stopped as a result. |
|
||
7.3 |
G.1 |
Execute the following command as root (with astrad processes stopped): /etc/init.d/astrad
start /etc/init.d/astrad
status |
This command should return ok for each line indicating the processes are stopped. When executing again the command in 7.2 each process should show the new PID (different from 7.2) as a result. |
|
||
7.4 |
G.1 |
With astrad already stopped execute: /etc/init.d/astrad
stop |
This command should indicate that everything is stopped. |
|
||
7.5 |
G.1 |
With astrad already running execute: /etc/init.d/astrad start /etc/init.d/astrad
status |
It should warn that astrad is already running and the returned PIDs shouldn’t change. |
|
||
7.6 |
G.2 |
Execute without arguments : /etc/init.d/astrad |
A list of arguments should be shown. |
|
||
7.7 |
G.8 |
Execute status to obtain the PID of a process and execute the following command to kill the process. kill -9 PID |
After a maximum of one minute an email should be sent to alerts2@unnappel.ch and the daemon stopped should be running again. |
|
||
8.1 |
H.2 |
Make a call to any valid number. While on call put the other person on hold. Go back to the call again and proceed with the call. |
The other phone should start to hear music while on hold. After returning to the call voice should be able to go in the two directions. |
|
||
8.2 |
H.3 |
In Porta-Billing, in the Accounts > Call Features page enable the option Hide CLI prefix. Choose a Show CLI prefix (e.g. *81). Make an internal call using the prefix (e.g. *8102X55XXXXX). |
The destination should not see the caller id. The call should be anonymous. |
|
||
8.3 |
H.3 |
In Porta-Billing, in the Accounts > Call Features page enable the option Hide CLI prefix. Choose a Show CLI prefix (e.g. *81). Make an external call using the prefix (e.g. *810XXXXXXX). |
The destination should not see the caller id. The call should be anonymous. |
|
||
8.4 |
H.4 |
In Porta-Billing, in the Accounts > Call Features set the option “Set CLI To Account ID” to No. In “Set CLI To Centrex” choose another caller id. |
The destination should see the chosen caller id. |
|
||
8.5 |
H.5 |
Register two phones with the same account. From an external phone call the account number. |
Both phones should ring at the same time. After one of the phones is answered the other phone should stop ringing. |
|
||
8.6 |
H.6 |
In Porta-Billing, in the Accounts > Call Features page enable the option “Follow Me Enabled”. In Accounts > Follow Me create a follow me rule of type Always or When Unavailable with an order of your choosing. Add one or more Follow Me rules. |
When calling the account number the call should be redirected immediately if the Always option was selected or after a timeout if the phone didn’t answer if option When Unavailable was checked. The order and times of the configured rules should be respected. |
|
||
9.0 |
To prepare the following tests execute the following commands on the Astrad server. These commands will block all communication from and to the Billing Master: iptables -A OUTPUT -d <ip_master> -j DROP iptables -A OUTPUT -s <ip_master> -j DROP After finishing tests 8.1, 8,2 and 8.3 remove the added iptables rules from the firewall to restablish connectivity: iptables -D OUTPUT -d <ip_master> -j DROP iptables -D OUTPUT -s <ip_master> -j DROP |
|||||
9.1 |
I.1 |
Redo tests CTs 2.1 to 2.6 |
The results should be the same as in CTs 2.1 to 2.6 |
|
||
9.2 |
I.2 |
Redo tests CTs 5.1 to 5.6 |
The results should be the same as in CTs 5.1 to 5.6 |
|
||
9.3 |
I.4 |
Redo tests CTs 8.2 to 8.6 |
The results should be the same as in CTs 8.2 to 8.6 |
|
||
9.4 |
I.3 |
Redo tests CTs 6.1 to 6.3. After disconnecting the call in 6.1 reestablish connection with the Master as described above. |
The results should be the same as in CTs 6.1 to 6.3 |
|
||
10.1 |
J.1 |
Visit the Astrad versioning web page [3] Go to this version chapter. |
The chapter exists and the modifications are listed briefly. |
|
||
10.2 |
J.2 |
Download the module file proposed in the Astrad versioning web page for this version. [3]. In cygwin use the following command with the downloaded file: md5sum.exe yymmdd,hhmm,astrad,vvv.zip |
The file is downloaded without a problem and the result of the md5sum is the same as the one in the versions web page. |
|
||
10.3 |
J.3 |
In the same chapter click on the link for further documentation. |
The document exists and details the implementation of this version. |
|
||
10.4 |
J.0 |
Check the reference chapter in the document visited in 10.3. |
All documents describing the implementations made on this version are in the list and the all links work. |
|
||
[1] Installation astrad
http://ftp.switzernet.com/3/public/110931-migrate-to-astrad
[2] Authentification
alternative en cas de panne Radius
http://www.switzernet.com/3/public/110328-astrad-alternative-radius-auth
[3] Astrad versioning
http://switzernet.com/3/public/110126-astrad-versions
[4] Gestion des messages
vocaux
http://switzernet.com/2/public/100719-asterisk-update
[5] Introduction à Puppet
http://switzernet.com/3/public/110127-puppet-introduction
[6] Porta-Billing
[7] DBA installation
http://switzernet.com/3/public/111025-install-dba
[8] Astrad
V011
http://ftp.switzernet.com/3/public/120106-astrad-V11
[9]
DBA V006
http://ftp.switzernet.com/3/public/111114-dba-v6
* * *
Copyright ©
2011 by Switzernet