Browsed by
Etiket: VoIP

openSIPS Kurulum Adımları

openSIPS Kurulum Adımları

OpenSIPS, bir çok telefon servis sağlayıcı tarafından kullanılan ve Class 4, Class 5, toptan satış VoIP, kurumsal PBX, sanal PBX, SBC, yük dengeleyici IMS platformları, çağrı merkezleri ve daha pek özellikler sunan çok amaçlı bir SIP sunucusudur. Bu yazımda Debian 10 üzerinde openSIPS‘in kurulum adımlarını bulabilirsiniz.

openSIPS, Linux üzerinde çalışan, oldukça az kaynak ihtiyacı olan ve yüksek performanslı bir SIP sunucusudur. Bu yüzden bir çok telekom operatörü openSIPS ile çözümler geliştirmektedir. Eğer siz de VoIP uygulamalarınızda openSIPS kullanmak isterseniz aşağıdaki kurulum yönergesini takip edebilirsiniz.

openSIPS Kurulum Adımları

1. openSIPS Kurulumunda Kullanılan Bileşenler ve Versiyonları:

  • Debian v10 (Buster) x64 minimal install (netinst)
  • OpenSips v3.0
  • OpenSips GUI v8.3.0
  • Apache v2.4
  • PHP v7.3
  • MariaDB v10

2. Ön Hazırlıklar

openSIPS kurulumu için öncelikle bir Debian kurulumuna ihtiyacınız olacak. Bu linkten amd64 netinst CD imajını indirip kurabilirsiniz. Debian’ın kurulumu oldukça kolay, dilerseniz hazırlamış olduğum bu videoyu takip ederek de kurabilirsiniz.

Debian’ın kurulumundan sonra aşağıdaki paketlerin kurulumunu tamamlayın:

apt update && apt upgrade -y && apt -y install m4 git nano sudo curl dbus apache2 lsb-release

Normalde monitoring için opsiyonel olarak “monit” paketini de kurabilirsiniz fakat yazıyı yazdığım tarihte monit üzerinde bulunan bir takım açıklardan dolayı repolardan kaldırıldı. Durum değişirse diye yine ilgili kurulum komutunu aşağıda bulabilirsiniz:

apt -y install monit

3. PHP Kurulumu

Önce bağımlı paketleri kurun:

apt -y install curl apt-transport-https ca-certificates

PHP reposunu ekleyin:

wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > \ /etc/apt/sources.list.d/php.list 

Daha sonra PHP paketlerini kurun:

apt update && apt -y install php7.3 php7.3-gd php7.3-mysql php7.3-xmlrpc php-pear php7.3-cli php-apcu php7.3-curl php7.3-xml libapache2-mod-php7.3 

Pear ile PHP MDB2 kütüphanesini kurun:

pear install MDB2#mysql

PHP.ini dosyasını düzenleyerek short_open_tag değişkenini On yapın:

sed -i "s#short_open_tag = Off#short_open_tag = On#g" /etc/php/7.3/apache2/php.ini

4. MariaDB Kurulumu

MariaDB kurulumu için gpg keylerini alıp ilgili paketleri kurun:

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash apt update && apt -y install mariadb-server 

Daha sonra my.cnf dosyasını aşağıdaki gibi değiştirin:

nano /etc/mysql/my.cnf

Strict modu devre dışı bırakmak ve openSIPS varsayılan latin1 karakter setini kullanmak için [mysqld] başlığının altına aşağıdaki satırları ekleyin:

sql_mode='' 
character-set-server = latin1 

MariaDB servisini restart edin:

systemctl restart mariadb

5. openSIPS Kurulumu

gpg keyi ekleyin:

apt -y install dirmngr && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 049AD65B

openSIPS repolarını ekleyin:

echo "deb https://apt.opensips.org $(lsb_release -sc) 3.0-releases" >/etc/apt/sources.list.d/opensips.list 
echo "deb https://apt.opensips.org $(lsb_release -sc) cli-nightly" >/etc/apt/sources.list.d/opensips-cli.list 

Aşağıdaki komutla openSIPS paketlerini kurun:

apt update && apt -y install opensips opensips-cli opensips-*-module opensips-*-modules python3-mysqldb python3-sqlalchemy python3-sqlalchemy-utils 

6. Database Kurulumu

MariaDB üzerinde opensips kullanıcısını oluşturun ve ilgili hakları verin:

mysql -p 
> 
CREATE USER 'opensips'@'localhost' IDENTIFIED BY 'opensipsrw'; 
GRANT ALL PRIVILEGES ON opensips.* TO 'opensips'@'localhost'; 
FLUSH PRIVILEGES; 
exit 

Database kurulum scriptini çalıştırın:

opensips-cli -x database create 

script size database URL ini soracak. mysql://opensips:opensipsrw@localhost olarak girin ve default u (install all tables) seçin.

7. Konfig Dosyasının Üretilmesi

Konfig dosyasını üretmek için aşağıdaki scripti çalıştırın:

/usr/sbin/osipsconfig 

GenerateOpenSIPS Script > Residential Script > Configure Residential Script i seçin. Spacebar ı kullanarak TLS dışında kalan tüm seçenekleri seçin. Q tuşuna basarak bir önceki menüye gidin ve Generate Residential Script i seçin. Script ilgili dosyayı üretecek ve size dosyanın adını ekranda gösterecektir. İlgili dosyayı opensips.cfg dosyayı ile değiştirin ve gerekli okuma haklarını verin:

mv /etc/opensips/opensips.cfg /etc/opensips/opensips.cfg.orig 
cp /etc/opensips/[üretilen konfig dosyası] /etc/opensips/opensips.cfg 
chmod 644 /etc/opensips/opensips.cfg 

8. Ek Konfigürasyonlar:

opensips.cfg dosyasında sunucunun dinleyeceği interface IP lerini girin:

nano /etc/opensips/opensips.cfg

listen= ile başlayan iki satırı sunucunun IP adresi ile değiştirin:

listen=udp:192.168.0.1:5060
listen=tcp:192.168.0.1:5060

Daha sonra oluşturulan konfigürasyon dosyasının uygun olup olmadığını kontrol edin:

opensips -C /etc/opensips 

Eğer dosyada hata varsa ekranda gözükecektir. Hata varsa düzeltin, yoksa aşağıdaki komut ile yeni konfigürasyon dosyası ile opensips servisini tekrar çalıştırın:

systemctl restart opensips 

9. Arayüz (GUI) Kurulumu

Git kullanarak openSIPS arayüzünü indirin:

git clone -b 8.3.0 https://github.com/OpenSIPS/opensips-cp.git /var/www/opensips-cp

Database üzerinde openSIPS arayüz tablosunu oluşturun:

cd /var/www/opensips-cp/config 
mysql -p opensips < db_schema.mysql 

10. İstatistiklerin Düzenli Toplanması

İlgili scripti cron.d klasörüne ekleyin ve cron servisini tekrar başlatın:

cd /var/www/opensips-cp/config
cp tools/system/smonitor/opensips_stats_cron /etc/cron.d/
systemctl restart cron

11. Monit Konfigürasyonu (Opsiyonel)

monitrc dosyasına aşağıdaki gibi ilgili satırı ekleyin ve servisi tekrar başlatın:

echo -e "set httpd port 2812 and\nallow localhost" >> /etc/monit/monitrc
systemctl restart monit

12. Global Konfigürasyon

GUI konfigürasyon php dosyasını açın ve aşağıdaki gibi düzenleyin:

nano +30 /var/www/opensips-cp/config/boxes.global.inc.php 
// monit host:port 
$boxes[$box_id]['monit']['conn']="127.0.0.1:2812"; 
$boxes[$box_id]['monit']['user']="admin"; 
$boxes[$box_id]['monit']['pass']="admin"; 
$boxes[$box_id]['monit']['has_ssl']=0;

13. Apache Konfigürasyonu

Aşağıdaki komutu kullanarak Apache üzerinde Virtual Host tanımlarını yapın:

cat >> /etc/apache2/sites-available/opensips.conf << EOF 
<VirtualHost *:80> 

DocumentRoot /var/www/opensips-cp 

<Directory /var/www/opensips-cp/web>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride None
     Require all granted 
</Directory> 

<Directory /var/www/opensips-cp>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride None
     Require all denied 
</Directory> 
Alias /cp /var/www/opensips-cp/web 

<DirectoryMatch "/var/www/opensips-cp/web/tools/.*/.*/(template|custom_actions|lib)/">
      Require all denied 
</DirectoryMatch> 

</VirtualHost> 

EOF 

Apache üzerinde default web sayfasını kapatın, openSIPS GUI sayfasını açın, klasörün ownerını değiştirip Apache yi restart edin:

a2dissite 000-default 
a2ensite opensips 
chown -R www-data. /var/www/opensips-cp 
systemctl restart apache2 

Sonunda kurulum tamamlanmış oldu. http://ipadresi/cp URL ini kullanarak admin / opensips kullanıcı adı ve şifresiyle openSIPS arayüzüne erişebilirsiniz.

coTURN Kurulum ve Yapılandırma Adımları

coTURN Kurulum ve Yapılandırma Adımları

Bu blog sayfası, SIP veya WebRTC projeleriniz (Jitsi Meet gibi) için güvenlik duvarlarının veya proxy’lerin arkasındaki kullanıcıların bağlanmasına izin vermek için coTURN sunucusunun kurulum ve yapılandırma adımları kapsar.

TURN Nedir?

TURN, Traversal Using Relays around NAT‘ın kısaltmasıdır. STUN’a benzer şekilde, Internet’teki eşler arasında iletişim kurmak için olası yolların keşfedilmesine yardımcı olmak için kullanılan bir ağ protokolü / paket biçimidir (IETF RFC 5766). Paketleri eşler arasında aktarmak için ortak bir röle sunucusu kullanması nedeniyle STUN’dan farklıdır. TURN, başka bir seçenek olmadığında medya paketlerini eşler arasında ulaştırmak için bir ara sunucu olarak kullanılır. TURN’ün kullanılması durumunda artık bağlantı p2p olmayacağından sunucu kaynakları tüketilir ve eşler arası bağlantıda fazladan bir hop eklenmesi nedeniyle gecikme süresi (latency) artar.

TURN’ü eşlerden birinin simetrik bir NAT’ın arkasında, diğeri ise simetrik bir NAT’ın veya port tabanlı NAT’ın arkasında olduğunda kullanmanız gerekir. Bu durum genelde toplam bağlantıların %10’unda karşımıza çıkar. Geri kalan bağlantıların çoğunda STUN tek başına yeterlidir.

CoTURN Sunucusunu Yüklemek

Ses / Video tabanlı servisler, WebRTC için kullanılan çeşitli UDP portlarını kullanır. NAT arkasındaki ya da sunucunuza doğru UDP bağlantılarını kısıtlayan bir güvenlik duvarı kullanımının olduğu bazı ağlarda kullanıcılar medya sunucunuzla UDP üzerinden bağlantı kuramayabilir.

TURN protokolü, istemciyi TURN sunucusuna bağlanmaya zorlayarak UDP iletişim akışlarının NAT veya güvenlik duvarlarını atlamasına izin vermek ve ardından TURN sunucusunun hedeflerine kendi adına bağlanması için tasarlanmıştır.

Kontrolünüz altında bir TURN sunucusu kullanmak, multimedya uygulamanızla olan bağlantıların başarısını ve aynı zamanda bir proxy gibi davrandığından kullanıcı gizliliğini artırır; böylece eşlerin IP adres bilgilerini artık halka açık bir STUN sunucusuna göndermemiş olursunuz.

Gerekli Donanım

TURN protokolü çok fazla CPU veya RAM’e ihtiyaç duymaz. Buna ek olarak, yalnızca bağlantı kurulumu sırasında (STUN için) kullanıldığında bant genişliği gereksinimleri yüksek değildir. TURN sunucunuz bir medya proxy olarak kullanıldığında eşlerin gönderdiği akışlar kadar giriş ve çıkış bant genişliği ihtiyacı olacaktır. Orta sayıda bağlantı için, tek bir küçük VPS yapılandırması genellikle yeterlidir. CoTURN kurulum için kaynak önerilerimi aşağıda bulabilirsiniz:

  • En az iki vCPU
  • 4GB RAM.
  • 20GB HDD. SSD kullanılabilir, ancak zorunlu değildir.
  • Ağ performansı:
    • Düşük jitter (30ms’den az)
    • Düşük gecikme süresi (latency) (150ms’den az)
    • Her iki yöndeki medya akışlarını karşılayabilmek için yeterli bant genişliği.

Sunucunun NAT arkasında olmasında (Amazon EC2’de olduğu gibi) bir sorun yoktur, ancak herhangi bir porta (TCP 80 & 443, UDP 3478, 10000-20000) gelen tüm UDP ve TCP bağlantılarının coTURN sunucusuna iletilmesi gerekmektedir.

coTURN Gerekli Yazılım ve Kurulum Adımları

coTURN için Debian Netinst veya Ubuntu ile minimal bir sunucu kurulumu işinizi görecektir. CoTURN yazılımı TCP 443 portunu kullandığından, coTURN’ün yükleneceği sunucuda çalışan başka bir web uygulaması olamaz. (farklı bir portta olabilir tabi :))

coTURN, Debian ve Ubuntu repolarında mevcuttur ve apt-get ile kurulabilir:

$ sudo apt-get update
$ sudo apt-get install coturn

coTURN konfigürasyonu tamamlanıncaya kadar coTURN’un otomatik olarak başlamayacağını lütfen unutmayın. Konfigürasyon adımlarını aşağıda bulabilirsiniz.

CoTURN İçin DNS Girişi

CoTURN sunucunuzun harici IP adresini çözen tam bir alanı adı (FQDN) ayarlamanız gerekir. Aynı zamanda bir TLS sertifikası oluşturmak için de bu alanı adını kullanacaksınız.

TLS Sertifikaları Üretmek

Ücretsiz bir TLS sertifikası oluşturmak için Let’s Encrypt’i kullanan certbot‘u kullanabilirsiniz. Certbot’u kurmak için coTURN sunucunuzda aşağıdaki komutları girin:

$ sudo add-apt-repository ppa:certbot/certbot 
$ sudo apt-get update 
$ sudo apt-get install certbot

Daha sonra, TURN sunucunuza sertifikayı oluşturmak için alan adı adresinizi kullanarak aşağıdaki gibi bir certbot komutu çalıştırabilirsiniz:

$ sudo certbot certonly --standalone --preferred-challenges http \
    --deploy-hook "systemctl restart coturn" \
    -d turn.fatiherikci.com

Certbot komutunun mevcut sürümleri varsayılan olarak sertifikalarınızı otomatik olarak yeniler. Certbot sertifikayı yenilediğinde, coTURN servisini yeniden başlatacağını, böylece coTURN’nin güncellenmiş sertifika dosyalarını kullanmaya başlayacağını unutmayın. Bu işlem, sunucunuzun aktif olarak üzerinden geçirdiği TURN bağlantılarında kesintiye neden olacaktır. Bu durumu engellemek için isterseniz, sertifika yenileme zamanlamasını değiştirebilir veya otomatik yenilemeyi devre dışı bırakabilirsiniz.

CoTURN’ü Yapılandırmak

coTURN yapılandırması /etc/turnserver.conf dosyasında depolanır. Bu dosya için çok fazla seçenek mevcuttur ve bu seçenekler ile ilgili açıklamaları yorum satırlarında bulmanız mümkündür. Aşağıdaki örnekte, önerilen ayarlar olarak yorumların yanı sıra, özelleştirmenin gerekli olduğu yerlerde notların bulunduğu örnek bir yapılandırmayı bulabilirsiniz.

/etc/turnserver.conf dosyasının içeriğini aşağıdaki dosyayla değiştirebilir ve aşağıdaki değişiklikleri yapabilirsiniz:

  • turn.fatiherikci.com adresini TURN sunucunuzun ana bilgisayar adıyla değiştirin.
  • Diğer kalın harfler ile belirtilen satırları kendi sunucunuza göre değiştirin.

Aşağıda bir örnek yapılandırma dosyası görebilirsiniz:

server-name=turn.fatiherikci.com
realm=turn.fatiherikci.com
cert=/etc/letsencrypt/live/turn.fatiherikci.com/cert.pem
pkey=/etc/letsencrypt/live/turn.fatiherikci.com/privkey.pem
fingerprint 
listening-ip=0.0.0.0 
external-ip= 1.2.3.4/192.168.0.1 #ya da sadece dış IP yazın
listening-port=3478 
min-port=10000 
max-port=20000 
log-file=/var/log/turnserver.log 
verbose 
user=myusername:mypassword 
lt-cred-mech

Konfigürasyonu tamamladıktan sonra coTURN’ü çalıştırmak için aşağıdaki komutu kullanabilirsiniz:

$ systemctl start ​​coturn

CoTURN’u Servis Olarak Çalıştırmak

Debian / Ubuntu için olan coTURN paketini başlangıçta etkinleştirmek için /etc/default/coturn dosyasını açarak aşağıdaki satırın commentini açın:

TURNSERVER_ENABLED = 1

Bu kadar! coTURN kurulum adımlarımız tamamlandı. Artık çalışır durumda bir TURN sunucunuz var!

TURN Sunucunuzu Test Etmek

CoTURN sunucunuzu test etmek için Trickle-Ice test aracını kullanabilirsiniz. Trickle ICE’ın web sayfasına gidin ve aşağıdakileri girin:

  • STUN veya TURN URI: turn:PublicIPAdresiniz:3478
  • TURN username: kullanıcıadı
  • TURN password: şifre

Ardından Add Server düğmesini ve ardından Gather Candidates düğmesini tıklayın. Her şey yolunda giderse, sonuç olarak Done görmelisiniz.

ENUM Nedir? ENUM Sözdizimi

ENUM Nedir? ENUM Sözdizimi

ENUM (Telephone Number Mapping, E.164 Number to URI Mapping), telefon numaralarını URI formatına (isim@domain) çeviren bir adresleme protokolüdür. Bu sayede bir telefon numarasını çevirerek bir SIP, H.323 veya başka bir İnternet telefon kullanıcısına erişebilirsiniz.

ENUM fonksiyonunu kullanıcıların dünyanın her yerinde aynı numarayla, en kaliteli ve en ucuz yolla, ulaşılabilir olmasını amaçlar. ENUM, bir telefon numarasını DNS sisteminde bulunan bir İnternet adresi ile eşleştirir. Böylece, bir ENUM numarasına sahip olan bir kullanıcı, çağrının yönlendirileceği DNS kaydını yayınlayabilir. Hatta farklı arama türleri için (faks, video vb.) farklı yollar tanımlanabilir.

Bir ENUM kaydını bir alan adı alır gibi edinmeniz mümkün. Günümüzde pek çok kayıt hizmeti veren yer ve VoIP servis sağlayıcıları üzerinden bu kaydı ücretsiz olarak edinebilirsiniz.

ENUM Sözdizimi

ENUM, normal telefon (E.164) numaralarının, e164.arpa ile biten DNS adları olarak gösterilmesini sağlar. Bir numara önceden tanımlanmış bir veya daha fazla servis için çözülebilir.

Örneğin, +90-312-555-1234 telefon numarası, aşağıdaki kuralları RFC 3761‘de tanımlanan ve aşağıda belirtilen kurallardan geçtikten sonra 4.3.2.1.5.5.5.2.1.3.0.9.e164.arpa olarak gösterilir:

  1. Rakamlar hariç tüm karakterleri kaldırılır. (“+90-312-555-1234”, “903125551234” olur)
  2. Her sayı arasına nokta (“.”) koyulur. (“9.0.3.1.2.5.5.5.1.2.3.4”)
  3. Rakamların sırası ters çevirilir. (“4.3.2.1.5.5.5.2.1.3.0.9”)
  4. Dizinin sonuna “.e164.arpa” eklenir. (“4.3.2.1.5.5.5.2.1.3.0.9.arpa”)

Bu sözdiziminin cevaplandırılabilmesi için DNS sunucusunda şuna benzer bir kaydın bulunması gerekir:

$ORIGIN 4.3.2.1.5.5.5.2.1.3.0.9.arpa.
   NAPTR 10 100 "u" "E2U+sip" "!^.*$!sip:fatih.erikci@fatiherikci.com!" .
   NAPTR 10 101 "u" "E2U+h323" "!^.*$!h323:fatih.erikci@fatiherikci.com!" .
   NAPTR 10 102 "u" "E2U+msg" "!^.*$!mailto:fatih.erikci@fatiherikci.com!" . 

Bu kayıtta 4.3.2.1.5.5.5.2.1.3.0.9.arpa alanı için sıralı olarak üç farklı yönlendirme görüyorsunuz. 1. olarak SIP, ikinci H.323 ve üçüncü olarak SMTP cevabı dönmektedir, ilgili cihaz bu kayıtları kullanarak hangi servis ile iletişim kuracağını seçer.

Nasıl Çalışır?

ENUM’ın çalışma prensibi aslında Internet’te sürekli kullandığımız DNS sorgularına benzer. Sorgularda DNS NAPTR kaynak kayıtları kullanılır.

Bir ENUM Sorgusu ve Çağrısı
Bir ENUM Sorgusu ve Çağrısı
  1. Telefon bir E.164 numarası arar (+90-312-555-1234)
  2. Gateway bunu bir sözdizimine çevirir (4.3.2.1.5.5.5.2.1.3.0.9.e164.arpa) ve DNS sunucusuna sorar.
  3. DNS sunucusu bu sorguya bir URI (sip:fatih.erikci@fatiherikci.com) ile karşılık verir.
  4. Gateway artık çağrıyı bir SIP URI çağrısı olarak SIP sunucusuna gönderir.
  5. SIP sunucusu URI ile kayıtlı olan IP telefonu çaldırır.
VoIP Kodekleri Karşılaştırması

VoIP Kodekleri Karşılaştırması

VoIP ve IP telefon teknolojilerinde bir çok farklı ses kodeği mevcut. VoIP ses kodekleri arasında yaygın olarak G.711 ve G.729 kullanılsa da artık cihazların kapasitelerinin ve bant genişliklerinin artmasıyla yeni kodeklerin de kullanımı yaygınlaşmaya başladı. Genel olarak kullanılan kodeklere örnek verecek olursak:

  • G.711 varyasyonları (en çok kullanılan ses kodeği)
  • G.729 varyasyonları (düşük bant genişlikleri için kullanılan kodek)
  • G.722 (Genişbant ses kodeği)
  • G.723 (G.711 gibi ses kalitesine sahip, ADPCM kullanan bir kodek)
  • iLBC (düşük bant genişliğine sahip bir kodek)
  • iSAC (WebRTC de de kullanılan genişbant bir kodek)
  • OPUS (düşük gecikmeli ve değişken bantlı bir kodek)
  • AMR varyasyonları (özellikle konuşma kodlaması için kullanılan bir kodek)
  • GSM (en basit tabiriyle cep telefonlarında kullanılan kodek)

Farklı kodekler farklı algoritmaları içermesi sebebiyle farklı kompleksite, ses kalitesi, ve farklı bant genişliği ihtiyaçlarına sahip. Bu yazımda kodeklerin detaylı özelliklerine tek tek girmeyeceğim, belki başka bir yazıda daha kapsamlı inceleyebilirim.

Aşağıdaki videomda yaygın olarak kullanılan kodeklerin uygulanması sonrasında sesin değişimini dinleyebilir ve frekans analiz grafiklerini görebilirsiniz:

VoIP Ses Kodekleri Karşılaştırma Videosu
ISDN Cause Codes – Sıralı Tam Liste

ISDN Cause Codes – Sıralı Tam Liste

Aşağıdaki tabloda ISDN Q.850 cause kodlarının açıklamalarını bulabilirsiniz:

ISDN Cause Kodları :

No:Mesaj
0Valid cause code not yet received
1Unallocated (unassigned) number
2No route to specified transit network
3No route to destination
4send special information tone
5Misdialled trunk prefix
6Channel Unacceptable
7Call awarded and being delivered in an established channel
8Prefix 0 dialed but not allowed
9Prefix 1 dialed but not allowed
10Prefix 1 dialed but not required
11More digits received than allowed, call is proceeding
16Normal call clearing
17User busy
18No user responding
19No answer from user (user alerted)
20Subscriber absent
21Call Rejected
22Number changed
23Redirection to new destination
24Call suspended
25Call resumed
26Non selected user clearing
27Destination out of order
28Invalid number format
29Facility rejected
30Response to status enquiry
31Normal, unspecified
33Circuit out of order
34No circuit/channel available
35Destination unattainable
37Degraded service
38Network out of order
39Transit delay range cannot be achieved
40Throughput range cannot be achieved
41Temporary failure
42Switching equipment congestion
43Access information discarded
44Requested circuit/channel not available
45Pre-empted
46Precedence call blocked
47Resources unavailable, unspecified
49Quality of service unavailable
50Requested facility not subscribed
51Reverse charging not allowed
52Outgoing calls barred
53Outgoing calls barred within CUG
54Incoming calls barred
55Incoming calls barred within CUG
56Call waiting not subscribed
57Bearer capability not authorized
58Bearer capability not presently available
62Inconsistency in outgoing information element
63Service or option not available, unspecified
65Bearer capability not implemented
66Channel type not implemented
67Transit network selection not implemented
68Message not implemented
69Requested facility not implemented
70Only restricted digital information bearer capability is available
79Service or option not implemented, unspecified
81Invalid call reference value
82Identified channel does not exist
83A suspended call exists, but this call identity does not
84Call identity in use
85No call suspended
86Call having the requested call identity has been cleared
87User not member of CUG
88Incompatible destination
89Non-existent abbreviated address entry
90Destination address missing, and direct call not subscribed
91Invalid transit network selection
92Invalid facility parameter
93Mandatory information element is missing
95Invalid message, unspecified  
96Mandatory information element is missing
97Message type nonexistent or not implemented
98Message not compatible with call state or message type nonexistent or not implemented
99Information element nonexistent or not implemented
100Invalid information element contents
101Message not compatible with call state
102Recovery on timer expiry
103Parameter non-existent or not implemented – passed on
110Message with unrecognized parameter discarded
111Protocol error, unspecified
127Interworking, unspecified