Välja on antud nftables 1.0.1 versioon, mis ühtlustab paketifiltreerimise liideseid IPv4, IPv6, ARP ja võrgusillade jaoks (siht on asendada iptables, ip6tables, arptables ja ebtables). Nftables 1.0.1 toimimiseks vajalikud muudatused on kaasatud Linuxi tuumasse 5.16-rc1.
Nftables'i paketis on kasutusruumi paketifiltreerimise komponendid, samas kui tuuma tasemel tagab töö nf_tables alamsüsteem, mis on Linuxi tuumas saadaval alates versioonist 3.13. Tuuma tasemel on olemas vaid üldine liides, mis ei sõltu konkreetsetest protokollidest ja pakub põhiülesandeid paketidest andmete ekstraheerimiseks, andmete töötlemiseks ja voogude haldamiseks.
Filtreerimisreeglid ja protokollispetsiifilised töötlejad kompileeritakse kasutusruumis byte-koodiks, seejärel laaditakse see byte-kood tuuma Netlinki liidese abil ja käivitatakse tuumas eraldi virtuaalmasinas, mis tahes BPF (Berkeley Packet Filters). Sarnane lähenemine võimaldab oluliselt vähendada filterkoodi suurust, mis töötab tuuma tasemel, ning viia kõik reeglite parsing'u funktsioonid ja protokollide töötlemise loogika kasutajaruumi.
Põhilised uuendused:
- Mälu tarbimine suurtel set- ja map-loenditel laadimisel on vähendatud.
- Set- ja map-loendite uuesti laadimine on kiirendatud.
- Eraldatud tabelite ja ketikute väljund suurtel reeglite kogumitel on kiirendatud. Näiteks käsu 'nft list ruleset' täitmise aeg, et kuvada 100 000 rida reeglite kogumi, on 3,049 sekundit, kuid ainult nat ja filter tabelite (nft list table nat, nft list table filter) kuvamisel kahaneb see 1,969 ja 0,697 sekundini.
- Küsimuste täitmine, kui on valitud '—terse' valik, on kiirendatud suure set- ja map-loendite töötlemisel.
- Trafiku filtreerimise võimalus on antud 'egress' kettist, mis töötab samal tasemel, nagu netdev kettas egress-töötleja (hook egress), st hetkel, kui draiver saab paketi tuuma võrgu kuhjast.
- Lubatud on võrgu pakettide pealkirjade ja sisu baitide vastavusse viimine ja muutmine määratud nihke järgi. # nft add rule x y @ih,32,32 0x14000000 counter # nft add rule x y @ih,32,32 set 0x14000000 counter
Allikas: opennet.ru
