При FIFO всички пакети се третират еднакво, като се подреждат в една опашка, и се обработват в същия ред, в който са присъединени към опашката. FIFO се отнася към Firstcome, firstserved (FCFS)
FIFO е дисциплината, която Linux и повечето рутъри ползват по подразбиране. Ако qdisc не се зададе изрично, Linux инсталира интерфейсите си чрез нея.
Настройката на етърнет интерфеса чрез FIFO в Linux, се - осъществява чрез следния команден ред:
- Код за потвърждение: Избери целия код
# tc qdisc add dev eth0 root pfifo limit 10
Съдържанието на тази команда е следното:
- 'tc' е съкратено от traffic control;
- 'qdisc' казва на tc, че се конфигурира верижна дисциплина (може да бъде 'class' или 'filter', ако се конфигурира клас или филтър);
- 'add' – добавяне на qdisc;
- 'dev eth0' – добавяне на qdisc към устройство, или интерфейс, Ethernet eth0;
- 'root', защото qdisc е за root (тази част не се изписва в pfifo за класовете, където съществува само root qdisc – там обаче се изисква да се нормализира използването на командата);
- 'pfifo' защото опашката се отнася до pfifo (packet-fifo).
pfifo изисква само един параметър: 'limit', който да укаже дължината на опашката (брой пакети, които опашката може да съдържа). В случая, пакетите са 10.
След създаването на опашъчната дисциплина, конфигурацията може да се провери със следната команда:
- Код за потвърждение: Избери целия код
# tc qdisc show dev eth0
Като отговора ще бъде:
- Код за потвърждение: Избери целия код
qdisc pfifo 8001: dev eth0 limit 10 p
Командата изисква информация за вида qdisc на устройство eth0. tc отговаря, че qdisc е pfifo, номериран с 8001 (в действителност 8001:0): с лимит 10 пакета.
Верижните дисциплини и техните компоненти се номерират и идентифицират по-добре от 32-битово управление (handler), състоящо се от 16-битов основен и 16-битов второстепенен номер. Основния номер за опашките винаги е нула. При добавянето на опашката pfifo, управлението не бе означено и tc го създаде автоматично (8001:0).
FIFO има своите предимства и ограничения. Чък Шумерия изтъква следните предимства:
- за софтуер-базирани рутъри FIFO отнема много малко изчислително време на системата, в сравнение с по-сложните опашъчни дисциплини;
- поведението на FIFO е предсказуемо – пакетите не се пренареждат и максималното забавяне се определя от максималния капацитет на опашката. Докато той е малък, FIFO осигурява проста резолюционна поддръжка на мрежовите ресурси, без забавяне при всяко одбавяне.
FIFO има и следните ограничения:
- eдинична опашка FIFO не позволява на рутърите да организират буферираните пакети и след това да обслужат един клас трафик различно от другите класове.
- eдинична опашка FIFO влияе еднакво на всички потоци, защото незначителното забавяне на всички потоци се увеличава с увеличеното задръстване. В резултат на това, подреждането във FIFO може да причини забавяне, натовареност и загуба за realtime-приложенията (приложенията в реално време), минаващи през FIFO.
- в периоди на задръстване, FIFO дава предимство на UDP-потоците пред TCP. Загубата на пакети при задръстване в TCP –базираните приложения ограничава скоростта им на излъчване, докато UDP –базираните приложения не отбелязват загубата на пакети и продължават да излъчват с обичайната си скорост. Тъй като TCP –базираните приложения забавят скоростта си, за да се адаптират към променените условия на мрежата, забавянето във FIFO може да се увеличи, натовари и да ограничи количеството на изходящия трафик, консумиран от TCP –приложенията, които минават през опашката.
- натоварения трафик (трафик с burst) може да изземе цялото буферно пространство на FIFO, което води до отказ за обслужване на всички останали потоци до справяне с натоварването.
Източник:Основен