The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Агрегация (объединение мелких пакетов) при туннелировании"
Отправлено zyxman, 04-Апр-24 02:00 
> Читаю handbook и мануал по ipwf и не нахожу ничего похожего на
> корзину, только delay применяемый для каждого отдельного пакета.

ipfw pipe
Там в настройках конкретной трубы можно указать:
bw bandwidth
delay ms-delay
queue {slots | sizeKbytes}

я просто назвал корзиной буфер (тут он очередь).

> Можешь ткнуть конкретно или привести некоторые правила от которых можно оттолкнуться?
> А то чувствую себя хлебушком в freebsd, после 15 лет на debian.

Тут есть небольшая проблема, у меня сгорели все компы где еще был АТА а оно на старом диске. Но по памяти я нашел в интернетах пример (и чуток подправил для лучшей наглядности):

sudo ipfw pipe 1 config bw 15KByte/s
# creates a pipe that only allows up to 15KB/s to go through.
# Then:
sudo ipfw add 10 pipe 1 src-port 80
# will attach that pipe to the outgoing traffic on port 80, effectively limiting the outgoing traffic of the web server.
sudo ipfw delete 10
# will remove the pipe from the port.

https://gist.github.com/olegokunevych/8146412

> Я правильно понимаю, что чтоб с обратной стороны не получать отдельные пакеты
> ответов, то надо с обоих сторон [freebsd>openvp] <канал> [openvpn<freebsd]

Да и нет.

Диверт просто очень удобная фича bsd (freebsd, openbsd), оно просто создает сокет по правилу вида, диверт всего что идет в какой-то интерфейс (кроме tcp сокет такой-то, см далее), к нему есть стандартная либа, просто говоришь "подключиться к диверт номер такой-то" и функция будет получать на вход пакеты, которые та самая либа прям на блюдечке с голубой каемочкой, делаешь с ними что хочешь, потом по умолчанию в тот же диверт обратно отправляешь (если не отправишь просто получится drop и всё; если никто не будет слушать диверт, он просто будет всё дропать; и если надо, ты можешь создать свои пакеты и туда инжектировать).

Дальше, запускается две пары прог.
На удаленной bsd которая из диверта пакеты например в tcp канал копирует с простейшей инкапсуляцией (ну просто чтобы в потоке отдельные пакеты видеть, там какой-то эскейп символ сделать и его конечно маскировать если будет в пакетах встречаться и обратно демаскировать при инжектировании обратно в стек), на местной bsd прога из канала достает пакеты, обратно  декапсулирует и в локальный диверт бросает.
Ну и вторая пара всё то же в обратном направлении делает.

Тонкость есть в чем, что если просто этими манипуляциями завернуть пакеты в tcp, он конечно постарается их буферизовать по максимуму, может и мегабайт в одном окне отправлять.
То есть нужно еще таймаут в прогу добавить на нашу задержку (на которую отконфигурили трубу) и по наступлению таймаута делать flush tcp.

Вот, tcp делается довольно просто, дальше можно по вкусу добавить например шифрование, я обычно тупо в ssh делаю проброс tcp сокета, оно довольно быстрое, у меня например самба несколько лет через такой канал жила.

ebpf идеологически то же, но программить сложнее, но там нет оверхеда на копирование в юсерспейс, поэтому заворачивалку отдельных пакетов в tcp лучше на ebpf сделать (на этапе tcp уже все оверхеды по барабану, оно и так медленное).

PS честно, я уже позже про netcat узнал, наверное им тоже можно так диверты пробрасывать, но я советовать не буду, мне проще эту прогу на десяток строк написать чем разбираться.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, [email protected] (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру