Scalez un dispozitiv de inspecție de securitate. Pasul de limitare a ratei este un proces cu un singur thread care analizează și extrage date din fluxurile de rețea.
Ca obiectiv pe termen scurt, aș dori să scalez acest lucru prin echilibrarea încărcăturii de la interfața de captare fizică la interfețele interioare fictive sau de atingere și apoi să am mai multe instanțe ale procesului cu un singur thread care rulează folosind acelea ca intrare.
Fiecare instanță a procesului cu un singur fir necesită fluxuri de rețea complete (adică tuplu care se potrivește - TCP sau UDP). Nu-mi pasă de trafic după ce va atinge interfețele false - apoi este abandonat, așa că nu trebuie să fac
vă faceți griji pentru căile de întoarcere sau orice altceva legat.
După câteva citite, cred că acțiunea de redirecționare bazată pe flux și tc-mirred ar putea fi soluția pe care o caut.
Deci, am ajuns până aici:
# Configurați interfețele
PHYS="eth1"
INT_COUNT=4 # Derivat din numărul de nuclee CPU
# Creați niște interfețe false
pentru i în {1..$INT_COUNT}
do ip link add dummy$i tip dummy
legătura ip setată dummy$i
Terminat
# Creați qdisc-ul
tc qdisc add dev $PHY intrare
# Filtru bazat pe tuplu de flux. Clasele sunt create automat datorită divizorului
tc filter add dev $PHYS părinte ffff: handle 1 \
taste hash de flux src,dst,proto,proto-src,proto-dst \
divizor $INT_COUNT
# Acum aplicați cumva acțiunea de redirecționare la clasele create
# pentru fiecare dintre interfețele false
pentru i în {1..$INT_COUNT}
do tc filter add dev $PHYS parent ffff: protocol ip u32 match u32 0 0 \
acțiune oglindită ieșire redirecționare dev dummy$i
Terminat
Este ultima parte pe care nu o pot înțelege.
Clasele sunt create automat cu instrucțiunea divisor din filtrare, deoarece divizorul folosește modulo de hash, ar trebui să obțin clase la care pot face referire.
Cum pot spune „clasa „N”, mergi la dummyN”?
Am citit mult despre asta, dar cred că există o parte cheie pe care nu o înțeleg. Cred că am nevoie de fluiditate în acțiune, dar nu sunt sigur.
Orice sfaturi sau sugestii în acest sens ar fi foarte apreciate.