MGCP query

Posted: November 21, 2008 in technical
Tags: ,

Niciodata nu am fost complet lamurita cum sta treaba cu protocoalele MGCP/Megaco/H.248. Cautand pe net cate ceva, mai ales despre H.248, am ajuns la cateva link-uri interesante despre protocoalele de control. Asa cum imi apare la o (prima) vedere, MGCP-ul e mai simplut si mai clar, ca si concepte. Desi au un trecut diferit, se pare ca Megaco si H248 sunt actualmente la fel (comentarii, rosii si castraveti, ca nu m-am documentat suficient sunt binevenite, atata vreme cat sunt constructive), dar diferite de MGCP.
O comparatie interesanta intre MGCP si Megaco am gasit pe HiVE.
O alta comparatie, de data asta intre un protocol de signaling si unul de control de dispozitive e realizata foarte fain de baietii de la SIPCenter.

Protocoalele de tip Control de dispozitiv (MGCP, Megaco) sunt folosite de elemente de control (Call Agents, Softswitches, Media Gateway Controllers) pentru controlul si managementul dispozitivelor media. Aceste dispozitive convertesc semnalul audio intre retele de tip circuit-switched si packet-switched. Semnalizarea este realizata de protocoale de tip master/slave. Slave-ul nu va lua absolute nicio decizie (sa trimita dial tone, call progress tone sau ring tone) fara o indicatie de la master. Un exemplu de astfel de protocol de control este GR303. Protocolul MGCP (Media Gateway Control Protocol) a fost propus de un grup numit International SoftSwitch Consortium, in care erau Level 3 si Telcordia (BellCore). In 1998, Level 3 a creat TAC (Technical Advisory Council), o asociatie a mai multor vendori si producatori, care a creat protocolul IPDC (Internet Protocol Device Control). In acelasi timp, Telcoria a creat SGGP (Simple Gateway Control Protocol). Dupa ce IETF a creat grupul Megaco, protocoalele create de TAC si Telcordia au fost unite in MGCP. Un al treilea protocol de control de dispozitive a fost creat de Lucent si numit MDCP (Media Device Control Protocol) care a devenit ulterior H.248.

Arhitectura MGCP

Protocolul MGCP este folosit la comunicarea intre un Call Agent si un Gateway, pentru a realiza o arhitectura de SoftSwitch. Call Agentii (numiti si Controllere de Media Gateway) sunt creierul intregii operatiuni. Pentru a realiza un call peste retea sunt necesare ambele componente. Un Call Agent trimite o comanda catre Gateway si primeste un raspuns de la aceasta. Unul dintre avantajele arhitecturii de Call Agent/Gateway este faptul ca se pot introduce usor noi servicii, fara necesitatea de upgrade gateway-ul. Deasemenea, desi modelul poate parea ca foloseste un Call Agent si un Gateway, el este defapt distribuit: Decomposed Gateway Architecture.

mg1

Sunt mai multe tipuri de Gateway-uri:
1. Residential Gateway: este folosit pentru rezidente sau birouri mici; are rolul de a conecta subscriberul de telefonie IP la o retea digitala. Acest gateway accepta comenzi de la subscriber si le trimite catre Call Agent pentru procesare, dar accepta comenzi si de la Call Agent pentru setarea, controlul si distrugerea call-urilor catre si de la subscriber. Un astfel de gateway poate fi xDSL, cable modem sau dispozitive wireless broadband;
2. Trunking Gateway: acest gateway sta intre PSTN si Internet si se ocupa de conversia intre reteaua de telefonie analogica si reteaua IP. Un gateway de acest fel este un dispozitiv capabil sa lucreze cu zeci de mii de circuite DS0, pe care le transforma apoi din canale de voce TDM in pachete RTP;
3. Gateway de Semnalizare: este folosit pentru conversia si forwardarea dintre PSTN si retelele packet switched. Au capacitati de procesare mari, ca si gateway-urile de Trunking si suporta mai multe protocoale de semnalizare, cum ar fi SS7 sau C7.

Un Call Agent, numit si Media Gateway Controller, este necesar pentru semnalizarea in cadrul unui call, dar nu este folosit pentru transmiterea traficului de voce. Fiecare Call Agent, responsabil pentru un numar de gateway-uri, accepta mesajele de semnalizare de la aceste gateway-uri si le indica acestora cum sa proceseze call-urile pe un set relativ scazut de mesaje si proceduri MGCP. Un call Agent trebuie sa aiba posibilitatea sa ruteze call-uri catre si dinspre PSTN, clienti sau provideri cu alti Call Agents sau Gateways.

Un Media Gateway se gaseste la granite dintre tipuri de media diferite. In cazul MGCP, acest dispozitiv semnalizeaza sau converteste media intre analog si digital. Job-ul lor principal este conversia semnalului audio si streamului media, in timp ce un Call Agent se ocupa aproape in totalitate de semnalizare. Gateway-urile pot fi pozitionate la client, unde pot fi conectate direct la telefoane POTS, la un PBX sau la o retea de date.

Comenzi MGCP

Comenzile sunt emise in principal de Call Agent catre Gateways pentru setarea si distrugerea conexiunilor Gateway-ul trimite raspunsul inapoi la Controller. Fiecare comanda si raspuns trebuie sa primeasca un ack de la receptor. Unele comenzi folosesc la informarea Call Agentului asupra evenimentelor care au loc pe Gateway. Sunt 9 comenzi in MGCP:

–         EndpointConfiguration: comanda data de Call Agent catre gateway, care-l instruieste pe acesta asupra caracteristicile de codare (A-law vs. Mu-law…etc) asteptate de endpoint;

–         NotificationRequest: comanda data de Call Agent, care instruieste gateway-ul sa urmareasca anumite evenimente cum sunt on/off hook sau tonuri DTMF de la un endpoint anume; tot aceasta comanda e folosita pentru signal requests ca ringing;

–         Notify: comanda e data de Gateway pentru a informa Controllerul cand unul din evenimentele indicate a aparut;

–         CreateConnection: Controllerul da aceasta comanda pentru a crea o conexiune care se termina intr-un endpoint din gateway; parametrii pot fi: CallID, EndpointID, Local/Remote Connection Description (cu Encoding Method: G711, G726…, ptime, bandwidth, ToS, Echo Cancellation, Silence Suppresion, RSVP, SRTP…), Mode (send only, send/receive, conference, data);

–         ModifyConnection: folosita de Call Agent pentru a schimba parametrii asociati unei conexiuni anterior create, sau pentru a furniza informatiile necesare completarii unei conexiuni in doua directii;

–         DeleteConnection: folosita pentru distrugerea unei conexiuni, de catre Controller; un gateway poate trimite aceasta comanda pentru a semnaliza Call Agentului sau ca nu mai poate sustine o conexiune;

–         AuditEndpoint si AuditConnection: comanda de pe Call Agent, pentru a cere informatii despre starea unei conexiuni sau a unui endpoint;

–         RestartInProgress: comanda de pe Gateway, care notifica Controllerul ca acel gateway sau un grup de endpoints deserviti de el nu mai sunt online sau au fost offline si acum revin

Am pus mai jos un call-flow de MGCP, cu mesajele aferente descrise.

mg2 mg3 mg4

 O sa urmeze Megaco si H248…imediat ce apuc sa ma joc cu ele ;))

Una dintre modalitatile usoare si free de a te juca pe MGCP este Asterisk-ul, ajuns acum la versiunea 1.6.0 (pana acum am folosit versiunea 1.2 pe Etch, se pare ca Lenny-ul nu s-a inteles cu Asterisk-ul, sau problema era undeva PEBKAC :P) Site-ul lor e destul de interesant, dau configuri, au un forum si un mailling list active. Cei de la Asterisk mai au si alte cateva proiecte interesante cum sunt LibPri, Zaptel si Libiax. M-am jucat numai putin cu Zaptel, si am folosit o parte din fisierele lor wav cand faceam secvente de IVR (tot pe Asterisk). Apropo de IVR, pe voip-info am gasit un tutorial dragut despre cum sa-ti faci IVR pe Asterisk, iar sectiunea de Tips&Tricks is really helpful.

Advertisements
Comments
  1. aka says:

    MGCP, Megaco, H248, PPP, so on and so forth. ziua 11. Ora 19:30. http://opereta.ro/languages/ro/shows/89-Festival-ziua-11

  2. 19:30 – Concert Alexandru Tomescu – vioara Stradivarius Elder-Voicu, Gabriel Croitoru – vioara Guarnerius Cathedral şi orchestra de cameră Collegio Stravagante condusă de Mihail Ionel Ghiga; În program: creaţii de A. Vivaldi şi J. S. Bach – Catedrala Sf. Iosif
    Multumesc frumos, foarte interesant si placut, imi place Bach.

    Still, ce legatura are asta cu MGCP-ul?…iarta-mi lipsa de sinapse de la ora asta… thanks 🙂

  3. aka says:

    Desigur, are o legatura. Te mai lasa sa respiri. E oarecum aiurea sa vorbesti despre despre suita de prescurtari dupa… Nu se leaga.

  4. Marius says:

    Foarte bun articolul de MGCP…si bine explicat…;)
    Sa-l vedem pe ala de Megaco/H.248…ca cica provoaca migrene asta…:D

  5. Da, da, vine si ala de Megaco/H.248…O sa te rog sa ma ajuti cu prezentarea, dar de data asta…vreau sa fie fara migrene, Ai Inteles??!! ;))

  6. Liv says:

    Foarte cool-ul articolul, dar as fi curioasa daca se poate late negotiation cu SDP-ul de MGCP

  7. nu.conteaza says:

    io cred ca ai prea mult timp liber. 21 nov year xxxx so nu stiu de cand ai postat. btw te-am recomandat celorlati colegi de master ( asm – tasm – ase shit ), so scuze pentru trafic indecent 😉

  8. nu.conteaza says:

    aparent ultimu’ comment e de print dec 2008, so sorry. pretty tipsy so excuse 😛

  9. nu.conteaza says:

    inca unu si ma duc, ai un link catre what frustrates me, matlab si simulink este o laba majora le-am folosit am facut si proiecte de licenta pentru altii ( am versiune de *bsd si solaris, daca te intereseaza ) exista o gramada de tool-uri care fac in mare masura acelasi lucruri. google is your friend. gata ca ma iei cu askimet la pula. have phun.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s