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

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

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

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

Из школьного курса физики мы знаем, что скорость света это самая большая скорость во вселенной. Но она такая только в вакууме. А вот в любой прозрачной среде она зависит от показателя преломления, причём зависит достаточно просто: V = 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. карта захвата фирмы

    $110 лута с eBay

    Как оказалось, «модные» карты для HFT (даже SF или Mlnx, что уж говорить про всякий интел), совершенно не умеют засекать маленькие интервалы времени. Для этого и была приобретена карта захвата. Но с ней другой прикол: без набора софта она абсолютно бесполезна (именно по этой причине на ебее они продаются сильно дешевле своей List Price). Для Solarflare или Mellanox базовые драйвера уже есть в ядре линукса (а к некоторым картам присутствуют и в стандартной поставке винды), а вот для Endace нам внезапно помогут итальянские хакеры, а точнее не они сами, а факт того, что они обделались в далёком 2015-м году и устроили незапланированный распределённый бэкап своих репозиториев, в одном из которых можно собираем несложную конструкцию

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

    Дальше мы просто отправляем одинокий пинг, а в это время записываем трафик через 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

    603, 604, 603, 604, 604, 604

    197..201

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

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

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

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

     

    Источник

Читайте также