Az XDP és a flowtable
Az XDP és a flowtable Az XDP és a flowtable
Kadlecsik József
Wigner Fizikai Kutatóközpont
kadlecsik.jozsef@wigner.hu
Tartalom
Nagyteljesítményű csomagfeldolgozás - "hardware speed"
XDP - Express Data Path
nftables és flowtable
XDP
eXpress Data Path
Nincs szükség speciális hardverre
De megfelelő hardver esetében: hardware offload
Nincs kernel bypass
Nem cseréli le a TCP/IP stacket
Átírhatja a csomagot + header push/pop
VLAN, tunneling
Nincs fairness vagy buffering (qdisc)
Ha TX lassú: packet drop
Sematikus áttekintés
Mire használható?
DDoS szűrés magán a célponton
DDoS előszűrés védett célpontok számára
PASS: stack lassít
TX: csomagot módosítani kell
REDIRECT
Load-balancing közvetlenül a backend szervereken
TX: csomagot módosítani kell
REDIRECT
Router
XDP-t támogató driverek
Mellanox: mlx4 és mlx5
Netronome: nfp
Cavium/Qlogic: qede
Cavium: thunder
Broadcom: bnxt
Intel: ixgbe
virtio-net
Teljesítmény
Jesper Dangaard Brouer
Single CPU: i7-6700K, 4.00GHz
Mellanox-CX4 50Gbit/s (mlx5)
Blacklist IPv4 cím alapján (packet drop)
XDP használata
eBPF kód megírása C-ben
Clang, LLVM
eBPF kód betöltése a kernelbe
Userspace kód megírása a vezérléshez
Userspace kód használata
Teljesítmény: csomag "maradjon" az XDP rétegben
Flowtable
nftables része
iptables-en keresztül nem használható
Tulajdonságok
Flow kezelés gyorsítása
Alrendszer a TCP/IP stack (nagy részének) kikerülésére
Nincs szükség speciális hardverre
De támogatott hardver esetében: hardware offload
Accept/drop/redirect/mangle/NAT/VLAN/tunnel
Network driver
A firmware kezelni tudja a flowtable-t:
Mellanox: mlx5, mlxsw
Broadcom: bnxt, bcm_sf2
Chelsio: cxgdb4
Intel: i40eia, iavf, igb
Qlogic: qede
Mscc: ocelot
Netronome: nfp
Flowtable használata
table inet filter {
flowtable flow {
hook ingress priority 0 devices = { eth0, eth1 }
flags offload
}
chain forward {
type filter hook forward priority 0; policy drop;
# offload established connections
ip protocol { tcp, udp } flow offload @flow
ipv6 nexthdr { tcp, udp } flow offload @flow
# established/related
ct state established,related accept
# ip protocol ... flow add @flow
...
}
}
Flowtable garbage collection
Bejegyzések törlődnek, ha 30 másodpercig nem érkezik új csomag
Protokoll-specifikus flowtable használat
TCP RST és FIN csomagok követik a normál útvonalat
Teljesítmény
Pablo Neira Ayuso
1 CPU, legkisebb csomagméret
Flowtable használat II.
Nem packet drop!
UDP:
DNS/NTP-t általában nem érdemes
TCP
ssh-t nem érdemes
http/https-t igen
Nincs full conntrack
Van NAT/mangle
Elegáns fallback
Hardware flowtable - software flowtable - network stack
Összefoglalás
Hol érdemes használni
High-end: sávszélesség kezelése
Low-end: CPU tehermentesítése
Middlebox: mindkettő :-)
XDP: kihívás
flowtable: admin-barát magyar