Недавно я принимал участие в дискуссиях о требованиях с минимальной задержкой для сети Leaf / Spine (или CLOS) для размещения платформы OpenStack.
Системные архитекторы стремятся к минимально возможному RTT для своих транзакций (блочное хранилище и будущие сценарии RDMA), и утверждается, что 100G / 25G предлагает значительно меньшие задержки сериализации по сравнению с 40G / 10G. Все вовлеченные лица знают, что в сквозной игре намного больше факторов (любой из которых может повредить или помочь RTT), чем просто задержки сериализации сетевых адаптеров и портов коммутатора. Тем не менее, тема о задержках сериализации продолжает всплывать, поскольку их трудно оптимизировать без преодоления, возможно, очень дорогостоящего технологического разрыва.
Слишком упрощенное (без учета схем кодирования) время сериализации можно рассчитать как число бит / битрейт , что позволяет нам начинать с ~ 1,2 мкс для 10G (см. Также wiki.geant.org ).
For a 1518 byte frame with 12'144bits,
at 10G (assuming 10*10^9 bits/s), this will give us ~1.2μs
at 25G (assuming 25*10^9 bits/s), this would be reduced to ~0.48μs
at 40G (assuming 40*10^9 bits/s), one might expect to see ~0.3μs
at 100G (assuming 100*10^9 bits/s), one might expect to see ~0.12μs
Теперь для интересного. На физическом уровне 40G обычно делается как 4 полосы по 10G, а 100G - как 4 полосы по 25G. В зависимости от варианта QSFP + или QSFP28, это иногда делается с 4 парами волокон, иногда оно разбивается лямбдами на одну пару волокон, где модуль QSFP самостоятельно выполняет некоторое xWDM. Я знаю, что есть спецификации для 1x 40G или 2x 50G или даже 1x 100G, но давайте пока оставим их в стороне.
Чтобы оценить задержки сериализации в контексте многолинейных 40G или 100G, необходимо знать, как сетевые адаптеры 100G и 40G и порты коммутатора фактически, так сказать, «распределяют биты по (множеству) проводам (ам)». Что здесь делается?
Это немного похоже на Etherchannel / LAG? NIC / switchports отправляют кадры одного «потока» (читай: один и тот же результат хеширования любого алгоритма хеширования, который используется в какой области кадра) по одному данному каналу? В этом случае мы ожидаем задержки сериализации, такие как 10G и 25G, соответственно. Но, по сути, это сделало бы канал 40G просто LAG 4x10G, уменьшая пропускную способность одного потока до 1x10G.
Это что-то вроде побитовой круговой? Каждый бит распределен по четырем (под) каналам? Это может фактически привести к меньшим задержкам сериализации из-за распараллеливания, но вызывает некоторые вопросы о доставке по порядку.
Это что-то вроде кругового робина? Целые кадры Ethernet (или другие подходящие по размеру куски битов) передаются по 4 каналам, распределенным в виде циклического перебора?
Это что-то еще, например ...
Спасибо за ваши комментарии и указатели.