# Theoretical question about lagg



## nickq (Nov 10, 2009)

Hello guys, I'm totally new with FreeBSD. Looking for something just to start with, I decided to try FreeNAS.
I read about lagg, both the man and the handbook but I didn't find the specific answer I need.
I own a cheap unmanaged switch, without any support to 802.3ad or Cisco EtherChannel, and I just would like to know if there is a mode which provide load balancing with it.
"loadbalance" mode looks pretty similar to "balance-alb" mode of the linux channel bonding driver, which fits my situation.
Does anybody know if I'm right or not? Thanks!


----------



## gordon@ (Nov 11, 2009)

I think your best answer is to just try it and see what works.


----------



## DutchDaemon (Nov 11, 2009)

Note: Topics about PC-BSD / FreeNAS / DesktopBSD / pfSense


----------



## nickq (Nov 11, 2009)

gordon@: Sorry, but I don't agree with you.
In my experience with channel bonding in linux I saw that almost all modes I set up "worked", even if they had not been supported by my hardware. I mean that the connection is established and the communication doesn't seem to have any problem. But beyond appearances a not supported mode actually can give several problems (like out-of-order packet delivery, i.e.) those result in a performace loss. I would like That's why just trying a configuration is not useful for me. 

DutchDaemon: I thought my question could be useful even for those who are interested in FreeBSD in general, since lagg is a feature of the os and not only of FreeNAS. Was I wrong?


----------



## DutchDaemon (Nov 11, 2009)

No, as long as you're aware that your mileage may vary, because FreeNAS differs from FreeBSD in many ways.


----------



## mix_room (Nov 12, 2009)

lagg does load-balancing and fail-over. I saw a clip where one of the OpenBSD devs was running two connections, one wired and one wireless, to an audio server. (Lagg being imported from OpenBSD this is applicable)

I played around a bit with them, and it worked quite well. Like you I was using cheap switches and old network cards.


----------



## DutchDaemon (Nov 12, 2009)

mix_room said:
			
		

> lagg does load-balancing and fail-over. I saw a clip where one of the OpenBSD devs was running two connections, one wired and one wireless, to an audio server. (Lagg being imported from OpenBSD this is applicable)
> 
> I played around a bit with them, and it worked quite well. Like you I was using cheap switches and old network cards.



I saw this one, or a similar one 'live' (at EuroBSDCon 2005); OpenBSD's Ryan McBride <sp?> chopped an Ethernet cable with a large axe, and the OpenBSD CD song kept playing, right? 

But that was a *CARP* demonstration, not LAGG, iirc.


----------



## mix_room (Nov 13, 2009)

DutchDaemon said:
			
		

> I saw this one, or a similar one 'live' (at EuroBSDCon 2005); OpenBSD's Ryan McBride <sp?> chopped an Ethernet cable with a large axe, and the OpenBSD CD song kept playing, right?


Sounds about right. I am not sure who it was, but that what was demonstrated. 



> But that was a *CARP* demonstration, not LAGG, iirc.


Well I can assure you that it was not a LAGG demonstration, but only because OpenBSD calls the same functionality TRUNK. So it, strictly speaking, wasn't LAGG. 
I don't think it was CARP though, but I could be mistaken. Didn't manage to find the video either.


----------



## DutchDaemon (Nov 13, 2009)

Well, this is his site:
"Firewall Failover with pfsync and CARP"
http://www.countersiege.com/doc/pfsync-carp/

The presentation at EuroBSDCon 2005 was "Building Robust Firewalls with OpenBSD and PF"

I dunno, sound CARP-y to me


----------



## mix_room (Nov 13, 2009)

That does sound slightly fishy. 
Lets call it 'CARP over TRUNK' and we can both be right.


----------



## phoenix (Nov 13, 2009)

lagg(4) should shed some light onto the original question.


----------



## nickq (Nov 14, 2009)

phoenix said:
			
		

> lagg(4) should shed some light onto the original question.



This is my first approach to FreeBSD and my biggest difficult resides just in the documentation. In linux bonding documentation is much more conspicuous, clear and explicit than lagg documentation in FreeBSD.
To give an example, I'm quoting from linux bonding documentation:


> ...
> * balance-tlb or 5
> Adaptive transmit load balancing: channel bonding that *does not require any special switch support*.
> ...


Reading the man (which I did before opening this thread), I can just suppose loadbalance mode is what I need. The same if I set up a working configuration.
Without documentation or expert opinion, I should read and understand the source code. But I'm not so skilled!


----------



## gordon@ (Nov 15, 2009)

I thought it was pretty obvious from reading the manpage. Both the fec and lapc modes require switch support. The other ones do not.


----------



## nickq (Nov 15, 2009)

gordon@ said:
			
		

> I thought it was pretty obvious from reading the manpage. Both the fec and lapc modes require switch support. The other ones do not.



Oh... I thought the only obvious thing in our lives is that we all have to die!
You said modes different from fec and lapc do not require switch support. Btw, in my experience with bonding, a round robin policy makes all aggregated interfaces submit to the switch the same mac address. This cause many negative consequences if the switch  doesn't support "etherchannel" (or "trunking") configuration for his ports. And... Ta-Da!! Looking at the FreeBSD Handbook looks really like this behavior occurs in lagg too.

Still looking  at the FreeBSD Handbook:


> Loadbalance
> This is an alias of FEC mode.


But you said FEC requires switch support and loadbalance doesn't! Ta-Da!! ...again. :\

Now, let's be serious. It looks to me that the things you consider obvious, actually are wrong. Maybe you don't exactly know how aggregation works. Please, understand that mine isn't a personal attack: I just don't want other people get wrong knowledge by reading this thread.


----------



## gordon@ (Nov 19, 2009)

Please excuse my lack of research on the subject. I have not used the lagg driver, I was relying on the documentation. To that end, reading the manpage on the system I'm on (7.2-RELEASE-p4) has different information than the Handbook link you cite. Specifically, it says that fec and lapc require switch support.

However, looking at the code for the driver, it does appear that the fec and loadbalance modes are the same thing. That leaves you with roundrobin, which as you point out may very well cause your switch to freak out. The only way to find out if that is the case is to try it.

It looks like the linux driver has more options for link aggregation. The tlb option looks interesting, the alb option just looks like that does scary things with arp that I would never be comfortable trying.

I'll summarize:
If you want link aggregation, you really should use fec or lapc, anything else is a crap shoot. If you just want failover, lagg is more than sufficient.

Disclaimers because nickq is picky:
I haven't tried this myself. It may work. It may not work. It may irradiate you and cause to you glow. It may cause all your ice cream to go melty. It may make your hair fall out and cause sterility. But unless you TRY IT OUT, you'll never know.


----------



## nickq (Nov 19, 2009)

LOL Gordon@, you're right, I'm picky!
And thanks for answering my question about loadbalance mode.

What I meant in post #4 is that I had already tried many configurations (both with linux bonding and freebsd lagg) but I needed to know more.
I'm making a pratical example: I set up a round-robin configuration and it works... I mean, I can open a tcp connection and it doesn't go down. But I know what a mess a rr policy cause to an unmanaged switch, so, even if it *just works*, it's definitely not what I want!

I still have doubts about why lagg should have two different names for the same mode: it makes no sense to me...


----------

