
Этот текст — письменная версия моего доклада на 38-м Chaos Communication Congress в конце 2024 года. Если вам удобнее смотреть, запись сделала замечательная команда C3VOC, она есть в плеере media.ccc.de.
Я из тех, кому обязательно надо понять, как и почему что-то работает. Эмпирическое правило у меня такое: большинство вещей либо очень умные (в сложности или в простоте), либо невероятно глупые. Оптическая передача данных в моём мире повсюду, а я при этом не представлял, как она на самом деле работает, дальше того, что видно в командной строке.
Странный мир оптики
Оптическая передача данных сейчас повсюду в дата-центрах, и моя собственная инфраструктура для bgp.tools не исключение. Вся связность у меня выходит из портов SFP (Small Form-factor Pluggable).
Самое приятное в SFP то, что внутри они по большей части очень простые (если только в них не сидят FPGA и ARM-процессор с Linux).

По сути это набор драйверов лазера и обычно маленькая EEPROM с микроконтроллером, которые сообщают коммутатору или маршрутизатору, что это за модуль, и по желанию отдают важные метрики вроде входящей и исходящей мощности лазера.
Не меньше 95% всех SFP делают на одних и тех же фабриках по ODM-контрактам, так что главное отличие между вендорами SFP — содержимое EEPROM и наценка, которую вендор берёт.
SFP работают на одной «линии» данных: 100M, 1G, 10G и 25G. Если нужно быстрее, придётся перейти на модули с несколькими линиями. Для примера возьмём форм-фактор QSFP (Quad Small Form-factor Pluggable):

Идея та же, что у SFP, но линий четыре (или восемь в варианте Double Density, DD) по 10/25/50/100G.
Такие модули бывают простыми, просто четыре «луча» лазера, которые вместе дают более быстрый канал. А бывают, как 100G-когерентные, довольно сложными: там стоит чип, который сводит четыре линии данных в одну более быструю со специальным кодированием для передачи на большие расстояния. Обычно для этого в каждом модуле стоит продвинутый процессорный чип, как правило по техпроцессу 7–5 нм, чтобы снизить энергопотребление и нагрев.
Всё это нужно, чтобы оптические модули были взаимозаменяемы. Иногда нужна дешёвая оптика ближнего действия (многомодовая), иногда хочется обойтись одной стеклянной жилой (BiDi), иногда нужна увеличенная дальность. Подключаемые модули можно выбирать под задачу, а коммутатору или маршрутизатору (почти) всё равно.
TOSLINK
На другом конце мира оптики — TOSLINK («Toshiba Link»). Обычно это S/PDIF по оптике. Он есть в большинстве Hi-Fi-систем и в некоторых звуковых картах. Обычно его используют, чтобы избавиться от земляных петель в звуковых трактах.
Там, где у вас аналоговый звуковой сигнал вроде этого, он может ловить помехи:

TOSLINK/S/PDIF превращает его в последовательный сигнал с манчестерским кодированием примерно на 1,5 Мбит/с, который гораздо устойчивее к аналоговым помехам:

Оптика здесь очень далека от современной телекоммуникационной: в TOSLINK используется сравнительно огромный пластиковый кабель с сердцевиной 1 мм (у одномодового волокна сердцевина — 9 микрон стекла!).
Поскольку TOSLINK не рассчитан на большие расстояния, в нём обычно стоят светодиоды, а не лазеры. Вместе с многомодовостью сердцевины 1 мм это даёт типичную максимальную длину кабеля TOSLINK в 10 метров.
И тут я задумался…
Идея
Итак, мы уже знаем, что SFP особо не думают:

А что, если отправлять данные TOSLINK через SFP? Можно ли растянуть (разумеется, без всякой причины) дальность TOSLINK с 10 метров до 10 километров или больше?
Чтобы это выяснить, придётся разобраться, что находится на обратной стороне двустороннего разъёма SFP:

Бесполезные для нас контакты я затёр: в основном они относятся к интерфейсу микроконтроллера и EEPROM модуля, а нам этот интерфейс для передачи не нужен.
Можно заметить, что на передачу (и на приём) приходится по два контакта. Дело в том, что интерфейс данных между SFP и хостом использует дифференциальную передачу сигнала, чтобы снизить перекрёстные наводки и другие нежелательные эффекты на высоких скоростях.
Поэтому сигнал TOSLINK нельзя просто подать на модуль напрямую. Его нужно пропустить через драйвер LVDS, а на другом конце — через приёмник. К счастью, замечательные люди из Open source mobile communications (osmocom) сделали плату «Sfp-experimenter», где всё это собрано в одном удобном корпусе, а мой друг Sam W собрал мне пару штук!

Разобравшись с интерфейсом SFP, я купил дешёвые TOSLINK-преобразователи, аналого-цифровой (АЦП) и цифро-аналоговый (ЦАП), чтобы было удобно тестировать, и перехватил их оптические сигналы, чтобы включить их в общую конструкцию. На верхнем уровне она выглядит так:

В реальности прототип выглядит так — пучок проводов и оптического кабеля, который очень не понравился бы досмотру в аэропорту:

Подозрительный вид не помешал: прототип заработал! Я подавал звук с ноутбука через АЦП в модуль, а обратный сигнал из модуля (кабель был замкнут в петлю) шёл на ЦАП и дальше в мои наушники без слышимых проблем!

На осциллографе видна небольшая задержка между сигналом S/PDIF на входе в SFP и на выходе из него, около 34 наносекунд. Это соответствует оптическому пути примерно в 6 метров. С учётом того, что сам кабель был добрых 5 метров, я бы сказал, что результат отличный!
А можно дальше?
Ладно, 5 метров никаких рекордов TOSLINK не бьют (их и пластиковый кабель осилит). Значит, нужно найти достаточно длинный кусок волокна, по которому можно отправить TOSLINK дальше, чем он рассчитан.
Он нашёлся у друга, у которого есть место в двух соседних дата-центрах в районе лондонских Доклендс: Telehouse North и IP House. Пешком между ними примерно 650 метров.

Между зданиями проложена пара волокон и стоит CWDM-мультиплексор. Такие коробки позволяют пустить несколько каналов (каждый на своём «цвете», или канале) по одной паре волокон и выжать максимум из дорогой пары волокон между зданиями (а местами и внутри одного здания!).

Джеймс Райс из Jump Networks щедро выделил мне канал на их мультиплексоре между IP House и Telehouse. Чтобы тестировать было проще (и находиться только в одном месте за раз), я поставил петлю из волокна на стороне мультиплексора в Telehouse, а тестировал из IP House.

После долгой возни в особенно шумной обстановке у меня получилось отправить звук в Telehouse, вернуть его петлёй в IP House через мою конструкцию и вывести на портативную колонку!

На осциллографе видна задержка между отправленным и принятым сигналом около 11 микросекунд.

Если подставить 11 микросекунд и скорость света в стекле в WolframAlpha, получится примерно 2,2 километра. Значит, реальная длина волокна в одну сторону — 1,1 км, хотя пешком всего 0,6 км. Это ожидаемо: кроссировки и прокладка кабеля по зданиям легко добавляют такое расстояние к итоговой петле.

Но это отличная новость! Мы уже превысили типичную максимальную дальность TOSLINK примерно в 219 раз!
Хотя расстояние всё ещё кажется маловатым…
А можно ещё дальше?
А если пойти на глупость? Как далеко можно зайти, прежде чем упрёшься в практические проблемы?
Обычно (по крайней мере в Великобритании) значительная часть магистральной передачи данных для небольших и средних сетей идёт через арендованную ёмкость «волн» (waves). Это услуга, при которой вы перекладываете на кого-то другого необходимость владеть волокном (а в Великобритании заодно смягчаете часть налоговой нагрузки) и оборудованием уплотнения: он берёт ваш оптический сигнал и каким-то образом мультиплексирует его до точки назначения.
Оборудование для таких услуг обычно состоит из набора DWDM-мультиплексоров (более плотной версии уже знакомого CWDM), систем оптической маршрутизации (ROADM) и, что для нас неприятнее всего, «макспондера» (muxponder).
В оптических системах для передачи на большие расстояния часто стоит транспондер или макспондер. Транспондер — относительно простое устройство, которое по сути копирует сигнал из одного модуля в другой. Идея в том, что клиент подключается к вам на удобном ему модуле (скажем, 10G LR на распространённых 1310 нм), а вы транспондером переводите его в нужный «цвет», то есть канал вашего DWDM-мультиплексора (и заодно подгоняете мощность передачи, к этому мы ещё вернёмся).
Макспондер гораздо умнее. Он «склеивает» несколько низкоскоростных сигналов, например восемь входов по 10G, и цифрово мультиплексирует их в один высокоскоростной сигнал на 100G, который занимает всего один канал DWDM-мультиплексора. Так провайдер выжимает максимум из одного канала.
Проблема в том, что макспондер должен понимать входящий сигнал и поддерживает только обычные протоколы вроде Ethernet, Fibre Channel и InfiniBand. Наш странный и сравнительно медленный сигнал TOSLINK макспондер не поймёт.
Значит, задача — найти на дальней оптической трассе канал, которым мне разрешат воспользоваться и в котором нет макспондера.
TOSLINK по DWDM
К счастью, VeloxServ (у них уже стоит моё оборудование) согласились одолжить мне канал DWDM между Telehouse и Interxion LON1 — двумя довольно далёкими друг от друга дата-центрами Лондона:

Я собрал почти такой же стенд, как в прошлый раз (с петлёй в Telehouse), и мне оставалось только вставить в конструкцию DWDM-модуль SFP на нужный канал:

И оно заработало! Задержка туда и обратно вышла 84 микросекунды, то есть около 16,8 км!

В общем и целом 16,8 км — неплохое улучшение по сравнению с 10 метрами!
А можно дальше?
Междугородний TOSLINK
К счастью, LONAP предложили канал DWDM на своём мультиплексоре от здания в лондонских Доклендс до Equinix LD6 в Слау. То есть сигнал выйдет за пределы Лондона (и вернётся)! Междугородний TOSLINK! (Формально это не междугородний канал: Слау числится town, статуса city у него нет. Со статусом города в Великобритании всё странно, для него нужно участие монарха, и так далее.)
Вот примерно наш маршрут на карте:

Оптический путь — около 70 км, а мультиплексор (SmartOptics DCP-M40-C-ZR+) для такой дальности имеет встроенное усиление EDFA. Стенд похож на прошлые:

Петлю поставили в Слау, но на этот раз с оптическим аттенюатором.

Раз в тракте стоят усилители EDFA, нужно следить, чтобы все каналы на входе усилителя были примерно одинаковой мощности, иначе слабые сигналы он усилит неправильно. Мультиплексор усиливает и на выходе, и на входе, поэтому без аттенюатора моя TOSLINK-петля выбила бы остальные рабочие каналы на этом участке (выходной сигнал мультиплексора гораздо ярче того, что выдают их модули)!
Барабанная дробь
Не заработало.

Сначала я проверил стенд с многомодовым модулем и убедился, что всё собрано правильно. Затем поставил DWDM-модуль (FS.COM DWDM-SFP10G-80) — и стенд перестал работать. Проверив USB-сетевой картой на гигабитном SFP, что петля исправна, я заключил, что DWDM-модуль на низких скоростях не работает. Но насколько низко его вообще можно опустить?
Я заменил TOSLINK-устройство генератором сигналов осциллографа, прогнал меандр по частотам и увидел странное поведение:


Похоже, модуль начинает «работать» с 3 МГц, но сигнал явно искажён и далёк от прямоугольного. Мы, конечно, подаём совсем не то, на что модуль рассчитан (10G Ethernet, XGMII), но поведение всё равно удивительное: меандр становится «вменяемым» только примерно с 6,5 МГц.
6,5 МГц сильно выше тех 2 МГц, что даёт TOSLINK, а другого модуля на канал, где стояла петля, у меня с собой не было. Вторая площадка довольно далеко, так что я признал поездку провальной, собрался и уехал домой ни с чем.
Почему этот 10G-модуль так себя ведёт?
Оказалось, что найти данные о чипах внутри таких модулей очень трудно. Я вскрыл несколько сломанных и запасных 10G DWDM-модулей: у одних маркировка с чипов стравлена, а по чипу в модуле другого вендора я не нашёл вообще никаких упоминаний, что такой чип существует, не говоря уже о даташите.
Модули ближнего действия, которые работали раньше, «всего лишь» требовали минимальной скорости около 150 кГц. Поэтому я предположил, что в DWDM-модулях или модулях для больших расстояний есть какая-то обработка сигнала, и решил просто купить модуль, рассчитанный на более низкие скорости. Но стоят такие модули довольно дорого, и прежде чем вкладывать в проект ещё денег, я хотел убедиться, что это сработает. Поэтому я написал нескольким вендорам, которые выглядели дружелюбно, в надежде получить ответы.
К счастью, один из них (FLEXOPTIX, спасибо Герту и Томасу) ответил очень полезно:
Ещё одна информация, которая может вам помочь: убедитесь, что в трансивере, который вы хотите использовать, нет микросхемы восстановления тактовой частоты и данных (CDR), её ещё называют eyeopener или ретаймер. Такие микросхемы работают только на определённых скоростях, и даже мультискоростные вряд ли справятся с вашей задачей. Хорошая новость в том, что в большинстве низкоскоростных трансиверов таких микросхем нет: на приёме у них только ограничивающие усилители, а на передаче — драйверы лазерного диода. Они справляются и с нестандартными скоростями. В дальнобойных трансиверах для многогигабитных применений такие микросхемы встречаются чаще, их стоит избегать.
На самом деле это логично: на больших расстояниях сигнал «разрывает» дисперсия в волокне. Вот, например, особенно тяжёлая симуляция того, как это выглядит на 140 км:

Так что на высоких скоростях ставить ретаймер, чтобы отдавать на приёмную сторону более чистый сигнал, вполне разумно.
С учётом всего этого я нашёл недорогой 1G-модуль, продавец которого по переписке заявил, что микросхемы CDR и ретаймера в нём нет. Но, открыв коробку, я сразу понял, что дела плохи:

Ещё одну провальную поездку в дата-центр устраивать не хотелось, так что я покопался и выяснил, что по запросу HLSPDW-XE09 находится куча 10G DWDM-модулей других вендоров. Проверка генератором сигналов осциллографа показала, что модуль ведёт себя почти так же, как предыдущий. Отсюда вывод: почти наверняка это 10G DWDM-модуль, у которого EEPROM перепрошили под «1G».
Модуль я вернул продавцу, ведь до заказа мы переписывались и он «подтвердил», что ни CDR, ни ретаймера и ничего подобного там нет. Надо отдать им должное, деньги вернули без проблем.
Подозреваю, что на самом деле 1G (и более медленные) DWDM-модули давно сняты с производства, а ретаймер в фактически 10G-модуле сигналу 1G вряд ли помешает, поэтому такое решение считается приемлемым почти для всех сценариев (кроме моего безумного!).
140 км TOSLINK, второй заход
Я поспрашивал в отраслевых каналах, не готов ли кто-нибудь расстаться с 1G-модулями SFP DWDM или ещё более медленными, и в итоге мне одолжили несколько штук. К сожалению, они были на других каналах, а значит, придётся снова ехать в Слау переключать физическую коммутацию.
Со старым 1G DWDM-модулем на другом канале (спасибо, Брэндон Баттерворт!) я собрал стенд и убедился, что всё работает. Потом переключился на DWDM-модуль и услышал чудесные звуки музыки, которая уходит из города и возвращается обратно.
На осциллографе прежним способом, вручную находя, когда последовательность битов появится на другом конце, задержку было бы почти невозможно измерить. Поэтому я настроил на осциллографе триггер, «прослушивал» щупом сторону передачи и смотрел, через какое время сигнал появится на стороне приёма (так нагляднее):

Этот способ показывает 720 мкс на круг по волокну, что примерно соответствует 143,2 км и сходится с ожидаемой длиной канала. У нас получилось!
Поскольку максимальная длина кабеля TOSLINK по спецификации — примерно 10 метров, эта конструкция дала нам 14 600-кратный прирост дальности по сравнению со штатной схемой! (Прим. пер.: по приведённым цифрам выходит около 14 300 раз, множитель — авторский.)
Возможные будущие «инновации»
Если бы в модуле SFP не было части схемы управления, можно было бы управлять лазером напрямую и передавать «сырой» аналоговый звук во всей красе (и, наверное, испортить лазер).
Это пригодится, если цифровой звук вам не по душе, и примерно так уже работает RF over Glass. Один друг предположил, что, вероятно, можно подать в немодифицированный модуль высокочастотный ЧМ-сигнал и получить на другом конце что-то похожее на музыку (сам я это не проверял)!
Есть соблазн подключить к обоим концам модем для dial-up. Вероятно, это стало бы величайшей тратой оптического канала шириной 100 ГГц в наши дни: на выходе всего ~40 кбит/с. Подозреваю, что спецслужбу, если она слушает линию, это бы порядком озадачило.
Итоги
Да, по оптике SFP можно передавать «медленные» сигналы! Большинство модулей начинают работать примерно со 150 кГц, но микросхемы ретаймера/CDR в большинстве случаев не любят работать ниже 6 МГц. Если же их избежать, довольно произвольный сигнал можно отправить очень и очень далеко!
Для продакшена особого смысла во всём этом нет: в 2025 году для большинства задач есть решения поверх IP получше. Но понимать, как всё устроено, важно! Эти знания позволяют строить более крупные, более удачные и более жуткие решения и обходные пути, а я как минимум теперь знаю гораздо больше об оптической передаче и о том, как устроены модули внутри. Может быть, теперь и вы тоже!
![[Перевод] Оптический аудиокабель рассчитан на 10 метров. Я пустил его звук на 143 км через SFP](https://habrastorage.org/extt/52/96/42/529642f6ec2ca8e2fc9ae506d5de56cb.jpg)
Комментарии 0