Skip to content

Releases: snabbco/snabb

Snabb 2019.11 “Efraasia”

08 Nov 08:44
Compare
Choose a tag to compare

Lots of new gadgets in this release: a Snabb driver for Intel AVF based Virtual Functions (virtualized NICs) such as provided by Intel X710 and XL710 based NICs, a new optimized Poptrie implementation for all your longest-prefix-match needs (lib.poptrie), VMDq support for Intel i350 based NICs, support for 256-bit AES keys in lib.ipsec, and much broader support for YANG language features in lib.yang. As usual, this release includes numerous additional small improvements, optimizations and bug fixes.

Changes

  • #1314 #1381 #1382 #1438 Additions , optimizations and bug fixes for lib.ipsec. New: support for AES 256 (256-bit keys).
  • #1443 Fixed a bug in statistics collection in apps.intel_mp (Intel 52899 driver)
  • #1442 Fixed a bug where belated opening of auditlog would fail due to initial JIT activity (open it earlier)
  • #1397 Added a fast, generic Poptrie implementation (lib.poptrie)
  • #1390 Fixed a bug that prevented shared packets from being released to the group when a process is stopped
  • #1416 Added support for YANG enumeration types to lib.yang
  • #1357 Various bug fixes and improvements to snabb loadtest
  • #1431 Fixed a bug in core.memory that caused SIGSEGV handling to fail to recent RedHat Linux distributions
  • #1427 Fixed a crash in snabb ipfix probe when the duration flag was not provided
  • #1423 lib.hash.siphash: improved compatibility with reference implementation
  • #1421 core.app: simplified loop structure of engine to help the JIT find better traces
  • #1353 Added VMDq support for Intel i350 based NICs to apps.intel_mp, and fixed some statistics collection bugs for i350/i210 based NICs
  • #1376 lib.yang: changed implementation to use native Lua number keys for parsed YANG data where possible
  • #1435 lib.yang: added support for unique, min/max, and choice keywords
  • #1436 apps.intel_mp: make sure PCI device is unbound from Linux driver before mapping its memory into the Snabb process (previous behavior caused crashes with recent Linux kernels, see issue #1286)
  • Igalia#1231 lib.fibers.timer: fixed a bug in timer event promotion
  • Igalia#1224 lib.yang: added support for if-feature expressions
  • #1448 Merged lwaftr release v2019.06.01 into Snabb
  • #1444 apps.intel_mp: added support for Tx->Rx MAC Loopback mode, and fixed related bugs
  • #1446 Added apps.intel_avf, a driver for Intel AVF capable NIC virtual functions (Intel X710, XL710, ...)
  • #1445 #1433 #1427 Various minor bug fixes and improvements
  • #1432 Bug fixes and improvements to SnabbBot, our CI robot

Contributors

Alexander Gall (4):

  • 5724ff2: lib.yang.schema: implement semantics for enumeration type
  • 4989b99: lib.yang.data: add test-case for enumeration type
  • 8c616b0: core.app: use implict pull/push loops in breathe()
  • edc07fc: lib.hash.siphash: add option to comply to reference implementation

Andy Wingo (28):

  • a805f92: Re-enable NUMA memory binding on newer kernels
  • 3809be2: Detect version mismatch when loading compiled YANG configurations
  • 69764b5: Remove bogus lwaftr benchmarking file
  • 7f2a1d2: Fix PCI affinity check for --preferred NUMA binding
  • a27d8b3: Add more system performance diagnostics
  • ecd443c: Detect irqbalance presence and suggest remedy
  • 9f7177b: Fix uninstall advice for irqbalance
  • e1af4f9: Improve snabb lwaftr run --help
  • a004e9a: Fixup to snabb lwaftr run --help
  • fbf585e: Refactor packetblaster lwaftr to re-use vlan, arp, ndp, v4v6
  • 7886344: Separate B4 and internet lwaftr load generation apps
  • 14c7255: Allow different IPv4 MAC addresses and VLAN tags; fix bugs
  • b63f196: Fix whitespace
  • 1b74cf9: Fix source IPv6 from B4, and better interleaving of streams
  • e7a60d3: Fix frame sizes. Update test files for fresh checksums. Allow for ordering differences between v4 and v6 packets. Stop in a more robust way.
  • 94d123a: Fix inc_ipv4
  • f1050ec: Start ingress drop monitor in grace period
  • bd822d9: Bump snabb-softwire-v2 revision dateD
  • 516306a: Add v2018.09.03 changelog
  • acd54d9: Update version to v2018.09.03
  • b4c9073: Fix promotion of lib.fibers.timer events from outer to inner wheel
  • 0e9e5d9: Make memory monitor a timer instead of an app
  • cc4acb5: Revert "lib.ptree: do not aggregate (ignore) counters that are symlinks"
  • 79075f5: Snabb lwAFTR 2019.06.01
  • 1577238: Fix markdown syntax
  • be06560: Add link to upstream release notes
  • a283e7b: Add link to YANG module
  • c2015ea: Fix release benchmarks to always specify CPU

Asumu Takikawa (1):

  • 8e8ad64: ipfix: fix done state checking in ipfix probe

Luke Gorrie (1):

  • 70dd879: README.md: Update Slack invite link

Max Rottenkolber (160):

  • 25a8d95: snabb_bot: delete $tmpdir on startup
  • 971627f: snabb_bot: configure git user name and email
  • 29e2303: snabb_bot: add timeout to cushion broken test cases
  • 6d1594a: snabb_bot: print SNABB_PCI_INTEL1G{0,1} / snabb_doc: set git user/email
  • 44f6ab0: snabb_doc: fixup git user/email config
  • 59b1b82: apps.ipsec: add tunnel mode esp app
  • 17e8c6c: snabbmark esp: add rudimentary PMU analysis
  • 461f195: lib.ipsec.aes_128_gcm: add rudimentary PMU profiling to selftest
  • 9d14b98: snabbmark esp: fix bug where packets of wrong size were constructed
  • 7f75dc1: snabbmark esp: minor changes
  • bb72e66: lib.ipsec: add missing licensing headers
  • 53ae8bd: lib.ipsec.esp: correct bogus note about IP fragment handling
  • 531170a: lib.ipsec.esp: avoid lib.protocol.* on the fast-path
  • 43d498a: lib.ipsec.esp: use full 16 (instead of 12) byte ICV
  • 66a0dbb: lib.ipsec.esp: keep lib.protocol.esp*
  • 65f0a75: snabb_bot: fix bug that compared benchmark results with wrong target
  • f49720a: snabb_bot: make checkout/merge more robust
  • 2814b7b: intel_mp: fix broken per queue stat accumulation
  • 9c4e3ee: intel_mp: VMDq support for i350
  • 33c0912: apps/intel_mp: RQDPC is actually an RC register on the i350
  • 283d6a8: loadtest find-limit: fix some edge cases and bugs
  • 90c3be7: snabb_bot: fix bug in benchmark regression testing
  • 32586f3: lib.yang.data: represent some number-keyed lists as Lua tables
  • 8269afe: lib.yang.binary: support number-keyed Lua tables in ad-hoc grammars
  • 07821cf: lib.yang.path_data: s/string_key/native_key
  • 796c177: lib.ipsec.esp: optimize padding by specializing for power of two
  • 5b86f94: lib.ipsec.esp: fix a packet leak in :resync()
  • 2bd39ae: intel_mp: fix 1G blast selftest via use of RateLimitedRepeater
  • 9ea857e: intel_mp: port more vmdq tests to 1G cards.
  • afc971b: intel_mp: revert queuing -> queueing spelling change from 9c4e3ee
  • 691b5a1: lib.yang.data: return single value from normalize_id
  • 1bff543: lib.yang.path_data: add unique restriction consistency checker
  • 5d00ae9: lib.yang.path_data: run consistency_checker in parser_for_grammar
  • c7a655e: lib.ptree: run consistency checker on initial_configuration
  • 1c9642e: core.packet: release packets to group freelist on shutdown
  • ac45e3f: lib.interlink: fix an off-by-one bug in the tostring method
  • 5533782: core.packet: do not append .freelist in freelist_create/open)
  • 78cf3c3: main.shutdown: unlink supervisor shm root
  • ace9b32: Revert "main.shutdown: unlink supervisor shm root"
  • c6b32f4: core.packet: require explicit initialization of packets freelist
  • 482c3a5: Work-in-progress implementation of Poptrie
  • 3234b1f: Add basic documentation for lib.poptrie
  • 9343b36: lib.poptrie: fix building empty RIB and repeated calls to build()
  • 4e48a25: lib.poptrie: refactor :build() into smaller methods...
  • 77cd0a7: lib.poptrie: implement direct pointing
  • b5fcbfb: lib.poptrie: do not print zero value leaves in fib_info
  • 92bc6c6: lib.poptrie: optimize build(), cover direct pointing in PMU analysis
  • 3fcc794: lib.poptrie: make s (bits used for direct pointing) configurable
  • db1320f: snabb_bot.sh: do not attempt to initialize submodules
  • 703eb9a: intel_mp: work around flaky mirror test on i350
  • ab77197: lib.yang.data: make table_native_key a bit easier to follow
  • 17871d4: lib.yang.binary: minor coding style change
  • d29763d: intel_mp: fix a bug in VMDq BAM (bcast accept) handling for the i350
  • 6be165e: intel_mp: add VMDq broadcast tests
  • 69b6ca1: intel_mp: fix selftest from the future
  • 7b52cf8: lib.yang.data: fix bug that prevented top-level choices being parsed
  • 0893b16: lib.yang.data: fix bug when parsing list members of choice cases
  • 5eb3857: lib.yang.data: correctly parse choice case short form.
  • 6ff14ef: lib.poptrie_lookup: incorporate peter’s suggestions
  • bed7ec2: lib.poptrie_lookup: comment formatting
  • ab0cfaf: lib.poptrie: extend to support lookup32/lookup128
  • 4e71680: lib.poptrie_lookup: fix bug where offset was not set correctly
  • 6211b05: lib.poptrie_lookup: optimize lookup128, prefer 32-bit operations
  • 4f8ed1f: dasm_x86: import ADX/BMU/FMA3 instruction support from LuaJIT:v2.1
  • 7283f71: lib.poptrie_lookup: use BMI2 instructions when available
  • 5ca4578: lib.poptrie: avoid cache thrashing in micro benchmark
  • 55f7788: lib.ptree.support: fix bug related to native table keys
  • 355b033: lib.poptrie: fix out of bounds read in add
  • 4c88093: lib.poptrie: avoid slow down incurred by ASM routines as upvalues
  • ff13dd2: !fixup previous commit
  • 2b613ad: lib.poptrie: reformulate extract
  • e22dcd8: lib.poptrie: add test scaffolding for testing different configs
  • 4e9379b: lib.poptrie: update a comment
  • 7f92167: lib.poptrie: cache generated ASM code
  • 8419101: lib.poptrie: expose micro-benchmark parameters via env vars
  • 6a684a9: lib.poptrie: fix up to previous commit
  • 125facd:...
Read more

Snabb 2019.06 “Deltadromeus”

06 Jun 12:09
Compare
Choose a tag to compare

This long awaited release is the first Snabb to ship with RaptorJIT and runtime support for the Studio diagnostics environment. The Snabb top monitoring tool is replaced bya more interactive rewrite, and its basic SHM object listing functionality is spun out to the new snabb shm utility. In addition to bug fixes and optimizations, this release also includes improvements to lib.yang and our IPv6 fragmentation apps as well as support for current versions of nDPI.

Changes

  • #1316 Integrate RaptorJIT with Snabb
  • #1401 Merged lwAFTR release v2018.09.02
  • #1386 Add snabb shm: simple tool to print information about Snabb SHM objects
  • #1384 apps.ipv6.reassemble: add expiration of incomplete reassembly buffers
  • #1383 Add path MTU discovery to IPv6 fragmenter (apps.ipv6.fragment)
  • #1275 lib.checksum: optimize IP checksum computation using DynASM
  • #1368 Support nDPI 2.X in ljndpi
  • #1380 Fix a bug in apps.vhost.vhost_user with regard to NUL-termination
  • #1385 Move logger in core.lib to lib.logger
  • #1392 VlanMux: optimize tag pop/push (apps.vlan)
  • #1394 #1395 #1396 Ctype diversity related optimizations

Contributors

Alexander Gall (22):

  • 796597d: lj_trace.c: unpatch blacklisted bytecodes when flushing traces
  • 2ad6817: ipv6.reassembly: avoid packet cloning
  • 0463915: ipv6.reassembly: expire stale reassembly buffers
  • ffd584c: ipv6.reassembly: reduce scope of local variables in handle_fragment()
  • 66a7575: Add PMTUD to apps.ipv6.fragment
  • a9a4b72: ipv6.fragment: improve performance, reduce garbage
  • 7f0703a: ipv6.reassembly: perform reassembly in separate loop
  • dd9bb12: Refactor the logger facility
  • 2bbaa39: lib.tsc: cache calibration of rdtsc
  • 477b4c5: VlanMux: optimize tag pop/push
  • 8f76782: intel_mp: fix ctype diversity for txdesc_t
  • cff919c: packet: cast pointer arg in from_pointer()
  • f896458: datagram: canonicalize pointers in packet append() and prepend() calls
  • d06314c: lwaftr.ctable_wrapper: add cleanup function to random eviction
  • a44d8e1: apps.ipv6.fragment: canonicalize pointers, simplify ICMP matching
  • 4e28690: apps.ipv6.reassemble: fix packet leak
  • d7a51c6: apps.ipv6.reassemble: avoid spurious sort
  • 2e5b5e8: apps.ipv6.reassemble: copy header from first fragment
  • f7a00ff: apps.ipv6.fragment: fix bug in ICMP type match
  • 57cc280: apps.ipv6.reassemble: remove over-eager optimization of module operator
  • d054ec0: apps.ipv6.reassemble: use max_payload constant in packet size check
  • 69473eb: apps.ipv6.reassemble: fix check for valid packet length

Andy Wingo (122):

  • 634ab24: Remove duplicate lj_auditlog.c
  • 2914e5a: Make file-local auditlog variables static
  • 8119e5d: Remove references to the profiler, -jv, -jdump, and the like
  • bbd7635: Remove references to -jv, -jdump, and the like
  • 6943135: Revert "Merge pull request #1040 from lukego/dynasm-gc64-nocoerce"
  • a91e457: Add ring buffer module
  • 252257c: Add basic IO streams
  • 5ceb3c8: Add file stream implementation
  • ddb6a8e: Add full replacement for Lua's "io" module
  • fed2034: Move io.open implementation to lib.stream.file
  • 5ee5357: YANG output byte streams use new Lua streams
  • 311bea2: Move tmpfile() impl to file.lua; add optional perms arg
  • 8a0b098: More YANG output byte stream refactoring
  • 55deb49: Add some helper methods to Lua streams
  • b27a00c: Remove calls to :align() output to ffi natural sizes
  • a2fda31: Remove unused open_output_byte_stream function
  • 0e5f45f: Remove unused lwaftr rangemap load/save capabilities
  • a361697: Replace lib.yang streams with lib.stream streams
  • 0512a8f: Remove YANG streams
  • 810c81e: Add memory-backed stream implementation
  • 5d1b830: Migrate YANG and related libs away from ad-hoc string_io_file
  • 949e663: YANG syntax parser is now streaming
  • 7e45ce3: Fix use of undeclared variable (refactor residue)
  • 1a33991: Fix default EOL handling style
  • ce3b8ad: Fix error reporting in "listen" test
  • 3805a3a: Fix top-level scalar parsers to take stream as argument
  • ac8e74e: File streams query OS for appropriate block size
  • 91560fa: Adapt "snabb config listen" to streaming parse
  • 38f1ad4: Fix conversion of listen to streams
  • e135a02: call_with_output_string flushes stream
  • 4129dec: Add timer wheel
  • 1edd231: Add fibers scheduler
  • 1d2e560: Add fibers
  • c6beee9: Add concurrent ML operations and channels
  • f9a37a6: Move sleep and timeout-related operations to sleep.lua
  • 18467fb: Add epoll wrapper
  • 28ca806: Rework complete tasks to be more centralized
  • 650f7c2: Add epoll-based nonblocking file I/O
  • 2974b06: Supervisor process restores blocking flags on stdin,stdout,stderr
  • 6bf7425: Add Concurrent ML buffered channel
  • 149360b: Convert "snabb config listen" over to use fibers
  • 2a5b526: Convert lib.ptree.trace to use new streams
  • e26a4b6: Adapt new JSON library to return nil on EOF
  • 19e422c: Rewrite "snabb config bench" to use fibers and new streams
  • a6654ce: Replace old ptree JSON library
  • e1b0324: Fix fibers sleep self-test
  • 70fde0b: Add sockets library that integrates with blocking handlers
  • fb7c091: Improve error handling in "snabb config" tools
  • 007be9b: Add support for orderly scheduler shutdown
  • 37053d2: Convert ptree manager to use fibers
  • 0d7d94a: Minor cleanup when reading string table
  • 7466c74: Fix YANG binary serialization of by-reference cdata leaf values
  • 8ef996b: Add assertion to Stream:write_scalar
  • fdec9b7: YANG binary serialization allows for >4GB files
  • f6f8755: Avoid copy when reading in ctable
  • ee1a81a: Use more relaxed NUMA memory binding policy
  • 855aae7: Simplify alarm notifications listener
  • 3ee13d9: Fix socket API change
  • 9bb068e: Add condition variables to fibers
  • a6ea6ff: Fix typo in channels self-test
  • f3cf804: Update fibers file API to allow wait-for-readable ops
  • b47a55f: Add inotify module to ptree
  • 90dacea: Add EINTR handling to epoll module
  • f4a4ab9: Add :next_entry_time() method to timer wheel
  • af60f95: Add scheduler :main method
  • b0bc5b3: Use fiber main method in programs
  • 598745a: Restore schedule_tasks call on event waiter
  • 5426d18: Fix duplicated method
  • 032d187: Minor scheduler refactor
  • cd99fe3: Inotify is_dir() function uses lstat
  • c16edb7: Make lib.comma_value work better for large uint64 values
  • 5c8cabd: Rewrite "snabb top" with fibers
  • b74014c: Fix error case for histogram summaries
  • 4fa0ca8: Arrows change focus in snabb top
  • 600cbee: Remove snabbvmx top.
  • 270bddb: Fix "snabb lwaftr query"
  • 1914a86: Add round-robin database library
  • bfe4f3d: Back off RRD version to 3
  • c29f095: Refactor ptree manager treatment of counters
  • d08292e: Fix reading of "snabb config" configurations from stdin
  • 225878d: Make sure recursive inotify drains all nested events before returning
  • 57b8c18: Swap argument order for file names and initargs in rrd create
  • 5eedfef: Fix RRD bugs
  • 8a7ab76: Ptree manager samples worker and aggregated counters into RRDs
  • 81a54ed: "snabb top" reads rrd files
  • 59d372d: snabb top doesn't monitor itself
  • 5d033e1: Add "interface view"
  • abe2d58: Improve spacing and column width allocation in snabb top grids
  • cf8992f: Switch "snabb top" to prune state tree in UI
  • 2e95609: Wrap "snabb top" counter leaves in an object
  • 6530a0d: Sort rrd lookup results
  • c3fef25: top: Add ability to skim back and forward through time
  • 1e77c9d: Add fallback version of directory monitor if inotify is unavailable
  • 2ba44e8: Make alarms codec use stream i/o routines
  • 6806b59: Tweaks to make alarm encoding have less overhead
  • 74e78e3: Cache array types in stream.lua
  • d6a8c98: Fix another snabb top problem
  • 53f4e05: Update "snabb top" docs
  • 607f7c1: Add ptree docs on counter collection and aggregation
  • a533ed4: Fix typo
  • 26812c6: Remove some indirection in alarm_codec
  • 34ec6c8: Fix broken encode_raise_alarm
  • 15be803: Simplify alarms API
  • 93090ae: alarm_codec doesn't require unpacked args
  • 047f6e7: Fix bug introduced in previous commit
  • a99cd30: Ptree extends alarms by installing alarm handler
  • 3930e90: NDP uses a pre-allocated pseudoheader
  • 0cb4122: Remove some loops-within-loops in stream.lua
  • dbdb0d1: Micro-optimizations
  • 9930715: Fix to alarm:raise
  • 84c2901: Expand on some Changelog features
  • 6ce2990: Minor wording changes around the RRD feature
  • dd54c80: Revert "Show rxbits and txbits instead of bytes"
  • 7b75fbf: Ensure vhost-user socket paths are NUL-terminated
  • 44ef127: intel_mp app instantiations make stats symlink counter forest
  • 5fa0d15: Remove unused symlink creation routines
  • edad14b: Minor formatting change
  • 71bf219: Update l2vpn for intel_mp stats change
  • a24bb8d: Remove extraneous diff
  • fa913d5: Remove more extraneous diff
  • 8f54869: Revert "Minor formatting change"
  • 144c589: intel_mp: Don't eagerly open shared counters

Asumu Takikawa (30):

  • b145d27: tap: bump selftest timeout to 0.05 seconds
  • c4681a6: Use virtual instead of profile time for vmprofile
  • fdf5d02: Restore use of LUAJIT_CFLAGS
  • 4bd9d6e: intel_mp: store shm stats in global directory
  • 2a638fe: Go back to avoiding setting run_stats
  • 0d641de: inotify: adjust is_dir to allow symlinks to dirs
  • 373d195: Filter queue counters based on enabled bitmap
  • 1c536e2: intel_mp: add a new test for rxcounters & workers
  • c40f0ea: snabb top: refactor queue stats filtering
  • af8c75f: snabb top: fix worker nesting with shared pci
  • 5388c98: intel_mp: add 10g test for shared RX counters
  • 6b72001: Use virtual instead of profile time for vmprofile
    ...
Read more

Snabb 2018.09 “Eggplant”

12 Sep 10:09
Compare
Choose a tag to compare

This release improves compatibility of the vhost-user driver with current QEMU versions, and adds rudimentary PMU support for AMD family 15h+ CPUs (including Ryzen). With “Eggplant”, our high-performance hash table implementation received a callback that can be invoked when it is resized, and a generic Token Bucket implementation (lib.token_bucket) and time stamp counter module (lib.tsc) are introduced. As usual, this release comes with numerous bug fixes and minor enhancements.

Changes

  • #1369 apps.vhost: compatibility updates for current QEMU versions
  • #1354 lib.pmu: rudimentary support for AMD family 15h+ CPUs
  • #1359 Add optional callback to the CTable:resize() method
  • #1355 Add support for RDTSC, apply to token bucket
  • #1358 Add protocol header for ICMPv6 Packet-Too-Big type
  • #1210 #1367 #1362 #1351 #1344 #1366 #1305 #1373 Various bug fixes and minor enhancements

Contributors

Alexander Gall (4):

  • fb29cd0: Add support for RDTSC, apply to token bucket
  • c7d772c: Add protocol header for ICMPv6 Packet-Too-Big type
  • af98031: Add optional callback to the CTable:resize() method
  • 8a1ebb0: ctable: fix power-of-2 issue

Andy Wingo (1):

  • de790aa: Load potentially 64-bit values using mov64

Asumu Takikawa (5):

  • 015dcea: Fix minor markdown typo
  • 8d6e22d: Adjust ipfix README diagram
  • 88079ad: vhost_user: Add VHOST_USER_F_PROTOCOL_FEATURES
  • 27e8c13: vhost_user: fill out two additional messages
  • 4700a96: vhost_user: asserts for wrong/missing link name

Ben Agricola (1):

  • 270aea4: Fix length property testing

Luke Gorrie (3):

  • 73223bd: Bump .version to 2018.08
  • 8cfe828: fixup! Bump .version to 2018.08
  • dc4cb79: Add engine.stop() to stop all apps.

Max Rottenkolber (4):

  • 0077d21: core.memory: unmap tmpptr in allocate_huge_page
  • 4a40691: lib.pmu: rudimentary support for AMD family 17h CPUs
  • 3aa1cda: lib.pmu_x86: fix regression introduced in 4a40691
  • a597b40: lib.numa: pretend non-NUMA systems are NUMA systems with one node

kullanici0606 (1):

  • 73de63b: Fixes: #1210 hugetlb parameter causes problem on Centos and since memory is already mapped on hugetlbfs and with mlock, there is no need to explicitly use hugetlb parameter (See comment: #1210 (comment))

Snabb 2018.06 “Dill”

02 Jul 14:30
Compare
Choose a tag to compare

This release introduces support for low-overhead packet queues between Snabb processes within the same process group, as well as a software-based “Receive Side Scaling” (RSS) app to pair with it. Dill also comes with basic pattern restriction support in lib.yang, a better in-band packet tap app that records Pcap data, and—as usual—various bug fixes and miscellaneous improvements.

Changes

  • #1263 Adds basic support for pattern restrictions to lib.yang
  • #1288 Adds a pair of apps (apps.interlink.transmitter and apps.interlink.receiver) that enable efficient packet I/O between Snabb processes within the same process group (inter-process links)
  • #1309 Adds a software-based “Receive Side Scaling” (RSS) app
  • #1315 Introduces the new snabbco/raptorjit integration branch
  • #1320 Adds an in-band packet tap app that logs to Pcap data as a more efficient and featureful alternative to PcapWriter
  • #1327 Fixes a bug in lib.protocol.tcp
  • #1338 Fixes a bug in ljsyscall’s lseek wrapper

Contributors

Alexander Gall (5):

  • 3495fc7: Add a RSS app
  • 41bd845: apps.rss: add selftest
  • 3114c5a: apps.rss: cosmetic changes
  • c8318aa: apps.rss: remove unused variable from selftest
  • 39d2f12: rss.lua: fix bug in selftest

Andy Wingo (3):

  • 468a9a9: Add pcap packet tap
  • 1d90c3e: Revert inadvertant removal of PcapReader / PcapWriter docs
  • bf4307d: Make "offset" arg to lseek a signed integer

Luke Gorrie (3):

  • e7f63d6: doc/branches.md: Add snabbco/raptorjit integration branch
  • e22e683: .version: Bump to 2018.06
  • cf4a5dc: Revert "Merge 'eugeneia/numa-selftest-nonnuma' into wingo-next"

Max Rottenkolber (70):

  • 5100c5d: wip: MCRingBuffer for packets.
  • 3ddb3f3: manual batching
  • 86a6ee9: balance packets
  • 293892b: apps/test
  • 9cdd697: worker
  • 322b61c: factor
  • 6306ed7: core.worker: include si_status in status
  • 4e538cf: fix init race
  • 626c8b6: reorg
  • ac886ba: global max
  • 06053f6: lib.interlink: fix initialization race.
  • 2e32f83: core.worker: include si_status in status
  • 47d8792: lib.interlink: specialized inter-process links
  • 7318cc0: apps.interlink: name apps
  • 8dff93b: apps.interlink: use robust setup/teardown routine, add sensible memory barriers
  • 4486728: apps.interlink.receiver: don’t forward packets until connected
  • db61756: extract lib.print_object from lib.store_config
  • a60a42b: lib.xsd_regexp: port MaxPC to lib.maxpc, implement regular expression parser
  • 204f21e: lib.xsd_regexp: implement basic regexp compiler
  • 6f41966: lib.maxpc: add input_class argument to parse / use classes for input objects
  • 660ae79: Revert "lib.maxpc: add input_class argument to parse / use classes [...]"
  • ba37cd8: lib.maxpc: decode UTF-8 input
  • d3cacc6: lib.maxpc: fix bug in match._not
  • b6cc1a6: lib.maxpc: port digit/number parsers
  • 5fd0198: lib.xsd_regexp: implement unicode ranges
  • 7de7fd3: lib.ucd: supporting Unicode database for lib.xsd_regexp
  • f62c95a: lib.xsd_regexp: implement limited category escapes
  • 5eaf4ac: lib.xsd_regexp: remove support for block escapes, copy in GC predicates
  • ba292f0: lib.xsd_regexp: remove obsolete match.digit
  • ba818b9: Revert "lib.ucd: supporting Unicode database for lib.xsd_regexp"
  • b26d5fc: Revert "lib.xsd_regexp: implement unicode ranges"
  • 6fcebb8: Revert "lib.maxpc: decode UTF-8 input", revert lib.xsd_regexp to ASCII-only
  • 1187fc7: lib.xsd_regexp: implement \i, \I, \c, and \C
  • 074ff0c: lib.xsd_regexp: implement backtracking
  • 1be3a55: lib.yang.schema: fix parse_range
  • de468cb: lib.yang.data: implement range and pattern restrictions
  • e54b5f6: lib.yang.data: do not compile pattern validator for empty set of patterns
  • 88cbeb0: lib.yang.data: only run pattern validator on string values
  • d1a7409: lib.yang.schema: fix bug in selftest (range can have multiple intervals)
  • e577721: program.lwaftr.tests.propbased.genyang: adapt to new range format
  • 090d617: lib.numa: skip selftest if running on a non-NUMA machine
  • 2ece0c1: lib.numa: more fine grained approach to 090d617
  • 6783dac: lib.interlink: use attribute((packet, aligned(64))) to align s
  • cae2554: apps/interlink: turn test.lua into Snabb script selftest.snabb
  • 022ab0c: apps.interlink: add duration parameter to selftest.snabb
  • d1adbcb: process group: rebalance packets exchanged across process boundaries
  • 9f0694f: core.packet: extract packet.account_free from packet.free
  • 756255c: DynASM: add CMPXCHG instruction
  • d05da38: core.sync: add atomic compare-and-swap primitive based on CMPXCHG
  • 9dfa543: interlink: adapt interlink and related apps to group freelist
  • 020a9fd: core.sync: consolidate core.spinlock into core.sync
  • 302f952: core.app: pass app name as second argument to :new in start_app
  • 4686cbf: apps.interlink: use app name to derive SHM interlink path
  • cb9250f: lib.interlink: fix life-time fsm design and implementation bugs
  • 274ea4b: core.packet: do not count packets reclaimed from group_fl as freed
  • 59caa02: apps.interlink: shutdown handler to release stale attachments
  • b1472e8: lib.interlink: integrate with shm.open_frame for snabb top
  • 5ac340e: core.shm: explicitly open shm objects read-only in open_frame
  • 95de704: lib.interlink: fix outdated comments
  • 154d63c: lib.interlink / core.main: fix shutdown bugs
  • 72aadf7: lib.interlink: take advantage of non-excl shm.create semantics
  • 44b4cdf: core.packet: use ffi init argument to initialize packet_fl
  • 5ac6e7b: core.packet: enable group freelist only on demand
  • 02bdf78: apps.interlink.*: add user-facing documentation.
  • be6c657: lib.maxpc: fix backtracking “zero or more” combinator match.all
  • c583ac7: apps.interlink: fix documentation bugs
  • 5fbe79e: apps.interlink: avoid engine/appname kludge by attaching in :link()
  • a083487: Revert "core.app: pass app name as second argument to :new in start_app"
  • 00acc77: apps.rss: include documentation in genbook.sh
  • b699d7e: apps.interlink: allow specifying queue name per config

R. Matthew Emerson (1):

  • c888a86: Simple spinlock implementation based on xchg instruction.

hepeng (2):

Snabb 2018.04 “Edamame”

30 Apr 11:46
Compare
Choose a tag to compare

This release includes the newest version of Igalia’s lwAFTR, as well as a powerful new load testing tool. Also in the mix is an easy way to test Snabb on platforms that support Docker such as OS X, a new “unhexdump” tool that synthesizes packets from hexadecimal encodings, and significant performance and stability improvements. As usual, Edamame also includes assorted bug fixes.

Changes

  • #1328 #1330 #1331 merge Snabb lwAFTR releases up to 2018.04, this includes a new program loadtest which gauges maximum sustainable load of a networking function, as well as fixes to lib.ptree
  • #1326 improves intel_mp selftest more reliability
  • #1289 adds a minimal Docker image that eases testing on e.g. OS X
  • #1274 adds snabb unhexdump tool
  • #1300 fixes a race condition during supervisor setup
  • #1287 optimizes breathe loop by removing unsunk allocations
  • #1271 adds a showcase program that implements DNS service discovery
  • #1308 #1272 include various bug fixes and improvements

Contributors

Alexander Gall (1):

  • 279aa38: core.app: remove garbage when using pace_breathing

Andy Wingo (53):

  • 3e7d2b5: Fix "snabb lwaftr run" after lib.scheduling refactor
  • 47588b9: Split YANG getter-at-path out to own module
  • 667b843: Move generic data-at-path utilities to lib.yang.path_data
  • feab012: Rename program.config.json to lib.ptree.json
  • a83a827: "snabb config listen" more lenient about missing paths
  • bd689ff: "snabb config listen" can take schema / revision from directives
  • 8798307: Add ability for ptree manager to record incoming RPCs
  • 9572bde: Wire up --trace for "snabb ptree" and document
  • fe328da: Wire up a --trace argument for the lwaftr
  • 9662280: Reduce memory use for get-config RPC
  • 008a4b8: Increase response length limit from leader from 100M to 1G chars
  • bd9a8da: Improve speed of yang qstring parser.
  • 3e2fecb: Fix ptree trace selftest
  • 7136c24: changelog
  • ee03a98: Fix data_grammar_from_schema for empty cases
  • 631357c: Rewrite random YANG path selector and value generator
  • c752d1d: Remove unused imports
  • cf61265: Simplify test
  • 8ce8872: Add "snabb unhexdump" tool
  • 383fd83: Process tree runs data-plane processes with busywait=true by default
  • c6d0e22: Pcap savefile writer records frame sizes
  • 3cf4cda: Sizes for "packetblaster lwaftr" are frame sizes
  • c55199b: Fix up packetblaster lwaftr selfchecks
  • fe08efb: Address review nit
  • 2876c6e: Revert "Pcap savefile writer records frame sizes"
  • 75ee990: Regenerate packetblaster lwaftr test files
  • 87c4263: Regenerate packetblaster lwaftr test files
  • d9b6512: Fix next-hop discovery with multiple devices
  • b38ae3a: Remove early lwAFTR NUMA affinity check
  • 05bffbc: Move "loadtest" command out of lwaftr
  • 09ce69e: Fix ctable resizing logic
  • 3142fad: Fix sense of ctable resize limit
  • db8b2c4: Make minimum ctable size uniform
  • f31e840: Add limit-finding loadtester.
  • 047018a: Add find-limit --exec to README
  • da3a2f8: Make supervisor setup more reliable
  • 459ee99: Make supervisor setup more reliable
  • 0736ffd: Fix out-of-bounds write in ctable test suite
  • 55bf2e3: Promptly close util.ls() dir fd; fix bug with deleted entries
  • 828641f: Remove lib.files_in_directory
  • f133f7f: Promptly close fd in random_bytes_from_dev_urandom
  • 1e6f852: Fix modification to lib.hardware.pci.scan_devices
  • 65cbc01: Set SNABB_RANDOM_SEED for intel_mp tests
  • a5bed82: Claim name in central lwaftr ptree manager function
  • 703f1a9: "snabb config" tests wait until ptree manager socket is available
  • 69f545b: Revert lwAFTR-specific version change for merge to upstream
  • a1efb46: Harmonize style in changelog
  • d51d0d5: Changelog for lwAFTR v2018.04.01
  • 99ffe31: Fix removal of v2018.01.2.1 header
  • bb63b39: Fix missing closing backtick
  • 54a5402: Flip sense of conditional-skip of IPsec end-to-end test
  • f03ba1b: Test on presence of SNABB_IPSEC_ENABLE_E2E_TEST, not value
  • 3f94ce5: Bash programming is known to the State of California to cause confusion

Diego Pino Garcia (23):

  • 459a936: Fix property-based test stall
  • ea5228c: Fix lwaftr selftest run
  • f57c75e: Rework alarms timestamping logic
  • 73caaaf: Add DNS-SD program
  • 3c9edf0: Show error if running on loop-back interface
  • 373b42b: Enable alarm notification
  • dca505c: Fix variable name
  • 191e655: Fix error message
  • 77f7abc: Fix path to transient README
  • cb68e08: Check status code in monitor test
  • 9e2f5da: Temporarily disable ipsec selftest
  • b4629a7: Snabb lwAFTR v2018.01.2.1
  • 1ad64e4: Changelog 2018.01.2.1
  • 8010951: XPath formater fixes
  • c55b21b: Fix tests
  • 25c8ad6: Implement alarm shelving
  • 7f6791d: Add failsafe parameter to common.parse_args
  • 76d0a89: Refactor argument parsing
  • 419c943: Fix error message
  • 5cd8b1b: Update README
  • aa31d24: Implement table_is_empty
  • d35cdd5: Rename 'failsafe' to 'allow_extra_args'
  • 2e8a5f9: Fix undefined variable

Jessica Tallon (6):

  • 468e72c: Fix small mistake in arp documentation.
  • d9ac366: Fix find-limit by checking actual throughput rather than requested.
  • 6e07332: Extend find-limit to support multiple NICs.
  • aa435ba: Support the old argument format and fix nits
  • d10a840: Remove unused fatal function
  • bcda559: Fix a few more minor nits :)

Luke Gorrie (2):

  • e9ee18a: README.md: Add link to Slack auto-invite page
  • 72b9b3c: .version: bump to 2018.04

Marcel Wiget (11):

  • 7d44865: [wip] use socker server mode
  • 7fce594: undo previous wip
  • c81176e: build snabb docker container
  • 3337ae8: make clean before build to avoid using binaries built outside of docker
  • dff8877: adding container build and run instructions
  • ba390ec: src/snabb wrapper when building container snabb
  • 3a4015c: document snabb wrapper script
  • b9ae0d7: adjust if statement to work in dash too
  • a095968: merging launch-docker-container.sh with dock.sh
  • d806fe0: use separate docker run commands
  • b7f6ab2: run container privileged and build src

Max Rottenkolber (4):

  • 2468f7c: intel_app: run selftest even though its not the default driver anymore
  • 35539ec: Correct/extend doc/snabblab.md
  • 58883b1: snabb top: minor formatting fixes
  • 664f378: intel_app: fix skipped message with regard to 2468f7c

Snabb 2018.01.2 “Daikon” (update 2)

06 Mar 10:54
Compare
Choose a tag to compare

This is another bugfix release that amends Daikon with #1294, which works around some unreliable CI tests.

Snabb 2018.01.1 “Daikon” (update)

13 Feb 16:54
Compare
Choose a tag to compare

This is a bugfix release for Daikon that fixes numerous CI failures introduced by it. It includes: #1280 #1277 #1273 #1283

Contributors

Andy Wingo (1):

  • 0c295ba: Fix "snabb lwaftr run" after lib.scheduling refactor

Diego Pino Garcia (2):

  • 5121fe8: Fix property-based test stall
  • 3b78121: Fix lwaftr selftest run

Max Rottenkolber (3):

  • 636bb65: apps.ipv4.reassemble: fix a copy paste error at end of selftest
  • af47642: apps.ipv6.reassemble: same for ipv6
  • f4b9e86: doc/branches.md: take over fixes maintainership from lukego

Michael G (4):

  • ddd90d2: Naive i350 fixes
  • 818c8b7: queue_registers, not registers
  • 68f0cd5: Fixed bits() on RO register
  • 19b5620: Detect PCI -> port mapping

Snabb 2018.01 “Daikon”

02 Feb 09:15
Compare
Choose a tag to compare

This release includes a new fleshed out version of Igalia’s YANG based
configuration subsystem—now known as lib.ptree, for “process tree”, as well as
Alexander Gall’s l2vpn, a virtual multi-port Ethernet switch on top of a plain
IPv6. Additionally, lib.ipsec now support ESP in tunnel mode. As usual, Daikon
also includes assorted bug fixes.

Major Changes

  • #1257 Reworked multi-process reconfigurable network functions
  • #1261 Upstreamed Alexander Gall’s l2vpn
  • #1266 lib.ipsec: add support for ESP in tunnel mode

Minor Changes

  • #1220 lib.ipsec: added IPsec ESP interoperability test with Linux
  • #1259 core.link: free packets during link.free
  • #1260 snabb top: fixed a bug; should have improved performance

Contributors

Alexander Gall (64):

  • a4acb5f: Add a Snabb program to construct a complete L2VPN endpoint
  • cd89bed: Fix identification of proper p2p VPN
  • c4cc025: Add documentation
  • a9d1ca8: Untabify apps/intel/intel1g.lua
  • 2ebacf2: Fix regression introduced by 11a19ce
  • b06fbb6: Amend the list of devices supported by the Intel i210 driver
  • f2f400a: Add configurable MTU to intel1g.lua
  • cf6e415: Add SNMP support to intel1g.lua
  • 8777c5f: Fix bridge post_config() call
  • 3a3f81e: Use /tmp to store test data in pseudowire selftest
  • b68519d: Fix ifSpeed in intel10g and intel1g
  • 5886ebc: Use logger:can_log() in l2vpn tunnel modules
  • 57848e7: Improve performance of the VLAN multiplexer
  • 53e930b: Set ifAlias, ifDescr in intel drivers
  • 0f5f76e: Add oversized packets counter to ifInDiscards for intel10g
  • 244b0a2: Add app for static ND
  • 32b8767: Add VLAN support to the l2vpn program
  • a6032d6: Remove MAC addresses from pseudowire app
  • aac33d4: Allow per-PW control-channel disable override
  • 1a55b0e: Add missing image files
  • c38a501: Fix bug in l2vpn
  • 93f94f8: Remove SNMP code from Intel drivers
  • e5f14ce: Extract physical MAC address in intel10g
  • 47eaceb: Make ND apps reconfigurable
  • 771f7a4: Fixes for new packet API
  • d7e9c39: Fixes/enhancements for iftable_mib.lua
  • 31d6911: Streamline SNMP config in l2vpn
  • 7e9fba1: De-couple SNMP setup from ND reconfig
  • fed01a8: Add SIOCGIF{FLAGS,MTU,HWADDR} ioctls to ljsyscall
  • f71c64f: Augment stats counters for apps.tap.tap
  • d59c806: Properly count the number of pseudowires
  • 134b4ce: Disable interrupts in intel10g
  • f920867: Make waiting for link-up optional in intel{1,10}g
  • 5e7f8dc: nd_light: add option to reduce verbosity
  • 9365ce3: Fix program/l2vpn/pseudowire selftest
  • c821bf2: Fix l2vpn pseudowire for new packet semantics
  • 47fa2ce: Fix tap after merge
  • e912fa3: intel1g: replace lib.timer by lib.throttle
  • b3c1b6b: nd_light: add "quiet" option to config template
  • 7e4f8d3: inetl_app: add "wait_for_link" option to config template
  • 4fdd530: l2vpn: switch to intel_mp drivers
  • 916f6c8: l2vpn: add extra_config to driver configuration
  • 2833f21: l2vpn/README.md: Fix indention
  • e498067: l2vpn: document new extra_config driver configuration item
  • c9bbb85: l2vpn: use intel_mp in README throughout
  • 5f763e1: Remove intel1g driver
  • 22d5ebb: Revert intel_app, inetl10g to upstream/master
  • 4400bbf: intel_mp: move shm initialization to constructor
  • 3b0c82f: iftable_mib: streamline processing
  • 9bec79f: Tap: add support for MTU, operational status
  • 47aee50: l2vpn: access interface counters via read-only shm frames
  • f094f74: apps.vlan: use config parser, update README
  • b61c4b0: nd_light: add optional option local_mac
  • dd0a91c: nd_light: fix bug in NS validation
  • a9c0ddf: program.l2vpn.l2vpn: only use nd_light
  • 23ffbb5: l2vpn: support dynamic reconfiguration
  • 50ba67d: core.app: fix bug in reconfiguration
  • da5346b: l2vpn: add port-mirroring option
  • d5960dc: apps.vlan.vlan: remove assert in VlanMux link()
  • a886ed3: apps.ipv6: document quiet option of nd_light
  • 54b99f8: l2vpn: re-write of app network construction
  • 8c5ea03: l2vpn: fix bug in app links generation
  • 96026fd: Fix bug in p2p optimization
  • 821fd8d: Add -jopt option to l2vpn program to set JIT options

Andy Wingo (215):

  • dd73f5a: Fix structural typing of YANG data
  • 34a0dc4: Worker processes have useful process name
  • 950d2b2: lwaftr: main process should not run at 100% CPU
  • 1163af7: yang: Mark list keys as mandatory after expansion
  • 354a18c: Better support for identity in YANG schemas
  • 4e9b818: yang: Attach default prefix to identityref type nodes.
  • 09e7267: Enable YANG data range and length validation
  • 71345f3: Fix schema test for range representation change
  • 0439614: Remove unused code
  • b231028: Adapt property-based test generation for range change.
  • 4f6de01: Leader should poll follower for its channel. (#866)
  • 8291a3a: Remove Ethernet-specific code from lwAFTR app
  • c0abcf0: Move NDP app to ndp.lua
  • 22af99d: Inline helper function only used by NDP app
  • df58830: NDP assigns random MAC addr if needed, stamps MAC on outgoing packets
  • 7d71c27: Localize more functions in ndp.lua
  • fbbc1f7: Fix bugs in migrated NDP app, add test
  • d300df6: Use more structs in NDP implementation
  • 3d9ad9a: Convert advertisement part of NDP app to FFI style
  • ae714b6: Finish refactoring NDP to FFI style
  • 5931f63: Finish cleanup of NDP app
  • 581589e: Fix NDP nits.
  • a6cc106: Fix errors constructing NDP packets
  • 0995226: Remove backpressure from IPv4 ping responder
  • 3930a04: Reindent lib.yang.state
  • 3d26a46: More robust lib.yang.state find_counters routine
  • 6fe8424: YANG schema inherit-config phase gives all nodes config property
  • 9da160e: Separate YANG grammars for config and state data
  • 42d4e34: Fix grammar generation
  • 45ab10c: Unify lwAFTR and other state query around YANG
  • 49c7c81: Lwcounter module uses YANG to know available counters
  • 259ffdb: Attempt to fix snabbvmx check
  • 4f1fc20: README reformatting to trigger CI
  • 40d4373: Fix snabbvmx some more
  • 37268cc: Revert change to snabbvmx lwaftr
  • d66184a: Add YANG docs to documentation build.
  • 6c9af14: Fix YANG doc link.
  • b00485e: Snabb lwAFTR version is Snabb version
  • d75381a: Fix bugs in generate-binding-table.
  • a3557d9: Release Snabb lwAFTR 2017.07.01
  • d8fd1c0: Fix typo.
  • 745b5b2: More robust name-to-PID mapping in query test
  • 08d30f7: Work around race condition in query tests
  • 7fd3622: Beginning of separating out IPv4 reassembly app
  • cd90b37: Remove unused vlan capability from fragmentation tests
  • 64bfbb5: Further work to separate IPv4 reassembly from lwAFTR
  • d01a489: Style cleanups in reassembly tests
  • d999ef0: Tighten packet generation for reassembly tests
  • c294c2c: Use fragmenting app, not library, when testing reassembly app
  • dbd18ad: Simplify reassembly test
  • 03e9e6a: Inline reassembly test into reassemble.lua
  • d719cfa: Clean up reassembly header
  • f2bad7a: Rewrite reassembly tests to be exhaustive
  • 839e9ea: Remove global state in reassembler
  • 62203fa: Beginning of moving reassembly to FFI style
  • 0b6a8d4: Finish moving reassembly to FFI style
  • 896c5ae: CTable random eviction wrapper uses ctable API
  • 1cbc626: ctable add method returns pointer to entry, not index
  • 01efd22: Inline reassembly handling
  • fa75b19: Inline more reassembly helpers
  • 781dd8a: Minor reassembly cleanups
  • 5a95294: Reassembler embeds struct packet
  • 5b04a44: More small reassembly cleanups
  • c7b8b69: Tighten up validation of reassembly input packets
  • 232fe4c: Reassemble app uses SHM frame to open counters
  • 4fe94b7: Rename reassembler config params
  • e90371e: Add IPv4 reassembler documentation
  • 90b9c54: ctable:add() should return a pointer, not a reference
  • 597f744: IPv4 reassembly: Periodically update counters
  • 366d3b8: Fix IPv4 reassembly bugs
  • 707c1e7: Adapt counters to new IPv4 reassembly table size
  • 087d3b8: IPv4 reassembly passes through non-IPv4 packets
  • 673d48c: Update README
  • 260fc85: Update reassembly counter expectations
  • a1781e7: Begin extracting IPv6 reassembler out of lwaftr
  • 033ccb8: Add IPv6 reassembly tests
  • ca370fd: IPv6 reassembler: finish converting to FFI style
  • 48485f3: IPv6 reassembler passes through non-IPv6 traffic
  • 15e7ec8: lwcounter avoids creating counters for IPv6 reassembly
  • b80b7c9: Update IPv6 reassembly counter memory use expectations
  • 05ad9d6: Begin extracting IPv4 fragmenter from lwAFTR
  • 1483c6d: Add exhaustive IPv4 fragmentation tests
  • 6a53389: Add fragmentation comment
  • 97cd285: Fix IPv4 reassembly when last fragment is full MTU
  • e6c3bc2: Start to convert IPv4 fragmenter to FFI style
  • f077775: Inline fragmentation code into app
  • f7b87d8: IPv4 fragments and transmits directly
  • d54d4ed: Only test valid MTUs for IPv6 reassembly
  • a11da97: Port IPv6 fragmenter to new style.
  • b3a873f: Fix nondeterminacy in "snabb lwaftr check"
  • 045ff0c: Fix previous patch
  • 136fdc6: Move fragmentation-disabled drop counters back to lwAFTR
  • 8673288: Fix unintentional hairpinning in lwaftr config_test.
  • 520d5db: Convert lwAFTR to "shm frame" mechanism
  • 107c999: Fix whitespace issue
  • 44515e7: Extract ICMP echo responders from lwAFTR
  • da223f5: Inline some ICMP helpers into their use modules
  • 5de181e: Minor ICMPv4 echo responder refactors
  • 4b484e6: Port ICMPv4 echo responder over to FFI style
  • 0729fce: Rewrite ICMPv6 echo responder into FFI style.
  • 7e64823: Add documentation for ICMP echo responders
  • 5522091: Remove "snabb lwaftr run-nohw"
  • 2f2a912: Remove run-nohw test.
  • bab1b8a: Remove apps.lwaftr.conf
  • d9988f6: Remove unused apps.lwaftr.dump
  • 0c6862b: Remove unused apps.lwaftr.generator
  • 5fa5807: Fix "snabb snabbvmx lwaftr"
  • 9223f80: Fix ...
Read more

Snabb 2017.11 “Endive”

12 Dec 15:10
Compare
Choose a tag to compare

This release introduces a driver-agnostic interface to network interface cards
(NIC), and switches over to the new intel_mp driver as the default choice. In
addition, some efforts of making LuaJIT’s compiler more predictable have been
back-ported from RaptorJIT to Snabb. Endive also includes various bug fixes as
usual.

Major Changes

  • #1229 Implemented VMDq, VLAN insert/remove for intel_mp driver
  • #1199 #1234 #1236 #1248 Implemented driver-agnostic I/O interface
  • #1237 Prefer intel_mp as the default driver
  • #1242 Introduced jit.tracebarrier() primitive, to delimit JIT compiler
    traces
  • #1244 luajit: Record calls to blacklisted functions the same way as calls to
    uncompiled functions (this fixes a pathological case where a blacklisting
    could cause cascading failures of the JIT compiler)

Minor Changes

  • #1225 lib.hash.siphash: avoid ctype diversity for hash functions
  • #1230 #1247 #1190 Various intel_mp improvements
  • #1228 Fixed a bug in the wrapper of get_mempolicy(2) in ljsyscall
  • #1245 In case of a segmentation fault, we now log various interesting details
    about the faulting address before exiting
  • #1235 #1240 #1254 Minor bug fixes and enhancements

Contributors

Alexander Gall (2):

  • 35cb3ad: intel_mp: move shm initialization to constructor
  • fb46309: siphash: avoid ctype diversity for hash functions

Andy Wingo (24):

  • be89a9d: intel_mp app relies on lib.parse to supply default values
  • 824af9f: Rename "ndescriptors" intel_mp config arg to "ring_buffer_size"
  • 2b551c1: Old intel10g driver supports ring_buffer_size initarg
  • 16a16fb: Fix intel1g snabbmark for intel_mp link names
  • 125c0f8: Add "rx" and "tx" elements to PCI device info
  • 770b536: Update virtual_ether_mux to take NIC link names from PCI info
  • aabbaed: Update SnabbVMX lwAFTR setup to take link names from PCI driver
  • 2f4ca31: Unconditionally enable VMDq for lwAFTR packetblaster
  • 8037e47: Update packetblaster lwaftr to take NIC link names from PCI driver
  • a9f39db: Unconditionally turn on VMDq for LISPer
  • 9a4c329: Allow LISPer to use any PCI device that has a Snabb driver
  • 3f5d3ef: Make snabbnfv traffic resilient regarding NIC link names
  • 38b1ef6: Update comment in Snabb NFV's "fuzz" command
  • 3260ca9: Update comment in virtio/net_device.lua to point to intel_mp
  • 2ec03c0: Standardize on "app:rxdrop()" instead of "app:ingress_packet_drops()"
  • c1f3a41: Remove "snabb lwaftr transient"
  • 2745c61: Add CSVStatsTimer compatibility hack
  • 86f912e: Unconditionally turn on VMDq for the lwAFTR
  • dae0c48: Fix SnabbVMX setup for driver independence
  • 34a8156: Switch PCI driver to intel_mp
  • 60336e3: Port firehose program over to intel_mp
  • b9d1d5d: Attempt to fix apps/intel_mp/test_1g_sw_sem.snabb
  • 63295d7: Fix adaptation of "snabb snabbnfv traffic" to be driver-agnostic
  • 617e157: Early error on incompatible vlan/macaddr/vmdq settings in virtual ether mux

Asumu Takikawa (87):

  • efbb5e7: First attempt at VMDq for intel_mp
  • 60474bc: Fix up VMDq mode so that it actually runs
  • 19edfb1: First attempt at tests for VMDq mode
  • 70bd72d: Try testing different MAC addrs with VMDq
  • 284ba9f: Fix MAC address registration in VMDq mode
  • 70968dd: Add comment explaining some RSS code
  • 32857a2: Enable RSS queues via PSRTYPE properly for VMDq
  • aca0bf3: Use :bits to set the VMDq RSS mode properly
  • cc02601: Remove RSS bit check for setting RETA
  • 12a55f0: Fix RTTPCS bit set that had a wrong length arg
  • 162eac0: Adjust test to test that both vmdq pools get pkts
  • 97e3634: Move MAC pool enable code and make it cross-NIC
  • 09c3bc6: Adjust the VMDq initialization assertions
  • 6240e9a: Error when the max number of MAC addresses is reached
  • cf044c7: Add code for enabling VLAN filtering/tagging
  • e314237: Refactor vmdq test script
  • 88c0810: Enable VLAN takedown code for VMDq
  • c3b58d0: Refactor intel_mp recv test scripts to reduce duplication
  • 6991cce: Enable VLAN tag stripping in VMDq mode
  • 432e35a: Adjust VLAN test to also test tag insertion
  • ec0c436: VMDq settings for transmit queues
  • c303d30: Add a test for VLAN tag insertion & VMDq tx
  • 45a7494: Set registers needed to make Tx test work
  • e8a1c36: Fix assertion for Rx queue num to allow nil
  • e1766fb: Adjust intel_mp to error with VMDq on non-82599
  • 8e07ff3: Remove unnecessary helper function
  • 67420dd: Fix permissions on two intel_mp tests
  • e6f2b05: Fix 1q vmdq test and testrecv.lua
  • 5dc4dcd: Adjust VLAN test to avoid testing tag insertion
  • 590e2ca: Add waits to avoid race conditions in vmdq tests
  • c0558d6: Add documentation for new vmdq-related parameters
  • f83c609: Refactor vmdq-related assertions
  • f31b29a: Adjust VMDq test for 82599 to be more robust
  • 871494e: Add VMDq consistency check for intel_mp apps
  • 31229a6: Allow mirroring in VMDq mode
  • 59deb35: Avoid use of bits function in hot code
  • 2d288c1: Avoid pairs in more places in intel_mp
  • 656ce13: Fix mistake in commit d1b0a87
  • f2e8e30: Sort keys in debug prinouts for easier reading
  • 5de384a: Fix offsets for QBTC/QPTC registers
  • ddf0a24: Add rxcounter support in intel_mp
  • 37b7c2b: Add txcounter support in intel_mp
  • 142896d: Port Tx rate limit and priority code to intel_mp
  • 1cf3239: Fix silly typo in method call
  • 071290a: Add code from intel10g for discarding unsent pkts
  • 87e0d45: Fix some buggy app teardown code in intel_mp
  • d276077: Fix teardown test for this branch
  • a236d29: Rename limit field to rate_limit
  • ce2e400: Fix another typo in VLAN code
  • f13aa50: Make rx queue numbers relative to the pool number
  • 475cc80: Disable MTU check that intel10g disables
  • 24ced23: Make txq number relative to the pool number too
  • 20bc39c: Adjust the max Rx/Tx queue numbers in VMDq mode
  • 0c23646: Fix VLAN tag setting after a NIC app is restarted
  • eaab2ef: Shuffle code and refactor check_vmdq method
  • 98cecb6: Automatically select available pools in VMDq mode
  • 6ea7eeb: Add a test where VMDq pools are auto selected
  • 15e4865: Revise intel_mp poolnum docs
  • 9007754: Add a fine-grained test for intel_mp auto pools
  • ddf3e26: Fix pool lock cleanup for intel_mp
  • 5596eab: Minor fixes in intel_mp vmdq code
  • e9b8153: Move comment to avoid conflict with newline
  • 19e6434: Rename some test files .sh -> .snabb
  • c00adf8: Minor improvements to pool selection code
  • ee0ce1d: Protect against race conditions in VMDq config
  • 9f3074d: Add test ensuring MAC/VLAN indices are set right
  • b0b0daa: Adjust sleep time and add wait to intel_mp test
  • 76b3c34: Fix fd cleanup in intel_mp
  • 702d01b: Use conf defaults explicitly for consistency
  • 4f27b28: Add option to disable rxq/txq in intel_mp
  • b9a04a0: Explicitly disable rxq/txq for intel_mp test
  • ac2e60c: Update intel_mp README with diagram & methods
  • 790786f: Update intel_mp README with all ported config options
  • aa81c54: Fix documented max pools/queues in intel_mp README
  • f2c673f: Add a reconfig method to intel_mp
  • 5ed8e4f: Clear ETQF/ETQS registers on init
  • c91f004: Fix RXPBSIZE initialization
  • 6823705: Set packet buffer size to max (16KB) via SRRCTL
  • ee98e2f: Only sync stats in push if rxq is disabled
  • ecb74d3: Cache functions imported from link module
  • f858e48: Enable VM TX loopback in VMDq mode
  • 033f657: Revert "Add a reconfig method to intel_mp"
  • 9c7763c: Add comments and delete commented code in intel_mp
  • 67e1776: Adjust ctable selftest to avoid assertion failure
  • 8c36d0b: Allow snabbwall to use any NIC that has a Snabb driver
  • a0591b4: Make lwaftr loadtest work with any PCI device
  • f21e800: Port packetblaster over to intel_mp

Diego Pino Garcia (3):

  • 245e0f0: Set mask.size equals to MAX_NUMNODES if lower
  • a2fd55f: Rewrite get_maxnumnodes function to not depend on a fixed filesize
  • 776601a: Rework readfile function and add comment on how to calculate maxnumnodes

Fabian Bonk (1):

Luke Gorrie (6):

  • c2da4ae: Add jit.tracebarrier() primitive
  • bfc8612: core.engine: jit.tracebarrier() before each app callback
  • e8c0808: core.engine: jit.tracebarrier() after each app callback too
  • 1862084: lj_record.c: Record IFUNC/IFUNCV the same as FUNC/FUNCV
  • 0cc1ad9: .version: bump to 2017.11
  • 50ced99: engine: Remove jit.barrier() calls around apps (too expensive)

Max Rottenkolber (2):

  • e2ef66a: core/memory: log segfault address to stderr for unhandled SIGSEGV
  • 7c98e06: core/memory: also log instruction and stack pointers as well as si_errno

Nicola 'tekNico' Larosa (19):

  • 6b321ac: Make intel_mp tests run even when either 1G or 10G cards are not present
  • a13a385: Disable VMDq check if not in VMDq mode
  • 34d2612: Add default for number of pools
  • a9d7c31: Remove redundant poolnum check
  • 07baa18: Remove another redundant check on poolnum
  • 4138072: Replace intel1g with intel_mp in comments and strings
  • 9615f89: Remove tabs from testrecv.lua
  • 7217501: Remove redundant checks for link in push and pull methods
  • 50fcf69: Fix txdesc bug in intel_mp driver
  • ae707ce: Allow 64 pools instead of 32, and 2 queues per pool instead of 4
  • 0574ad6: Undo wrong change
  • 5a6177f: Fix intel_mp test
  • fd6e310: Remove duplicate require line
  • 31e625e: Add the poll-follower-for-channel fix
  • a58fa28: Typo fix to make CI run again
  • 299a5a8: Add config defaults for txq and rxq
  • d936934: Add default for number of pools (revised)
  • 9c0547d: Make IPFIX use generic pci.device_info to load drivers
  • c8df78d: Allow lwAFTR to use any Snabb-supported PCI device

krawthekrow (1):

  • e45ba27: include ipv4/ipv6 in gre inner protocol list

Snabb 2017.09 “Dasheen”

10 Nov 10:59
Compare
Choose a tag to compare

This release merges recent changes to SnabbWall, a layer-7 network flow
detector and firewall application built using Snabb. It also includes various
minor bug fixes and documentation updates.

Changes

Contributors

Andy Wingo (1):

  • 199c0ce: Allow LPM self-tests to complete even if no CPU affinity

Asumu Takikawa (2):

  • 7eaf4aa: Refactor snabbwall test script, remove temp files
  • f5cb8be: Change upstream branch of snabbwall to wingo-next

Ben Agricola (1):

  • 0508572: Fix Unix socket EOF handling

Diego Pino Garcia (7):

  • 0ad67c7: Add Apache License header
  • 7521960: Rename variables
  • 4aa32da: Explain filtering rules
  • e56e9f8: List 'filter' program in wall help
  • cef61c2: Show up filtering examples in 'filter' help
  • 1140397: Require root permission
  • 2198cea: Add Snabbwall copyright notice

Luke Gorrie (1):

  • 6cb8f46: .version: bump to 2017.09

ikdc (1):

  • 0afaa40: Correct name of Intel 82599 app in docs