Высокоскоростная передача пакетов в Go: От net.Dial до AF_XDP

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
9,506
Реакции
1,550
Credits
33,367
Высокоскоростная передача пакетов в Go: От net.Dial до AF_XDP
photo-1559510980-7246660a93d3

Недавно я разработал программу на Go, которая отправляет ICMP ping-сообщения на миллионы IP-адресов. Естественно, я хотел, чтобы это происходило как можно быстрее и эффективнее. Это побудило меня изучить различные методы взаимодействия с сетевым стеком и быстрой отправки пакетов! Это было увлекательное путешествие, поэтому в этой статье я поделюсь некоторыми своими наработками и задокументирую их для себя в будущем :) Вы увидите, как мы достигаем 18,8 Мбит/с, используя всего 8 ядер. На Github есть репозиторий с примерами кода, что облегчает процесс.
Скрытое содержимое могут видеть только пользователи групп(ы): Premium, Местный, Свои