In the past two columns (see the URLs at the end of this article), I talked about how command-line utilities can help you diagnose network problems on your IIS Web servers and IIS Web farms. Often, complaints about latency in Web applications are due to network, not software, problems. The more complex your environment, the easier it is to accidentally or inherently introduce network problems.
I started with the absolute basics—PING. Ping.exe is a command-line tool you use to verify whether a local or remote TCP/IP system is available. Then I covered another basic topic—TRACERT. TraceRT (short for "Trace Route") is a route-tracing utility that can effectively measure the number of router hops (or routes) between systems.
In this article, I cover PATHPING. PathPing.exe is a Windows 2000 route-tracing tool that combines Ping and TraceRT features with additional information those tools don't provide. You can use PathPing to identify routers that cause delays and other latency problems on a connection between two IP hosts. By default, PathPing pings each router 100 times, with a single ping every 0.25 seconds. Consequently, a default query requires 25 seconds per router hop.
First, try a little test using PathPing to trace a route to your favorite Internet site. PathPing lives in \WINNT\system32 and is "pathed" so you can grab a Command Prompt and run it from anywhere on your system. (I might be overstating the obvious, but you'll need Internet connectivity to run this test.) When I type: PathPing –n InterKnowlogy.com (the "n" parameter prevents resolving IP addresses to host names), I get the following:
Tracing route to interknowlogy.com \[22.214.171.124\] over a maximum of 30 hops: 0 192.168.1.2 1 10.84.10.1 2 126.96.36.199 3 . . . Computing statistics for 375 seconds . . .
When I run PathPing, it first lists the route. This is the same route that the TraceRT command-line tool shows. Next, PathPing displays a busy message for approximately 25 seconds multiplied by the number of router hops. During this time, PathPing gathers information from all the previously listed routers and from the links between them. At the end of this period, it displays the test results like this:
Source to Here This Node/Link Hop RTT Lost/Sent = Pct Lost/Sent = Pct Address 0 192.168.1.2 0/ 100 = 0% | 1 5ms 0/ 100 = 0% 0/ 100 = 0% 10.84.10.1 0/ 100 = 0% | 2 9ms 0/ 100 = 0% 0/ 100 = 0% 188.8.131.52 0/ 100 = 0% |
And so forth . . .
In the PathPing output above, in the "This Node/Link Lost/Sent = Pct" and "Address" columns, the link drops 20 percent of the packets.
PathPing has several optional parameters:
- n—Host names. Doesn't resolve addresses to host names.
- h <Max hops>—Maximum hops. Maximum number of hops to search for target.
- g <destination address> <router IP addresses or NetBIOS names>—Router-list. Uses a loose source route along the host-list.
- p <milliseconds>—Period. Number of milliseconds to wait between pings.
- q <Number queries>—Number of queries per hop.
- R—RSVP test. Checks to see whether each router in the path supports the Resource Reservation Protocol (RSVP), which lets the host computer reserve a certain amount of bandwidth for a data stream. Use the -R switch to test for Quality of Service (QoS) connectivity.
- T—Layer 2 tag. Attaches a layer-2 priority tag (for example, for IEEE 802.1p) to the packets and sends it to each network device in the path. This helps identify the network devices that don't have layer-2 priority properly configured. Use the -T switch to test for QoS connectivity.
- w <milliseconds>—Timeout. Waits this many milliseconds for each reply.
As you can see, PathPing is a valuable and powerful tool for your network-problem diagnosis arsenal. It combines the power of Ping and TraceRT and provides even more detail about the routing of IP-based transmissions.