Making Your Network More Efficient

Archived content. No warranty is made as to technical accuracy. Content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
By Brien M. Posey, MCSE for

Have you ever seen a network that runs extremely slow? Perhaps you've looked at such a network, and everything seems to be configured correctly, but you still think that it should be faster than it is. Although incorrectly configured PCs can cause such problems, more often they're a result of bad network design. Fortunately, in many cases, you can make some changes that will greatly improve your network's performance. In this article, we'll discuss some factors that cause networks to run slowly, and show you how to make the necessary adjustments.

On This Page

How Ethernet Works
Protocol Reduction
Subnet Masks
Subnet IDs
IP Addresses

How Ethernet Works

Before we can intelligently discuss the issues involved in optimizing network performance, it's necessary to understand how a network works. There are many different networking topologies, and each works in a different way. Since discussing each type of networking topology is impossible in the amount of space that we have, we'll use Ethernet as the basis for our article.

Ethernet, which is one of the most common topologies, works on the collision domain model. When a computer on an Ethernet network wants to send information to another computer on the network, it places the information into a packet and transmits it to every PC on the network. This packet consists of several pieces of information including the address of the computer that the packet is going to, the address of the computer sending the packet, and the information being sent.

Each computer on the network receives a copy of every packet being sent. Each computer looks at the packet's destination address to determine if the packet is intended for it. If the packet isn't intended for that PC, the packet is ignored. If the packet is intended for that PC, the computer disassembles the packet, and processes the information that it contains.

While this may sound like an organized method, keep in mind that any PC can send a packet at any given time. If two PCs send packets at the same time, the packets will collide on the wire, destroying both packets. When the PCs detect that a collision has occurred, both wait a random amount of time and resend their packets. Keep in mind though, that while the two PCs involved in the collision are waiting to resend, it's possible for another PC to send a packet, which may also be involved in another collision.

This procedure, which we've grossly over-simplified, happens hundreds of times per second. As you've probably already figured out, the more network traffic you have, the more collisions will occur. These collisions create even more network traffic, resulting in even more collisions until everything comes to a screeching halt.

As you can see, if you want your network to run faster, you want to prevent collisions as much as possible. Although you can never completely get rid of collisions, you can reduce them by reducing network traffic. There are two basic ways of reducing network traffic. First, you can reduce the number of PCs on your network. Second, you can reduce the amount of data that the PCs on your network are sending.

Protocol Reduction

One of the most effective ways of reducing network traffic is to reduce the number of protocols in use on your network. When a Microsoft Windows-based PC needs to send a piece of information to another PC, it sends it using each loaded protocol. For example, if a PC has TCP/IP, NetBEUI, and IPX/SPX loaded, it would send the same piece of information three times, once for each protocol. Now imagine the impact of traffic if each PC on your network had three protocols loaded. If your particular situation allows, we recommend using only TCP/IP. The reason for this is that it's the protocol used for communicating on the Internet, and is compatible with virtually everything.


Printers can be another source of excessive network traffic. As you probably know, many printers can use a network card to directly connect to the network, so they don't have to be physically connected to a PC. On many of these printers, the factory default is to have all supported protocols enabled. Such protocols can include anything from TCP/IP to Apple Talk. It's not uncommon for a single printer to be using six different protocols. If you have printers directly connected to your network, it will probably be worth your time to get out the printer's documentation, and figure out how to disable all unnecessary protocols.


As we mentioned earlier, one of the most obvious ways to reduce the traffic on your network is to remove some PCs. In the real world, this isn't practical, because people must have their network connection. However, you can do the next best thing.

While you can't simply remove users PCs from the network, you can break your existing network into two or more smaller networks. While you can buy expensive routers to accomplish this task, you can also use some of the functionality built into Microsoft Windows NT Server.

As you can see in Figure A, it's possible to install multiple network cards into a Microsoft Windows NT Server. If network traffic becomes a problem, you can take one large network and break it into two or more smaller networks, as long as each network connects to one of the network cards inside the Microsoft Windows NT Server.


Figure A: It's possible to install more than one network card into a Microsoft Windows NT Server.

Figure B shows an example of a single network. Figure C shows the same network split into two separate networks linked to the same server.


Figure B: Normally, each PC only has one network connection.


Figure C: It's possible to connect one server to two or more separate networks.

In a configuration such as this, you can configure each network card's protocols separately. For example, notice in Figure D that the IP Address tab of the TCP/IP Properties window contains an adapter drop-down menu. By selecting the adapter that you wish to configure from this drop-down menu, you can assign a different IP address to each network card.


Figure D: You can use the Adapter drop-down menu to select the network card that you wish to configure the IP address for.

Before we continue, let's take a moment and review what we've done. We've turned one network into two smaller networks, each with a link to a single server. In such a situation, traffic generated on one network is isolated to that network. Therefore, you've cut your network traffic in half by eliminating half of the PCs from the network.

Such a setup only works well in situations where workstations don't have to share much data with each other. For example, if four users on one of the two networks had to share a printer, that would be okay. However, if someone on the other network wanted to print to the printer that the four users we just mentioned use, they wouldn't be able to, because they can't pass data from one network to the other.

The solution to such a problem is to enable routing. To do so, go to the Routing tab of the Microsoft TCP/IP Properties window, and select the Enable IP Forwarding check box, as shown in Figure E.


Figure E: Enabling IP Forwarding allows data to be passed from one network to the other.

The majority of the network traffic will stay contained within the smaller networks. However, if Microsoft Windows NT detects that a destination PC doesn't exist on the network that originated a packet, it can pass the packet over to another network, thus allowing two PCs on different networks to communicate.

If you plan to use IP forwarding, it's important to set the correct default gateway on your workstations. When a PC on your network needs to send data to another PC, it checks the routing tables for a route to the destination PC. If no route exists and the PC doesn't appear to be on the local network, the packet is forwarded to the default gateway, which then forwards the packet on to other gateways until it eventually reaches its destination. In a setup like we've described, you'd set the default gateway to match the IP address of the network card in the server that's connected to that network.


To make routing work effectively, you need to implement some sort of organizational structure. For example, you might consider grouping similar IP addresses on each segment of the network. Such a technique is referred to as subnetting.

Subnet Masks

The first step in subnetting your network is to determine your subnet mask. An IP address is made up of a network ID and a host ID. A network ID is a number shared by every PC on the network. TCP/IP looks at the network ID to see if a packet is destined for a PC on the local network or on a remote network. The host ID is a number that's unique to each PC on the network. The subnet mask tells TCP/IP where the network ID ends and the host ID begins. Normally, on a class B network, the subnet mask would be The 255's indicate that the position is part of the network ID, while the zeros indicate that their position is part of the host ID.

However, when you segment your network, you need to come up with alternate values for the host ID portion of the IP address that will allow you to better regulate traffic flow. To calculate this alternative subnet mask, count the number of segments on your network. Such segments don't necessarily have to span directly from a Microsoft Window NT Server. You can also have segments off of dedicated routers.

Now, write down the number of segments on your network, and convert the number to binary form. For example, if you had six segments on your network, you'd write down 6, and its binary equivalent, 110. Now, count the number of bits required to represent the binary representation of the number of segments. In our prior example, we used six subnets. The binary equivalent to six, 110, can be represented in three bytes, so write down the number three.

At this point, create an eight digit binary number by using a 1 for each bit required to represent the number of segments in binary form. Now complete the number by filling in zeros at the end. For example, it takes three bits to represent six in binary form. Therefore, we'd occupy the first three positions with 1s, followed by 5 zeros. The resulting number, 11100000, is the binary representation of our subnet mask. Now, convert this number to decimal. The number we used in our example converts as 224. If we were working with a class B address, our complete subnet mask would be If you were using a class A or a class C network, you'd use the same general technique, you'd just change the position of the numbers to match the appropriate network class.

Subnet IDs

Now that you know the subnet mask that you'll be using, you must determine the valid subnets for your network. As we said earlier, a subnet is a range of numbers assigned to a segment of your network.

To calculate the subnets, take the binary number that you calculated for your subnet mask, and figure every possible binary value for the leading positions that are now occupied by ones. For example, our subnet mask was 224, or 11100000. To calculate subnets, we'd ignore all of the zeros, and write down every possible binary value for the positions occupied by the ones. Doing so would yield the following numbers:
00000000 = 0
00100000 = 32
01000000 = 64
01100000 = 96
10000000 = 128
10100000 = 160
11000000 = 192
11100000 = 224

Now that you have a list of subnets, ignore the top number and the bottom number because they are invalid. Subnet IDs consisting of all zeros and all ones have special meaning, and shouldn't be used. Once you've ignored the all 0s and all 1s values, you should have one subnet left for each physical segment of your network. In our case, our network has six segments, and we have subnet values of 32, 64, 96, 128, 160, and 192.

IP Addresses

Now that you've created your subnets, you must figure out which IP addresses belong in each subnet. Up to this point, you've already done the hard part. As we said earlier, an IP address is made up of a network ID and a host ID. Your network ID will remain the same for every computer. On a class B network this means that the first two octets of the IP address will remain constant. We'll call these values A and B.

In our example, the first subnet that we defined was 32. Therefore, our first valid IP address is A.B.32.1. The second subnet that we defined was 64. The first valid IP address of the second subnet is A.B.64.1. Therefore, the first subnet can contain any IP addresses ranging from its first valid address on up to the last address before the first address of the second subnet. For example, Table A shows the valid IP addresses for the subnets we've created.

Table A


Start Address

End Address



















Valid IP addresses for the subnets we've created.

If you're wondering about how we derived the last IP address, remember that our subnet mask was 224. Therefore, we were allowed to use up to the last address before the value of the subnet mask.


In this article, we've discussed factors that may cause your network to perform well below its capability. We've shown you some techniques you can use to help increase your network's efficiency by reducing network traffic.

Brien M. Posey is a freelance writer who also works as a systems engineer for the United States Department of Defense. You can contact him at Because of the high volume of e-mail that he receives, it's impossible for him to answer every message, although he does read them all.

We at Microsoft Corporation hope that the information in this work is valuable to you. Your use of the information contained in this work, however, is at your sole risk. All information in this work is provided "as -is", without any warranty, whether express or implied, of its accuracy, completeness, fitness for a particular purpose, title or non-infringement, and none of the third-party products or information mentioned in the work are authored, recommended, supported or guaranteed by Microsoft Corporation. Microsoft Corporation shall not be liable for any damages you may sustain by using this information, whether direct, indirect, special, incidental or consequential, even if it has been advised of the possibility of such damages.