ipfw, queue, pipe
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
- Сообщения: 5
- Зарегистрирован: 2010-07-09 21:43:14
ipfw, queue, pipe
Не могу понять как реализовать следующее: нужно настроить ipfw так чтобы он выделял группе компьютеров более приоритетный канал но с ограниченной скоростью. Т.е. из 4 Мбит только 2 к примеру. Если создать две трубы 2 и 4 мегабита и привязать к ним очереди то они (очереди) между собой конкурировать не будут. Если обе очереди завернуть в одну трубу, тогда нельзя будет ограничить скорость приоритетного потока. Пока пришла только одна мысль, обе очереди загнать в 4-х мегабитную трубу, после которой приоритетный трафик ещё раз завернуть в трубу, только уже на 2 мегабита, но чтото извращением попахивает. Как это можно решить?
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
-
- проходил мимо
- Сообщения: 5
- Зарегистрирован: 2010-07-09 21:43:14
Re: ipfw, queue, pipe
Сделал так
Вроде работает, может кому пригодится
Код: Выделить всё
ipfw pipe 100 config bw 100Kbit/s queue 5Kbytes
ipfw pipe 240 config bw 240Kbit/s queue 10Kbytes
ipfw queue 10 config pipe 240 weight 10
ipfw queue 90 config pipe 240 weight 90
ipfw 45510 queue 90 ip from any to $pc1
ipfw 45520 queue 10 ip from any to $pc2
ipfw 45530 pipe 100 ip from any to $pc1
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
кстати актуальный вопрос и для меня. Есть канал 4 мбита. Расппихал юзеров в 3 таблицы и порезал скорость. 1-4мбит 2-1 мбит, 3-512кбит. Задача такова: распихать в группы всю подсеть( сделано), разграничить группы по скорости(сделано). Разграничить приоритеты группам и сделать очереди, чтобы когда качала чтото более привилегированная группа, остальным скорость попускалась, а если привилегированной группы айпи нет в сети, то остальным инет поднимался, но не выше чем установленое значение. Вот как такое реализовать - понять не могу. Вот мои пайпы - мож кто подскажет
ЗЫ вопрос - что даёт значение queue 5Kbytes в этом правиле ??????
Код: Выделить всё
#----pipe 1 for Table 1 (super user) --------------------
#download
$fwcmd add 1 pipe 1 ip from not $intip to "table(1)" out
$fwcmd pipe 1 config bw 4000Kbit/s
#upload
$fwcmd add 2 pipe 2 ip from "table(1)" to not me in
$fwcmd pipe 2 config bw 1000Kbit/s
#----pipe 2 for Table 2 (all Boss)----------------------
#download
$fwcmd add 3 pipe 3 ip from any to "table(2)" out
$fwcmd pipe 3 config bw 512Kbit/s mask dst-ip 0xffffffff
#upload
$fwcmd add 4 pipe 4 ip from "table(2)" to any in
$fwcmd pipe 4 config bw 256Kbit/s mask src-ip 0xffffffff
#----pipe 3 for Table 3 (other users)-------------------
#download
$fwcmd add 5 pipe 5 ip from any to "table(3)" out
$fwcmd pipe 5 config bw 512Kbit/s
#upload
$fwcmd add 6 pipe 6 ip from "table(3)" to any in
$fwcmd pipe 6 config bw 128Kbit/s
Код: Выделить всё
ipfw pipe 100 config bw 100Kbit/s queue 5Kbytes
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: ipfw, queue, pipe
прогонять через две очереди с one_pass
по поводу queue написано в man ipfw
по поводу queue написано в man ipfw
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
Насколько я правильно понял, сделал вот так:
и т.д.
Код: Выделить всё
$fwcmd pipe 1 config bw 4000Kbit/s queue 100
$fwcmd pipe 2 config bw 1000Kbit/s queue 100
$fwcmd pipe 3 config bw 512Kbit/s queue 100 mask dst-ip 0xffffffff
$fwcmd queue 1 config pipe 1 queue 100 weight 90 mask dst-ip 0xffffffff
$fwcmd queue 2 config pipe 3 queue 100 weight 60 mask dst-ip 0xffffffff
$fwcmd queue 3 config pipe 5 queue 100 weight 40 mask dst-ip 0xffffffff
#download
$fwcmd add 4 pipe 1 ip from not $intip to "table(1)" out
#upload
$fwcmd add 5 pipe 2 ip from "table(1)" to not me in
#download
$fwcmd add 6 pipe 3 ip from any to "table(2)" out
#upload
$fwcmd add 7 pipe 4 ip from "table(2)" to any in
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: ipfw, queue, pipe
Код: Выделить всё
$fwcmd add 4 pipe 1 ip from not $intip to "table(1)" out
разве не
Код: Выделить всё
$fwcmd add 4 queue 1 ip from not $intip to "table(1)" out
Код: Выделить всё
$fwcmd pipe 3 config bw 512Kbit/s queue 100 mask dst-ip 0xffffffff
тогда она должна идти до общей балансировки по пути паета
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
Видоизменил пайпы. Потестил. Внутри группы скорость равномерно делится если юзеры начинают качать один за другим и увеличивается до максимум (для этой группы) если качает один юзер. Но не получается выставить приоритет для трёх групп - если качаю с главной группы, то скорость максималка, если вместе со мной качает юзер со второй группы, ему даётся 30-40 кб\сек и у меня попускается скорость на эти 30-40 кб. Если со мной качает юзер с третьей (самой низкоприорететной) группы, ему даются теже 30-40 кб как для второй группы а у меня -60 кб\сек. Вот какие пайпы у меня получились:
С равномерным разделением внутри группы справился, теперь хотелось бы выставить приоритеты групп.
Код: Выделить всё
#---- Pipes config -------------------------------------
$fwcmd pipe 1 config bw 4000Kbit/s # download chanel
$fwcmd pipe 2 config bw 1000Kbit/s # upload chanel
$fwcmd pipe 3 config bw 512Kbit/s # download Boss
$fwcmd pipe 4 config bw 256Kbit/s # upload Boss
$fwcmd pipe 5 config bw 512Kbit/s # download other users
$fwcmd pipe 6 config bw 128Kbit/s # upload other users
$fwcmd pipe 7 config bw 512Kbit/s # download m2m
$fwcmd pipe 8 config bw 256Kbit/s # upload m2m
#---- Queues configs --------------------------------------------------
$fwcmd queue 1 config pipe 1 queue 100 weight 60 mask dst-ip 0xffffffff
$fwcmd queue 2 config pipe 3 queue 45 weight 30 mask dst-ip 0xffffffff
$fwcmd queue 3 config pipe 5 queue 30 weight 10 mask dst-ip 0xffffffff
#----pipe 1 for Table 1 (super user) --------------------
#download
$fwcmd add 1 queue 1 ip from not $intip to "table(1)" out
#upload
$fwcmd add 2 pipe 2 ip from "table(1)" to not me in
#----pipe 2 for Table 2 (all Boss)----------------------
#download
$fwcmd add 3 queue 2 ip from any to "table(2)" out
#upload
$fwcmd add 4 pipe 4 ip from "table(2)" to any in
#----pipe 3 for Table 3 (other users)-------------------
#download
$fwcmd add 5 queue 3 ip from any to "table(3)" out
#upload
$fwcmd add 6 pipe 6 ip from "table(3)" to any in
#----pipe 4 for Table 4 (m2m users)---------------------
#download
$fwcmd add 7 pipe 7 ip from any to "table(4)" out
#upload
$fwcmd add 8 pipe 8 ip from "table(4)" to any in
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
Вот еще немного видоизменил пайпы - так намного правильнее....мож кому пригодится. 3 группы разделенные по приоритетам+каждая группа имеет своё ограничение по скорости кроме первой.(всего канал 4 мбита). В каждой группе канал делится на юзеров поровну (например: качает один юзер в группе3 с максимальной для этой группы скоростью 512к, начинает качать второй юзер из этой же группы - скорость равномерно режется и так далее.) Очереди и приоритет имеет только входящий канал, исходящий просто ограничен по скоростям.
Код: Выделить всё
#---- Pipes config ----------------------------------------------
$fwcmd pipe 1 config bw 4000Kbit/s queue 100 # download table 1 super users
$fwcmd pipe 2 config bw 1000Kbit/s # upload table 1 super users
$fwcmd pipe 3 config bw 512Kbit/s queue 45 # download table 2 Boss
$fwcmd pipe 4 config bw 256Kbit/s # upload table 2 Boss
$fwcmd pipe 5 config bw 512Kbit/s queue 30 # download table 3 other users
$fwcmd pipe 6 config bw 128Kbit/s # upload table 3 other users
$fwcmd pipe 7 config bw 512Kbit/s # download table 4 m2m
$fwcmd pipe 8 config bw 256Kbit/s # upload table 4 m2m
#---- Queues configs -------------------------------------------------
$fwcmd queue 1 config pipe 1 queue 100 weight 60 mask dst-ip 0xffffffff
$fwcmd queue 2 config pipe 3 queue 45 weight 30 mask dst-ip 0xffffffff
$fwcmd queue 3 config pipe 5 queue 30 weight 10 mask dst-ip 0xffffffff
#----pipe 1 for Table 1 (super user) --------------------
#download
$fwcmd add 1 queue 1 ip from not $intip to "table(1)" out
#upload
$fwcmd add 2 pipe 2 ip from "table(1)" to not me in
#----pipe 2 for Table 2 (all Boss)----------------------
#download
$fwcmd add 3 queue 2 ip from any to "table(2)" out
#upload
$fwcmd add 4 pipe 4 ip from "table(2)" to any in
#----pipe 3 for Table 3 (other users)-------------------
#download
$fwcmd add 5 queue 3 ip from any to "table(3)" out
#upload
$fwcmd add 6 pipe 6 ip from "table(3)" to any in
#----pipe 4 for Table 4 (m2m users)---------------------
#download
$fwcmd add 7 pipe 7 ip from any to "table(4)" out
#upload
$fwcmd add 8 pipe 8 ip from "table(4)" to any in
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
Понял, что для для моего случая weight не нужно, ибо разделил канал частями
при вижу это
не совсем понятен параметр . Наверно дефолтное значение, но как правильно его понимать в данном случае?
Код: Выделить всё
#---- Pipes config -------------------------------------------------------
$fwcmd pipe 1 config bw 2027Kbit/s queue 100 # download table 1 super users
$fwcmd pipe 2 config bw 700Kbit/s # upload table 1 super users
$fwcmd pipe 3 config bw 1014Kbit/s queue 60 # download table 2 Boss
$fwcmd pipe 4 config bw 256Kbit/s # upload table 2 Boss
$fwcmd pipe 5 config bw 760Kbit/s queue 60 # download table 3 other users
$fwcmd pipe 6 config bw 128Kbit/s # upload table 3 other users
$fwcmd pipe 7 config bw 256Kbit/s # download table 4 m2m
$fwcmd pipe 8 config bw 256Kbit/s # upload table 4 m2m
#---- Queues configs -----------------------------------------
$fwcmd queue 1 config pipe 1 queue 100 mask dst-ip 0xffffffff
$fwcmd queue 2 config pipe 3 queue 60 mask dst-ip 0xffffffff
$fwcmd queue 3 config pipe 5 queue 60 mask dst-ip 0xffffffff
#----pipe 1 for Table 1 (super user) --------------------
#download
$fwcmd add 1 queue 1 ip from not $intip to "table(1)" out
#upload
$fwcmd add 2 pipe 2 ip from "table(1)" to not me in
#----pipe 2 for Table 2 (all Boss)----------------------
#download
$fwcmd add 3 queue 2 ip from any to "table(2)" out
#upload
$fwcmd add 4 pipe 4 ip from "table(2)" to any in
#----pipe 3 for Table 3 (other users)-------------------
#download
$fwcmd add 5 queue 3 ip from any to "table(3)" out
#upload
$fwcmd add 6 pipe 6 ip from "table(3)" to any in
#----pipe 4 for Table 4 (m2m users)---------------------
#download
$fwcmd add 7 pipe 7 ip from any to "table(4)" out
#upload
$fwcmd add 8 pipe 8 ip from "table(4)" to any in
Код: Выделить всё
ipfw queue show
Код: Выделить всё
q00001: weight 1 pipe 1 100 sl. 3 queues (64 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
q00002: weight 1 pipe 3 60 sl. 15 queues (64 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
q00003: weight 1 pipe 5 60 sl. 19 queues (64 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
Код: Выделить всё
weight 1
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: ipfw, queue, pipe
понимать как одинаковый вес всех очередей внутри трубы
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
-
- проходил мимо
- Сообщения: 5
- Зарегистрирован: 2010-07-09 21:43:14
Re: ipfw, queue, pipe
А почему б сразу не отправить входящий поток на пайпы? Я просто не понимаю смысл очередей в данном примере
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
не будет равно приоритетных очередей. Не получится внутри группы поделить выданый ей канал...я же писал выше, что делают эти пайпы
В каждой группе канал делится на юзеров поровну (например: качает один юзер в группе3 с максимальной для этой группы скоростью 512к, начинает качать второй юзер из этой же группы - скорость равномерно режется и так далее.
-
- проходил мимо
- Сообщения: 5
- Зарегистрирован: 2010-07-09 21:43:14
Re: ipfw, queue, pipe
А с чего этим очередям иметь разный приоритет?
Если вместо
поставить
Это должно привести к аналогичному эффекту
Если вместо
Код: Выделить всё
#download
$fwcmd add 1 queue 1 ip from not $intip to "table(1)" out
#upload
$fwcmd add 2 pipe 2 ip from "table(1)" to not me in
Код: Выделить всё
#download
$fwcmd add 1 pipe 1 ip from not $intip to "table(1)" out
#upload
$fwcmd add 2 pipe 2 ip from "table(1)" to not me in
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
второй пример ограничит 1 таблице юзеров канал в N mbit ...если какой то вася из этой группы начнет качать на скрости N, все остальные будут стоять. А в моём случае скорость разделяется поровну и никто некому не мешает
-
- проходил мимо
- Сообщения: 5
- Зарегистрирован: 2010-07-09 21:43:14
Re: ipfw, queue, pipe
Я не уверен на 100%, но мне кажется что установление маски для очереди влияет на создание экземпляров очередей, т.е. если качают 10 пользователей, то будет создано 10 очередей, которые будут направлены на одну трубу, и канал они будут делить в соответствии с весам очередей. Маска для пайпов соответственно создаёт экземпляры пайпов. Жаль нет под рукой FreeBSD проверить.
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
я тестил свои правила и могу с уверенностью сказать, что работает так, как и задумывалось.
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
формула для расчёта gred, размера очередей в зависимости от скорости
Соответственно имеем более мягкую нарезку скорости
Коменты и поправки приветствую
Код: Выделить всё
скорость ужата каналом в 256 кб\сек.Чтобы очереди работали правильно и небыло битых пакетов, необходимо выставить такой размер очереди, который бы в итоге обеспечил бы не более 0,5 секунд задержки. ЕЕ мы и вычислим...подставляем от балды значение queue_size (MTU всегда постоянна - примерно 1492...умножаем на 8, чтобы перевести в биты (у нас то все расчёты в битах))
QUEUE_TOTAL= MTU*QUEUE_SIZE = (1492*8)*50 = 11936*50 = 596800 бит
время задержки:
T = QUEUE_TOTAL/BANDWIDTH = 596800/262144 = ~2,276 секунды.
где, BANDWIDTH = 256 * 1024 = 262144 бит (переводим всё в биты)
получили 2,2 секунды - много!!!!! нужно хотябы 0,5
и так подставляем QUEUE_SIZE, пока не получим 0,5 секунд задержки (для моего случая это 12)
расчитываем gred.
max_th = 12/2 = 6
min_th = 6/3 = 2
тоесть для max_th надо размер очередей поделить на 2 - это будет верхний порог, а для min_th нужно верхний порог поделить на 3
вот и получаем
ipfw pipe 1 config bw 256Kbit/s queue 12 gred 0.002/2/6/0.1 (параметр 0,002 и 0,1 считаются чтото типа идеальных и менять их не стоит.)
Коменты и поправки приветствую
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
заметил какую то идиотскую особенность....нас 3 в группе...скорость 240 кб поделил на троих равномерно....начинают качать 2 юзера, вроде бы всё чётко...скорость у каждого по 120 кб...тут вклиниваюсь я....у них скорость делится (по 80 на рыло получается)...вроде всё гуд...но в какой то момент (закономерности пока найти не могу) у кого то из нас скорость падает до 10 кб (если качаешь) или если лазиешь по страничкам, то ощущается дискомфорт при их загрузке. Происходит сия картина в хаотичный отрезок времени, если те два юзера в группе качают уже примерно час.
Вот конфиг на эту группу.
вот выхлоп ipfw queue show для этой группы
Может нехватает длины очереди? Как понять почему идут тормоза?
Вот конфиг на эту группу.
Код: Выделить всё
$fwcmd pipe 1 config bw 2027Kbit/s queue 80 # download table 1 super users
$fwcmd pipe 2 config bw 700Kbit/s # upload table 1 super users
$fwcmd queue 1 config pipe 1 queue 80 mask dst-ip 0xffffffff gred 0.002/13/40/0.1
#----pipe 1 for Table 1 (super user) --------------------
#download
$fwcmd add 1 queue 1 ip from not $intip to "table(1)" out
#upload
$fwcmd add 2 pipe 2 ip from "table(1)" to not me in
Код: Выделить всё
q00001: weight 1 pipe 1 80 sl. 4 queues (64 buckets)
GRED w_q 0.001999 min_th 13 max_th 40 max_p 0.099991
mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
11 ip 0.0.0.0/0 10.0.0.11/0 486249 394404960 0 0 1764
12 ip 0.0.0.0/0 10.0.0.12/0 2906584 4042267078 0 0 22235
13 ip 0.0.0.0/0 10.0.0.141/0 96723 47810597 0 0 404
14 ip 0.0.0.0/0 10.0.0.14/0 2623577 3879447251 0 0 61402
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
только что тормоза увеличились. скорость по спидтесту 0,1...думал пров порезал скорость (бывает за неуплату). закоментил весь думинет и реснул комп...все залетало....
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
инет на некоторых компах идёт рывками...странно всё это
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
не подскажет ли кто нить, как можно проверить трубу на предмет нехватки очередей?
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
люди добрые ну подскажите хоть что нить...подобная трабла возникает в хаотичном порядке и закономерностей нет
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: ipfw, queue, pipe
а что мешает таки делать разделение в обе стороны?
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
-
- лейтенант
- Сообщения: 693
- Зарегистрирован: 2008-10-02 20:49:21
Re: ipfw, queue, pipe
я сделал разделение на dst-ip и src-ip...это как то связанно с тормозами и рывками которые я испытываю?
Код: Выделить всё
q00001: weight 1 pipe 1 20 sl. 5 queues (64 buckets)
GRED w_q 0.001999 min_th 3 max_th 10 max_p 0.099991
mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
6 ip 0.0.0.0/0 10.0.0.6/0 5616 7667965 0 0 30
10 ip 0.0.0.0/0 10.0.0.10/0 700 992331 0 0 1
11 ip 0.0.0.0/0 10.0.0.11/0 3870 4795537 0 0 59
12 ip 0.0.0.0/0 10.0.0.12/0 72 42423 0 0 0
13 ip 0.0.0.0/0 10.0.0.141/0 46808 14921069 0 0 320
q00005: weight 1 pipe 5 40 sl. 20 queues (64 buckets)
GRED w_q 0.001999 min_th 7 max_th 20 max_p 0.099991
mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000