K
K
ONFIGURACJA
ONFIGURACJA
PRZYKŁADOWEGO
PRZYKŁADOWEGO
SYSTEMU
SYSTEMU
V
V
O
O
IP.
IP.
ĆWICZENIE NR 7
ĆWICZENIE NR 7
KATEDRA ELEKTRONIKI
KATEDRA ELEKTRONIKI
POLITECHNIKA LUBELSKA
POLITECHNIKA LUBELSKA
A. Z
A. Z
AKRES
AKRES
ĆWICZENIA
ĆWICZENIA
Ćwiczenie polega na opracowaniu topologii, skonfigurowaniu routera firmy Cisco 
2811 oraz uruchomieniu programowej centralki VoIP – CallManager Express oraz 
telefonów Cisco 7940 oraz programowych telefonów Cisco IP Communicator.
B. W
B. W
YKORZYSTYWANE
YKORZYSTYWANE
URZĄDZENIA
URZĄDZENIA
I
I
OPROGRAMOWANIE
OPROGRAMOWANIE
.
.
•
Router Cisco 2811
•
Switch Catalyst 3750
•
telefony przewodowe Cisco 7940
•
telefon software’owy IPCommunicator
Serwer telefonii – CallManager.
Cisco CallManager jest programowym komponentem telefonii IP firmy
Cisco, tak zwanym serwerem telefonii IP. Można go nazwać odpowiednikiem PBX 
(Private Branch Exchange), czyli dawnych centralek znajdujących się w większych 
firmach,   które   służyły   do   komunikacji   wewnętrznej   oraz   do   dzwonienia     „na 
świat”. Jest on częścią tak zwanego AVVID ( Architecture for Voice , Video and 
Integrated Data). Rozwiązanie firmy Cisco – CallManager jest adresowane do 
dużych   oraz   średnich   firm   które   chcą   obniżyć   koszty   rozmów   pomiędzy 
rozproszonymi  oddziałami  firmy  oraz  abonentami  korzystającymi  ze   zwykłych 
analogowych telefonów.
Rys. 1 Pozycja CallManagera w hierarchii AVVID firmy Cisco.
Do głównych funkcji CallManagera należą :
•
zestawianie połączenia
•
sygnalizacja i kontrola urządzeń
•
plan oraz administracja numerami
•
cechy administracyjne telefonów
•
operacje, administracja, zarządzanie i zaopatrywanie w środki
1.1. Zasada działania.
W telefonii IP używa się, podobnie jak w klasycznej sieci telefonicznej,
"tradycyjnych" numerów telefonów. CallManager zajmuje się tłumaczeniem tych 
numerów na aktualne adresy IP telefonów. Obsługuje on całość zadań związanych 
z tzw. sygnalizacją, a więc wysyłanie "sygnału dzwonienia" do konkretnego 
telefonu, przesyłanie informacji o numerze dzwoniącego, generowanie informacji o 
ewentualnej zajętości numeru, zestawianie połączeń konferencyjnych, 
przekierowywanie połączeń i wszelkie inne funkcje, jakie można spotkać w 
klasycznych centralach telefonicznych. Warto zaznaczyć, że same pakiety niosące 
dane głosowe nie przechodzą przez serwer. Serwer zajmuje się tylko zestawieniem 
połączenia, a po jego zestawieniu dane przesyłane są już bezpośrednio pomiędzy 
telefonami.
Rys. 2 Przebieg zestawiania połączenia w systemie CallManager.
Do poszczególnych kroków podczas tworzenia połączenia telefon IP – telefon IP
należą :
1.Podniesienie słuchawki z widełek telefonu – zasygnalizowanie do serwera 
CallManager’a
2.CallManager żąda od telefonu odegrania tonu wybierającego numer ( pliki .wav 
są zapisane w telefonie ), podanie przez użytkownika numeru telefonu do którego 
chce się dodzwonic.
3.Kiedy CallManager rozpoznał numer telefonu, wybiera numer docelowego 
telefonu.
4.Gdy telefon z którym było ustanawiane połączenie poprzez CallManagera 
odpowiada, telefon generuje sygnał odwieszający do CallManagera.
5.CallManager informuje obydwa telefony o ustanawiania strumienia między nimi. 
Kiedy strumień audio jest ustanowiony pomiędzy telefonami ( za pomocą RTP – 
RealTime Transport Protocol), CallManager jest już niepotrzebny, i następuje 
normalna komunikacja miedzy dwoma urządzeniami w sieci.
6.Strumień audio RTP używa UDP jako protokołu transportowego poprzez porty 
od 16384 do 32767.
2. Topologia sieci
Rys. 3 Topologia sieci.
C. P
C. P
RZEBIEG
RZEBIEG
ĆWICZENIA
ĆWICZENIA
.
.
Konfiguracja routera Cisco 2811.
1. Konfiguracja interfejsów routera.
Do łączenia się telefonów IP z CallManager Express wykorzystujemy interfejs
FastEthernet.
interface FastEthernet0/0
ip address 10.0.0.1 255.255.255.0
duplex auto
speed auto
Do łączenia z sobą dwóch systemów CallManager wykorzystujemy interfejsy
Serial.
interface Serial0/0/1
ip address 10.0.1.1 255.255.255.0
clockrate 128000
Konfiguracja CallManager’a.
Konfiguracja CallManagera może być przeprowadzona na parę sposobów.
Najłatwiejszym jest wydanie polecenia
telephonyservice setup
w trybie konfiguracji
globalnej. Zadawany jest nam szereg pytań odnośnie dhcp ilości telefonów ich
numerów   itp.   Jest   to   konfiguracja   automatyczna,   polegająca   na   rejestrowaniu 
telefonów bez potrzeby podawania adresów MAC określania numerów DN itp. W 
ćwiczeniu wykorzystana będzie konfiguracja manualna.
1. Konfiguracja DHCP.
ip dhcp pool ITS
network 10.0.0.0 255.255.255.0
option 150 ip 10.0.0.1 ! regułka ta mówi telefonom jaki jest
! adres IP serwera tftp z którego po
! bierają konfigi oraz plik z systemem
defaultrouter 10.0.0.1
2. Określenie pliku z systemem.
Tftpserver flash:P003030214.bin
Poszczególne cyfry oznaczają numer systemu przeznaczonego dla określonej
rodziny telefonów IP. Należy zwrócić uwagę aby podać poprawną wersje pliku z 
systemem dla telefonów. Zależy ona od modelu oraz IOS routera.
  3. Uruchamianie usługi CallManager.
W trybie konfiguracji wydajemy polecenie :
Telephonyservice
Definujemy ilość telefonów IP oraz ilość Direcory Numbers (linnie):
maxephones 10
maxdn 20
Określamy typ oraz plik *.bin z systemem dla konretnych telefonów:
Load 79607940 P003030202014
Określamy adres oraz port na którym pracuje CallManager:
Ip sourceaddress 10.0.0.1 port 2000
Wydajemy polecenie które tworzy konfigi dla telefonów:
Create cnffiles
Oraz określamy czas co jaki telefony dają o sobie znać:
Keepalive 45
4. Uruchamianie telefonów.
Na początek określamy sobie directory numbers dla poszczególnych telefonów, 
są to odpowiedniki numerów w normalnej sieci PSTN.
ephonedn 1 dualline
number 101
name Telefon101
Następnie tworzymy interfejs dla telefonu i dodajemy numer DN.
ephone 1
macaddress 0014.A9CA.FBF0
type 7940
button 1:1 ! wpis 1:1 określa nam pierwszy przycisk telefo
!nu (1:) oraz przypisanie do niego pierwszego
!numeru DN (:1)
5. Konfiguracja korporacyjnej książki adresowej.
W trybie konfiguracji globalnej wydajemy polecenie 
telephoneservices
I następnie dodajemy interesujące nas wpisy:
directory entry 1 100 name wuwik
directory entry 2 101 name boczek
directory entry 3 102 name krzysio
directory entry 4 103 name kaska
directory entry 5 104 name pawel
6. Konfiguracja szybkich przycisków wybierania.
W konfiguracji poszczególnego telefonu dodajemy wpis:
speeddial 1 102 label tel102
Gdzie 1 oznacza pierwszy wolny przycisck szybkiego wybierania, 102 numer DN 
jakiegoś telefonu oraz tel102 napis dla poszczególnego numeru DN wyświetlana na 
LCD.
7. Definiowanie dostępu do poszczególnych funkcji telefonu.
Tworzymy sobie najpierw szablon : 
ephonetemplate 1
softkeys idle Newcall Redial
softkeys seized Endcall
softkeys connected Endcall Hold Trnsfer Confrn
regułka idle określa nam przyciski soft key wyświetlane podczas normalnej pracy 
telefonu (nic nie dotykamy), seized – kiedy użytkownik jest w czasie 
wykonywania połączenia, connected przyciscki wyswietlane w trakcie 
połączenia.
Następnie dodajemy w ten sposób stworzyony szablon do konkretnego telefonu:
ephone 2
ephonetemplate 1
8. Konfiguracja GUI dla administratora, customer user’a oraz normalnego
użytkownika.
Na początek musimy się upewnić, czy jest w pamięci flash odpowiedni
plik z GUI dla systemu CallManager. Posiada on nazwę cmegui1238T.tar, 
gdzie numer to odpowiednia wersja dla IOS. Jeśli go mamy to rozpakowujemy 
go 
Archive tar /xtract flash:gui1238T.tar flash:
i przystępujemy do konfiguracji
Włączamy serwer http:
Ip http server
Określamy ścieżkę z rozpakowanymi plikami:
Ip http path flash:
Włączamy autentykacje dla użytkowników lokalnych:
ip http authentication local
Przechodzimy do konfiguracji telephoneservice i wydajemy polecenia:
Web admin system name ADMIN password HASLO
Określamy możliwość zmian numerów DN dla admina:
Dnwebedit
Oraz określamy możliwość zmian czasu dla telefonów przez interfejs 
przegladarki:
Timewebedit
Teraz zajmiemy się tworzeniem customer administratora który ma ograniczone 
prawa.
Tworzymy plik określający dostęp do wybranych funkcji dla customer admina 
(przedstawiona jest tutaj część zawartości tego pliku):
<Presentation>
<MainMenu>
<AddExtension> Hide </AddExtension>
<DeleteExtension> Hide </DeleteExtension>
<AddPhone> Hide </AddPhone>
<DeletePhone> Hide </DeletePhone>
</MainMenu>
<Extension>
<SequenceNumber> Hide </SequenceNumber>
<Type> Hide </Type>
<Huntstop> Hide </Huntstop>
<Preference> Hide </Preference>
<HoldAlert> Hide </HoldAlert>
<TranslationRule> Hide </TranslationRule>
<Paging> Show </Paging>
<Intercom> Hide </Intercom>
<MWI> Hide </MWI>
<MoH> Hide </MoH>
<LBDN> Hide </LBDN>
<DualLine> Hide </DualLine>
<Reg> Hide </Reg>........................................
Daną usługę uaktywniamy poleceniem show a hide ją ukrywamy.
Kopiujemy ten plik do flasha na routerze orazy wydajemy polecenia:
Telephoneservice
web admin customer name NAZWA password HASLO
web customize load customeradm.xml
Dodajemy usera dla konkretnego telefonu:
Ephone 2
Username NAZWA password HASLO
GUI uruchamiamy z przeglądarki
http://10.0.0.1/ccme.html
9. Zestawianie peeringu z drugim CallManagerem.
Przechodzimy do trybu konfiguracji :
dialpeer voice 1 voip
Określenie numerów DN
destinationpattern 20..
Oraz IP z którym się zestawia połączenie
sessiontarget ipv4:10.0.1.2
telephoneservice
transferpattern 20..
transfersystem fullblind
Testowanie użytych kodeków.
Kodeki testowaliśmy na łączu serial. Przepustowość tego łącza maksymalnie
wynosiła   128   kbita/s.   W   przypadku   zestawienia   2     połączeń   z   drugim 
CallManagerem i zastosowaniu kodeka G.711 można było zauważyć dobrą jakość 
dźwięku, brak opóźnień. Było to spowodowane tym że kodek ten zajmował całą 
dostępne łącze. Ciekawą rzeczą jest to że w przypadku zestawiania więcej niż 2 
połączeń np. w przypadku 3prowadzenie rozmowy było dalej możliwe. Ma na to 
wpływ szereg czynników, protokół transportowy w tym przypadku było to TCP 
oraz sam bufor  dla interfejsów w routerze. W przypadku zmiany na protokół 
transportowy   UDP   zauważyliśmy   w   przypadku   prowadzenia   35   rozmów 
pogorszenie transmisji. Głos był urywany i czasem niewyraźny. Było to łatwe do 
przewidzenia ze względu na typ transmisji reprezentowany przez ten protokół.
Oprócz kodeka G.711 testowaliśmy G.729, oraz GSM. Przepływność tych
kodeków w jedną stronę sięga nawet 8 kbitów/s. Można było zauważyć nieznaczny 
spadek jakości dźwięku. W przypadku prowadzenia maksymalnej liczby rozmów 
która   była   ograniczona   ilością   posiadanych   telefonów   nie   stwierdziliśmy 
pogorszenia się transmisji.
Zmiany używanego kodeka nie można dokonąc na połączeniach lokalnych jedynie 
na połączeniach CallManager – CallManager.
Wtym celu używa się poleceń:
Dialpeer voice 1 voip
codec g729br8
lub
codec gsmefr
Zmiana protokołu transportowego:
session transport tcp
lub
session transport udp
Użycie Cisco IP Communicatora.
Konfiguracja IP Communcatora jest niemalże identyczna jak normalnych
telefonów. Musimy tylko określić odpowiedni plik *.bin który ładujemy z serwera 
tftp   umieszczonego   na   routerze.   Zamiast   adresu   sprzętowego   MAC   telefonu 
podajemy adres naszej karty sieciowej zainstalowanej w komputerze. 
Testowanie oraz sprawdzanie zaimplementowanej
konfiguracji.
Często możemy zauważyć że coś nie działa według naszej myśli. Najłatwiej jest
się posłużyć poleceniem show runningconfig ale czasem to nie wystarcza. W tym
celu mamy dostęp do poleceń typu debug bądź też show ephone telephone itp.
Szczegółowy podgląd tego co się dzieje z telefonami:
Debug ephone detail
*Jan  3 14:44:10.331: ephone1[1][SEP0014A9BDC3D7]: DN outofservice for DN 1 chan 1
*Jan  3 14:44:10.331: SkinnyGetCallState for DN 1 chan 1 IDLE
*Jan  3 14:44:10.331: called DN 1 chan 1, calling DN 1 chan 1 phone 1 s2s:0
*Jan  3 14:44:10.331: ephone1[1][SEP0014A9BDC3D7]: DN outofservice for DN 1 chan 2
*Jan  3 14:44:10.331: SkinnyGetCallState for DN 1 chan 2 IDLE
*Jan  3 14:44:10.331: called DN 1 chan 1, calling DN 1 chan 1 phone 1 s2s:0
*Jan  3 14:44:10.331: Skinny DN 1 chan 1 state change to DOWN
*Jan  3 14:44:10.331: Skinny DN 1 chan 2 state change to DOWN
*Jan  3 14:44:10.331: ephone1[1]:Phone Unregistered on socket [1] SEP0014A9BDC3D7
*Jan  3 14:44:10.331: ephone1[1]:UnregisterAck sent on socket [1] (0/0/6)
*Jan  3 14:44:10.331: %IPPHONE6UNREGISTER_NORMAL: ephone1:SEP0014A9BDC3D7 IP:10.0.0.2 
Socket:1 DeviceType:Phone has unregistered normally.
*Jan  3 14:44:10.331: skinny_server_process: Socket error. errno=0
*Jan  3 14:44:10.331: ephone1[1]:DisAssociate: Closed socket 1 for unregistered phone
*Jan  3 14:44:10.331: ephone1[1][SEP0014A9BDC3D7]: DN outofservice for DN 1 chan 1
*Jan  3 14:44:10.331: SkinnyGetCallState for DN 1 chan 1 IDLE
*Jan  3 14:44:10.335: called DN 1 chan 1, calling DN 1 chan 1 phone 1 s2s:0
*Jan  3 14:44:10.335: ephone1[1][SEP0014A9BDC3D7]: DN outofservice for DN 1 chan 2
*Jan  3 14:44:10.335: SkinnyGetCallState for DN 1 chan 2 IDLE
*Jan  3 14:44:10.335: called DN 1 chan 1, calling DN 1 chan 1 phone 1 s2s:0
*Jan  3 14:44:10.335: CLOSED Skinny socket 1 for deregistered phone
*Jan  3 14:44:11.335: Skinny Going Dormant
Przebieg rejestracji telefonu:
debug ephone register
*Jan  3 16:04:42.695: ephone(2)[2] Register StationIdentifier DeviceName SEP0014A9BDC3D7
*Jan  3 16:04:42.695: ephone(2)[2] StationIdentifier Instance 1    deviceType 8
*Jan  3 16:04:42.695: ephone2[1]:stationIpAddr 10.0.0.2
*Jan  3 16:04:42.695: ephone2[1]:maxStreams 0
*Jan  3 16:04:42.695: ephone2[1]:protocol Ver 0x84000006
*Jan  3 16:04:42.695: ephone2[1]:phonesize 3228 dnsize 488
*Jan  3 16:04:42.695: ephone(2) Allow any Skinny Server IP address 10.0.0.1
*Jan  3 16:04:42.695: ephone2[1]:Found entry 1 for 0014A9BDC3D7
*Jan  3 16:04:42.695: ephone2[1]:socket change 1 to 2
*Jan  3 16:04:42.695: ephone2[1]:FAILED: CLOSED old socket 1
*Jan  3 16:04:42.695: ephone2[2]:***Force device subtype to 0
*Jan  3 16:04:42.695: ephone2[2]:phone SEP0014A9BDC3D7 reassociate OK on socket [2]
*Jan  3 16:04:42.695: %IPPHONE6REGISTER: ephone2:SEP0014A9BDC3D7 IP:10.0.0.2 Socket:2 
DeviceType:Phone has registered.
*Jan  3 16:04:42.695: Phone 1 socket 2
*Jan  3 16:04:42.695: Skinny Local IP address = 10.0.0.1 on port 2000
*Jan  3 16:04:42.695: Skinny Phone IP address = 10.0.0.2 50359
*Jan  3 16:04:42.695: ephone2[2]:Signal protocol ver 5 to phone with ver 6
*Jan  3 16:04:42.695: ephone2[2]:Date Format M/D/Y
*Jan  3 16:04:42.695: ephone2[2]:RegisterAck sent to ephone 2: keepalive period 30 use sccpversion 5
*Jan  3 16:04:42.699: ephone2[2]:CapabilitiesReq sent
*Jan  3 16:04:42.951: ephone2[2]:CapabilitiesRes received
*Jan  3 16:04:42.951: ephone2[2]:Caps list 7
WideBand_256K  120 ms
G711Ulaw64k  40 ms
G711Alaw64k  40 ms
G729AnnexB  60 ms
G729AnnexAwAnnexB  60 ms
G729  60 ms
G729AnnexA  60 ms
...............................
Wyświetlanie zarejestrowanego telefonu :
show ephone
ephone2 Mac:0014.A9BD.C3D7 TCP socket:[2] activeLine:0 REGISTERED in SCCP ver 6
mediaActive:0 offhook:0 ringing:0 reset:0 reset_sent:0 paging 0 debug:0
IP:10.0.0.2 50359 Telecaster 7940  keepalive 1 max_line 2
button 1: dn 2  number 101 CH1   IDLE         CH2   IDLE
Wyświetlanie telefonów rozsyłających keepalive:
debug ephone keepalive
*Jan  3 16:07:54.547: Skinny Checking for stale sockets
*Jan  3 16:07:54.799: ephone1 If FastEthernet0/0 ETHERNET 10.0.0.3 via ARP
*Jan  3 16:07:54.799: ephone1[1]:Keepalive socket[1] SEP0014A9CAFA0C 
*Jan  3 16:07:55.807: ephone2 If FastEthernet0/0 ETHERNET 10.0.0.2 via ARP
*Jan  3 16:07:55.807: ephone2[2]:Keepalive socket[2] SEP0014A9BDC3D7 
.............................
Wyświetlenie konfiguracji dla telephoneservices:
show telephonyservice all
CONFIG (Version=3.3)
=====================
Version 3.3
Cisco CallManager Express
For online documentation please see:
www.cisco.com/univercd/cc/td/doc/product/access/ip_ph/ip_ks/index.htm
ip sourceaddress 10.0.0.1 port 2000
maxephones 6
maxdn 10
maxconferences 12 gain 6
dspfarm units 0
dspfarm transcode sessions 0
huntgroup report delay 1 hours
maxredirect 5
...............
Inne przydatne polecenia :
show telephony admin
show telephony all
show telephony dialpeer
show telephony ephone
show telephony tftpbindings
show ephone dn
show call history voice
show dialpeer voice summary
Polecenia z zakresu
debug
wyłączamy poprzez
no debug all
debug ephone detail
debug ephone error
debug ephone register
debug ephone keepalive
debug ephone state
debug ephone statistics
Poprzez kombinacje poleceń show debug oraz „?” możemy znaleźć i wyświetlić 
interesujące nas dane.
Dodatkowe informacje.
Reset telefonu możemy wykonać poprzez polecenie
reset
z
menu ephone NR_TEL
bądź z menu
telephoneservices reset all
, mamy również do dyspozycji polecenie
restart  które   powodóje   przekopiowani   zmienionego   konfiga   do  telefonu.  Reset 
możemy również wykonać z menu telefonu. Wciskamy najpierw klawisz Settings a 
następnie   kombinacje   #**#**.   Odblokowywanie   dodatkowych   opcji   w   menu 
Settings odbywa się poprzez wydanie kombinacji **# w tymże menu.
1. Obrazek na wyświetlaczu w przypadku braku aktywności.
W tym celu musimy posiadać service development kit (SDK).
Mając   plik   z   obrazkiem   *.gif   o   rozmiarach   nie   większych   niż   125   pikseli 
szerokości  oraz  60  pikseli  wysokości oraz  po  przekonwertowaniu  go  do  skali 
odcieni szarości, używając programu gif2cip konwertujemy sobie ten pliczek do 
postaci xml.
gif2cip logo.gif logo.xml
Możemy zedytować ten plik i wstawić wyświetlany tekst na dole:
<Prompt>Wpisz tutaj tekst</Prompt>
Następnie kopiujemy ten plik do pamięci flash oraz wydajemy polecenie:
telephonyservice
url idle http://10.0.0.1/flash:logo.xml idletimeout 10
D. M
D. M
ATERIAŁY
ATERIAŁY
POMOCNICZE
POMOCNICZE
.
.
http://www.cisco.com/
http://www.cisco.com/en/US/products/sw/voicesw/tsd_products_support_category_home.html
http://www.cisco.com/en/US/products/sw/voicesw/ps556/products_data_sheet0900aecd801979f0.html
http://www.cisco.com/en/US/tech/tk652/tk777/technologies_tech_note09186a0080159cf3.shtml
http://www.cisco.com/en/US/tech/tk652/tsd_technology_support_category_home.html
http://www.cisco.com/en/US/products/ps5820/index.html
http://www.cisco.com/en/US/products/hw/voiceapp/ps378/index.html
http://www.cisco.com/en/US/products/sw/voicesw/ps556/products_tech_note09186a00801c0764.shtml