как улучшить чувствительность altq к изменениям в очередях?

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

как улучшить чувствительность altq к изменениям в очередях?

Непрочитанное сообщение mainbrain » 2011-04-07 1:07:56

есть такие очереди :

внешний интерфейс внутренний интерфейс

Код: Выделить всё

uname -a
FreeBSD  8.2-RELEASE FreeBSD 8.2-RELEASE 

Код: Выделить всё

altq on $ext_if priq bandwidth 1100Kb  queue {gameport_out   def_out}
queue gameport_out   priority 15 priq 
queue def_out  priority 0   priq (default ,red )

altq on $int_if priq bandwidth 2900Kb    queue {gameport_in   def_in}
queue gameport_in  priority 15 priq 
queue def_in  priority 0 priq (default ,red )

весь конфиг пока что приводить не буду.

altq у меня работает, снижая пинг в играх с 1000 до примерно 25-60 при 100% (постоянной) загрузке канала

НО!!!
altq медленно реагирует на резкое увеличение трафика в очереди default и не успевает его вовремя ограничить
выглядит это примерно так

Код: Выделить всё

Ответ от 213.180.204.3: число байт=32 время=23мс TTL=54
Ответ от 213.180.204.3: число байт=32 время=21мс TTL=54     нет закачек
Ответ от 213.180.204.3: число байт=32 время=21мс TTL=54     нет закачек
Ответ от 213.180.204.3: число байт=32 время=121мс TTL=54   !!!!!!!!!!!!!!!!!!!старт закачки
Ответ от 213.180.204.3: число байт=32 время=165мс TTL=54   !!!!!!!!!!!!!!!!!!!!! лаги
Ответ от 213.180.204.3: число байт=32 время=60мс TTL=54     !!!!!!!!!!!!!!!!!!!!!!! лаги
Ответ от 213.180.204.3: число байт=32 время=35мс TTL=54     !!!!!!!совсем чуть чуть лагов
Ответ от 213.180.204.3: число байт=32 время=23мс TTL=54    закачка идет дальше
Ответ от 213.180.204.3: число байт=32 время=21мс TTL=54    закачка идет дальше
Ответ от 213.180.204.3: число байт=32 время=21мс TTL=54    закачка идет дальше
Ответ от 213.180.204.3: число байт=32 время=21мс TTL=54    закачка идет дальше
Ответ от 213.180.204.3: число байт=32 время=22мс TTL=54    закачка идет дальше
подскажите , что тут можно сделать?
Последний раз редактировалось f_andrey 2011-04-07 1:44:48, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Гость
проходил мимо

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение Гость » 2011-04-07 1:21:05

попробовать тип фифо менять
default, red, итд по мануалу

ну вот как пример

Код: Выделить всё

# set up priority queuing. The two lowest classes are using the Random Early
# Detect (or Drop) to start dropping packets as the queue length increases.
# For general web-wanking and unclassified connections, some packet loss is
# acceptable. For the more interactive and time-sensitive protocols loss is
# unacceptable.
altq on $EXT priq bandwidth $UP queue {ultra, fast, norm, slow}
queue slow priority 1 priq(default, red)
queue norm priority 4 priq(red)
queue fast priority 5
queue ultra priority 6
 

Гость
проходил мимо

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение Гость » 2011-04-07 1:23:38

да кстати я проглядел
у вас отсутсувет понимание как работает очередь
она у вас и на внешнем и на внутренем интерфейсе
ну на внешнем еще понимаю
а на внутреннем зачем?
и почему приоритеты одинаковые ? - 0

mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 8:06:21

она у вас и на внешнем и на внутренем интерфейсе
потому что если оставить только на внешнем , то ограничение вообще не работает,
на внешнем очередь ограничивает исходящий трафик
на внутреннем входящий, перепробовал множество вариантов (с очередями только на одном интерфейсе), о которых пишут в инете, они все не работают.
тем более как я сделаю только на одном интерфейсе , если канал ассимметричный, исходящий меньше входящего аж в 2 раза.


может в конфиге что то не так, но эта схема работает, если отключить altq то пинги становятся по 400-1200
и почему приоритеты одинаковые ? - 0
если вглядеться , то они все таки разные, например, для исходящих пакетов

Код: Выделить всё

gameport_out   priority 15

Код: Выделить всё

def_out  priority 0

приведу все таки конфиг

Код: Выделить всё

ext_if = "vr0"  # external interface
int_if = "rl0"  # internal interface
game_port = "{6112 , 4000 , 5795, 3724, 1513, 6113 , 6114, 6115, 6116, 6117, 6118, 6119 ,1119 , 1513, 1514, 8688, 7456, 6200, 8080}"


lan="10.75.0.0/24"
ext_ip="xx.xx.xx.xx" 
int_ip="10.75.0.1"

set optimization aggressive

scrub in on $ext_if all fragment reassemble min-ttl 20 max-mss 1440
scrub in on $ext_if all no-df
scrub on $ext_if all reassemble tcp


#altq on $ext_if hfsc bandwidth 1100Kb  queue {gameport_out   def_out}
#queue gameport_out bandwidth 30%  priority 7 hfsc (red)
#queue def_out bandwidth 1%  priority 0 hfsc (default , red , rio)

#altq on $int_if hfsc bandwidth 2800Kb queue {gameport_in   def_in}
#queue gameport_in bandwidth 30%  priority 7 hfsc (red)
#queue def_in bandwidth 1%  priority 0 hfsc (default ,red , rio )



altq on $ext_if priq bandwidth 1100Kb  queue {gameport_out   def_out}
queue gameport_out   priority 15 priq 
queue def_out  priority 0   priq (default ,red )

altq on $int_if priq bandwidth 2900Kb    queue {gameport_in   def_in}
queue gameport_in  priority 15 priq 
queue def_in  priority 0 priq (default ,red )




#rdr pass on $ext_if proto {tcp udp} from any to $ext_if port 24978 -> 10.75.0.2 port 24978


## NAT
nat on $ext_if from $int_if:network to any -> ($ext_if)

rdr pass  on $ext_if proto {tcp} from any to $ext_ip port 6112 -> 10.75.0.12 port 6112 #переадресация, чтоб создать сервер игры на внешнем ip

block in log on $ext_if  

antispoof log quick for { lo0, $int_if, $ext_if }






pass in quick on $int_if proto tcp from !$lan to $lan port $game_port queue gameport_in 

pass in quick on $int_if proto udp from !$lan to $lan port $game_port queue gameport_in 


pass in quick on $int_if proto tcp from !$lan port $game_port  to $lan queue gameport_in 

pass in quick on $int_if proto udp from !$lan port $game_port to $lan  queue gameport_in 


pass in quick on $int_if inet proto icmp  from !$lan to $lan icmp-type echoreq queue gameport_in 

pass in quick on $int_if inet proto icmp from  !$lan  to $lan icmp-type echorep queue gameport_in 
pass in quick on $int_if inet proto icmp  from !$lan  to $lan icmp-type unreach queue gameport_in 







pass out quick on $ext_if proto tcp from $ext_ip   to any port $game_port  queue gameport_out 

pass out quick on $ext_if proto udp from $ext_ip  to any port $game_port  queue gameport_out 

pass out quick on $ext_if proto tcp from $ext_ip port $game_port   to any  queue gameport_out 

pass out quick on $ext_if proto udp from $ext_ip port  $game_port  to any  queue gameport_out 


pass out quick on $ext_if inet proto icmp  from $ext_ip  to any  icmp-type echoreq  queue gameport_out 

pass out quick on $ext_if inet proto icmp from  $ext_ip   to any  icmp-type echorep  queue gameport_out 

pass out quick on $ext_if inet proto icmp  from $ext_ip   to any  icmp-type unreach  queue gameport_out 




mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 8:07:41

pftop

Код: Выделить всё

pfTop: Up Queue 1-4/4, View: queue, Cache: 10000                                                               05:07:19

QUEUE                             BW SCH  PRIO     PKTS    BYTES   DROP_P   DROP_B QLEN BORROW SUSPEN     P/S     B/S
gameport_out                         priq   15    30444  2253288        0        0    0                   1.0      73
def_out                              priq    0   307163  172615K    11500  8893279    0                   0.2      11
gameport_in                          priq   15    30620  2271577        0        0    0                   1.0      73
def_in                               priq    0   402704  473385K     1902  2387030    0                   1.0     220


mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 8:08:37

как видно из pftop, пакеты из очередей default действительно дропаются , а из игровых очередей ни одного не дропнулось ни разу

mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 8:20:31

Код: Выделить всё

у вас отсутсувет понимание как работает очередь
согласен =)
все почти наугад делаю )
а все из за того , что не понять , где правда в доках а где бред, потому что на моем инете почему то даже из официальных примеров pf конфиги с altq не работают так как надо

mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 8:28:58

попробовать тип фифо менять
default, red, итд по мануалу
ставил на очереди red rio ecn , оказывает мало влияния,
подбирал qlimit . tbrsize
но практика показала , что их лучше не трогать, улучшений никаких, только хуже
тип фифо
это как?

mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 9:03:25

Очереди создаются на основе некой стратегии. По умолчанию, без использования ALTQ, используется FIFO (first, in first out)
dreamcatcher.ru

Вы про это?

mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 9:17:41

насчет скорости реакции altq(red)
altq_red.c
в исходнике нашел вот что

Код: Выделить всё

/* red parameters for drop probability */
#define INV_P_MAX       10      /* inverse of max drop probability */
#define TH_MIN          5       /* min threshold */
#define TH_MAX          15      /* max threshold */

не эти ли переменные определяют начало отброса пакетов??
как ими управлять?
Последний раз редактировалось mainbrain 2011-04-07 9:19:04, всего редактировалось 1 раз.

mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 9:18:27

и еще altq_rio.c

Код: Выделить всё

* AF DS (differentiated service) codepoints.
 * (classes can be mapped to CBQ or H-FSC classes.)
 *
 *      0   1   2   3   4   5   6   7
 *    +---+---+---+---+---+---+---+---+
 *    |   CLASS   |DropPre| 0 |  CU   |
 *    +---+---+---+---+---+---+---+---+
 *
 *    class 1: 001
 *    class 2: 010
 *    class 3: 011
 *    class 4: 100
 *
 *    low drop prec:    01
 *    medium drop prec: 10
 *    high drop prec:   01
 */

/* normal red parameters */
#define W_WEIGHT        512     /* inverse of weight of EWMA (511/512) */
                                /* q_weight = 0.00195 */

/* red parameters for a slow link */
#define W_WEIGHT_1      128     /* inverse of weight of EWMA (127/128) */
                                /* q_weight = 0.0078125 */

/* red parameters for a very slow link (e.g., dialup) */
#define W_WEIGHT_2      64      /* inverse of weight of EWMA (63/64) */
                                /* q_weight = 0.015625 */

/* fixed-point uses 12-bit decimal places */
#define FP_SHIFT        12      /* fixed-point shift */

/* red parameters for drop probability */
#define INV_P_MAX       10      /* inverse of max drop probability */
#define TH_MIN           5      /* min threshold */
#define TH_MAX          15      /* max threshold */

#define RIO_LIMIT       60      /* default max queue lenght */
#define RIO_STATS               /* collect statistics */


mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 9:26:42

да, я могу поставить на полезные очереди (gameport) red
но в мане пишут что red не работает с протоколом icmp
и улучшения мы сможем определить только войдя в игру, где используется другой протокол,
но хочется все же еще пинги оптимизировать

mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 9:33:56

итак...проведем эксперимент..
при установке red на игровые очереди в них начинают дропаться пакеты, это неприемлемо...
при установке во все очереди red+rio пакеты не дропаются , но игра становится чуть-чуть "дерганой"

Гость
проходил мимо

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение Гость » 2011-04-07 10:23:10

altq должна стоять на внешнем интерфейсе и только
потому что очередь срабатывает после того как исходящий пакет пометился altq и ему в соответсвие пришел входящий

а у вас получается какая то игра в биллиард с пакетами

с внутренней сети идет пакет
проходит мимо очереди на входящем интерефейсе(тоесть внутренем)
и идет на исходящий(внешний)
на внешнем он помечается, и ожидает входящего пакета через внешний интерфейс
при входящем пакете, очередь уже начинает срабатывает и задерживается
задержавшись она попадает на внутренний интерфейс
и срабатывает ЕЩЕ РАЗ

дальнейший смысл понятен?

Гость
проходил мимо

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение Гость » 2011-04-07 10:31:17

ставил на очереди red rio ecn , оказывает мало влияния
http://www.openbsd.org/faq/pf/queueing.html
можно еще попробовать borrow

Гость
проходил мимо

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение Гость » 2011-04-07 11:33:17

mainbrain писал(а):как видно из pftop, пакеты из очередей default действительно дропаются , а из игровых очередей ни одного не дропнулось ни разу
так у вас игровые очереди в самом высшем приоритете
из них и не должно дропатся

mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 17:33:40

вот.. оставил очередь только на одном интерфейсе

Код: Выделить всё

ext_if = "vr0"  # external interface
int_if = "rl0"  # internal interface
#game_net = " { 195.12.0.0/16 } "
game_port = "{6112 , 4000 , 5795, 3724, 1513, 6113 , 6114, 6115, 6116, 6117, 6118, 6119 ,1119 , 1513, 1514, 8688, 7456, 6200, 8080}"

ip_1="10.75.0.8"
ip_2="10.75.0.2"
ip_3="10.75.0.3"
ip_4="10.75.0.9"
lan="10.75.0.0/24"
ext_ip="xx.xx.xx.xx" 
int_ip="10.75.0.1"

set optimization aggressive

scrub in on $ext_if all fragment reassemble min-ttl 20 max-mss 1440
scrub in on $ext_if all no-df
scrub on $ext_if all reassemble tcp



altq on $ext_if priq bandwidth 2800Kb  queue {gameport  def}
queue gameport   priority 15 priq 
queue def  priority 0   priq (default ,red)



#rdr pass on $ext_if proto {tcp udp} from any to $ext_if port 24978 -> 10.75.0.2 port 24978


## NAT
nat on $ext_if from $int_if:network to any -> ($ext_if)
rdr pass  on $ext_if proto {tcp} from any to $ext_ip port 6112 -> 10.75.0.12 port 6112
block in log on $ext_if  

antispoof log quick for { lo0, $int_if, $ext_if }



pass out quick on $ext_if proto tcp from $ext_ip   to any port $game_port  queue gameport 


pass out quick on $ext_if proto udp from $ext_ip  to any port $game_port  queue gameport 


pass out quick on $ext_if proto tcp from $ext_ip port $game_port   to any  queue gameport 


pass out quick on $ext_if proto udp from $ext_ip port  $game_port  to any  queue gameport



pass out quick on $ext_if inet proto icmp  from $ext_ip  to any  icmp-type echoreq  queue gameport

pass out quick on $ext_if inet proto icmp from  $ext_ip   to any  icmp-type echorep  queue gameport 

pass out quick on $ext_if inet proto icmp  from $ext_ip   to any  icmp-type unreach  queue gameport




результат весьма печальный


Код: Выделить всё

Обмен пакетами с ya.ru [87.250.251.3] по 32 байт:
Ответ от 87.250.251.3: число байт=32 время=22мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=23мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=21мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=75мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=167мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=173мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=163мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=184мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=164мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=146мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=191мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=162мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=174мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=188мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=170мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=171мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=186мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=180мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=183мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=147мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=188мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=172мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=211мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=194мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=183мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=248мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=270мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=288мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=267мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=270мс TTL=53

Гость
проходил мимо

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение Гость » 2011-04-07 17:39:21

давайте немного сначала?
я перечитал документацию
и с двумя очередями и на входящем и на исходящем интерфейсе, тоже можно строить
здесь вопрос в первоначально задачи

можете ее озвучить?

и еще
попробуйте к pass icmp правилам добавить keep-state
и включать выключать scrub

mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 17:46:25

здесь вопрос в первоначально задачи

можете ее озвучить?
altq у меня работает, снижая пинг в играх с 1000 до примерно 25-60 при 100% (постоянной) загрузке канала

НО!!!
altq медленно реагирует на резкое увеличение трафика в очереди default и не успевает его вовремя ограничить
выглядит это примерно так
КОД: ВЫДЕЛИТЬ ВСЁ • РАЗВЕРНУТЬ
Ответ от 213.180.204.3: число байт=32 время=23мс TTL=54
Ответ от 213.180.204.3: число байт=32 время=21мс TTL=54 нет закачек
Ответ от 213.180.204.3: число байт=32 время=21мс TTL=54 нет закачек
Ответ от 213.180.204.3: число байт=32 время=121мс TTL=54 !!!!!!!!!!!!!!!!!!!старт закачки
Ответ от 213.180.204.3: число байт=32 время=165мс TTL=54 !!!!!!!!!!!!!!!!!!!!! лаги
Ответ от 213.180.204.3: число байт=32 время=60мс TTL=54 !!!!!!!!!!!!!!!!!!!!!!! лаги
Ответ от 213.180.204.3: число байт=32 время=35мс TTL=54 !!!!!!!совсем чуть чуть лагов
Ответ от 213.180.204.3: число байт=32 время=23мс TTL=54 закачка идет дальше
Ответ от 213.180.204.3: число байт=32 время=21мс TTL=54 закачка идет дальше
Ответ от 213.180.204.3: число байт=32 время=21мс TTL=54 закачка идет дальше
Ответ от 213.180.204.3: число байт=32 время=21мс TTL=54 закачка идет дальше
Ответ от 213.180.204.3: число байт=32 время=22мс TTL=54 закачка идет дальше

подскажите , что тут можно сделать?
попробуйте к pass icmp правилам добавить keep-state
а разве он не по умолчанию включен?
попробую руками вписать щас
и включать выключать scrub
выключу на всякий случай (кстати если scrub включить еще и на внутреннем то инет вообще не идет, только пинги )

Гость
проходил мимо

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение Гость » 2011-04-07 17:48:20

и еще
у вас в gameport очереди
сразу большая каша
разделите ее
отдельно по каждой сущности
например для icmp
создайте другую очередь
и пускай у нее будет приоритет 14 к примеру

mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 17:49:19

если я добавлю keep-state то ответы разве попадут в очередь?

Гость
проходил мимо

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение Гость » 2011-04-07 17:51:31

mainbrain писал(а):если я добавлю keep-state то ответы разве попадут в очередь?
(( я линк потерял
где обсуждалась тоже одна из проблем с icmp
там такое было
в очереди и с keep-state

mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 17:54:00

так и есть
gameport_in опустела
pfTop: Up Queue 1-4/4, View: queue, Cache: 10000 14:53:17

QUEUE BW SCH PRIO PKTS BYTES DROP_P DROP_B QLEN BORROW SUSPEN P/S B/S
gameport_out priq 15 343 25302 0 0 0
def_out priq 0 20597 1516729 0 0 0
gameport_in priq 15 0 0 0 0 0
def_in priq 0 34106 44767300 310 412194 0


Гость
проходил мимо

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение Гость » 2011-04-07 17:56:48

под первоначальной задачей
я спрашивал о том как и что вы хотите что бы работало
а не саму проблемы что у вас пинг плохо реагирует

mainbrain
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-06-20 11:44:20

Re: как улучшить чувствительность altq к изменениям в очеред

Непрочитанное сообщение mainbrain » 2011-04-07 18:02:19

Код: Выделить всё

ext_if = "vr0"  # external interface
int_if = "rl0"  # internal interface
#game_net = " { 195.12.0.0/16 } "
game_port = "{6112 , 4000 , 5795, 3724, 1513, 6113 , 6114, 6115, 6116, 6117, 6118, 6119 ,1119 , 1513, 1514, 8688, 7456, 6200, 8080}"

ip_1="10.75.0.8"
ip_2="10.75.0.2"
ip_3="10.75.0.3"
ip_4="10.75.0.9"
lan="10.75.0.0/24"
ext_ip="xx.xx.xx.xx" 
int_ip="10.75.0.1"

set optimization aggressive

#scrub in on $ext_if all fragment reassemble min-ttl 20 max-mss 1440
#scrub in on $ext_if all no-df
#scrub on $ext_if all reassemble tcp


#altq on $ext_if hfsc bandwidth 1100Kb  queue {gameport_out   def_out}
#queue gameport_out bandwidth 30%  priority 7 hfsc (red)
#queue def_out bandwidth 1%  priority 0 hfsc (default , red , rio)

#altq on $int_if hfsc bandwidth 2800Kb queue {gameport_in   def_in}
#queue gameport_in bandwidth 30%  priority 7 hfsc (red)
#queue def_in bandwidth 1%  priority 0 hfsc (default ,red , rio )



altq on $ext_if priq bandwidth 1100Kb  queue {gameport_out   def_out}
queue gameport_out   priority 15 priq 
queue def_out  priority 0   priq (default ,red )

altq on $int_if priq bandwidth 2900Kb    queue {gameport_in   def_in}
queue gameport_in  priority 15 priq 
queue def_in  priority 0 priq (default ,red )




#rdr pass on $ext_if proto {tcp udp} from any to $ext_if port 24978 -> 10.75.0.2 port 24978


## NAT
nat on $ext_if from $int_if:network to any -> ($ext_if)
rdr pass  on $ext_if proto {tcp} from any to $ext_ip port 6112 -> 10.75.0.12 port 6112
block in log on $ext_if  

antispoof log quick for { lo0, $int_if, $ext_if }






pass out quick on $int_if proto tcp from !$lan to $lan port $game_port queue gameport_in no state

pass out quick on $int_if proto udp from !$lan to $lan port $game_port queue gameport_in no state


pass out quick on $int_if proto tcp from !$lan port $game_port  to $lan queue gameport_in no state

pass out quick on $int_if proto udp from !$lan port $game_port to $lan  queue gameport_in no state


pass out quick on $int_if inet proto icmp  from !$lan to $lan icmp-type echoreq queue gameport_in no state

pass out quick on $int_if inet proto icmp from  !$lan  to $lan icmp-type echorep queue gameport_in no state
pass out quick on $int_if inet proto icmp  from !$lan  to $lan icmp-type unreach queue gameport_in no state




pass out quick on $ext_if proto tcp from $ext_ip   to any port $game_port  queue gameport_out no state

pass out quick on $ext_if proto udp from $ext_ip  to any port $game_port  queue gameport_out no state

pass out quick on $ext_if proto tcp from $ext_ip port $game_port   to any  queue gameport_out no state

pass out quick on $ext_if proto udp from $ext_ip port  $game_port  to any  queue gameport_out no state


pass out quick on $ext_if inet proto icmp  from $ext_ip  to any  icmp-type echoreq  queue gameport_out no state

pass out quick on $ext_if inet proto icmp from  $ext_ip   to any  icmp-type echorep  queue gameport_out no state

pass out quick on $ext_if inet proto icmp  from $ext_ip   to any  icmp-type unreach  queue gameport_out no state

вот такое работает так

Код: Выделить всё

Ответ от 87.250.251.3: число байт=32 время=69мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=137мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=28мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=89мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=47мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=67мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=52мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=52мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=70мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=26мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=125мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=25мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=78мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=61мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=99мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=44мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=100мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=41мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=97мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=46мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=49мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=52мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=60мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=57мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=59мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=27мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=100мс TTL=53
Ответ от 87.250.251.3: число байт=32 время=49мс TTL=53
то есть пинги не 300 конечно, но все равно паршивенько