Приклад встановлення і руйнування з'єднання

Матеріал з Вікі ЦДУ
Версія від 14:54, 30 листопада 2010; Козінцев Олексій (обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

9.5 Приклад встановлення і руйнування з'єднання
На малюнку 9.8 наведено приклад встановлення з'єднання з використанням протоколу MEGACO між двома шлюзами (Residential Gateway), що керуються одним контролером.

VoIP 9.8.png
Рис. 9.8. Алгоритм встановлення і руйнування з'єднання за допомогою протоколу MEGACO


У даному прикладі викликає шлюз MG1 - має IP-адресу 124.124.124.222, адреса викликається шлюзу MG2 - 125.125.125.111, адресу контролера шлюзів MGC - 123.123.123.4. Порт для зв'язку по протоколу MEGACO для всіх трьох пристроїв за замовчуванням має значення 55555. 1. Шлюз MG1 реєструється у контролерів MGC за допомогою команди ServiceChange. Використання нульового контексту означає, що порт в даний момент не бере участь ні в якому з'єднанні, а використання ідентифікатора порту ROOT означає, що команда ставиться до всього шлюзу, а не до якого-небудь певного порту. MGl to MGC: MEGACO/1.0 [124.124.124.222] Transaction = 9998 {Context = - { ServiceChange = ROOT {Services { Method = Restart, Port = 55555, Pro £ ile = ResGW/1.0)} ) 2. Контролер підтверджує реєстрацію шлюзу: MGC to MGl: MEGACO/1.0 [123.123.123.41:55555 Reply = 9998 { Context = - {ServiceChange = ROOT {Servicee {Port = 55555, Profile = ResGW/1.0}) ) 3. Шлюз має вільні аналогові порти, які повинні бути запрограмовані для відстежування зміни опору абонентського шлейфу, що означає підняття абонентом трубки, після чого шлюз повинен передати абоненту акустичний сигнал "Відповідь станції». Програмування здійснюється за допомогою команди Modify з відповідними параметрами, причому програмується порт, що знаходиться в нульовому контексті. У команді вказується ідентифікатор порту (terminationid)-А4444, ідентифікатор інформаційного потоку (streamid) -1, транспортна адреса обладнання, що передав команду - [123.123.123.4]: 55555, специфицируется режим функціонування-дуплексний (SendReceive). MGC to MGl: MEGACO/1.0 [123.123.123.4]: 55555 Transaction = 9999 {Context = - { Modify = A4444 {Media { TerminationState { Buf feredEventHandling {Step, Procese} }, Stream = 1 { LocalControl { Mode = SendReceive, g / GainControl = 2,; in dB, g / Encryption = xxx, g / EchoCancellation = Gl65, g / VoiceActDet = yes) ), Events у 2222 {glinesup / offhook} Signals {g / PlayTone {tone = dialtone}))


На цьому ж етапі в шлюз може бути завантажений план нумерації (в дескрипторі digit map). У цьому випадку, після того як абонент підніме трубку, шлюз повинен передати йому акустичний сигнал "Відповідь станції» і починати прийом сигналів DTMF відповідно до плану нумерації. Однак у нашому прикладі план нумерації буде завантажений лише після того, як абонент підніме трубку, на 8 кроці. Крім того, слід зазначити, що кроки 3 та 4 цього алгоритму можуть бути суміщені з кроками 8 і 9, відповідно, за допомогою дескриптора EventsDescriptor. При цьому кроки 6 і 7 опускаються. 4. Шлюз MG1 підтверджує виконання команди Modify: mgi to mgc: MEGACO / l.O [124.124.124.222]: 55555 Reply = 9999 { Context = - {Modify}> 5. Подібним же чином (кроки 1-4) програмується аналоговий порт шлюзу MG2, в нашому прикладі має ідентифікатор А5555. 6. Далі шлюз MG1 виявляє, що абонент А підняв трубку, і сповіщає про цю подію Media Gateway Controller за допомогою команди Notify. mgi to mgc: MEGACO / lO [124.124.124.222]: 55555 Transaction = 10000 {Context = - { Notify = A4444 {ObservedEvents = 2222 { 19990729T22000000: glinesup / offhook}>)) 7. Контролер підтверджує отримання команди Notify: mgc to mgi; MEGACO / l.O [123.123.123.4] $ 55555 Reply = 10000 { Context = - (Notify)) 8. На наступному кроці MGC дає шлюзу інструкцію накопичувати цифри номера абонента, що викликається у відповідності з обраним планом нумерації. Крім того, після отримання першої цифри номера необхідно зупинити передачу акустичного сигналу "Відповідь станції».


14. Контролер MGC створює в шлюзі MG2 контекст для встановлення дуплексного з'єднання (режим SendReceive) із зухвалим користувачем. MGC to MG2: MEGACO/1.0 [123.123.123.4]: 55555 Transaction = 50003 {Context = $ { Add = A5555 {Media { Stream • 1 {) ), Add = $ {Media { Stream = 1 { LocalControl { Mode = SendReceive, g / NetworkType = RTP/IP4, g / MaxJitterBuffer = 40,; in ms g / PreferredPacketization = 30,; in ms g / PreferredEncoders = [G723, PCMU], g / PreferredDecoders = [G723, PCMU], g / Gain = 0; in dB), Remote = SDP {v = 0 c = IN IP4 124.124.124.222 m = audio 2222 RTP / AVP 4 0 a = sendrecv }; RTF profile for G.723 is 4)) > 15. Створення контексту підтверджується, фізичний порт шлюзу MG2 A5555 з'єднується з UDP / RTP портом, що має ідентифікатор А5556. Відзначимо, що RTP-порт має номер 1111, тобто відмінний від номера порту Megaco/H.248 - 55555. MG2 to MGC: MEGACO/1.0 [124.124.124.2221:55555 Reply = 50003 { Context = 5000 {Add, Add = А5556 {Media { Stream = 1 { Local • SDP {v = 0 c = IN IP4 125.125.125.1111 m = audio 1111 RTP / AVP 4 0 a = sendreceive} }; RTF profile for G723 is 4) )


16. Контролер MGC наказує порту А5555 шлюзу MG2 почати передачу сигналу виклику. MGC to MG2: MEGACO/1.0 [123.123.123.41:55555 Transaction = 50004 {Context = 5000 { Modify = А5555 { Signals {glinesup / PlayTone {tone = ring}}} ) 17. Шлюз MG2 підтверджує передачу сигналу «Посилка виклику», якій Ви телефонуєте. MG2 to MGC: MEGACO/1.0 [125.125.125.111]: 55555 Reply = 50004 ( Context = 5000 {Modify}} 18. Контролер наказує шлюзу MG1 почати передачу, хто телефонує акустичного сигналу «Контроль посилки виклику (КПВ)». MGC to MG1: MEGACO/1.0 [123.123.123.4]: 55555 Transaction = 10005 {Context = 2000 { Modify = A4444 { Signals {g / PlayTone {tone = ringback}}} } 19. Шлюз MG1 підтверджує передачу зазначеного акустичного сигналу в порт A4444. MG1 to MGC: MEGACO/1.0 [124.124.124.222]: 55555 Reply = 10005 { Context = 2000 {Modify)) На цьому етапі обом абонентам-учасникам з'єднанні, надсилаються відповідні сигнали, і шлюз MG2 чекає, поки абонент прийме вхідний дзвінок, після чого між двома шлюзами будуть організовані двонаправлені розмовні канали. 20. Шлюз MG2 виявив, що абонент, підняв трубку, і сповіщає про це контролер MGC. MG2 to MGC: MEGACO/1.0 [125.125.125.111]: 55555 Transaction = 50005 {Context = 5000 { Notify = А5555 {ObservedEvents = 1234 { 19990729T22020002: glinesup / offhook) ) )


21. Контролер підтверджує отримання команди Notify. MGC to MG2: MBGACO/1.0 [123.123.123.41:55555 Reply = 50005 { Context = - (Notify)) 22. Далі контролер MGC наказує шлюзу MG2 припинити передачу сигналу виклику. MGC to MG2: MEGACO/1.0 [123.123.123.4]: 55555 Transaction = 50006 {Context = 5000 { Modify = A5555 { Events = 1235 {glinesup / onhook}, Signals {g / StopTone}; to turn off ringing) ) 23. Шлюз MG2 підтверджує виконання команди. MG2 to MGC: MEGACO/1.0 [125.125.125.111]: 55555 Reply = 50006 { Context = 5000 {Modify}) 24. Далі, контролер дозволяє шлюзу MG1 не тільки приймати, але і передавати інформацію (режим SendReceive), і зупиняє передачу абоненту акустичного сигналу «КПВ». MGC to MG1: MEGACO/1.0 [123.123.123.41:55555 Transaction = 10006 {Context = 2000 { Modify = A4445 {Media { Stream = 1 { LocalControl { Mode = SendReceive} ,,} /} Modify = A4444 { Signals {g / StopTone})}> 25. Шлюз MG1 підтверджує виконання команди. MG1 to MGC: MEGACO/1.0 [124.124.124.222]: 55555 Reply = 10006 { Context s 2000 {Modify, Modify » 26. Після цього починається розмовна фаза з'єднання, протягом якої учасники обмінюються мовною інформацією. Наступним кроком контролер MGC приймає рішення перевірити РТР-порт в шлюзі MG2.


HOC to MG2: MEGACO/1.0 [123.123.123.4]: 55555 Transaction = 50007 { Context = - {AuditValue = A5556 { AuditOtodia, Digit-Map, Events, Signals, Packages, Statietice}} }} 27. Шлюз MG2 виконує команду. У відповіді на команду AuditValue передається вся запитувана інформація, в тому числі статистика, зібрана за час з'єднання. Крім того, з відповіді видно, що не відбулося жодних подій і не передавалося ніяких сигналів. MEGACO/1.0 [125.125.125.111]: 55555 Reply = 50007 {Context = - { AuditValue (Media { TerminationState { BufferedEventHandling {Process}}, Stream = 1 { LocalControl { Mode = SendReceive, g / MaxJitterBuffer = 40,; in ms g / PreferredPacketization = 30,; in me g / PreferredEncoders = [G723, PCMU], g / PreferredDecoders = [G723, PCMU], g / Gain = 0; in dB ), Local = SDP { v = 0 c = IN IP4 125.125.125.111 m = audio 1111 rtp / avp 4 0 a = sendrecv}, Remote = SDP { v = 0 c = IN IP4 124.124.124.222 m = audio 2222 RTP / AVP 4 0 a = sendrecv }; RTF profile for G.723 is 4)), Packages {g, glinesup / RTPPkg), Statistics {RTPPkg / PacketsSent = 1200, RTPPkg / OctetsSent = 62300, RTPPkg / PacketsReceived = 700, RTPPkg / OctetsReceived = 45100, RTPPkg / PacketsLost = 6, RTPPkg / Jitter = 20, RTPPkg / AverageLatency = 40}}})


28. Абонент першим завершує з'єднання, і шлюз MG2 сповіщає про це контролер MGC. MG2 to MGC: MEGACO/1.0 [125.125.125.111]: 55555 Transaction = 50008 {Context = 5000 { Notify = A5555 {ObservedEvents = 1235 { 19990729T24020002: glinesup / onhook)) } 29. Контролер MGC підтверджує отримання повідомлення Notify. MGC to MG2: MEGACO/1.0 [123.123.123.4]: 55555 Reply = 50008 { Context = - {Notify}} 30. Отримавши інформацію від будь-якого із шлюзів про те, що один з абонентів поклав трубку, контролер MGC завершує з'єднання. До обох шлюзів передається команда Subtract. Алгоритм завершення з'єднання передбачає однаковий обмін сигнальними повідомленнями між контролером і обома шлюзами, тому тут цей алгоритм розглядається на прикладі шлюзу MG2. From MGC to MG2: MEGACO/1.0 [123.123.123.4]: 55555 Transaction = 50009 {Context = 5000 { Subtract = A5555 {Audit {Statistics}}, Subtract = A5556 {Audit {Statistics}})} 31. Кожен з портів шлюзу MG2, що беруть участь в з'єднанні (фізичний порт - A5555 і RTP-порт - A5556), повертає статистику, зібрану за час з'єднання. У загальному випадку, контролер може запитувати статистичну інформацію тільки в одного з портів. From MG2 to MGC: MEGACO/1.0 [125.125.125.H1]: 55555 Reply = 50009 {Context = 5000 {Subtract { Statistics {; what are the stats for a TIM connection? TEMPkg / OctetsSent = 45123, TEMPkg / Duration = 40; in seconds}}. Subtract { Statistics ( RTPPkg / PacketsSent = 1245, RTPPkg / OctetsSent = 62345 / RTPPkg / PacketsReceived = 780, RTPPkg / OctetsReceived = 45123, RTPPkg / PacketsLost = 10, RTPPkg / Jitter = 27, RTPPkg / AverageLatency = 48} )


32. Після завершення з'єднання контролер MGC наказує шлюзів MG1 і MG2 бути готовими до того, що хтось з обслуговуваних ними абонентів підніме трубку. Примітно, що портів шлюзу, що з'являтимуться закінченнями в нульовому контексті, за замовчуванням може бути наказано виявляти, що абонент підняв трубку, при цьому контролер не передає шлюзів спеціальні команди, як це було показано раніше (крок 3).


--Козінцев Олексій 36 гр. 17:27, 29 листопада 2010 (EET)