Əvvəlki kursda canlı insan səsinin G.711, AMR və ya Opus kodeklərinin rəqəmsal ani qiymətlərinə necə çevrildiyini və hər 20 millisaniyədən bir RTP paketləri içində IP şəbəkəsi ilə necə uçduğunu öyrəndiniz. Lakin ilk RTP səs paketi telefonu tərk etməzdən əvvəl, planetin müxtəlif uclarındakı iki qurğu bir-birini tapmalı, cari IP ünvanlarını öyrənməli, zəng edilən abunəçinin boş olub-olmadığını yoxlamalı, ortaq audiokodek barədə razılaşmalı və danışıq bitdikdə resursları səliqə ilə azad etməlidir. Bu işi seansların qurulması protokolu — SIP (Session Initiation Protocol) yerinə yetirir. Bu dərsdə biz SIP-in nə olduğunu, keçmişin ağır telekom standartlarına niyə qalib gəldiyini, siqnalizasiya ilə media axınının necə ayrıldığını və SIP-in bu gün harada işlədiyini araşdıracağıq.

Məqsəd və nə bilmək lazımdır

Dərsdən sonra siz bacaracaqsınız:

  • SIP protokolunun təyinatını ifadə etməyi və RFC 3261 standartına görə onun beş əsas vəzifəsini sadalamağı;
  • siqnalizasiya müstəvisi (SIP + SDP) ilə media verilənləri müstəvisinin (RTP / RTCP) fundamental ayrılmasını izah etməyi;
  • klassik «SIP trapesiyasını» izləməyi (niyə siqnalizasiya domen serverlərindən, RTP səsi isə birbaşa telefonlar arasında gedir);
  • SIP arxitekturasını (IETF RFC 2543 / RFC 3261) köhnə ITU-T H.323 steki ilə müqayisə etməyi və SIP-in tətbiq sahələrini göstərməyi.

Əvvəlcədən nəyi bilmək lazımdır: Mikrofondan IP paketlərinə qədər və geriyə (VoIP-də nitqin ötürülmə zənciri), RTP başlığı və paketin sahələri (media axınının UDP ilə ötürülməsi) dərsləri, həmçinin ipnet kursundan TCP/IP modeli, UDP/TCP portları, DNS domen adları sistemi və TLS təhlükəsizliyi mövzuları.

Həyatdan tapşırıq

Şirkət ofisi IP-telefoniyaya keçirib: işçilərin masalarında 192.168.10.0/24 lokal şəbəkəsində IP-telefonlar dayanır, ofis ATS-inin siqnalizasiya serveri isə qorunan bulud məlumat mərkəzində 198.51.100.10 ünvanında yerləşir. Təhlükəsizlik administratoru şəbəkə ekranında (firewall) bütün telefonlardan yalnız bulud serverinin 198.51.100.10 ünvanına standart UDP 5060 portuna çıxış açıb. İki qonşu masa arasında sınaq zəngi zamanı hər iki telefon zəng çalır, ekranda həmkarın adı görünür, danışıq saniyəölçəni işləyir — lakin dəstəklərdə tam sükut hökm sürür. Çağırışın niyə uğurla qurulduğunu, amma səsin niyə gəlmədiyini anlamaq üçün mühəndis SIP protokolunun məsuliyyət sərhədlərini dəqiq bilməlidir: siqnalizasiya nə edir və bundan sonra RTP səs paketləri haraya və necə gedir.

SIP nədir və onun beş əsas vəzifəsi

SIP (Session Initiation Protocol — seansın başlanması protokolu) — IP şəbəkələrində iki və ya daha çox iştirakçı arasında multimedia rabitə seanslarının yaradılması, dəyişdirilməsi və tamamlanması üçün nəzərdə tutulmuş tətbiq səviyyəli siqnalizasiya (idarəetmə müstəvisi, control plane) protokoludur. Seans adi telefon danışığı, videozəng, audiokonfrans və ya ani mesaj mübadiləsi ola bilər.

Məişət analogiyası ilə SIP görüş təşkilatçısı olan katib kimi işləyir: o, lazımi həmsöhbəti tapır, onunla əlaqə saxlayır, ünsiyyət dilini və danışıq otağının nömrəsini razılaşdırır, iştirakçılar birbaşa danışmağa başladıqda isə görüşün sonuna qədər kənara çəkilir və sonda söhbətin bitməsini rəsmiləşdirir.

SIP arxitekturası: seansın idarə edilməsinin beş vəzifəsi və siqnalizasiya ilə medianın ayrılması
SIP arxitekturası: seansın idarə edilməsinin beş vəzifəsi və siqnalizasiya ilə medianın ayrılması

Baza standartı IETF RFC 3261 (bölmə 2) üzrə SIP protokolu seansın qurulması və idarə olunmasının beş vəzifəsini həll edir:

  1. İstifadəçinin yerləşməsinin təyini (User Location): zəng edilən abunəçinin hazırda arxasında əyləşdiyi son qurğunun cari IP ünvanını və portunu müəyyən etmək (çünki işçi noutbuku evdə, ofisdə və ya ezamiyyətdə qoşa bilər).
  2. İstifadəçinin əlçatanlığının təyini (User Availability): zəng edilən abunəçinin danışıqda iştirak etməyə hazır olub-olmadığını yoxlamaq (o boşdur, başqa xətlə məşğuldur, yoxsa dəstəyi qaldırmır).
  3. İstifadəçinin imkanlarının təyini (User Capabilities): media növünü (yalnız səs və ya səs + video) və ortaq kodeki (G.711, G.722, AMR, Opus) və UDP port nömrələrini razılaşdırmaq.
  4. Seansın qurulması (Session Setup): zəng edilən abunəçinin aparatına çağırış siqnalı («zəng») vermək və hər iki tərəfdə birləşmə parametrlərini təsbit etmək.
  5. Seansın idarə edilməsi (Session Management): danışıq gedişində parametrləri dəyişdirmək (zəngi saxlamağa qoymaq, videonu qoşmaq, zəngi başqa işçiyə yönləndirmək) və çağırışı qaydasında tamamlamaq.

Siqnalizasiya və medianın ayrılması: niyə SIP «bütün VoIP» deyil

IETF mühəndislərinin SIP-in təməlinə qoyduğu əsas arxitektur prinsip — modulluq və idarəetmə müstəvisi (control plane) ilə istifadəçi müstəvisinin (user / media plane) ciddi ayrılmasıdır. SIP protokolu heç vaxt öz daxilində rəqəmsallaşdırılmış səsi və ya videokadrları daşımır. Bunun əvəzinə o, digər ixtisaslaşmış protokollarla birgə işləyir:

  • SIP (RFC 3261) — siqnalizasiya zərfi və danışıqların aparılması qaydaları: kim zəng edir, kimə zəng edir, sorğu hansı serverlərdən keçir və çağırış qəbul edilibmi. Susmaya görə 5060 portunu (UDP və TCP üçün) və 5061 portunu (qorunan TLS birləşməsi üçün) istifadə edir.
  • SDP (Session Description Protocol, RFC 8866) — SIP mesajlarının içərisinə məktubun gövdəsi kimi qoyulan mətn formatlı «media parametrləri anketi». SDP anketində qurğu səs üçün öz IP ünvanını, UDP port nömrəsini və dəstəklədiyi kodeklərin siyahısını yazır (kursun 7-ci bölməsində ətraflı təhlil olunur).
  • RTP / RTCP (RFC 3550) və SRTP (RFC 3711) — SIP danışıqları bitdikdən sonra səs paketlərinin özünü cüt dinamik UDP portları ilə (adətən 10000–20000 və ya 16384–32767 diapazonundan) birbaşa qurğular arasında daşıyan real vaxt nəqliyyat protokolları.
  • DNS (RFC 3263) — telefona və ya serverə qarşı domenin siqnalizasiya serverini tapmağa və transport protokolunu seçməyə kömək edən domen adları sistemi.

SIP trapesiyası (SIP Trapezoid)

Siqnalizasiya və medianın ayrılması sayəsində onların paketlərinin şəbəkədəki yolu demək olar ki, həmişə fərqlənir. Bu klassik marşrutlaşdırma sxemi SIP trapesiyası (SIP Trapezoid) adlanır.

SIP trapesiyası: domen serverləri üzərindən siqnalizasiya yolu və telefonlar arasında birbaşa RTP axını
SIP trapesiyası: domen serverləri üzərindən siqnalizasiya yolu və telefonlar arasında birbaşa RTP axını

alice@atlanta.com abunəçisi bob@biloxi.com abunəçisinə zəng etdikdə, Alisanın telefonu Bobun telefonunun cari IP ünvanını bilmir. Buna görə SIP siqnalizasiya mesajları trapesiyanın yan tərəfi ilə atlanta.com domen serverinə qalxır, biloxi.com serverinə ötürülür və Bobun telefonuna enir (1 → 2 → 3 addımları). Lakin hər iki telefon SDP anketlərini mübadilə edib bir-birinin real IP ünvanlarını öyrənən kimi, RTP səs axını (4-cü addım, trapesiyanın alt oturacağı) siqnalizasiya serverlərindən yan keçərək birbaşa A telefonu ilə B telefonu arasında uçur! Bu, siqnalizasiya serverlərini giqabitlərlə audio axınlardan azad edir və səs gecikməsini minimuma endirir.

Nümunənin təhlili: siqnalizasiya serverinə və media traktına düşən yükün hesablanması

SIP və RTP-nin ayrılmasının nə üçün bir yığcam siqnalizasiya serverinə eyni vaxtda on minlərlə danışığa xidmət etməyə imkan verdiyini rəqəmlərlə nəzərdən keçirək:

text
=== SIP siqnalizasiyası və RTP media axını trafikinin müqayisəsi (1 zəng, 120 s) ===
1. Siqnalizasiya müstəvisi (SIP, port 5060):
   Bütün zəng üzrə mesajların sayı:  ~6–8 paket (qurulma və ayrılma)
   SIP mesajının orta ölçüsü:        ~600 bayt
   2 dəqiqə ərzində SIP-in həcmi:    7 * 600 = 4 200 bayt (~4,2 KB)
   Danışıq zamanı SIP zolağı:        0 bit/s (söhbət fazasında SIP susur!)

2. Media verilənləri müstəvisi (RTP, G.711 kodeki, ptime = 20 ms):
   Bir istiqamətdə paket tempi:      50 paket/s (100 paket/s dupleks)
   Səsli Ethernet kadrının ölçüsü:   218 bayt (160 B səs + 58 B başlıqlar)
   120 saniyədə RTP paketlərinin sayı: 100 pak/s * 120 s = 12 000 paket
   2 dəqiqə ərzində RTP-nin həcmi:   12 000 * 218 = 2 616 000 bayt (~2,62 MB)
   RTP həcminin SIP-ə nisbəti:       2 616 000 / 4 200 = 622,8x (623 dəfə çox!)

İkidəqiqəlik aktiv danışıq zamanı siqnalizasiya serveri yalnız zəngin başlanğıcında və sonunda cəmi 4,2 KB verilənləri emal edir, halbuki telefonlar arasında birbaşa 2,62 MB həcmində RTP səs paketləri ötürülür.

Yaranma tarixi: H.323 və RFC 2543-dən RFC 3261-ə qədər

1990-cı illərin ortalarında IP-telefoniyanın ilk standartı ITU-T H.323 spesifikasiyalar paketi (1996-cı il) oldu. O, ənənəvi ISDN (Q.931) telefoniyası dünyasından çıxmışdı: mesajlar mürəkkəb ASN.1 PER ikilik formatı ilə kodlaşdırılırdı, bir zəng üçün çoxlu paralel TCP birləşmələri (H.225.0, H.245) açmaq tələb olunurdu, standartın özü isə minlərlə səhifədən ibarət idi və İnternetin veb-xidmətləri ilə çətin uzlaşırdı.

Elə həmin 1996-cı ildə IETF MMUSIC (Multiparty Multimedia Session Control) işçi qrupunda Henninq Şultsrinn (Henning Schulzrinne) və Mark Hendli (Mark Handley) tamamilə fərqli yanaşma təklif etdilər: telefoniya siqnalizasiyasını HTTP veb-protokolu və SMTP elektron poçtu kimi sadə və mətn əsaslı etmək.

XarakteristikaITU-T H.323 stekiIETF SIP protokolu (RFC 3261)
Standartlaşdırma təşkilatıBeynəlxalq Telekommunikasiya İttifaqı (ITU-T)İnternet Mühəndisliyi Şurası (IETF)
Mesajların kodlaşdırılmasıMürəkkəb ikilik (ASN.1 PER)İnsan tərəfindən oxunan mətn (UTF-8, sətirlər)
Arxitektur prototipiISDN Q.931 telefon siqnalizasiyasıHTTP/1.1 veb-protokolu və SMTP poçtu
Standart siqnalizasiya portlarıTCP 1720 + dinamik H.245 portlarıVahid port 5060 (UDP/TCP), 5061 (TLS)
Miqyaslanma və genişlənməModulların sərt bağlılığı, ağır təhlilSadə mətn başlıqları, asan proksiləmə

SIP standartının təkamülü iki əsas mərhələdən keçmişdir:

  • Mart 1999-cu il — RFC 2543: H. Şultsrinn, M. Hendli, E. Skuler və C. Rozenberq tərəfindən hazırlanmış 2.0 versiyalı (SIP/2.0) ilk rəsmi SIP spesifikasiyası. Protokol dərhal IP-telefon istehsalçıları və operatorlar arasında məşhurlaşdı.
  • İyun 2002-ci il — RFC 3261: RFC 2543 sənədini tamamilə əvəz edən (obsoleted), əsaslı şəkildə yenidən işlənmiş və dəqiqləşdirilmiş standart (müəlliflər: C. Rozenberq, H. Şultsrinn, Q. Kamarillo, A. Conson, C. Peterson, R. Sparks, M. Hendli, E. Skuler). Artıq buraxılmış avadanlıqlarla uyğunluğu pozmamaq üçün mesajlardakı protokol versiyasının nömrəsi əvvəlki kimi — SIP/2.0 saxlanıldı.

Bu gün SIP hər yerdə tətbiq olunur:

  1. Korporativ telefoniya (ofis ATS-i / PBX / UC): masaüstü IP-telefonların, proqram softfonlarının və videoterminalların şirkət serverinə (Asterisk, FreeSWITCH, Cisco CUCM) qoşulması.
  2. Operatorlararası və müştəri qoşulmaları (SIP Trunking): köhnəlmiş E1 ISDN PRI və SS7 axınları əvəzinə ofis ATS-lərinin rabitə operatorlarına qoşulması və operatorların bir-biri ilə birləşməsi.
  3. 4G və 5G mobil şəbəkələri: 3GPP konsorsiumu SIP-i 4G şəbəkələrində VoLTE, VoWiFi və 5G şəbəkələrində VoNR zənglərinin işlədiyi IMS multimedia alt sisteminin (trekin ayrıca kursunda öyrənilir) əsas siqnalizasiya protokolu kimi seçmişdir.

Nə xarab ola bilər və bunu necə tapmaq olar

SimptomEhtimal olunan səbəbNəyi yoxlamalı
Telefon zəng çalır və birləşdirir, lakin dəstəklərdə tam sükutdurŞəbəkə ekranı SIP-i (5060) buraxır, lakin telefonlar arasındakı birbaşa RTP axınını bloklayırRTP UDP port diapazonu (10000–20000) üçün firewall qaydalarını və SDP blokundakı IP ünvanları
Telefon qeydiyyatdan keçə bilmir və çağırış getmirATS serverinə qədər UDP/TCP 5060 (və ya TLS 5061) siqnalizasiya portu bağlıdırServerin IP ünvanının əlçatanlığını və Wireshark-da sip süzgəci ilə SIP paketlərinin olmasını
Nadir kodek seçildikdə zəng dərhal qırılırQurğular SDP razılaşdırması zamanı heç bir ortaq audiokodek tapmayıbHər iki telefonun sazlamalarında aktiv kodeklərin (G.711 A-law/u-law, Opus) siyahısını

⚠️ Heç vaxt SIP siqnalizasiya marşrutunu RTP səs axınının marşrutu ilə qarışdırmayın. Telefonun 5060 portu ilə ATS serverini görməsi, müxtəlif alt şəbəkələrdəki və ya NAT arxasındakı iki telefonun birbaşa RTP paketləri mübadilə edə biləcəyinə qətiyyən zəmanət vermir!

Təcrübə

  1. Qabaqcadan deyin. Şirkətin 10.10.1.0/24 alt şəbəkəsində 50 IP-telefon və 10.10.2.0/24 filialında daha 50 IP-telefon quraşdırılıb. Hər iki filial 10.10.0.10 mərkəzi SIP serverini görür, lakin 10.10.1.0/24 və 10.10.2.0/24 alt şəbəkələri arasında birbaşa marşrutlaşdırma giriş siyahısı (ACL) ilə qadağan edilib. Birinci filialdan ikinciyə zəng etdikdə (klassik SIP trapesiyası üzrə) nə baş verəcək?
  2. Yoxlayın. Standart VoIP telefon zəngində protokolların, portların və müstəvilərin paylanmasına baxın:
text
=== SIP çağırışında protokollar steki ===
Səviyyə / Vəzifə          Protokol və standart  Susmaya görə transport və port
------------------------  --------------------  ------------------------------
Domen serverinin axtarışı DNS (RFC 3263)        UDP / TCP port 53
Seansın qurulması         SIP (RFC 3261)        UDP / TCP port 5060, TLS 5061
Media parametrləri təsviri SDP (RFC 8866)       SIP mesajlarının gövdəsində
Səs və videonun ötürülməsi RTP / SRTP (RFC 3550) UDP cüt portlar (10000-20000)
Media keyfiyyətinə nəzarət RTCP (RFC 3550)      UDP tək port (RTP + 1)
  1. İzah edin. Nə üçün 2002-ci ilin iyununda yeni RFC 3261 standartının müəllifləri protokolun versiya sətrini SIP/3.0 etmədilər, RFC 2543-də olduğu kimi SIP/2.0 saxladılar?
  2. Dəyişdirin. Media axını klassik SIP trapesiyası üzrə birbaşa telefonlar arasında gedirsə, 5 dəqiqəlik danışıq ərzində siqnalizasiya SIP-proksisinin özündən neçə bayt RTP səs trafiki (G.711 kodeki, hər istiqamətdə hər 20 ms-dən bir 218 baytlıq Ethernet paketi) keçəcəyini hesablayın.
  3. Özünüz edin ⭐. Rabitə operatoru G.711 kodeki ilə eyni vaxtda 1 000 danışığa xidmət edir (hər zəngin dupleks RTP axını Ethernet səviyyəsində 174,4 kbit/s təşkil edir). Operatorun mərkəzi siqnalizasiya qovşağının yalnız SIP siqnalizasiyasını emal etməsi, RTP axınlarının isə ondan yan keçərək birbaşa sərhəd media şlüzləri arasında getməsi hesabına nə qədər buraxılış zolağına qənaət edildiyini hesablayın.

Özünüyoxlama

Sual 1. RFC 3261 standartının 2-ci bölməsinə əsasən SIP protokolu hansı beş baza vəzifəni həll edir?

Təhlil. SIP protokolu aşağıdakılara cavabdehdir: 1) istifadəçinin yerləşməsinin təyini (User Location — qurğunun cari IP ünvanının tapılması); 2) əlçatanlığın təyini (User Availability — abunəçinin cavab verməyə hazır olması); 3) imkanların təyini (User Capabilities — SDP vasitəsilə kodeklərin razılaşdırılması); 4) seansın qurulması (Session Setup — zəng siqnalı və parametrlərin təsbiti); 5) seansın idarə edilməsi (Session Management — parametrlərin dəyişdirilməsi, yönləndirmə və zəngin tamamlanması).

Sual 2. SIP çağırışı qurduqdan sonra rəqəmsallaşdırılmış səs ani qiymətlərinin özünü hansı protokol daşıyır və SIP üçün susmaya görə hansı portlar istifadə olunur?

Təhlil.

text
Siqnalizasiya (Control Plane):
  Protokol: içərisinə SDP (RFC 8866) təsviri qoyulmuş SIP (RFC 3261)
  Susmaya görə portlar: 5060 (UDP və TCP), 5061 (TLS)

Media traktı (User / Media Plane):
  Protokol: RTP (RFC 3550) və ya qorunan SRTP (RFC 3711)
  Portlar: SDP anketində razılaşdırılmış dinamik cüt UDP portları

Təcrübəyə cavablar:

text
=== Praktiki tapşırıqların cavabları ===
Bənd 1: SIP siqnalizasiyası 10.10.0.10 serveri vasitəsilə uğurla keçəcək (hər iki
        telefon zəng çalacaq və birləşəcək), lakin dəstəyi qaldırdıqda tam sükut
        olacaq, çünki 10.10.1.0/24 və 10.10.2.0/24 arasında birbaşa RTP ACL ilə bağlıdır.
Bənd 3: Artıq işləyən milyonlarla RFC 2543 qurğusu ilə geriyə uyğunluğu qorumaq üçün
        SIP/2.0 versiyası saxlanıldı, yeni mexanizmlər isə genişləndirmələrlə əlavə edildi.
Bənd 4: 0 bayt! Klassik SIP trapesiyasında RTP səs axını birbaşa son telefonlar
        arasında gedir və siqnalizasiya SIP-proksisinə ümumiyyətlə daxil olmur.
Bənd 5: 1 000 zəng * 174,4 kbit/s = 174 400 kbit/s = 174,4 Mbit/s fasiləsiz media
        trafiki mərkəzi SIP siqnalizasiya serverini yükləmir.

Təkrar və növbəti dərsə keçid meyarı

Köməksiz aşağıdakıları edə bilirsinizsə, növbəti dərsə keçin:

  • RFC 3261 standartı üzrə SIP protokolunun beş vəzifəsini sadalamaq;
  • SIP, SDP və RTP/RTCP rollarını dəqiq ayırmaq və standart 5060 və 5061 portlarını söyləmək;
  • SIP trapesiyasını çəkmək və uğurlu zəng zamanı dəstəkdə nə üçün səsin olmaya biləcəyini izah etmək.

Standartlar və mənbələr

  • IETF RFC 3261 (June 2002) — SIP: Session Initiation Protocol (§1–§2, Overview of Operation).
  • IETF RFC 2543 (March 1999) — SIP: Session Initiation Protocol (SIP/2.0 tarixi ilk redaksiyası).
  • IETF RFC 8866 (January 2021) — SDP: Session Description Protocol.
  • IETF RFC 3550 (July 2003) — RTP: A Transport Protocol for Real-Time Applications.