Микробёрсты на коммутаторе Switch microburst drops
ID причины dc-microburst · Основной ответственный Команда разработки · Разработка сервера · Совместно Команда инфраструктуры · Сетевая инфраструктура, Команда инфраструктуры · Серверная инфраструктура
Когда несколько серверов в один и тот же момент разом отправляют пакеты тысячам игроков, маленький буфер порта коммутатора, где сходится этот трафик, переполняется меньше чем за 1 ms.
Почему Появление мирового босса, массовое умение или совпавшие во времени тики нескольких серверов, и всё отправляется разом → Следствие Буфер (от сотен KB до нескольких MB на порт) там, где несколько портов сходятся в один или быстрый порт переходит в медленный, мгновенно заполняется → На экране Часть пакетов отбрасывается, у многих игроков одновременно телепортация и съеденные умения
Основной ответственный Команда разработки · Разработка сервера · Совместно Команда инфраструктуры · Сетевая инфраструктура, Команда инфраструктуры · Серверная инфраструктура
Команда разработки: задачи
Распределять отправку равномерно внутри тика (пейсинг), немного сдвигать начало тика на разных серверах.
Команда инфраструктуры: задачи
Сеть: коммутаторы с большими буферами, распределение трафика (разносить серверы по разным коммутаторам и портам), мониторинг счётчиков отбрасывания по портам коммутаторов. Серверы и ОС: ограничить общую скорость отправки сервера (шейпер tc в Linux).
Цифры для ориентира
Порт 10 Gbps за 1 ms может отправить около 1,25 MB. Если трафик двух портов одновременно сходится в один, каждую миллисекунду в очереди прибавляется 1,25 MB. Даже при средней загрузке 10% за секунду на интервале 1 ms порт может переполняться.
На графике
Растёт вслед за онлайном и нагрузкой · выходные отбрасывания на портах коммутатора
Где смотреть
Собирать с минимально возможным интервалом счётчики выходных отбрасываний (ifOutDiscards, на некоторых устройствах output drops) на портах коммутатора, к которым подключены серверы, и на портах, где сходится их трафик, и сопоставлять с моментами появления босса и массовых боёв. На графиках средней загрузки за 1 с или 1 мин этого не видно
Подтверждает
Средняя загрузка низкая, но каждый раз, когда игроки собираются в одном месте, растут выходные отбрасывания, и в эти же моменты многие игроки одновременно жалуются на телепортацию и съеденные умения
Опровергает
Если отбрасывания стабильно растут в часы высокой средней загрузки, это «Перегрузка линии связи ЦОД». Если растут ошибки приёма (CRC), это «Неисправный кабель и ошибки порта»
Data Center TCP (DCTCP) (SIGCOMM 2010)ACM У типовых коммутаторов неглубокие буферы (48 портов делят 4 MB, один порт может занять около 700 KB), если несколько потоков на короткое время сходятся в один порт, возникают потери
RFC 2863: The Interfaces Group MIBIETF ifOutDiscards: число пакетов, которые не были отправлены и отброшены без ошибок, например чтобы освободить место в буфере