Wednesday, February 12, 2014

Troubleshooting Voice Gateway incoming issue when using ISDN


If the incoming call is getting disconnected with the message "The call cannot be connected" then mostly it could be because of the IVR down issue.
To troubleshoot the same first enable the debug "debug isdn q931" on the voice gateway. See if you are seeing any cause for the call disconnection.


045951: Feb  4 02:38:28.074: ISDN Se0/0/0:23 Q931: SETUP pd = 8  callref = 0x1943
Bearer Capability i = 0x8090A2
Standard = CCITT
Transfer Capability = Speech 
Transfer Mode = Circuit
Transfer Rate = 64 kbit/s
Channel ID i = 0xA98381
Exclusive, Channel 1
Progress Ind i = 0x8283 - Origination address is non-ISDN 
Calling Party Number i = 0x1180, '919902384363'
Plan:ISDN, Type:International
Called Party Number i = 0xA1, '--------------'
Plan:ISDN, Type:National
045953: Feb  4 02:38:28.074: ISDN Se0/0/0:23 Q931: Received SETUP  callref = 0x9943 callID = 0x221B switch = primary-ni interface = User
045954: Feb  4 02:38:28.078: ISDN Se0/0/0:23 SERROR: process_pri_simple: NO name in GTD
 --More--         045955: Feb  4 02:38:28.082: ISDN Se0/0/0:23 Q921: User TX -> INFO sapi=0 tei=0, ns=29 nr=1
045956: Feb  4 02:38:28.082: ISDN Se0/0/0:23 Q931: CALL_PROC pd = 8  callref = 0x9943
Channel ID i = 0xA98381
Exclusive, Channel 1
045959: Feb  4 02:38:28.322: ISDN Se0/0/0:23 Q931: DISCONNECT pd = 8  callref = 0x9943
Cause i = 0x8081 - Unallocated/unassigned number


The above casue indicates that there is some issue with called party number.

Check where the incoing call lands:

Check the incoming calls translations configuration on done properly or not.
The easiest way to do this is enable "debug dialpeer" on the vgw and see if it through any errors.
or check the voice-port configuration for incoming call translation rule name using the "show run | sec voice-port <port number>"

voice-port 0/0/0:23
 translation-profile incoming pstn-in
 timeouts call-disconnect 5


Then check the translation-profile and respective translation rule for the pstn-in.
This will show you the extension number where the call lands after the translation. This may be your IVR system extension number.
check the status of your IVR system.


P.S: Use http://ipsubnetcalculator.net/  for calculating IP subnet mask Online


Tuesday, February 11, 2014

How to find the pixel points of an image

This is simple one but most of us will be searching for it all the time.
Finding the pixel point will be useful when you want to point some specific place in the image. This will be usefull in some apps like Cacti weathermap, or nagviz.
when you code the config for those app you can just mention the pixel values to create a point on the image.

To find the pixel of a image just open the image on ms paint (windows inbuilt app) and look at the status bar at last you will find the pixel of the particular point where your mouse exists.



Tuesday, February 4, 2014

Link Load Balancing using MPLS TE

Why MPLS TE?

There are multiple IGP  protocols which can do load sharing, but the condition is that both the links has to be connected on a single router. Even if we use  OSPF & ISIS, they can only do equal cost load balancing.
Eigrp can do unequal cost load balancing but practically it is not preferred to use in network because of its proprietary feature.

But  MPLS-TE can do unequal cost load balancing and also it can do load balancing with two links which are not connected on a single router. This protocol  was mainly designed for the purpose of load balancing.

MPLS - TE is supported by both the IGP (OSPF and ISIS). Hence you will need to have the IGP running in the network.

Configuring MPLS TE:

Consider the below topology  and assume that we are running  ISIS as routing protocol between the routers.
In ISIS protocol lower the metric is preferred. Hence the normal ISIS path is mentioned in blue line below.

We can use MPLS - TE tunnels from R1 to R3 to do the load balancing on both the links.
The Traffic Engineering tunnel T0 has to be configured with dynamic path and the Traffic Engineering  tunnel T1 has to be configured with explicit path mentioning the explicit path to go via R1-> R2->R4->R3.
Once the te tunnels are created and up the Traffic Engineering tunnels will take the IGP metric and will get added in the routing table. Say if the IGP between R1 and R3 has a metric of 100 the tunnels between R1 and R3 will use the same metric(We also can change this by using "tunnel mpls traffic-eng path-selection metric te" inside tunnel config). so now for POP-A to reach POP-B it has two routes one through Te0 and Te1.
When you have the Te tunnels up the physical path will not be shown in the routing table.
if Airtel link goes down the Te0 tunnel will go down and the traffic will go via T1 tunnel.



What happens when you have another POPs connects to POP-B.
For POP-A To reach POP-C or POP-D we might have already learned a route on R1 saying go via R3(learned via IGP), once the Te tunnels are up for those subnets also the traffic will flow through the Te tunnels.


Configuration of R1.

mpls traffic-eng tunnels
router isis core
   net 49.0000.0004.0000.0251.00
   metric-style wide
   fast-flood 10
   mpls traffic-eng router-id Loopback162
   mpls traffic-eng level-2

interface GigabitEthernet0/2/4
   description LINK_TO_R3_AIRTEL
   ip address 10.128.1.1 255.255.255.252
   ip router isis core
   mpls traffic-eng tunnels
   isis circuit-type level-2-only
   isis metric 100
   ip rsvp bandwidth

interface Tunnel0
  description TUNEL_TO_R3_VIA_AIRTEL
  ip unnumbered Loopback162
  tunnel mode mpls traffic-eng
  tunnel destination 10.1.1.3
  tunnel mpls traffic-eng autoroute announce
  tunnel mpls traffic-eng priority 1 1
  tunnel mpls traffic-eng bandwidth 100
  tunnel mpls traffic-eng path-option 1 dynamic


interface Tunnel1
  description TUNEL_TO_R3_VIA_TATA
  ip unnumbered Loopback162
  tunnel mode mpls traffic-eng
  tunnel destination 10.1.1.3
  tunnel mpls traffic-eng autoroute announce
  tunnel mpls traffic-eng priority 1 1
  tunnel mpls traffic-eng bandwidth 100
  tunnel mpls traffic-eng path-option 1 explicit name R2-R4-R3

ip explicit-path name R2-R4-R3 enable
 next-address  <R2 Ip address)
 next-address  <R4 IP address)
 next-address  <R3 IP address)

Please note MPLS TE tunnels are one way traffic , we have to configure the R3 also with the Tunnel configurations to get the reverse path also to do load balancing.


Advantages of using MPLS TE
  • More Control on traffic
  • Utilizing all the links in the network.
  • You can have part of your network running MPLS te and other network 
Disadvantage of using MPLS TE
  • It is not supported on Port channel interface.
  • VRF interfaces are not supported.
  • Cisco lower end routers and ISR's are not supported with this features





Monday, September 2, 2013

VPN Authentication Failed error Cisco VPN phone

Cisco VPN phones stops communicating to ASA after confguring the ASA in Acitive/Stndby Failover mode.
Cisco VPN phones started throughing the error saying "VPN Authentication Failed" error.

We troubleshoted this and found the stanby ASA disnt had the "anyconnect-win-3.1.00495-k9.pkg" on the falsh, due to that the "svc image disk0:/anyconnect-win-3.1.00495-k9.pkg " was automatically got removed from both the firewalls.

Solution:

Upload the anyconnect-win-3.1.00495-k9.pkg on the standby firewall also and added the  svc image disk0:/anyconnect-win-3.1.00495-k9.pkg command on the firewall.

Wednesday, August 28, 2013

groupadd error while installing quagga on Centos 5.4


While installing the quagga rpm on centos5.4 we got the below error.

[::root@test /var/tmp]# rpm -ivh quagga-0.98.6-11.el5.x86_64.rpm
Preparing...                ########################################### [100%]
error: %pre(quagga-0.98.6-11.el5.x86_64) scriptlet failed, signal 2
error:   install: %pre scriptlet failed (2), skipping quagga-0.98.6-11.el5
[::root@test /var/tmp]#

debug for the same is mentioned below.

[::root@test /var/tmp]# rpm -ivvh quagga-0.98.6-11.el5.x86_64.rpm
D: ============== quagga-0.98.6-11.el5.x86_64.rpm
D: Expected size:      1181289 = lead(96)+sigs(344)+pad(0)+data(1180849)
D:   Actual size:      1181289
D: opening  db environment /var/lib/rpm/Packages joinenv
D: opening  db index       /var/lib/rpm/Packages rdonly mode=0x0
D: locked   db index       /var/lib/rpm/Packages
D: opening  db index       /var/lib/rpm/Pubkeys rdonly mode=0x0
D:  read h#     570 Header sanity check: OK
D: ========== DSA pubkey id a8a447dc e8562897 (h#570)
D: quagga-0.98.6-11.el5.x86_64.rpm: Header V3 DSA signature: OK, key ID e8562897
D:     added binary package [0]
D: found 0 source and 1 binary packages
D: ========== +++ quagga-0.98.6-11.el5 x86_64/linux 0x2
D: opening  db index       /var/lib/rpm/Depends create mode=0x0
D: opening  db index       /var/lib/rpm/Basenames rdonly mode=0x0
D:  read h#      37 Header V3 DSA signature: OK, key ID e8562897
D:  Requires: /bin/bash                                     YES (db files)
D:  Requires: /bin/sh                                       YES (db files)
D:  Requires: /bin/sh                                       YES (cached)
D:  Requires: /bin/sh                                       YES (cached)
D:  Requires: /bin/sh                                       YES (cached)
D:  Requires: config(quagga) = 0:0.98.6-11.el5              YES (added provide)
D: opening  db index       /var/lib/rpm/Providename rdonly mode=0x0
D:  read h#      23 Header V3 DSA signature: OK, key ID e8562897
D:  Requires: libc.so.6()(64bit)                            YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.2.5)(64bit)                 YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.3)(64bit)                   YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.3.4)(64bit)                 YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.4)(64bit)                   YES (db provides)
D:  read h#      48 Header V3 DSA signature: OK, key ID e8562897
D:  Requires: libcap.so.1()(64bit)                          YES (db provides)
D:  Requires: libcrypt.so.1()(64bit)                        YES (db provides)
D:  Requires: libcrypt.so.1(GLIBC_2.2.5)(64bit)             YES (db provides)
D:  Requires: libm.so.6()(64bit)                            YES (db provides)
D:  Requires: libm.so.6(GLIBC_2.2.5)(64bit)                 YES (db provides)
D:  Requires: libospf.so.0()(64bit)                         YES (added provide)
D:  Requires: libospfapiclient.so.0()(64bit)                YES (added provide)
D:  read h#     368 Header V3 DSA signature: OK, key ID e8562897
D:  Requires: libpam.so.0()(64bit)                          YES (db provides)
D:  Requires: libpam.so.0(LIBPAM_1.0)(64bit)                YES (db provides)
D:  Requires: libpam_misc.so.0()(64bit)                     YES (db provides)
D:  Requires: libpam_misc.so.0(LIBPAM_MISC_1.0)(64bit)      YES (db provides)
D:  read h#      45 Header V3 DSA signature: OK, key ID e8562897
D:  Requires: libreadline.so.5()(64bit)                     YES (db provides)
D:  read h#      36 Header V3 DSA signature: OK, key ID e8562897
D:  Requires: libtermcap.so.2()(64bit)                      YES (db provides)
D:  Requires: libzebra.so.0()(64bit)                        YES (added provide)
D:  Requires: rpmlib(CompressedFileNames) <= 3.0.4-1        YES (rpmlib provides)
D:  Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1       YES (rpmlib provides)
D:  Requires: rtld(GNU_HASH)                                YES (db provides)
D: Conflicts: bird                                          NO 
D: Conflicts: gated                                         NO 
D: Conflicts: mrt                                           NO 
D: Conflicts: zebra                                         NO 
D: opening  db index       /var/lib/rpm/Conflictname rdonly mode=0x0
D: closed   db index       /var/lib/rpm/Depends
D: ========== recording tsort relations
D:  Requires: libospf.so.0()(64bit)                         YES (added provide)
D:  Requires: libospfapiclient.so.0()(64bit)                YES (added provide)
D:  Requires: libzebra.so.0()(64bit)                        YES (added provide)
D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth, breadth)
D:     0    0    0    0    1    0   +quagga-0.98.6-11.el5.x86_64
D: installing binary packages
D: closed   db index       /var/lib/rpm/Pubkeys
D: closed   db index       /var/lib/rpm/Conflictname
D: closed   db index       /var/lib/rpm/Providename
D: closed   db index       /var/lib/rpm/Basenames
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: opening  db environment /var/lib/rpm/Packages joinenv
D: opening  db index       /var/lib/rpm/Packages create mode=0x42
D: mounted filesystems:
D:     i        dev    bsize       bavail       iavail mount point
D:     0 0x00000802     4096     53388830     60616626 /
D:     1 0x00000003     4096            0           -1 /proc
D:     2 0x00000000     4096            0           -1 /sys
D:     3 0x0000000c     4096            0           -1 /dev/pts
D:     4 0x00000801     1024       455275       128484 /boot
D:     5 0x00000013     4096       496282       496281 /dev/shm
D:     6 0x00000014     4096            0           -1 /proc/sys/fs/binfmt_misc
D:     7 0x00000015     4096            0           -1 /var/lib/nfs/rpc_pipefs
D: sanity checking 1 elements
D: opening  db index       /var/lib/rpm/Name create mode=0x42
D: running pre-transaction scripts
D: computing 73 file fingerprints
Preparing...                D: computing file dispositions
D: opening  db index       /var/lib/rpm/Basenames create mode=0x42
########################################### [100%]
D: ========== +++ quagga-0.98.6-11.el5 x86_64-linux 0x2
D: Expected size:      1181289 = lead(96)+sigs(344)+pad(0)+data(1180849)
D:   Actual size:      1181289
D: quagga-0.98.6-11.el5: Header V3 DSA signature: OK, key ID e8562897
D:   install: quagga-0.98.6-11.el5 has 73 files, test = 0
D: opening  db index       /var/lib/rpm/Triggername create mode=0x42
D:   install: %pre(quagga-0.98.6-11.el5.x86_64) asynchronous scriptlet start
D:   install: %pre(quagga-0.98.6-11.el5.x86_64)    execv(/bin/sh) pid 4199
+ groupadd -g 85 -r quaggavt
D:   install: waitpid(4199) rc 4199 status 2 secs 11.664
error: %pre(quagga-0.98.6-11.el5.x86_64) scriptlet failed, signal 2
error:   install: %pre scriptlet failed (2), skipping quagga-0.98.6-11.el5
D: running post-transaction scripts
D: closed   db index       /var/lib/rpm/Triggername
D: closed   db index       /var/lib/rpm/Basenames
D: closed   db index       /var/lib/rpm/Name
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: May free Score board((nil))
[::root@apan1.pop4 /var/tmp]# rpm -ivvvh quagga-0.98.6-11.el5.x86_64.rpm
D: ============== quagga-0.98.6-11.el5.x86_64.rpm
D: Expected size:      1181289 = lead(96)+sigs(344)+pad(0)+data(1180849)
D:   Actual size:      1181289
D: opening  db environment /var/lib/rpm/Packages joinenv
D: opening  db index       /var/lib/rpm/Packages rdonly mode=0x0
D: locked   db index       /var/lib/rpm/Packages
D: opening  db index       /var/lib/rpm/Pubkeys rdonly mode=0x0
D:  read h#     570 Header sanity check: OK
D: ========== DSA pubkey id a8a447dc e8562897 (h#570)
D: quagga-0.98.6-11.el5.x86_64.rpm: Header V3 DSA signature: OK, key ID e8562897
D:     added binary package [0]
D: found 0 source and 1 binary packages
D: ========== +++ quagga-0.98.6-11.el5 x86_64/linux 0x2
D: opening  db index       /var/lib/rpm/Depends create mode=0x0
D: opening  db index       /var/lib/rpm/Basenames rdonly mode=0x0
D:  read h#      37 Header V3 DSA signature: OK, key ID e8562897
D:  Requires: /bin/bash                                     YES (db files)
D:  Requires: /bin/sh                                       YES (db files)
D:  Requires: /bin/sh                                       YES (cached)
D:  Requires: /bin/sh                                       YES (cached)
D:  Requires: /bin/sh                                       YES (cached)
D:  Requires: config(quagga) = 0:0.98.6-11.el5              YES (added provide)
D: opening  db index       /var/lib/rpm/Providename rdonly mode=0x0
D:  read h#      23 Header V3 DSA signature: OK, key ID e8562897
D:  Requires: libc.so.6()(64bit)                            YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.2.5)(64bit)                 YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.3)(64bit)                   YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.3.4)(64bit)                 YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.4)(64bit)                   YES (db provides)
D:  read h#      48 Header V3 DSA signature: OK, key ID e8562897
D:  Requires: libcap.so.1()(64bit)                          YES (db provides)
D:  Requires: libcrypt.so.1()(64bit)                        YES (db provides)
D:  Requires: libcrypt.so.1(GLIBC_2.2.5)(64bit)             YES (db provides)
D:  Requires: libm.so.6()(64bit)                            YES (db provides)
D:  Requires: libm.so.6(GLIBC_2.2.5)(64bit)                 YES (db provides)
D:  Requires: libospf.so.0()(64bit)                         YES (added provide)
D:  Requires: libospfapiclient.so.0()(64bit)                YES (added provide)
D:  read h#     368 Header V3 DSA signature: OK, key ID e8562897
D:  Requires: libpam.so.0()(64bit)                          YES (db provides)
D:  Requires: libpam.so.0(LIBPAM_1.0)(64bit)                YES (db provides)
D:  Requires: libpam_misc.so.0()(64bit)                     YES (db provides)
D:  Requires: libpam_misc.so.0(LIBPAM_MISC_1.0)(64bit)      YES (db provides)
D:  read h#      45 Header V3 DSA signature: OK, key ID e8562897
D:  Requires: libreadline.so.5()(64bit)                     YES (db provides)
D:  read h#      36 Header V3 DSA signature: OK, key ID e8562897
D:  Requires: libtermcap.so.2()(64bit)                      YES (db provides)
D:  Requires: libzebra.so.0()(64bit)                        YES (added provide)
D:  Requires: rpmlib(CompressedFileNames) <= 3.0.4-1        YES (rpmlib provides)
D:  Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1       YES (rpmlib provides)
D:  Requires: rtld(GNU_HASH)                                YES (db provides)
D: Conflicts: bird                                          NO 
D: Conflicts: gated                                         NO 
D: Conflicts: mrt                                           NO 
D: Conflicts: zebra                                         NO 
D: opening  db index       /var/lib/rpm/Conflictname rdonly mode=0x0
D: closed   db index       /var/lib/rpm/Depends
D: ========== recording tsort relations
D:  Requires: libospf.so.0()(64bit)                         YES (added provide)
D:  Requires: libospfapiclient.so.0()(64bit)                YES (added provide)
D:  Requires: libzebra.so.0()(64bit)                        YES (added provide)
D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth, breadth)
D:     0    0    0    0    1    0   +quagga-0.98.6-11.el5.x86_64
D: installing binary packages
D: closed   db index       /var/lib/rpm/Pubkeys
D: closed   db index       /var/lib/rpm/Conflictname
D: closed   db index       /var/lib/rpm/Providename
D: closed   db index       /var/lib/rpm/Basenames
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: opening  db environment /var/lib/rpm/Packages joinenv
D: opening  db index       /var/lib/rpm/Packages create mode=0x42
D: mounted filesystems:
D:     i        dev    bsize       bavail       iavail mount point
D:     0 0x00000802     4096     53388827     60616625 /
D:     1 0x00000003     4096            0           -1 /proc
D:     2 0x00000000     4096            0           -1 /sys
D:     3 0x0000000c     4096            0           -1 /dev/pts
D:     4 0x00000801     1024       455275       128484 /boot
D:     5 0x00000013     4096       496282       496281 /dev/shm
D:     6 0x00000014     4096            0           -1 /proc/sys/fs/binfmt_misc
D:     7 0x00000015     4096            0           -1 /var/lib/nfs/rpc_pipefs
D: sanity checking 1 elements
D: opening  db index       /var/lib/rpm/Name create mode=0x42
D: running pre-transaction scripts
D: computing 73 file fingerprints
Preparing...                D: computing file dispositions
D: opening  db index       /var/lib/rpm/Basenames create mode=0x42
########################################### [100%]
D: ========== +++ quagga-0.98.6-11.el5 x86_64-linux 0x2
D: Expected size:      1181289 = lead(96)+sigs(344)+pad(0)+data(1180849)
D:   Actual size:      1181289
D: quagga-0.98.6-11.el5: Header V3 DSA signature: OK, key ID e8562897
D:   install: quagga-0.98.6-11.el5 has 73 files, test = 0
D: opening  db index       /var/lib/rpm/Triggername create mode=0x42
D:   install: %pre(quagga-0.98.6-11.el5.x86_64) asynchronous scriptlet start
D:   install: %pre(quagga-0.98.6-11.el5.x86_64)    execv(/bin/sh) pid 4202
+ groupadd -g 85 -r quaggavt
D:   install: waitpid(4202) rc 4202 status 2 secs 44.222
error: %pre(quagga-0.98.6-11.el5.x86_64) scriptlet failed, signal 2
error:   install: %pre scriptlet failed (2), skipping quagga-0.98.6-11.el5
D: running post-transaction scripts
D: closed   db index       /var/lib/rpm/Triggername
D: closed   db index       /var/lib/rpm/Basenames
D: closed   db index       /var/lib/rpm/Name
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: May free Score board((nil))
[::root@test /var/tmp]#











If you look at the above logs the rpm was stuck while doing the + groupadd -g 85 -r quaggavt command
When i try running the command separetly it was stuck in the same position.
hence i checked the /etc/nsswitch.conf file for any authentication issue.
and then i found that the /etc/nsswitch.conf has a ldap configuration and the ldap server was not reachable due to that the groupadd command was not working.
Removed the ldap configuration form the /etc/nsswitch.conf and i was able to install the quagga rpm successfully.

Thursday, February 14, 2013

Steps to increase the Virtual box, VDI file size in Linux

To increase the VDI file size in Linux

1) click on Settings--> Storage and click on add harddisk

add a new harddisk with the required size (choose dynamic expanding storage)

2) Create the clone:
Go to the terminal and run the below command with original HDD and newly added HDD path.

sudo VBoxManage clonehd old.vdi new-clone.vdi --existing

3) This will take few minutes depends on your old HDD size.
Once done go to tVirtual Box Settings--> Storage and remove the old.vdi and new.vdi both and only add new.vdi back again.

4) once done login to the server using the new cloned server and go to disk management and click extend volume to extend it.
It will increase the space.
Thanks