Нещодавно я брав участь в дискусіях щодо вимог із найнижчою затримкою для мережі Leaf / Spine (або CLOS) для розміщення платформи OpenStack.
Системні архітектори прагнуть до найнижчого можливого RTT для своїх транзакцій (блокове зберігання та майбутні сценарії RDMA), і твердження полягало в тому, що 100G / 25G пропонував значно скоротити затримки серіалізації порівняно з 40G / 10G. Усі залучені особи усвідомлюють, що в кінцевому підсумку гра набагато більше факторів (будь-який з них може зашкодити або допомогти RTT), ніж просто NIC та перемикання затримок серіалізації портів. Тим не менш, тема про затримки серіалізації постійно з'являється, оскільки їх важко оптимізувати, не стрибуючи, можливо, дуже дорогий технологічний розрив.
Трохи спрощений (не виключаючи схеми кодування), час серіалізації можна обчислити як кількість біт / бітову швидкість , що дозволяє нам починати з ~ 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 необхідно знати, як NIC 100G і 40G та комутаційні порти насправді "розподіляють біти на (набір) проводів (ів)", так би мовити. Що тут робиться?
Це трохи схоже на Etherchannel / LAG? NIC / комутатори передають кадри одного "потоку" (читай: той самий результат хешування будь-якого алгоритму хешування, який використовується в якій області кадру) через один заданий канал? У цьому випадку ми очікуємо затримки серіалізації, як 10G та 25G відповідно. Але по суті, це зробить 40G-ланкою лише LAG 4x10G, зменшивши пропускну здатність одного потоку до 1x10G.
Це щось на кшталт дотепного круглолиця? Кожен біт круглобільно розподіляється по 4 (під) каналам? Це може призвести до менших затримок серіалізації через паралелізацію, але викликає деякі питання щодо доставки замовлення.
Це щось на кшталт обрамлення круглої камери? Цілі кадри Ethernet (або інші шматочки біт відповідної величини) надсилаються по 4 каналам, розподіленим способом круглої роботи?
Це щось інше цілком, наприклад ...
Дякуємо за ваші коментарі та вказівки.