On Wed, Dec 17, 2014 at 6:09 PM, David P. Discher <d...@dpdtech.com> wrote:
>
> On Dec 15, 2014, at 11:33 AM, Alan Somers <asom...@freebsd.org> wrote:
>
>> On Sun, Dec 14, 2014 at 6:23 PM, David P. Discher <d...@dpdtech.com> wrote:
>>>
>>> So, I think I’ve identified the issue.  In sys/net/ieee8023ad_lacp.c, 
>>> lacp_pdu_input() has a sanity check :
>>>
>>>        if (m->m_pkthdr.len != sizeof(*du)) {
>>>                goto bad;
>>>        }
>>>
>>> I added some debugging information in if_lagg, and ran with it.  The lacpdu 
>>> packet that being sent by the TP-Link switch is 4 bytes longer than the 
>>> FreeBSD "struct lacpdu du”.
>>>
>>>        em1: lacp_pdu_input-sizeof(du) bad m_pkthdr.len=128 sizeof(du)=124
>>>
>>> My packet captures shows the packet size differing as well.
>>>
>>> I’m still poking around. I’ve been trying to look for the official LACPDU 
>>> binary/wire format … if someone can point me to the reference for that, 
>>> that would be helpful (at least my own understanding).
>>
>> Try here:
>> http://standards.ieee.org/findstds/standard/802.1AX-2008.html
>>
>
> Thanks - I hadn’t seen the “free” version from IEEE, and may looking into 
> that later.  However, I think my time with messing around with this switch 
> and lagg is just about over.
>
> I did get FreeBSD to work with LACP in this Switch.  I hacked in the 4 extra 
> bytes in struct lacpdu in src/sys/net/ieee8023ad_lacp.h
>
> Index: ieee8023ad_lacp.h
> ===================================================================
> --- ieee8023ad_lacp.h   (revision 275779)
> +++ ieee8023ad_lacp.h   (working copy)
> @@ -151,6 +151,7 @@
>         struct lacp_collectorinfo ldu_collector;
>         struct tlvhdr           ldu_tlv_term;
>         uint8_t                 ldu_resv[50];
> +       uint8_t                 tplink[4];
>  } __packed;
>
>  /*
>
>
> This work great and without any issue.  All the defaults with 10-stable 
> (r275778) and recent version of -head with this one line made it work.  Of 
> course, this will likely break FreeBSD with all other switches LACP.


I'm glad that you got your problem sorted out.  Please do let us know
if you find a more general solution.


>
> However, what I have also discovered this this switch is unlike FreeBSD which 
> lagghash includes L4, the switch only seems to hash over SRC+DST IP or 
> SRC+DST MAC.  Which makes it pretty much just sends all the traffic down one 
> link from the switch. So for my particular use case with a small set of 
> hosts, this switch is not useful for me.


Actually, that's a fairly common problem.  I've even seen it on some
expensive Cisco switches.


>
> I would not recommend the TP-Link TL-SG2008 8-Port Gigabit Smart Switch for 
> use with FreeBSD … or for any use with LACP that is expecting increased 
> throughput for a small set of hosts.
>
>
> -
> David P. Discher
> http://davidpdischer.com/
> AIM: DavidDPD | Y!M: daviddpdz
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to