[P4] T4P4S + EPG helyzet

Péter Vörös vpetya at mensa.hu
Thu Aug 13 13:35:11 CEST 2020


Sziasztok!

Megnéztem PGeri EPG példáját. Sikerült az Ericssonos dpdk1 gépen életre
keltenem a T4P4S-t, ma reggel beszéltem is Gergővel erről.

Közben igyekeztem az EPG kódot működőképessé varázsolni ami során két bugba
is belefutottam:
1, Ha van egy lokális változónk amit az Ingress-en deklarálunk, akkor ha
azt használni szeretnénk egy táblában key-ként, arra elhasalunk. Különböző
a hibaüzenet, ha a változó underscore-ral kezdődő nevű és ha nem. Ez a két
változat látható részletesen alul.
A probléma workaround-olható azzal, hogy ezeket a lokális változókat egy
dummy header field-jeként definiáljuk, és azokat a header field-eket
használjuk a táblában kulcsként.
2, if (hdr.eth.dst_addr[47:32] != _my_mac[47:32]) Ebből a kifejezésből
valószínűleg rossz C kód generálódik, mert ez C fordítási hibát at.

Összességében jelenleg nekem az EPG kód fordul az Ericssonos gépen is
T4P4S-szal, ezt remélhetőleg a napokban PGeri is megerősít majd.

Üdv,
Peti

=================================
Bug1 v1:
Ingressen
     ipv4_addr_t _nexthop4 = 0;
     Később egy táblában key = { _nexthop4 : exact; }

Traceback (most recent call last):  File "src/compiler.py", line 471, in
<module>    main()  File "src/compiler.py", line 466, in main
print_with_backtrace(sys.exc_info(), current_compilation['from'] if
current_compilation else "(no compiled file)")  File "src/compiler.py",
line 452, in main    hlir = load_from_p4(args, cache_dir_name)  File
"/home/vpetya/t4p4s-root/t4p4s/src/compiler_load_p4.py", line 244, in
load_from_p4    hlir = load_hlir(filename, cache_dir_name)  File
"/home/vpetya/t4p4s-root/t4p4s/src/compiler_load_p4.py", line 163, in
load_hlir    return continue_stages(stages, stage_idx, data)  File
"/home/vpetya/t4p4s-root/t4p4s/src/compiler_load_p4.py", line 132, in
continue_stages    new_data = loader(None, data)  File
"/home/vpetya/t4p4s-root/t4p4s/src/compiler_load_p4.py", line 167, in
<lambda>    return ([], lambda file, data: pickle.load(file) if file is not
None else no_cache_loader(data) if data is not None else None)  File
"/home/vpetya/t4p4s-root/t4p4s/src/compiler_load_p4.py", line 204, in
<lambda>    'loaders': [cache_loader(lambda hlir:
set_additional_attrs(hlir, args['p4v']))],  File
"/home/vpetya/t4p4s-root/t4p4s/src/hlir16/hlir16_attrs.py", line 880, in
set_additional_attrs    set_p4_main(hlir16)  File
"/home/vpetya/t4p4s-root/t4p4s/src/hlir16/hlir16_attrs.py", line 280, in
set_p4_main    name = bt.type_ref.name if hasattr(bt, 'type_ref') else
bt.path.nameAttributeError: 'NoneType' object has no attribute 'name'

=================================
Bug1 v2:
Ingressen
     ipv4_addr_t nexthop4 = 0;
     Később egy táblában key = { nexthop4 : exact; }

Exception: 'name'Traceback (most recent call last):  File
"src/compiler.py", line 315, in generate_code    exec(code, localvars,
localvars)  File "<string>", line 167, in <module>  File
"/home/vpetya/t4p4s-root/t4p4s/src/hlir16/p4node.py", line 239, in
__getattr__    return self.__dict__[key]KeyError: 'name'Error during the
compilation of {'to': './build/dummyepg_2020 at std/srcgen/dataplane.c',
'from': 'src/hardware_indep/dataplane.c.py'}Traceback (most recent call
last):  File "src/compiler.py", line 471, in <module>    main()  File
"src/compiler.py", line 466, in main
print_with_backtrace(sys.exc_info(), current_compilation['from'] if
current_compilation else "(no compiled file)")  File "src/compiler.py",
line 453, in main    generate_files()  File "src/compiler.py", line 442, in
generate_files    generate_desugared_c(filename, os.path.join(base,
filename))  File "src/compiler.py", line 363, in generate_desugared_c
code = generate_code(filepath, genfile, {'hlir16': hlir})  File
"src/compiler.py", line 315, in generate_code    exec(code, localvars,
localvars)  File "<string>", line 167, in <module>  File
"/home/vpetya/t4p4s-root/t4p4s/src/hlir16/p4node.py", line 239, in
__getattr__    return self.__dict__[key]KeyError: 'name'

=================================
Bug2:
    if (hdr.eth.dst_addr[47:32] != _my_mac[47:32])

/home/vpetya/t4p4s-root/t4p4s/build/dummyepg_2020 at std//srcgen/dataplane.c:
In function
'control_ingress':/home/vpetya/t4p4s-root/t4p4s/build/dummyepg_2020 at std//srcgen/dataplane.c:639:104:
error: invalid operands to binary >> (have 'uint8_t ** {aka unsigned char
**}' and 'int')  if( ((( 0xffff& /* src/utils/codegen.sugar.py:98
*/(hdr_header_instance_eth_field_ethernet_t_dstAddr_2>>32)))!=((uint16_t)0x1122))
) { // src/utils/codegen.sugar.py:461

^/home/vpetya/t4p4s-root/t4p4s/build/dummyepg_2020 at std//srcgen/dataplane.c:657:108:
error: invalid operands to binary >> (have 'uint8_t ** {aka unsigned char
**}' and 'int')  if( ((( 0xffffffff& /* src/utils/codegen.sugar.py:98
*/(hdr_header_instance_eth_field_ethernet_t_dstAddr_1>>0)))!=((uint32_t)0x33445566))
) { // src/utils/codegen.sugar.py:461

^/home/vpetya/P4AQM/dpdk-19.02/mk/internal/rte.compile-pre.mk:114: recipe
for target 'dataplane.o' failedmake[1]: *** [dataplane.o] Error 1make[1]:
*** Waiting for unfinished jobs..../home/vpetya/P4AQM/dpdk-19.02/mk/
rte.extapp.mk:14: recipe for target 'all' failedmake: *** [all] Error 2
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://plc.inf.elte.hu/pipermail/p4/attachments/20200813/6fba69b2/attachment.html>


More information about the P4 mailing list