1

Я создал linux-мост br0 и создал пару veth 1023, чтобы один конец был подключен к мосту, а другой - к netns с IP-адресом. Теперь я пытаюсь пропинговать все интерфейсы, которые подключены к br0 , но я могу пропинговать только 1001 интерфейс. STP отключен в br0 а IP-адрес br0 равен 172.17.0.1 .

number=1
total_veth=1023
a=2
b=0
while [ $number -le $total_veth ]
do
  name="test${number}"
  if [ $a -gt 255 ]
  then
    a=0
    b=$(($b + 1))
  fi
  IP=172.17.$b.$a
  ip link add dev veth_b$number type veth peer name veth_e$number
  brctl addif br0 veth_b$number
  ip link set veth_b$number up
  ip netns add test$number
  ip link set veth_e$number netns test$number
  ip netns exec test$number ifconfig veth_e$number $IP/16 up 
  ip netns exec test$number route add default gw 172.17.0.1 veth_e$number
  a=$((a+1))
  echo "$number:$IP"
  number=$(($number+1))
done

Когда я удаляю 22 интерфейса из моста, я могу пропинговать все 1001 интерфейсы. Это показывает, что в бридже есть добрый предел, может кто-нибудь помочь мне понять, что здесь происходит. Благодарю.

2 ответа2

1

Увеличение входной очереди с помощью echo 'net.core.netdev_max_backlog = 1024' >> /etc/sysctl.conf решает проблему, поскольку размер входной очереди по умолчанию для ядра равен 1000, и поэтому я могу достичь только 1001 контейнера не для всех.

0

Вы достигли лимита BR_MAX_PORTS. Просто создайте второй мост и соедините два моста вместе. Смотрите здесь для более подробной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .