Intermediate Queueing

Z Wikipedii, wolnej encyklopedii
(Przekierowano z IMQ)

Intermediate Queueing, IMQ – "pośrednie urządzenie kolejkujące" używane w systemie operacyjnym Linux.

Jest to wirtualny interfejs wykorzystywany do sterowania ruchem wchodzącym lub wychodzącym z routera, na przykład z pomocą pakietu iproute2. W odróżnieniu od rzeczywistych interfejsów, takich jak eth czy ppp, IMQ:

IMQ umożliwia rozwiązanie 2 problemów:

  • Sterowanie ruchem wchodzącym przez rzeczywisty interfejs. Jeśli chcemy ograniczyć ruch wchodzący przez rzeczywisty interfejs, to wystarczy za pomocą iptables cały ruch z niego skierować do imq i sterować ruchem na wyjściu imq, czyli faktycznie na wejściu interfejsu rzeczywistego.
  • Sterowanie ruchem przechodzącym przez więcej niż jeden interfejs rzeczywisty.

Przykład wydruku komendy ifconfig, obrazujący różnice pomiędzy interfejsem rzeczywistym a wirtualnym:

eth0      Link encap:Ethernet  HWaddr 00:E0:4C:75:01:E7
inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:2383775 errors:0 dropped:0 overruns:0 frame:0
TX packets:2583178 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:586768599 (559.5 Mb)  TX bytes:1718379338 (1638.7 Mb)
Interrupt:10 Base address:0x1000
 
imq0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING NOARP  MTU:1500  Metric:1
RX packets:1852185 errors:0 dropped:0 overruns:0 frame:0
TX packets:1852185 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:30
RX bytes:1605531582 (1531.1 Mb)  TX bytes:1605531582 (1531.1 Mb)

Koncepcję IMQ opracował i dokonał pierwszej implementacji Martin Devera, następnie prace nad IMQ przejął Patrick McHardy, który potem zrezygnował z jego rozwijania. Obecnie IMQ sporadycznie jest dostosowywane do nowych wersji jądra systemu. Jako że koncepcja ta nie jest do końca poprawna z punktu widzenia inżynierii oprogramowania, nie została i prawdopodobnie nigdy nie zostanie włączona do głównego nurtu systemu - w zamian za to udostępniony został mechanizm Intermediate Functional Block.

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]