…или как измерить задержки вашего HFT-сетапа не привлекая санитаров.
Эта статья является развернутым ответом на комментарий. Дело в том, что во многих статьях любят показать модное оборудование за триллиарды долларов, или выпендриться какими-то крутыми новинками.
Я хочу показать, что всё это можно сделать из говна и палок дешёвых старых компонентов. И ответить на несколько типичных вопросов, первый из которых, сколько времени задержки добавляет лишняя длина кабеля. В биржевой инфраструктуре обычно используется 10G сеть, и для любых нетривиальных расстояний (более 3м, за пределы стойки) это будет оптика. Итак, мы будем измерять скорость света в оптическом кабеле, то есть в стекле.
Из школьного курса физики мы знаем, что скорость света это самая большая скорость во вселенной. Но она такая только в вакууме. А вот в любой прозрачной среде она зависит от показателя преломления, причём зависит достаточно просто: V = C/n, где V — скорость света в нашей среде, C — скорость в вакууме (≈3×10⁸м/c), n — показатель преломления (для стекла обычно ≈1.5). Значит V ≈ 200 тыс. км/c, давайте убедимся, что нас нигде не обманывают.
Итак, для эксперимента нам понадобится:
-
стеклянный провод, в котором собственно мы и будем гонять свет (у меня было несколько MM патч-кордов разной длины);
-
лазеры и фотодиоды, а точнее, обычные SFP+трансиверы, которые будут отправлять свет в провод (и принимать его);
-
сетевая карта, которая будет управлять трансиверами (сами-то они не сообразят когда и что делать);
-
ещё одна сетевая карта (а точнее, карта захвата), чтобы записывать, когда мимо неё пролетел свет;
-
способ отвести немного пролетающего мимо света из длинного кабеля (оптический сплиттер).
Для всего этого мы не будем использовать лабораторное оборудование, или специальные low-latency свитчи. Попробуем пройтись по самому дну eBay и поймать что-то там. Вот что у меня вышло:
-
MM LC-LC провода бывают в очень разную цену, мне как-то удалось урвать 3шт 20-метровых кабелей всего за $15. Котроткие кабели китайцы продают за 1-2$;
-
SFP+трансиверы мультимод на 10г сейчас продаются за $5, иногда идут в комплекте с сетевухами, или даже на авито можно найти не сильно дороже;
-
сетевые карты:
Solarflare,простите, Xilinx, AMD предыдущих поколений (sfn6122f/sfn7122f) стоят в районе $20 за штуку, либо старый добрыйMellanoxNvidia mcx312a чуть дороже (за $30-40); -
оптический сплиттер (он же fiber tap) за $15 (полно вариантов производства
NetOpticsixiaKeysight); -
карта захвата фирмы
$110 лута с eBay Как оказалось, «модные» карты для HFT (даже SF или Mlnx, что уж говорить про всякий интел), совершенно не умеют засекать маленькие интервалы времени. Для этого и была приобретена карта захвата. Но с ней другой прикол: без набора софта она абсолютно бесполезна (именно по этой причине на ебее они продаются сильно дешевле своей List Price). Для Solarflare или Mellanox базовые драйвера уже есть в ядре линукса (а к некоторым картам присутствуют и в стандартной поставке винды), а вот для Endace нам внезапно помогут итальянские хакеры, а точнее не они сами, а факт того, что они обделались в далёком 2015-м году и устроили незапланированный распределённый бэкап своих репозиториев, в одном из которых можно
собираем несложную конструкцию Если месиво проводов на картинке выше не очень понятно, то вот схема
Дальше мы просто отправляем одинокий пинг, а в это время записываем трафик через
tcpdumpdagsnap. После того, как проделаем эту операцию несколько раз с кабелями разной длины, составим итоговую таблицу, скорость посчитаем с учётом того, что внутри сплиттера есть 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, в которых обещают что свет будет передаваться со скоростью света. Если у кого-нибудь есть такое на тест, то с радостью приму 😉