MGCP query
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.
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.
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
) 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.




