Шаг 5: динамическое изучение MAC/ARP для бэкендов
MAC каждого члена пула больше не статическая константа в topology.env, а резолвится демоном hcd через обычный ARP ядра — в реальном окружении MAC бэкенда заранее не известен (сервер ещё не подключён, NIC может замениться), топология не описывается статически, в отличие от стенда. hcif-порты (единственные адреса узла в ядре) уже были настоящими L3-интерфейсами в тех же сегментах, что и бэкенды — единственное, что мешало обычному ARP, это permanent-записи ip neigh в entrypoint.sh. Убрав их и добавив hc/neigh.go (читает ip -json neigh show, точечно заливает бандл в таблицу 21 на том же тикере, что и health-пробы), получили резолвер без нового OpenFlow-контроллера. Таблица 21 стала единственным источником MAC для обоих путей — маршрутизируемого и коммутируемого (шаг 3): таблица 12 больше не дублирует MAC инлайново, ct(commit) ведёт сразу в таблицу 21. Исправлен попутно найденный баг: после apply.sh (replace-flows) таблица 21 не восстанавливалась, поскольку syncNeighbors сравнивал MAC с памятью демона, а не с датапасом. Добавлен force-режим по аналогии с Agent.apply(), плюс регрессионная проверка в verify.sh. Проверено на живом стенде: MAC всех четырёх членов резолвлен и совпадает с реальными интерфейсами; смена MAC "железа" обнаружена и применена без вмешательства за счёт штатного старения ARP ядра. Регрессия: 94 из 94 проверок. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f34d2edefa
commit
fa389f119b
17 files changed
+678
-61
No files matched your search
@@ -4,7 +4,7 @@ DC := docker compose
|
||||
# отсутствовать в системе.
|
||||
SUDO := $(shell [ "$$(id -u)" = 0 ] || echo sudo)
|
||||
|
||||
.PHONY: help prereq shim shim-down build up down restart attach detach flows verify logs ports health slots drain enable metrics conns trace fdb shell
|
||||
.PHONY: help prereq shim shim-down build up down restart attach detach flows verify logs ports health slots drain enable metrics conns trace fdb neigh shell
|
||||
|
||||
help:
|
||||
@echo "Стенд hpnn_v2 — OVS: маршрутизация, балансировка, коммутация сегментов"
|
||||
@@ -27,6 +27,7 @@ help:
|
||||
@echo " make conns таблица соединений ct"
|
||||
@echo " make trace SRC=192.168.5.7 [SPORT=40000] [SEG=pub|p2|p3] ofproto/trace"
|
||||
@echo " make fdb таблица коммутации сегментов (выученные MAC)"
|
||||
@echo " make neigh MAC членов пула, резолвленный через ARP ядра"
|
||||
@echo " make logs логи контейнеров"
|
||||
@echo " make shell shell в контейнере lb-router"
|
||||
|
||||
@@ -104,5 +105,8 @@ trace:
|
||||
fdb:
|
||||
$(DC) exec -T lb-router lbctl fdb
|
||||
|
||||
neigh:
|
||||
$(DC) exec -T lb-router lbctl neigh
|
||||
|
||||
shell:
|
||||
$(DC) exec lb-router bash
|
||||
Reference in new issue
Block a user