Sunday, January 13, 2008

Five steps to Plan Metwork capacity planning....

step 1: Meet with executive management
Step 2: Determine how well existing hardware is meeting the company's needs
Step 3: Determine the company's future needs
Step 4: Identify opportunities to consolidate
Step 5: Determine whether the existng infrastructure can support anticipated growth

Calculating bandwidth on customer networks..

As most network administrators can attest, network bandwidth is one of the more important factors in the design and maintenance of a functional LAN or WAN. Unlike a server, which can be configured and reconfigured throughout the life of the network, bandwidth is one of those elements of network design that is usually optimized best by configuring the network correctly from the outset. As a service provider, how can you determine the bandwidth your customer needs when designing the network? What specific considerations apply and how can you put yourself in the best position to help your clients? These are some of the questions that we'll answer in this tip.

Bandwidth refers to the data rate that is supported by the network connection or the interfaces that connect to the network. It is usually expressed in terms of bytes per second (bps). Network bandwidth represents the capacity of the network connection, though it's important to understand the distinction between theoretical throughput and real-world results. For example, a 1000BASE-T (which uses unshielded twisted-pair cables) Gigabit Ethernet (GbE) network can theoretically support 1,000 megabits per second (Mbit/s), but this level can never really be achieved in practice because of hardware and systems software overhead. It is this very point that makes calculating bandwidth a challenge.

So how do you determine how much bandwidth your customer needs? The process begins with asking the right questions -- What applications are they running, and what is the performance service-level agreement (SLA) for these applications? I know some network managers that are only concerned with how many users are on a VLAN. What you really need to know is what the users will be doing on the network. It's possible that 200 users will cause less of a bottleneck than a group of three users that really beat the heck out of the network because of some funky client server application.

Computing network bandwidth

There are two basic steps to calculating bandwidth:

  • Determine the amount of available network bandwidth.
  • Determine the average utilization required by the specific application.

Both of these figures should be in bps. If the client's network is GbE that would give you 125,000,000 bytes per second. This is computed by taking the 1000 Mbps (for a Gigabit network); which is 1000 million (or one billion) bits per second and dividing it by 8, to come up with the bytes.


After ascertaining the client's network bandwidth, you'll have to determine how much bandwidth each application is using. Use a network analyzer to detect the amount of bytes per second that the application sends across the network. To do this, you'll need to enable the Cumulative Bytes column of your network analyzer. After you have enabled this, then you have to:

  • Capture traffic to and from a test workstation running the application.
  • In your decode summary window, mark the packets at the beginning of the file transfer.
  • Follow the timestamp down to one second later and then look at the cumulative byte field.

If you determine that your application is transferring data at 200,000 bytes per second, then you have the information to perform the calculation: 125,000,000 / 200,000 = 625. In this case, the network will be fine even if there are several hundred concurrent users. Look what would happen, though, if you had a 100 mbps network. You would then have a network that could not support more than approximately 60 users running the application concurrently. Bandwidth is indeed very important!


I like to capture data in 10-second spurts and then do the division. I also like to check multiple workstations to make sure that the number is reflective of the general population. You will also have to determine how many concurrent users you will have. Obviously there will be a bandwidth difference between two concurrent users and 20.

Monday, January 7, 2008

The Many Wonders of the Static Route to Null0.



The Many Wonders of the Static Route to Null0.

When I first saw a static route to the Null0 interface in some IOS configuration, I most certainly did not appreciate the fact that I was looking at a veritable swiss army knife in the world of networking. My first impression was that this seemed silly at best and possibly wrong. After all, why would pointing packets at a software interface that would simply discard all packets aimed at it be a good idea?Then over a period of time as I understood the various uses that a static route to Null0 was put to, I learned to look at it with respect. In this post I will try and list some of the scenarios where I have seen a static route to Null0 being gainfully employed.One common use of this technique is for loop prevention. Assume you have a router performing NAT translating inside local addresses to the address range 192.168.65.193 - 192.168.65.198.

Assume further that this router has a default route pointing to the outside as would be common for a router performing NAT at the edge of the network. If an outside device were to try to ping an address (192.168.65.194, say) from the NAT address pool when that address has not yet been assigned to a translation, the packet would end up looping until its TTL gets decremented to zero because of the default route on the NAT router. The way to avoid this would be to code in a static route for the address pool to Null0 as follows

ip route 192.168.65.192 255.255.255.248 Null0

With this static route, any addresses from the NAT pool not assigned to the translation would end up hitting this static route and would be dropped thus avoiding the problem with looping packets.Another trick very similar to the last one is used in dial-up networks. Assume an access server is assigning an address from an address pool to dial-up clients. If the access server has a default route, packets addressed to any IP addresses in the dial-up address pool not currently assigned would result in packets looping. A static route for addresses in that pool to Null0 will prevent that problem. Note that if a packet comes in destined to an address that is indeed assigned to a dialed in client, it will get routed correctly because the access server will have a host route (/32) to that address and the semantics of the longest match with IP route lookup will ensure that the host route matches rather than the less specific static route to Null0 for that case. It is only packets in the address pool that are not assigned yet that will match the static route to Null0 and get dropped.Let's take another scenario where the static route to Null0 comes in handy. Assume that you are summarizing prefix advertisements on a router but all subnets included in the summary may not be existing yet. In that case, packets addressed to non-existent subnets of the summary can end up looping if there is a default route on the router. This is avoided by adding a static route to Null0 for the summary address.

Again, for subnets that do exist, the more specific route to the subnet will be matched because of the longest-match semantics but for non-existent subnets, the static route to Null0 will be matched and the packets dropped. Protocols like EIGRP will automatically add a static route to Null0 for the summarized prefix when auto summarization is in effect for exactly this loop prevention reason.Now for a very different application of the static route to Null0. Recall how BGP will not advertise a prefix indicated in the network statement unless there is an exact route to the prefix. However, your router may only have routes to subnets of that prefix. To get BGP to advertise that route all you need to do is to add a static route to Null0 for that exact prefix you wish to advertise. The static route gets added to the routing table and that causes BGP to now advertise that prefix. Again, because of the longest prefix match semantics packets for valid subnets in that prefix will have a more specific entry in the routing table and so will be correctly routed. Packets for subnets of that prefix that do not exist will indeed match the static route to Null0 and get dropped but then that will be the correct behavior.

One very nice application of the static route to Null0 is when one needs to redistribute between RIP and and a classless routing protocol like OSPF where the RIP and OSPF domains share addressing in the same major network but if the masks are different. In such a scenario, if you try to redistribute the OSPF routes into RIP, it will not work. For instance, if the RIP and OSPF domains have addresses in the 172.169.0.0 major network but let's say RIP is using 172.169.5.0/24 addressing while the OSPF domain is using addresses from 172.169.10.128/25. If you simply try to redistribute the OSPF routes into RIP, you will see that RIP will not advertise the routes learned from OSPF. To get this to work, one option might be to change the mask for the OSPF domain to be /24 also but for obvious reasons that is not an easy thing to do. Instead, you could simply configure a static route to Null0 for the 172.169.10.0/24 prefix and redistribute the static route into RIP.

As usual, because there will be more specific routes for the valid subnets of 172.169.10/24, packets will be routed properly and routers from the RIP domain will be able to reach routers in the OSPF domain.I am sure I am only scratching the surface here with the use of the static route to Null0. If you are aware of other nifty uses of this tool, please leave a comment describing the scenario.