Media Gateway Control Protocol – MGCP

July 29th, 2010 by admin

In following blog posts I will write about different Cisco based VoIP solutions and I will try to cover some foundation topics like voice signaling protocols and so on. My aim is to present different solutions and possibilities and I hope that you will find it interesting and helpful.

About MGCP and reasons to use it

Media Gateway Control Protocol is client server voice signaling protocol. Call control is handled by call agent (Cisco Unified Communications Manager) and media translation is performed by voice gateway. It is important to mention that it is only client – server model based voice signaling protocol on the market. Also, it is well know for its simple configuration (it is just matter of configuring call agent and remembering several gateway commands), centralized management and one of the main benefits is it’s use for MGCP back-haul QSIG configurations (in short: Layer 2 signalization is handled by voice gateway which is under control of call agent, and layer 3 signalization is forwarded to call agent – Cisco Unified Communications Manager – CallManager). Please note that MGCP is often called Megaco by telco people.

MGCP Messages

  1. Create connection – CRCX
  2. Notification request – RQNT
  3. Notify – NTFY
  4. Modify connection – MDCX
  5. Delete connection – DLCX
  6. Audit endpoint – AUEP
  7. Endpoint configuration – EPCF
  8. Restart in progress – RSIP

MGCP Call flow

MGCP configuration basics

This part of text will cover MGCP configuration – just foundations. Please note that it won’t include all specific configurations, it will just cover base configuration, but in several new posts I will try to cover different configuration scenarios and solutions.

So, let assume that MGCP call agent, in our case Cisco Unified Communications Manager – CallManager is working on IP address 192.168.1.95. Also, assume that redundant CallManager is working on IP address 192.168.1.100.  This text does not show CallManager side of configuration of a gateway and I assume that that part is already successfully configured (I will eventually edit this blog post to include that configuration, afterwards)

Configurations is as follows:

1. From global configuration mode start MGCP proces:

Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#mgcp
Router(config)#

2. Next thing we need to do is to configure call agent, redundant call agent and we need to inform voice gateway that call agent is under control of MGCP. We can do that as follows:

Router(config)#mgcp call-agent 192.168.1.95
Router(config)#ccm-manager redundant-host 192.168.1.100
Router(config)#ccm-manager mgcp

3. Once done with that, we can configure out Cisco Unified Communications Manager gateway options. So to do that, navigate to your CallManager and in Cisco Unified CM Administration configuration menu select Device > Gateway > Add new. Select your voice gateway model from the drop down list and click Next. For Protocol select MGCP and click Next. Once there, configure Domain name (please note that this field needs to be in following format: gatewayhostname.domainname, for example CCIEVoiceLab.localnetwork.lab) and other required options (add cards and preform complete gateway configuration). Once you are done with voice gateway configuration you are required to configure dial plan which will include this gateway into configuration. That goes beyond the scope of this blog post and I will write about it in some of following blog posts.

4. Once done with CallManager configuration we need to instruct voice gateway about the TFTP address where CallManager stores configuration, and that is typically IP address of the CallManager it self:

Router(config)#ccm-manager config server 192.168.1.95
Router(config)#

5. Once we are done with that we can instruct our gateway to download and apply configuration by issuing following command:

Router(config)#ccm-manager config
Router(config)#

Wait several seconds and you can verify your downloaded and applied configuration with following command:

Router#show running-config
Router(config)#

At that point your voice gateway will be controlled by call agent, in this case CallManager. To verify your configuration please give a check to Troubleshooting commands.

MGCP Troubleshooting

Once you are done with MGCP gateway configuration, you can verify your configuration by issuing following commands:

Router#show mgcp
MGCP Admin State ACTIVE, Oper State ACTIVE – Cause Code NONE
MGCP call-agent: 192.168.1.95 Initial protocol service is MGCP 0.1
MGCP validate call-agent source-ipaddr DISABLED
MGCP validate domain name DISABLED
MGCP block-newcalls DISABLED
MGCP send SGCP RSIP: forced/restart/graceful/disconnected DISABLED

This command will show all MGCP settings, timers and so on.

Router#show ccm-manager
MGCP Domain Name: Router
Priority        Status                   Host
======================================
Primary         Registering with CM      192.168.1.95
First Backup    Down                     192.168.1.100
Second Backup   None

Current active Call Manager:    None
Backhaul/Redundant link port:   2428

This command will show registration status and other statistics.

Beside above commands, we can use:

Router#show mgcp endpoint
Router#show voice port summary

That would be all for this post. I hope that this blog post is helpful and if you do have some questions in regards to MGCP please let me know and we can try to find solution. In next several posts I will write about MGCP fallback, backhaul and DTMF configurations.

  1. Media Gateway Control Protocol
  2. MGCP messages

Posted in IT, cisco, education, networks, voip | No Comments »

Implementing Cisco Quality of Service (QoS)

May 10th, 2010 by admin

Few months ago I passed Implementing Cisco Quality of Service (QoS). It was one of those “real life” exams with lot of simulations and drag and drop questions. Passing score was set to around ~80% and there was around 50 questions or so. Since Quality of Service is one of the huge areas there is lot of viable documentation. I would recommend Cisco QOS Exam Certification Guide (IP Telephony Self-Study), 2nd Edition from Cisco Press, but there are plenty of other books focused on this area as well. One of the best organized online learn sessions that I have found to be focused on this area was written by Paul Stryer from Global Knowledge. Please find links below text pointing to that online learn session. I need to mention that it is best practice to give a try to all of the solutions that you can find in this texts on real equipment, deploy Quality of Service in your organization and you will gain required understanding and experience to pass this exam. Beside that, you will have your network working much better than it was in prior to implementing QoS within your organization. Since I am following Cisco CCVP track this was only exam that is not directly related to voice (I mean it is not organized around voice strictly) and it was very nice experience. Personally I really enjoyed learning and preparing this stuff, and most of the solutions that I have learned are something that needs and can be implemented in networks that I was working with.

Quality of Service, Part 1 – Introduction
Quality of Service, Part 2 – Introduction
Quality of Service, Part 3 – Introduction
Quality of Service, Part 4 – QoS Mechanisms
Quality of Service, Part 5 – Classification
Quality of Service, Part 6 Marking
Quality of Service, Part 7 Service Policy
Quality of Service, Part 8 Congestion Management
Quality of Service, Part 9 FIFO Queuing
Quality of Service, Part 10 – Weighted Fair Queuing
Quality of Service, Part 11 CBWFQ
Quality of Service, Part 12 – Low Latency Queuing
Quality of Service, Part 13 – MQC Pop Quiz
Quality of Service, Part 14 – MQC Pop Quiz Answer

I hope that you will enjoy reading above texts and that you will enjoy implementing Cisco Quality of Service. If you would need some additional information please leave a comment.

Posted in IT, cisco, networks | 2 Comments »

Firmware tweaking: Linux on Samsung LCD TV LE40A756 and A856 with firmware T-RBYDEU

April 5th, 2010 by admin

Few days ago I had interesting request to tweak Linux on Samsung LCD TV. At first, I was kind of surprised that Linux is supported on TV, but it is normal. Linux is very strong competitor on the appliance based market and it was just about time to face those kind of installations. The main goal was to enable telnet on firmware in order to be able to connect to TV, and after that to load Common Internet File System to be able to use network mounts. Since I didn’t know anything about Samsung TV series and belonging firmware versions I needed to read something about that. Basically, there are differences in versions based on producing years and processors that are supported. This text is about to cover Samsung LCD TV LE40A756 and A856 with firmware T-RBYDEU. I need to mention that it is kind of easier to work with other models of Samsung LCD TVs since they seam to open more possibilities (this is just my opinion) for firmware hacking but this version was very interesting to play with as well. Since this firmware (as much as all other appliance based firmware versions) is using squash file system, to be able to add something on filesystem we would need to unsquash file system (unsquash is viable thru squashfs-tools) and then perform necessary changes. Since I am using Ubuntu which is providing newer version of squashfs-tools package than it is required (Ubuntu is providing squashfs-tools version 3.1 and it is required to have version 2.0) I didn’t follow that procedure. However, for those that would like to give it a try you can follow this procedure. We will follow other procedure.

    Downloads

Navigate to Samsung web site > Support > Downloads > TV Audio Video > Choose a product type>: Television > Choose a product subtype: LCD TV > Select your TV model and then click on Select. You will be provided with the link to download your firmware version. In our case firmware is called T-RBYDEU.exe.

    Firmware work

Using some of the decompression tools like 7zip, WinRAR or some other program that you use on the daily basis, we need to extract .exe file that we have downloaded. I will describe procedure under Linux operating system using 7zip:

7z x T-RBYDEU.exe

Once done, you will be able to see extracted files in directory T-RBYDEU. Please note that you will be able to see those files:

gomez@gomez-laptop:/media/Data_/T-RBYDEU$ ls -la
total 40
drwx—— 1 gomez gomez     0 2009-05-11 23:38 .
drwx—— 1 gomez gomez  4096 2010-04-01 16:22 ..
-rwxrwxrwx 1 gomez gomez 18929 2009-04-17 16:16 crc
drwx—— 1 gomez gomez  4096 2009-05-11 23:38 image
-rwxrwxrwx 2 gomez gomez  8676 2009-04-17 16:16 MicomCtrl
gomez@gomez-laptop:/media/Data_/T-RBYDEU$ cd image/
gomez@gomez-laptop:/media/Data_/T-RBYDEU/image$ ls -la
total 58166
drwx—— 1 gomez gomez     4096 2009-05-11 23:38 .
drwx—— 1 gomez gomez        0 2009-05-11 23:38 ..
-rwxrwxrwx 1 gomez gomez  8155136 2009-04-17 16:16 appdata.img
-rwxrwxrwx 1 gomez gomez   602112 2009-04-17 16:16 boot.img
-rwxrwxrwx 1 gomez gomez 37646336 2009-04-17 16:16 exe.img
-rwxrwxrwx 1 gomez gomez   177920 2009-04-17 16:16 fnw.bin
-rwxrwxrwx 1 gomez gomez       17 2009-04-17 16:16 info.txt
-rwxrwxrwx 1 gomez gomez    99680 2009-04-17 16:16 oneboot.bin
-rwxrwxrwx 1 gomez gomez  3424256 2009-04-17 16:16 rootfs.img
-rwxrwxrwx 2 gomez gomez  3172612 2009-04-17 16:16 T-RBYDAUM
-rwxrwxrwx 2 gomez gomez  3172612 2009-04-17 16:16 T-RBYDEUM
-rwxrwxrwx 1 gomez gomez   228296 2009-04-17 16:16 u-boot.bin
-rwxrwxrwx 2 gomez gomez       47 2009-04-17 16:16 validinfo.txt
-rwxrwxrwx 2 gomez gomez       43 2009-04-17 16:16 version_info.txt
-rwxrwxrwx 1 gomez gomez  2864533 2009-04-17 16:16 vmlinux.ub
gomez@gomez-laptop:/media/Data_/T-RBYDEU/image$

As per above output, please note that we have directory called image, and from the interesting files we have exe.img and validinfo.txt which will be used in following text.

    Firmware tweaks

Next thing that we need to do is to prepare exe.img for additional changes in order to be able to telnet to TV and use some networking services like CIFS. Now, navigate to image directory and create directory temp:

gomez@gomez-laptop:/media/Data_/T-RBYDEU$ cd image/
gomez@gomez-laptop:/media/Data_/T-RBYDEU/image$ mkdir temp
gomez@gomez-laptop:/media/Data_/T-RBYDEU/image$

Once done, we will mount exe.img with the type of vfat to newly created temp directory:

gomez@gomez-laptop:/media/Data_/T-RBYDEU/image$ sudo mount -t vfat -o loop exe.img temp/

With above command, we have mounted exe.img to temp directory. Please note that we have following files inside temp directory:

gomez@gomez-laptop:/media/Data_/T-RBYDEU/image$ cd temp/
gomez@gomez-laptop:/media/Data_/T-RBYDEU/image/temp$ ls -la
total 28980
drwxr-xr-x 3 root root 16384 1970-01-01 01:00 .
drwx—— 1 gomez gomez 4096 2010-04-04 19:06 ..
-rwxr-xr-x 1 root root 29487160 2009-04-17 16:16 exeDSP
drwxr-xr-x 3 root root 8192 2009-04-17 16:16 modules
-r-xr-xr-x 1 root root 131072 2009-04-17 16:16 $rfs_log.lo$
-r-xr-xr-x 1 root root 8192 2009-04-17 16:16 rfs_pool.sy$
-rwxr-xr-x 1 root root 4374 2009-04-17 16:16 run
-rwxr-xr-x 1 root root 4525 2009-04-17 16:16 start.sh
gomez@gomez-laptop:/media/Data_/T-RBYDEU/image/temp$

Please note that we have start.sh file which we will use in following text.

    Scripts

Using your favourite text editor, replace current start.sh file with following:

#!/bin/sh

if [ -e /mtd_chmap/start.sh ]
then
echo “user start.sh found!”
/mtd_chmap/start.sh
else

export PATH=/sbin:/usr/sbin:/usr/bin:/bin:/usr/local/bin:/usr/local/sbin
#export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mtd_cmmlib:/usr/local/lib:/usr/lib:/lib
export HOME=/tmp/root
export TERM=linux
export LOGNAME=”root”
cd /dtv/usb
PU=`cat log | grep Mount`
PU=`echo ${PU##MountDir : }`
echo $PU
$PU/usb.sh &

mount

## mount -n -t usbfs none /proc/bus/usb

ulimit -s 2048

export PS1=’\h:\w\$ ‘

## STAPI Root Device Name?## ———————-
ST_DEV_ROOT_NAME=stapi
export ST_DEV_ROOT_NAME

## STAVMEM Device Name
## ——————-
STAVMEM_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stavmem_ioctl
export STAVMEM_IOCTL_DEV_PATH

## STAUDLX Device Name
## ——————-
STAUDLX_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/staudlx_ioctl
export STAUDLX_IOCTL_DEV_PATH

## STBLAST Device Name
## ——————-
STBLAST_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stblast_ioctl
export STBLAST_IOCTL_DEV_PATH

## STBLIT Device Name
## ——————
STBLIT_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stblit_ioctl
export STBLIT_IOCTL_DEV_PATH

## STCC Device Name
## —————-
STCC_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stcc_ioctl
export STCC_IOCTL_DEV_PATH

## STCLKRV Device Name
## ——————-
STCLKRV_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stclkrv_ioctl
export STCLKRV_IOCTL_DEV_PATH

## STDENC Device Name
## ——————
STDENC_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stdenc_ioctl
export STDENC_IOCTL_DEV_PATH

## STEVT Device Name
## —————–
STEVT_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stevt_ioctl
export STEVT_IOCTL_DEV_PATH

## STFASTFILTER Device Name
## ————————
STFASTFILTER_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stfastfilter_ioctl
export STFASTFILTER_IOCTL_DEV_PATH

## STFDMA Device Name
## ——————
STFDMA_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stfdma_ioctl
export STFDMA_IOCTL_DEV_PATH

## STGFB Device Name
## —————–
STGFB_CORE_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stgfb_core
export STGFB_CORE_DEV_PATH
STGFB_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stgfb_ioctl
export STGFB_IOCTL_DEV_PATH

## STHDMI Device Name
## ——————
STHDMI_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/sthdmi_ioctl
export STHDMI_IOCTL_DEV_PATH

## STI2C Device Name
## —————–
STI2C_IOCTL_DEV_PATH=”/dev/${ST_DEV_ROOT_NAME}/sti2c_ioctl”
export STI2C_IOCTL_DEV_PATH

## STLAYER Device Name
## ——————-
STLAYER_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stlayer_ioctl
export STLAYER_IOCTL_DEV_PATH

## STMERGE Device Name
## ——————-
STMERGE_IOCTL_DEV_PATH=”/dev/${ST_DEV_ROOT_NAME}/stmerge_ioctl”
export STMERGE_IOCTL_DEV_PATH

## STPIO Device Name
## —————–
STPIO_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stpio_ioctl
export STPIO_IOCTL_DEV_PATH

## STPTI4 Device Name
## ——————
STPTI4_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stpti4_ioctl
export STPTI4_IOCTL_DEV_PATH

## STSMART Device Name
## ——————-
STSMART_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stsmart_ioctl
export STSMART_IOCTL_DEV_PATH

## STSYS Device Name
## —————–
STSYS_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stsys_ioctl
export STSYS_IOCTL_DEV_PATH

## STTTX Device Name
## —————–
STTTX_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stttx_ioctl
export STTTX_IOCTL_DEV_PATH

## STTUNER Device Name
## ——————-
STTUNER_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/sttuner_ioctl
export STTUNER_DEV_PATH

## STVBI Device Name
## —————–
STVBI_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stvbi_ioctl
export STVBI_IOCTL_DEV_PATH

## STVID Device Name
## —————–
STVID_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stvid_ioctl
export STVID_IOCTL_DEV_PATH

## STVIN Device Name
## —————–
STVIN_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stvin_ioctl
export STVIN_IOCTL_DEV_PATH

## STVMIX Device Name
## ——————
STVMIX_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stvmix_ioctl
export STVMIX_IOCTL_DEV_PATH

## STVOUT Device Name
## ——————
STVOUT_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stvout_ioctl
export STVOUT_IOCTL_DEV_PATH

## STVTG Device Name
## —————–
STVTG_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/stvtg_ioctl
export STVTG_IOCTL_DEV_PATH

STTKDMA_IOCTL_DEV_PATH=/dev/${ST_DEV_ROOT_NAME}/sttkdma_ioctl
export STTKDMA_IOCTL_DEV_PATH

RUN=1
/exe/exeDSP

Please note bold lines. Basically, it is the same file except that we are instructing our Linux firmware to load usb.sh script which needs to be located on USB root directory. usb.sh script will instruct Linux firmware to start busybox instance of telnet deamon so that we are able to telnet to our TV, and additionally it will load cifs.ko kernel module which will enable Common Internet File System so that we are able to mount some network devices on our Linux firmware. usb.sh script looks like:

#! /bin/sh

echo “!!!!!!!!!!!!!! USB START !!!!!!!!!!!!!!”

/bin/stty -F /dev/ttyAS0 ospeed 57600 ispeed 57600
#line before enables console for speed 57600. Put ‘debug’ to console and you see menu, put ’12′ and ENTER
echo “!!!!!!!!!!!!!! start console on 57600 !!!!!!!!!!!!!!”

#sleep 25 sec is need for wait ethernet start
sleep 25

cd /dtv/usb
PU=`cat log | grep Mount`
PU=`echo ${PU##MountDir : }`

echo “!!!!!!!!!!!!!! start telnet !!!!!!!!!!!!!!”
$PU/busybox telnetd -l /bin/sh

echo “!!!!!!!!!!!!!! start cifs.ko !!!!!!!!!!!!!!”
cd $PU
insmod cifs.ko

sleep 4

echo “!!!!!!!!!!!!!! clear old contents USB on TV !!!!!!!!!!!!!!”
rm /mtd_contents/V* -R
rm /mtd_contents/database -R

echo “!!!!!!!!!!!!!! start mount !!!!!!!!!!!!!!”
mount -t cifs //192.168.0.1/photo $PU/photo -o user=user_xp -o pass=password_xp
mount -t cifs //192.168.0.1/mp3 $PU/mp3 -o user=user_xp -o pass=password_xp
mount -t cifs //192.168.0.1/video $PU/video -o user=user_xp -o pass=password_xp

mount

echo “!!!!!!!!!!!!!! USB END !!!!!!!!!!!!!!”

Please note bold lines. Basically, we are starting telnet daemon and loading cifs.ko kernel module. After that, we are mounting some Windows XP shares from our personal computer which is working on 192.168.0.1 IP address. Once this file is loaded, and those mount locations are created you will be able to use files within above directories on your TV from the TV menus.

Please note that usb.sh, cifs.ko, busybox files and mp3, video, and photo directories needs to be located on USB root location.

Once done with that, we are ready to preform final changes to our firmware. First thing that we need to do is to umount temp directory:

gomez@gomez-laptop:/media/Data_/T-RBYDEU$ sudo umount /home/gomez/Desktop/T-RBYDEU/temp

Then, we need to delete temp directory:

gomez@gomez-laptop:/media/Data_/T-RBYDEU/image$ sudo rm -rf temp/

Once done with that, we need to change CRC information, because we have changed exe.img file. We can do that as follows:

gomez@gomez-laptop:/media/Data_/T-RBYDEU/image$ crc32 exe.img
cdc8080c

Once we have CRC information, we need to enter new value to validinfo.txt file:

gomez@gomez-laptop:/media/Data_/T-RBYDEU/image$ cat validinfo.txt
*007_exe.img_663430d9*011_appdata.img_a485b538

Please note value 663430d9. We need to change that value with cdc8080c that we have got as output from crc32 command. You can do that by using your favourite text editor. Once done with that, we are done with tweaking our Linux firmware. Your USB pen content should look like this:

gomez@gomez-laptop:~/Desktop/USB$ ls -la
total 3644
drwxr-xr-x 6 gomez gomez    4096 2010-04-05 08:59 .
drwx—— 8 gomez gomez    4096 2010-04-05 09:03 ..
-rwxrwxrwx 1 gomez gomez  992084 2009-11-18 23:13 busybox
-rwxrwxrwx 1 gomez gomez 2707316 2009-11-17 20:08 cifs.ko
drwx—— 2 gomez gomez    4096 2009-12-28 09:12 mp3
drwx—— 2 gomez gomez    4096 2009-12-28 09:12 photo
drwx—— 3 gomez gomez    4096 2010-04-05 08:59 T-RBYDEU
-rwxrwxrwx 1 gomez gomez    1026 2009-12-28 09:14 usb.sh
drwx—— 2 gomez gomez    4096 2009-12-28 09:12 video

If that is the case, you can put this USB to your TV, turn it on and you will be prompted to upgrade firmware with firmware version listed on your USB pen. Once you perform this upgrade, you will be able to telnet to your TV. Check your TV IP address from TV menus, and then using Linux shell, or if you are Windows user using Putty, telnet to your TV and enjoy power of your Linux shell. Also, using TV menus and Common Internet File System – CIFS, you can play some music, video or photos on your TV (as described above).

If you are lazy to give a check to this procedure, you can download fully operational USB image on this link. You are doing that on your own risk and author of this blog post is not responsible for any damage that you might cause by some operation.

Enjoy power of Linux shell on your Samsung TV!

For more information please visit following links:

  1. SamyGo wiki pages
  2. How to enable Telnet on Samsung TV’s
  3. Hacking T-RBYDEUC Firmware – LE40A756 and A856

Posted in IT, applications, debian, education, free software, geeks, gentoo, linux, open source, security | 1 Comment »

Placing VoIP calls over UMTS/3G network using Nokia E72

March 15th, 2010 by admin

I was surprised when I tried to place a VoIP call over UMTS/3G network using my Nokia E72. It wasn’t working. In prior to that, I needed to install Nokia SIP VoIP settings application to get VoIP support on my mobile phone (Nokia E71 comes with this software preinstalled, so if you are Nokia E71 user and possible switcher to Nokia E72 be aware of this). I was really positively surprised when I saw how many different options can you configure using Nokia SIP VoIP settings application (for example, you can change your QoS DSCP value for RTP traffic, RTP port range, codecs and so on… impressive.) However, my VoIP calls placed over 3G were unsuccessful. So, I needed to find solution for it.

As a prerequisite make sure that you are connected to UMTS network by navigating to:

Home > Control Panel > Settings > Phone > Network > Network Mode

While there for “Network Mode” field you will need to set “UMTS” and once you apply that you will be connected to your UMTS/3G network (in upper left corner you will be able to see small 3G connection mark).

Once done with that we need to enable 3G VoIP calls.

Procedure is as follows: Navigate to Home > Control Panel > Net Sett:

Once there, navigate to “Advanced VoIP settings” and then select “VoIP services“:

After that you will need to select your SIP profile (which is in our case called devlogic) and after that select “Profile settings” as per screenshot:

Once there, you will need to scroll down and find option “AWCDMA“. That option is set to “off” by default, and you will need to set it to “on” in order to place VoIP calls over 3G network.
W-CDMA (Wideband Code Division Multiple Access), UMTS-FDD, UTRA-FDD, or IMT-2000 CDMA Direct Spread is an air interface standard found in 3G mobile telecommunications networks. Once done, you are ready to make your UMTS/3G VoIP calls.

SIP VoIP settings
Installing SIP VoIP settings
AWCDMA

Posted in IT, voip | 2 Comments »

Asterisk QoS markings and Cisco Low Latency Queueing – LLQ

March 10th, 2010 by admin

Few days ago we finally got our new optical connection. It is working like a charm. Having optical connection and Cisco router from one side and Asterisk server from the other side was a clear sign that we could/should implement QoS for voice traffic. By default, Asterisk is using port range 10000 to 20000 for RTP streams (which is adjustable in /etc/asterisk/rtp.conf) so you have several solutions how to implement Low Latency Queuing – LLQ on Cisco router. You can:

  1. use Network Based Application Recognition NBAR to recognize your RTP traffic by using command ‘match protocol rtp’ within required class map;
  2. create access control list which would comprehend all the traffic which is working as UDP in port range 10000 to 20000 by executing command ‘access-list 101 permit udp any range 10000 20000 any’ and then call that access control list within class map by using command ‘match access-group 101′;
  3. make your Asterisk mark your SIP or RTP traffic by default.

From above listed solutions to this problem, third solution was most logical to me, although all solutions would work. Since there is recommendation to mark traffic as close to source as possible third option was very logical thing to go for. If you are using Asterisk which is working on Linux as root user (in most cases it is working with asterisk user by default) you will need to edit your sip.conf and within section [general] you will need to add following:

tos_sip=cs3
tos_audio=ef

Once done with that, save your configuration, reload asterisk and you are ready to go for Cisco configuration.

As I already mentioned, in most cases Asterisk is using user asterisk for the Asterisk daemon. If that is a case, above listed solution won’t work for you because Linux as operating system won’t allow you to mark your packages as non root user. That is very logical since we would be able to mark our web or some peer to peer traffic packages as EF (expedited forwarding) and obtain priority which is not desired at all. But, there is very powerful solution by using iptables. As root, you will need to execute following:

iptables -A OUTPUT -t mangle -p udp -m udp –dport 5060 -j DSCP –set-dscp 0×28
iptables -A OUTPUT -t mangle -p udp -m udp –sport 10000:20000 -j DSCP –set-dscp 0×28

By executing above commands you will mark your SIP and RTP traffic as DSCP CS5 (IP Precedence 5). You can verify that by catching a trace using snoop/tcpdump.

In case that you would like to set different DSCP values for some traffic, please find partial list here:
Expedited Forwarding, DSCP = 0x2E
CS5, DSCP = 0×28
CS6, DSCP = 0×30
CS7, DSCP = 0×38

Now last thing that we would need to do on the Linux side is to add those iptables rules to load on boot. Edit /etc/rc.local using your favorite text editor and paste above listed iptables lines and save it. Please note that rc.local file is loaded after the network, so if you are planning to put some firewall lines beside those that mark sip and trp traffic you might end up without your firewall rules for few seconds (otherwise, you can execute ‘iptables-save >/etc/iptables.rules‘ and then you would just need to add following line ‘pre-up iptables-restore < /etc/iptables.rules‘ to ‘/etc/network/interfaces‘ by using your favorite text editor to be loaded with network).

On the Cisco router side, we will configure Low Latency Queueing – LLQ to put some priority onto our CS5 marked packages. First thing that we need to do is to create class map from the global configuration mode by executing following commands:

router>enable
router#conf t
router(config)#class-map match-any voice
router(config-cmap)#match ip dscp cs5
router(config-cmap)#exit
router(config)#

By creating class map as listed above we would select our Asterisk marked cs5 packages. Next thing that we need to do is to define what we want to do with above selected cs5 marked packages. We are doing that by creating policy map as follows:

router(config)#policy-map llq
router(config-pmap)#class voice
router(config-pmap-c)#priority percent 20
router(config-pmap-c)#exit
router(config-pmap)#class class-default
router(config-pmap-c)#fair-queue

As per above configuration we are creating policy map called llq, and within that we are specifying 20 percent of available bandwidth for class voice. Please note that we need to have correct bandwidth statement under interface which is connected to WAN. Also, please note that we have enabled fair queueing on class-default (all data which is not selected by some other class map).

Last thing to do in regards to configuration is to enable policy map on interface which is facing connection towards your Internet Service Provider (WAN interface). We can do that by navigating to interface configuration mode and applying service policy in output direction as per following example:

router(config-pmap-c)#exit
router(config-pmap)#exit
router(config)#interface fastEthernet0/1
router(config-if)#service-policy output llq

And that is all. Now, we need to check results of our work by executing following command:

router#show policy-map interface fastEthernet 0/1
FastEthernet0/1

Service-policy output: llq

queue stats for all priority classes:
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 947031/193919404

Class-map: voice (match-any)
856803 packets, 170900643 bytes
1 minute offered rate 22000 bps, drop rate 0 bps
Match: ip dscp cs5 (40)
856803 packets, 170900643 bytes
1 minute rate 0 bps
Priority: 20% (400 kbps), burst bytes 15000, b/w exceed drops: 0

Class-map: class-default (match-any)
5321936 packets, 1534281066 bytes
1 minute offered rate 20000 bps, drop rate 0 bps
Match: any
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops/flowdrops) 0/0/0/0
(pkts output/bytes output) 5322316/1531545858
Fair-queue: per-flow queue limit 16

Please note packet counts under voice class on this policy. That means that we have deployed working configuration which will improve your voip experience. Your voip traffic will get priority among other aggressive traffic flows. Please find some additional information below, and feel free to contact me in order that you have additional questions.

  1. Low Latency Queueing
  2. Quality of Service

Posted in IT, cisco, debian, linux, networks, voip | No Comments »

Debconf11 will take place in Banja Luka, Bosnia and Hercegovina

March 1st, 2010 by admin

One of the biggest IT conferences, and most probably biggest GNU/Linux conference, Debconf (Debian Developers Conference) will take place in Banja Luka, Bosnia and Hercegovina in 2011! Among very professional bids from Munchen (Germany) and Quito (Equator), our Banja Luka bid won. Everything was carefully prepared and well organised by local team with Adnan Hodzic as lead person. We need to mention that we have full support which include funding, venues and else from Government of Republika Srpska which signed support letter (you can find it on Banja Luka bid wiki page). As the person which participated at Debconf7 in Edinburgh I am really happy that I will have opportunity to see known people, but also that Bosnia and Hercegovina will host this since this is our second bid (Sarajevo bid for dc7). It is our pleasure to have opportunity to host Debconf11 and we hope to see you here next year!

  1. Banja Luka bid wiki page
  2. My dc7 summary blog page

Posted in IT, debian, education, free software, geeks, linux, open source | No Comments »

31/01/10, Caffe “Ekran” at 18h: Zenica GNU/Linux users meeting

January 18th, 2010 by admin

After a long time, Zenica GNU/Linux Users are about to have meeting! It is going to take a place in Caffe “Ekran” at 18h on 31. Jan ’10. We intend to talk about some future projects, Linux based solutions that we have learned about during our many months of inactivity, and we intend to have good time. Since we were inactive for some time we are happy that there are some new users that we intend to meet with on this meeting. If you are interested in our projects and who we are, just show up. We will be willing to meet you, help you with your Linux/Networking/Programing/IT issues (you don’t have to be Linux user as you can see, and we can help up to level that we are capable to help) and to share our experience!

  1. Linux Users group of Bosnia and Hercegovina
  2. Zenica Linux users forum

Posted in IT, education, free software, geeks, happenings, linux, networks, open source, web | 2 Comments »

Cisco Unified Communications IP Telephony

December 25th, 2009 by admin

During last few months I was intensively working with Cisco Unified Communications Manager, previously called just Call Manager in order to obtain Cisco Unified Comminications IP Telephony (CIPT) certification. Since I am coming from the ‘voice’ field when I started to work with Cisco products it was logical to me to check what is Cisco offering in that field. And I remember that I was impressed. Six different certifications after CCNA and two possible CCVP paths. Plenty of different solutions, gateways, protocols and such was enough challenging to me. First thing that I needed is to make clear decision of which CCVP path to follow. One is covering CallManager (version 6.X called CUCM) in two parts (CIPT1 and CIPT2) and other, old one, is covering CallManager (Cisco Unified CallManager 4.X) throught one certification mixing everything with additional Gateway/Gatekeeper certification and that path is about to reach end of life on December, 31. Since I was working with web based call processing device in past I decided to go with actual Unified Communications Manager CCVP path (because CUCM is web based call processing solution as well). One of the exams on that path is Cisco Unified Communications IP Telephony Part 1 which I have passed today.  There was 60 questions and you needed to score around 80% to pass it. There are single choice, multiple choice and drag and drop questions. It was not that easy at all although I was preparing for it for few months and that is normal because this is very complex solution. When it comes to CUCM I need to say that I was quite surprised of number of features that it can provide. It is very powerful, high available and redundant call processing solution which is covering advanced mobility, call coverage and other solutions in very organized, logical and intelligent way. I was preparing my certification following multiple documentation sources and by following quick reference. Note that CallManager can be installed in VMware which is a good thing, because when it comes to practicing you won’t spend lot of money to build complete testing environment. Also, please note that there are many good CCVP blogs which can help a lot and I will post few links below the text. If you need some additional information on CallManager or this certification, feel free to contact me, I will be willing to help.

  1. Cisco Unified Communications Manager
  2. CCVP certification paths
  3. CCIE12932 blog
  4. Chris’ CCVP blog

Posted in IT, cisco, education, voip | No Comments »

Cisco HSRP: Way to go forward with nice technology

May 21st, 2009 by admin

Few weeks ago I was working with several Cisco layer three switches, to be precise those were Cisco 3560 series. The part of the scenario was to provide stable and powerful fail over technology  in case that one of those switches goes down from some reason (I don’t know why, but when I am talking about downtime on the cisco devices i am always thinking of lightening although i don’t have any experience with cisco devices going down from that reason). To simplify scenario, i will talk about two switches in active/standby configuration.

How to achieve that? Is there light at the end of tunnel? Yes, there is a light! And it is called HSRP. HSRP stands for Hot Standby Router Protocol and that is first-hop redundancy protocol designed to allow for transparent fail-over of the first-hop router. Yes, i know it sounds ultra complicated and tuff, but I would say that it is just that fist impression that we have when dealing with something new.

When HSRP is configured on a network segment, it provides a virtual MAC address and an IP address that is shared among a group of routers running HSRP. The address of this HSRP group is referred to as the virtual IP address. One of these devices is selected by the protocol to be the active router. The active router receives and routes packets destined for the MAC address of the group. For n routers running HSRP, n + 1 IP and MAC addresses are assigned.

HSRP detects when the designated active router fails, at which point a selected standby router assumes control of the MAC and IP addresses of the Hot Standby group. A new standby router is also selected at that time.

HSRP uses a priority mechanism to determine which HSRP configured router is to be the default active router. To configure a router as the active router, you assign it a priority that is higher than the priority of all the other HSRP-configured routers. The default priority is 100, so if you configure just one router to have a higher priority, that router will be the default active router.

Devices that are running HSRP send and receive multicast User Datagram Protocol (UDP)-based hello messages to detect router failure and to designate active and standby routers. When the active router fails to send a hello message within a configurable period of time, the standby router with the highest priority becomes the active router. The transition of packet forwarding functions between routers is completely transparent to all hosts on the network.

OK, now when we know how cool is HSRP and what nice benefits it is providing to us, it is time to configure it. As you will see, it is simple straight forward process:

1. enable
Enables privileged EXEC mode.
2. configure terminal
Enters global configuration mode.
3. interface FastEthhernet0/5
Configures an interface type and enters interface configuration mode.
4. ip address 192.168.1.10 255.255.255.0
Specifies an IP address for an interface.
5. standby 1 priority 110
Configures HSRP priority (default priority is 100).
6. standby 1 preempt delay minimum 380
Configures HSRP preemption and preemption delay. By default, the router that comes up later becomes the standby.
7. standby 1 ip 192.168.1.254
Activates HSRP.
8. end
Returns to privileged EXEC mode.
9. show standby brief
Displays HSRP information.
10. show standby FastEthernet0/10
Displays HSRP information about specific interface.

Follow the procedure for all devices that you would like to work with HSRP and enjoy. There is lot more features that you can configure with HSRP like authentication, object tracking and so on, but I am not having intention to explain those in details. I strongly encourage you to dig deeper about HSRP because it is really good and fully working technology that can make your day to day job (or life) easier.

Posted in IT, cisco, networks | No Comments »

Nokia E71: Nice piece of hardware

March 10th, 2009 by admin

Few months ago i decided to buy Nokia E71. Although i was not fan of those full qwerty mobiles (they always seemed to be so big) i have decided to buy this one after realising that it is piece of good and really powerful hardware (400 Mhz ARM processor, almost like my first PC). And really, i found it to be really good. From connectivity point of view we are dealing with mobile phone that is working with Bluetooth, Wireless LAN and SIP (which i personally admire as killer feature) VPN and other interesting stuff, which is more then enough for normal business user. As i already mentioned, the best thing for me that it is working with SIP. In company that I am working for, we have Asterisk telephony solution which is working with SIP and IAX protocol so i have my personal extension for mobile phone and when i am working out of office, in area that is covered with wireless internet connectivity, i can make free phone calls (at the moment we are considering one of those nice analog cards from Digium or Sangoma so that we can make calls to PSTN) which is really good. This is classical business oriented phone with a lot of nice features that could be used in different environments and for different business needs. Also, it is working with Simbian so there is a lot of good and useful applications available. I would fully recommend this phone to anyone who needs business phone.

  1. Full phone specifications

Posted in IT, applications, networks, voip | 1 Comment »

Hans Reiser case: overview

May 3rd, 2008 by admin

Hans Reiser, kreator popularnog datotečnog sistema ReiserFS/a osuđen je za prvostepeno ubistvo svoje supruge Nine Reiser i služit će 25 godina zatvorske kazne. Slučaj kao slučaj nebih komentarisao, mada okolnosti iz cijelog slučaja su zaista čudne, promjene izjava svjedoka, zatim, činjenica da tijelo nikada nije pronađeno, okolnosti oko Nininog bivšeg partnera koji je dokazani serijski ubojica i sl. Međutim, treba spomenuti da je i sam Hans Reiser sebi sam najviše odmogao. Svojim stavovima je doprinjeo da bude osuđen tako kako je osuđen. Međutim, sud je sud, presuda je tu i ne ostavlja previše prostora za neka polemisanja.

Pregled cijelog događaja: Wired.

Ono što je puno interesantnije za nas korisnike određenih projekata koji na bilo koji način ostanu bez zvojih project leader-a jeste to šta će biti sa tim projektom. Isto pitanje se postavilo odmah i za sam ReiserFS, i to odmah kada je Reiser bio osumječen, a potom i poslije presude. Prve reakcije koje su dolazile do krajnjih korisnika i nisu bile previše optimistične. Kada se tome doda činjenica da je usljed cijelog slučaja koji se vodio firma Nemesys koja je stojala iza projekta ostala u financijskim problemima, cijela stvar dobila je je još ozbiljniju notu.

Primjer: A ReiserFS without Hans Reiser.

Međutim, malo po malo počelo je dolaziti i do drugih reakcija i osvrta na cijelu ovu priču. Spominju se oni koji bi mogli cijeli projekt spasiti iz situacije u koju je upao. Spominju se velika imena IBM, Sun i ostali.
Oglasili su se i ReiserFS developeri, sa veoma optimističnim informacijama o budućnosti cijelog projekta, što je odlično.

Primjer: A ReiserFS without Hans Reiser, Continued.

Iskreno se nadam da će bolja vremena za ovaj odlični datotečni sistem uskoro doći. Projekat ima veliki potencijal, nadajmo se da će neka zvučna imena IT-a naći interes da taj potencijal iskoriste.

Posted in IT, linux | No Comments »

Izvještaj sa Cisco Expo 2008 konferencije

April 7th, 2008 by admin

U prisustvu preko tri stotine učesnika, od poslovnih i tehničkih menadžera vodećih kompanija u BiH, predstavnika stranih kompanija u BiH, javnih institucija, vodećih Cisco partnera, do brojnih predstavnika medija, otvorena je Cisco Expo 2008 Konferencija u Sarajevu

U dvodnevnom zaista zgusnutom programu nakon svečanog otvaranja g. Harisa Prnje, generalnog direktora Cisco za BiH, specijalni gost bio je g. Kan Terzloglu, predsjednik Cisca za Centralnu i Istočnu Evropu . U izložbenom prostoru predstavljan je program: Net riders-Ciscov program, a paralelno je išla i izložba svjetskih i bosanskohercegovačkih kompanija: Logo soft, BH telecom.Pandult, Lanaco, Verso, Sys Company, MiBo komunikacije i Ava com group.

U Sarajevu , u organizaciji Cisco BH o od 26 .do 27. .marta, u prostorijama hotela Radon Pleza odžana tradicionalna Konferencija. Naravno najzanimljiviji dio manifestacije bila su predavnja, razvrstsna u nekoliko kategorija od plenarnih, sponzorskih, poslovnih, pa preko predavanja operatera i provajdera do najzanimljivijih tehnoloških predavanja.

Od gostiju koji su držali predavnja izdvojio bih najzanimljivija i najposjećanija predavanja: Petera Gaspara koji je izneo najnovija rešanja za Mobilni WiMax, zatim Telefoniju za biznis korisnike, koju je saopštio Damir Šaranović. Veliku pažnju je privukla je i tema Iron Port: Proizvodi i tehnologije za zaštitu e-maila i Weba Hrvoja Dogan.

Vrlo zanimljivo bilo je i predavanje Gorana Peteha: Mreža koja se sama brani – novosti iz sigurnosnih rešanja , a novosti iz Objedinjenih komunikacija izneo je Aleksandar Vulović.

Kao i svake godine na kraju manifestacije dodijeljene su i nagrade srećnim dobitnicima, koji su bili posjetioci i učesnici ove zanimljive i značajne manifestacije. U dobroj organizaciji trebalo je u bogatom izboru tema odabrati one koje su najzanimljivije i najaktuelnije.

Ne stižem da napišem detaljni izvještaj sa konferencije, ali ovaj koji sam našao u potpunosti odgovara. Sve u svemu, dosta lijepo iskustvo, a čekam i neke slike koje imam namjeru da objavim ovdje.

1. Source
2. Oficijelna vijest o održavanju konferencije

Posted in IT, cisco, networks | No Comments »

Vujičić: Stanje u bh. industriji informatičkih i komunikacijskih tehnologija loše

February 28th, 2008 by admin

Iako industrija informatičkih i komunikacijskih tehnologija (IKT) u BiH posljednjih godina doživljava razvoj, stanje u toj oblasti gotovo pa je neuređeno, a prioritet je da se formira agencija za informaciono društvo i donese zakon o formiranju te agencije.

Ovo je istaknuo danas u Sarajevu predsjednik Udruženja za informatičke tehnologije BiH – BAIT Brano Vujičić na radionici upriličenoj za novinare pod nazivom “Razvoj informacionog društva u BiH – propuštene prilike”.”Nedostaje i adekvatna zakonska regulativa koja se tiče informaciono-komunikacijskih tehnologija, a već donesene zakone trebalo bi dosljednije primjenjivati, a neke i doraditi”, kazao je Vujičić.

On je istaknuo da bi država više trebala poraditi na promociji domaće IKT industrije, jer u toj industriji ima kompanija koje većinu svojih poslova već obavljaju u inozemstvu.

Ocijenio je vrlo lošom i saradnju domaće IKT industrije s akademskom zajednicom, istaknuvši da je ta saradnja nešto što je ključ uspjeha za IKT industriju.

Vujičić je naglasio da se iz izvještaja UNDP-a za 2003./2004. može vidjeti da je tada u BiH postojalo nešto više od 200 kompanija iz te oblasti, a da ih je u protekloj godini evidentirano oko 2.000, od kojih je najmanje 500 vrlo aktivno.

  1. BAIT
  2. Sarajevo-x

Posted in IT | No Comments »