[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