Hello Elllery-ga,
You do not mention the operating system of your server, so this answer
will be general, describing techniques that can be implemented on more
than one OS.
There are a few techniques that can improve the bandwidth of a server
by using multiple network interface cards. Note that the improved
bandwidth will be used ONLY if the network traffic is not subjected to
a bottleneck somewhere else in the network. For example the server
traffic to a single NIC PC will be limited to the speed of that single
NIC.
[1] Channel bonding.
By this method, the hardware and software basically put packets on two
interfaces in an alternating pattern. This is generally implemented in
higher performance network switches (e.g. Cisco) and on Linux
clusters. Note that all systems on such a link need to support channel
bonding. Another term for this concept is called a "trunk group" or
"trunking". Search with phrases like
ethernet channel bonding
ethernet trunk group
or similar to find additional references.
I have implemented such a system on a small cluster of PC's, see
http://www.scl.ameslab.gov/Projects/MP_Lite/dox_channel_bonding.html
for a simple illustration and charts of measured performance. I also
measured some odd behavior for a channel bonded interface on dual CPU
systems - apparently since TCP congestion rules were triggered by "out
of order" packet reception. Make a clarification request if you want
more details on that symptom / possible solution.
If you have a single server and router that supports channel bonding,
you may also be able to set it up like this:
Server -+- NIC 1 ---- Router --- PC 1
+- NIC 2 ---- --- PC 2
--- PC 3
where the router converts the channel bonded data (200 Mbps) to data for each PC.
[2] Multiple IP addresses
You can assign a separate IP addresses to the two interfaces. Then set
up your Domain Name Server (DNS) to alternate between the two
addresses for your server. What should happen is that the PC's
connected to your server will tend to use the two interfaces equally.
This will not be as perfect as the previous solution but will work on
average quite well.
[3] Multiple IP / multiple subnets
Depending on the size of your network, you may already have subnets to
improve routing performance. If your server interfaces to two or more
subnets, it can more effectively serve the PC's on your network. Be
sure to disable routing between subnets (unless you want the server to
backup the router).
In this case, the network looks something like this:
PC 1 --- Router --- PC 2
PC 3 --- --- PC 4
PC 5 --- --- PC 6
+- -+
NIC 1 NIC 2
| |
+- Server -+
This would generally work with any operating system but performance
will vary based on the relative load between subnets.
Another suggestion:
[4] Purchase a suitable Gigabit NIC for your server and a switch /
router that supports a single Gigabit link and multiple 10/100 Mbit
links. This is very easy to set up and is supported more cleanly by
operating systems. For example:
http://www.3com.com/products/en_US/detail.jsp?tab=features&pathtype=purchase&sku=3C1670108
is an eight port 10/100 Mbit switch with 1000 Mbit uplink (or to
server) for less than $100. Several similar products are available,
search with a phrase like
ethernet switch gigabit uplink
for several to choose from.
If you need instructions for a specific operating system or if some
part of the answer is unclear, please make a clarification request so
I can more fully address your needs.
--Maniac |