Skip to content

Snabb 2022.12 “Balaclava”

Compare
Choose a tag to compare
@eugeneia eugeneia released this 15 Dec 11:56
· 170 commits to master since this release

This release introduces a new data structure to represent YANG lists, allowing us to expose lists with the attribute ordered-by: user as a configuration interface. Additionally we have made previously hardcoded freelist and interlink buffer sizes configurable at runtime to enable tuning of those buffers to fit application demands. Finally, ipfix probe has been optimized to operate without software RSS when the configuration allows it. As usual this release also comes with various minor improvements and bug fixes.

What's Changed

  • Configurable interlink queue, freelist, and group freelist sizes by @eugeneia in #1489
  • Add lib.yang.list hash trie to store YANG lists by @eugeneia in #1490
  • ipfix probe: cleanup code, optimize operation without software rss by @eugeneia in #1492
  • Collected changes for December 2022 release: Balaclava by @eugeneia in #1493

Full Changelog: v2022.10...v2022.12

Contributors

Max Rottenkolber (100):

  • 4b58a3c: heap 1
  • 536c929: heap 2
  • 9ea357e: list 1
  • 1afa4cd: heap no overflow, simplify, fix bugs
  • c325cd9: heap collisions
  • 62d4ae4: remove, iterator
  • e451f5e: enable LUA52COMPAT
  • 00a6169: fix bugs
  • 0f8580e: ListMeta
  • 2075954: add_or_update
  • 2313cc0: fix heap _ref bug
  • 559faf3: refactor
  • b3692f5: refactor
  • b60b918: ip bench
  • 9c6a29e: refactor
  • a6492c0: funny
  • d8e53fe: ListMeta fixes
  • cc7b972: Make keys/members specs extendable
  • 89a67ac: todo: deterministic struct field order
  • ddabaa3: lib.yang.list: support optional members
  • 64331e4: lib.yang.list: sort fields in build_type
  • 62696b7: lib.yang.list: more builtin types
  • 95a9d31: lib.yang.list: add lvalue type (for arbitrary Lua values)
  • abc0f72: lib.yang.list: add ipv4/ipv6-address types
  • 147557f: lib.yang.list: single key meta, object() getter
  • 8e1da16: lib.yang.list: load/save
  • e36d84e: lib.yang.list: object() functions a is-list? predicate
  • 4c90e38: lib.yang.list: add from_table constructor
  • 4eca2e7: core.shm: pass through extra sizeof args in map
  • f948fa6: lib.interlink: make queue size configurable
  • f1577c9: core.shm: allow mapping of partial objects
  • c7bb164: core.group_freelist: configurable group freelist size
  • 7b6ee58: core.packet: configurable freelist size
  • 1ac0362: core.packet: fix freelist shm display bugs
  • 07dc242: lib.interlink: revert from typeof to cdef for struct interlink
  • 9400c62: lib.scheduling: add max_packets parameter
  • 690bd3e: lib.yang: integrate list into data
  • 5d20d5a: lib.yang.list: clean up lvalues, load, save
  • d728c32: lib.yang: integrate list into binary
  • 86a8a32: lib.yang.list: fix bug wrt lvalues/optional
  • 96ce235: lib.yang.binary: test list lvalues and fix bug
  • dbc6f5e: lib.yang.list: add optional lvalue test case
  • c5609e9: lib.yang.data: cleanup
  • d5e508a: lib.yang: update README
  • 1db6430: lib.yang.path_data: wip
  • a66ee30: lib.yang.path_data: wip
  • de2acbc: lib.yang.path: cleanup
  • c3423ec: libya.ng.path_data: wip
  • 63dde84: lib.yang.path: fix bugs
  • d267f22: lib.yang.list: add identityref and leafref types
  • 275da2a: lib.yang.path_data: wip
  • 97a5899: lib.yang.path: add unparse_path
  • ee4af97: lib.yang.path_data: wip passing
  • adb40ef: lib.yang.path_data: fix bugs, extend tests
  • e8c9725: lib.yang.list: integrate state, ptree support
  • 6ff9f33: lib.yang.list: add struct support
  • ab96b5d: list lwaftr wip
  • 00ba121: lib.lua.StackTracePlus: pull upstream
  • 5eebd6f: core.main: re-enable StackTracePlus
  • 4bf08f8: lib.yang: factor out lib.yang.ctype
  • bb9eca2: lib.yang.list: use lib.yang.ctype
  • bc571d3: apps.lwaftr.binding_table: fixup
  • f3c8e18: lib.yang.binary: serialize struct ts for list
  • 8c8c25c: program.lwaftr.tests.probased.genyang: integrate
  • a3c0e39: core.main: fallback to debug.traceback when STP fails
  • 27a5ec9: integrate lwaftr wip fixup
  • 990ab59: lib.yang.list: fix empty iterator bug
  • 3cd57c2: lib.yang.state: fixup
  • c764412: lib.yang.path/path_data: handle rpc schema
  • 231381d: lib.yang: only ever handle list objects for list productions
  • 34c4324: lib.yang.path_data: add grammar_for_schema_by_name
  • 4fc54c2: integrate lwaftr wip
  • 7ae62e7: lib.yang.list: use ctype if available
  • 1145275: integrate lwaftr fix bugs
  • 264bd6a: lib.equal: do not compare tables with metatables
  • ad5c3a5: lwaftr integrate fix bugs
  • c2261f2: lib.yang.data: test ordered-by
  • 3858999: lib.yang.list: fix ordering bugs
  • 308e56c: lib.yang.path_data: fix setter and remover bugs
  • b04a261: lib.yang.list: fix bug in field_order
  • 04c79b6: lib.yang.data: avoid redundantly optional list members
  • 0059c0b: lib.yang.state: muffle warnings
  • 4e56332: lwaftr: remove legacy schema and migrations
  • b0ea121: lwaftr: supply mandatory padding value in native_binding_table_from_ietf
  • 5bd3087: Integrate snabbflow
  • 1896a2c: snabb ipfix: remove class order leaf
  • 78f1a11: lib.yang.binary: support serializing leafrefs
  • 68cd6c4: snabb-snabbflow-v1.yang: use leafrefs where sensible
  • 1553134: lib.ptree: fix a bug where bogus PID was logged
  • 5923add: ipfix probe: cleanup code, optimize operation without software rss
  • 48a1747: program.ipfix.tests.test: tweak tolerance
  • 004b6b8: lib.yang.binary: bumb version
  • 052d8c2: lib.interlink: fix queue size race condition
  • 37628fc: core.shm: test parameterized types
  • acf5d80: apps.lwaftr.binding_table: keep ctable defaults originally used in lib.yang.data
  • 84d59cd: lib.interlink: move size to same cache line as state
  • 0183beb: lib.interlink: keep local copies of mask
  • 3b3c3de: core.group_freelist: keep local copies of mask
  • 176b126: lib.interlink: edits
  • 58be8ee: core.group_freelist: edits