TSN: как детерминированный Ethernet и прерывание кадров реально внедряются на FPGA
«Наилучшая попытка» стандартного Ethernet недостаточна в промышленном управлении: большая передача файла на том же кабеле может задержать кадр управления движением на миллисекунды. TSN (Time-Sensitive Networking, IEEE 802.1) добавляет синхронизацию времени, планирование по времени и прерывание кадров, превращая Ethernet в предсказуемую и вычислимую сеть. Статья разбирает это в цифрах и показывает внедрение на платах FPGA.
Почему стандартный Ethernet «непредсказуем» в промышленном управлении
Стандартный Ethernet по сути работает по принципу «кто первым пришёл, тот первым и отправляет». Проблема не в средней задержке, а в неуправляемом худшем случае:
- На порту 1Gbps как раз передаётся большой кадр 1518 байт;
- В тот же момент на порт коммутатора приходит 64-байтовый кадр управления движением высокого приоритета;
- Коммутатор не может прервать идущий кадр, поэтому кадр управления встаёт в очередь и ждёт.
Это ожидание в очереди и есть источник джиттера. В офисной сети это неважно, но в многоосевом управлении движением, сочленениях роботов и координации сервоприводов цикл управления обычно 125µs или короче: опоздавший на сотни микросекунд кадр управления рассинхронизирует оси.
TSN не меняет кабель, а накладывает на Ethernet набор детерминированных правил планирования, чтобы худший случай можно было проектировать и вычислять.
Что реально решает TSN: четыре стандарта вместе
TSN — не один протокол, а набор стандартов рабочей группы IEEE 802.1. Четыре наиболее используемых блока:
| Стандарт | Что решает | Простыми словами |
|---|---|---|
| 802.1AS (gPTP) | Синхронизация времени по всей сети | Все коммутаторы и узлы имеют единые часы в пределах 1µs |
| 802.1Qbv (TAS, планировщик по времени) | Трафик отправляется по расписанию | У очередей каждого порта есть «расписание ворот»: когда уходит реальный, когда обычный трафик, до микросекунды |
| 802.1Qbu / 802.3br (прерывание кадров) | Высокоприоритетные кадры не блокируются большими | Длинный кадр можно прервать на середине, пропустить важный и продолжить |
| 802.1Qat / 802.1Qav | Резервирование полосы и управление очередями | Реальным потокам резервируется фиксированная полоса, обычный трафик не врывается в неё |
Представьте TSN как выделенную полосу для автобуса на кабеле: сначала все перекрёстки синхронизируют часы (gPTP), затем автобус в назначенное время едет по выделенной полосе, а другой трафик — в непиковое время (TAS), и когда грузовик перегородил дорогу, автобус проскакивает в щель (прерывание).
Три цифры: от миллисекунд к микросекундам
Сколько кадр занимает линию 1Gbps
Сначала физический уровень. 1Gbps = 10^9 бит в секунду; время передачи = биты / 10^9.
| Тип кадра | Байты | Биты | Время передачи на 1Gbps |
|---|---|---|---|
| Минимальный кадр Ethernet | 64 Б | 512 бит | 0,512 µs |
| Обычный кадр | 512 Б | 4096 бит | 4,10 µs |
| Максимальный стандартный кадр | 1518 Б | 12144 бит | 12,14 µs |
| Jumbo-кадр | 9000 Б | 72000 бит | 72,0 µs |
Максимальный стандартный кадр занимает линию около 12,1µs. Без прерывания высокоприоритетный кадр управления ждёт в худшем случае все эти 12,1µs плюс пересылку коммутатором и очередь — джиттер легко доходит до сотен микросекунд и миллисекунд.
Сколько блокировки снимает прерывание
802.1Qbu/802.3br разбивает длинный кадр на границе 64 байт. Когда приходит высокоприоритетный кадр:
- Если идущий длинный кадр прошёл первые 64 байта (контрольная точка фрагмента), сразу прервать его;
- Полностью отправить высокоприоритетный кадр (худший случай 0,512µs);
- Запомнить точку разрыва длинного кадра и продолжить позже.
Сравним худшую блокировку:
- Без прерывания: кадр управления ждёт целый большой кадр ≈ 12,14µs;
- С прерыванием: кадр управления ждёт меньше одного фрагмента (≤64Б, 0,512µs) плюс своё время передачи.
Этот разрыв от ~12µs до ~1µs и позволяет TSN выходить на микросекундные циклы управления.
Как выравнивается синхронизация gPTP
Расписание TAS должно использовать одно общее время в сети, иначе каждый коммутатор открывает свои ворота в своё время. 802.1AS (gPTP) выравнивает мастер и ведомый через обмен метками времени на уровне канала:
- Главные часы периодически шлют синхросообщения;
- Каждый хоп коммутатора ставит аппаратную метку времени на входе/выходе пакета, корректируя асимметрию канала;
- Конечные узлы подстраивают локальные часы по главным.
На практике сквозное рассогласование gPTP обычно в пределах ±1µs — это предпосылка для расписаний TAS с микросекундной granularностью. Без хорошей синхронизации всё планирование бессмысленно.
Внедрение TSN на FPGA: от MAC до временных ворот
Метки времени и гейтинг TSN требуют аппаратной точности; стек на CPU с этим не выходит на микросекунды — здесь и находится FPGA. Типичная цепочка TSN-узла на FPGA:
1. PHY: мультискорость 100M/1G/2,5G/5G, с фрагментацией и реассемблингом для прерывания кадров (802.3br);
2. Ethernet MAC: жёсткий или мягкий MAC, выдающий потоки с метками времени;
3. IP-ядро TSN: ведомые часы gPTP, планировщик временных ворот TAS, прерывание/реассемблинг в логике FPGA;
4. Бизнес-логика: кадры управления движением, данные датчиков и обычный трафик в разных очередях.
Ключевой момент: метки времени должны ставиться аппаратно на границе PHY/MAC, а не записываться ПО после приёма пакета — одно это стоит десятков микросекунд. FPGA держит всю цепочку «пакет пришёл → метка → проверка таблицы ворот → решение о времени отправки» в одном домене тактовой частоты.
Выбор: три класса плат под узлы TSN
Разные сценарии TSN требуют разных логических ресурсов и трансиверов; выбирайте по бюджету и числу портов:
| Плата | Платформа FPGA | Роль в TSN | Почему |
|---|---|---|---|
| Ядро XCKU15P | Kintex UltraScale+ | Многопортовая агрегация TSN / edge-шлюз | Много логики, трансиверы GTH и жёсткий Tri-Mode MAC; тянет ведомый gPTP + многоплановое TAS-планирование + ускорение задач |
| DUF7690T | FudanMicro JFM7VX690T (совместим с XC7VX690T) | Высоконадёжный / отечественный узел TSN | Класс Virtex-7, промышленный температурный диапазон, для линий с требованиями к цепочкам поставок и надёжности |
| DUK7410T | FudanMicro JFM7K410T (совместим с XC7K410T) | Одно-/двухпортовый конечный узел TSN | Класс Kintex-7, дешевле; хватает на один ведомый порт gPTP плюс простой TAS, для массовых конечных узлов |
Типичная связка: DUK7410T как полевые конечные узлы, DUF7690T как отечественные шлюзы рабочих мест, XCKU15P как многопортовый узел агрегации TSN всей линии — тогда обычный IP/видеотрафик и реальный управляющий трафик разделены очередями TSN на одном кабеле.
Пример: перевод смешанного кабеля на TSN
Станок раньше использовал два кабеля: один для реального управления PLC и сервоприводами, другой для изображений с камер и логов. После модернизации объединили в один гигабитный кабель, разделённый TSN:
- Реальные кадры управления идут через выделенные ворота TAS, цикл 125µs, зарезервировано около 10% полосы;
- Массовый трафик камер идёт по обычной очереди, а прерывание гарантирует, что он никогда не заблокирует кадр управления;
- gPTP выравнивает 4 сервопривода в пределах 1µs.
Замеры после модернизации: худший джиттер кадра управления упал примерно с 800µs до менее 3µs, число кабелей сократилось с двух до одного, порты коммутатора и затраты на проводку снизились.
Детерминизм — это не ускорить сеть, а превратить «худший случай» из непознаваемого в вычислимый; именно это FPGA закладывает временем в аппаратуру.
Дополнительное чтение
- [Оптоволоконная обратная линия 10G/25G: высокополосные каналы на дистанции](/article/fiber-backhaul-10g-25g/)
- [Экосистема механосборок FMC: расширение плат специализированными интерфейсами](/article/fmc-mezzanine-ecosystem/)
- [Планирование полосы PCIe: расчёт полосы между хостом и платой](/article/pcie-bandwidth-planning/)
