Network Testing and Troubleshooting
Network testing and troubleshooting is an art and a science that every network engineer should master. That means, it’s a field that requires knowledge and preparation on the network protocols and IP networks in general, but also where gut feeling and intuition can really make the difference.
I have been working for many years in day to day network operations, and I have always found fascinating the fact that, within network engineers that had the same training and formal education (e.g. CCIEs), some are faster to find the root cause of network and application performance issues. Those bright individuals that are able to restore the network with few commands are sometimes called the network heroes.The goal of this short post (and the white paper guide that follows) is not to teach you how to be a network hero, but to simply lay out some basic rules that should be followed while testing and troubleshooting a network.
Network Layers and Troubleshooting
When working on network problems, it’s very important to divide and conquer the problem in layers. Start with the physical one and continue on, all the way to the application one. Think about when you are trying to figure out why you can’t connect to the network – you will probably follow this series of steps:
- Is my computer connected via Ethernet or a WiFi card to the network? Do I have a link light (in the case of Ethernet) or a good signal (in the case of WiFi connection)?
- Did I get an IP address via DHCP, or do I need to set a static IP address?
- Does DNS resolution work? Are my DNS servers configured correctly?
- Is the service or application I am trying to access, available?
If you want to learn more about this process, you can read the blog post that I wrote some time ago on troubleshooting network problems.
If you are not familiar with the OSI model and TCP/IP stack, these linked Wikipedia pages are helpful. The OSI model is primarily taken as a reference model, although exist implementations of it. The TCP/IP stack is the implementation that is globally used by today’s computers.