[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