Fine Tuning Дообучение ИИ модели Qwen2.5 (7B) для контроля таблиц маршрутизации Cisco (show ip route) для поиска петель, неправильных метрик, двойных маршрутов и т.д. JSON файлы (Data Sets) 1. Пример training set из 20 примеров в JSON-формате для fine-tuning Qwen2.5 (7B) — каждый пример учит модель анализировать вывод show ip route на Cisco и находить проблемы маршрутизации. Формат: instruction: что нужно сделать input: вывод show ip route output: диагностика проблемы (или "no problem") [ { "instruction": "Найди проблемы маршрутизации в выводе show ip route. Обрати внимание на отсутствие маршрута по умолчанию, петли, неправильную метрику, флаги маршрутов (например, S, C, O, D, R).", "input": "Gateway of last resort is not set\n\nC 192.168.1.0/24 is directly connected, GigabitEthernet0/0\nC 10.0.0.0/8 is directly connected, GigabitEthernet0/1", "output": "Проблема: Отсутствует маршрут по умолчанию (0.0.0.0/0). Устройство не сможет отправлять трафик в сети, отличные от 192.168.1.0/24 и 10.0.0.0/8." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.1 to network 0.0.0.0\n\nS* 0.0.0.0/0 [1/0] via 10.0.0.1\nC 192.168.1.0/24 is directly connected, GigabitEthernet0/0\nO 192.168.2.0/24 [110/2] via 10.0.0.2, 00:00:10, GigabitEthernet0/1\nO 192.168.2.0/24 [110/3] via 10.0.0.3, 00:00:15, GigabitEthernet0/2", "output": "Проблема: Два маршрута до одной сети 192.168.2.0/24 с разными next-hop и метриками (2 и 3). Нет явного выбора лучшего маршрута — возможно, нестабильность или субоптимальная маршрутизация. Рекомендуется проверить OSPF cost." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.1\n\nS* 0.0.0.0/0 [1/0] via 10.0.0.1\nC 10.0.0.0/24 is directly connected, Gig0/0\nR 10.0.1.0/24 [120/2] via 10.0.0.2, 00:00:05, Gig0/0", "output": "Проблема: RIP-маршрут 10.0.1.0/24 указывает на next-hop 10.0.0.2, но интерфейс Gig0/0 имеет сеть 10.0.0.0/24. 10.0.0.2 доступен — нет проблемы. Но при проверке флага 'R' — убедитесь, что split-horizon не блокирует обновления на том же интерфейсе. В целом конфигурация рабочая." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 192.168.1.1\n\nS* 0.0.0.0/0 [1/0] via 192.168.1.1\nC 192.168.1.0/24 is directly connected, Eth0/0\nS 10.10.10.0/24 [1/0] via 192.168.1.1\nS 10.10.10.0/24 [1/0] via 192.168.1.2", "output": "Проблема: Два статических маршрута до 10.10.10.0/24 с разными next-hop (192.168.1.1 и 192.168.1.2). Маршрутизатор будет использовать первый в таблице (по алгоритму CEF), что может вызвать асимметричную маршрутизацию или чёрную дыру при отказе одного из шлюзов без отслеживания." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.1\n\nS* 0.0.0.0/0 [1/0] via 10.0.0.1\nC 172.16.0.0/16 is directly connected, Gi0/0\nO E2 172.16.10.0/24 [110/20] via 10.0.0.2, 00:10:00, Gi0/1\nO E2 172.16.20.0/24 [110/20] via 10.0.0.2, 00:10:00, Gi0/1", "output": "Потенциальная проблема: Маршруты OSPF External Type 2 до 172.16.x.x перекрываются с подключённой сетью 172.16.0.0/16. Трафик до 172.16.10.0/24 пойдёт по OSPF, а не прямо — это нормально, если так задумано (более специфичный маршрут). Но убедитесь, что нет маршрута OSPF по умолчанию, мешающего локальным подсетям." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is not set\n\nC 10.1.1.0/24 is directly connected, Fa0/0\nO 10.1.2.0/24 [110/2] via 10.1.1.2, 00:05:00, Fa0/0\nO 10.1.2.0/24 [110/2] via 10.1.1.3, 00:05:00, Fa0/0", "output": "Проблема: ECMP (equal cost multipath) для 10.1.2.0/24 без маршрута по умолчанию. ECMP сам по себе не ошибка, но отсутствие шлюза последней надежды может изолировать устройство от внешних сетей." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.10.10.1\n\nS* 0.0.0.0/0 [1/0] via 10.10.10.1\nC 10.10.10.0/24 is directly connected, Eth0\nD EX 192.168.100.0/24 [170/2] via 10.10.10.2, 00:02:00, Eth0\nD EX 192.168.100.0/24 [170/3] via 10.10.10.3, 00:02:00, Eth0", "output": "Проблема: Два внешних EIGRP-маршрута до одной сети с разной метрикой (2 и 3). Лучший — через 10.10.10.2. Но если 10.10.10.2 недоступен, переключение на 10.10.10.3 произойдёт не сразу из-за EIGRP hold-таймера. Не критично." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 192.0.2.1\n\nS* 0.0.0.0/0 [1/0] via 192.0.2.1\nC 198.51.100.0/24 is directly connected, Gi0/0\nS 203.0.113.0/24 [1/0] via 198.51.100.2\nB 192.0.2.0/24 [20/0] via 198.51.100.3, 00:01:00\nB 192.0.2.0/24 [20/0] via 198.51.100.4, 00:01:00", "output": "Проблема: Два BGP-маршрута до 192.0.2.0/24 с одинаковой метрикой и next-hop 198.51.100.3/4. Но маршрут по умолчанию — 192.0.2.1, а BGP-маршруты — через другие шлюзы — возможна петля, если 192.0.2.1 и 198.51.100.x — одна сеть. Проверить reachability." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.1\n\nS* 0.0.0.0/0 [1/0] via 10.0.0.1\nC 10.0.0.0/24 is directly connected, Gi0/1\nS 10.0.0.0/24 Null0 [1/0]\nO 10.0.1.0/24 [110/2] via 10.0.0.2, Gi0/1", "output": "Серьёзная проблема: Статический маршрут до 10.0.0.0/24 через Null0 при том, что этот же интерфейс Gi0/1 имеет подключённую сеть 10.0.0.0/24. Маршрут Null0 создаст чёрную дыру для всего трафика в 10.0.0.0/24. Немедленно удалить." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is not set\n\nS 0.0.0.0/0 [1/0] via 192.168.99.1\nC 192.168.1.0/24 is directly connected, Fa0/1\nC 192.168.2.0/24 is directly connected, Fa0/2", "output": "Проблема: Маршрут по умолчанию существует (S 0.0.0.0/0), но Gateway of last resort is not set. Возможно, маршрут неактивен из-за отсутствия интерфейса для 192.168.99.1 или проблем с ARP. Проверить административную доступность next-hop." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.1.1.1\n\nS* 0.0.0.0/0 [1/0] via 10.1.1.1\nC 10.1.1.0/24 is directly connected, Gi0/0\nR 10.2.2.0/24 [120/1] via 10.1.1.2, 00:00:10, Gi0/0\nR 10.2.2.0/24 [120/1] via 10.1.1.3, 00:00:10, Gi0/0", "output": "Проблема: Два RIP-маршрута до 10.2.2.0/24 с одинаковой метрикой 1, ECMP возможен. Нет явной проблемы, но RIP плохо балансирует. Убедитесь, что ip load-sharing работает корректно." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 192.0.2.1\n\nS* 0.0.0.0/0 [1/0] via 192.0.2.1\nC 10.88.88.0/24 is directly connected, Lo0\nS 10.88.88.0/24 Null0 [5/0]", "output": "Проблема: Маршрут Null0 для той же сети, что и loopback (10.88.88.0/24). Это неправильно — Null0 переопределяет подключённый маршрут, делая loopback недоступным для пакетов, приходящих на этот интерфейс." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.1\n\nS* 0.0.0.0/0 [1/0] via 10.0.0.1\nC 10.0.0.0/24 is directly connected, Gi0/1\nO 10.0.0.0/24 [110/2] via 10.0.0.254, 00:01:00, Gi0/1", "output": "Проблема: Маршрут OSPF до 10.0.0.0/24 с next-hop 10.0.0.254, но сеть 10.0.0.0/24 — уже directly connected на том же интерфейсе. OSPF маршрут игнорируется, так как connected имеет меньшую AD (0 против 110). Не ошибка, но мусор в таблице." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.10.10.1\n\nS* 0.0.0.0/0 [1/0] via 10.10.10.1\nC 10.10.10.0/24 is directly connected, Eth1\nO IA 172.16.0.0/16 [110/2] via 10.10.10.2, Eth1\nO IA 172.16.0.0/16 [110/2] via 10.10.10.2, Eth1", "output": "Проблема: Дублирующая запись (два одинаковых OSPF inter-area маршрута до 172.16.0.0/16). Обычно это следствие ошибки в конфигурации OSPF или повторного изучения маршрута. Не влияет на работу, но засоряет таблицу." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 192.168.1.254\n\nS* 0.0.0.0/0 [1/0] via 192.168.1.254\nS 192.168.0.0/16 Null0 [254/0]\nC 192.168.1.0/24 is directly connected, Gi0/0\nC 10.0.0.0/8 is directly connected, Gi0/1", "output": "Проблема: Статический маршрут 192.168.0.0/16 в Null0 с AD 254 (очень низкий приоритет) перекрывает более специфичные маршруты 192.168.1.0/24 и, возможно, другие. Null0 используется для summarization, но с AD 254 — это резерв. Однако если более специфичные маршруты исчезнут, трафик уйдёт в чёрную дыру. Нормально для политики, но рискованно." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.99.99.1\n\nS* 0.0.0.0/0 [1/0] via 10.99.99.1\nC 10.99.99.0/24 is directly connected, Gi0/2\nB 0.0.0.0/0 [20/0] via 10.99.99.254, 00:30:00", "output": "Проблема: Два маршрута по умолчанию — статический (AD 1) и BGP (AD 20). Маршрутизатор выберет статический. При его отказе не переключится на BGP автоматически, если нет отслеживания (track). Возможна потеря связи при провале статического next-hop 10.99.99.1." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is not set\n\nC 203.0.113.0/24 is directly connected, Fa0/0\nS 198.51.100.0/24 [1/0] via 203.0.113.2", "output": "Проблема: Нет маршрута обратно к источнику для сетей, кроме 198.51.100.0/24, и нет шлюза по умолчанию. Устройство может инициировать трафик только в две сети. Это не проблема, если это хост в изолированной сети, но для маршрутизатора — серьёзное ограничение." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.1.1.1\n\nS* 0.0.0.0/0 [1/0] via 10.1.1.1\nC 10.1.1.0/24 is directly connected, Gi0/0\nO 10.1.2.0/24 [110/2] via 10.1.1.2, 00:10:00, Gi0/0\nO 10.1.3.0/24 [110/3] via 10.1.1.2, 00:10:00, Gi0/0", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 172.16.1.1\n\nS* 0.0.0.0/0 [1/0] via 172.16.1.1\nC 172.16.1.0/24 is directly connected, Gi0/0\nS 192.168.100.0/24 [1/0] via 172.16.1.1\nC 192.168.100.0/24 is directly connected, Gi0/1", "output": "Серьёзная проблема: Два маршрута до 192.168.100.0/24 — статический через 172.16.1.1 и подключённый на Gi0/1. Статический маршрут имеет меньшую AD (1 против 0 у connected?) — фактически connected всегда предпочтительнее. Статический маршрут бесполезен и может ввести в заблуждение. Удалить." }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.1\n\nS* 0.0.0.0/0 [1/0] via 10.0.0.1\nC 10.0.0.0/8 is directly connected, Gi0/0\nO 10.1.2.0/24 [110/2] via 10.0.0.2, 00:00:01, Gi0/0\nO 10.1.2.0/24 [110/2] via 10.0.0.2, 00:00:01, Gi0/0", "output": "no problem — запись дублируется в выводе из-за особенностей отображения некоторых IOS, но это не ошибка маршрутизации." } ] 2. Разнообразные примеры петель маршрутизации в формате JSON для обучения модели Qwen2.5 (7B). Каждый пример демонстрирует конкретный тип петли в выводе show ip route Cisco. [ { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is not set\n\nC 192.168.1.0/24 is directly connected, GigabitEthernet0/0\nS 192.168.1.0/24 via GigabitEthernet0/0", "output": "Петля маршрутизации: Статический маршрут до 192.168.1.0/24 указывает на тот же интерфейс GigabitEthernet0/0, где эта сеть уже подключена напрямую. Маршрутизатор будет пытаться отправить пакеты для 192.168.1.0/24 обратно через тот же интерфейс, создавая петлю на L2 уровне. Маршрут S необходимо удалить." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.1\n\nS* 0.0.0.0/0 [1/0] via 10.0.0.1\nC 10.0.0.0/24 is directly connected, Eth0/0\nS 10.0.0.0/24 via Eth0/0", "output": "Петля маршрутизации: Статический маршрут до 10.0.0.0/24 через интерфейс Eth0/0, хотя сеть уже подключена напрямую. Это заставит маршрутизатор выполнять ARP-запросы для каждого IP в этой сети на том же интерфейсе, а затем отправлять пакеты обратно — бесконечная петля на канальном уровне." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 172.16.1.254\n\nC 172.16.1.0/24 is directly connected, Fa0/1\nS 172.16.0.0/16 via Fa0/1\nS 10.0.0.0/8 via 172.16.1.254", "output": "Петля маршрутизации: Статический маршрут 172.16.0.0/16 через интерфейс Fa0/1, в то время как более специфичный маршрут 172.16.1.0/24 подключён напрямую. Трафик до 172.16.1.100 пойдёт по connected-маршруту (нормально), а трафик до 172.16.2.100 пойдёт через Fa0/1, но поскольку маршрутизатор не знает конкретного next-hop, он будет широковещательно отправлять ARP-запросы для каждого IP, и если ответа нет — петля не образуется. НО если 172.16.1.254 — это соседний роутер, который вернёт трафик обратно, образуется петля на L3. Потенциальная проблема." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.1.1.1\n\nS* 0.0.0.0/0 [1/0] via 10.1.1.1\nC 10.1.1.0/24 is directly connected, Gi0/0\nS 10.0.0.0/8 via Gi0/0\nS 10.1.2.0/24 via Gi0/0", "output": "Петля маршрутизации: Маршруты до 10.0.0.0/8 и 10.1.2.0/24 через интерфейс Gi0/0 без указания next-hop IP. Для 10.1.2.0/24 маршрутизатор будет слать ARP на Gi0/0, ожидая, что 10.1.2.x находится в той же подсети (но это не так, если маска на интерфейсе /24). Маршрутизатор будет отправлять ARP-запросы, которые останутся без ответа, вызывая сброс пакетов и возможные петли на соседних устройствах, если они имеют обратные маршруты." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 192.168.1.1\n\nS* 0.0.0.0/0 [1/0] via 192.168.1.1\nC 192.168.1.0/24 is directly connected, Eth0\nS 192.168.2.0/24 via 192.168.1.2\nS 192.168.2.0/24 via Eth0", "output": "Петля маршрутизации: Два статических маршрута до 192.168.2.0/24 — один через IP 192.168.1.2, другой через интерфейс Eth0. Если 192.168.1.2 доступен через Eth0, может возникнуть ситуация, когда маршрутизатор выбирает маршрут через интерфейс и пытается отправить пакеты напрямую, а соседний коммутатор или маршрутизатор возвращает их обратно, создавая микро-петлю." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.1\n\nS* 0.0.0.0/0 [1/0] via 10.0.0.1\nC 10.0.0.0/24 is directly connected, Gi0/0\nO 10.0.0.0/24 [110/2] via 10.0.0.2, 00:01:00, Gi0/0", "output": "Петли нет, но потенциальная проблема: OSPF-маршрут до 10.0.0.0/24 через 10.0.0.2 на том же интерфейсе Gi0/0. Если 10.0.0.2 — соседний маршрутизатор, который имеет маршрут обратно через этот же интерфейс, может образоваться петля для некоторых типов трафика. Однако connected-маршрут имеет приоритет (AD 0 против 110), так что реальной петли не возникнет." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.1.1.1\n\nS* 0.0.0.0/0 [1/0] via 10.1.1.1\nC 10.1.1.0/24 is directly connected, Fa0/0\nS 192.168.0.0/16 via 10.1.1.254\nS 10.1.1.254 via Fa0/0", "output": "Петля маршрутизации: Маршрут до 10.1.1.254 через интерфейс Fa0/0. Если 10.1.1.254 — это шлюз, который имеет маршрут по умолчанию обратно на этот маршрутизатор, пакеты будут циркулировать: A -> B -> A -> B. Это классическая петля L3. Необходимо использовать маршруты через IP, а не интерфейсы, для точечных соединений." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is not set\n\nC 10.1.0.0/16 is directly connected, Gi0/0\nO 10.1.2.0/24 [110/2] via 10.1.1.2, 00:00:10, Gi0/0\nO 10.1.1.0/24 [110/2] via 10.1.2.2, 00:00:10, Gi0/0", "output": "Сложная петля маршрутизации: Взаимно рекурсивные OSPF-маршруты — 10.1.2.0/24 через 10.1.1.2, а 10.1.1.0/24 через 10.1.2.2. При попытке достичь 10.1.2.1 маршрутизатор попытается использовать next-hop 10.1.1.2, для которого нужен маршрут через 10.1.2.2, и так далее. При отсутствии прямых connected-маршрутов к этим next-hop образуется петля резолвинга маршрутов в таблице FIB. Проблема возникает, если connected-сети не покрывают 10.1.1.0/24 и 10.1.2.0/24 непосредственно на интерфейсах." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 192.0.2.1\n\nS* 0.0.0.0/0 [1/0] via 192.0.2.1\nC 192.0.2.0/24 is directly connected, Eth0\nS 198.51.100.0/24 via 192.0.2.254\nS 192.0.2.254 via Eth0", "output": "Петля маршрутизации: Маршрут до 192.0.2.254 через интерфейс Eth0. Если 192.0.2.254 — это соседний маршрутизатор, у которого маршрут по умолчанию или маршрут до 198.51.100.0/24 ведёт обратно на текущий маршрутизатор, образуется двухузловая петля. Это частая ошибка при настройке статических маршрутов через интерфейс вместо IP next-hop." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.1\n\nS* 0.0.0.0/0 [1/0] via 10.0.0.1\nC 10.0.0.0/24 is directly connected, Gi0/0\nS 10.0.1.0/24 Null0\nS 10.0.1.0/24 via 10.0.0.2", "output": "Скрытая петля: Маршрут через Null0 и маршрут через 10.0.0.2. При активном маршруте через 10.0.0.2 пакеты уходят, но если 10.0.0.2 недоступен, маршрут Null0 не создаёт петлю сам по себе, а просто отбрасывает пакеты. Однако, если 10.0.0.2 имеет маршрут обратно через Null0 или интерфейс на текущий маршрутизатор, образуется петля. Сам по себе Null0 безопасен, но в комбинации с обратным маршрутом — петля." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 172.16.0.1\n\nS* 0.0.0.0/0 [1/0] via 172.16.0.1\nC 172.16.0.0/16 is directly connected, Fa0/0\nS 10.0.0.0/8 via Fa0/0\nS 10.1.1.0/24 via 172.16.0.254", "output": "Петля маршрутизации: Маршрут 10.0.0.0/8 через Fa0/0 (интерфейс), при том, что next-hop для 10.1.1.0/24 — 172.16.0.254, который вероятно находится в подсети 172.16.0.0/16. При попытке достичь 10.1.1.1, маршрутизатор сначала найдёт маршрут через 172.16.0.254 (более специфичный), но для 10.2.2.2 использует маршрут через Fa0/0 и будет широковещательно искать все адреса 10.x.x.x в сети 172.16.x.x — такой сети нет, но трафик будет отправлен, и если соседний коммутатор имеет маршрут обратно — петля. Сомнительный сценарий, но возможен." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.1.1.1\n\nS* 0.0.0.0/0 [1/0] via 10.1.1.1\nC 10.1.1.0/24 is directly connected, Eth0\nS 10.1.1.0/24 via 10.1.1.254\nS 10.1.1.254 via Eth0", "output": "Классическая двухточечная петля: Маршрут до 10.1.1.0/24 через 10.1.1.254 (который, вероятно, другой маршрутизатор), и маршрут до 10.1.1.254 через Eth0. Если у соседнего маршрутизатора есть маршрут до исходной сети через этот маршрутизатор, любой пакет между ними будет циркулировать бесконечно. Явная петля маршрутизации L3." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 203.0.113.1\n\nS* 0.0.0.0/0 [1/0] via 203.0.113.1\nC 203.0.113.0/24 is directly connected, Gi0/1\nS 192.0.2.0/24 via Gi0/1\nS 203.0.113.0/24 via Gi0/1", "output": "Петля: Статический маршрут до 203.0.113.0/24 через интерфейс Gi0/1, где эта же сеть уже подключена напрямую. Это классический пример 'маршрут через интерфейс для уже существующей сети' — вызовет ARP-шторм и микро-петли для каждого пакета, отправленного в эту сеть, так как маршрутизатор будет пытаться отправить пакеты через тот же интерфейс и получать их обратно (в случае, если Ethernet-коммутатор не изолирует порты)." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.88.88.1\n\nS* 0.0.0.0/0 [1/0] via 10.88.88.1\nC 10.88.88.0/24 is directly connected, Fa0/1\nS 10.88.88.0/24 via Fa0/1\nS 10.88.88.254 via Fa0/1", "output": "Петля: Маршрут до всей сети 10.88.88.0/24 через интерфейс Fa0/1 и маршрут до конкретного хоста 10.88.88.254 через тот же интерфейс. При попытке связаться с 10.88.88.254 маршрутизатор будет использовать более специфичный маршрут /32? Нет, /32 нет, будет использован /24 через интерфейс, так как оба маршрута имеют одинаковую длину маски? Второй маршрут до 10.88.88.254 — это хост (если маска /32 подразумевается), но в синтаксисе Cisco при указании without mask — это host route. Тогда возникнет петля на уровне маршрутизации между хостовым маршрутом и маршрутом через интерфейс. Распутывание сложное, но петля возможна." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 192.168.0.1\n\nS* 0.0.0.0/0 [1/0] via 192.168.0.1\nC 192.168.0.0/24 is directly connected, Gi0/0\nO 10.0.0.0/8 [110/2] via 192.168.0.2, 00:10:00, Gi0/0\nO 192.168.0.0/24 [110/2] via 192.168.0.3, 00:10:00, Gi0/0", "output": "Петля отсутствует в таблице напрямую, но скрытая проблема: OSPF-маршрут до 192.168.0.0/24 через 192.168.0.3, хотя этот интерфейс Gi0/0 имеет подключённую сеть 192.168.0.0/24. Если 192.168.0.3 — это другой маршрутизатор в той же сети, а OSPF изучает эту сеть от него, может возникнуть временная петля, если connected-маршрут временно пропадёт. Не явная петля, но учебный пример для модели." } ] 3. Дополнительные примеры для сложных сценариев [ { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.1\n\nC 10.0.0.0/24 is directly connected, Eth0\nS 10.0.0.0/24 via Eth0\nS 10.0.0.0/24 via 10.0.0.254\nS 10.0.0.254 via Eth0", "output": "Множественная петля: Три маршрута до 10.0.0.0/24 — два через интерфейс Eth0 (один явно через Eth0, другой через IP 10.0.0.254, который резолвится в Eth0) и один через 10.0.0.254. Плюс маршрут до 10.0.0.254 через Eth0. Любой пакет для 10.0.0.0/24 может бесконечно резолвить next-hop и порождать ARP-запросы. Административная проблема: полная неразбериха в статических маршрутах." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route.", "input": "Gateway of last resort is not set\n\nS 0.0.0.0/0 via 10.1.1.1\nC 10.1.1.0/24 is directly connected, Gi0/0\nS 10.1.1.0/24 via Gi0/0\nS 10.1.1.1 via Gi0/0", "output": "Явная тройная петля: Маршрут по умолчанию через 10.1.1.1. Маршрут до сети 10.1.1.0/24 через интерфейс Gi0/0. Маршрут до next-hop 10.1.1.1 через тот же интерфейс. При разрешении маршрута по умолчанию сначала ищется 10.1.1.1, который находится в сети 10.1.1.0/24. Для достижения 10.1.1.1 используется маршрут через Gi0/0, который вызывает широковещательный ARP, при этом сам маршрутизатор может получать свои же ARP-запросы (в зависимости от коммутатора) — классическая петля на L2/L3." }, { "instruction": "Найди петлю маршрутизации в выводе show ip route (обрати внимание на рекурсивные маршруты).", "input": "Gateway of last resort is 172.31.1.1\n\nS* 0.0.0.0/0 [1/0] via 172.31.1.1\nC 172.31.1.0/24 is directly connected, Fa0/0\nS 172.31.0.0/16 via 172.31.1.254\nS 172.31.1.254 via Fa0/0\nS 10.0.0.0/8 via 172.31.1.254", "output": "Рекурсивная петля: Маршрут до 172.31.0.0/16 через 172.31.1.254. Маршрут до 172.31.1.254 через Fa0/0 (интерфейс). При этом 172.31.1.254 находится в подсети 172.31.1.0/24. Для достижения 10.0.0.0/8 сначала находится маршрут через 172.31.1.254, затем 172.31.1.254 резолвится через Fa0/0. Если 172.31.1.254 — соседний роутер, который имеет маршрут обратно через этот же интерфейс, петля замыкается. При этом хост 172.31.1.254 может быть недостижим, и тогда маршрутизатор будет постоянно пытаться зарезолвить его через ARP, создавая нагрузку." } ] Эти примеры помогут модели выявлять следующие типы петель: Статические маршруты через интерфейс для уже connected-сети Рекурсивные маршруты, где next-hop резолвится через тот же интерфейс Взаимные маршруты между двумя роутерами (A>B и B>A через одни и те же интерфейсы) Маршруты Null0 в комбинации с обратными маршрутами Динамические петли (OSPF между двумя соседями с ошибочной метрикой) 4. Тренировочный JSON из 20 примеров без петель, где все маршруты via имеют корректный next-hop, достижимый через directly connected network. [ { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 192.168.1.1\n\nS* 0.0.0.0/0 [1/0] via 192.168.1.1\nC 192.168.1.0/24 is directly connected, GigabitEthernet0/0\nS 10.10.10.0/24 [1/0] via 192.168.1.2\nS 172.16.0.0/16 [1/0] via 192.168.1.3", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.1\n\nS* 0.0.0.0/0 [1/0] via 10.0.0.1\nC 10.0.0.0/24 is directly connected, Ethernet0/0\nO 192.168.1.0/24 [110/2] via 10.0.0.2, 00:10:00, Ethernet0/0\nO 192.168.2.0/24 [110/3] via 10.0.0.2, 00:10:00, Ethernet0/0\nO 10.1.1.0/24 [110/2] via 10.0.0.3, 00:10:00, Ethernet0/0", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 172.16.1.254\n\nS* 0.0.0.0/0 [1/0] via 172.16.1.254\nC 172.16.1.0/24 is directly connected, FastEthernet0/0\nD 10.0.0.0/8 [90/3072] via 172.16.1.1, 00:05:00, FastEthernet0/0\nD 192.168.0.0/16 [90/3072] via 172.16.1.2, 00:05:00, FastEthernet0/0\nD 172.17.0.0/16 [90/3072] via 172.16.1.3, 00:05:00, FastEthernet0/0", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 203.0.113.1\n\nS* 0.0.0.0/0 [1/0] via 203.0.113.1\nC 203.0.113.0/24 is directly connected, GigabitEthernet0/1\nS 198.51.100.0/24 [1/0] via 203.0.113.2\nS 192.0.2.0/24 [1/0] via 203.0.113.3\nB 10.0.0.0/8 [20/0] via 203.0.113.4, 00:20:00", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.10.10.1\n\nS* 0.0.0.0/0 [1/0] via 10.10.10.1\nC 10.10.10.0/24 is directly connected, Eth0\nC 192.168.1.0/24 is directly connected, Eth1\nR 172.16.0.0/16 [120/1] via 10.10.10.2, 00:00:20, Eth0\nR 172.17.0.0/16 [120/2] via 10.10.10.3, 00:00:20, Eth0\nR 172.18.0.0/16 [120/1] via 10.10.10.2, 00:00:20, Eth0", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 192.168.100.1\n\nS* 0.0.0.0/0 [1/0] via 192.168.100.1\nC 192.168.100.0/24 is directly connected, Gi0/0\nO E2 10.1.0.0/16 [110/20] via 192.168.100.2, 00:15:00, Gi0/0\nO E2 10.2.0.0/16 [110/20] via 192.168.100.2, 00:15:00, Gi0/0\nO IA 172.20.0.0/16 [110/2] via 192.168.100.3, 00:15:00, Gi0/0", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.50.50.1\n\nS* 0.0.0.0/0 [1/0] via 10.50.50.1\nC 10.50.50.0/24 is directly connected, Fa0/1\nS 192.168.10.0/24 [1/0] via 10.50.50.2\nS 192.168.11.0/24 [1/0] via 10.50.50.2\nS 192.168.12.0/24 [1/0] via 10.50.50.3\nC 172.16.0.0/16 is directly connected, Fa0/0", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.254\n\nS* 0.0.0.0/0 [1/0] via 10.0.0.254\nC 10.0.0.0/24 is directly connected, Eth0/0\nS 8.8.8.0/24 [1/0] via 10.0.0.1\nS 8.8.4.0/24 [1/0] via 10.0.0.1\nO 192.168.100.0/24 [110/2] via 10.0.0.2, 00:05:00, Eth0/0\nO 192.168.101.0/24 [110/2] via 10.0.0.2, 00:05:00, Eth0/0", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 172.31.1.1\n\nS* 0.0.0.0/0 [1/0] via 172.31.1.1\nC 172.31.1.0/24 is directly connected, Gi0/1\nD EX 10.100.0.0/16 [170/2] via 172.31.1.2, 00:08:00, Gi0/1\nD EX 10.200.0.0/16 [170/2] via 172.31.1.2, 00:08:00, Gi0/1\nD 192.168.200.0/24 [90/3072] via 172.31.1.3, 00:08:00, Gi0/1", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 192.168.254.254\n\nS* 0.0.0.0/0 [1/0] via 192.168.254.254\nC 192.168.254.0/24 is directly connected, Vlan1\nS 10.0.0.0/8 [1/0] via 192.168.254.1\nS 172.16.0.0/12 [1/0] via 192.168.254.2\nC 192.168.1.0/24 is directly connected, Vlan2\nC 192.168.2.0/24 is directly connected, Vlan3", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.1.1.254\n\nS* 0.0.0.0/0 [1/0] via 10.1.1.254\nC 10.1.1.0/24 is directly connected, Gi0/0\nO 192.168.0.0/16 [110/2] via 10.1.1.1, 00:20:00, Gi0/0\nO 172.16.0.0/16 [110/3] via 10.1.1.1, 00:20:00, Gi0/0\nO 10.2.0.0/16 [110/2] via 10.1.1.2, 00:20:00, Gi0/0\nS 8.8.8.8/32 [1/0] via 10.1.1.3", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.88.88.1\n\nS* 0.0.0.0/0 [1/0] via 10.88.88.1\nC 10.88.88.0/24 is directly connected, Eth1\nB 172.20.0.0/16 [20/0] via 10.88.88.2, 01:00:00\nB 172.21.0.0/16 [20/0] via 10.88.88.3, 01:00:00\nB 172.22.0.0/16 [20/0] via 10.88.88.2, 01:00:00", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 203.0.113.254\n\nS* 0.0.0.0/0 [1/0] via 203.0.113.254\nC 203.0.113.0/24 is directly connected, Gi0/2\nC 10.10.10.0/24 is directly connected, Gi0/3\nR 192.168.10.0/24 [120/1] via 203.0.113.1, 00:00:05, Gi0/2\nR 192.168.11.0/24 [120/2] via 203.0.113.2, 00:00:05, Gi0/2\nR 192.168.12.0/24 [120/1] via 203.0.113.1, 00:00:05, Gi0/2", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 172.16.0.1\n\nS* 0.0.0.0/0 [1/0] via 172.16.0.1\nC 172.16.0.0/16 is directly connected, Fa0/0\nS 10.0.0.0/8 [1/0] via 172.16.1.1\nS 192.168.0.0/16 [1/0] via 172.16.2.1\nS 8.0.0.0/8 [1/0] via 172.16.3.1", "output": "no problem — все next-hop находятся в directly connected сети 172.16.0.0/16, маршруты корректны" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.100.100.1\n\nS* 0.0.0.0/0 [1/0] via 10.100.100.1\nC 10.100.100.0/24 is directly connected, Eth0\nO 10.200.200.0/24 [110/2] via 10.100.100.2, 00:10:00, Eth0\nO 10.200.201.0/24 [110/3] via 10.100.100.3, 00:10:00, Eth0\nO 10.200.202.0/24 [110/2] via 10.100.100.2, 00:10:00, Eth0\nC 192.168.0.0/24 is directly connected, Eth1", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 198.51.100.1\n\nS* 0.0.0.0/0 [1/0] via 198.51.100.1\nC 198.51.100.0/24 is directly connected, Gi0/0\nS 192.0.2.0/24 [1/0] via 198.51.100.2\nS 203.0.113.0/24 [1/0] via 198.51.100.3\nS 10.0.0.0/8 [1/0] via 198.51.100.4", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.0.0.254\n\nS* 0.0.0.0/0 [1/0] via 10.0.0.254\nC 10.0.0.0/24 is directly connected, Vlan10\nD 192.168.10.0/24 [90/3072] via 10.0.0.1, 00:02:00, Vlan10\nD 192.168.20.0/24 [90/3072] via 10.0.0.2, 00:02:00, Vlan10\nD 192.168.30.0/24 [90/3072] via 10.0.0.1, 00:02:00, Vlan10\nD 192.168.40.0/24 [90/3072] via 10.0.0.3, 00:02:00, Vlan10", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 172.16.100.1\n\nS* 0.0.0.0/0 [1/0] via 172.16.100.1\nC 172.16.100.0/24 is directly connected, Fa0/0\nS 10.10.10.0/24 [1/0] via 172.16.100.2\nS 10.20.20.0/24 [1/0] via 172.16.100.3\nS 10.30.30.0/24 [1/0] via 172.16.100.2\nO E2 192.168.0.0/16 [110/20] via 172.16.100.4, 00:30:00, Fa0/0", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.5.5.1\n\nS* 0.0.0.0/0 [1/0] via 10.5.5.1\nC 10.5.5.0/24 is directly connected, Gi0/0\nC 192.168.1.0/24 is directly connected, Gi0/1\nB 8.8.8.0/24 [20/0] via 10.5.5.2, 00:15:00\nB 4.4.4.0/24 [20/0] via 10.5.5.3, 00:15:00\nB 1.1.1.0/24 [20/0] via 10.5.5.2, 00:15:00", "output": "no problem" }, { "instruction": "Найди проблемы маршрутизации в выводе show ip route.", "input": "Gateway of last resort is 10.99.99.254\n\nS* 0.0.0.0/0 [1/0] via 10.99.99.254\nC 10.99.99.0/24 is directly connected, Eth0\nO 172.16.0.0/12 [110/2] via 10.99.99.1, 00:25:00, Eth0\nO 172.32.0.0/12 [110/3] via 10.99.99.2, 00:25:00, Eth0\nO 172.48.0.0/12 [110/2] via 10.99.99.1, 00:25:00, Eth0\nS 192.0.2.0/24 [1/0] via 10.99.99.3", "output": "no problem" } ] (c) by Valery Shmelev (Deutsche: Valery Shmeleff) https://ai-fine-tuning.blogspot.com/