Files
denozord 5d4d24b49f
Build and Push Docker Image / build (push) Has been cancelled
Sure! Pl
2025-07-11 13:23:21 +07:00

338 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Тестирование BGP сервера
## Подготовка к тестированию
### Требования для тестирования
- Docker Desktop для Windows
- PowerShell
- RouterOS 7.14+ (физический или виртуальный)
- Сетевое подключение между сервером и RouterOS
### Схема тестирования
```
[Windows Host] ←→ [RouterOS Device]
192.168.1.100 192.168.1.1
AS: 65000 AS: 65001
```
## Пошаговое тестирование
### Шаг 1: Подготовка окружения
```powershell
# Клонирование репозитория
git clone <repository-url>
cd bgp-server
# Создание директорий
mkdir logs
# Проверка файлов
Get-ChildItem -Recurse
```
### Шаг 2: Настройка тестовых префиксов
Отредактируйте `data/prefixes.txt`:
```
# Тестовые префиксы
192.168.100.0/24
192.168.200.0/24
10.10.10.0/24
172.16.100.0/24
```
### Шаг 3: Запуск BGP сервера
```powershell
# Запуск с автоматической сборкой
.\scripts\start-server.ps1 -Build
# Проверка статуса
docker-compose ps
```
Ожидаемый результат:
```
Name Command State Ports
bgp-server /app/script Up 0.0.0.0:179->179/tcp
```
### Шаг 4: Проверка логов сервера
```powershell
# Просмотр логов
docker-compose logs bgp-server
# Проверка логов в реальном времени
docker-compose logs -f bgp-server
```
Ожидаемые сообщения:
```
Starting BGP Server...
Validating ExaBGP configuration...
Starting ExaBGP...
ExaBGP started successfully with PID: XXX
```
### Шаг 5: Проверка загрузки префиксов
```powershell
# Проверка логов загрузки префиксов
docker exec bgp-server cat /app/logs/prefixes.log
```
Ожидаемый результат:
```
[2024-01-01 12:00:00] Starting prefix loader...
[2024-01-01 12:00:00] Loaded 4 prefixes from prefixes.txt
[2024-01-01 12:00:00] Total prefixes loaded: 4
[2024-01-01 12:00:00] Announced prefix: 10.10.10.0/24
[2024-01-01 12:00:00] Announced prefix: 172.16.100.0/24
[2024-01-01 12:00:00] Announced prefix: 192.168.100.0/24
[2024-01-01 12:00:00] Announced prefix: 192.168.200.0/24
[2024-01-01 12:00:00] All prefixes announced successfully
```
### Шаг 6: Настройка RouterOS
Выполните в RouterOS:
```routeros
# Создание BGP экземпляра
/routing bgp instance add name=bgp-server as=65001 router-id=192.168.1.1
# Настройка BGP сети
/routing bgp network add network=192.168.1.0/24
# Настройка BGP пира
/routing bgp peer add name=bgp-server remote-address=192.168.1.100 remote-as=65000 instance=bgp-server
# Включение BGP экземпляра
/routing bgp instance set bgp-server disabled=no
```
### Шаг 7: Проверка BGP сессии
В RouterOS:
```routeros
# Проверка статуса BGP пира
/routing bgp peer print
```
Ожидаемый результат:
```
Flags: X - disabled, I - invalid, D - dynamic, E - established
0 name="bgp-server" instance=bgp-server remote-address=192.168.1.100 remote-as=65000
state=established uptime=1m30s prefix-count=4 updates-sent=4 updates-received=0
withdrawn-sent=0 withdrawn-received=0
```
### Шаг 8: Проверка полученных маршрутов
В RouterOS:
```routeros
# Просмотр полученных BGP маршрутов
/routing bgp routes print
```
Ожидаемый результат:
```
Flags: * - best, b - backup
0 * dst-address=10.10.10.0/24 gateway=192.168.1.100 immediate-gw=192.168.1.100
bgp-local-pref=100 bgp-origin=igp bgp-as-path="" bgp-community="" bgp-ext-community=""
bgp-large-community="" bgp-med="" bgp-prepend="" bgp-atomic-aggregate=no bgp-aggregator-as=""
bgp-aggregator-id="" bgp-nexthop=192.168.1.100 bgp-identifier=192.168.1.100
bgp-cluster-list="" bgp-dampening=no bgp-peer=bgp-server
1 * dst-address=172.16.100.0/24 gateway=192.168.1.100 immediate-gw=192.168.1.100
bgp-local-pref=100 bgp-origin=igp bgp-as-path="" bgp-community="" bgp-ext-community=""
bgp-large-community="" bgp-med="" bgp-prepend="" bgp-atomic-aggregate=no bgp-aggregator-as=""
bgp-aggregator-id="" bgp-nexthop=192.168.1.100 bgp-identifier=192.168.1.100
bgp-cluster-list="" bgp-dampening=no bgp-peer=bgp-server
2 * dst-address=192.168.100.0/24 gateway=192.168.1.100 immediate-gw=192.168.1.100
bgp-local-pref=100 bgp-origin=igp bgp-as-path="" bgp-community="" bgp-ext-community=""
bgp-large-community="" bgp-med="" bgp-prepend="" bgp-atomic-aggregate=no bgp-aggregator-as=""
bgp-aggregator-id="" bgp-nexthop=192.168.1.100 bgp-identifier=192.168.1.100
bgp-cluster-list="" bgp-dampening=no bgp-peer=bgp-server
3 * dst-address=192.168.200.0/24 gateway=192.168.1.100 immediate-gw=192.168.1.100
bgp-local-pref=100 bgp-origin=igp bgp-as-path="" bgp-community="" bgp-ext-community=""
bgp-large-community="" bgp-med="" bgp-prepend="" bgp-atomic-aggregate=no bgp-aggregator-as=""
bgp-aggregator-id="" bgp-nexthop=192.168.1.100 bgp-identifier=192.168.1.100
bgp-cluster-list="" bgp-dampening=no bgp-peer=bgp-server
```
### Шаг 9: Тестирование обновления префиксов
```powershell
# Добавление нового префикса
echo "192.168.300.0/24" >> data/prefixes.txt
# Перезагрузка префиксов
docker exec bgp-server python3 /app/scripts/reload_prefixes.py
```
Проверьте в RouterOS:
```routeros
/routing bgp routes print
```
Должен появиться новый маршрут `192.168.300.0/24`.
### Шаг 10: Тестирование отзыва префиксов
```powershell
# Удаление префикса из файла
# Отредактируйте data/prefixes.txt и удалите одну строку
# Перезагрузка префиксов
docker exec bgp-server python3 /app/scripts/reload_prefixes.py
```
Проверьте в RouterOS:
```routeros
/routing bgp routes print
```
Удаленный префикс должен исчезнуть из таблицы маршрутов.
## Автоматизированное тестирование
### Скрипт тестирования
Создайте файл `test-bgp.ps1`:
```powershell
# Скрипт автоматизированного тестирования
Write-Host "=== BGP Server Testing ===" -ForegroundColor Green
# Проверка Docker
Write-Host "1. Checking Docker..." -ForegroundColor Yellow
try {
docker --version | Out-Null
Write-Host "✓ Docker is available" -ForegroundColor Green
} catch {
Write-Host "✗ Docker is not available" -ForegroundColor Red
exit 1
}
# Проверка контейнера
Write-Host "2. Checking container status..." -ForegroundColor Yellow
$containerStatus = docker ps --filter name=bgp-server --format "{{.Status}}"
if ($containerStatus) {
Write-Host "✓ Container is running: $containerStatus" -ForegroundColor Green
} else {
Write-Host "✗ Container is not running" -ForegroundColor Red
exit 1
}
# Проверка BGP процесса
Write-Host "3. Checking BGP process..." -ForegroundColor Yellow
$bgpProcess = docker exec bgp-server pgrep -f exabgp
if ($bgpProcess) {
Write-Host "✓ BGP process is running" -ForegroundColor Green
} else {
Write-Host "✗ BGP process is not running" -ForegroundColor Red
}
# Проверка префиксов
Write-Host "4. Checking prefixes..." -ForegroundColor Yellow
$prefixCount = docker exec bgp-server cat /app/data/prefixes.txt | Select-String -Pattern "^\d" | Measure-Object | Select-Object -ExpandProperty Count
Write-Host "✓ Found $prefixCount prefixes" -ForegroundColor Green
# Проверка логов
Write-Host "5. Checking logs..." -ForegroundColor Yellow
$logEntries = docker exec bgp-server cat /app/logs/prefixes.log | Measure-Object -Line | Select-Object -ExpandProperty Lines
Write-Host "✓ Found $logEntries log entries" -ForegroundColor Green
Write-Host "=== Testing Complete ===" -ForegroundColor Green
```
### Запуск тестирования
```powershell
.\test-bgp.ps1
```
## Тестирование производительности
### Тест с большим количеством префиксов
```powershell
# Создание файла с большим количеством префиксов
$prefixes = @()
for ($i = 1; $i -le 1000; $i++) {
$prefixes += "192.168.$i.0/24"
}
$prefixes | Out-File -FilePath "data/large_prefixes.txt" -Encoding UTF8
# Замена основного файла
Move-Item "data/prefixes.txt" "data/prefixes_backup.txt"
Move-Item "data/large_prefixes.txt" "data/prefixes.txt"
# Перезагрузка префиксов
docker exec bgp-server python3 /app/scripts/reload_prefixes.py
```
### Мониторинг производительности
```powershell
# Мониторинг ресурсов
docker stats bgp-server
# Проверка времени загрузки
Measure-Command { docker exec bgp-server python3 /app/scripts/load_prefixes.py }
```
## Тестирование отказоустойчивости
### Тест перезапуска контейнера
```powershell
# Перезапуск контейнера
docker-compose restart
# Ожидание восстановления
Start-Sleep -Seconds 30
# Проверка статуса
docker-compose ps
```
### Тест сетевых сбоев
```powershell
# Симуляция сетевого сбоя (требует настройки)
# Отключение сетевого интерфейса на RouterOS
# Проверка восстановления
# Включение сетевого интерфейса
# Проверка BGP сессии
docker exec bgp-server exabgpcli show neighbor
```
## Очистка после тестирования
```powershell
# Остановка сервера
.\scripts\stop-server.ps1
# Удаление контейнера
docker-compose down
# Очистка образов (опционально)
docker system prune -f
```
## Заключение
После успешного прохождения всех тестов BGP сервер готов к продакшн использованию. Регулярно выполняйте тестирование для обеспечения стабильной работы.