Am un clasificator de trafic funcțional care utilizează compensarea pachetelor brute pentru a se potrivi cu adresele MAC sursă și/sau destinație ale pachetului. Filtrul folosește decalaje negative, deoarece valoarea implicită pare a fi offset=0 este începutul pachetului IP. Înseamnă că conținutul antetului Ethernet este chiar înainte de asta.
De exemplu, pentru MAC 12:34:56:78:90:ab :
tc filter add dev <iface> protocol ip parent 1:0 prio 1 u32 \
potrivește u16 0x0800 0xffff la -2 \
potrivește u32 0x90ab 0xffff la -12 \
potrivește u16 0x12345678 0xffffffff la -14 \
fluid 1:10
Legătura de rețea va transporta acum trafic VLAN 802.1Q alături de chestii non-VLAN. protocol ip
împiedică acest trafic să se potrivească. Întrebarea este cum construiesc o regulă similară pentru traficul VLAN? Încerc să fac din nou o compensare negativă pentru a căuta valoarea „Ethertype” de 0x8100 pentru traficul DotQ, doar pentru a confirma că ipotezele mele despre offset, dar nu o găsesc sau cel puțin nu se potrivesc pe aceasta. Exemplul de mai jos nu se potrivește cu traficul DotQ:
tc filter add dev <iface> parent 1:0 prio 1 u32 \
meci u16 0x8100 0xffff la -6 flowid 1:10
Nu am reușit să găsesc nicio documentație despre tc
sistem care specifică ce offset=0
reprezintă. Este necondiționat antetul IP pornește sau începe protocol ip
afectează asta?