[P4] Fwd: Re: P4-es dolgok
Brunner Márton
brmarci at caesar.elte.hu
Mon May 28 21:50:33 CEST 2018
Sziasztok!
Megtaláltam a hibát. Ez az én hülyeségem volt, csak valami
megmagyarázhatatlan oknál fogva volt olyan eset amikor működött a totál
rossz kód.
Kijavítottam és kipróbálva elvileg most már jól lekezelődik a hit/miss.
Marci
On 2018-05-28 13:23, Péter Vörös wrote:
> Sziasztok,
>
> Az l2fwd jól működik!!!
> Az l3fwd-nél a hit belseje viszont még nem jó.
>
> control ingress {
> apply(macfwd) {
> hit {
> apply(ipv4_lpm); //EZEK A TÁBLÁK NEM KERÜLNEK ELŐ
> apply(nexthops); //EZEK A TÁBLÁK NEM KERÜLNEK ELŐ
> }
> }
> }
>
>
> [CORE 0 at 0] ( dataplane.c at 547) HANDLING PACKET (port 0, 64 bytes) : cc
> cc cc cc 00 00 30 9c 23 5f 2e 4c 08 00 45 00 00 14 00 01 00 00 40 00
> 81 da c0 a8 00 65 32 00 06 02 00 00 00 00 00 00 00 00 00 00 00 00 00
> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> [CORE 0 at 0] ( parser.c at 073) entering parser state start...
> [CORE 0 at 0] ( parser.c at 037) entering parser state parse_ethernet...
> [CORE 0 at 0] ( parser.c at 059) entering parser state parse_ipv4...
> [CORE 0 at 0] ( parser.c at 080) entering parser state accept...
> [CORE 0 at 0] ( dataplane.c at 534) Parsed packet
> [CORE 0 at 0] ( dataplane.c at 537) :::: Header ethernet (14 bytes): cc cc
> cc cc 00 00 30 9c 23 5f 2e 4c 08 00
> [CORE 0 at 0] ( dataplane.c at 537) :::: Header ipv4 (20 bytes): 45 00
> 00 14 00 01 00 00 40 00 81 da c0 a8 00 65 32 00 06 02
> [CORE 0 at 0] ( dataplane.c at 387) entering control verifyChecksum...
> [CORE 0 at 0] ( dataplane.c at 396) entering control ingress...
> [CORE 0 at 0] ( dataplane.c at 078) :::: EXECUTING TABLE macfwd
> [CORE 0 at 0] ( dataplane.c at 089) :: EXECUTING ACTION _nop_0... ####
> EZ ITT MÉG JÓ
> [CORE 0 at 0] ( dataplane.c at 144) :::: EXECUTING TABLE tbl_act
> #### ITT KELLENE HOGY LEGYEN A HIT RÉSZ
> [CORE 0 at 0] ( dataplane.c at 153) :: EXECUTING ACTION act...
> [CORE 0 at 0] ( dataplane.c at 429) entering control egress...
> [CORE 0 at 0] ( dataplane.c at 438) entering control computeChecksum...
> [CORE 0 at 0] ( dataplane.c at 447) entering control DeparserImpl...
> [CORE 0 at 0] ( dataplane.c at 525) :::: Reordering emit
> [CORE 0 at 0] ( dataplane.c at 483) :: Preparing 3 header instances for
> storage...
> [CORE 0 at 0] ( dataplane.c at 492) : Storing 14 bytes (ethernet) :
> cc cc cc cc 00 00 30 9c 23 5f 2e 4c 08 00
> [CORE 0 at 0] ( dataplane.c at 489) : Skipping header ( arp) :
> (invalid header)
> [CORE 0 at 0] ( dataplane.c at 492) : Storing 20 bytes ( ipv4) :
> 45 00 00 14 00 01 00 00 40 00 81 da c0 a8 00 65 32 00 06 02
> [CORE 0 at 0] ( dataplane.c at 497) :: Stored 34 bytes :
> cc cc cc cc 00 00 30 9c 23 5f 2e 4c 08 00 45 00 00 14 00 01 00 00 40
> 00 81 da c0 a8 00 65 32 00 06 02
> [CORE 0 at 0] ( dataplane.c at 514) :: To emit 34 bytes (no resize)
> [CORE 0 at 0] ( dataplane.c at 519) :: Packet: 34 bytes from storage :
> cc cc cc cc 00 00 30 9c 23 5f 2e 4c 08 00 45 00 00 14 00 01 00 00 40
> 00 81 da c0 a8 00 65 32 00 06 02
> [CORE 0 at 0] ( main_loop.c at 323) :::: EGRESSING
> [CORE 0 at 0] ( main_loop.c at 331) :: sending packet on port 0 (lcore 0)
>
> Így lehet futtatni:
> dpdk-switch:
> P4_GCC_OPTS="-DP4DPDK_DEBUG" ./t4p4s.sh launch ctrl
> dpdk_l3fwd_controller ctrcfg examples/l3fwd_table.txt
> examples/l3fwd-wo-chksm.p4
> pktgen:
> a run_pktgen-ben át kell írni a pcap foldert.
> PCAP_FOLDER=/home/jenkins/t4p4s/examples/l3fwd_traffic.pcap
>
> Üdv,
> Peti
>
> 2018. május 27. 13:25 Brunner Márton írta, <brmarci at caesar.elte.hu
> <mailto:brmarci at caesar.elte.hu>>:
>
> Sziasztok!
>
> *A field_standard_metadata_t_checksum_error hibáról:*
>
> Ennek elvileg a $P4C/build/p4include/v1model.p4 fájlban szereplő
> struct standard_metadata_t definíció checksum_error mezőjéből
> automatikusan kellene generálódnia. Robi meg tudnád nézni, hogy
> nálad ez a fájl tartalmazza-e a field-et? (Kis furcsaság ehhez
> kapcsolódóan, hogy az @alias annotációval ellátott mezők nem
> generálódnak nálunk le. Erre tud esetleg valaki valami magyarázatot?)
>
> *examples.cfg és dpdk_backend.mk <http://dpdk_backend.mk> hibák:*
>
> Két további apróbb hibát találtam. Az examples.cfg legutóbbi
> felcommitolt változatában az l2fwd-hoz kapcsoló sorban no-nic
> opció szerepelt (gondolom ez nem volt szándékos, úgyhogy ezt
> visszaírtam dpdk_default-os változatra). Valamint amikor a
> dpdk_backend.mk <http://dpdk_backend.mk> fájl végére írjuk az
> opcionális include-okat, akkor a régi makefájlt használjuk, így
> újra és újra bekerülnek az includok, amik fordítási hibához
> vezettek. Egyelőre azzal orvosoltam, hogy minden fordításkor
> kitöröljük a dpdk_backend.mk <http://dpdk_backend.mk> fájlt, de
> ennél biztosan lehetne szebben is.
>
> *Esetlegesen más branchen javított hibák:*
>
> A benti gépen (a p4 user home-ban) levő t4p4s-16 lokális
> változtatásai alapján úgy látom, hogy van egy pár hiba, ami úgy
> rémlik máshol már javítva lett, de itt szerintem csak a Sanyi
> javította őket ideiglenesen a múltkori teszteléskor. Az egyik
> egyik az volt, hogy a reset_headers meghívása azután történik,
> hogy a bejövő portot már beállítottuk és így az rögtön
> kinullázódik. A másik meg mintha valami port mérethez kapcsolódna
> (1 bájtosként van commit-olva, 2 bájtosra van javítva). (Ezt csak
> azért írom le, mert ezeket érdemes lenne itt is javítani, illetve
> a további tesztelés folyamán figyelembe venni.)
>
> *Ezek után én sikeresen futtattam az l2fwd példát a benti gépen.*
>
> Arról fogalmam sincs, hogy pontosan mi történik, helyes-e a
> feldolgozás/kiküldés, mert ehhez kéne még egy tutoriál, hogy
> pontosan mit kéne figyelni az adatok közül. De a t4p4s-16 fordul,
> fut és nem száll el. Nálam van smac és dmac tábla is, látszódik,
> hogy mindkettőbe bekerülnek bejegyzések. Amikor elindítom a packet
> generation-t is, látszik, hogy jönnek a csomagok (azt már nem
> tudom eldönteni, hogy mit csinál velük pontosan). De nem kapok
> semmi segfault-ot vagy ilyesmit.
>
>
> Marci
>
>
> On 2018-05-25 12:50, Péter Vörös wrote:
>> Szia,
>>
>> A field_standard_metadata_t_checksum_error hiba nálam előjött, de
>> a komment megoldotta.
>>
>> Futtattam most az újjal is, de nemúgy tűnik hogy létrejön a dmac
>> tábla, created table logja például egyáltalán nincs. Később pedig
>> ezt írja ha fel akarjuk tölteni ([NO-CORE] Table setdefault:
>> table name mismatch (dmac), expected one of (smac).) Full log
>> ismét alul.
>> A config tényleg nem volt rossz, csak a programot a
>> ${DPDK_OPTS}-szal nem a ${DPDK_OPTS_TEXT}-tel akarta elindítani,
>> ennyi volt csak a baj.
>>
>> A mostani config generálásnál viszont a sok kötőjel szerintem
>> picit bekavar. Így ugyanis nem indul el a program.
>> sudo -E ./build/l2fwd/build/l2fwd - - - -c 0x3 -n 1 -- -p 0x3
>> --config "\"(0,0,0),(1,0,1)\"" - - - -c 0x3 -n 1 -- -p 0x3
>> --config "\"(0,0,0),(1,0,1)\""
>>
>> DPDK options : v1model dpdk_default l2fwd 2cores 2x1ports
>> DPDK params : - - - -c 0x3 -n 1 -- -p 0x3 --config
>> "\"(0,0,0),(1,0,1)\"" - - - -c 0x3 -n 1 -- -p 0x3 --config
>> "\"(0,0,0),(1,0,1)\""
>>
>>
>> Kézzel javítva erre: sudo -E ./build/l2fwd/build/l2fwd -c 0x3 -n
>> 1 -- -p 0x3 --config "\"(0,0,0),(1,0,1)\"" -- -p 0x3 --config
>> "\"(0,0,0),(1,0,1)\"" már fut.
>>
>> Üdv,
>> Peti
>>
>> [CORE 0 at 0] ( dpdk_lib.c at 581) Initializing stateful memories...
>> [CORE 0 at 0] ( dpdk_lib.c at 481) Initializing tables on socket 0...
>> [CORE 0 at 0] ( dpdk_lib.c at 485) Creating instances for table smac
>> on socket 0 (2 copies)
>> [CORE 0 at 0] ( dpdk_lib.c at 474) Created table smac on socket 0.
>> [CORE 0 at 0] ( dpdk_lib.c at 474) Created table smac on socket 0.
>> [CORE 0 at 0] ( dpdk_lib.c at 510) Initializing counters on socket 0...
>> [CORE 0 at 0] ( dpdk_lib.c at 533) Initializing registers...
>> [CORE 0 at 0] ( dpdk_lib.c at 603) Configuring lcore structs...
>> [CORE 0 at 0] (controlplane.c at 096) Creating control plane connection...
>> [CTRL] :::: SET_DEFAULT_ACTION
>> [CTRL] :: rval=0
>> [NO-CORE] MSG from controller 103 smac
>> [NO-CORE] Action name: mac_learn
>> [NO-CORE] Message from the control plane arrived.
>> [NO-CORE] Set default action for smac with action mac_learn
>> [NO-CORE] Default value set for table smac (on socket 0).
>> [NO-CORE] Default value set for table smac (on socket 0).
>> [CTRL] Handle msg: 0
>> [CTRL] :::: SET_DEFAULT_ACTION
>> [CTRL] :: rval=0
>> [NO-CORE] MSG from controller 103 dmac
>> [NO-CORE] Table setdefault: table name mismatch (dmac), expected
>> one of (smac).
>> [CTRL] Handle msg: 0
>> [CTRL] :::: ADD_TABLE_ENTRY
>> [CTRL] :: rval=0
>> [NO-CORE] MSG from controller 104 dmac
>> [NO-CORE] Table add entry: table name mismatch (dmac), expected
>> one of (smac).
>> [CTRL] Handle msg: 0
>> [CTRL] :::: ADD_TABLE_ENTRY
>> [CTRL] :: rval=0
>> [NO-CORE] MSG from controller 104 smac
>> [NO-CORE] Reply from the control plane arrived.
>> [NO-CORE] Adding new entry to smac with action _nop_0
>> [NO-CORE] EXACT: Added key: aa:cc:dd:cc:00:01 0 (0x7fd484000900)
>> [NO-CORE] EXACT: Added key: aa:cc:dd:cc:00:01 0 (0x7fd484000920)
>> [CTRL] Handle msg: 0
>> [CTRL] :::: ADD_TABLE_ENTRY
>> [CTRL] :: rval=0
>> [NO-CORE] MSG from controller 104 dmac
>> [NO-CORE] Table add entry: table name mismatch (dmac), expected
>> one of (smac).
>>
>>
>> 2018. május 25. 12:31 Kitlei Róbert írta, <kitlei at elte.hu
>> <mailto:kitlei at elte.hu>>:
>>
>>
>> Sziasztok,
>>
>>
>>> [NO-CORE] Table add entry: table name mismatch (dmac).
>>> Nincs dmac nevű táblánk?
>>
>> Futtasd a legújabb committal, kiírja majd, hogy szerinte
>> milyen táblák érhetőek el.
>>
>>> 1. dolog amibe belefutottam: a t4p4s nem jól oldja fel az
>>> examples.cfg-ben a dpdk_paramétereket.
>>
>> Épp most frissítettem a konfig szerkezetét és felolvasását.
>>
>>> Futtatásnál látszik is.
>>> - DPDK options : 2cores,2x1ports
>>> - DPDK params : -c 0x3 -n 1 -- -p 0x3 --config
>>> "\"(0,0,0),(1,0,1)\""
>>
>> A t4p4s.sh itt jó adatokat vesz fel a
>> dpdk_parameters.cfg-ből, ezek a paraméterek felelnek meg a
>> 2cores,2x1ports opcióknak. (Az új változatban szóközzel
>> lesznek elválasztva.) Nem ezeknek kellene jönniük?
>>
>>> A kód azért nem megy, mert gondolom a Robi nem
>>> v1model-es kódot fordított, viszont a v1model-es
>>> externeket tartalmazó fájl is be volt include-olva.
>>> Mivel ott hivatkozunk olyan elemre, ami csak v1model-es
>>> p4 fájl esetén generálódik le, így ez hibához vezetett.
>>>
>>
>> Megnéztem, mindegyik példánk v1model-es. Nálam mégsem
>> generálódik a field_standard_metadata_t_checksum_error, amit
>> annyira hiányol a rendszer, nálad igen?
>>
>>> Viszont az emiatt bevezetett int abban az esetben okoz
>>> hibát, ha v1model-es példát fordítanánk. Én a megoldást
>>> abban látom (és ez már többször is felmerült), hogy nem
>>> kéne minden extern deklarációkat tartalmazó fájlt
>>> include-olni, csak az aktuálisan használt
>>> architektúrának megfelelőt. (Workaroundként elegendő a
>>> src/hardware_dep/dpdk/data_plane/dpdk_v1model_extern.c
>>> fájlban kicommentezni a checksum_error-os int-et.)
>>>
>>
>> Így van, a hack-et nem is akartam feltölteni, de saját
>> akarata van. :)
>> Mostanra lett elég okos a konfigurációk kiválasztása.
>>
>>> ... A másik felében ezek között jön egy "PANIC in
>>> rte_free():", majd "Fatal error: Invalid memory", ami
>>> aztán valami szép hibaüzenettel elszáll:
>>>
>>
>> Ilyen néha nálam is jelentkezik, még nem tudom, miért. Az
>> érdekes, hogy egy setdefault kellős közepén történik...
>>
>> Robi
>>
>>
>> _______________________________________________
>> P4 mailing list
>> P4 at plc.inf.elte.hu <mailto:P4 at plc.inf.elte.hu>
>> https://plc.inf.elte.hu/mailman/listinfo/p4
>> <https://plc.inf.elte.hu/mailman/listinfo/p4>
>>
>>
>>
>>
>> _______________________________________________
>> P4 mailing list
>> P4 at plc.inf.elte.hu <mailto:P4 at plc.inf.elte.hu>
>> https://plc.inf.elte.hu/mailman/listinfo/p4
>> <https://plc.inf.elte.hu/mailman/listinfo/p4>
>
>
> _______________________________________________
> P4 mailing list
> P4 at plc.inf.elte.hu <mailto:P4 at plc.inf.elte.hu>
> https://plc.inf.elte.hu/mailman/listinfo/p4
> <https://plc.inf.elte.hu/mailman/listinfo/p4>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://plc.inf.elte.hu/pipermail/p4/attachments/20180528/7e1fad5b/attachment-0001.html>
More information about the P4
mailing list