Linux

在linux上創建20多個VXLAN介面

  • February 10, 2017

如何在 Ubuntu/Debian 中創建 20 多個 vxlan 介面?

  • 在 Linux 核心 3.16 中,我發現我可以創建 20 多個 vxlan 介面,但它們無法正常工作,因為發送 arp 消息不起作用。
  • 在 Linux Kernel 4.4 創建第 21 個介面時,我收到此錯誤消息“ RTNETLINK answers: No buffer space available

我已經通過創建一個在新的 ubuntu 14.04 和 16.04 上創建介面的小 shell 腳本對此進行了測試,也在 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 多個 vxlan:

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

如果您希望此更改在重新啟動後保持不變,則需要將以下程式碼段添加到 /etc/sysctl.conf 或 /etc/sysctl.d/:

net.ipv4.igmp_max_memberships = 100

我們一直在廣泛使用多播 vxlan,在單個節點中有 200 多個,igmp_max_memberships設置為 400…

除了很多 igmp 報告之外,事情往往會給可以做到這一點的交換機上的 igmp 窺探問題。

因此,我們每 256 個新 vxlan 創建一個新組,通過 vni 分隔租戶。

YMMV,但偵聽是限制多播廣播域的好方法,即使在具有有限偵聽表的 elcheapo 交換機上也是如此。無論如何,vni 欄位是 16 位,因此您可以輕鬆地將 65535 個 vxlan 放入一個 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

引用自:https://serverfault.com/questions/819267