Niakoi znae li kak moje na CBQ-to da selectiram paketite ednovremenno po FWMARK i po SOURCE ili DEST ?
toest iskam primerno da selectna
source=1.1.1.1
mark = 2
a ne pootdelno :)
pootdelno go pishe navsiakade, no zaedno - ne go pishe nikude
Преглед за печат
Niakoi znae li kak moje na CBQ-to da selectiram paketite ednovremenno po FWMARK i po SOURCE ili DEST ?
toest iskam primerno da selectna
source=1.1.1.1
mark = 2
a ne pootdelno :)
pootdelno go pishe navsiakade, no zaedno - ne go pishe nikude
Не го пише щото не става.
Двете едновременно не може друг е въпроса, че това което се опитваш да направиш се прави само с fw_mark.
А ако те интересува как точно става може да наминеш да вземеш някой урок.[:D]
ami ne vijdam smisul da vzimam uroci, tova koeto go imash ti ili si go napravil samo s mark mi e iasno kakvo e bezkraina seliania !
drug e vuprosa che koito e izmislil i e pisal classifiers e bial riadko tupo parche. na vsichki gotini shaperi mojesh da pravish select po IP+MARK
a tova koeto ti ivane pravish a bezumna gluposti
poviarvai mi :)
PS: poneje se sumniavam che shte mi poviarvash, sled vreme prosto sam shte razberesh
<blockquote id="quote"><font size="1" id="quote"><b id="quote">цитат:</b id="quote"></font id="quote"><table border="0" id="quote"><tr id="quote"><td class="quote" id="quote"><font size="1" id="quote">...koito e izmislil i e pisal classifiers e bial riadko tupo parche. na vsichki gotini shaperi mojesh da pravish select po IP+MARK...
<div align="right">оргинално мнение на maddog</div id="right">
</td id="quote"></tr id="quote"></table id="quote"></blockquote id="quote"><font size="2" id="quote"></font id="quote">
Въобще не съм съгласен. Не знам какви други шейпъри си ползвал, но ми се струва, че в случая ти е грешно понятието за MARK. Защото вероятно това, което се опитваш да направиш с IP+MARK, се прави с u32 classifier, а този MARK, който визираш, е само едно допълнение към стандартните шейпъри.
В случая рядко тъпото парче си ти не този дето е писал u32 filtera .
etg ти разбра ли какво се опитва да направи Мартин щото ако не си да разясня. Той в случая се опитва да раздели пееринга от външния трафик с маркировка и да комбинира двата филтера fw_mark i u32 за да ограничи едно ип на различна скорост. Това естествено не може да стане понеже принципа на класовете в cbq не го позволява.
Относно моя метод той наистина e супер селски позволява дори най-големия селянин да направи шейпър без дори да е чувал какво е това CBQ.[:D]
ok , blagodaria na vsichki koito naistina iavno razbirat dosta ot shapers !
Opredeleno shaperite koito az sum polzval edvali niakoi den shte gi polzvate
bazirani na suvsem razlichni algoritmi niamashti nishto obshto sus CBQ/HTB,SFQ i vsichki ot tozi clas na principa na TC !
Shaperite koito polzvam sa dalech po hubavi !
i imat funkciata koiato veche utochnih za MARK+SRC/DEST
Niama smisul da sporia sus vas. S ivan e bezmisleno da sporia poprincip a za drugite hora, prosto iskam da im blagodaria che mi kazaha che sus CBQ tova koeto iskam e nevuzmojno !
ОК, ако смяташ, че споровете са приключени, можем да продължим разговора по същество.
По принцип в общия случай за маркиран пакет се смята този, на който му е сетнат някой от битовете в Precedence Field (PF). В стандартните случаи (Cisco примерно) се ползва маркиране на битове 0-2 (precedence) и 3-7 (type of service - TOS). При такова маркиране нямаш никакъв проблем да правиш селектиране и в линукса с u32 classifier, като проверяваш за MARK+SRC+DST+каквото се сетиш. Ползвайки обаче iptables и след това fwmark ти маркираш пакетите по съвсем друг начин, който няма нищо общо с PF. Това маркиране е една добавка към стандартните инструменти за маркиране, и не променя нищо в самия пакет, а само в структурата в кернела, която се заделя за този пакет. Така че този FWMARK не е този MARK, който примерно Cisco имат предвид, това са две съвсем различни неща. И ако за момент "забравиш", че такова нещо като FWMARK съществува, получаваш стандартните инструменти за шейпване и селектиране, които вероятно си ползвал.
Така че в случая не си прав да наричаш тъпи хората, които не са ощетили с нищо функционалността, а просто са измислили един допълнителен инструмент - който иска, да го ползва, който не иска - да си ползва стандартните неща. Все едно да ми кажеш: "Почерпи ме една водка", аз понеже съм в настроение те черпя водка и кола, и ти ми казваш: "Е***и колко си тъп, аз ти исках водка, а не кола"
Значи аз искам да добавя нещо към отговора на Генчо.
fw_mark e възможно най точния класификатор който може да се използва в CBQ по простата причина, че с негова помощ пълната сила на iptables kaто класификатор на трафик може да баде употребена. Що се отнася до u32 филтера когато ползваш маркировка с iptables той практически става излишен.
Ok :) neka dopusnem che az si izmisliam za moite shaperi
ili ako iskate da dopusnem che te sa USER SPACE shapers !
Ne sa public available i ne rabotiat na tolkova nisko nivo kolkoto CBQ !
Respektivno ne sa i taka dobre optimizirani i po tochno tazi prichina mi se iskashe prosto da probvam CBQ-to.
Zashtoto to opredeleno e dosta po dobre optimizirano kato burzina na deistvie spriamo moite dosegashni shaperi. Sus garancia ne sum se oburkal i znam che sum polzval --set-mark 2 ( fw_mark ) + src/dst
I sega vse pak ivan znae kakvo tochno celia a niakoi moje da mi pomogne i d akaje kak tochno stava, mislia che shte e ot polza ne samo na mene a i na mnogo drugi hora koito shte iskat da napraviat sushtoto.
Марто имам едно предложение за тебе ела да пиеме по кола и ще ти обясня как става .[:D]
Ползваш си последните два бита на марка за тип на пакета (bg, int, local), като гледаш в нито един от трите варианта да не са и двата 0, поради bug в iptables (не съм чел да са го оправили, а и не съм се интересувал), пред-пред последния ти показва дали е incoming или outgoing, а останалите битове са специфични за всеки юзър. Пишеш си по едно CBQ правило за всеки марк (съвет - ползвай HTB...) и ако ти трябва някъде да match-ваш типа на пакета го правиш по нужната част от маркировката.
Amiii neshto nemojah da shvana tochno primera koito si mi obiasnil
Toest nerazbrah kakvo tochno imash predvid da setvam fw_mark
i poslednite 2 bita da kazvat bg/int a pred pred poslednia da opredelia usera ?
tova obache oznachava da imam
m ( broi na userite ) x n (broi na networks v bg-peering ) chaina vuv iptables ?
ili gresha ?
ili ne sum shvanal pravilno ?
010 = 2 - IN BG
110 = 6 - OUT BG
011 = 3 - IN INT
111 = 7 - OUT INT
Маркираш така пакетите.
После пращаш тези със съответния марк в отделен chain. Във всеки chain имаш правило за всеки юзър, където ги маркираш отново, съответно със номер_на_юзъра*8+старата_марка (2,6, 3 или 7).
После можеш да си мачваш пакетите както по цялата марка - за tc, така и само по това дали е BG или INT. Примерно -m mark --mark 2/7, това ще са ти BG IN пакети, а пък --mark 2/3 трябва да match-не на всички български изобщо.
Edit: Първото маркиране е по-удобно да се прави преди denat-ването на пакетите, тоест в mangle PREROUTING. Второто трябва ЗАДЪЛЖИТЕЛНО да е след denat, тоест в mangle FORWARD.
При мене е така:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
usr_b_i all -- 0.0.0.0/0 0.0.0.0/0 MARK match 0x6/0x7
usr_b_o all -- 0.0.0.0/0 0.0.0.0/0 MARK match 0x2/0x7
usr_i_i all -- 0.0.0.0/0 0.0.0.0/0 MARK match 0x7/0x7
usr_i_o all -- 0.0.0.0/0 0.0.0.0/0 MARK match 0x3/0x7
Da, naistina do niakude mi pomogna :)
po skoro da razbera che ako ne me nauchi nevoliata niama koi drug !
Napravih go po po razlichen nachin
no opredeleno exabyte mi pomogna do tam che az da kajeme gledah dvumerno na neshtata i izvednuj blagodarenie na nego prozriah triizmernoto reshenie :)))
Thanks exabyte :P
Inache nachina mi e dosta po razlichen ot tvoia :)