Documents correspondants (peu ou prou la même chose a priori) : https://wiki.linuxfoundation.org/networking/bonding https://www.kernel.org/doc/Documentation/networking/bonding.txt tmux (panneau A gauche sur toute la hauteur, panneau B 1/4 supérieur droit, panneau C 3/4 inférieur droit) PANNEAU A : watch -t -n 1 -dp cat /proc/net/bonding/enobond0 PANNEAU B : watch -t -n 1 -dp ethtool enobond0 PANNEAU C : ping 1.1.1.1 1) SANS config LAG sur Cisco 2) AVEC config LAG sur Cisco, SANS LACP 3) " " " AVEC LACP 1) La configuration a fonctionné (au moins en mode "failover") avec 2 câbles (dont un avec seulement 2 paires de fils, d'où une vitesse de 100 Mbits, remplacé plus tard par un câble "complet") branchés sur un Cisco SG300 sur des ports SANS configuration (LAG) spécifique ; # cat /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity' network: bonds: enobond0: dhcp4: true dhcp6: true interfaces: - eno1 - eno2 parameters: mode: 802.3ad transmit-hash-policy: layer3+4 mii-monitor-interval: 50 ethernets: eno1: {} eno2: {} version: 2 2) Plus tard j'ai réuni les 2 ports du Cisco dans un LAG (en oubliant involontairement de cocher l'option LACP qui semble ne pas pouvoir être modifiée par la suite) : Fonctionnement PARTIEL ! - récupération d'une adresse IPv4 via DHCP - récupération d'une adresse IPv4 via Router Advertiser (je suppose) - le ping IPv4 NE marche PAS (dans aucune direction) - les communications TCP sur IPv4 NE marchent PAS - en revanche ping ET communications TCP sur IPv6 marchent ! # ip -d a s enobond0 # NOTER la valeur (tout à 0) de ad_partner_mac 4: enobond0: mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 2e:1b:e5:5c:71:2d brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 65535 bond mode 802.3ad miimon 50 updelay 0 downdelay 0 peer_notify_delay 0 use_carrier 1 arp_interval 0 arp_validate none arp_all_targets any primary_reselect always fail_over_mac none xmit_hash_policy layer3+4 resend_igmp 1 num_grat_arp 1 all_slaves_active 0 min_links 0 lp_interval 1 packets_per_slave 1 lacp_rate slow ad_select stable ad_aggregator 1 ad_num_ports 1 ad_actor_key 9 ad_partner_key 1 ad_partner_mac 00:00:00:00:00:00 tlb_dynamic_lb 1 numtxqueues 16 numrxqueues 16 gso_max_size 65536 gso_max_segs 65535 inet 192.168.6.129/24 brd 192.168.6.255 scope global dynamic enobond0 valid_lft 41132sec preferred_lft 41132sec inet6 2a01:e0a:4cc:c090:2c1b:e5ff:fe5c:712d/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 84332sec preferred_lft 84332sec inet6 fe80::2c1b:e5ff:fe5c:712d/64 scope link valid_lft forever preferred_lft forever # cat /proc/net/bonding/enobond0 # le résultat ci-dessous semble cohérent MAIS il est en réalité TRÈS incomplet ! Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer3+4 (1) MII Status: up MII Polling Interval (ms): 50 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 802.3ad info LACP rate: slow Min links: 0 Aggregator selection policy (ad_select): stable Slave Interface: eno2 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 3c:a8:2a:a0:7e:0d Slave queue ID: 0 Aggregator ID: 1 Actor Churn State: none Partner Churn State: churned Actor Churned Count: 0 Partner Churned Count: 1 Slave Interface: eno1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 3c:a8:2a:a0:7e:0c Slave queue ID: 0 Aggregator ID: 2 Actor Churn State: churned Partner Churn State: churned Actor Churned Count: 1 Partner Churned Count: 1 3) Comme IEEE 802.3ad est aussi appelé Link Aggregation Control Protocol (LACP), il est assez facile de comprendre que si l'option LACP n'a pas été cochée, cela ne peut pas fonctionner correctement. J'ai "recréé" le LAG sur le Cisco en pensant cette fois à cocher l'option LACP. Sans rien faire sur l'ordinateur, tout s'est mis à fonctionner immédiatement : # ip -d a s enobond0 # NOTER la valeur (e8:ed:f3:6f:ac:7c qui est une adresse MAC du switch Cisco SG300) de ad_partner_mac 4: enobond0: mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 2e:1b:e5:5c:71:2d brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 65535 bond mode 802.3ad miimon 50 updelay 0 downdelay 0 peer_notify_delay 0 use_carrier 1 arp_interval 0 arp_validate none arp_all_targets any primary_reselect always fail_over_mac none xmit_hash_policy layer3+4 resend_igmp 1 num_grat_arp 1 all_slaves_active 0 min_links 0 lp_interval 1 packets_per_slave 1 lacp_rate slow ad_select stable ad_aggregator 2 ad_num_ports 2 ad_actor_key 9 ad_partner_key 1002 ad_partner_mac e8:ed:f3:6f:ac:7c ad_actor_sys_prio 65535 ad_user_port_key 0 ad_actor_system 00:00:00:00:00:00 tlb_dynamic_lb 1 numtxqueues 16 numrxqueues 16 gso_max_size 65536 gso_max_segs 65535 inet 192.168.6.129/24 brd 192.168.6.255 scope global dynamic enobond0 valid_lft 33601sec preferred_lft 33601sec inet6 2a01:e0a:4cc:c090:2c1b:e5ff:fe5c:712d/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 86252sec preferred_lft 86252sec inet6 fe80::2c1b:e5ff:fe5c:712d/64 scope link valid_lft forever preferred_lft forever # cat /proc/net/bonding/enobond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer3+4 (1) MII Status: up MII Polling Interval (ms): 50 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 802.3ad info LACP rate: slow Min links: 0 Aggregator selection policy (ad_select): stable System priority: 65535 System MAC address: 2e:1b:e5:5c:71:2d Active Aggregator Info: Aggregator ID: 2 Number of ports: 2 Actor Key: 9 Partner Key: 1002 Partner Mac Address: e8:ed:f3:6f:ac:7c Slave Interface: eno2 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 3 Permanent HW addr: 3c:a8:2a:a0:7e:0d Slave queue ID: 0 Aggregator ID: 2 Actor Churn State: none Partner Churn State: none Actor Churned Count: 0 Partner Churned Count: 2 details actor lacp pdu: system priority: 65535 system mac address: 2e:1b:e5:5c:71:2d port key: 9 port priority: 255 port number: 1 port state: 61 details partner lacp pdu: system priority: 1 system mac address: e8:ed:f3:6f:ac:7c oper key: 1002 port priority: 1 port number: 52 port state: 61 Slave Interface: eno1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 3 Permanent HW addr: 3c:a8:2a:a0:7e:0c Slave queue ID: 0 Aggregator ID: 2 Actor Churn State: none Partner Churn State: none Actor Churned Count: 1 Partner Churned Count: 2 details actor lacp pdu: system priority: 65535 system mac address: 2e:1b:e5:5c:71:2d port key: 9 port priority: 255 port number: 2 port state: 61 details partner lacp pdu: system priority: 1 system mac address: e8:ed:f3:6f:ac:7c oper key: 1002 port priority: 1 port number: 51 port state: 61 # ethtool enobond0 Settings for enobond0: Supported ports: [ ] Supported link modes: Not reported Supported pause frame use: No Supports auto-negotiation: No Supported FEC modes: Not reported Advertised link modes: Not reported Advertised pause frame use: No Advertised auto-negotiation: No Advertised FEC modes: Not reported Speed: 2000Mb/s Duplex: Full Port: Other PHYAD: 0 Transceiver: internal Auto-negotiation: off Link detected: yes À NOTER, tout un autre de détails consultables dans : # ls /sys/class/net/ bonding_masters docker0 eno1 eno2 enobond0 lo lxcbr0 veth78e32a6 virbr0 virbr0-nic iperf3 montre une vitesse supérieure à 941 Mbits/sec (ce qui correspondant à du gigabit) bond mode 0 ?