<div dir="auto"><div dir="ltr"><div><div><div><div>Sziasztok!<br><br></div><div>Ahogy beszéltük küldök egy kis helyzetjelentést.<br></div><div><br><b>====L2FWD====</b><br>Sikerült kimérnem egy jónak tűnő referencia L2 switch implementációt. Van pár dolog ami tetszik a megvalósításban, ezeket át is emelem majd a HAL-ba, de vannak elég érdekes megoldások is. Ilyen pl a táblakezelésük. Nem tűnik túl memóriabarátnak. Úgy csinálják, hogy még 
az initben létrehoznak egy UINT16_MAX (65535) méretű tömböt. A keresés 
és beszúrás egy hash számolással történik a mac címből, a kiszámolt hash lesz a tömb 
indexe. Valószínűleg a keresés és a beszúrás is gyors ezzel a módszerrel, de több tábla esetén 
kétlem, hogy az irgalmatlan memóriaigény miatt használni tudnánk.<br><br><b>Az eredmények:</b><br><b>Example:<br>  </b>Core(s)    1         2         4          8<br>Mpps       1.5  1.6   3.2    6.5 
<br><b>Miénk:</b><br>Core(s)    1          2          4          8<br>Mpps    2.3      4.7       8.9       9.6  
<br></div><div>(<a href="https://plc.inf.elte.hu/p4/trac/wiki/Freescale" target="_blank">https://plc.inf.elte.hu/p4/tr<wbr>ac/wiki/Freescale</a>)<br></div><div><br></div><div>Valami még mindig nem tökéletes még az example-el, bárhogy is próbáltam életet lehelni bele. Nem pontosan értem miért, de csak az egyik porton bejött csomagokat hajlandó forwardolni, ami azért fura mert mikor elkezdtem debuggolni akkor egyértelmű lett, hogy a másik port csomagjait is feldolgozza. Itt lehet, hogy van még valami rejtőző probléma és könnyen lehet, hogy azért nem tud jobb sebességgel menni a fwd.<br></div><div>Ami még tuti sokat lassít, hogy az example folyamatosan update-eli a táblát ha a bejövő csomag source MAC-je nem ahhoz a porthoz tartozik a táblában ahol bejött. Ez plusz 1 hashelést és egy összehasonlítást is jelent minden bejövő csomagra. Ezt kikapcsolni nem triviális, mert ez alapján "tanul" a switch. Tehát ha ezt kiszedem akkor nem töltődnek fel a táblák soha.<br></div></div></div><br><b>====PISCES====</b><br></div><div>A vagrant 20-30 perc gépkonfigurálgatás, telepítés, DPDK fordítás után úgy döntött, hogy fatal error-ral elszáll:<br>==> switch: ./include/openvswitch/types.h:<wbr>24:44: fatal error: p4/src/match/openvswitch/types<wbr>.h: No such file or directory<br>==> switch:  #include "p4/src/match/openvswitch/type<wbr>s.h"</div><div>Kézzel megnéztem, a p4/src könyvtár a virtuális gépben tök üres... Szóval teljesen jogos hogy nem találja az include-ot a fordító.<br></div><div><br></div>Peti<br></div></div>