<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Агрегация (объединение мелких пакетов) при туннелировании</title>
    <link>https://89.19.215.112/openforum/vsluhforumID12/7419.html</link>
    <description>Имеется мобильный оператор, крайне не любящий высокий PPS, packet-per-second.&lt;br&gt;При этом порядка 90&#037; траффика, который на данный момент роутится через openvpn/udp состоит из пакетов 64-128 байт.&lt;br&gt;&lt;br&gt;Есть ли какие-либо варианты аггрегации мелких пакетов по достижению заданного размера или по таймауту?&lt;br&gt;&lt;br&gt;По мотивам темы 10-летней давности https://www.linux.org.ru/forum/admin/10120422&lt;br&gt;&lt;br&gt;Спустя 10 лет, что-то появилось, или отправят писать свой протокол?&lt;br&gt;</description>

<item>
    <title>Агрегация (объединение мелких пакетов) при туннелировании (zyxman)</title>
    <link>https://89.19.215.112/openforum/vsluhforumID12/7419.html#15</link>
    <pubDate>Sun, 07 Apr 2024 17:32:11 GMT</pubDate>
    <description>&lt;br&gt;&amp;gt; Так у меня изначальный вопрос был, есть ли возможность объединить в канале, &lt;br&gt;&amp;gt; например, openvpn мелкие пакеты, снизив внешний pps?&lt;br&gt;&lt;br&gt;вот набор ссылок по теме. спрашивайте.&lt;br&gt;&lt;br&gt;тут только не надо читать умняк насчет полностью эмулировать tcp, ничего мы эмулировать не будем, у нас два сокета будет занято (один туда, второй сюда), мы их НЕ будем дивертить а всё остальное будем:&lt;br&gt;https://www.opennet.ru/base/net/fire.txt.html&lt;br&gt;&lt;br&gt;https://forum.lissyara.su/freebsd-f8/ipfw-divert-t5511.html&lt;br&gt;https://man.freebsd.org/cgi/man.cgi?query=divert&amp;sektion=4&amp;apropos=0&amp;manpath=FreeBSD+9.0-RELEASE+and+Ports&lt;br&gt;https://man.freebsd.org/cgi/man.cgi?query=Net::Divert&amp;sektion=3&amp;apropos=0&amp;manpath=FreeBSD&#037;209.0-RELEASE&#037;20and&#037;20Ports&lt;br&gt;</description>
</item>

<item>
    <title>Агрегация (объединение мелких пакетов) при туннелировании (zyxman)</title>
    <link>https://89.19.215.112/openforum/vsluhforumID12/7419.html#14</link>
    <pubDate>Sun, 07 Apr 2024 17:11:29 GMT</pubDate>
    <description>&lt;br&gt;&amp;gt; Так у меня изначальный вопрос был, есть ли возможность объединить в канале, &lt;br&gt;&amp;gt; например, openvpn мелкие пакеты, снизив внешний pps?&lt;br&gt;&lt;br&gt;PS кстати, простой скрипт на перле, думаю до тысяч 50 пакетов на современной машинке потянет, ну точно заметно больше 1500.&lt;br&gt;</description>
</item>

<item>
    <title>Агрегация (объединение мелких пакетов) при туннелировании (zyxman)</title>
    <link>https://89.19.215.112/openforum/vsluhforumID12/7419.html#13</link>
    <pubDate>Sun, 07 Apr 2024 17:09:40 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; ipfw add 10 pipe 1 udp from 10.11.9.21 to 10.11.9.1 out &lt;br&gt;&amp;gt; ipfw pipe 1 config bw 2Mbit/s queue 4KBytes     &lt;br&gt;&amp;gt; # лимит выше 1Мбит (-b 1M), условно, без лимита &lt;br&gt;&amp;gt; iperf3 -u -c 10.11.9.1 -b 1M -t -2 -l 64 &lt;br&gt;&amp;gt; То есть, я просто получю шейпер.&lt;br&gt;&amp;gt; При разных вариантах очереди, таймаута, полосы, получается шейпер.&lt;br&gt;&amp;gt; Всё работает логично и правильно, и тут не должно быть никаких объединений &lt;br&gt;&amp;gt; нескольких мелких пакетов в один mtu.&lt;br&gt;&amp;gt; Так у меня изначальный вопрос был, есть ли возможность объединить в канале, &lt;br&gt;&amp;gt; например, openvpn мелкие пакеты, снизив внешний pps?&lt;br&gt;&lt;br&gt;Всё логично, это императивный подход, теперь надо в явном виде завернуть пакеты в диверт сокет и пару программ, одна будет клиент, вторая сервер, одна будет пакеты из диверта отправлять в tcp сокет, а вторая получать со своей стороны и в свой диверт вкладывать.&lt;br&gt;</description>
</item>

<item>
    <title>Агрегация (объединение мелких пакетов) при туннелировании (Олег Бартунов)</title>
    <link>https://89.19.215.112/openforum/vsluhforumID12/7419.html#12</link>
    <pubDate>Sun, 07 Apr 2024 11:52:43 GMT</pubDate>
    <description>Локальная kvm freebsd, openvpn&lt;br&gt;ipfw add 10 pipe 1 udp from 10.11.9.21 to 10.11.9.1 out&lt;br&gt;ipfw pipe 1 config bw 2Mbit/s queue 4KBytes     # лимит выше 1Мбит (-b 1M), условно, без лимита&lt;br&gt;iperf3 -u -c 10.11.9.1 -b 1M -t -2 -l 64&lt;br&gt;&lt;br&gt;&#091; ID&#093; Interval           Transfer     Bitrate         Total Datagrams&lt;br&gt;&#091;  5&#093;   0.00-1.00   sec   122 KBytes   999 Kbits/sec  1952  &lt;br&gt;&#091;  5&#093;   1.00-2.00   sec   122 KBytes  1000 Kbits/sec  1953  &lt;br&gt;&#091;  5&#093;   2.00-3.00   sec   122 KBytes  1000 Kbits/sec  1953  &lt;br&gt;&#091;  5&#093;   3.00-4.00   sec   122 KBytes  1000 Kbits/sec  1953  &lt;br&gt;&#091;  5&#093;   4.00-5.00   sec   122 KBytes  1000 Kbits/sec  1953  &lt;br&gt;&#091;  5&#093;   5.00-6.00   sec   122 KBytes  1000 Kbits/sec  1953&lt;br&gt;&lt;br&gt;Хост debian, проверял pps как для vnet30, так и для wlan0&lt;br&gt;Количество пакетов в секунду одинаковое&lt;br&gt;&lt;br&gt;tx 1 rx 1966 / pps on vnet30&lt;br&gt;tx 1 rx 1962 / pps on vnet30&lt;br&gt;tx 1 rx 1955 / pps on vnet30&lt;br&gt;tx 1 rx 1962 / pps on vnet30&lt;br&gt;tx 1 rx 1961 / pps on vnet30&lt;br&gt;&lt;br&gt;tx 1958 rx 2 / pps on wlan0&lt;br&gt;tx 1961 rx 2 / pps on wlan0&lt;br&gt;tx 1955 rx 3 / pps on wlan0&lt;br&gt;tx 1964 rx</description>
</item>

<item>
    <title>Агрегация (объединение мелких пакетов) при туннелировании (zyxman)</title>
    <link>https://89.19.215.112/openforum/vsluhforumID12/7419.html#11</link>
    <pubDate>Sat, 06 Apr 2024 22:32:09 GMT</pubDate>
    <description>&amp;gt; Спасибо ещё раз.&lt;br&gt;&amp;gt; Читаю мануал ipfw и dummynet и складывается понимание, что queue используется именно &lt;br&gt;&amp;gt; как некий буффер чтения, при заполненной полосе bw, &lt;br&gt;&amp;gt; при переполнении которого пакеты просто отбрасываются, если не успевают проходить в bw, &lt;br&gt;&amp;gt; НО не как буффер для накопления перед отправкой, &lt;br&gt;&amp;gt; который опустошается (в канал с учётом bw) при заполнении или по delay. &lt;br&gt;&lt;br&gt;Это КОРЗИНА, которая заполняется пришедшими пакетами со скоростью ограниченной bw, то есть если будет приходить больше, будут отбрасываться сразу.&lt;br&gt;Далее, если суммарный размер пакетов находящихся в корзине с новым больше отконфигуренного размера, или если в корзине максимальное количество пакетов, новый пакет НЕ добавляется а отбрасывается.&lt;br&gt;Далее, если пакет таки попал в корзину, включается таймер и он там сидит до тех пор пока не закончится delay, как закончится delay отправляется дальше по ipfw и удаляется из корзины (освобождает место в корзине).&lt;br&gt;Проверка производится не в абстрактные моменты времени, а строго по тикам тайм</description>
</item>

<item>
    <title>Агрегация (объединение мелких пакетов) при туннелировании (Олег Бартунов)</title>
    <link>https://89.19.215.112/openforum/vsluhforumID12/7419.html#10</link>
    <pubDate>Sat, 06 Apr 2024 19:03:26 GMT</pubDate>
    <description>Спасибо ещё раз.&lt;br&gt;Читаю мануал ipfw и dummynet и складывается понимание, что queue используется именно как некий буффер чтения, при заполненной полосе bw, &lt;br&gt;при переполнении которого пакеты просто отбрасываются, если не успевают проходить в bw, НО не как буффер для накопления перед отправкой, &lt;br&gt;который опустошается (в канал с учётом bw) при заполнении или по delay.&lt;br&gt;Или delay здесь не нужен так как он будет просто тормозить все пакеты и не связан с queue?&lt;br&gt;&lt;br&gt;&amp;gt; The queue option sets the maximum amount of excess data (in packets or KBytes) that will be accepted before additional packets are refused.&lt;br&gt;&lt;br&gt;Собственно, как именно это будет интерпретироваться, по сути мне только это и надо, &lt;br&gt;10.1.1.111 - tun0 в клиенте локальной freebsd, 10.1.1.1 - tun0 - внешнего сервера, тоже на freebsd.&lt;br&gt;&lt;br&gt;ipfw add pipe 1 ip from 10.1.1.111/32 to 10.1.1.1/32 out&lt;br&gt;ipfw pipe 1 config bw 10Mbit/s queue 4KBytes delay 24ms&lt;br&gt;&lt;br&gt;Если я правильно понял, то &quot;queue 4KBytes delay 24ms&quot; это (4096&amp;#215;8)&amp;#215;(1000÷24) = канал 1.3Мбит/с, что с</description>
</item>

<item>
    <title>Агрегация (объединение мелких пакетов) при туннелировании (zyxman)</title>
    <link>https://89.19.215.112/openforum/vsluhforumID12/7419.html#8</link>
    <pubDate>Wed, 03 Apr 2024 23:00:48 GMT</pubDate>
    <description>&amp;gt; Читаю handbook и мануал по ipwf и не нахожу ничего похожего на &lt;br&gt;&amp;gt; корзину, только delay применяемый для каждого отдельного пакета.&lt;br&gt;&lt;br&gt;ipfw pipe&lt;br&gt;Там в настройках конкретной трубы можно указать:&lt;br&gt;bw bandwidth&lt;br&gt;delay ms-delay&lt;br&gt;queue &#123;slots &amp;#124; sizeKbytes&#125;&lt;br&gt;&lt;br&gt;я просто назвал корзиной буфер (тут он очередь).&lt;br&gt;&lt;br&gt;&amp;gt; Можешь ткнуть конкретно или привести некоторые правила от которых можно оттолкнуться?&lt;br&gt;&amp;gt; А то чувствую себя хлебушком в freebsd, после 15 лет на debian. &lt;br&gt;&lt;br&gt;Тут есть небольшая проблема, у меня сгорели все компы где еще был АТА а оно на старом диске. Но по памяти я нашел в интернетах пример (и чуток подправил для лучшей наглядности):&lt;br&gt;&lt;br&gt;sudo ipfw pipe 1 config bw 15KByte/s&lt;br&gt;# creates a pipe that only allows up to 15KB/s to go through. &lt;br&gt;# Then:&lt;br&gt;sudo ipfw add 10 pipe 1 src-port 80&lt;br&gt;# will attach that pipe to the outgoing traffic on port 80, effectively limiting the outgoing traffic of the web server.&lt;br&gt;sudo ipfw delete 10&lt;br&gt;# will remove the pipe from the port. &lt;br&gt;&lt;br&gt;https://gist.github.com/olegokunevych/</description>
</item>

<item>
    <title>Агрегация (объединение мелких пакетов) при туннелировании (Олег Бартунов)</title>
    <link>https://89.19.215.112/openforum/vsluhforumID12/7419.html#7</link>
    <pubDate>Wed, 03 Apr 2024 06:58:39 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Есть ли какие-либо варианты аггрегации мелких пакетов по достижению заданного размера или &lt;br&gt;&amp;gt;&amp;gt; по таймауту?&lt;br&gt;&amp;gt; Вообще буквально так работает FreeBSD ipfw pipe, там буквально есть корзина, которая &lt;br&gt;&amp;gt; заполняется пакетами и освобождается, либо когда пакет задержан на сколько заказано, &lt;br&gt;&amp;gt; либо когда корзина переполнилась.&lt;br&gt;&lt;br&gt;Это уже интересно, спасибо!&lt;br&gt;Читаю handbook и мануал по ipwf и не нахожу ничего похожего на корзину, только delay применяемый для каждого отдельного пакета.&lt;br&gt;&lt;br&gt;Можешь ткнуть конкретно или привести некоторые правила от которых можно оттолкнуться?&lt;br&gt;А то чувствую себя хлебушком в freebsd, после 15 лет на debian.&lt;br&gt;&lt;br&gt;Я правильно понимаю, что чтоб с обратной стороны не получать отдельные пакеты ответов, то надо с обоих сторон &#091;freebsd&amp;gt;openvp&#093; &amp;lt;канал&amp;gt; &#091;openvpn&amp;lt;freebsd&#093;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Агрегация (объединение мелких пакетов) при туннелировании (zyxman)</title>
    <link>https://89.19.215.112/openforum/vsluhforumID12/7419.html#6</link>
    <pubDate>Tue, 02 Apr 2024 04:57:37 GMT</pubDate>
    <description>&amp;gt; Есть ли какие-либо варианты аггрегации мелких пакетов по достижению заданного размера или &lt;br&gt;&amp;gt; по таймауту?&lt;br&gt;&lt;br&gt;Вообще буквально так работает FreeBSD ipfw pipe, там буквально есть корзина, которая заполняется пакетами и освобождается, либо когда пакет задержан на сколько заказано, либо когда корзина переполнилась.&lt;br&gt;&lt;br&gt;На практике, надо померять распределение траффика, посчитать сколько пакетов в секунду проходит сейчас и поделить на сколько хочется иметь и получится 1/(задержка в секундах).&lt;br&gt;&lt;br&gt;Дальше это уже вопрос настройки VPN, который будет просто отправлять сразу блоком - главное что этими пайпами оно будет получать сразу вот этот блок.&lt;br&gt;В Линуксе это вобщем тоже можно сделать, но сильно менее удобно.&lt;br&gt;&lt;br&gt;Я экспериментировал с этой штукой, но траффик через диверт вытаскивал в скрипт и там в скрипте делал нужные мне манипуляции, это делается через юсерспейс, поэтому небыстрая штука получилась, но так точно работает, это факт.&lt;br&gt;В принципе можно переписать на С++, а также там есть ebpf кажется расширение чтобы </description>
</item>

</channel>
</rss>
