Автор Тема: TC -въпрос  (Прочетена 2829 пъти)

bonbon

  • Напреднали
  • *****
  • Публикации: 112
  • Distribution: Debian
  • Window Manager: Gnome
    • Профил
    • WWW
TC -въпрос
« -: Jan 17, 2006, 09:47 »
Здарвейте.
От няколко дена се мъча със следният проблем.
Имам следната ситуация:
internet-->eth0-->ruter-->eth1-->lan
Ограничавам download и upload трафика с htb, като предварително маркирам съответните пакети.
Проблема ми е следният:
Имам клас, който е закачен за eth0 и има лимит 16KBps -тоест
tc class add dev eth0 parent 2:10 classid 2:11 htb rate 8KBps ceil 16KBps prio 0 burst 2k.
IP-тата попаднали в този клас могат да upload-ват с около 16к.
Когато пусна уплоад през Azureus, upload-a наистина е около 16к, но download-a пада на 1-2 к. Огранича ли upload-a на Azureus на 10к, download си тръгва с нормалният размер.
Как мога да направя така, upload-а да не влияе на download-a.

Благодаря предварително.
Активен

any

  • Участници
  • ***
  • Публикации: 9
    • Профил
TC -въпрос
« Отговор #1 -: Jan 17, 2006, 13:12 »
Не можеш.
При download се използва и една част от upstream канала (т.е. освен, че получаваш пакети - също и изпращаш такива).
При положение, че напълниш upstream канала - няма как да не страда download-а ти.
Активен

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
TC -въпрос
« Отговор #2 -: Jan 17, 2006, 13:23 »
Не мога да дам конкретна идея за tc/htb, но принципно ако можеш да сложиш по-висок приоритет на tcp ack пакетите (които всъщност се изпращат при download от теб) би трябвало да се реши проблема.

Ако искаш разгледай това: http://www.benzedrine.cx/ackpri.html
Там е обяснено по-подробно, но както споменах ще трябва да видиш дали може да се реализира с tc/htb.

Поздрави
Активен

bonbon

  • Напреднали
  • *****
  • Публикации: 112
  • Distribution: Debian
  • Window Manager: Gnome
    • Профил
    • WWW
TC -въпрос
« Отговор #3 -: Jan 17, 2006, 13:39 »
Благодаря на всички. '<img'>
Активен

  • Гост
TC -въпрос
« Отговор #4 -: Jan 17, 2006, 13:44 »
В подкрепа на предложението на Наркос - можеш да си направиш два подкласа на класа за upload - единия за ACK пакетите, а другия за останалите '<img'>
Активен

Dean79

  • Напреднали
  • *****
  • Публикации: 151
    • Профил
TC -въпрос
« Отговор #5 -: Jan 18, 2006, 01:46 »
Можеш да контролираш трафика в двете посоки  независимо един от друг. За целта в ХТБ-то опиши и изходящия интерфейс, аз го правя, но с ЦБКю
Огледай примерите в htb.init

Дано съм бил полезен
Активен

bonbon

  • Напреднали
  • *****
  • Публикации: 112
  • Distribution: Debian
  • Window Manager: Gnome
    • Профил
    • WWW
TC -въпрос
« Отговор #6 -: Jan 18, 2006, 07:15 »
Работата е там, че  пакета вече е маркиран - примерно с 0x01.
Не е проблем да разделя класа на два под-класа, но как да направя филтрите.
Активен

alex_c

  • Напреднали
  • *****
  • Публикации: 122
    • Профил
TC -въпрос
« Отговор #7 -: Jan 18, 2006, 11:38 »
Ето ти едно решение за маркиране на ACK пакетите:
/sbin/iptables -t mangle -A POSTROUTING -o eth0 -p tcp -m length --length :64 -j MARK --set-mark 11
/sbin/iptables -t mangle -A POSTROUTING -o eth0 -p tcp -m length --length :64 -j ACCEPT

Това трябва да ти е накъде в началото на скрипта за маркирането, за да може да улови всички TCP пакети с дължина до 64 байта (тук ще попаднат и ACK пакетие). Дали ще избереш POSTROUTING или PREROUTING веригата си зависи от теб, както и съответната марка. При мен работи нормално, така че при правилно конфигуриране не би трябвало да има проблем.

Best wishes!
Alex
Активен

  • Гост
TC -въпрос
« Отговор #8 -: Jan 18, 2006, 11:51 »
http://www.vinuthomas.com/Content/pid=27.html
Активен

bonbon

  • Напреднали
  • *****
  • Публикации: 112
  • Distribution: Debian
  • Window Manager: Gnome
    • Профил
    • WWW
TC -въпрос
« Отговор #9 -: Jan 18, 2006, 12:27 »
Явно не съм обеснил правилно.
Всеки пакет се маркира според това дали е BG или INT, дали е входяш или изходяш, и отделно според това с каква скорост ще се ограничава.
Доколкото разбрах трябва upload-пакетите да се разделят на две и да се маркират според ACK.

Не може ли да се направи по по-елегантен нечин?

Благодаря на всички още веднъж
Активен

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
TC -въпрос
« Отговор #10 -: Jan 18, 2006, 13:07 »
Не трябва ли да е нещо от рода на:

# iptables -t mangle -p tcp -m tcp --tcp-flags SYN,ACK ACK -j MARK --set-mark <MARK>

Пак да кажа, че не съм особено навътре с iptables, така че не приемайте на доверие горното.
Активен

  • Гост
TC -въпрос
« Отговор #11 -: Jan 18, 2006, 17:40 »
Че какво не му е елгентаното на това?
Това, дали е межд./БГ не би трябвало да те интересува - просто имаш един клас (за всеки интерфейс), който е шейпнат с достатъчно  скорост и с най-висок приоритет. Този клас ще приема да кажем пакетите маркирани с 200. А в iptables си правиш правилата за ACK и SYN пакетите да се маркират с 200, когато дължината на пакета е до 64 ...
Активен

bonbon

  • Напреднали
  • *****
  • Публикации: 112
  • Distribution: Debian
  • Window Manager: Gnome
    • Профил
    • WWW
TC -въпрос
« Отговор #12 -: Jan 18, 2006, 18:07 »
Благодаря  VladSun
Активен

alex_c

  • Напреднали
  • *****
  • Публикации: 122
    • Профил
TC -въпрос
« Отговор #13 -: Jan 19, 2006, 23:25 »
Наркос, за съжаление не става, тъй като има пакети, в които освен вдигнат ACK флаг има и payload и по този начин вместо да изпишеш вежди ще избодеш очи.

Best wishes!
Alex
Активен

bonbon

  • Напреднали
  • *****
  • Публикации: 112
  • Distribution: Debian
  • Window Manager: Gnome
    • Профил
    • WWW
TC -въпрос
« Отговор #14 -: Jan 20, 2006, 05:56 »
С маркирането на ACK пакетите downloada се оправи, но страниците се отварят много бавно - с около 1к.
Явно трябва и още нещо да се пусни с по-голям приоритет, но незнам какво.
Ще съм много благодарех, ако някой помогне.
Активен