Search This Blog

Friday, February 27, 2015

AW CIPT!! I mean shit...

I have been working in the voice realm of Cisco for ten years as of this year.  I have had heavy knee deep hands-on knowledge of VoIP technologies over that time span and consider myself competent to say the least when it comes to VoIP troubleshooting, maintenance, design, etc.  Up until lately I never bothered with CCNP Voice because I had the experience to back up my resume claims.  Additionally, I have a degree and CCNA Voice.

 I felt compelled as of last year to obtain my NP Voice.  Having already passed CVOICE and CAPPS I have three left to go.  I took CIPT1 today, to me, after the books and study material I got from a training partner I thought I would have been good to go.  Turns out I am either completely stupid and don't understand voice or the test just beat me down.  I want to think it is the latter, otherwise I would have a load of customers upset at me over the years.

I took the exam today at 10:00am, having passed CAPPS extremely well I felt confident I could do the rest of the exams.  I studied the topics I didn't know as well as I should since the exam tests you on things you probably will either never use or forget within weeks of passing the exam.  Half way in I knew I was in trouble.  Some of the questions were absurd or worded in a way that kind of pushed you to fail unless you 100% memorized that CIPT1 Cisco book from page 1 to the end. 

I'm not trying to create excuses here of why I failed but I want to emphasize that this exam should be one of the easier ones for us CUCM guys but it isn't.  I've installed about 30 CUCMs, setup from scratch as well as cleaned up about another 30 in my time.  I troubleshoot CSS's and route patterns all the time but still somehow managed to fail this test with a 706 when I needed a 780 to pass.  Assuming that all questions on the test are between 10-15 points, that would mean I answered 4-7 of them incorrectly and failed.  I know some of them I legitimately didn't know, like remembering the e1 config for mgcp.

Bottom line is, if you think you are good and want a reality check, take CIPT1 or 2.  Failing this Cisco exam today was the second exam I have ever failed, the first was CCNA oh so long ago.  Really kind of makes you feel worthless but at the same time, at least you now know what you need to work on right?  I will be taking this exam again next week, and I will pass it one way or another.

Tuesday, February 17, 2015

RegEx, oh RegEx.....

So today I decided that after I was done writing some curriculum that I was going to solve this bloody telepresence MCU issue that was not letting CUCM calls get pushed to the Codian MCU.  If that last sentence just got you lost in the sauce let me explain a bit since the entire Voice realm is more than just voice over IP.

To start off, CCIE Collaboration is the new CCIE Voice.  You essentially need to be able to understand, design, implement, and install an entire UC infrastructure to include video endpoints and WebEx technologies.  the Codian MCU is part of that collaboration "stuff".  In it's basic form it is a hardware conferencing unit that can host numbers that you dial into for both audio, video, and content sharing.

The MCU at work is an old 4505 Codian that isn't quite EOL yet, in fact they still sell 4500 series MCUs based on the Cisco website.  I took a look today and was surprised to still see updates.  Anyways, on with the actual problem and how it could help you in the event you also have to deal with interoperability.

Basically, from CUCM to the MCU is a path that is well defined and must be properly setup.  A VCS is involved, and in this case it is a VCS-C since it is internal to the network and telepresence endpoints, jabber, and MCU meetings are all registered to this VCS.  It is essentially a variant of CUCM in that things can register to it only as SIP or H.323.  I won't get deep into VCS technology since there is much more to it than what I am explaining here.

The VCS-C is the control for anything not directly registered to the CUCM.  In my case, telepresence devices like C40s, EX90s, etc.  The CUCM has a SIP trunk to the VCS-C and a route pattern that is using that SIP trunk.  Don't get lost yet!  So from here, that SIP trunk dumps out at the VCS-C right?  Well, now the VCS will do some pre-search transforms which basically are translation patterns for a VCS.  They are applied first before any search rules are done.  I hope I still haven't lost you!

Search rules are essentially patterns that are matched and then modified if needed before being sent out again, in my case, the Codian 4505 MCU.  The problem that I spent most of the day on is why the call was failing.  CUCM was routing the call but the VCS would poop everywhere.  A endpoint directly registered to the VCS had no issues but then again, the search rules didn't need to apply since it knows what is locally registered much in the same way you don't need route patterns for local directory numbers on a CUCM.

I ended up just comparing the two calls, one that passed and one that failed.  I could see the different immediately, the RegEx wasn't happening and it was leaving an IP address on the SIP URI.  This would be ok if the MCU and VCS were talking like that but they aren't and reconfiguring everything is a big pain in the butt.  Ultimately, the problem was that it wasn't matching the incoming string to the VCS because I was missing a 5.  The 5 was supposed to be in the inside and not the outside of set 1.  So I probably lost you with that last statement....

When I say Set 1 I mean (....), or the first set of parenthesis.  If you passed CVOICE you should know what RegEx is as you had to do translation rules in the voice gateway.  In it's basic form it essentially matches and replaces.  Let me put a few examples.

Example 1:

/1234/ /5678/

In the above example I am matching anything with 1234 and replacing it with 5678.  This is something you normally wouldn't do but in it's basic form it is easy to understand.  Let me throw a monkey wrench in things.

/^1234$/ /5678/

So what the heck did I just do?  In RegEx a ^ means that it must START with a 1 and the $ sign means that it must END with a 4.  So, I am saying a pattern of 1234 will be replaced with 5678.  It has to start with 1 and also include 2, 3, and 4 at the end with nothing extra.  If its 13234 it won't work.  I am defining 4 numbers to be replaced with 4 numbers, simple as that.  Don't think into it to hard, it's only going to make the rest of this a pain in the ass.  Think of it as a literal string.

Example 2:

/1\(....)/   /944\1/

So what is going on here you might ask?  Well something that you need to understand about RegEx is that the / and \ are completely different.  The \ means that the next character to follow does not have any special meaning.  In this case the 1 at the very end is not a 1 but is referring to "set 1".  So what is set 1?  That is easy, the first set is the (....).  That is what we call a set, and we can have as many as we need in RegEx but it can get complicated as all heck.  So what is this pattern doing?  Look below.

Original number: 12345    Replaced number: 9442345

What I did here was take the first string, rip off the 1 and save the last 4 digits to "set 1".  The replace string prefixes on a 944 and uses set 1 to suffix the rest (2345), oh look I made a set without even trying.

To make a long story short, this kind of thing was hosed up in the VCS and a 5 was where the 1 is.  Granted my RegEx was much longer and more complicated as I was using %ip% and so on but the point is, one little screwup with RegEx can throw everything out of alignment.  I put the 5 inside the set and it got preserved thus keeping a 5 digit pattern for me and everything flowed well.  I plan on doing an entire RegEx blog post sometime either this week or next week.  I have been working 11-12 hour days and am extremely tired so I have been neglecting my blog a bit and I must apologize.  If you want to learn more on translation rules and RegEx go here:

http://www.cisco.com/c/en/us/support/docs/voice/call-routing-dial-plans/61083-voice-transla-rules.html

That explains it pretty well but I sometimes find that breaking it down can help quite the bit too.



















Tuesday, February 10, 2015

The voice gateway analog design

Today I had to install the awaited voice gateway and switches for a customer.  I had planned on the design and deployment for a few weeks because it wasn't a huge project.  New building, moving from one location to another.

Originally, their 911 gateway / FXO Pots inbound line was going to be moved once they had made the final switch but they wanted to install a temporary or maybe permanent voice gateway to cover the building now instead of later.  For those of you new to the voice realm, this is one of the basic things you need to know how to handle.  DSPs, FXS configuration and FXO configuration.

There isn't much to the process, as setting up the voice gateway for analog dialing in and outbound is easy.  In this environment we are using MGCP as the protocol that lets the CUCM do all the heavy lifting.  However, you need to be able to configure the voice gateway in sudo H.323 mode in the event the WAN fails and MGCP dumps (SRST Mode).

SRST is basically a survival mode the router/gateway goes into until the WAN is back up.  It can perform basic call routing via dial-peers, even SRSV for voice mail if you have the CUE module installed.  In addition, ephones will automatically populate assuming your configuration is correct.  Of course, you could also use SIP SRST, which in my opinion, is better but that is just personal preference.

Anyways, DSP resources, what are they?  Every voice gateway has something (or should have something) called a PVDM-2(or 3) chip installed.  They look like RAM but perform a totally different function.  DSPs are in charge of transcoding voice, media termination for on hold, etc., as well as letting your analog lines work and convert them from analog to digital and then back.  With this being said, you need to ensure that you have your voice card setup for DSP resources so it can function properly.  It is also worth noting that without DSPs, you can't even set a T1/E1 up on a router should you want a voice PRI.

I guess I need to provide a short config to clear things up a little...  Keep in mind that this is purely a lab configuration and serves the needs of what I try to test and do on a daily basis here at home.  I will try to outline a few key areas that you need to understand with analog telephony, please see the areas highlighted in red!

version 15.1
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname AUSTIN-HQ-CUBE
!
boot-start-marker
boot-end-marker
!
!
enable password **************************
!
no aaa new-model
!
clock timezone Central -6 0
network-clock-participate wic 0
network-clock-select 1 T1 0/0/0
!
dot11 syslog
ip source-route
!
!
ip cef
!
ip dhcp excluded-address 1.0.0.1 1.0.0.5
ip dhcp excluded-address 2.0.0.1 2.0.0.5
ip dhcp excluded-address 192.168.1.0 192.168.1.105
!
ip dhcp pool DATA
 network 1.0.0.0 255.255.255.0
 default-router 1.0.0.1
!
ip dhcp pool VOICE
 network 192.168.1.0 255.255.255.0
 option 150 ip 192.168.1.102
 option 66 ip 192.168.1.102
 default-router 192.168.1.100
!
!
no ipv6 cef
!
multilink bundle-name authenticated
!
!
!
!
isdn switch-type primary-qsig
!
!
!
voice service voip
 no ip address trusted authenticate
 allow-connections h323 to h323
 allow-connections h323 to sip
 allow-connections sip to h323
 allow-connections sip to sip
 sip
  early-offer forced
!
voice class codec 1
 codec preference 1 g711ulaw
 codec preference 2 g729br8
!
!
!
!
voice translation-rule 1
 rule 1 /^512200\(2...$\)/ /\1/
!
!
voice translation-profile 10TO4DIGITIN
 translate called 1
!
!
voice-card 0
 dsp services dspfarm   <---- This essentially allows your voice card to use dsp services
!
crypto pki token default removal timeout 0
!
!
!
!
license udi pid CISCO2811 sn FTX1217A3TM
!
redundancy
!
!
controller T1 0/0/0
 pri-group timeslots 1-3,24
 description T1 LINK TO DALLAS CUBE  <--- Here, without PVDM modules, we couldn't even accomplish setting up any timeslots since DSPs are required to even get this far!
!
!
class-map match-all DATA
 match protocol http
class-map match-all VOICE
 description MATCH EF VOICE
 match protocol rtp
 match  dscp ef
!
!
policy-map DATAPM
 class DATA
  bandwidth percent 20
  shape peak 512000
  police cir 512000
   conform-action transmit
   violate-action drop
policy-map VOICEPM
 class VOICE
  priority percent 30
!
!
!
!
!
!
!
!
!
interface FastEthernet0/0
 ip address 172.168.1.1 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet0/1
 no ip address
 duplex auto
 speed auto
!
interface FastEthernet0/1.100
 description DATA VLAN FORAUSTIN HQ CUBE NET
 encapsulation dot1Q 100
 ip address 1.0.0.1 255.255.255.0
!
interface FastEthernet0/1.192
 description VOICE VLAN
 encapsulation dot1Q 192
 ip address 192.168.1.100 255.255.255.0
!
interface Serial0/0/0:23
 ip address 172.16.0.1 255.255.255.252
 encapsulation hdlc
 isdn switch-type primary-qsig
 isdn timer T310 120000
 isdn protocol-emulate network
 isdn incoming-voice voice
 no cdp enable
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
ip route 0.0.0.0 0.0.0.0 192.168.1.1
!
!
!
!
!
!
!
control-plane
!
!
voice-port 0/0/0:23
!
voice-port 0/1/0
!
voice-port 0/1/1
!
voice-port 0/1/2
!
voice-port 0/1/3  <- FXS setup, station-id is just a number to call this FXS on, it's optional!
 description TEST FXS PORT NOT FOR PRIMARY LAB!
 station-id number 5122002999
 caller-id enable
!
voice-port 0/2/0
!
voice-port 0/2/1
!
!
!
mgcp profile default
!
sccp local FastEthernet0/1.192 <-- this entire section registers to CUCM so it can use DSPs
sccp ccm 192.168.1.102 identifier 1 priority 1 version 7.0
sccp
!
sccp ccm group 1
 description CONFERNENCE DSP PROFILE ASSOCIATION
 associate ccm 1 priority 1
 associate profile 1 register CONFERENCE
 associate profile 2 register XCODER
!
dspfarm profile 2 transcode
 description TRANSCODING DSP FARM
 codec g729abr8
 codec g729ar8
 codec g711alaw
 codec g711ulaw
 codec g722-64
 maximum sessions 4
 associate application SCCP
!
dspfarm profile 1 conference
 description CONFERENCE DSP FARM
 codec g729br8
 codec g729r8
 codec g729abr8
 codec g729ar8
 codec g711alaw
 codec g711ulaw
 maximum sessions 2
 associate application SCCP
!
dial-peer voice 3000 voip
 destination-pattern 214300...
 session protocol sipv2
 session target ipv4:172.168.1.2
 voice-class codec 1
!
dial-peer voice 1 voip
 translation-profile incoming 10TO4DIGITIN
 session protocol sipv2
 incoming called-number .T
 voice-class codec 1
!
dial-peer voice 2 voip
 destination-pattern 2...
 session protocol sipv2
 session target ipv4:192.168.1.102
 voice-class codec 1
!
!
gateway
 timer receive-rtp 600
!
!
!
gatekeeper
 shutdown
!
!
!
line con 0
 exec-timeout 0 0
 logging synchronous
line aux 0
line vty 0 4
 exec-timeout 0 0
 password mushroom15
 logging synchronous
 login
 transport input telnet ssh
 transport output telnet ssh
!
scheduler allocate 20000 1000
ntp master 4
end





Now the one thing missing here is a pots dial-peer.  Normally, if you had an an analog port either FXS/FXO you would set them up so they could receive and send calls depending on the port type and requirements.  In this case, all I wanted was to be able to make test calls out an FXS port to make sure I didn't hose it all up :).  

As far as the SCCP and transcoding / conference configuration goes, that is an entirely different conversation for another blog.  I promise to get to it sometime soon.  I haven't posted this week at all due to work becoming more and more busy.  It's funding season for schools and that means projects for me.  As always, I type this on the fly and make very few revisions.  If I mislead you or typed in error please let me know!  

Thursday, February 5, 2015

Rabid VoIP dogs

Well after yesterdays fiasco of getting the CUCM files to FTP into the OS side of the house, I started fresh again today.  I used that Damn Small Linux (further known as DSL from here on out), and setup a VM on the same ESXi host.  It only needs about 128 MB of RAM but since I was going to be shoving almost a gig worth of data into an FTP directory I bumped the RAM up to 4 GB just to be safe.  UCS C220s have a crap ton of RAM anyways.

I proceeded to push the file and everything worked great.  The original firmware / device pack files don't work on CUCM 9.1.1 for some reason.  I ended up having to get the 9.1.1 21060 device pack and install it on CUCM.  This isn't scheduled until tomorrow but at least I got the file where it needs to be, the most I have to do is push it to CUCM and let her rip while I go drink a beer at the house.

This brings me back on to yesterdays topic of how important it can be to have a small stripped down OS of some sort to get things done locally on the ESXi host.  Sometimes it isn't viable to travel all the way to a site just to spend 20 minutes pushing a file.  I would almost say it should be best practice to have a separate VM dedicated to this.  I'm not sure if there are any Windows OSs out there that are under about 500 MBs that aren't archaic but it would be nice.  Those hacked versions of XP and 7 don't count as they aren't open source and that could get into legal issues for a company using them.

So far, DSL is the best OS I have found.  A windows server could easily just do the same thing but when you work for a company that does projects and doesn't maintain an entire infrastructure it can be hard to convince a customer to give you access to their servers when all they want is a voice upgrade or install.  For those in my position, what I am proposing should work extremely well.

Wednesday, February 4, 2015

That time when you just want something to work...

Today was a normal day for the most part minus my frustration for more than half of the day.  I was doing my usual thing and loaded up a BAT file to push to CUCM 9.1 and had a few errors on the job scheduler.  Rather than delete what was put in and what didn't quite make it I hand jammed about 4 phones in, wasn't a big deal anyways.  My third BAT push for some 8831 conference phones failed miserably in addition to a 7965 + 7916 side car entry.

It turns out that CUCM 9.1 was a bit to early in release for 8831s and 7916s.  I ended up getting the .COP file for both which is basically just a device pack with the firmware.  I fired up my FreeFTPd eagerly ready to push the files into the CUCM OS Install/Software Upgrade menu.  4 hours later I was still sitting there empty handed.

First I thought it was my FTP program despite using it all the time for everything.  I swapped it out for Core SFTP mini and got the same result.  By this point I was confused and figured I would try different browsers.  I've done this a million times, so why today was this not working?  I could access CUCM, ping it, and push TFTP files into the TFTP directory with no issues.  I decided to run a ping from CUCM to my laptop, of course it bombs out yet my ping to CUCM was fine.  At this point I deduced it was the VPN tunnel that I was using to access the server.

It's 1530 (3:30 PM) and at this point I've exhausted all means of getting these two tiny files into the OS.  You can't pull from the datastore via FTP without some convoluted process and I didn't want to end up breaking something that wasn't broken to begin with. You can't turn the file into an ISO since it's just a cop.sgn file.  A full blown upgrade .ISO would work no problem, but not for this instance, DVD/CD isn't a valid option.

Around 1600 (4:00 PM), a buddy of mine calls from our main office about an hour away and asks how I'm doing.  He knows I'm utterly pissed at this point (yes I swore, I need to vent).  He mentions the one thing I didn't think about, make another VM with Windows.  My other co-worker in the other room rolls in and says "Why don't you just use "Damn Small Linux"".  I was like, what the hell is that?  Apparently its a 50 MB Linux OS stripped down for barebones function with a GUI, how cool is that?

Ultimately, tomorrow I am going to fire up another VM on the host ESXI machine and get this file transferred.  Why spend all this time doing this you might ask?  Well, the place is only 20 minutes away but we are also doing a switch install for them and right now the building isn't completely finished.  That means I would have to inconvenience someone at one of the primary buildings and steal an IP from them for about 20 minutes.  Not only am I wasting someone else's time but I am also wasting fuel to get out there when we are already scheduled for next week as the day to deploy all of this stuff.

When it comes to getting things done remotely and I have the time to spare, I always exhaust every possible means to get the job done without visiting on site.  Anyways, the real point of this post was to show the things you can't do with CUCM as well as show what DSL (Damn Small Linus) is.  Truly a masterpiece, especially when you are using a VPN and have limited bandwidth.

I'm going to go ahead and leave this link here for y'all http://www.damnsmalllinux.org.  I haven't tried it yet but plan on tomorrow first thing.  I think it's a better alternative than slamming a few gigs down the VPN pipe to load Windows if I can help it!  The greatest part, it's a live bootable image so nothing other than having around a gig of drive space and maybe 512 MB RAM is all you need (128 minimum).





The above pictures are some screenshots of DSL.  50 MB is pretty light, I am excited to get try this.  In fact, I might keep this ace up my sleeve for future issues when I can't get something to work remotely.  As always, I hope this post has been hilarious and informative at my expense.

Tuesday, February 3, 2015

Calling Search Spaces and Partitions

Since I started this blog today I might as well get to work at publishing something relevant to the blog.  Just last week I was showing a technical architect / Pre-sales guy in our company a demo lab we had designed for an upcoming event this week in Austin, TX.  I was basically giving him the low down on all the features we installed and have functional such as:

  1. Basic VoIP calling
  2. Hold/resume, transfers
  3. Video calls
  4. Jabber IM and Presence with both standard dialing and SIP URI dialing 
  5. Unity Connection
  6. Cisco Prime Collaboration Provisioning
  7. Cisco Prime Collaboration Assurance


The list just goes on from there so you can get an idea of what we were setting up.  His role in the company isn't system engineering but knowing some of that information can go a long way in getting a customer through the door.  The more you know up front, the more warm and fuzzies the customer will get.

I was going through showing him how to setup a Jabber device for Android on CUCM 10.5.  While I was going through the initial Cisco Jabber for Android Dual mode setting with him, I started rambling off into line settings and everything else.  Why would he want to know any of this?  Well, from my perspective, if you know the inner workings well enough, you can better sell a product.  I had started on Calling Search Spaces and Partitions and was going to breeze past it but decided to get a little in depth on him.

From my perspective, learning CSS's (Calling Search Spaces) and partitions was at first such a ridiculously hard concept that I had nearly given up on voice.  After all, CSS's are a huge design portion of your UC environment.  I would almost say, this is where you start since you need to know what the customers dialing needs are.  I told him some people read a book and learn about CSS's and others watch videos but they all share one thing on common, they talk about CSS's as a lock and key system, which to me, can be confusing.  I broke it down in a better manner, at least I thought so.

I began to tell him think of partitions as labels or names.  That is all they are, labels or names.  The do nothing other than slap something on a device, line, pattern, etc.  Below is an image of a line with a partition and CSS.  I hope it's big enough, if it isn't I'll attempt to resize it better.


Anyways, if partitions are simply labels what do CSS's do?  Well, I told him think of this as a sort of musical chairs only your name gets called out and if you aren't on the list you are hosed when the music stops.  Think of these calling search spaces as boxes with those labels or names in them (remember the technical term is partition!).  So if these boxes / calling search spaces contain those names/labels aka Partitions what does that mean?  Basically, if I call your name and your name is in the box then I can talk to you and you can keep dancing around the musical circle of chairs.  If your name isn't in that box or CSS, you are out of the game I can't talk to you, just go home son.

If that analogy was to nerdy, childish, or easy then let me explain it another way.  If your line is assigned a partition, it gets a name.  If your buddies line gets assigned a partition he gets a name too.  So lets just say this:

Your Line - Johnny Boy
You Buddies Line - Rick James

So at this point your buddies line and your line have names, lets assign them a calling search space, or box.  Keep in mind that this box/CSS contains the partitions or "names/labels" Johnny Boy and Rick James.  These were assigned to the respective lines above.

Your Line CSS - "Johnny and Rick"
Your Buddies Line CSS - "Johnny and Rick"

Since both you and your buddy have the same box this makes life a bit easier.  He calls you and the phone rings, you pick up and he says "I'm RICK JAMES!!!!"  Why did this happen?  Well inside his box he had two names/partitions:


  1. Johnny Boy
  2. Rick James
Since your line was assigned a name or label or partition (whatever you want to call it!) and was in that box / calling search space his line was given, he could call you and continue to dance around the chairs.  Now lets flip the scenario.

Your Line: Johnny Boy
Your Buddies Line: Rick James

Your Line CSS: "Johnny and Rick"
Your Buddies Line CSS: "Joe Dirt and Elvis"

In this scenario, you keep the same names / partitions so nothing from that perspective changes.  The CSS's however have changed.  You have a CSS / box with "Johnny and Rick" that contain the names/partitions of Johnny Boy and Rick Games.  If you place a call to Rick James, your call will proceed because you have Rick James inside your CSS / box.  

Let's look at Rick's side of things.  He has a CSS / box that contains the partitions / names Joe Dirt and Elvis.  Rick James tries to call you but gets a re-order tone.  WHAT HAPPENED!!!!  Well, Rick had a box with two partitions / names that didn't include your's (Johnny Boy).  Since he didn't have your name in that CSS you had to go home and couldn't continue to play musical chairs.


I hope this has brought a bit of a light to this topic.  Basically, the CSS is what defines who you can call since it has a ordered list of partitions from top to bottom.  If your CSS does not contain the called numbers partition/name then you will not be able to complete the call.  The only exception not this rule is if the called party does not have a partition assigned at all but that is another discussion for another day!  There is much more to CSS's and partitions that I can cover in another blog.  I just wanted to get this portion out which I consider the very basics.  I hope this helped and please leave comments.  





This blogs first post

I would first like to start off to let anyone who somehow manages to read this know that this is my first blog.  I decided I needed to start writing something periodically, if not daily about my daily experiences in my profession.  I don't claim to be the best VoIP engineer but I do know what I am doing (for the most part).

On a regular basis I maintain, design, install, and troubleshoot Cisco UC issues.  I have a running record on Cisco since I started to post on their support forums and managed to get about 150 points worth which gets be a bronze star (that starts at 100 I believe).  I also managed to get the community spotlight for January but I think that was just because I was the only one that submitted any kind of content that was in depth.

On a personal side, I'm a happily married man of seven years and counting.  No kids...yet and am working on finding new interests.  I am a veteran of the US Army and have deployed to Baghdad for the entire year of 2006 and December of 2005.  I am an avid firearms enthusiast, I love corvettes, classic cars, and computer / video games.  I think of myself as a dedicated man who gets the job done and isn't afraid to ask for help when he doesn't know or understand something.

For those that share my interests in gaming, I am on Steam as AAChaoshand and you are more than welcome to add me, just make sure you let me know at some point who you are so I know you came from this blog.  I am also a huge fan of Soccer, both European and US (US preferred obviously).  Between Houston Dynamo and FC Dallas, I can't choose either as my favorite since I like both.  Finally, I am not one to judge anyone until they have proven themselves one way or the other.  Beliefs are irrelevant to me as everyone has a right to live their life the way they choose.  I don't hold anything against anyone for something they truly believe in.

I don't plan on updating this blog daily but I will try my best to get around to at least 3-4 times a week if possible.  When I get home from work I am completely exhausted and tend to forget about the small things. The primary purpose of this blog is to just share my Cisco VoIP experiences with others in an effort to help someone else that may run int the same issues as I have.  Additionally, I will be posting my perspective on certain configurations and what certain concepts mean to me.  I would hope that this could shed some light on some Cisco ideas that can be difficult to understand.