[P4] Packet length
Brunner Márton
brmarci at caesar.elte.hu
Tue Sep 20 01:24:19 CEST 2016
Sziasztok,
Elkészült egy kísérleti jellegű megoldás a TCP checksum támogatására.
Ehhez a field_list-ben most már támogatjuk a (bájt széles) konstansokat,
valamint erős megkötések mellett a PAYLOAD elemet is. (Utóbbinál IPv4-es
csomagon belüli fejlécre kell hivatkoznia a PAYLOAD-nak.)
Viszont kiderült, hogy egy másik ponton is problémás a dolog. Korábban
említettem, hogy parse-oláskor ki kéne számítani az
ipv4.totalLen-ipv4.ihl értéket. Ez viszont a P4 1.0.2-es verziója
szerint nem megvalósítható. Ebben a verzióban parse-oláskor a
set_metadata csak egy mezőt/konstanst kaphat paraméterül, aminek az
értéke fog a metadata field-be másolódni. Így a kivonás nem lehetséges.
(Az 1.1-nél már módosul a set_metadata: tetszőleges kifejezést
másolhatunk a metadata mezőkbe.)
A P4 kódban egy plusz konstanssal ezt a hiányosságot ellensúlyozva,
azért sikerült működő checksum számítást is végeznem. Ha valaki ki
akarná próbálni:
P4DPDK_VARIANT=no_nic_checksum ./launch.sh examples/checksums.p4
dpdk_l3_controller -- -c 0x3 -n 4 - --log-level 3 -- -p 0x3 --config
"\"(0,0,0),(1,0,1)\""
Megbeszélésen majd esetleg megmutatom, hogy pontosan milyen hackelésekre
volt szükség.
Marci
More information about the P4
mailing list