• Projekti
  • Implementacija razpoznavalnika in konstruktorja protokola MGCP
 
24. 3. 2003

Implementacija razpoznavalnika in konstruktorja protokola MGCP

Protokol MGCP (Media Gateway Control Protocol) je nastal pod okriljem IETF. Uporablja se za komunikacijo med medijskim krmilnikom in medijskim prehodom. Protokol MGCP za opis seje uporablja SDP (protokol za opis seje). SDP prenaša informacije o uporabljenih medijih, kodiranju, naslovih itd.

Media Gateway Control Protocol je protokol tipa odjemalec/strežnik:

  • Strežnik (call agent) ima vlogo nadzornika. Pozna postopke vzpostavljanja klicev v omrežjih, ki jih nadzira, in potrebne signalizacijske protokole.
  • Odjemalec (media gateway) dela skladno z navodili strežnika. Osnovna naloga je prevajanje medijskih vsebin, poročanje o dogodkih na posameznih priključkih (dvig pogovorke,…) ter izvajanje zahtevnih akcij (generacija tonov, zvonenje,…).

 

Od protokola za upravljanje medijskih prehodov se pričakuje, da omogoča:

  • kreacijo, spremembo in brisanje medijskih tokov med medijskimi prehodi,
  • usklajevanje zmožnosti prenosa (kodeki, velikost medijskega paketa,...),
  •  specifikacijo potrebnih transformacij, ki se naj izvedejo v medijskem prehodu,
  • MGC-ju posredovanje zahtev o detekciji dogodkov in MC-ju poročanje o le-teh (toni DTMF,...),
  • definiranje akcij, ki jih naj MG izvede ob detekciji posameznega dogodka,
  • MGC posreduje MG-ju zahtevo po predvajanju tonov in obvestil (npr. predvajanje tona poziva ob dvigu pogovorke),
  • poročanje MG-ja o statističnih podatkih klica (zakasnitev, trepetanje, izguba paketov),
  • poročanje parametrov za računanje stroškov klica (pričetek, konec, količina prenesene informacije,...),
  • poročanje o stanju priključkov – MGC mora biti obveščen o morebitnih izpadih,
  • podporo upravljanju zvez med medijskim prehodom in MGC-jem (prenos upravljanja na rezervni MGC med morebitnimi izpadi primarnega nadzornika),
  • fleksibilno in skalabilno arhitekturo kjer lahko MGC upravlja MG-je različnih velikosti in vmesnikov (analogni, fax, ISDN, NAS, ATM,...),
  • neodvisno nadgradnjo medijskega prehoda z uporabo indikacije verzije protokola med izmenjavo sporočil.

RAZPOZNAVANJE

Leksikalno analizo opravi leksikalni analizator, ki ga imenujemo tudi pregledovalnik ("scanner"). Glavna naloga leksikalnega analizatorja je posredovati sintaktičnemu analizatorju osnovne leksikalne simbole. Leksikalni analizator izloči tudi znake, ki ne vplivajo na pomen sporočila (presledki, komentarji, preskok v novo vrstico). Naloga sintaktičnega analizatorja ali razpoznavalnika ("parser") je sintaktična analiza.

Slika 1: Shematski prikaz poteka razpoznavanja.

 

ORODJE PCCTS

Za implementacijo razpoznavalnika in konstruktorja smo uporabili programsko orodje PCCTS (Purdue Compiler - Construction Tool Set). Orodje je bilo razvito na Fakulteti za elektrotehniko na Univerzi Purdue. Orodje PCCTS omogoča generiranje pregledovalnika in razpoznavalnika tipa LL(k). Razpoznavalnik tipa LL(k) izhaja iz začetnega simbola in poskuša zgraditi drevo izpeljav, ki bi imelo za liste terminalne simbole. Takšen pristop razpoznavanja imenujemo razpoznavanje od zgoraj navzdol.

V nadaljevanju je predstavljeno nekaj lastnosti orodja PCCTS:

  • gramatika vsebuje specifikacijo za leksikalno in sintaktično  analizo (samo ena vhodna datoteka),
  • več leksikalnih specifikacij in več sintaktičnih  specifikacij v eni datoteki,
  • pravila so lahko zapisana v Extended BNF (EBNF),
  • generirana koda je lahko v C, C++ ali javi,
  • pregledna generirana koda,
  • enostavno razhroščevanje,
  • enostavno vzdrževanje oz. spreminjanje.

Če naredimo primerjavo s sorodnima orodjema Bison in Flex, potem program antlr ustreza Bison-u, program dlg pa Flex-u (glej sliko 2).

 

Primerjava s programom Felx in Bizon

Slika 2: Primerjava s programom Flex in Bison

 

Slika 3 prikazuje zgradbo orodja PCCTS. Iz slike je razvidno, da je orodje sestavljeno iz dveh delov. Prvi je namenjen generiranju leksikalnega analizatorja, drugi pa generiranju sintaktičnega analizatorja.  Vhod v orodje PCCTS je BNF ali EBNF opis protokola. Vhodno datoteko najprej prevedemo s programom antlr. Program antlr pri prevajanju generira dve datoteki. Ena izmed datotek se imenuje parser.dlg, katero v naslednjem koraku prevedemo s programom dlg. Program dlg nam generira nekaj novih datotek (glej tabelo 3.1), v katerih se nahaja implementacija razpoznavalnika. S tem je prevajanje z orodjem PCCTS končano. Sledi običajen postopek prevajanja do izvedljive binarne kode.

Slika 3: Orodje PCCTS - postopek prevajanja

 

Spodja tabela prikazuje seznam generiranih datotek s pomočjo orodja PCCTS.

Datoteka

Opis

Vhod v orodje

mgcpsdp.g

BNF ali EBNF protokola, vhod v orodje PCCTS

Generirane datoteke

parse.dlg

Generirana datoteka z ANTLR, vhod v DLG

mgcpsdp.c

Generirana koda z ANTLR

tokens.h

Seznam osnovnih simbolov

err.c

Funkcije za napake

scan.c

Generirani leksikalni analizator (scanner)

mode.h

Stanja pregledovalnika

Tabela 1: Seznam generiranih datotek s pomočjo orodja PCCTS

Podrobnejše informacije o orodju PCCTS lahko najdete v navedenih referenčnih dokumentih.

Zadnja uradna verzija orodja PCCTS je 2.7, vendar ta verzija ne podpira generiranje kode v ANSI C jeziku, zato smo uporabili verzijo 1.33MR31, ki je zadnja uradno izdana verzija, ki še vedno podpira generiranje kode v jeziku ANSI C. Novejše verzije podpirajo generiranje kode v jeziku C++ in java.

Orodje PCCTS je sestavljeno iz dveh programov. Program dlg je namenjen generiranju leksikalnega analizatorja, program antlr pa generiranju sintaktičnega analizatorja. Oba programa omogočata uporabniku mnogo različnih ukaznih parametrov, s pomočjo katerih lahko posredno vplivamo na generirano kodo.

 

 

Datoteka

Opis

Vhod v orodje

mgcpsdp.g

BNF ali EBNF protokola, vhod v orodje PCCTS

Generirane datoteke

parse.dlg

Generirana datoteka z ANTLR, vhod v DLG

mgcpsdp.c

Generirana koda z ANTLR

tokens.h

Seznam osnovnih simbolov

err.c

Funkcije za napake

scan.c

Generirani leksikalni analizator (scanner)

mode.h

Stanja pregledovalnika