Измеряем скорость света в домашних условиях

в 13:27, , рубрики: HFT, Компьютерное железо, Сетевые технологии, скорость света, физика

...или как измерить задержки вашего HFT‑сетапа не привлекая санитаров.

Эта статья является развернутым ответом на комментарий. Дело в том, что во многих статьях любят показать модное оборудование за триллиарды долларов, или выпендриться какими‑то крутыми новинками.

Я хочу показать, что всё это можно сделать из говна и палок дешёвых старых компонентов. И ответить на несколько типичных вопросов, первый из которых, сколько времени задержки добавляет лишняя длина кабеля. В биржевой инфраструктуре обычно используется 10G сеть, и для любых нетривиальных расстояний (более 3м, за пределы стойки) это будет оптика. Итак, мы будем измерять скорость света в оптическом кабеле, то есть в стекле.

Из школьного курса физики мы знаем, что скорость света это самая большая скорость во вселенной. Но она такая только в вакууме. А вот в любой прозрачной среде она зависит от показателя преломления, причём зависит достаточно просто: V=frac{C}{n} , где V — скорость света в нашей среде, C — скорость в вакууме (≈3×10⁸м/c), n — показатель преломления (для стекла обычно ≈1.5). Значит V ≈ 200 тыс. км/c, давайте убедимся, что нас нигде не обманывают.

Итак, для эксперимента нам понадобится:

  • стеклянный провод, в котором собственно мы и будем гонять свет (у меня было несколько MM патч‑кордов разной длины);

  • лазеры и фотодиоды, а точнее, обычные SFP+трансиверы, которые будут отправлять свет в провод (и принимать его);

  • сетевая карта, которая будет управлять трансиверами (сами‑то они не сообразят когда и что делать);

  • ещё одна сетевая карта (а точнее, карта захвата), чтобы записывать, когда мимо неё пролетел свет;

  • способ отвести немного пролетающего мимо света из длинного кабеля (оптический сплиттер).

Для всего этого мы не будем использовать лабораторное оборудование, или специальные low‑latency свитчи. Попробуем пройтись по самому дну eBay и поймать что‑то там. Вот что у меня вышло:

  1. MM LC‑LC провода бывают в очень разную цену, мне как‑то удалось урвать 3шт 20-метровых кабелей всего за $15. Короткие кабели китайцы продают за 1–2$;

  2. SFP+трансиверы мультимод на 10г сейчас продаются за $5, иногда идут в комплекте с сетевухами, или даже на авито можно найти не сильно дороже;

  3. сетевые карты: Solarflare, простите, Xilinx, AMD предыдущих поколений (sfn6122f/sfn7122f) стоят в районе $20 за штуку, либо старый добрый Mellanox Nvidia mcx312a чуть дороже (за $30–40);

  4. оптический сплиттер (он же fiber tap) за $15 (полно вариантов производства NetOptics ixia Keysight);

  5. карта захвата фирмы после недолгой интрижки с Emulex-ом компания вернула старое название</p>" data-abbr="Endace ">Endace — самое дорогое оборудование в этом списке, $50.

$110 лута с eBay

$110 лута с eBay

Как оказалось, «модные» карты для HFT (даже SF или Mlnx, что уж говорить про всякий интел), совершенно не умеют засекать маленькие интервалы времени. Для этого и была приобретена карта захвата. Но с ней другой прикол: без набора софта она абсолютно бесполезна (именно по этой причине на ебее они продаются сильно дешевле своей List Price). Для Solarflare или Mellanox базовые драйвера уже есть в ядре линукса (а к некоторым картам присутствуют и в стандартной поставке винды), а вот для Endace нам внезапно помогут итальянские хакеры, а точнее не они сами, а факт того, что они обделались в далёком 2015-м году и устроили незапланированный распределённый бэкап своих репозиториев, в одном из которых можно гуглить HackedTeam</p>" data-abbr="найти">найти полный комплект нужного нам софта (правда, под очень древний линукс, ну штош...). Да, пришлось покопаться в софтовых окаменелостях, зато используемая карта даёт погрешность всего‑лишь +-7.5ns, а мелланокс вообще интервалы меньше 200ns не видит.

собираем несложную конструкцию

собираем несложную конструкцию
Если месиво проводов на картинке выше не очень понятно, то вот схема
Измеряем скорость света в домашних условиях - 7

Дальше мы просто отправляем одинокий пинг, а в это время записываем трафик через tcpdump dagsnap. После того, как проделаем эту операцию несколько раз с кабелями разной длины, составим итоговую таблицу, скорость посчитаем с учётом того, что внутри сплиттера есть 30–50 см «лишнего» кабеля, а точность измерения времени ±7.5нс:

длина кабеля, м

время, нс

скорость, тысяч км/c

1

7, 7, 8, 7, 7, 7, 8

93..

5

29, 30, 30, 30, 30

145..235

7

30, 38, 44, 38, 38, 30

168..240

20

111, 105, 111, 104, 105

183..208

40

201, 201, 201, 202, 201

194..208

60

298, 298, 298, 305, 306, 298

194..206

три провода по 20м, туда-обратно</p>" data-abbr="120">120

603, 604, 603, 604, 604, 604

197..201

Вывод: мы успешно подогнали лабораторку измерили скорость света в стекле, и получили значение, очень похожее на правду.

А что там с HFT? А с ним всё просто. Тем же немудрёным способом, и тем же дешёвым железом можно измерить задержку от пакета с рыночными данными и до пакета выставления заявки.

Очень часто в рекламных буклетах есть заявления вида «лейтенси нашей вундер‑вафли составляет Х микросекунд! *» и * — измерено софтом. Рекомендуется всегда уточнять так называемый wire latency, да и измерить собственный тоже не помешает. В некоторых случаях результат может вас неприятно удивить...

«Классические» 5нс/метр оптики мы получили выше экспериментальным путём, но уже изобретено более быстрое волокно — hollow core fiber или photonic crystal fiber, в которых обещают что свет будет передаваться со скоростью света. Если у кого‑нибудь есть такое на тест, то с радостью приму;)

Автор: Антон Д

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js