1 / 53

Uspostava VoIP centrale bazirane na otvorenom kodu

Uspostava VoIP centrale bazirane na otvorenom kodu. v2.0. 29.3.2007. godine. Branko Radojević (branko@carnet.hr). Sadržaj. Zašto tel. centrala bazirana na otvorenom kodu? Principi rada VoIP centrale (Asterisk) VoIP kodeci, SIP i IAX2 protokol Karakteristike IP telefona

vanya
Download Presentation

Uspostava VoIP centrale bazirane na otvorenom kodu

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Uspostava VoIP centrale bazirane na otvorenom kodu v2.0 29.3.2007. godine Branko Radojević (branko@carnet.hr)

  2. Sadržaj • Zašto tel. centrala bazirana na otvorenom kodu? • Principi rada VoIP centrale (Asterisk) • VoIP kodeci, SIP i IAX2 protokol • Karakteristike IP telefona • Instalacija i konfiguracija Asteriska • Povezivanje (interkonekcija) centrala • Spoj na JGM (Javnu govornu mrežu) • Projekt voopIX – besplatni razgovori u akademskoj zajednici

  3. Tradicionalne telefonske centrale • zatvoreni i (s računalne strane gledano) zastarjeli sustavi (često bazirani na prastarim verzijama Windows ili Unix operativnih sustava) • hardware je redovito vlastito (proprietary) rješenje pojedinih proizvođača, neopravdano je skupi nije kompatibilan s drugim proizvođačima • nadogradnje sustava su komplicirane i skupe, ponekad sitne nadogradnje lančano povlače za sobom ozbiljnu nadogradnju • cilj ovakvog pristupa je da ugovorima za održavanje “vežu” kupca na dulje rokove

  4. Open source VoIP tel. centrale • otvoreni i vrlo jednostavno nadogradivi sustavi koji rade na standardnim operativnim sustavima • osnova centrale je standardni PC hardware s kojim se može postići osnovna funkcionalnost centrale • velika baza korisnika iz cijelog svijeta koji svakodnevno rade na proširenju sustava i usklađivanju s najnovijim informatičkim i Internet trendovima • koriste se standardni protokoli koji su jednostavno uskladivi s ostalim sustavima

  5. Asterisk X

  6. Verzije Asteriska • Asterisk (Open Source verzija) • Asterisk Business Edition • Asterisk NOW! Linux live CD distribucija s grafičkim sučeljem

  7. Što je Asterisk? • Open Source software koji radi pod Unix i Windows operativnim sustavima, na standardnoj PC platformi i donosi potpunu funkcionalnost telefonske centrale (i mnogo više) • podržava većinu signalizacijskih protokola danas u upotrebi (SIP, H.323, IAX2, MGCP, SCCP…) • može raditi i bez dodatnog (specijaliziranog) hardware-a, ako se radi o zatvorenom sustavu ili se konekcija na JGM može ostvariti putem VoIP-a • vrlo je skalabilan, tako da može biti i mali hobi telefonski sustav, ali i veliki korporativni sustav • inicijalno ga je napisao Mark Spencer, sada predsjednik tvrtke Digium Inc.

  8. Asterisk ugrađene mogućnosti Call Features ADSI On-Screen Menu System Alarm Receiver Append Message Authentication Automated Attendant Blacklists Blind Transfer Call Detail Records Call Forward on Busy Call Forward on No Answer Call Forward Variable Call Monitoring Call Parking Call Queuing Call Recording Call Retrieval Call Routing (DID & ANI) Call Snooping Call Transfer Call Waiting Caller ID Caller ID Blocking Caller ID on Call Waiting Calling Cards Conference Bridging Database Store / Retrieve Database Integration Dial by Name Direct Inward System Access Distinctive Ring Distributed Universal Number Discovery (DUNDi™) Do Not Disturb E911 ENUM Fax Transmit and Receive (3rd Party OSS Package) Flexible Extension Logic Interactive Directory Listing Interactive Voice Response (IVR) Local and Remote Call Agents Macros Music On Hold Music On Transfer - Flexible Mp3-based System - Random or Linear Play - Volume Control Predictive Dialer Privacy Open Settlement Protocol (OSP) Overhead Paging Protocol Conversion Remote Call Pickup Remote Office Support Roaming Extensions Route by Caller ID SMS Messaging Spell / Say Streaming Media Access Supervised Transfer Talk Detection Text-to-Speech (via Festival) Three-way Calling Time and Date Transcoding Trunking VoIP Gateways Voicemail - Visual Indicator for Message Waiting - Stutter Dialtone for Message Waiting - Voicemail to email - Voicemail Groups - Web Voicemail Interface Zapateller

  9. voopIX Komponente Asterisk sustava JGM

  10. Dimenzioniranje Asterisk poslužitelja

  11. Što utječe na performanse poslužitelja? • broj paralelnih konekcija • količina VoIP prometa koja zahtjeva intenzivan rad DSP, npr. upotreba kodeka visoke kompresije • konferencijske veze više korisnika • echo cancellation • pozivanje vanjskih programa unutar skripti • drugi procesi koji se izvršavaju na istom poslužitelju, npr. baze podataka • optimizirani kernel sustava • problem IRQ-a kod korištenja internih PC kartica

  12. Instalacija Asteriska (1) • instalacijska platforma je debian linux 3.1r2 • linux kernel verzija: 2.4.27-2 (radi i na 2.6) • nakon instalacije je trebalo instalirati slijedeće dodatne pakete: • tftpd 0.17-12 • libncurses5-dev 5.4-4 • joe 3.1-0.2 (nije obvezno) • za logiranje na sustav koristiti • user : root • pass : asterisk

  13. Instalacija Asteriska (2) • instalacijska datoteka se nalazi u /home/asterisk cd /home/asterisk tar xvzf asterisk-1.4.2.tar.gz cd asterisk-1.4.2 ./configure make make install make samples • Asterisk se instalira u direktorij /usr/sbin • konfiguracijske datoteke se nalaze u /etc/asterisk

  14. Pokretanje Asteriska • Pokretanje asterisk • Ulazak u Asterisk CLI asterisk –r • Izlazak iz Asteriska asterisk*CLI>quit • Restart Asteriska (iz CLI-a) asterisk*CLI> restart now asterisk*CLI> restart when convenient • Postavljanje nivoa logiranja podataka asterisk*CLI>core set verbose n

  15. IP adresna shema

  16. IP adresna shema (2)

  17. Asterisk IP telefoni (hardware) • Većina SIP / MGCP / IAX2 / SCCP / H.323 telefona Aastra, Sayson, Atcom, Blackberry, Polycom, Cisco, GNET, Grandstream, Linksys, Mitel, Nortel, Siemens, ShoreTel (Giant Electronics Ltd.), Swissvoice, Snom, Soyo, Sipura, Siptronic, Thomson, Uniden, Pulverinnovations, Zultys, Zyxel …

  18. Asterisk IP telefoni (softphone) • Većina SIP / MGCP / IAX2 / SCCP / H.323 telefona X-lite (SIP) IDEFISK (IAX2)

  19. Cisco 7940 (7960) IP phone (SIP software)

  20. Cisco 7940 (7960) konektori • 2x ethernet port (Switch s napajanjem + PC) • vanjsko napajanje • AUX • 2x slušalice (standardna + naglavna)

  21. Cisco 7940 karakteristike Podržani kodeci: • g729 • g711 ulaw • g711 alaw Ostalo: • 2 telefonske linije (6 kod 7960) • napajanje sa PoE switcha • Ugrađeni 3-portni switch • VLAN podrška • podrška za Cisco Auto QOS • NTP (sinkronizacija vremena) • ugrađen speakerphone • voicemail svjetlosni identifikator Podržani protokoli: • SCCP (standadno) • SIP • MGCP

  22. Kodeci (voicecoders-decoders) LOW COMPEXITY HIGH

  23. Kodeci u Asterisku • core show codecs asterisk*CLI> core show codecs Disclaimer: this command is for informational purposes only. It does not indicate anything about your configuration. INT BINARY HEX TYPE NAME DESC -------------------------------------------------------------------------------- 1 (1 << 0) (0x1) audio g723 (G.723.1) 2 (1 << 1) (0x2) audio gsm (GSM) 4 (1 << 2) (0x4) audio ulaw (G.711 u-law) 8 (1 << 3) (0x8) audio alaw (G.711 A-law) 16 (1 << 4) (0x10) audio g726aal2 (G.726 AAL2) 32 (1 << 5) (0x20) audio adpcm (ADPCM) 64 (1 << 6) (0x40) audio slin (16 bit Signed Linear PCM) 128 (1 << 7) (0x80) audio lpc10 (LPC10) 256 (1 << 8) (0x100) audio g729 (G.729A) 512 (1 << 9) (0x200) audio speex (SpeeX) 1024 (1 << 10) (0x400) audio ilbc (iLBC) 2048 (1 << 11) (0x800) audio g726 (G.726 RFC3551) 4096 (1 << 12) (0x1000) audio g722 (G722)

  24. Kodeci u Asterisku (2) • (...) 65536 (1 << 16) (0x10000) image jpeg (JPEG image) 131072 (1 << 17) (0x20000) image png (PNG image) 262144 (1 << 18) (0x40000) video h261 (H.261 Video) 524288 (1 << 19) (0x80000) video h263 (H.263 Video) 1048576 (1 << 20) (0x100000) video h263p (H.263+ Video) 2097152 (1 << 21) (0x200000) video h264 (H.264 Video)

  25. SIP (Session Initiation Protocol) • SIP je kontrolni (signalizacijski) protokol aplikacijske razine koji se koristi za: • Uspostava (creating) • Promjena (modifying) • Prekid (terminating) multimedijskih sesija s jednim iil više sudionika. • Originalno napisan za potrebe Internet2 projekta krajem ’90 godina za uspostavu konferencija, naknadno je ustanovljeno da je vrlo primjenljiv i za uspostavu point-to-point poziva • RFC 2543, novija verzija RFC 3261 • Trenutno postoje 45 prijedloga proširenja standarda

  26. SIP (2) • SIP uređaji mogu komunicirati putem: • unicast • multicast • unicast mesh relacije • kombinacijom prije navedenih mogućnosti putem IPv4 i/ili IPv6 okruženja putem: • UDP • TCP • SCTP ili • TLS over TCP i to per-hop SIP uređaju.

  27. SIP metode (poruke) • INVITE – korisnik je pozvan u sesiju • ACK – potvrda prethodne poruke • BYE – kraj sesije • CANCEL – odustajanje od prethodne poruke • OPTIONS – provjera mogućnosti poslužitelja • REGISTER – registracija na SIP proxy poslužitelj • Dodatne: INFO, PRACK, SUBSCRIBE, NOTIFY, UPDATE MESSAGE, REFERER, PUBLISH

  28. SIP odgovori (responses) • 1xx – Informacijski (100 Trying, 180 Ringing, …) • 2xx – Potvrda (200 OK, 202 Acceptable, …) • 3xx – Redirekcija (301 Move Permanently, …) • 4xx – Klijentska greška (401 Unauthorized,…) • 5xx – Poslužiteljska greška (502 Bad gateway,…) • 6xx – Generalna greška (600 Busy Everywhere,…) Sve SIP poruke i odgovori su u tekstualnom obliku. Oblik i sadržaj poruka su posuđene iz HTTP protokola (koji je “posudio” oblik poruka od SMTP poslužitelja)

  29. SIP uspostava poziva (bez poslužitelja) Alice poziva Boba Bob Alice INVITE 180 Ringing UDP TCP SCTP TLS over TCP 180 Ringing Signalizacijski dio 200 OK ACK RTP Prijenos UDP RTP

  30. SIP uspostava poziva (s poslužiteljem) Pretpostavlja se da Alice ne zna Bobovu IP adresu Bob Alice INVITE INVITE UDP TCP SCTP TLS over TCP 100 Trying 180 Ringing Signalizacijski dio 180 Ringing 200 OK 200 OK ACK RTP Prijenos UDP RTP

  31. SIP INVITE poruka INVITE sip:38520445801@192.168.2.73:5060 SIP/2.0 Via: SIP/2.0/UDP 192.168.2.10:5060;branch=z9hG4bK125b24b6 From: "Radojevic Branko" <sip:686@192.168.2.10>;tag=16984467 To: <sip:38520445801@192.168.2.73> Date: Wed, 28 Feb 2007 15:37:11 GMT Call-ID: 8cf9f300-1dc1e544-ee1f-a02a8c0@192.168.2.10 Supported: timer Min-SE: 1800 User-Agent: Cisco-CCM4.1 Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK CSeq: 101 INVITE Max-Forwards: 70 Remote-Party-ID: "Radojevic Branko" <sip:686@192.168.2.10>;party=calling;screen=no;privacy=off Contact: <sip:686@192.168.2.10:5060> Expires: 180 Allow-Events: telephone-event Content-Type: application/sdp Content-Length: 227 v=0 o=CiscoSystemsCCM-SIP 2000 1000 IN IP4 192.168.2.10 s=SIP Call c=IN IP4 192.168.2.10 t=0 0 m=audio 26124 RTP/AVP 0 101 a=sendrecv a=rtpmap:0 PCMU/8000 a=ptime:20 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15

  32. IAX2 (Inter-Asterisk Exchange) • IAX2 je kontrolni (signalizacijski) i media protokol pisan primarno za razmjenu prometa među Asterisk centralama, a u zadnje vrijeme i na IP telefonima • Za signalizacijski i media dio koristi UDP protokol i samo jedan port (4569) • Kako koristi samo jedan statički port, nema problema s NATom koji se pojavljuju kod SIP i H323 protokola • Podržava trunkiranje (povezivanje) više poziva u jedan protok (stream) podataka • Napisan od strane Marka Spencera, autora Asteriska • Očekuje se uskoro RFC, postoji draft

  33. Cisco 7940 konfiguracija (SIP) • ručna • automatska • DHCP (IP adresa, gw-ip, tftp-ip) • dhcp option 66 (tftp server – stariji software) • dhcp option 150 (tftp server – noviji software) • Konfiguracijske datoteke na TFTP poslužitelju( /home/phones direktorij) • OS79XX.TXT • P0S3-07-3-00.bin • SIPDefault.cnf • SIP0012803AF172.cnf

  34. Cisco 7940 konfiguracija (2) • SIPDefault.cnf • proxy1_address: 10.x.0.2; • sntp_server: 10.x.0.1; Ova datoteka vrijedi za sve Cisco 7940 ili 7960 telefone na centrali sa SIP verzijom firmwarea.

  35. Cisco 7940 konfiguracija (3) • SIP0012803AF172.cnf • line1_name : 101 • line1_shortname : 101 0012803AF172 je MAC adresa telefona. Zapisana je na naljepnici s donje strane uređaja a do nje se može doći i kroz menije na telefonu (tipka MENU + 3 + 3). Navedenu datoteku trebate kreirati za svaki telefon posebno.

  36. Asterisk SIP konfiguracija • /etc/asterisk/sip.conf [101] type=friend host=dynamic callerid=Branko Radojevic <101> context=default canreinvite=no progressinband=no dtmfmode=inband nat=no • asterisk*CLI> sip reload

  37. Provjera SIP konfiguracije • sip show peers asterisk*CLI> sip show peers Name/username Host Dyn Nat ACL Port Status 101/101 10.90.0.10 D 5060 Unmonitored 1 sip peers [Monitored: 0 online, 0 offline Unmonitored: 1 online, 0 offline]

  38. Prvi poziv ! • ugrađene demo mogućnosti u Asterisku • ekstenzija 500 – demo(nije moguće u potpunosti ostvariti poziv jer u predavaonici nema direktne veze na Internet) • ekstenzija 600 – echo test(u potpunosti je funkcionalna)

  39. Ekstenzije i konteksti (1) • definiraju se u datoteci extensions.conf • konteksti nam omogućuju definiranja pravila za kontrolu poziva koji prolaze kroz Asterisk • ekstenzije se definiraju unutar pojedinih konteksta • konteksti mogu sadržavati (uključivati) i druge kontekste • jedna od primjena konteksta je dodjeljivanje prava pojedinim korisnicima za ostvarivanje poziva kroz Asterisk (npr. ograničavanje odlaznih poziva po pojedinim korisnicima na lokalne, županijske, mobilne i međunarodne)

  40. Ekstenzije i konteksti (2) • definicija ekstenzija 500 i 600 iz prošlog primjera exten => 500,1,Playback(demo-abouttotry) exten => 500,n,Dial(IAX2/guest@misery.digium.com/s@default) exten => 500,n,Playback(demo-nogo) exten => 500,n,Goto(s,6) ; exten => 600,1,Playback(demo-echotest) exten => 600,n,Echo exten => 600,n,Playback(demo-echodone) exten => 600,n,Goto(s,6)

  41. Ekstenzije i konteksti (3) • tipovi ekstenzija • eksplicitne (za pojedine telefonske brojeve, npr. za brojeve 500 i 600 u prethodnom primjeru) • exten => 500,1,Cmd (attr) • grupne (za veći broj telefonskih brojeva koji se mogu povezati u jednu grupu ili niz, a mogu se opisati zajedničkim obilježjem (pattern matching)) • exten => _5XX,1,Cmd (attr)(brojevi 500, 501, 502, 503 … 599) • exten => _5XX.,1,Cmd (attr) (brojevi koji počinju sa znamenkama 500, 501 … 599, npr. 500, 5000, 50000, 500000, itd.) X=(0-9), Z=(1-9), N=(2-9)

  42. Lokalna ekstenzija za brojeve 100-199 • da bi se lokalni telefoni prijavljeni na našu centralu mogli između sebe pozivati potrebno je definirati ekstenziju unutar obuhvaćenog konteksta koja će omogućavati pozivanje lokalnih brojeva [default] exten => _1XX,1,Dial(SIP/${EXTEN},30,rtT) exten => _1XX,n,Hangup • asterisk*CLI> dialplan reload

  43. Uspostava poziva među centralama • za interkonekciju (međuspoj) između centrala koristit ćemo IAX2 signalizaciju na način da ćemo definirati trunkove prema centralnoj lokaciji (Centrala 90) • da bi se isti telefonski brojevi razlikovali na različitim centralama proširit ćemo numeraciju s 3 na 6 znamenki (lokalno brojevi ostaju isti) Centrala br.1 100-XXX 100-101 Centrala br.2 200-XXX 200-101 Centrala br.3 300-XXX 300-101 … Centrala br. 90 900-XXX 900-101

  44. Uspostava IAX2 trunka • IAX2 trunkovi definiraju se unutar datoteke iax.conf [centrala90] type=friend host=10.90.0.2 notransfer=yes ;secret=moofoo context=default ;permit=0.0.0.0/0.0.0.0 disallow=all allow=ulaw • asterisk*CLI> iax2 reload

  45. Ekstenzija za “vanjske” dolazne pozive • pozivi koji budu dolazili s drugih centrala bit će upućeni prema šesteroznamenkastoj numeraciji, pa je potrebno maknuti prve tri znamenke i napraviti novu ekstenziju za takve brojeve [default] exten => _900XXX,1,Dial(SIP/${EXTEN:-3},30,rtT) exten => _900XXX,n,Hangup • VAŽNO!!! Broj 9 u prethodnom primjeru trebate zamijeniti sa svojim brojem centrale

  46. Ekstenzija za “vanjske” odlazne pozive • Sve šesteroznamenkaste brojeve treba uputiti prema glavnoj centrali (Centrala 90) putem već definiranog IAX2 trunka • asterisk*CLI> dialplan reload [default] exten => _XXXXXX,1,Dial(IAX2/centrala90/${EXTEN}@default,30,rtT) exten => _XXXXXX,n,Hangup

  47. Priključak na Javnu govornu mrežu • Većina SIP / MGCP / IAX2 / SCCP / H.323 uređaja • Interne kartice u poslužitelju 4xISDN BRI 4xISDN PRI 2xISDN PRI 4x GSM 6x ANALOG

  48. voopIX – Besplatni telefonski razgovori između CARNet članica • Baziran na DUNDi protokolu istog autora kao i Asterisk koji omogućava distribuiranu peer-to-peer objavu (razmjenu) telefonskih brojeva • Podrška je ugrađena u Asterisk • Automatski se gradi cache pojedinih upita kako bi se optimizirao broj upita • Krajnji korisnik nije svjestan da li je poziv ostvaren putem voopIX-a ili putem JGM-a • U CARNet-u je izgrađen na pet distribuiranih poslužitelja (Zagreb, Split, Rijeka, Osijek i Dubrovnik) • Trenutno pet ustanova sudjeluje u ovoj fazi projekta

  49. voopIX (2) etfos: Telefonska numeracija 031/224-600 do 799 u voopIX-u se objavljuje: 38531224[6,7]XX izbirani broj: 0021365584 pretvara se u: 38521365584Takav se upit šalje u voopIX, koji unutar par milisekundi odgovara da li je taj broj pronađen. U ovom slučaju broj nije pronađen i poziv se ostvaruje kroz javnu govornu mrežu unidu: Telefonska numeracija: 020/445-700 do 999 u voopIX-u se objavljuje: 38520445[7-9]XX izbirani broj: 031224605pretvara se u: 38531224605Takav se upit šalje u voopIX, koji unutar par milisekundi odgovara da je broj u ovom slučaju pronađen, te se dinamički kreira IAX2 kanal direktno prema etfos-u. etfos ZG OS RI ST DU unidu

  50. Spoj članice na voopIX bez Asteriska voopIX EthernetSIP, H323, MGCP PBX Klasična, analogna tel. linijaili ISDN BRI, PRI Klasične, analogne tel. linije

More Related