++doc ++clean table
This commit is contained in:
parent
d2fbbcda53
commit
80d2d34ccb
2 changed files with 16 additions and 3 deletions
18
doc/plan.org
18
doc/plan.org
|
@ -1546,7 +1546,7 @@ debug packets - analyse code - goto 1
|
||||||
[21:26] line:~% sudo apt install thrift-compiler
|
[21:26] line:~% sudo apt install thrift-compiler
|
||||||
libnanomsg-dev libjudy-dev
|
libnanomsg-dev libjudy-dev
|
||||||
*** Performance comparison
|
*** Performance comparison
|
||||||
*** Challenges / Limitations in P4
|
*** P4 Possible Improvements / Current Challenges / Limitations
|
||||||
**** DONE cannot read key from table
|
**** DONE cannot read key from table
|
||||||
***** log
|
***** log
|
||||||
Key and mask for matching destination is in table. We need this
|
Key and mask for matching destination is in table. We need this
|
||||||
|
@ -1653,7 +1653,11 @@ bad json:
|
||||||
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
**** Only one LPM key supported in tables (2019-03-23)
|
**** DONE Only one LPM key supported in tables (2019-03-23)
|
||||||
|
Priority support in ternary possible. Means rewriting for
|
||||||
|
developers. Could possibly be supported by switching to ternary mode
|
||||||
|
internally.
|
||||||
|
|
||||||
#+BEGIN_SRC
|
#+BEGIN_SRC
|
||||||
../p4src/static-mapping.p4(121): error: MyIngress.nat64, Multiple LPM keys in table
|
../p4src/static-mapping.p4(121): error: MyIngress.nat64, Multiple LPM keys in table
|
||||||
table nat64 {
|
table nat64 {
|
||||||
|
@ -1695,7 +1699,6 @@ I could work around this by using if(! .. .hit) { my_action(table_id)
|
||||||
- switch/if in actions: with shadow tables
|
- switch/if in actions: with shadow tables
|
||||||
- switch/if in apply block
|
- switch/if in apply block
|
||||||
|
|
||||||
|
|
||||||
***** log
|
***** log
|
||||||
Imho, compiler should be able to unroll these to some degree.
|
Imho, compiler should be able to unroll these to some degree.
|
||||||
|
|
||||||
|
@ -1730,6 +1733,15 @@ I could work around this by using if(! .. .hit) { my_action(table_id)
|
||||||
}
|
}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
**** TODO Modules, OS
|
||||||
|
Not addressed so far: how to create re-usable code fragments that can
|
||||||
|
be plugged in easily. There could be a hypothetical "P4OS" that
|
||||||
|
manages code fragments. This might include, but not limited to
|
||||||
|
downloading (signed?) source code, managing dependencies similar to
|
||||||
|
Linux package management, handling updates, etc.
|
||||||
|
**** TODO Code sharing (controller, switch)
|
||||||
|
Many constants double defined. Easy to make errors.
|
||||||
|
|
||||||
*** Implementation limitations
|
*** Implementation limitations
|
||||||
**** No fragmentation support (yet)
|
**** No fragmentation support (yet)
|
||||||
**** No session handling (yet)
|
**** No session handling (yet)
|
||||||
|
|
|
@ -249,6 +249,7 @@ class L2Controller(object):
|
||||||
self.controller.table_add("v6_networks", "set_egress_port", [str(v6route['net'])], [str(v6route['port'])])
|
self.controller.table_add("v6_networks", "set_egress_port", [str(v6route['net'])], [str(v6route['port'])])
|
||||||
|
|
||||||
self.controller.table_clear("v4_networks")
|
self.controller.table_clear("v4_networks")
|
||||||
|
self.controller.table_clear("v4_arp")
|
||||||
for v4route in self.v4_routes[self.mode]:
|
for v4route in self.v4_routes[self.mode]:
|
||||||
self.controller.table_add("v4_networks", "set_egress_port", [str(v4route['net'])], [str(v4route['port'])])
|
self.controller.table_add("v4_networks", "set_egress_port", [str(v4route['net'])], [str(v4route['port'])])
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue