Jump to content
RESET Forums (homeservershow.com)
Sign in to follow this  
AlexF

"load balance" outgoing traffic from Windows client with multiple NICs

Recommended Posts

AlexF

LA is for incoming traffic, so the NAS could handle multiple Client PCs better, but it won't help traffic from a single PC to the NAS. You're trying to find another way around the gigabit Enet limit.

Given that a 1G NICs and copper twisted-pair are practically worthless (ie. very low price, especially compared to 10GBASE-T NICs) it seems a shame not to use more of them for NAS/SAN.

 

BTW, LACP is also good for transparent redundancy but that's not my primary issue. Also, I am quite sure there are switches that use L4 (ports) in calculating LACP hash, so, it may be useful in this use case - for example, FTP across multiple connections. I am quite sure that Linux implements it.

Edited by AlexF

Share this post


Link to post
Share on other sites
jem101

Sorry I got distracted by a problematic DNS setup and missed you editing your earlier post.

 

 

There is one other issue to consider here, even if you could get it to work, you may well run into the 'out-of-order frame' problem. If the data is sent between devices via multiple connections, then the likelihood is that frames may well be received in a different order to what they were transmitted in and the receiver would then have a massive job reordering them. Depending on the buffer size you might well find that this negates any speed increases anyway. This happens all the time with routed (internet) traffic but speeds are generally much less and TCP takes care of the reordering.

 

As you probably know already you can link aggregate switches together to increase the bandwidth but they try to always keep traffic for a specific session on the same link to avoid the 'out-of-order' issue but that is the exact reverse of what you are trying to do.

Share this post


Link to post
Share on other sites
AlexF

As you probably know already you can link aggregate switches together to increase the bandwidth but they try to always keep traffic for a specific session on the same link to avoid the 'out-of-order' issue but that is the exact reverse of what you are trying to do.

I did note the hash issue; see references to L4 above.

 

But.. you're right... Even if I could do 'load-balancing' I referred to on client (which is what this post is about), I'd still need to do LACP on SAN and be locked-in into single NIC (because switch only support L2+L3 hash). To be honest, I think it's my oversight.

Edited by AlexF

Share this post


Link to post
Share on other sites
ikon

Given that a 1G NICs and copper twisted-pair are practically worthless (ie. very low price, especially compared to 10GBASE-T NICs) it seems a shame not to use more of them for NAS/SAN.

 

I agree. I suspect there are a lot of us who would welcome 2, 3, or 4 Gbit capability.

Share this post


Link to post
Share on other sites
AlexF

To be honest, I think it's my oversight.

 

Thiinking about this again, I made no oversight....  If Windows 7 could load-balance to destination via multiple NICs, then everything else falls in place if PC and NAS are directly connectioned. Because NICs' MAC will be different, LACP using L2 hash (alone) should distribute traffic properly.

The problem is that it seems that Windows 7 load-balances only to (default) gateways. 

 

(Involving a router would actually kill LACP's distribution because router's MAC will be seen as source for requests towards NAS, forcing switch's L2 hash to be same.)

 

The alternative is to use second NICs to implement a second subnet (with say, priovisioned Jumbo frames), mount NAS's filesystem (via both NICs) and do load-balancing on application-level. Not the best, but still effectively increasing bandwidth.

Edited by AlexF

Share this post


Link to post
Share on other sites
ikon

Provided both ends can negotiate out-of-order packets, then yes. Not sure that happens though.

Share this post


Link to post
Share on other sites
timekills

The answers are within this thread, just a bit spread out.

Bottom line: The only way to increase network throughput to a location inside your router (inside a Layer 2 network/LAN) using a desktop OS is via 802.3ad.

 

Using a single router (specifically gateway) will not permit multiple Layer 3 connections as it can cause both out of order packets (which would cause more slowdown from resends then you'd gain by the "doubling" of bandwidth) as well as effectively creating a challenge  known as asymetric routing. (I realize this seems odd, given that the traffic inside your LAN should be Layer 2, and it is in BGP mostly, which is where MPLS comes into play for routed networks.)

 

The channel bonding, or NIC teaming, or 802.3ad (depending on what term your network hardware uses) can be done at the computer or switch side. My ReadyNAS Pro, for example, can do Layer 2 or 3 NIC bonding so the switch sees 2 x 1 GBit NICs but the NAS routes traffic per NIC depending on the MAC address (or IP if Layer 3) of the destination. Typically I do the channel bonding on the switch side (802.3ad) since then it doesn't rely on the server to set up and allow traffic manipulation, but it requires a managed switch to allow this. The reason I prefer 802.3ad is it allows for doubling of bandwidth to a single site as well as load balanicng to multiple sites. Using the built-in features of the ReadyNAS are good for serving to multiple PCs as it keeps any one NIC from being overused, but doesn't allow for doubling bandwidth to one PC requesting large file transfers.

 

So, if you are looking to use both Gbit NICs to "double" speed to one other PC, use 802.3ad on a managed switch and use NIC teaming to create a single NIC from the outside perspective. If you are simply looking for load balancing - i.e. multiple destinations using both NICs instead of just one - the Win7 can manage but it must be through multiple gateways as anything inside your Layer 2 network will use the one NIC.

Share this post


Link to post
Share on other sites
ikon

Great timekills. Thanks.

 

A small point of clarification: if 802.3ad is set up on a switch, does the computer connected to the switch ports that are set for 802.3ad have to also be set up for NIC 'teaming'? IOW, can the switch do it all on its own, or does the computer also have to have certain capabilities in order to work with the switch?

Share this post


Link to post
Share on other sites
timekills

Both sides must be set up for NIC teaming to act as "double bandwidth" (i.e. 2Gb from one location to another single location.)

 

 

Only the switch (or the PC) needs to be set up if all you want is Layer 2 direction or failover. Layer 2 direction means one NIC used to direct traffic to one destination, and the other NIC for traffic to a different destination, thus you get 2 Gb of traffic, but only 1 Gb to each distant end.

Share this post


Link to post
Share on other sites
ikon

That's what I thought. Thanks.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  



×
×
  • Create New...