Hello Openbsd,
Как будет делиться трафик между потоками от разных клиентов внутри одной очереди ? Например вы создали очередь queue big_client bandwidth 2Mb cbq В эту очередь вы запихали например 2 ипишнега 192.168.1.1 и 192.168.1.2 pass in on $int_if from 192.168.1.1 queue big_client pass in on $int_if from 192.168.1.2 queue big_client Оба клиента начинают активно качать, 1.1 качает в 30 потоков, а 1.2 качает в 100 потоков. Каким образом будет распределяться пропускная способность очереди в случае использования cbq и в случае hfsc ? В линуксе для краевых дисциплин (краевой очереди) используються алгоритмы sfq или tbf sfq стремиться распределить пропускную способность равномерно между всеми качальщиками незавизимо от количества потоков который каждый из них делает. -- Best regards, irix mailto:[hidden email] |
irix wrote:
> Как будет делиться трафик между потоками от разных клиентов внутри одной очереди ? > > Например вы создали очередь > > queue big_client bandwidth 2Mb cbq > > В эту очередь вы запихали например 2 ипишнега 192.168.1.1 и > 192.168.1.2 > > pass in on $int_if from 192.168.1.1 queue big_client > pass in on $int_if from 192.168.1.2 queue big_client > > Оба клиента начинают активно качать, 1.1 качает в 30 потоков, а 1.2 > качает в 100 потоков. > > Каким образом будет распределяться пропускная способность очереди в > случае использования cbq и в случае hfsc ? Если заполнение очереди далеко от переполнения, то полоса будет делиться пропорционально пакетрейту и среднему размеру пакетов к каждому юзеру, т.к. трафик от всех IP идет в общую очередь. Количество потоков ничего не говорит о пакетрейте. Можно наоткрывать кучу медленных соединений и получить низкий пакетрейт. > > В линуксе для краевых дисциплин (краевой очереди) используються > алгоритмы sfq или tbf > > sfq стремиться распределить пропускную способность равномерно между > всеми качальщиками незавизимо от количества потоков который каждый из > них делает. Не между всеми "качальщиками", а между всеми потоками (flows), которые определяются уникальной парой src-ip:src-port - dst-ip:dst-port. Т.е. SFQ можно обмануть, открыв много соединений. В патче ESFQ можно было задавать хэширование по IP-адресам без портов. В mainline еще есть какие-то round-robin'ы (WRR и DRR), они примерно для тех же целей, но еще позволяют задавать определенные веса. |
Hello Stanislav,
Tuesday, October 13, 2009, 4:55:39 AM, you wrote: SK> irix wrote: >> Как будет делиться трафик между потоками от разных клиентов внутри одной очереди ? >> >> Например вы создали очередь >> >> queue big_client bandwidth 2Mb cbq >> >> В эту очередь вы запихали например 2 ипишнега 192.168.1.1 и >> 192.168.1.2 >> >> pass in on $int_if from 192.168.1.1 queue big_client >> pass in on $int_if from 192.168.1.2 queue big_client >> >> Оба клиента начинают активно качать, 1.1 качает в 30 потоков, а 1.2 >> качает в 100 потоков. >> >> Каким образом будет распределяться пропускная способность очереди в >> случае использования cbq и в случае hfsc ? SK> Если заполнение очереди далеко от переполнения, то полоса будет делиться SK> пропорционально пакетрейту и среднему размеру пакетов к каждому юзеру, т.к. SK> трафик от всех IP идет в общую очередь. Количество потоков ничего не говорит о SK> пакетрейте. Можно наоткрывать кучу медленных соединений и получить низкий пакетрейт. >> >> В линуксе для краевых дисциплин (краевой очереди) используються >> алгоритмы sfq или tbf >> >> sfq стремиться распределить пропускную способность равномерно между >> всеми качальщиками незавизимо от количества потоков который каждый из >> них делает. SK> Не между всеми "качальщиками", а между всеми потоками (flows), которые SK> определяются уникальной парой src-ip:src-port - dst-ip:dst-port. Т.е. SFQ можно SK> обмануть, открыв много соединений. В патче ESFQ можно было задавать хэширование SK> по IP-адресам без портов. В mainline еще есть какие-то round-robin'ы (WRR и SK> DRR), они примерно для тех же целей, но еще позволяют задавать определенные веса. Судя по вашему ответу, могу предположить что в внутри одной очереди altq, действия по выравниванию между потоками подобны действиям esfq в линуксе. Правильно ? Есть ли отличия по выравниванию если использывать разные шедулеры например cbq и hfsc ? Кстати в старом altqd, cbq умел балансировать между очередями двумя режимами cbq-wrr(weighted-round robin) и cbq-prr (packet-by-packet round robin). В pf/altq насколько я мог видеть остался только cbq-wrr. Чем он лучше cbq-prr если его оставили ? -- Best regards, irix mailto:[hidden email] |
irix wrote:
> > Судя по вашему ответу, могу предположить что в внутри одной очереди > altq, действия по выравниванию между потоками подобны действиям esfq в > линуксе. Правильно ? Нет, т.к. sfq случайным образом перемешивает пакеты от всех потоков, и таким образом обеспечивает fair queuing. Без перемешивания один поток с мощным пакетрейтом забьет всю очередь. > > Есть ли отличия по выравниванию если использывать разные шедулеры > например cbq и hfsc ? > > Кстати в старом altqd, cbq умел балансировать между очередями двумя > режимами cbq-wrr(weighted-round robin) и cbq-prr (packet-by-packet > round robin). В pf/altq насколько я мог видеть остался только cbq-wrr. > Чем он лучше cbq-prr если его оставили ? Читайте документацию по altq и статьи Kenjiro Cho. |
13 октября 2009 г. 16:23 пользователь Stanislav Kruchinin
<[hidden email]> написал: > irix wrote: >> >> Судя по вашему ответу, могу предположить что в внутри одной очереди >> altq, действия по выравниванию между потоками ... Я что-то не помню в коде altq чтобы, кроме назначения собственно очереди, дальше внутри очереди ещё что-либо делалось. Могу ошибаться, но если первое предложение верно, то внутри очереди "кто успел тот и съел". -- antonvm |
Free forum by Nabble | Edit this page |