Рейтинг:0

Туннельные пакеты фильтруются или удаляются, а также некоторые пакеты, такие как BGP.

флаг us

Я пытался понять это уже довольно давно. Так что теперь я попытаю счастья здесь...

У меня есть несколько виртуальных машин, которые должны взаимодействовать с не виртуальными машинами. Есть 2 варианта использования.

Первые — это BareMetal Machines в подсети, в которой находится внешний маршрутизатор. Вторые — это машины снаружи и позади шлюза, на который указывает внешний маршрутизатор.

Итак, у нас есть два пути подключения:

ВМ --> шлюз внешнего маршрутизатора --> интернет-шлюз --> шлюз в другом месте --> другой компьютер в этой подсети

ВМ --> шлюз внешнего маршрутизатора --> интернет-шлюз --> компьютер без операционной системы в этой подсети

Итак, чтобы сделать это еще более наглядным: внешний маршрутизатор будет иметь шлюз, например, 10.5.1.10, а сервер, к которому нужно подключиться, находится по адресу 10.5.1.80.

Так что все хорошо до сих пор, пакеты идут, но не все. И тут становится странно, и я ищу причину.

Таким образом, эти виртуальные машины запускают kubernetes и должны подключаться к другим машинам без операционной системы в этой подсети. Работает сеть calico, поэтому пакеты BGP передаются.Странно то, что эти пакеты никогда не достигают машин без операционной системы, но они прекрасно справляются с машинами за пределами подсети внешних маршрутизаторов. Итак, я посмотрел данные и заметил, что пакеты уже исчезают на гипервизоре виртуальной машины. Они все еще видны на тап-устройстве, но после этого просто теряются.

Так что совершенно очевидно, что что-то отфильтровывает эти пакеты. Теперь остается вопрос: почему? У меня какая-то неправильная конфигурация, я что-то не так понял? Или есть способ заставить всю установку проглатывать эти пакеты? У меня была эта проблема, кстати. также с фланелевыми пакетами vxlan... .

Моя настройка в целом такова: openstack через kolla, openvswitch, внешняя сеть настроена как плоская сеть.

Проверил правила iptable, но для подсети правил вообще нет. И, как описано ранее, пакеты, которые маршрутизируются не в сеть 10.5.0.0/16, а, например, в сеть 10.50.0.0/16, которая находится за пределами этого центра обработки данных и неизвестна openvswitch/openstack. Значит, это как-то связано с внешней сетью, настроенной на 10.5.0.0/16, которая незаконно удаляет эти пакеты.

Еще немного информации:

Это интерфейс виртуальной машины, показанный ovs-vctl.

    Порт qvo503122c8-15
    тег: 1
    Интерфейс qvo503122c8-15

Ставим на это tcpdump

tcpdump -i qvo503122c8-15 -vvv | grep bgp
tcpdump: прослушивание на qvo503122c8-15, тип ссылки EN10MB (Ethernet), размер захвата 262144 байт

Совершенно ничего не дает. Но связь в целом там видна. Глядя на главное устройство, они все еще там

tcpdump -i qbr503122c8-15 -vvv | grep bgp
tcpdump: прослушивание на qbr503122c8-15, тип ссылки EN10MB (Ethernet), размер захвата 262144 байт
    10.5.3.44.53969 > 10.15.0.91.bgp: Флаги [S], cksum 0x17b7 (неверно -> 0x0748), seq 607368, win 64860, параметры [mss 1410, sackOK, TS val 2138674293 ecr 0,nop,wscale 7] , длина 0
    10.5.3.44.41505 > 10.15.0.92.bgp: флаги [S], cksum 0x17b8 (неправильно -> 0x572f), seq 103292561, win 64860, параметры [mss 1410, sackOK, TS val 2567404423 ecr 0,nop,wscale 7] , длина 0
    10.5.3.44.53969 > 10.15.0.91.bgp: Флаги [S], cksum 0x17b7 (неверно -> 0xff67), seq 607368, win 64860, параметры [mss 1410,sackOK,TS val 2138676309 ecr 0,nop,wscale 7] , длина 0
    10.5.3.44.49645 > 10.15.0.91.bgp: Флаги [S], cksum 0x17b7 (неправильно -> 0xb20c), seq 137205467, win 64860, параметры [mss 1410, sackOK, TS val 2138677277 ecr 0,nop,wscale 7] , длина 0
    10.5.3.44.49787 > 10.15.0.92.bgp: Флаги [S], cksum 0x17b8 (неверно -> 0x9dee), seq 608997803, win 64860, параметры [mss 1410, sackOK, TS val 2567406383 ecr 0,nop,wscale 7] , длина 0

Для сравнения, на этой же машине, на другой ВМ, тоже такая же проблема и эти пакеты пропадают, но в данном случае есть какие-то машины за пределами одного датацентра. И они прекрасно достигаются в их подсети. Зарегистрированные здесь пакеты не исчезнут:

tcpdump -i qbr2d9b68d1-b7: -vvv | grep bgp        
tcpdump: прослушивание на qbr2d9b68d1-b7:, тип ссылки EN10MB (Ethernet), размер захвата 262144 байт
    192.168.1.3.58395 > 10.5.0.177.bgp: Flags [P.], cksum 0x0961 (правильно), seq 2080765188:2080765207, ack 2634444892, win 505, options [nop,nop,TS val 3871674756 length], 1933 6 1ecr 1ecr : BGP
    10.5.0.177.bgp > 192.168.1.3.58395: Флаги [.], cksum 0xcc82 (неверно -> 0x44c4), seq 1, ack 19, win 502, options [nop,nop,TS val 2568187609 ecr 3871674789], длина 0

Однако сейчас я вижу одну вещь: второй tcpdump показывает, что виртуальная машина взаимодействует с внешним через свой собственный адрес. Пока остальные пытались общаться с плавающим ip. Плавающие IP-пакеты, похоже, отфильтровываются.

флаг us
Для меня это звучит как проблема с MTU. Прежде чем мы перешли с linuxbridge на openvswitch в нашем облаке openstack, мы могли использовать размер MTU по умолчанию 1500 для виртуальных машин. После переключения нам пришлось настроить MTU 1422 для сетей самообслуживания, это не коснулось только сетей провайдеров.
thurlimann avatar
флаг us
mh про MTU не подумал, т.к. если связь переходит во внешнюю сеть все пакеты передаются. все подключено к 40GbE с джамбо пакетами MTU, это было бы немного странно, если бы в нашем случае MUT по умолчанию пинал, но у меня будет тест.
флаг us
Но вы пишете "Вот я просмотрел данные и заметил, пакеты уже исчезают на гипервизоре ВМ. Они еще видны на тап-устройстве, но после этого просто теряются". Это говорит мне о потере пакетов, не так ли?
thurlimann avatar
флаг us
Только эти пакеты просто ушли. Как будто они фильтруются. Все остальные пакеты в порядке.Таким образом, пакеты VXLAN и пакеты BGP затронуты. И пакеты, которые отправляются во внешнюю сеть с еще одним прыжком в маршруте, не затрагиваются. Это означает, что пакет на 10.5.1.15 BGP исчезнет. Пакет на 10.15.1.15 BGP не исчезнет. и, как сказано, пакет уходит до того, как он покидает гипервизор.
thurlimann avatar
флаг us
Протестировал более низкий MTU, никакой разницы. Так что нет, не MTU.
thurlimann avatar
флаг us
Пакеты исчезают *после* устройства TAP, на устройстве Tap я все еще вижу их с помощью tcpdump. И речь идет не об общении внутри сети, а об общении вне сети vms, а в общедоступной сети, настроенной на openstack.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.