Jump to content
Калькуляторы

Linux teaming, bonding и Cisco etherchannel

Имеется провайдерская Циска, от неё ко мне в сервер приходят два линка в LACP.

 

На сервере установлена CentOS 7 с ядром 4.8.

 

Проблема: когда на сервере настроен team-интерфейс, связи с Циской нет. А когда настроен bond-интерфейс, связь есть (причём при ручном опускании одного из линков корректно переходит на оставшийся).

 

Есть мизерная вероятность, что провайдер ошибся в настройках, но тогда неясно, почему bond0 с этой ошибкой отлично работает, а team0 не хочет.

Их ответ про наш team0:

у Вас криво работает lacp, либо вообще отключен. До нас не долетает ваш systemID/key, который должен отправлять нам сервер в LACPDU.

 

Настройки в обоих случаях простейшие, причём для team-интерфейса многократно проверенные:

 

/etc/sysconfig/network-scripts/ifcfg-team0

DEVICE=team0
DEVICETYPE=Team
ONBOOT=yes
DEFROUTE=yes
IPADDR=...
NETMASK=255.255.255.252
GATEWAY=...
TEAM_CONFIG='{"runner": {"name":"lacp"}, "link_watch": {"name": "ethtool"}}'

 

ifcfg-eno1

DEVICETYPE=TeamPort
ONBOOT=yes
DEVICE=eno1
NAME=eno1
TEAM_MASTER=team0
TEAM_PORT_CONFIG='{"prio": 100}'

 

ifcfg-eno2 аналогично:

DEVICETYPE=TeamPort
ONBOOT=yes
DEVICE=eno2
NAME=eno2
TEAM_MASTER=team0
TEAM_PORT_CONFIG='{"prio": 100}'

 

Для бондинга:

 

ifcfg-bond0:

DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
BONDING_OPTS="mode=4"

ONBOOT=yes
DEFROUTE=yes
BOOTPROTO=static
IPADDR=...
NETMASK=255.255.255.252
GATEWAY=...

 

ifcfg-eno1:

DEVICE=eno1
NAME=eno1

TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes

MASTER=bond0
SLAVE=yes

 

ifcfg-eno2:

DEVICE=eno2
NAME=eno2

TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes

MASTER=bond0
SLAVE=yes

 

Вопросы:

 

1) кто-нибудь сталкивался с несовместимостью LACP у libteam и Cisco? гугл по запросу "team0 lacp cisco" ничего не находит.

2) какие параметры советуете попробовать в ifcfg-team0?

Share this post


Link to post
Share on other sites

Что говорят:

nmcli con show

teamnl team0 ports

teamdctl team0 state

teamdctl team0 config dump

 

Ну и в:

systemctl status NetworkManager

должен быть teamd (с другими параметрами конечно)

CGroup: /system.slice/NetworkManager.service

|-673 /usr/sbin/NetworkManager --no-daemon

\-843 /usr/bin/teamd -o -n -U -D -t team0 -c {"runner": {"name": "roundrobin"}}

 

и конечно посмотреть в tcpdump - уходит ли LACP вообще, в сторону провайдера.

Share this post


Link to post
Share on other sites

На сервере установлена CentOS 7 с ядром 4.8.

Одно время сервер DL360 G5 на COS7 (ядро 3.10-229) включен был в стэк из цисок 3750-e.

Все взлетело сразу (настраивал через nmtui :) и работало (пока не сняли циски).

Теперь сервер включен в микротик sic! и с теми же настройками team0 все так же работает.

Может все таки попробовать на "родном" ядре от RedHat ?

Share this post


Link to post
Share on other sites

Что говорят:

nmcli con show

NetworkManager не используется.

teamnl team0 ports

4: eno0: up 1000Mbit FD.

7: eno1: up 1000Mbit FD.

teamdctl team0 state

setup:
 runner: lacp
ports:
 eno0
   link watches:
     link summary: up
     instance[link_watch_0]:
       name: ethtool
       link: up
       down count: 0
   runner:
     aggregator ID: 7, Selected
     selected: yes
     state: current
 eno1
   link watches:
     link summary: up
     instance[link_watch_0]:
       name: ethtool
       link: up
       down count: 0
   runner:                                       
     aggregator ID: 7, Selected                               
     selected: yes
     state: current

teamdctl team0 config dump

runner:
 active: yes
 fast rate: no
{
   "device": "team0",
   "link_watch": {
       "name": "ethtool"
   },
   "ports": {
       "eno1": {
           "prio": 100
       },
       "eno0": {
           "prio": 100
       }
   },
   "runner": {
       "name": "lacp",
       "tx_hash": [
           "eth",
           "ipv4",
           "ipv6"
       ]
   }
}

Ну и в:

systemctl status NetworkManager

должен быть teamd (с другими параметрами конечно)

CGroup: /system.slice/NetworkManager.service

|-673 /usr/sbin/NetworkManager --no-daemon

\-843 /usr/bin/teamd -o -n -U -D -t team0 -c {"runner": {"name": "roundrobin"}}

В запущенных процессах:

/usr/bin/teamd -U -D -o -t team0 -f /run/teamd/team0.conf

 

В выводе systemdctl:

sys-devices-virtual-net-team0.device

sys-subsystem-net-devices-team0.device

teamd@team0.service

system-teamd.slice

 

В /run/teamd/team0.conf:

{"runner": {"name":"lacp"}, "link_watch": {"name": "ethtool"}}

и конечно посмотреть в tcpdump - уходит ли LACP вообще, в сторону провайдера.

tcpdump -nei eno0/eno1 ether proto 0x8809 говорит, что уходят пакеты "... length 124: LACPv1, length 110" с MAC-адреса team0 на 01:80:C2:00:00:02

И видны такие же LACP-пакеты с чужого мак-адреса на этот же мак 01:80:C2:00:00:02.

Share this post


Link to post
Share on other sites

Думаю нужно взглянуть на пакеты в деталях:

SRV ~ # tcpdump -ni eth2 ether proto 0x8809 -vvv -e

dropped privs to tcpdump

tcpdump: listening on eth2, link-type EN10MB (Ethernet), capture size 262144 bytes

 

08:03:01.382606 40:b4:f0:7f:e3:84 > 01:80:c2:00:00:02, ethertype Slow Protocols (0x8809), length 124: LACPv1, length 110

Actor Information TLV (0x01), length 20

System 40:b4:f0:7f:e3:80, System Priority 127, Key 2, Port 8, Port Priority 127

State Flags [Activity, Aggregation, Synchronization, Collecting, Distributing]

0x0000: 007f 40b4 f07f e380 0002 007f 0008 3d00

0x0010: 0000

Partner Information TLV (0x02), length 20

System 90:e2:ba:7e:99:f8, System Priority 65535, Key 13, Port 1, Port Priority 255

State Flags [Activity, Aggregation, Synchronization, Collecting, Distributing]

0x0000: ffff 90e2 ba7e 99f8 000d 00ff 0001 3d00

0x0010: 0000

Collector Information TLV (0x03), length 16

Max Delay 0

0x0000: 0000 0000 0000 0000 0000 0000 0000

Terminator TLV (0x00), length 0 (=52)

0x0000: 0000 0000 0000 0000 0000 0000 0000 0000

0x0010: 0000 0000 0000 0000 0000 0000 0000 0000

0x0020: 0000 0000 0000 0000 0000 0000 0000 0000

0x0030: 0000

08:03:11.926850 90:e2:ba:7e:99:f8 > 01:80:c2:00:00:02, ethertype Slow Protocols (0x8809), length 124: LACPv1, length 110

Actor Information TLV (0x01), length 20

System 90:e2:ba:7e:99:f8, System Priority 65535, Key 13, Port 1, Port Priority 255

State Flags [Activity, Aggregation, Synchronization, Collecting, Distributing]

0x0000: ffff 90e2 ba7e 99f8 000d 00ff 0001 3d00

0x0010: 0000

Partner Information TLV (0x02), length 20

System 40:b4:f0:7f:e3:80, System Priority 127, Key 2, Port 8, Port Priority 127

State Flags [Activity, Aggregation, Synchronization, Collecting, Distributing]

0x0000: 007f 40b4 f07f e380 0002 007f 0008 3d00

0x0010: 0000

Collector Information TLV (0x03), length 16

Max Delay 0

0x0000: 0000 0000 0000 0000 0000 0000 0000

Terminator TLV (0x00), length 0 (=52)

0x0000: 0000 0000 0000 0000 0000 0000 0000 0000

0x0010: 0000 0000 0000 0000 0000 0000 0000 0000

0x0020: 0000 0000 0000 0000 0000 0000 0000 0000

0x0030: 0000

Это у меня, но уже работающий LACP

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.