illumos-joyent icon indicating copy to clipboard operation
illumos-joyent copied to clipboard

LACP Initialization error occurred in case when two aggregated channels use the same Actor key

Open EdgeToLife opened this issue 7 years ago • 0 comments

There is a server in datacenter. It is connected with 4 network ports to 4 identical Brocade network switches. 2 connections are aggregated to one interface for private network, other two are aggregated to public interface.

The issue is in the following:

When establishing new connection in SmartOS, it is being checked according to the source code: https://github.com/openzfs/openzfs/blob/master/usr/src/uts/common/io/aggr/aggr_lacp.c In the lacp_misconfig_check function it is checked whether Actor system and Actor key are used in existing connections.

In my case all of the Brocade network switches have the same Actor system ID (01-e0-52-00-00-01) whilst the Actor key number matches port-channel number. In its turn, port-channel number matches the port number in the primary network switch of the switch group.

Brocade network switches do no allow to specify the Actor system and the Actor key.

Thus, when the server is connected to the 4 ports with the same number, one of the aggregated channels will not work because Actor key and Actor system will match the ones of the existing channel, though it is separate independent aggregated connection.

For example, if the server is connected with all 4 its ports to ports number 22 of 4 network switches, I get the following error:

[ID 272870 kern.notice] NOTICE: aggr 6 port 3: Port Partner MAC 1:e0:52:0:0:1 and key 22 in use on aggregation 5 port 2#012

So aggregation doesn't work.

Is it possible to reconsider the logic of this function?

My config is following:

[root@smartos-test ~]# cat /usbkey/config

aggr0_aggr=20:47:47:84:cc:74,a0:36:9F:76:e1:9b
aggr0_lacp_mode=active
admin_nic=aggr0
admin_ip=111.111.111.108
admin_netmask=255.255.255.248
admin_gateway=111.111.111.107

aggr1_aggr=20:47:47:84:cc:72,a0:36:9f:76:e1:9a
aggr1_lacp_mode=active
external_nic=aggr1
external_ip=10.107.4.28
external_netmask=255.255.255.248
external_gateway=10.107.4.27

headnode_default_gateway=111.111.111.107

dns_resolvers=8.8.8.8,8.8.4.4
dns_domain=local

ntp_hosts=0.smartos.pool.ntp.org
hostname=smartos-test

[root@smartos-test ~]# ifconfig
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
aggr0: flags=1001000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,FIXEDMTU> mtu 1500 index 2
        inet 111.111.111.108 netmask fffffff8 broadcast 111.111.111.111
        ether 20:47:47:84:cc:74
external0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
        inet 10.107.4.28 netmask fffffff8 broadcast 10.107.4.31
        ether 2:8:20:ed:4d:62
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
        inet6 ::1/128

[root@smartos-test ~]# dladm show-phys
LINK         MEDIA                STATE      SPEED  DUPLEX    DEVICE
igb0         Ethernet             up         1000   full      igb0
igb1         Ethernet             up         1000   full      igb1
bge0         Ethernet             up         1000   full      bge0
bge1         Ethernet             up         1000   full      bge1

[root@smartos-test ~]# dladm show-aggr -x
LINK        PORT           SPEED DUPLEX   STATE     ADDRESS            PORTSTATE
aggr0       --             1000Mb full    up        20:47:47:84:cc:74  --
            bge1           1000Mb full    up        20:47:47:84:cc:74  attached
            igb1           1000Mb full    up        a0:36:9f:76:e1:9b  attached
aggr1       --             1000Mb full    up        20:47:47:84:cc:72  --
            bge0           1000Mb full    up        20:47:47:84:cc:72  attached
            igb0           1000Mb full    up        a0:36:9f:76:e1:9a  attached
			
[root@smartos-test ~]# dladm show-aggr -L
LINK        PORT         AGGREGATABLE SYNC COLL DIST DEFAULTED EXPIRED
aggr0       bge1         yes          yes  yes  yes  no        no
--          igb1         yes          yes  yes  yes  no        no
aggr1       bge0         yes          no   no   no   no        no
--          igb0         yes          no   no   no   no        no

[root@smartos-test ~]# dladm show-aggr -s
LINK        PORT      IPACKETS RBYTES OPACKETS OBYTES IPKTDIST OPKTDIST
aggr0       --        3286    323720  744     84740   --       --
--          bge1      824     102106  389     50568   25,1     52,3
--          igb1      2462    221614  355     34172   74,9     47,7
aggr1       --        0       0       0       0       --       --
--          bge0      0       0       0       0       -NaN     -NaN
--          igb0      0       0       0       0       -NaN     -NaN

EdgeToLife avatar May 09 '17 00:05 EdgeToLife