Назначьте каждой задаче подходящий канал

LinuxBeginner
Практиковаться сейчас

Введение

Willow Games готова к новому забегу. Столу счёта нужны быстрые взаимодействия, а медиастолу — полная передача звука репетиции. Оба канала работают, но исходный маршрут отправляет обе задачи по одному каналу.

Вы повторите короткие измерения в новой подготовленной среде, выберете отдельные маршруты назначения и отправите новый счёт и полное аудио. Сначала завершите Измерьте сетевые потребности задач мероприятия или владейте аналогичными навыками ping, iperf3 и ограниченных маршрутов IPv4. Программирование и кодирование медиа не нужны.

Используйте Event Client для команд и Event Receipts для просмотра и воспроизведения фактически принятых данных. Менять можно только два названных маршрута назначения и свои новые отправления. 45 минут — оценка автора; изолированные узлы используют одно ядро и представляют проводные виртуальные пути, а не измерения публичных поставщиков.

Выбирайте по заданной рабочей нагрузке

На этом шаге вы измерите подготовленные каналы и выберете один для каждой задачи. Начните в Event Client, уже в /home/labex/project/event-links. У этой работы своя новая сеть и файлы. Предполагается владение инструментами задержки и скорости из Измерьте сетевые потребности задач мероприятия, а также основами чтения маршрутов назначения; файлы и работающие процессы не переносятся.

Сначала посмотрите на нормальную функцию, которую нужно сохранить. У стола счёта уже есть запись разминки. curl --noproxy '*' обходит прокси, -fsS завершает команду ошибкой при ошибках HTTP и показывает сообщения, а --max-time 35 ограничивает передачу:

curl --noproxy '*' -fsS --max-time 35 http://10.205.10.10:8080/reference

Ожидается сохранённый счёт warmup со значением 1–1. Переключитесь на Event Receipts. Две основные карточки ждут heat-7 и opening-sound.wav; страница не считает разминку выполненной новой задачей. Вернитесь в Event Client.

Столу счёта нужны короткие взаимодействия: выберите канал со стабильно малым RTT и средним выборки заметно ниже планового бюджета 80 ms. Медиакоманде нужна высокая скорость передачи больших объёмов: выберите путь со скоростью приёмника заметно выше 10 Mbps в этой подготовленной сцене. Эти широкие бюджеты помогают выбрать, но не гарантируют интернет-сервис. Не пытайтесь подстроить каналы под них.

Прочитайте предоставленные идентификаторы каналов и новый счёт. cat выводит каждый файл:

cat links.tsv
cat source/score.json

Два бизнес-назначения — 10.205.10.10 для счёта и 10.205.10.20 для медиа, оба на HTTP-порту 8080. Изначально оба маршрута /32 используют lane1. Измерьте один медиаадресат с этого же клиента по каждому каналу, по одному тесту за раз. ip route replace меняет только это назначение; via указывает следующий узел, а dev — интерфейс. ip route get подтверждает выбор ядра до отправки трафика.

ip route replace 10.205.10.20/32 via 10.205.1.1 dev lane1
ip route get 10.205.10.20

ping -n использует числовые адреса, -c 4 останавливается после четырёх запросов, а -W 2 ограничивает каждое ожидание ответа двумя секундами. Прочитайте среднее и разброс RTT в миллисекундах:

ping -n -c 4 -W 2 10.205.10.20

iperf3 -c соединяется с портом 5201 подготовленного приёмника; -t 5 выполняет пятисекундный тест данных TCP. По умолчанию направление — от клиента к приёмнику, как в медиазадаче. Прочитайте итоговую скорость receiver. Mbps означает миллионы бит в секунду; деление на восемь даёт приблизительное MB/s до накладных расходов.

iperf3 -c 10.205.10.20 -t 5

Дождитесь окончания. Теперь измените только медиамаршрут и повторите:

ip route replace 10.205.10.20/32 via 10.205.2.1 dev lane2
ip route get 10.205.10.20
ping -n -c 4 -W 2 10.205.10.20
iperf3 -c 10.205.10.20 -t 5

После опыта восстановите начальный медиамаршрут:

ip route replace 10.205.10.20/32 via 10.205.1.1 dev lane1
ip route get 10.205.10.20

Должен быть заметен большой контраст: lane1 — примерно 11 ms RTT и 1,9 Mbps, lane2 — примерно 180 ms и десятки Mbps. Первое обнаружение соседей и планирование могут повлиять на один замер. Если результаты близки или сервер занят, дождитесь окончания теста ограниченной длительности, подтвердите маршрут и повторите ту же выборку последовательно. Не совмещайте тесты и не меняйте формирование трафика. Напечатанный отчёт не заменяет реального трафика, а тестовые байты iperf не доставляют ни одну из новых бизнес-задач.

Измените только маршруты назначения

На этом шаге вы преобразуете решение по измеренной рабочей нагрузке в два конкретных маршрута. Начните в Event Client. Lane1 даёт малый RTT для небольшого взаимодействия со счётом. Lane2 даёт скорость передачи, нужную большому файлу проверки звука. Оба канала должны оставаться работоспособными.

Перед правкой прочитайте всю таблицу:

ip route show

Не меняйте маршрут по умолчанию курса и эталонное назначение 10.205.10.30. Заменять можно только маршруты 10.205.10.10/32 и 10.205.10.20/32. /32 означает ровно один адрес IPv4; более широкий сетевой маршрут затронул бы другие назначения. Сеть платформы вне задачи.

Явно задайте маршрут счёта уже изученной формой с replace, via и dev:

ip route replace 10.205.10.10/32 via 10.205.1.1 dev lane1
ip route replace 10.205.10.20/32 via 10.205.2.1 dev lane2

Проверьте фактический выбор ядра для каждого назначения:

ip route get 10.205.10.10
ip route get 10.205.10.20

Ожидается трафик счёта через 10.205.1.1 dev lane1 src 10.205.1.2, а медиа через 10.205.2.1 dev lane2 src 10.205.2.2. Если один выбор неверен, повторите только его полную команду replace с правильными следующим узлом и интерфейсом. Не очищайте таблицу и не меняйте маршрут по умолчанию.

Проверьте сохранность независимого эталонного маршрута реальным запросом:

curl --noproxy '*' -fsS --max-time 35 http://10.205.10.30:8080/reference

Ожидается исходный ответ warmup, 1–1, preserved. Упражнение разделяет трафик по двум разным адресам назначения. Оно не различает приложения с одним адресом, не настраивает маршрутизацию по политикам, не объединяет каналы и не выбирает публичного интернет-провайдера.

Доставьте новый счёт и медиа

На этом шаге вы передадите новую работу по выбранным маршрутам и сравните полностью принятое медиа. Начните в Event Client. Новый счёт — матч heat-7, хозяева 3, гости 1. Новая медиазадача — opening-sound.wav, оригинальный синтетический 48-секундный тон проверки звука для репетиции. Корректные байты моно PCM WAV подготовлены; кодировать или менять их не нужно.

Перед отправкой прочитайте предоставленный счёт:

cat source/score.json

Имена и строковые значения JSON используют двойные кавычки; счёт — числа. -H задаёт тип содержимого JSON, а --data-binary @source/score.json читает точный файл и выполняет POST. Строка -w добавляет прошедшие секунды после подтверждения: \n создаёт новую строку, а %{time_total} — общее время curl. Оно включает установку соединения, а не только RTT.

curl --noproxy '*' -fsS --max-time 35 -H 'Content-Type: application/json' --data-binary @source/score.json -w '\nseconds=%{time_total}\n' http://10.205.10.10:8080/scores

Ожидайте правильные матч и счёт, local_ip со значением 10.205.10.10 и peer_ip со значением 10.205.1.2. Peer — источник, который действительно наблюдал приёмник. Подтверждение свидетельствует об этой передаче, а не прогнозирует её по текущему маршруту.

-T отправляет указанный файл методом PUT в медиасервис. Это может занять несколько секунд; дождитесь результата:

curl --noproxy '*' -fsS --max-time 35 -T source/opening-sound.wav -w '\nseconds=%{time_total}\n' http://10.205.10.20:8080/media/opening-sound.wav

Ожидаются новое имя файла, число байтов, хеш содержимого, local_ip со значением 10.205.10.20 и peer_ip со значением 10.205.2.2. Успешный ответ для демонстрационного файла не завершает эту задачу.

POST с тем же ID матча заменяет этот матч; PUT с тем же именем медиа заменяет эту медиазадачу. Если передали по неверному пути, исправьте маршрут и отправьте ту же задачу снова. Изменение маршрута после передачи не меняет её старое подтверждение. Никогда не редактируйте хранилище подтверждений или исходные файлы, чтобы имитировать результат.

Независимо прочитайте приёмники методом GET:

curl --noproxy '*' -fsS --max-time 35 http://10.205.10.10:8080/receipts
curl --noproxy '*' -fsS --max-time 35 http://10.205.10.20:8080/receipts

Скачайте принятое медиа, а не копируйте локальный источник. -o сохраняет ответ, cmp сравнивает каждый байт, а sha256sum выводит хеш каждого указанного файла:

curl --noproxy '*' -fsS --max-time 35 -o received/opening-sound.wav http://10.205.10.20:8080/media/opening-sound.wav
cmp source/opening-sound.wav received/opening-sound.wav
sha256sum source/opening-sound.wav received/opening-sound.wav

Ожидайте отсутствие вывода cmp и совпадение двух строк хеша. Пустой файл или файл с другим содержимым не совпадёт с подготовленным аудио. Переименование файла не меняет его байты или хеш. Если сравнение не удалось, прочитайте медиаподтверждение, повторите PUT неизменённого источника по верному назначению, скачайте снова и сравните.

Переключитесь на Event Receipts, выберите Refresh receipts и найдите heat-7 со счётом 3 : 1, новое имя медиа и разные источники соединений. Запустите Received event audio и используйте Download received audio для получения байтов приёмника. Браузер может быть без звука или аудиоустройства; длительность и продвижение воспроизведения всё равно подтверждают декодирование принятого WAV. Запустите воспроизведение явно; страница не делает этого автоматически.

В итоговом виде ниже сравните два значения Connection from рядом с новым счётом и принятым аудио. Аудиоплеер показывает фактически декодированную длительность и позволяет выбрать позицию воспроизведения.

Новый счёт и полное воспроизводимое принятое аудио

Если curl не соединяется (код 7) или превышает время (код 28), вернитесь в Event Client и перепроверьте соответствующий результат ip route get и точный URL. Отказ HTTP (код 22) отличается: сравните точный путь конечной точки и предоставленный JSON или файл тела. Параметр -f опускает тело HTTP-ошибки; не настраивайте сеть для исправления ошибки бизнес-формата. Обновление страницы лишь читает приёмники и не выполняет недостающую работу.

Вернитесь в Event Client и ещё раз подтвердите сохранённый эталон:

curl --noproxy '*' -fsS --max-time 35 http://10.205.10.30:8080/reference

Вы доставили две разные нагрузки по подходящим путям, сохранив оба канала, исходные байты, подготовленное формирование трафика, эталонные данные и посторонние маршруты. Оценка читает существующие бизнес-записи и нативные сетевые факты до ограниченных GET-проверок; она никогда не отправляет счёт, не загружает файлы и не чинит путь.

Резюме

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