объединение сетевых интерфейсов

Настройка, программирование, распределённые вычисления

Модераторы: Olej, bellic, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

объединение сетевых интерфейсов

Непрочитанное сообщение Olej » 26 дек 2021, 15:29

Linux Bonding
Драйвер bonding ядра linux обеспечивает метод агрегации нескольких сетевых интерфейсов в единый логический bonded интерфейс. Поведение агрегированных ("bonded") интерфейсов зависит от режима ("mode"). Проще говоря, режимы обеспечивают либо балансировку нагрузки, либо горячий резерв. Кроме того, может быть обеспечен контроль целостности.
bonding
Linux bonding — объединение сетевых интерфейсов в Linux

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Bonding - объединение сетевых интерфейсов

Непрочитанное сообщение Olej » 26 дек 2021, 15:33

Olej писал(а):
26 дек 2021, 15:29
Драйвер bonding ядра linux обеспечивает метод агрегации нескольких сетевых интерфейсов в единый логический bonded интерфейс.
В современных Linux это всё уже интегрировано "ис каропки":

Код: Выделить всё

root@R420:/lib/modules# uname -a
Linux R420 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

root@R420:/lib/modules/5.4.0-91-generic/kernel/drivers/net/bonding# pwd
/lib/modules/5.4.0-91-generic/kernel/drivers/net/bonding

root@R420:/lib/modules/5.4.0-91-generic/kernel/drivers/net/bonding# ls -l
итого 292
-rw-r--r-- 1 root root 295777 ноя  5 18:02 bonding.ko

Код: Выделить всё

root@R420:/lib/modules/5.4.0-91-generic/kernel/drivers/net/bonding# modprobe bonding

root@R420:/lib/modules/5.4.0-91-generic/kernel/drivers/net/bonding# lsmod | grep bond
bonding               167936  0

Код: Выделить всё

root@R420:/etc# modinfo bonding
filename:       /lib/modules/5.4.0-91-generic/kernel/drivers/net/bonding/bonding.ko
author:         Thomas Davis, tadavis@lbl.gov and many others
description:    Ethernet Channel Bonding Driver, v3.7.1
version:        3.7.1
license:        GPL
alias:          rtnl-link-bond
srcversion:     58CA5B5FF8B41DCC17DCB6B
depends:
retpoline:      Y
intree:         Y
name:           bonding
vermagic:       5.4.0-91-generic SMP mod_unload modversions
sig_id:         PKCS#7
signer:         Build time autogenerated kernel key
sig_key:        18:8C:BE:F0:31:4B:0B:E0:E3:F8:76:71:AC:C9:6E:FF:B4:AB:57:F1
sig_hashalgo:   sha512
signature:      44:BB:73:4F:75:5B:72:73:85:A2:3D:81:FD:38:97:B3:B5:F6:0A:D8:
        12:40:59:53:3E:FA:86:7B:30:47:96:83:10:42:CB:BB:6F:24:E7:82:
        9F:83:89:B0:7E:53:27:94:06:FD:91:5D:E0:3C:20:22:5B:E9:56:15:
        B0:76:BE:EA:63:1B:7B:70:5A:22:AC:8B:6B:7B:F7:0E:DC:4B:A3:9A:
        2E:F3:93:64:EC:BB:03:20:ED:42:AB:B4:50:BF:19:8E:D3:FB:59:4A:
        CC:44:AB:46:2E:DA:91:52:38:0E:BA:AB:A9:33:39:BE:0B:1D:79:69:
        A7:48:02:11:AD:01:08:B9:A0:EA:54:F5:4B:E3:3B:B2:88:80:C2:FE:
        62:30:6D:D9:8D:99:4D:61:CA:6F:CB:82:F6:77:A1:89:B5:FD:1D:9E:
        FB:D7:BE:BB:28:8B:A7:E5:2C:FB:73:2C:F7:3F:24:B0:01:76:70:48:
        AE:6A:86:15:23:A5:A8:FD:5A:F3:F2:54:E5:30:87:97:8F:32:0D:44:
        B6:DA:8E:E5:3B:61:A8:45:4D:AB:FC:2E:38:D3:F8:E7:9C:EB:6D:4D:
        53:B3:0B:BC:EB:E5:64:1F:00:CB:C4:79:F3:19:A0:5A:F9:EC:EE:28:
        11:6E:1C:C2:9E:DE:B1:12:FA:1A:FB:3A:CA:2E:45:27:7A:64:ED:31:
        FD:96:3A:34:91:43:01:BB:14:5D:34:20:7C:A7:0D:50:EF:F2:9C:56:
        2F:6C:C8:31:F9:06:24:71:3B:81:5C:D9:E6:06:36:F8:FE:E0:AD:2B:
        12:DF:58:ED:0E:7F:AA:03:EF:B6:2A:57:97:6D:01:1E:D6:0C:46:E3:
        CC:65:66:8B:00:78:31:46:B0:DC:38:81:C3:A4:13:70:29:AF:B0:AA:
        D7:C2:11:F4:69:90:AC:5F:AE:D7:02:0F:B3:8A:8B:6C:D7:03:2F:52:
        91:C7:B5:E0:97:AC:18:36:37:E4:CE:16:88:DA:F7:A2:36:7F:F5:BA:
        D2:33:EB:77:06:DB:8D:ED:68:12:AB:24:71:01:72:CA:8C:C1:7E:9E:
        B1:81:E0:41:4B:A6:26:BF:28:12:19:A1:BE:F8:0B:7D:CD:49:2C:DE:
        53:1F:B1:E7:C1:AA:C9:DA:84:74:B0:98:DE:C6:30:DB:A6:5B:97:5F:
        D1:87:B3:04:0F:85:F5:E8:0A:C7:0E:E2:4A:24:6C:9E:AB:FB:12:48:
        38:A7:5D:75:B0:7E:5A:37:8E:D1:78:DA:B7:A2:E4:EC:79:B7:25:27:
        F2:A9:4E:25:25:DE:32:13:73:CA:75:EA:8C:EB:31:EC:2B:AD:DF:A2:
        4E:D9:77:16:E8:2F:A5:75:E7:35:EE:63
parm:           max_bonds:Max number of bonded devices (int)
parm:           tx_queues:Max number of transmit queues (default = 16) (int)
parm:           num_grat_arp:Number of peer notifications to send on failover event (alias of num_unsol_na) (int)
parm:           num_unsol_na:Number of peer notifications to send on failover event (alias of num_grat_arp) (int)
parm:           miimon:Link check interval in milliseconds (int)
parm:           updelay:Delay before considering link up, in milliseconds (int)
parm:           downdelay:Delay before considering link down, in milliseconds (int)
parm:           use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int)
parm:           mode:Mode of operation; 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp)
parm:           primary:Primary network device to use (charp)
parm:           primary_reselect:Reselect primary slave once it comes up; 0 for always (default), 1 for only if speed of primary is better, 2 for only on active slave failure (charp)
parm:           lacp_rate:LACPDU tx rate to request from 802.3ad partner; 0 for slow, 1 for fast (charp)
parm:           ad_select:802.3ad aggregation selection logic; 0 for stable (default), 1 for bandwidth, 2 for count (charp)
parm:           min_links:Minimum number of available links before turning on carrier (int)
parm:           xmit_hash_policy:balance-alb, balance-tlb, balance-xor, 802.3ad hashing method; 0 for layer 2 (default), 1 for layer 3+4, 2 for layer 2+3, 3 for encap layer 2+3, 4 for encap layer 3+4 (charp)
parm:           arp_interval:arp interval in milliseconds (int)
parm:           arp_ip_target:arp targets in n.n.n.n form (array of charp)
parm:           arp_validate:validate src/dst of ARP probes; 0 for none (default), 1 for active, 2 for backup, 3 for all (charp)
parm:           arp_all_targets:fail on any/all arp targets timeout; 0 for any (default), 1 for all (charp)
parm:           fail_over_mac:For active-backup, do not set all slaves to the same MAC; 0 for none (default), 1 for active, 2 for follow (charp)
parm:           all_slaves_active:Keep all frames received on an interface by setting active flag for all slaves; 0 for never (default), 1 for always. (int)
parm:           resend_igmp:Number of IGMP membership reports to send on link failure (int)
parm:           packets_per_slave:Packets to send per slave in balance-rr mode; 0 for a random slave, 1 packet per slave (default), >1 packets per slave. (int)
parm:           lp_interval:The number of seconds between instances where the bonding driver sends learning packets to each slaves peer switch. The default is 1. (uint)      

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Bonding - объединение сетевых интерфейсов

Непрочитанное сообщение Olej » 26 дек 2021, 15:50

Olej писал(а):
26 дек 2021, 15:29
Linux Bonding
Соберите и установите новое ядро и модули, после этого можно приступать к инсталляции ifenslave.
Установка ifenslave
Утилита контроля доступа ifenslave включена в дерево исходников ядра, в файле Documentation/networking/ifenslave.c. Рекомендовано использовать ifenslave соответсвующей версии ядра (из того же дерева исходиников или официального дистрибутива), однако старые версии ifenslave также должны работать (без функциональности новых версий). Запуск ifenslave новее чем ядро не поддерживается, хотя может и работать.
Это всё из старых описаний...
Сейчас всё гораздо проще :lol: :

Код: Выделить всё

olej@R420:~$ which ifenslave

olej@R420:~$ ifenslave
Команда «ifenslave» не найдена, но может быть установлена с помощью:
sudo apt install ifenslave

Код: Выделить всё

olej@R420:~$ sudo apt install ifenslave
[sudo] пароль для olej:
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Следующие НОВЫЕ пакеты будут установлены:
  ifenslave
Обновлено 0 пакетов, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 13,3 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 49,2 kB.
Пол:1 http://ubuntu.org.ua/ubuntu focal/universe amd64 ifenslave all 2.9ubuntu1 [13,3 kB]
Получено 13,3 kB за 0с (130 kB/s)
Выбор ранее не выбранного пакета ifenslave.
(Чтение базы данных … на данный момент установлено 401723 файла и каталога.)
Подготовка к распаковке …/ifenslave_2.9ubuntu1_all.deb …
Распаковывается ifenslave (2.9ubuntu1) …
Настраивается пакет ifenslave (2.9ubuntu1) …
Обрабатываются триггеры для man-db (2.9.1-1) …

Код: Выделить всё

olej@R420:~$ which ifenslave
/usr/sbin/ifenslave

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Bonding - объединение сетевых интерфейсов

Непрочитанное сообщение Olej » 26 дек 2021, 15:57

Olej писал(а):
26 дек 2021, 15:50
Установка ifenslave
Но меня интересовало: можно ли организовать bond-интерфейс средствами Network Manager?
Да:
Снимок экрана от 2021-12-24 00-28-38.png
Снимок экрана от 2021-12-24 00-28-38.png (55.74 КБ) 1169 просмотров
Снимок экрана от 2021-12-26 14-48-49.png
Снимок экрана от 2021-12-26 14-48-49.png (38.53 КБ) 1169 просмотров
Но переключаюсь вручную:
ДО переключения:

Код: Выделить всё

olej@R420:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 90:b1:1c:54:3a:46 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.14/24 brd 192.168.1.255 scope global noprefixroute eno1
       valid_lft forever preferred_lft forever
3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 90:b1:1c:54:3a:46 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.13/24 brd 192.168.1.255 scope global noprefixroute eno2
       valid_lft forever preferred_lft forever
4: bond0: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether a2:1d:84:99:a2:4d brd ff:ff:ff:ff:ff:ff
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:94:fe:47:57 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
ПОСЛЕ переключения:

Код: Выделить всё

olej@R420:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 90:b1:1c:54:3a:47 brd ff:ff:ff:ff:ff:ff
3: eno2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 90:b1:1c:54:3a:47 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 90:b1:1c:54:3a:47 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/16 brd 192.168.255.255 scope global dynamic noprefixroute bond0
       valid_lft 71992sec preferred_lft 71992sec
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:94:fe:47:57 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
"Почувствуйте разницу!" :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: объединение сетевых интерфейсов

Непрочитанное сообщение Olej » 26 дек 2021, 17:06

Olej писал(а):
26 дек 2021, 15:29
Драйвер bonding ядра linux обеспечивает метод агрегации нескольких сетевых интерфейсов в единый логический bonded интерфейс.
Другой, более поздний, как мне кажется, способ агрегирования интерфейсов - Teaming ... LACP :
Link Aggregation Control Protocol (LACP) — протокол, предназначенный для объединения нескольких физических каналов в один логический в сетях Ethernet.
Teaming - новый механизм создания агрегированных линков в Linux, более архитектурно правильны. Состоит из ядерной части, которая реализует базовые механизмы обработки трафика, и части пространства пользователя, которая отвечает за сигнализацию и управление ядерной частью.
Там же описан один из способов конфигурирования и запуска.
Проверим попутно готовность ядра нашей сборки к использованию этой возможности:

Код: Выделить всё

olej@R420:~/2021/R420.tech/R420.hardware$ cat /boot/config-`uname -r` | grep CONFIG_NET_TEAM
CONFIG_NET_TEAM=m
CONFIG_NET_TEAM_MODE_BROADCAST=m
CONFIG_NET_TEAM_MODE_ROUNDROBIN=m
CONFIG_NET_TEAM_MODE_RANDOM=m
CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
CONFIG_NET_TEAM_MODE_LOADBALANCE=m
ОК

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: объединение сетевых интерфейсов

Непрочитанное сообщение Olej » 26 дек 2021, 17:14

Olej писал(а):
26 дек 2021, 17:06
Там же описан один из способов конфигурирования и запуска.
+
Ручное конфигурирование teamd описано: Объединение сетевых интерфейсов в CentOS с помощью teamd
Обновлено и опубликовано Опубликовано: 20.08.2019
Здесь же описаны режимы которые могут использоваться:
lacp Объединение сетевых интерфейсов с помощью протокола LACP (802.3ad).
broadcast Весь трафик идет через все порты.
roundrobin Трафик идет через все интерфейсы поочередно в случайном порядке.
loadbalance Равномерное распределение трафика между всеми интерфейсами.
activebackup Используется только один интерфейс. Остальные подключаются, при недоступности основного в соответствии с выставленными приоритетами.
+ Конфигурирование с помощью CLI NetworkManager описано здесь: Interface (NICs) Bonding in Linux using nmcli
By Arun Pariyar
Updated March 18, 2021

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: объединение сетевых интерфейсов

Непрочитанное сообщение Olej » 26 дек 2021, 17:17

Olej писал(а):
26 дек 2021, 17:06
ОК

Код: Выделить всё

olej@R420:~$ apt show libteam-utils
Package: libteam-utils
Version: 1.30-1
Priority: optional
Section: universe/net
Source: libteam
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Dmitry Smirnov <onlyjob@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 299 kB
Provides: teamd
Depends: libc6 (>= 2.15), libdaemon0 (>= 0.14), libdbus-1-3 (>= 1.9.14), libjansson4 (>= 2.3), libteam5 (>= 1.23), libteamdctl0 (>= 1.9)
Homepage: http://libteam.org
Download-Size: 81,5 kB
APT-Manual-Installed: yes
APT-Sources: http://ubuntu.org.ua/ubuntu focal/universe amd64 Packages
Description: library for controlling team network device -- userspace utilities
 Libteam provides a mechanism to team multiple NICs (ports) at OSI Layer 2
 (Data link) into a single virtual NIC. The process is called "channel
 bonding", "Ethernet bonding", "channel teaming", "link aggregation", etc.
 This is already implemented in the Linux kernel by the bonding driver but
 unlike the bonding driver, libteam (user space) has the following
 additional features:
  * load-balancing for LACP support
  * NS/NA (IPV6) link monitoring
  * port priorities and stickiness ("primary" option enhancement)
  * separate per-port link monitoring setup
 .
 Libteam requires Linux kernel 3.3 or higher.
 .
 This package provies user-space counterpart for team network driver.

Код: Выделить всё

olej@R420:~/2021/R420.tech/R420.hardware$ sudo apt install libteam-utils
[sudo] пароль для olej:
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  libnl-cli-3-200 libnl-nf-3-200 libteam5
Следующие НОВЫЕ пакеты будут установлены:
  libnl-cli-3-200 libnl-nf-3-200 libteam-utils libteam5
Обновлено 0 пакетов, установлено 4 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 157 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 752 kB.
Хотите продолжить? [Д/н] y
Пол:1 http://ubuntu.org.ua/ubuntu focal/main amd64 libnl-nf-3-200 amd64 3.4.0-1 [28,7 kB]
Пол:2 http://ubuntu.org.ua/ubuntu focal/main amd64 libnl-cli-3-200 amd64 3.4.0-1 [22,9 kB]
Пол:3 http://ubuntu.org.ua/ubuntu focal/main amd64 libteam5 amd64 1.30-1 [23,7 kB]
Пол:4 http://ubuntu.org.ua/ubuntu focal/universe amd64 libteam-utils amd64 1.30-1 [81,5 kB]
Получено 157 kB за 0с (857 kB/s)
Выбор ранее не выбранного пакета libnl-nf-3-200:amd64.
(Чтение базы данных … на данный момент установлено 409084 файла и каталога.)
Подготовка к распаковке …/libnl-nf-3-200_3.4.0-1_amd64.deb …
Распаковывается libnl-nf-3-200:amd64 (3.4.0-1) …
Выбор ранее не выбранного пакета libnl-cli-3-200:amd64.
Подготовка к распаковке …/libnl-cli-3-200_3.4.0-1_amd64.deb …
Распаковывается libnl-cli-3-200:amd64 (3.4.0-1) …
Выбор ранее не выбранного пакета libteam5:amd64.
Подготовка к распаковке …/libteam5_1.30-1_amd64.deb …
Распаковывается libteam5:amd64 (1.30-1) …
Выбор ранее не выбранного пакета libteam-utils.
Подготовка к распаковке …/libteam-utils_1.30-1_amd64.deb …
Распаковывается libteam-utils (1.30-1) …
Настраивается пакет libnl-nf-3-200:amd64 (3.4.0-1) …
Настраивается пакет libnl-cli-3-200:amd64 (3.4.0-1) …
Настраивается пакет libteam5:amd64 (1.30-1) …
Настраивается пакет libteam-utils (1.30-1) …
Обрабатываются триггеры для libc-bin (2.31-0ubuntu9.2) …
Обрабатываются триггеры для man-db (2.9.1-1) …
Обрабатываются триггеры для dbus (1.12.16-2ubuntu2.1) …

Код: Выделить всё

olej@R420:~$ apt content libteam-utils
/.
/etc
/etc/dbus-1
/etc/dbus-1/system.d
/etc/dbus-1/system.d/teamd.conf
/usr
/usr/bin
/usr/bin/bond2team
/usr/bin/teamd
/usr/bin/teamdctl
/usr/bin/teamnl
/usr/share
/usr/share/doc
/usr/share/doc/libteam-utils
/usr/share/doc/libteam-utils/changelog.Debian.gz
/usr/share/doc/libteam-utils/copyright
/usr/share/doc/libteam-utils/examples
/usr/share/doc/libteam-utils/examples/activebackup_arp_ping_1.conf
/usr/share/doc/libteam-utils/examples/activebackup_arp_ping_2.conf
/usr/share/doc/libteam-utils/examples/activebackup_ethtool_1.conf
/usr/share/doc/libteam-utils/examples/activebackup_ethtool_2.conf
/usr/share/doc/libteam-utils/examples/activebackup_ethtool_3.conf
/usr/share/doc/libteam-utils/examples/activebackup_multi_lw_1.conf
/usr/share/doc/libteam-utils/examples/activebackup_nsna_ping_1.conf
/usr/share/doc/libteam-utils/examples/activebackup_tipc.conf
/usr/share/doc/libteam-utils/examples/broadcast.conf
/usr/share/doc/libteam-utils/examples/lacp_1.conf
/usr/share/doc/libteam-utils/examples/loadbalance_1.conf
/usr/share/doc/libteam-utils/examples/loadbalance_2.conf
/usr/share/doc/libteam-utils/examples/loadbalance_3.conf
/usr/share/doc/libteam-utils/examples/random.conf
/usr/share/doc/libteam-utils/examples/roundrobin_2.conf
/usr/share/doc/libteam-utils/examples/roundrobin.conf
/usr/share/doc/libteam-utils/HOWTO.BASICS
/usr/share/doc/libteam-utils/README
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/bond2team.1.gz
/usr/share/man/man5
/usr/share/man/man5/teamd.conf.5.gz
/usr/share/man/man8
/usr/share/man/man8/teamd.8.gz
/usr/share/man/man8/teamdctl.8.gz
/usr/share/man/man8/teamnl.8.gz

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: объединение сетевых интерфейсов

Непрочитанное сообщение Olej » 26 дек 2021, 17:29

Olej писал(а):
26 дек 2021, 17:14
Конфигурирование с помощью CLI NetworkManager

Код: Выделить всё

root@R420:~# nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name":"lacp"}}'
Соединение «team0» (2f8b422e-da75-49cb-8254-0dd7b070fa6b) добавлено.

root@R420:~# ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 90:b1:1c:54:3a:46 brd ff:ff:ff:ff:ff:ff
3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 90:b1:1c:54:3a:46 brd ff:ff:ff:ff:ff:ff
4: bond0: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 90:b1:1c:54:3a:47 brd ff:ff:ff:ff:ff:ff
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default 
    link/ether 02:42:94:fe:47:57 brd ff:ff:ff:ff:ff:ff
6: team0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether d2:dd:01:c6:8d:31 brd ff:ff:ff:ff:ff:ff

Код: Выделить всё

olej@R420:~$ nmcli con show
NAME                                UUID                                  TYPE      DEVICE  
team0                               2f8b422e-da75-49cb-8254-0dd7b070fa6b  team      team0   
ENO2                                ca31fe4b-1dd8-38e9-aeb8-a591ee04d948  ethernet  eno2    
docker0                             ffc971e6-bbeb-4225-a0b7-6e12dff63f75  bridge    docker0 
ENO1                                e8381607-e222-44f3-91bb-9622340705a3  ethernet  eno1    
Агрегированное соединение (bond) 1  b360a7d9-2098-4824-8843-42e81697e889  bond      bond0   
bond0 слейв 1                       86c69151-2644-4860-81dd-f2a1f63ba7cf  ethernet  --      
bond0 слейв 2                       3cc68448-3554-42ae-8631-43c8a889841f  ethernet  --      
DHCP                                0c43f043-41fd-324c-8fe4-529b4b2c5924  ethernet  --      
linksys                             486f4750-aa7e-48b1-920d-d78278069f16  wifi      --      
zs                                  507092cf-ef96-4b94-8ec4-dc369ed30f23  vpn       --      

Код: Выделить всё

root@R420:~# nmcli con add type team-slave con-name team0-port1 ifname eno1 master team0
Соединение «team0-port1» (9b3233ed-67de-4c10-a7db-5655ca22a32f) добавлено.

root@R420:~# nmcli con add type team-slave con-name team0-port2 ifname eno2 master team0
Соединение «team0-port2» (24728e8d-f8d0-461d-bf20-4992bd7f03ef) добавлено.

Код: Выделить всё

olej@R420:~$ nmcli con show
NAME                                UUID                                  TYPE      DEVICE  
team0                               2f8b422e-da75-49cb-8254-0dd7b070fa6b  team      team0   
ENO2                                ca31fe4b-1dd8-38e9-aeb8-a591ee04d948  ethernet  eno2    
docker0                             ffc971e6-bbeb-4225-a0b7-6e12dff63f75  bridge    docker0 
ENO1                                e8381607-e222-44f3-91bb-9622340705a3  ethernet  eno1    
Агрегированное соединение (bond) 1  b360a7d9-2098-4824-8843-42e81697e889  bond      bond0   
bond0 слейв 1                       86c69151-2644-4860-81dd-f2a1f63ba7cf  ethernet  --      
bond0 слейв 2                       3cc68448-3554-42ae-8631-43c8a889841f  ethernet  --      
DHCP                                0c43f043-41fd-324c-8fe4-529b4b2c5924  ethernet  --      
linksys                             486f4750-aa7e-48b1-920d-d78278069f16  wifi      --      
team0-port1                         9b3233ed-67de-4c10-a7db-5655ca22a32f  ethernet  --      
team0-port2                         24728e8d-f8d0-461d-bf20-4992bd7f03ef  ethernet  --      
zs                                  507092cf-ef96-4b94-8ec4-dc369ed30f23  vpn       --      

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: объединение сетевых интерфейсов

Непрочитанное сообщение Olej » 28 дек 2021, 21:48

Olej писал(а):
26 дек 2021, 17:14
Конфигурирование с помощью CLI NetworkManager
В точности таким образом создать агрегацию у меня не получилось ... т.е. получилось, но интерфейс не активный, не пингуется...
Но получилось 50/50 используя CLI & GUI Network Manager:

Код: Выделить всё

root@R420:~# nmcli con add type team-slave con-name team0-port1 ifname eno1 master team1
Внимание: master='team1' не относится к существующему профилю.
Соединение «team0-port1» (a6ea3fbe-6c92-43ab-b846-94def7842382) добавлено.

root@R420:~# nmcli con add type team-slave con-name team0-port2 ifname eno2 master team1
Внимание: master='team1' не относится к существующему профилю.
Соединение «team0-port2» (aafa0e2f-3a6c-4c9a-a307-8894874a4882) добавлено.
Создаю в GUI интерфейс типа Team:
Снимок экрана от 2021-12-28 20-42-14.png
Снимок экрана от 2021-12-28 20-42-14.png (36.24 КБ) 1155 просмотров
в нём "Дополненительно":
Снимок экрана от 2021-12-28 20-44-25.png
Снимок экрана от 2021-12-28 20-44-25.png (49.36 КБ) 1155 просмотров
Результат:

Код: Выделить всё

olej@R420:~/2021/R420.tech/R420.net$ nmcli con sho
NAME                                 UUID                                  TYPE      DEVICE          
team_1                               938e8a82-82be-472a-a828-5a3457e0acac  team      team1           
Автоматически настроить linksys      b4d99ae9-e5fe-4a96-b309-811626b695a3  wifi      wlx008736005357 
team0-port1                          a6ea3fbe-6c92-43ab-b846-94def7842382  ethernet  eno1            
team0-port2                          aafa0e2f-3a6c-4c9a-a307-8894874a4882  ethernet  eno2            
eno1                                 e8381607-e222-44f3-91bb-9622340705a3  ethernet  --              
eno2                                 ca31fe4b-1dd8-38e9-aeb8-a591ee04d948  ethernet  --              
Автоматически настроить TP-LINK_WPA  38876ff9-68d1-4a28-a04a-8c69e1092ec7  wifi      --              

Код: Выделить всё

root@R420:~# teamnl team1 ports
 3: eno2: up 100Mbit FD 
 2: eno1: up 100Mbit FD 

Код: Выделить всё

root@R420:~# teamnl team1 getoption mode
loadbalance

Код: Выделить всё

root@R420:~# teamdctl team1 state
setup:
  runner: loadbalance
ports:
  eno1
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
  eno2
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
Проверка:

Код: Выделить всё

olej@R420:~$ route -n
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0         192.168.1.3     0.0.0.0         UG    350    0        0 team1
0.0.0.0         192.168.1.3     0.0.0.0         UG    600    0        0 wlx008736005357
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.0.0     0.0.0.0         255.255.0.0     U     350    0        0 team1
192.168.0.0     0.0.0.0         255.255.0.0     U     600    0        0 wlx008736005357

Код: Выделить всё

olej@R420:~/2021/R420.tech/R420.net$ ping -Iteam1 -c3 192.168.1.3
PING 192.168.1.3 (192.168.1.3) from 192.168.1.98 team1: 56(84) bytes of data.
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=3.74 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=3.79 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=3.58 ms

--- 192.168.1.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 3.579/3.702/3.792/0.090 ms

Код: Выделить всё

olej@R420:~/2021/R420.tech/R420.net$ ping -Iteam1 -c3 1.1.1.1
PING 1.1.1.1 (1.1.1.1) from 192.168.1.98 team1: 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=57 time=15.0 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=57 time=13.7 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=57 time=17.7 ms

--- 1.1.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 13.685/15.461/17.746/1.696 ms

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: объединение сетевых интерфейсов

Непрочитанное сообщение Olej » 28 дек 2021, 22:08

Olej писал(а):
28 дек 2021, 21:48
Проверка:

Код: Выделить всё

root@R420:~# nmcli con sho --active
NAME                             UUID                                  TYPE      DEVICE
team_1                           938e8a82-82be-472a-a828-5a3457e0acac  team      team1
Автоматически настроить linksys  b4d99ae9-e5fe-4a96-b309-811626b695a3  wifi      wlx008736005357
team0-port1                      a6ea3fbe-6c92-43ab-b846-94def7842382  ethernet  eno1
team0-port2                      aafa0e2f-3a6c-4c9a-a307-8894874a4882  ethernet  eno2
Останавливаю WiFi интерфейс, оставляю один агрегированный team_1 ...

Код: Выделить всё

root@R420:~# nmcli con down 'Автоматически настроить linksys'
Соединение 'Автоматически настроить linksys' успешно выключено (Активный путь DBus: /org/freedesktop/NetworkManager/ActiveConnection/10)

Код: Выделить всё

root@R420:~# nmcli con sho --active
NAME                                 UUID                                  TYPE      DEVICE
team_1                               938e8a82-82be-472a-a828-5a3457e0acac  team      team1
Автоматически настроить TP-LINK_WPA  38876ff9-68d1-4a28-a04a-8c69e1092ec7  wifi      wlx008736005357
team0-port1                          a6ea3fbe-6c92-43ab-b846-94def7842382  ethernet  eno1
team0-port2                          aafa0e2f-3a6c-4c9a-a307-8894874a4882  ethernet  eno2
Консольное определение скорости Интернет:

Код: Выделить всё

olej@R420:~/2021/R420.tech/R420.net$ speedtest-cli
Retrieving speedtest.net configuration...
Testing from Radio-Link LLC (193.28.177.65)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by LLC "BSTK" (Belgorod) [72.92 km]: 15.813 ms
Testing download speed................................................................................
Download: 35.73 Mbit/s
Testing upload speed......................................................................................................
Upload: 39.11 Mbit/s
(вообще то, скорость у меня ограничивается секцией LAN через PowerLine, поэтому это особенно показательно)

P.S. Любопытно, что интерфейсы ходят в Интернет через совершенно разные физические каналы и разных провайдеров: team0-port1 - это оптоволоконный GPON, а team0-port1 - это телефонный ADSL2.

Ответить

Вернуться в «Сети»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей