Теория про dummynet (ipfw)

Бывает возникает задача организовать нарезку канала или настроить QoS. Информации на эту тему в интернете полно, но мало где рассказывается о том, как правильно рассчитать размер очереди, параметры для RED/GRED для определенной пропускной способности канала. Это и послужило написанию данной заметки. Здесь я не буду описывать, как создаются каналы, очереди, а  изложу лишь только теоретическую часть вопроса.

Пропускная способность канала

Ну здесь все просто - если вы создаете одну общую трубу (например для организации QoS), то не стоит указывать пропускную способность равную заявленной провайдером. В таком случае пакеты будут уходить не забивая созданную трубу, то есть очередь пакетов будет возникать у прова, а это неправильно, ведь нам нужно чтобы очередь возникла на нашем маршрутизаторе. В такой ситуации планировщик не сможет нормально работать - ему будет казаться, что труба еще не нагружена до предела и в сети нет никакой конкуренции за него. Поэтому ширину канала для трубы желательно указывать примерно на 5% меньше заявленной провайдером.

Расчет размера очереди

Как говорит ман по ipfw, размер очереди для всех создаваемых объектов в dummynet составляет 50 слотов (так же может указываться в байтах), что является нормальным для Ethernet устройств. Чтобы получить размер очереди в байтах, нужно количество слотов умножить на MTU канала, на котором вы собираетесь нарезать скорость. Кстати, понятие размер очереди также можно трактовать как буфер для пакетов. Если указать большой размер очереди, а канал будет низкоскоростным, то пока заполнится очередь, пройдет довольно длинный промежуток времени, а это очень плохо как для планировщика (если таковой используется), так и для клиента. С такой конфигурацией пакеты очень долго будут находиться в канале, вплоть до того что клиент пославший его может не дождавшись ответа из-за таймаута подумать, что пакет где-то затерялся в пути и повторить передачу. Например, пусть размер очереди будет равным 50 слотам, а ширина канала будет составлять 128Кбит/с, то время заполнения очереди составит - (1500*8*50)/(128*1000) ~ 4,7с. Если указать слишком маленький размер очереди, то это плохо отразиться на сглаживании всплесков трафика в канале. Время, за которое заполняется очередь должно быть не более 0,5с. Приведу несколько простых формул для расчета размера очереди и др. параметров.

Обозначения:

  • MTU - максимальный размер пакета в сети (байт)
  • Qlen - размер очереди (слотов)
  • Qsize - размер очереди (байт)
  • t - время заполнения очереди (сек)
  • BW - ширина канала (бит/сек)

Формула для расчета размера очереди:

Qlen = (t * BW) / (MTU * 8) (слотов)

Расчет времени заполнения очереди:

t = (Qlen * MTU * 8) / BW (сек)

Перевод слотов в байты:

Qsize = Qlen * MTU (байт)

Пример: рассчитаем все необходимые величины для канала с заявленной провом полосой пропускания 512 Кбит/с. Условимся, что MTU для канала будет составлять 1460 байт. Как было сказано выше брать ширину канала лучше меньше примерно на 1-5% поэтому мы будем работать с полосой пропускания в 486 Кбит/с.

BW = 486 * 1000 = 486000 (бит/с)

Пусть время, за которое заполняется очередь, будет равно t = 0.2 сек. Теперь у нас есть все необходимые исходные данные для расчета размера очереди:

Qlen = (t * BW) / (MTU * 8)  = (0.2 * 486000) / (1460 * 8) ~ 8 (слотов)

Но такой размер очереди слишком мал - с таким значением будут плохо сглаживаться всплески трафика. Рассчитаем время заполнения очереди, например для Qlen = 12 слотов.

t = (Qlen * MTU * 8) / BW = (12 * 1460 * 8) / 486000 ~ 0.29 (сек)

Как видно из расчетов время заполнения очереди t < 0.5, то есть удовлетворяет условию, причем с запасом. Поэтому можно попробовать взять еще больший размер очереди, например в 18 слотов.

t = (Qlen * MTU * 8) / BW = (18 * 1460 * 8) / 486000 ~ 0.43 (сек)

С таким размером очереди тоже можно работать. Таким образом, данные расчеты лишь помогают выбрать приблизительно оптимальный размер очереди, а наиболее лучший выбирается методом проб и наблюдений.

Расчет параметров RED/GRED

Думаю, подробно описывать работу данных алгоритмов ни к чему, потому что данной инфы в интернете полно. Скажу лишь вкратце, что RED начинает отбрасывать пакеты с линейно возрастающей вероятностью, когда перегрузка находится между указанными порогами и отбрасывать все пакеты, когда перегрузка превышает максимальный порог. А GRED действует чуть мягче - когда перегрузка находится между максимальным порогом и удвоенным максимальным порогом, то он еще с большей линейно возрастающей вероятностью отбрасывает пакеты, а при превышении и этого порога отбрасываются все пакеты. Кто хочет более глубоких познаний в этой области, то вам на официальный сайт за документацией.

Задаваемые параметры:

  • w_q - весовой фактор для расчетов средней загрузки, вещественное число в диапазоне 0..1. Наилучшим считается 0.002, поэтому его трогать не стоит.
  • min_th - минимальный порог, после которого начинают отбрасываться пакеты. В зависимости от того, что вы указали в размере очереди, задается либо в слотах, либо в байтах.
  • max_th - максимальный порог, после которого начинают отбрасываться все пакеты (RED) или с еще большей вероятностью (GRED). В зависимости от того, что вы указали в размере очереди, задается либо в слотах, либо в байтах.
  • max_p - максимальная вероятность отбрасывания пакетов, вещественное число в диапазоне 0..1. Наилучшим считается 0.1, поэтому его трогать не стоит. При превышении порога min_th пакеты отбрасываются с линейно возрастающей вероятностью от 0 до max_p. Для GRED при превышении порога max_th пакеты отбрасываются с линейно возрастающей вероятностью от max_p до 1, пока не будет достигнут порог 2*max_th.

Из вышесказанного следует, что нам нужны только параметры min_th и max_th. Рассчитываются они просто:

RED:

min_th = (Qlen | Qsize) / 6 (слотов | байтов)
max_th = Qlen | Qsize (слотов | байтов)

GRED:

min_th = (Qlen | Qsize) / 6 (слотов | байтов)
max_th = (2..5) * min_th (слотов | байтов)

Например, для вышеприведенного примера параметры для алгоритма GRED будут такими:

min_th = Qlen / 6 = 18 / 6 = 3
max_th (2..5)* min_th = 3 * 3 = 9

Ну вот, в принципе и все, что я хотел сказать о расчетах параметров для dummynet. Если есть, что добавить, то прошу в комменты.

Гость (не проверено)

https://goodnights.in


https://achalpur.goodnights.in


https://adoni.goodnights.in


https://agartala.goodnights.in


https://agra.goodnights.in


https://ahmedabad.goodnights.in


https://ahmednagar.goodnights.in


https://aizawl.goodnights.in


https://ajmer.goodnights.in


https://akola.goodnights.in


https://alappuzha.goodnights.in


https://aligarh.goodnights.in


https://alwar.goodnights.in


https://amaravati.goodnights.in


https://ambala.goodnights.in


https://ambarnath.goodnights.in


https://ambattur.goodnights.in


https://amravati.goodnights.in


https://amritsar.goodnights.in


https://amroha.goodnights.in


https://anand.goodnights.in


https://anantapur.goodnights.in


https://arrah.goodnights.in


https://asansol.goodnights.in


https://aurangabad.goodnights.in


https://avadi.goodnights.in


https://badlapur.goodnights.in


https://bagaha.goodnights.in


https://baharampur.goodnights.in


https://bahraich.goodnights.in


https://bally.goodnights.in


https://baranagar.goodnights.in


https://barasat.goodnights.in


https://bardhaman.goodnights.in


https://bareilly.goodnights.in


https://barshi.goodnights.in


https://bathinda.goodnights.in


https://beed.goodnights.in


https://begusarai.goodnights.in


https://belgaum.goodnights.in


https://bellary.goodnights.in


https://bengaluru.goodnights.in


https://berhampur.goodnights.in


https://bettiah.goodnights.in


https://bhagalpur.goodnights.in


https://bhalswa-jahangir-pur.goodnights.in


https://bharatpur.goodnights.in


https://bhatpara.goodnights.in


https://bhavnagar.goodnights.in


https://bhilai.goodnights.in


https://bhilwara.goodnights.in


https://bhimavaram.goodnights.in


https://bhind.goodnights.in


https://bhiwandi.goodnights.in


https://bhiwani.goodnights.in


https://bhopal.goodnights.in


https://bhubaneswar.goodnights.in


https://bhusawal.goodnights.in


https://bidar.goodnights.in


https://bidhan-nagar.goodnights.in


https://bihar-sharif.goodnights.in


https://bijapur.goodnights.in


https://bikaner.goodnights.in


https://bilaspur.goodnights.in


https://bokaro.goodnights.in


https://bulandshahr.goodnights.in


https://burhanpur.goodnights.in


https://buxar.goodnights.in


https://chandigarh.goodnights.in


https://chandrapur.goodnights.in


https://chapra.goodnights.in


https://chennai.goodnights.in


https://chittoor.goodnights.in


https://coimbatore.goodnights.in


https://cuttack.goodnights.in


https://daman.goodnights.in


https://danapur.goodnights.in


https://darbhanga.goodnights.in


https://davanagere.goodnights.in


https://dehradun.goodnights.in


https://dehri.goodnights.in


https://delhi.goodnights.in


https://deoghar.goodnights.in


https://dewas.goodnights.in


https://dhanbad.goodnights.in


https://dharmavaram.goodnights.in


https://dharwad.goodnights.in


https://dhule.goodnights.in


https://dibrugarh.goodnights.in


https://digha.goodnights.in


https://dindigul.goodnights.in


https://dombivli.goodnights.in


https://durg.goodnights.in


https://durgapur.goodnights.in


https://eluru.goodnights.in


https://erode.goodnights.in


https://etawah.goodnights.in


https://faridabad.goodnights.in


https://farrukhabad.goodnights.in


https://fatehpur.goodnights.in


https://firozabad.goodnights.in


https://gadag-betageri.goodnights.in


https://gandhidham.goodnights.in


https://gandhinagar.goodnights.in


https://gaya.goodnights.in


https://ghaziabad.goodnights.in


https://goa.goodnights.in


https://gondia.goodnights.in


https://gopalpur.goodnights.in


https://gorakhpur.goodnights.in


https://gudivada.goodnights.in


https://gulbarga.goodnights.in


https://guna.goodnights.in


https://guntakal.goodnights.in


https://guntur.goodnights.in


https://gurgaon.goodnights.in


https://guwahati.goodnights.in


https://gwalior.goodnights.in


https://hajipur.goodnights.in


https://haldia.goodnights.in


https://haldwani.goodnights.in


https://hapur.goodnights.in


https://haridwar.goodnights.in


https://hindupur.goodnights.in


https://hinganghat.goodnights.in


https://hospet.goodnights.in


https://howrah.goodnights.in


https://hubli.goodnights.in


https://hugli-chuchura.goodnights.in


https://hyderabad.goodnights.in


https://ichalkaranji.goodnights.in


https://imphal.goodnights.in


https://indore.goodnights.in


https://jabalpur.goodnights.in


https://jaipur.goodnights.in


https://jalandhar.goodnights.in


https://jalgaon.goodnights.in


https://jalna.goodnights.in


https://jamalpur.goodnights.in


https://jammu.goodnights.in


https://jamnagar.goodnights.in


https://jamshedpur.goodnights.in


https://jaunpur.goodnights.in


https://jehanabad.goodnights.in


https://jhansi.goodnights.in


https://jodhpur.goodnights.in


https://jorhat.goodnights.in


https://junagadh.goodnights.in


https://kadapa.goodnights.in


https://kakinada.goodnights.in


https://kalyan.goodnights.in


https://kamarhati.goodnights.in


https://kanpur.goodnights.in


https://karaikudi.goodnights.in


https://karawal-nagar.goodnights.in


https://karimnagar.goodnights.in


https://karnal.goodnights.in


https://katihar.goodnights.in


https://kavali.goodnights.in


https://khammam.goodnights.in


https://khandwa.goodnights.in


https://kharagpur.goodnights.in


https://khora.goodnights.in


https://kirari-suleman-nagar.goodnights.in


https://kishanganj.goodnights.in


https://kochi.goodnights.in


https://kolhapur.goodnights.in


https://kolkata.goodnights.in


https://kollam.goodnights.in


https://korba.goodnights.in


https://kota.goodnights.in


https://kottayam.goodnights.in


https://kozhikode.goodnights.in


https://kulti.goodnights.in


https://kupwad.goodnights.in


https://kurnool.goodnights.in


https://latur.goodnights.in


https://loni.goodnights.in


https://lucknow.goodnights.in


https://ludhiana.goodnights.in


https://machilipatnam.goodnights.in


https://madanapalle.goodnights.in


https://madhyamgram.goodnights.in


https://madurai.goodnights.in


https://mahesana.goodnights.in


https://maheshtala.goodnights.in


https://malda.goodnights.in


https://malegaon.goodnights.in


https://manali.goodnights.in


https://mangalore.goodnights.in


https://mango.goodnights.in


https://mathura.goodnights.in


https://mau.goodnights.in


https://meerut.goodnights.in


https://mira-bhayandar.goodnights.in


https://miraj.goodnights.in


https://miryalaguda.goodnights.in


https://mirzapur.goodnights.in


https://moradabad.goodnights.in


https://morena.goodnights.in


https://morvi.goodnights.in


https://motihari.goodnights.in


https://mount-abu.goodnights.in


https://mumbai.goodnights.in


https://munger.goodnights.in


https://murwara.goodnights.in


https://mussoorie.goodnights.in


https://muzaffarnagar.goodnights.in


https://muzaffarpur.goodnights.in


https://mysore.goodnights.in


https://nadiad.goodnights.in


https://nagarcoil.goodnights.in


https://nagpur.goodnights.in


https://naihati.goodnights.in


https://nainital.goodnights.in


https://nanded.goodnights.in


https://nandurbar.goodnights.in


https://nandyal.goodnights.in


https://nangloi-jat.goodnights.in


https://narasaraopet.goodnights.in


https://nashik.goodnights.in


https://navi-mumbai.goodnights.in


https://nellore.goodnights.in


https://new-delhi.goodnights.in


https://nizamabad.goodnights.in


https://noida.goodnights.in


https://north-dumdum.goodnights.in


https://ongole.goodnights.in


https://ooty.goodnights.in


https://orai.goodnights.in


https://osmanabad.goodnights.in


https://ozhukarai.goodnights.in


https://pali.goodnights.in


https://pallavaram.goodnights.in


https://panchkula.goodnights.in


https://panihati.goodnights.in


https://panipat.goodnights.in


https://panvel.goodnights.in


https://parbhani.goodnights.in


https://patiala.goodnights.in


https://patna.goodnights.in


https://pimpri-chinchwad.goodnights.in


https://prayagraj.goodnights.in


https://proddatur.goodnights.in


https://puducherry.goodnights.in


https://pune.goodnights.in


https://puri.goodnights.in


https://purnia.goodnights.in


https://rae-bareli.goodnights.in


https://raichur.goodnights.in


https://raiganj.goodnights.in


https://raipur.goodnights.in


https://rajahmundry.goodnights.in


https://rajkot.goodnights.in


https://rajpur.goodnights.in


https://ramagundam.goodnights.in


https://ramnagar.goodnights.in


https://rampur.goodnights.in


https://ranchi.goodnights.in


https://ranikhet.goodnights.in


https://ratlam.goodnights.in


https://raurkela.goodnights.in


https://rewa.goodnights.in


https://rishikesh.goodnights.in


https://rohtak.goodnights.in


https://roorkee.goodnights.in


https://rourkela.goodnights.in


https://rudrapur.goodnights.in


https://sagar.goodnights.in


https://saharanpur.goodnights.in


https://saharsa.goodnights.in


https://salem.goodnights.in


https://sambalpur.goodnights.in


https://sambhal.goodnights.in


https://sangli.goodnights.in


https://sasaram.goodnights.in


https://satara.goodnights.in


https://satna.goodnights.in


https://secunderabad.goodnights.in


https://serampore.goodnights.in


https://shahjahanpur.goodnights.in


https://shimla.goodnights.in


https://shirdi.goodnights.in


https://shivamogga.goodnights.in


https://shivpuri.goodnights.in


https://sikar.goodnights.in


https://silchar.goodnights.in


https://siliguri.goodnights.in


https://silvassa.goodnights.in


https://singrauli.goodnights.in


https://sirsa.goodnights.in


https://siwan.goodnights.in


https://solapur.goodnights.in


https://sonarpur.goodnights.in


https://sonipat.goodnights.in


https://south-dumdum.goodnights.in


https://sri-ganganagar.goodnights.in


https://srikakulam.goodnights.in


https://srinagar.goodnights.in


https://sultan-pur-majra.goodnights.in


https://surat.goodnights.in


https://surendranagar-dudhrej.goodnights.in


https://suryapet.goodnights.in


https://tadepalligudem.goodnights.in


https://tadipatri.goodnights.in


https://tenali.goodnights.in


https://tezpur.goodnights.in


https://thane.goodnights.in


https://thanjavur.goodnights.in


https://thiruvananthapuram.goodnights.in


https://thoothukudi.goodnights.in


https://thrissur.goodnights.in


https://tinsukia.goodnights.in


https://tiruchirappalli.goodnights.in


https://tirunelveli.goodnights.in


https://tirupati.goodnights.in


https://tiruppur.goodnights.in


https://tiruvottiyur.goodnights.in


https://tumkur.goodnights.in


https://udaipur.goodnights.in


https://udgir.goodnights.in


https://ujjain.goodnights.in


https://ulhasnagar.goodnights.in


https://uluberia.goodnights.in


https://unnao.goodnights.in


https://vadodara.goodnights.in


https://varanasi.goodnights.in


https://vasai.goodnights.in


https://vellore.goodnights.in


https://vijayanagaram.goodnights.in


https://vijayawada.goodnights.in


https://virar.goodnights.in


https://visakhapatnam.goodnights.in


https://vrindavan.goodnights.in


https://warangal.goodnights.in


https://wardha.goodnights.in


https://yamunanagar.goodnights.in


https://yavatmal.goodnights.in


https://south-goa.goodnights.in


https://north-goa.goodnights.in





my web site India Call Girls

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Яндекс.Метрика