Назад | Перейти на главную страницу

Создание более 20 интерфейсов VXLAN на Linux

Как я могу создать более 20 интерфейсов vxlan в Ubuntu / Debian?

Я проверил это, создав небольшой сценарий оболочки, который создает интерфейсы на свежих версиях ubuntu 14.04 и 16.04, также протестировал это на Debian 8.

Скрипт testvxlan.sh выглядит так:

#!/bin/bash

for i in {1..30}
do
    echo "Setting up interface br0.$i"
    ip link add br0.$i type vxlan id $i group 239.0.0.$i dev eth0 dstport 4789
    ip addr add 192.168.$i.1/24 dev br0.$i
    ip link set dev br0.$i up
    #ip link delete br0.$i
done

при запуске на свежем Ubuntu 16.04 это выглядит так:

root@ubuntu-xenial:~# ./testvxlan.sh
Setting up interface br0.1
Setting up interface br0.2
Setting up interface br0.3
Setting up interface br0.4
Setting up interface br0.5
Setting up interface br0.6
Setting up interface br0.7
Setting up interface br0.8
Setting up interface br0.9
Setting up interface br0.10
Setting up interface br0.11
Setting up interface br0.12
Setting up interface br0.13
Setting up interface br0.14
Setting up interface br0.15
Setting up interface br0.16
Setting up interface br0.17
Setting up interface br0.18
Setting up interface br0.19
Setting up interface br0.20
Setting up interface br0.21
RTNETLINK answers: No buffer space available
Setting up interface br0.22
RTNETLINK answers: No buffer space available
Setting up interface br0.23
RTNETLINK answers: No buffer space available
Setting up interface br0.24
RTNETLINK answers: No buffer space available
Setting up interface br0.25
RTNETLINK answers: No buffer space available
Setting up interface br0.26
RTNETLINK answers: No buffer space available
Setting up interface br0.27
RTNETLINK answers: No buffer space available
Setting up interface br0.28
RTNETLINK answers: No buffer space available
Setting up interface br0.29
RTNETLINK answers: No buffer space available
Setting up interface br0.30
RTNETLINK answers: No buffer space available

Как я могу увеличить это буферное пространство или это вообще возможно?

Поскольку вы используете многоадресные vxlan, ограничение на самом деле является максимальным количеством участников IGMP:

[root@cpu1 ~]# cat /proc/sys/net/ipv4/igmp_max_memberships 
20

Вы можете поднять этот лимит и получить более 20 vxlans:

[root@cpu1 ~]# echo 100 >/proc/sys/net/ipv4/igmp_max_memberships

Если вы хотите, чтобы это изменение сохранялось при перезагрузке, вам необходимо добавить следующий фрагмент в ваш /etc/sysctl.conf или /etc/sysctl.d/:

net.ipv4.igmp_max_memberships = 100

Мы много работали с многоадресными vxlans, имеющими 200+ в одном узле, с igmp_max_memberships установлен на 400 ...

Помимо множества отчетов igmp, некоторые вещи имели тенденцию вызывать проблемы с отслеживанием igmp на коммутаторах, которые могут это делать.

Поэтому мы создавали новую группу каждые 256 новых vxlans, разделяя арендаторов по vni.

YMMV, но отслеживание - это хороший способ ограничить домен многоадресной рассылки, даже на коммутаторах elcheapo, которые имеют ограниченную таблицу отслеживания. в любом случае поле vni имеет размер 16 бит, поэтому вы можете легко разместить 65535 vxlans в одной группе MC.

for grp in `seq 1 4` ; do
   for vni in `seq 1 64` ; do
      echo ip link add vx-`printf "%04x" $(($grp*$vni))` type vxlan id $vni group 239.0.1.$grp dev bkpln dstport 4789
   done
done | sh -x