<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    == Architecture<br>
    <br>
     - (ábra Máté levele szerint)<br>
     - switch software is result of linking two carefully separated
    components of C source code<br>
       - hw-dependent part - the "HAL"<br>
         - static library, written by a hw-expert<br>
       - the rest (i.e. hw-independent) - the "Core"<br>
         - generated by a compiler, based on the HLIR<br>
     - well-defined interface between the components (mostly with C
    function prototypes)<br>
     - separation PRO<br>
       - much simpler compiler<br>
       - modularity = better maintainability<br>
       - exchangeable HAL = retargetable switch (without rewriting a
    single line of code)<br>
       - HAL is not affected by changes in the P4 program<br>
       separation CON<br>
       - performance<br>
         - hw-dependent parts are not amenable to protocol-dependent
    optimization<br>
         - communication between the components takes some time (C
    function calls)<br>
    <br>
    == Core<br>
    <br>
     /DATA/<br>
     - defines stateful memory configuration<br>
       - data structures declared in the HAL but initialized in the core<br>
     - the same idea is used for sharing information on header types<br>
       - we could use macros instead, but arrays are more readable and
    they are optimized away by the C compiler (via constant propagation)<br>
     /ALGORITHMS/<br>
     - packet parsing<br>
       - determines the positions and types of headers in the packet<br>
       - does not do "real" parsing or field extraction (we do it lazy)<br>
       - "lightweight parsed representation"<br>
     - fields are extracted when needed<br>
       - and field modifications also happen in-place<br>
     - controls and actions translated to C functions<br>
     - key calculation for lookup tables<br>
    <br>
    == HAL<br>
    <br>
     - implementation of<br>
       - state (tables, counters, meters etc.) and related operations
    (table insert/delete/lookup, counter increment etc.)<br>
       - packet RX and TX<br>
       - primitive actions (header-related + digests)<br>
       - helpers for primitive actions (field-related)<br>
         - implemented as macros for performance reasons<br>
    <br>
    == DPDK HAL<br>
    <br>
     - reuses the current LPM and HASH table implementations<br>
     - reuses atomic integers for counters and meters<br>
     - NUMA support<br>
       - 2 instances of each table on each socket - lock-free solution<br>
         - active/passive instances<br>
         - lcore always turns to its socket's instance<br>
       - counter instances for each lcore on the corresponding socket<br>
         - in cpu cache we trust!<br>
     - status: we support most constructs of P4 1.0<br>
       - missing: variable length fields, parser exceptions, actions
    profiles<br>
    <br>
    == Lessons learned<br>
    <br>
     - it's not that easy to find the boundary of the HAL<br>
       - compared to the first verion, our HAL has become thinner<br>
       - P4 primitive actions are not fully implemented in the HAL, in
    most cases only small hw-dependent helper functions are defined<br>
       - PRO: the hand-written code is smaller<br>
     - sometimes gcc does not want to optimize the obvious, so we needed
    to inspect the assembly<br>
    <br>
    <div class="moz-cite-prefix">On 2016-05-18 14:11, Tejfel Máté wrote:<br>
    </div>
    <blockquote cite="mid:573C5BEC.6060201@caesar.elte.hu" type="cite">
      <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
      Szia Sanyi!<br>
      <br>
        Jobbulást a családnak.<br>
      <br>
        Pár gondolat, ami eszünkbe jutott:<br>
      <br>
       *   Who are we?<br>
      <br>
             Ide jöhetne egy akár animált térkép arról, hogy hol is van
      Budapest...<br>
      <br>
             Gondolkodtunk róla, de leszavaztuk, hogy a honlapos
      "csoportkép" felkerüljön (ez közös ellenvetést váltott ki, mivel
      messze nem egységesek a képek...)<br>
      <br>
      <br>
      * Multitarget compiler ...<br>
      <br>
          Ide esetleg be lehetne animálni a sigcomm-ra küldött leíráson
      lévő ábra egy finomított változatát, ahol (legalább "..." szinten)
      látszik, hogy több HAL-ban gondolkodunk. Esetleg hozzá lehetne
      merge-elni pár dolgot a repo/slides/ mappában a 2015_12_16-os
      slide-showk 6. slide-járól <br>
      <br>
      <br>
      A következő 3 slide-ról Dani ígért egy kezdeményt, amit majd
      alakíthatunk, de pár dolog ami itt felmerült: <br>
      <br>
      * Core Compiler<br>
      <br>
         technikai részleteket (pl. template alapú fordítás) szerintünk
      nem érdemes a slide-ra rakni<br>
      <br>
        Ami rákerülhetne:<br>
      <br>
        - a P4-es HLIR-t használjuk (ez akár még az előző ábrára is
      rákerülhetne...)  <br>
        - C-re fordítunk<br>
        - fejlécek nincsenek parse-olva, mezőket on-the-fly csomagoljuk
      ki/be   <br>
        <br>
      <br>
      * HAL<br>
      <br>
         - hol a határvonal <br>
              csomag kezelés, stateful memories (táblák, counterek) +
      műveleteik, <br>
               header stack pop, push, <br>
               fejléc hozzáadás, törlés (általánosan)<br>
               primitívek-hez szükséges hw-dep "primitívek"<br>
      <br>
      <br>
      * HAL for DPDK<br>
      <br>
         - Numa support (Dani: pár részlet, mi is biztosítja, ha nem is
      a slide-ra, de elmondható)<br>
         - mit támogatunk: lista (Sanyi majd eldönti ezt megmutatja-e :)
      )<br>
      <br>
      <br>
       Folyt. köv...<br>
      <br>
              M.<br>
       <br>
      <br>
      <div class="moz-cite-prefix">2016-05-18 12:12 keltezéssel, Sándor
        Laki írta:<br>
      </div>
      <blockquote
        cite="mid:8f011f04-e2b2-2b63-6bfb-e5443421b4f3@elte.hu"
        type="cite">
        <meta content="text/html; charset=UTF-8"
          http-equiv="Content-Type">
        <p>Sziasztok!</p>
        <p>Sajnos, nem valószínű, hogy be tudok menni. Feleségem
          belázasodott tegnap este, a gyereknek meg taknya-nyála
          egybefolyik és folyamatosan orrszívózni kell. <br>
        </p>
        <p>Azonban ma le kell adnom a ppt-t, amihez mindenféle inputot
          megköszönnék. Csatoltam a vázát a tervezett prezentációnak! <br>
        </p>
        <p>Nyugodtan dobáljátok bele a gondolataitokat és esetleges
          teljes részeket és küldjétek át. Várhatóan csak éjjel fogom
          elküldeni. A méréseknél a skálázódáshoz ha tudtok bármit
          küldeni, ami jobb a semminél az mindenképp jó lenne.
          Compilernél érdekességek, amire figyelni kellett (lessons
          learnt jelleggel), a dpdklib-nél mi hogyan lett megvalósítva,
          hol tartunk most. <br>
        </p>
        <p>Üdv.</p>
        <p>Sanyi<br>
        </p>
        <div class="moz-cite-prefix">On 2016.05.18. 10:31, Tejfel Máté
          wrote:<br>
        </div>
        <blockquote cite="mid:573C2848.3030200@caesar.elte.hu"
          type="cite">Sziasztok! <br>
          <br>
             Úgy tűnik a 2.702 üres lesz, gyertek majd oda 1-re... <br>
          <br>
                            M. <br>
          <br>
          2016-05-17 08:55 keltezéssel, Tejfel Máté írta: <br>
          <blockquote type="cite">Sziasztok! <br>
            <br>
              Akkor összegezve maradjon a szerda 13:00. Majd keresünk
            egy üres termet :) <br>
            <br>
                               M. <br>
            <br>
            2016-05-15 23:38 keltezéssel, Péter Vörös írta: <br>
            <blockquote type="cite">Sziasztok! <br>
              <br>
              Nekem is jó. <br>
              <br>
              Peti <br>
              <br>
              Dániel Horpácsi <a moz-do-not-send="true"
                class="moz-txt-link-rfc2396E"
                href="mailto:daniel-h@elte.hu"><daniel-h@elte.hu></a>
              írta (2016. május 15. 23:20): <br>
              <blockquote type="cite">Sziasztok! <br>
                <br>
                Nekem is ok a 13-14. <br>
                <br>
                Dani <br>
                <br>
                <br>
                On 2016-05-14 22:45, Sándor Laki wrote: <br>
                <br>
                Nekem szerda 13-14 között jó. 14-re már az Ericsson-ban
                kell lennem. <br>
                <br>
                Amúgy nekem 12:30-tól is jó. <br>
                <br>
                Üdv. <br>
                <br>
                Sanyi <br>
                <br>
                <br>
                On 2016.05.13. 23:57, Leskó Dániel wrote: <br>
                <br>
                Akkor szerdán lesz a meeting? <br>
                <br>
                Dani <br>
                <br>
                2016.05.13. 15:22 keltezéssel, Brunner Márton írta: <br>
                <br>
                Sziasztok, <br>
                <br>
                Nekem jó a szerda 13:00 is, illetve aznap bármi későbbi
                időpont is megfelel. <br>
                <br>
                Marci <br>
                <br>
                <br>
                Brunner Márton <br>
                <a moz-do-not-send="true"
                  class="moz-txt-link-abbreviated"
                  href="mailto:brmarci@caesar.elte.hu">brmarci@caesar.elte.hu</a>
                <br>
                <a moz-do-not-send="true"
                  class="moz-txt-link-abbreviated"
                  href="mailto:brmarci7@gmail.com">brmarci7@gmail.com</a>
                <br>
                <br>
                _______________________________________________ <br>
                P4 mailing list <br>
                <a moz-do-not-send="true"
                  class="moz-txt-link-abbreviated"
                  href="mailto:P4@plc.inf.elte.hu">P4@plc.inf.elte.hu</a>
                <br>
                <a moz-do-not-send="true" class="moz-txt-link-freetext"
                  href="https://plc.inf.elte.hu/mailman/listinfo/p4">https://plc.inf.elte.hu/mailman/listinfo/p4</a>
                <br>
                <br>
                <br>
                <br>
                <br>
                _______________________________________________ <br>
                P4 mailing list <br>
                <a moz-do-not-send="true"
                  class="moz-txt-link-abbreviated"
                  href="mailto:P4@plc.inf.elte.hu">P4@plc.inf.elte.hu</a>
                <br>
                <a moz-do-not-send="true" class="moz-txt-link-freetext"
                  href="https://plc.inf.elte.hu/mailman/listinfo/p4">https://plc.inf.elte.hu/mailman/listinfo/p4</a>
                <br>
                <br>
                <br>
                -- <br>
                Sándor Laki, PhD <br>
                Assistant professor <br>
                Department of Information Systems <br>
                Eötvös Loránd University <br>
                Pázmány Péter stny. 1/C <br>
                H-1117, Budapest, Hungary <br>
                Room 2.506 <br>
                Web: <a moz-do-not-send="true"
                  class="moz-txt-link-freetext"
                  href="http://lakis.web.elte.hu">http://lakis.web.elte.hu</a>
                <br>
                Phone: +36 1 372 2869 / 8477 <br>
                Cell: +36 70 374 2646 <br>
                <br>
                <br>
                <br>
                _______________________________________________ <br>
                P4 mailing list <br>
                <a moz-do-not-send="true"
                  class="moz-txt-link-abbreviated"
                  href="mailto:P4@plc.inf.elte.hu">P4@plc.inf.elte.hu</a>
                <br>
                <a moz-do-not-send="true" class="moz-txt-link-freetext"
                  href="https://plc.inf.elte.hu/mailman/listinfo/p4">https://plc.inf.elte.hu/mailman/listinfo/p4</a>
                <br>
                <br>
                <br>
                <br>
                _______________________________________________ <br>
                P4 mailing list <br>
                <a moz-do-not-send="true"
                  class="moz-txt-link-abbreviated"
                  href="mailto:P4@plc.inf.elte.hu">P4@plc.inf.elte.hu</a>
                <br>
                <a moz-do-not-send="true" class="moz-txt-link-freetext"
                  href="https://plc.inf.elte.hu/mailman/listinfo/p4">https://plc.inf.elte.hu/mailman/listinfo/p4</a>
                <br>
                <br>
              </blockquote>
              _______________________________________________ <br>
              P4 mailing list <br>
              <a moz-do-not-send="true" class="moz-txt-link-abbreviated"
                href="mailto:P4@plc.inf.elte.hu">P4@plc.inf.elte.hu</a>
              <br>
              <a moz-do-not-send="true" class="moz-txt-link-freetext"
                href="https://plc.inf.elte.hu/mailman/listinfo/p4">https://plc.inf.elte.hu/mailman/listinfo/p4</a>
              <br>
            </blockquote>
            <br>
          </blockquote>
          <br>
          _______________________________________________ <br>
          P4 mailing list <br>
          <a moz-do-not-send="true" class="moz-txt-link-abbreviated"
            href="mailto:P4@plc.inf.elte.hu">P4@plc.inf.elte.hu</a> <br>
          <a moz-do-not-send="true" class="moz-txt-link-freetext"
            href="https://plc.inf.elte.hu/mailman/listinfo/p4">https://plc.inf.elte.hu/mailman/listinfo/p4</a>
          <br>
        </blockquote>
        <br>
        <pre class="moz-signature" cols="72">-- 
Sándor Laki, PhD
Assistant professor
Department of Information Systems
Eötvös Loránd University
Pázmány Péter stny. 1/C
H-1117, Budapest, Hungary
Room 2.506
Web: <a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lakis.web.elte.hu">http://lakis.web.elte.hu</a>
Phone: +36 1 372 2869 / 8477
Cell: +36 70 374 2646</pre>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
        <br>
        <pre wrap="">_______________________________________________
P4 mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:P4@plc.inf.elte.hu">P4@plc.inf.elte.hu</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://plc.inf.elte.hu/mailman/listinfo/p4">https://plc.inf.elte.hu/mailman/listinfo/p4</a>
</pre>
      </blockquote>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
P4 mailing list
<a class="moz-txt-link-abbreviated" href="mailto:P4@plc.inf.elte.hu">P4@plc.inf.elte.hu</a>
<a class="moz-txt-link-freetext" href="https://plc.inf.elte.hu/mailman/listinfo/p4">https://plc.inf.elte.hu/mailman/listinfo/p4</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>