The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Решение проблемы с uTP-протоколом u..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Решение проблемы с uTP-протоколом u..."  +1 +/
Сообщение от auto_tips on 04-Мрт-10, 17:56 
По многочисленным наблюдениям системных администраторов различных компаний предоставляющих доступ к сети интернет, с начала февраля 2010 года наблюдается ежедневный лавинообразный рост количества пакетов в сети, их фрагментация, а также существенный рост исходящего трафика. Данная проблема связана с новой версией торрент-клиента uTorrent вышедшего 3 февраля 2010 года с поддержкой протокола uTP, работающего поверх UDP. Призванный снизить нагрузку на провайдеров протокол uTP в результате привел к обратному эффекту.

Для относительно безболезненной для клиента фильтрации uTP на шлюзе под управлением Linux рекомендуется использовать следующее правило:

   /sbin/iptables -I FORWARD -m udp -p udp -m string --hex-string "|7F FF FF FF AB|" --algo kmp \
      --from 40 --to 44 -m statictic --mode random --probability 0.90 -j DROP

Мониторинг работы правила:

   iptables -L FORWARD -nv | grep statist

Для FreeBSD правило будет выглядеть следующим образом:

   ngctl mkpeer ipfw: bpf 2 main
   ngctl name ipfw:2 utp_filter
   ngctl msg utp_filter: setprogram { thisHook=\"main\" ifMatch=\"\" ifNotMatch=\"main\" bpf_prog_len=12 bpf_prog=[
      { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=8 k=64 } { code=48 jt=0 jf=0 k=9 }
      { code=21 jt=0 jf=6 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=4 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 }
      { code=64 jt=0 jf=0 k=20 } { code=21 jt=0 jf=1 k=2147483647 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }

   ipfw add 2 netgraph 2 udp from any to any iplen 0-128

Мониторинг:

   ngctl msg utp_filter: getstats \"main\"


URL: http://forum.nag.ru/forum/index.php?showtopic=55025&st=160
Обсуждается: http://www.opennet.dev/tips/info/2304.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Решение проблемы с uTP-протоколом uTorrent"  +1 +/
Сообщение от Денис Юсупов email on 04-Мрт-10, 17:56 
Кто-нибудь смог расшифровать этот фильтр BPF? ;))
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Решение проблемы с uTP-протоколом uTorrent"  +1 +/
Сообщение от Mike (??) on 04-Мрт-10, 18:59 
После этого кто-то ещё может наезжать на iptables?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от Аноним email(??) on 04-Мрт-10, 20:42 
Согласен.
Сравните текущий "iptables", реализованный на Red Hat и его клонах.... Какие есть проблемы? Я сравнивал... Шапка выигрывает
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от аноним on 04-Мрт-10, 21:26 
это нетграф, по сравнению с ним возможности iptables весьма игрушечны, но за сложность приходится платить... для простых вещей, есть простой инструмент: ipfw, для сложных - сложный.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от Денис Юсупов on 04-Мрт-10, 23:04 
Кстати, после установки этого фильтра под FreeBSD у пользователей начались проблемы с коннектом к Counter-Strike и Counter-Strike Source.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от аноним on 05-Мрт-10, 04:22 
>Для относительно безболезненной для клиента фильтрации

А насколько безболезненна такая фильтрация для роутера при, скажем, 200K pps ?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от pliskinsad email on 05-Мрт-10, 07:42 
На цисках

class-map type access-control match-any Torrent
match start l3-start offset 40 size 5 regex "\x7F\xFF\xFF\xFF\xAB"

policy-map type access-control Torrent
  class Torrent
   drop

interface GigabitEthernet0/0
service-policy type access-control input Torrent

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Решение проблемы с uTP-протоколом uTorrent"  +1 +/
Сообщение от Ъ on 05-Мрт-10, 08:25 
>А насколько безболезненна такая фильтрация для роутера при, скажем, 200K pps ?

80K pps (pptp остальное на коммутаторах режится)

iptables -L FORWARD -nv | grep statist
  44M 2599M DROP       udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp STRING match "|7fffffffab|" ALGO name kmp FROM 40 TO 44 statistic mode random probability 0.900000

Жалоб не поступало. uTorrent при этом переходит на обычный TCP. Без этого правила пакетов UDP более чем в 2 раза больше чем TCP, в основном мелочь 60-75 байт. Какой-либо прирост загрузки CPU не заметил. А вот размер netflow нормализовался, нагрузка на базу данных резко упала.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от ivb (??) on 05-Мрт-10, 14:05 
На Juniper бы сделать, пока непонятно.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от brzm on 05-Мрт-10, 16:25 
А надо? Вроде ж выдерживают ;)
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от Дядюшка Ляо on 06-Мрт-10, 10:42 
советую засунуть это правило для iptables в таблицу raw, т.е. iptables -t raw -I PREROUTING blbla.

там оно будет stateless и и гораздо эффективнее.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

12. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от Аноним (??) on 06-Мрт-10, 16:03 
правило для freebsd похоже на ч0рную магию. где можно почитать что значат эти значения в стоках вида code=xx jt=xx jf=xx k=xx?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от User294 (ok) on 07-Мрт-10, 06:38 
Вы уж извините конечно, но у айпитаблеса - при взгляде на этот рулес сразу более-менее понятно что он делает. Более того, я его могу без проблем поменять на чуть иное похожее по смыслу. А вот на втором рулесе я попросту завис. И после этого бздуны говорят что айпитаблес - сложный? Шутники! oO
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

14. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от User294 (ok) on 07-Мрт-10, 06:42 
Интересно каким местом думали мюторентовцы хренача кипы мелких пакетов для толстого файлтрансфера? Они не в курсе что вызывает нагрузку на роутеры? Во бакланы. Если уж хотели юзать UDP, надо было юзать для bulk трансферов пакеты размера сравнимого с MTU.
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

15. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от аноним on 07-Мрт-10, 17:28 
man bpf
раздел FILTER MACHINE
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

16. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от Аноним (??) on 08-Мрт-10, 19:35 
инопланетяне? :) какие алиены писали ЭТО?
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

17. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от hizel (ok) on 09-Мрт-10, 16:57 
есть транслятор в опкод bpf
http://citrin.ru/freebsd:ng_ipfw_ng_bpf
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

18. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от Pahanivo email(ok) on 10-Мрт-10, 08:51 
>После этого кто-то ещё может наезжать на iptables?

если вы ничего не понимаете в ядерном синтезе, это вовсе не значит что он плох ) просто он не для средних умов ))

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

19. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от nuclight (??) on 10-Мрт-10, 14:00 
Расшифровка фильтра, как и объяснение, как такое писать, тут: http://www.opennet.dev/opennews/art.shtml?num=25733 (там ссылки на два поста)

А вообще-то он сгенерирован из очень простой командной строки: tcpdump 'udp[40:4]=0x7fffffff'

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

20. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от ABC (??) on 11-Мрт-10, 12:10 
Не надо плакать, такие вещи обычно генерируются, а не пишутся вручную.
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

21. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от Backspace on 11-Мрт-10, 12:39 
В правиле iptables вместо -m statictic должно быть -m statistic
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

22. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от Vladimir (??) on 11-Мрт-10, 22:27 
у нас фря справляется, а кошка становится очень задумчивой
правда потерь на канале не появляется
пришлось фильтр поставить
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

23. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от User294 (ok) on 11-Мрт-10, 23:22 
>Не надо плакать, такие вещи обычно генерируются,

Мне в таком случае кажется логичным приводить описалово как сие сгенерячено, если уж советы даются. А то мюторентовцы обещали изменения протокола если что. И, думаю, они тоже учтут как это давится и срубят удавливание, что логично.

>а не пишутся вручную.

Ассемблить рулесы фаерволла в стиле асм-програминга с чуть ли не ручной вколоткой опкодов - это, гм, имхо какой-то оверкилл. Особенно для всего то отлова вхождения байтов в известном месте пакета. Как минимум некоторым (вроде не вам) после этого придется слегка STFU по поводу нытья насчет сложности айпитаблеса.

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

24. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от meph1st on 12-Мрт-10, 10:57 
http://nuclight.livejournal.com/

товарищ "разжевывает"

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

25. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от gb03db on 12-Мрт-10, 13:15 
это вообще лишнее :)
-m statictic --mode random --probability 0.90
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

26. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от Sem email(??) on 15-Мрт-10, 17:24 
Могли бы для ng_bgp сделать возможность определения программы в виде tcpdump синтаксиса. Одна команда, как я смотрю: cap_compile_nopcap().
А то же хомячки пугаются.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

27. "Решение проблемы с uTP-протоколом uTorrent"  +/
Сообщение от Maxim_mun email(ok) on 22-Мрт-10, 12:21 
Кто подскажет как на кошках подрезать, пример с верху не прокатывает, нету в матче start и вообще не разобрать пакет по битно.
Завязли на Старом UBR7114 12.3(9a)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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