Releases: snabbco/snabb
Snabb 2017.08 “Endive”
This release adds a library of LPM routines for IPv4 addresses. Endive also includes many various improvements and fixes, including direct access to CPU PMU hardware, MTU support for apps.tap, improved performance for apps.vlan, and extended configuration options for apps.ipv6.nd_light.
Changes
- #1136 lib.lpm: Longest Prefix Match library for IPv4 addresses
- #1170 lib.pmu: Enable RDPMC via /sys/devices/cpu/rdpmc
- #1178 lib.protocol.header: Return nil instead of asserting when a header is too big to overlay
- #1189 apps.tap: support MTU, augment stats
- #1191 apps.vlan: improve performance, configurable encapsulation
- #1193 apps.ipv6.nd_light: added two new configuration options (remote_mac, quit)
- #1208 Fixes a bug in the IPFIX app's netflow v9 mode
- #1174 #1176 #1179 #1142 Minor bug fixes and improvements
Contributors
Alexander Gall (8):
- 20d5958: Tap: support MTU, augment stats
- d26fd86: Fixes/enhancements for iftable_mib.lua
- ee18964: iftable_mib: streamline processing
- c6befb8: nd_light: make app reconfigurable
- acc3260: nd_light: add option to reduce verbosity
- a12ac85: nd_light: add optional option local_mac
- ccbe810: nd_light: fix bug in NS validation
- da4f98b: apps.vlan: improve performance, configurable encapsulation
Andy Wingo (46):
- f601fcf: intel_mp: Poll more frequently for linkup
- bf9baa2: Re-introduce 82599 reset into linkup wait loop.
- d60b166: Use default hash in IPFIX cache
- 9c01453: Minor comment fix in ipfix exporter
- ce65fd9: Split IPv4 and IPv6 collector data paths
- e6b1d36: Small IPFIX elements parsing cleanup
- 47a6188: IPFIX: Refactor template computation
- 87945ec: Add anonymous counters and links
- 10d7c6f: IPFIX exporter logic now independent of record types
- 331840c: Rename flow key/value to match standard IEs
- a7d3db1: Join IPFIX apps together
- fb959e7: Use generated types in ipfix cache
- 4aa22c5: Better mocking for ipfix test
- 318bac7: Join IPFIX meter and exporter apps
- 4608a95: Implicitly create cache, and expire records directly
- 4b9874d: IPFIX app has single input again
- 1daf62d: Separate IPFIX templates into separate file
- a17a0e9: Fix IPFIX leak
- 2a9efb6: Revert anonymous links
- 03d4075: Pare down info collected by default IPFIX flow sets
- 26da117: Try different expiry mechanism
- ba10cc3: Remove unused variable
- 0115e5d: Configurable template refresh interval
- 2887322: Remove IPFIX utils module
- 72bddd8: Clean up IPFIX file header
- 56914f9: Clean up FlowSet initialization.
- c5a9f3e: Add comments; use float seconds more generally.
- 734501a: More IPFIX cleanup
- 6ac2bf2: Make set of templates configurable
- 16830a3: Add README.md
- 1d2d633: Initial import of lwAFTR IPv4 apps to apps/ipv4
- ed64366: Inline needed bits of ipv4_apps into arp.lua
- 93e1f2d: Add ARP test
- d426e2f: Break ARP app off from lwaftr
- e8e2f30: Switch lwAFTR over to new ARP app
- 5d57a65: ARP can assign itself a local MAC address; stamps outgoing traffic
- e2f5f31: Add ARP README.md
- 3c57080: Add ARP documentation to the doc build
- 41c49f2: Fix nits
- 8880f5e: Remove unwanted tabs
- adbd63c: Integrate ARP into IPFIX
- b949911: Remove Ethernet details from IPFIX app
- 9155b53: Simplify "probe" interface to rely on ARP
- e31bace: Add missing imports
- 6e5a979: Add documentation for ipfix probe
- e7bf90e: Fix nits
Asumu Takikawa (70):
- b5bfcec: Initial draft of netflow app
- b6759d3: Add a selftest, support transport ports properly
- b07d1f0: Start to implement V9/IPFIX communication code
- a304284: Can now export flow records at a very basic level
- b35fb6b: Fix uptime calculation for v9 packets
- e30dc7d: Fix IP checksum computation for exports
- f2f3421: Make the exporter slightly more configurable
- d2eed9a: Rename apps/program to avoid netflow confusion
- 4d9965e: Account for MTU in constructing record packets
- 2953d56: Make sure to free ignored packets
- 415b353: Make selftest pass again
- 5952427: Rewrite timer-based code in flow_export
- 6e4e411: Print a message when selftest succeeds
- 787fc48: Add a sanity check for flow exporter's ctable
- 41e023a: Improve selftest with random packet processing
- d2c82eb: Improve selftest by checking number of flows
- 33f293e: Fix variables that should have been renamed
- 4da54b2: Fix flow timestamp code to use the right clock
- 332c9ee: Enable idle flow timeout now that it works
- 1b77271: Reformat FFI cdefs for flow key/record
- 1008f5b: Restructure flow data structures for efficiency
- ca47cb6: Add an IPv6 test and fix address fields in key
- 11543f2: Modify IPFIX code to use IANA assignment CSV
- b6171d6: Fix uptime computation that got out of sync
- 3374a65: Add debug printing for flow expiration
- 4320295: Fix silly boolean/number confusion in ipfix.lua
- abe9d9e: Fix typo in ipfix.lua
- a1f866a: Improve debug printouts, set it via environment
- acdb106: Swap idle and active timeouts
- 8f890ae: Improve debug messages with datestamp, abstract it
- 735493b: Fix active timeout calculation
- 80026f4: Fix padding bytes and do a minor refactoring
- 833d141: Progress towards a robust
snabb flow_export run
- 6481093: Make flow timeouts configurable via program flags
- 8091ffe: Refactor IPFIX code to use a class & methods
- 3175097: Adjust flow export code to allow IPFIX v10 messages
- b0acf2c: Refactor write_header arguments in ipfix
- 6a9d1b2: Adjust default MTU to 512 octets per RFC7011
- 21f7e93: Adjust default template refresh per RFC5153
- 43d2b60: Packets should always be freed at the end
- d3d0062: Adjust selftest for recent config changes
- 37f879d: Use a consistent UDP src port per "session"
- 0d11dae: Fix record data order and do minor refactoring
- 0582024: Do a major refactoring of the flow exporter into two apps
- 3805894: Rename flow export app/program to ipfix
- 4467041: Add a selftest for apps.ipfix.export
- ef4e93f: Move record expiry function back into the meter
- 38b96ad: Expire records incrementally instead of on a timer
- e2243ce: Rewrite meter code to avoid using header libraries
- 62a550d: Improve 'snabb ipfix probe' for benchmarking
- a0ccddb: Avoid allocation of flow keys for old flows
- af63e7e: Fix bugs in the last commit, zero out the key
- 3ac87e2: Pre-allocate both keys and record variables
- 59d5017: Reduce number of timestamp computations
- bd89b4d: Save some space in the flow key representation
- 8271e42: Use a different hash function for performance
- 53e04f6: Use dynasm to speed up the hash function
- c760913: Use slightly nicer assembly for hash
- 9b89c94: Avoid indirection through wrapper methods in cache
- 79126df: Fix debug prints that broke from some optimization
- 60e1a0c: Add a basic benchmark script for the IPFIX app
- d8b4cb1: Fix pcap output for ipfix probe
- fc5f8eb: Fix typo in ipfix probe
- 2f5c77f: Fix app configuration in ipfix probe
- 5233987: Add tap IO option for ipfix probe
- 7ce48da: Don't read southbound packets until ARP resolved
- b824190: Add timeout options to ipfix probe docs
- 78bdcae: Add an ipfix test script that uses a collector
- 4c9c4b8: Improve ipfix collector test
- 17ac209: Fix typo in IPFIX v9 mode
Diego Pino Garcia (1):
- d718130: Remove src/core/version.lua from .gitignore
Luke Gorrie (5):
- d01f416: lib.pmu: Enable RDPMC via /sys/devices/cpu/rdpmc
- 5fc8a77: .version: Bump to 2017.08
- fabac14: virtual_ether_mux: Treat vlan=0 as vlan=nil
- 290c139: Revert "virtual_ether_mux: Treat vlan=0 as vlan=nil"
- ebd0aa9: apps.vlan: Allow vlan=0
Nicola 'tekNico' Larosa (4):
- 1f1da1b: Avoid the most repetitive output in tests
- e2aba33: Reintroduce deterministic seed report, but only when it is a new one
- 104502f: Remove broken attempt to filter output
- 3b86679: Relax the check on max_displacement in selftest
Pete Bristow (1):
- 52b6308: initial import of lib.lpm* longest prefix matching lookup routines for IPv4 addresses
ikdc (6):
- 13aa49a: Return nil instead of asserting when a header is too big to overlay.
- 06a42e6: free new header if size is too small
- 3b35912: document that new_from_mem can return nil
- 2e0d952: check that new_from_mem returns non-nil in header subclasses
- 20a1f19: assert TLV options
- 22fa8c8: assert miscellaneous uses of new_from_mem
Snabb 2017.07 “Dandelion”
This release adds an optimized implementation of SipHash (a fast cryptographic hash function) to Snabb. Dandelion also comes with many goodies such as a command line option to identify the exact version of Snabb executables, as well as improves stack traces for snsh, the interactive Snabb shell. As usual, this release also includes many minor bug fixes, and performance as well as usability improvements.
Changes
- #1146 Added snabb --version command-line argument
- #1151 core.shm now creates shared memory objects world-readable
- #1153 Avoid select() in apps.socket.unix to improve performance
- #1155 #1166 #1168 lib.ctable now uses SipHash
- #1159 Improved stack traces for errors in snsh scripts
- #1171 Fixed a bug in lib.randomseed where it failed to produce a random value when called without a seed
- #1124 #1161 #1163 #1164 Minor bug fixes and improvements
Contributors
Andy Wingo (39):
- 701bbc1: Add core.version module and --version command-line argument
- fdf662d: Take default version from ".version" file
- 6cf8633: Fix core.version generation for clean builds
- 34a94bd: Avoid rebuilding snabb when nothing changes
- cbb5331: Allow "snabbmark hash" to test different key sizes
- 97d40c9: Add siphash implementation
- 429a3b0: Allow customization of number of siphash rounds
- e50ad4c: Allow specialization of SipHash to fixed-size inputs
- 2f7983d: Add SipHash1,2 to snabbmark
- f1b7053: Refactor siphash implementation
- 1e3ea13: Add SSE and AVX2 parallelism to SipHash
- da86b3d: Fixups to make AVX2 work also
- e914c77: fix up generic assembler output, except for avx2
- fda842d: Use vzeroupper before leaving AVX2
- 0caaa4b: Add generic X86-64 backend to SipHash assembler
- 24fca9f: Remove hand-coded SipHash and simplify snabbmark
- d722f3c: Fix AVX2 result extraction.
- 18dbf26: siphash: Fall back to SSE if AVX2 unavailable
- 296073c: siphash: Take a table of options instead of many positional args
- bf60d21: siphash: Add a function that can hash an immediate
- 56c0b94: Switch ctable over to SipHash1,2
- 76cbc59: Integrate multi-hash with ctable lookup streamer
- d1ab616: Bump binary version for ctable hash change
- 44bf39b: Fix lwAFTR test to isolate changes between sub-tests
- 9fdcb99: Fix compilation error with GCC 7.1.0
- 2fc932b: siphash: Fix load permutation for avx2 u32/u16/u8 loads
- e9fd2f3: Reassembly tables use default hash function
- 566d17e: ctable: Automatically detect need for scalar hash
- 9fa3c24: ctable: Use random key for hash function
- c6a51cf: Add missing file
- 45a9b23: Update tarball version number to v2017.07
- 3cd665c: ctable: reseed hash function on resize
- 1316a73: ctable: Update documentation.
- 969b263: Add lib.random_bytes
- da58b3d: Fix failure message for lwaftr quickcheck
- a564721: Add new lib.randomseed API
- f05efe1: Static hash seeds when SNABB_RANDOM_SEED set
- 23dde76: Add lib.execv; propagate env vars to children
- 413a108: Fix case in which lib.randomseed didn't do its job
Diego Pino Garcia (3):
- 83e7efe: Replace AVX2 instruction for AVX equivalent code
- 1303bdc: Emit AVX2 or AVX instructions depending on architecture
- 1b29830: Revert "Emit AVX2 or AVX instructions depending on architecture"
Luke Gorrie (5):
- 08a3a60: src/Makefile: Add dependency on libluajit.a
- 9708bfc: core.shm: Make shm objects world-readable
- 9bc78f0: apps.socket.unix: Rewrote pull/push to avoid select()
- c6d3a07: README.md: Mention SNABB_SHM_ROOT and SNABB_SHM_KEEP
- 961fc43: core.shm: /var/run/snabb is owner writable, world readable
Max Rottenkolber (1):
- 1243b24: snabbmark esp: prevent GC from being invoked by making local vars local
ikdc (2):
Snabb 2017.06 “Carrot”
This release merges the multiprocess support developed and tested in the last months. Carrot also upstreams many new features of the lwAFTR application, including a general library to configure Snabb applications via YANG. As usual, this release also contains minor bug fixes and optimizations.
Major Changes
- #1021 Merged multiprocess support
- #1133 #1148 Upstreamed major lwAFTR updates, notably including
lib.yang
Minor Changes
Contributors
Andy Wingo (284):
- 05f94d7: Move binary_search.dasl to core
- 21d4e74: Move multi_copy.dasl to core
- 6608e9e: Whoops, binary_search to lib/, not core/
- 6cff17c: Whoops, multi_copy to lib/, not core/
- b5cc8c1: Add streaming lookup to CTable
- 9c4c31b: Build yang files into "snabb" binary
- 6da1cbd: Fix typo in yang.lua
- c192058: Yang parser selftest uses bundled yang files
- aed5d4e: New schema parser
- dc2d4f2: Uniformly use "body" for contained statements
- 017ee82: Add base IETF yang schemas
- edf611d: Add linking/partial evaluation phase to yang
- 54a4f9a: Remove example.yang
- 6c9fc4e: Add IETF softwire schema and test it
- 33808e4: Resolve prefixed imported extensions, identities, etc
- 2744a40: Lazily resolve typedefs and groupings
- 324d561: Remove data-related facilities from schema2.lua
- 6ce76cf: Add YANG data parser module
- 0ff7a43: Yang data parsing/grammar cleanups
- e95af47: Add yang README.md
- 36f4ab0: Simplify lib.yang.data interfaces
- 6bf082e: Rename lib.yang.schema2 to lib.yang.schema
- 70f3637: Internal yang refactor
- 0934afb: yang: Primitive types for ipv4 address etc
- 103b7f3: Fix failing lib.yang.parser test
- 8c8dc72: Arrange to parse ipv4-address etc as primitive types
- f803b89: Finish lib.yang README
- c04ab99: lib.yang.util.tointeger allows for negative int64 min values
- dfd16f7: Yang primitive value types record their ctypes
- caa3689: YANG data grammar separates keys, values for tables
- 2ece77a: Add binary compilation for YANG configuration data
- 68f6657: Implement compiled configuration loader
- 9b9eb69: Add choose-representations pass
- b863974: Rework representation-choosing
- 7ffbce7: Normalize configuration identifiers
- 580d8c7: ctable: hash_fn param is optional
- 6177659: Ctable supports load/save
- 96b605c: YANG configurations compiled as raw ctables
- afe6195: Fix nits in yang support
- 467e0a2: Support cltable, string-keyed tables
- 69ca0cf: Fix bugs in raw leaf-lists
- 2c0fab2: Update lib.yang.yang
- dd5905f: Add auto-compilation interface
- 93ca00c: Add support to serialize a YANG config as text
- df8dbf9: Move snabb-softwire.yang to lib/yang
- 391b766: Rename to snabb-softwire-v1.yang
- da57ac4: Hyphen-case rather than CamelCase in snabb-softwire-v1
- cac171c: snabb-softwire-v1: Whitespace/syntax tweaks
- 352a02f: snabb-softwire: indent and reflow
- 36c866f: snabb-softwire: Two spaces after period in descriptions
- 9ffe80d: snabb-softwire: typedefs closer to uses
- be63713: snabb-softwire: descriptions more declarative
- 9e4be09: snabb-softwire: Update binding table
- a6d6723: snabb-softwire: Reorg into "external" and "internal"
- a766299: Fix snabb-softwire-v1 syntax errors
- 90add3d: Fix lib.yang.data serialization selftest
- 387f99f: snabb-softwire: ICMP error limiting on both sides
- 9f57b65: snabb-softwire: Add reassembly limits
- cb1e4d7: snabb-softwire: Change softwire leaf members
- 5f77458: Add another YANG data representation test case
- f659341: lib.yang IPv4 representation is host-endian uint32
- 3c163de: Add first pass of snabb lwaftr migrate-configuration
- 23ff1d8: Fix syntax error in snabb-softwire-v1.yang
- 987c008: Migrate-configuration quiets binding table loading
- 2a54416: ctable: hash_fn param is optional
- ee29d11: Ctable supports load/save
- 6d93fed: lwaftr binding table uses ctable instead of podhashmap
- f907489: Bump binding table version
- 803f10e: Grouping has no type.
- 0439dab: Fix YANG cltable serialization
- cba8cee: Rename conf.load_lwaftr_config to load_legacy_lwaftr_config
- b10a65b: Migrate lwAFTR data plane to use YANG conf
- 79224b1: Fix snabbvmx, hopefully!
- 5aec3d9: Trim unused code.
- 2dedf6a: Conf passed to lwaftr app must be object
- 957a45a: Fix yang source parser bug for file streams
- 08b189d: Implement configuration parsing for all yang table types
- 2788071: Fix integer parsing bug in yang
- 0e31653: Fix serialization bug in yang code
- c6a0e85: Fix cltable binary loading in yang
- 68e325e: Binary configuration saving strips off .conf
- c82ee04: Implement yang-syntax string serialization
- 6f4c43e: Migrate "snabb lwaftr" to yang configurations
- fc4c711: Migrate snabbvmx lwaftr to new configuration
- 8019d7d: Fix ctable lookup_and_copy bug
- 31beaeb: Add hash and ctable subcommands to snabbmark
- bf4471a: Remove PodHashMap
- 1348857: Isolate old-style lwaftr configuration support
- f916dea: Fix default value bug in yang parser
- fd65810: snabb-softwire-v1 tweak
- b7a5774: Omit default values in yang serialization
- ce3ecc3: Move more legacy code to migrate-configuration
- 0a92b69: Remove old binding tables
- 3078cb7: More legacy lwaftr code migration
- 952c6a4: Fix snabb lwaftr bench
- 5c5f64a: Update lwaftr docs
- 3934d6d: More doc tweaks
- 008f5e5: Update changelog for next lwaftr release
- b6dbea2: Update README.configuration.md
- be77b4f: Fix data serialization bugs
- 8f0c34b: Prune example lwaftr configs
- 0581a97: Configuration refactor
- 6de0d32: Fix reconfiguration with reconfig method
- c04e8e1: Add apps.config.leader
- 7a1503e: Implement core state machine in config leader
- a2dd717: First implementation of snabb config get-config
- 4915d1f: YANG schema support for RPCs and notifications
- a32210a: Support RPC sequences in parser/printer
- 48bb8f2: snabb config get-config uses RPC mechanism
- 253bddf: Add RPC support module
- 4a52f30: RPC between "snabb config get-config" and leader app
- db25fd6: Config leader manages app graph
- 58cdaa8: Config leader claims $root/PID/config-leader-socket
- a968569: Add Hz parameter to config leader
- 5019508: snabb lwaftr bench uses config leader
- afc8f2a: Add support for decimal64
- dece919: Add support for lib.equal comparing int64
- 2b9d1b8: Add ad-hoc data serialization via yang modules
- 154c77f: reconfig_app action takes class arg
- 11ad5b9: Implement encoding for leader-follower protocol
- d39a368: Implement decoder side of leader-follower protocol
- 4d39f82: Implement channel for leader-follower messages
- f29a6a9: Implement follower; wire up leader-follower protocol
- cdc3881: Serialize {} instead of nil
- 16db816: lwaftr apps load counters themselves
- 902dd34: Binary serialization uses alignment of type, not value
- e81de39: Fix lstruct serialization
- df3cfd4: Fix lltable loading
- f8380e9: Improve ad hoc compilation for legacy IPv4 addresses
- 8866ee2: Avoid too much type generation in yang module
- 53c2e48: Follower flushes JIT after starting or reconfiguring apps
- 3f6644d: Make get-config work
- 2a06489: YANG parser adds location information to result
- d651693: Schema strips annotations earlier
- a43c4d5: Schema parsing moving away from mutation
- b81c495: Config leader checks path
- fbebbb9: Minor schema refactor
- ef677e0: Further schema parsing refactors.
- de24664: Schema parsing refactors redux.
- 423a032: No more annotation of parser source terms.
- 5916b09: Fix assert_with_loc bug.
- 1811923: Implement load-config command
- 80b4a35: Rename action_queue to action_codec
- b354d1a: Add apps.config documentation
- 9256bf8: Add "snabb config" README
- cbca5b9: Call link methods
- d7194ad: Always unlink endpoints when links go away
- b551d27: Fix perf hazard in restart_dead_apps
- c708b62: Simplification in compute_config_actions
- 4242854: Fix perf hazard in leader socket accept()
- 50f6441: Rename "snabb config load-config" to "snabb config load"
- c43e98f: Rename "snabb config get-config" to "snabb config get"
- 87c887c: Refactor "snabb config"
- 346ae47: Refactor "snabb config load"
- cf5733f: Further "snabb config" refactors
- c243730: More snabb config refactor
- 5f8ba0f: "snabb config" asks schema from leader if needed
- 830209d: Update program/config/README.md
- 8372c4b: Implement "snabb config set"
- 8d7eb80: Remove compile-binding-table, control lwaftr commands
- c4be666: Update generate-binding-table
- 5316c14: lwaftr supports run-time reconfiguration
- 20c3bb5: changelog updates
- ff09ecb: Changelog markdown syntax fix
- b148b4d: Syntax fix for README.configuration.md
- c0db108: Version 3.0.0
- 80e6eca: Allow ability to parse/print non-struct data
- ad0c2d2: Print to strings via string_output_file()
- c0eceb0: Prepare "snabb config get" for paths
- 3685310: Fix serialization in program.config.common
- 3a55f9f: Prepare "snabb config set" for paths
- 791f1a0: Add stub "snabb config add", "snabb config remove"
- 8bcf520: Rename xpath.lua to path.lua
- 42faa34: Localize handlers for path.lua:convert_path
- 5043daf: lib.yang.path test tweaks
- 8b3f9a3: Precompute path resolvers before running
- e6f4635: Wire up snabb config get with paths
- 68a7ab5: Rename parse_string to parse in lib.yang.parser
- 2d72f21: Add ability to print and parse bare arrays and tables
- 2691648: Address nits
- 3a67a93: Add normalize_path
- f3f6b8b: "snabb config set" of paths with leader app support
- b1301ae: "snabb config set" on table/array items
- 21d1f7d: Fix bug parsing bare arrays and tables
- 2eeade4: Prepare for add and remo...
Snabb 2017.04 “Dragon”
This release upstreams Snabbwall into the main Snabb repository. Dragon also brings upgrades of LuaJIT (see what’s changed), and pflua. Also noteworthy is a new development branch for supporting the aarch64 architecture.
Major Changes
Minor Changes
Contributors
Adrián Pérez de Castro (63):
- 8c6d135: Support IPv6 in the L7 packet scanner
- 35179e3: Fix ipv6_addr_cmp(), and add ipv4_addr_cmp()
- b1a89de: Fix review nits
- eed5544: Fix offset for extraction of IPv6 source/destination addresses
- cc8280c: Make lo_addr/hi_addr in flow keys arrays of bytes
- 0fa645a: Discard Ethernet header when scanning IPv6 headers
- c71aa04: Add comment for the ihl() function
- 3a2e73d: Add a selftest() function to apps.wall.scanner
- 0437b89: Remove unneeded assertions on flow key struct sizes
- e919482: Combine intermediate hash result while iterating over the input
- cf2da44: Do not clear the last bit of the calculated hash value
- a820522: Add a __tostring metamethod for protocol_bitmask values
- 6e0745a: Change log: Fix formatting.
- dec356a: Expose the nDPI version and use versioned ndpi.protocol_ids
- 782a6b6: Cater for differences between nDPI 1.7 and 1.8
- c977233: Import LuaRocks' .rockspec files
- 4a909ac: Release version 0.0.3
- 0ecaffa: SnabWall: Add end spy-pcaps test runner
- 92fed5c: SnabbWall: Import a bunch of test cases for "snabb wall spy"
- afad674: SnabbWall: Print out stats after running "snabb wall spy" tests
- 6dc9db6: Allow iterating over the active flows of a L7 scanner
- 4f2cf50: wall-spy: Report detected flows at the end of non-verbose runs
- 77a35df: wall-spy: Rename -v/--verbose flag to -l/--live
- a9eda11: wall-spy: Rename reporter to LiveReporter
- d4492d0: wall-spy: Document that the command works with TAP and Intel devices
- 52625ab: wall-spy: Support packet+byte count statistics
- 3ec3f1b: Do not pass "-v" to "snabb wall spy" when running tests
- 0aa160e: wall-spy: Use correct link name for the RawSocket source
- 1ae4a77: wall-spy: Properly calculate packets/s and bytes/s stats values
- 7ba3858: Do not leak packets in apps.wall.util.SouthAndNorth
- dfc8aa4: First pass at the SnabbWall application API reference documentation
- ff62edc: wall-spy: Only print master protocol when it is known
- 439437e: wall-spy: Convert port numbers to host endianness for flow reporting
- 715c739: Use snabb-wall when installed, to reuse Snabb's command resolution logic
- 193b490: Docs: Describe Scanner:extract_packet_info() and key objects
- 157bfdb: Relicense to Apache License 2.0
- 9c08985: Release version 0.1.0
- 831f0eb: Generate ndpi/protocol_ids.lua from nDPI headers
- 823c5ff: Generate ndpi/protocol_ids.lua from nDPI headers
- 339ce1a: nDPI binding using LuaJIT FFI
- 03681ce: nDPI FFI binding usage example using libpcap
- e79a5d0: Add README file
- 7573b0a: Add optional debugging output to examples/readpcap
- 71d8cdb: Properly identify TCP/UDP packets for port extraction
- 2f845cc: Do not hardcode input file for examples/readpcap
- 59a703c: Make examples/readpcap show flows in terse format
- 2ec05cb: README: Add brief example usage
- aab270d: Use "/usr/bin/env luajit" in script shebangs
- 6d1ae32: Remove usage of unexistant "base_type" variable
- eb2518d: Wrap the proper name of the protocol bitmask type
- bfd172d: Build the ljndpi FFI binding for nDPI into Snabb
- c11f6e2: Improve README by adding some notes on the API
- 91c84eb: Add small C-to-Lua examples in README
- e8acff3: Make README refer to the example program, simplify examples
- 6b0b927: README: Fix link to ntop documentation downloads
- 415e404: README: Add authorship info, reorder sections
- c5f7c11: README: Add paragraph welcoming fedback
- 21187f8: Release version 0.0.1
- 3e255be: Add skeleton for the "snabb wall" command
- 0751416: Do not call ffi.gc() with nil function on created values
- e5589f7: Release version 0.0.2
- 0c8e946: Remove manual lib/ljndpi import
- 5763476: Implement the L7Spy application and "wall spy" command
Alexandr Kostrikov (1):
- ecbc4a3: Mailing list is abandoned
Asumu Takikawa (56):
- da233f0: Merge commit '25289c5797b582a362ae22dad3e1089cc71a0837' into lib/pflua
- 16acf1e: Update Makefile to build dynasm files in pflua
- ef5de81: Read a "native" config option in pcap_filter
- d9c63f2: Extend pcap_filter selftest to test native mode
- 7769e0d: Fix references to intel1/10g apps in
wall spy
- 62672d2: First attempt at a l7fw app and filter program
- 40eeadf: Allow pfmatch actions for l7fw rules
- 7e6f8dd: Allow pfmatch rules to use the flow packet count
- 78ee8f0: Have to index handler table by name and count
- 393b8d2: Only recompile if the pfmatch uses $flow_count
- fc6149b: Modify pflua to support extra pfmatch arguments
- ddf1e14: Refactor spy program to allow code sharing
- 6ac8f23: Make snabb wall filter more complete
- 698a190: First implementation of reject l7fw policy
- bafad40: Send ICMP responses only if host ip/mac are set
- 3a738e6: Output a TCP RST for rejects for TCP traffic
- f74156b: Add README for
snabb wall filter
- f953f7e: Send rejection packets to a separate output port
- 38dad92: Add support for ICMPv6 responses in l7fw
- e731778: Enable passing IP & MAC to
snabb wall filter
- 675040a: Make
snabb config filter
take a rules argument - 30437d0: Add a test script for 'snabb wall filter'
- 00747e2: Fix incorrect ethernet type for IPv6
- 4d789d0: Fix incorrect payload calculation for ICMPv6
- a9c1496: Add unit tests for apps.wall.l7fw
- b0656f3: Add docs for L7Spy and L7Fw
- 0aac8a7: Adjust -e and -f flags and document both
- 102e45c: Add a report option to
snabb config filter
- aa408b8: Update test for new
snabb wall filter
report - 22e5709: Support logging packet actions to the system log
- e584403: Simplify handling of extra pflua filter arguments
- 0c8da90: Move assert statement earlier in the call graph
- fbcd59d: Lift some constants as definitions
- 3efcc82: Fix undefined variable in pf.savefile
- b5352a4: Fix typo in lib.protocol.tcp constructor
- 8152ad9: Backport pflua fixes from Igalia/pflua
- 168b1be: Assert that the rules file exists
- da90ff2: Explicitly require the bit library in l7fw
- 86e3207: Fix typo in L7Spy API docs
- b19056b: Add duration arguments for 'snabb wall` commands
- 33523c4: Fix "tx"/"rx" link names that were reversed
- a77446e: Fix PPS & B/s printouts for
snabb wall spy
- 15a90b8: Workaround for intermittent segfaults
- 90151e6: Move constants to separate module & localize
- 5680c60: Pre-allocate the flow key objects and rewrite
- f4e9e1a: Use dynasm to optimize ndpi binding functions
- aa03883: Add a --cpu option to 'snabb wall filter'
- 4d1bd21: Report bytes/packets/bps for 'snabb config filter'
- a45e44c: Add a benchmarking script for 'snabb wall filter'
- 0e21baf: Fix typo ("nddp" -> "ndpp")
- 42e2940: Adjust snabbwall test path to work on NixOS
- f2419ca: Change binary from "snabbwall" -> "snabb-wall"
- 0e4a2cb: Update .gitignore for ljndpi
- f4afc0f: Revert Makefile changes for upstreaming Snabbwall
- 65c77bc: Add an ok printout for l7fw & scanner selftests
- 0628e24: Add Snabbwall branch info to src/doc/branches.md
Jianbo Liu (1):
- ae0014d: Add development branch for ARM aarch64 platform
Luke Gorrie (3):
- 736cc36: Squashed 'lib/luajit/' changes from 2f6b296..d3e36e7
- 97b8b14: Makefile: Bump luajit version number to beta2
- 9cdf234: doc/branches.md: Add 'luajit' branch
leenaars (1):
- ae83a0d: Rename snabb to snabbwall
Snabb 2017.03 “Camu”
This release introduces a new driver for Intel i210 / i350 / 82599 chips that supports Receive-side Scaling, a new algorithm that decides how apps are scheduled by the engine, and a new hash table data type that allows efficient mapping from foreign keys to native Lua values. Furthermore, Camu splits the lib.timer
facility into two simpler utilities based on the observed use cases: timeouts and throttling. As always, this release contains many miscellaneous bug fixes and improvements.
Major Changes
- #897 #1086 New
intel_mp
driver with RSS support for Intel i210 / i350 / 82599 - #1066 #1102 #1108 engine: sort links topologically to determine app scheduling in breathe
- #1059 Add
lib.cltable
, a data type that associates foreign (FFI) keys with Lua values
Minor changes
- #1076 Replace
lib.timer
withlib.timeout
andlib.throttle
- #1077 core.main: swap process hierarchy to simplify implementation, the supervisor process is now a child of the main process
- #1079 Fix a bug in
lib.ipsec.esp
where the size of the authentication signature was incorrect - #1042 #1071 #1078 #1104 #1107 Minor fixes and enhancements
Contributors
Andy Wingo (12):
- 68b6498: Add data type mapping between FFI and Lua values
- 0e95eea: ctable: hash_fn param is optional
- 1a28ca7: Remove superfluous definition from ctable
- 9309f35: Fix cltable removal bug and add tests
- d64e70d: Add iteration test of cltable
- 60e15a0: Topologically sort app graph
- e852b85: Visit all nodes with pull functions in graph
- 5206a0a: Fix snabbvmx selftest
- 727a326: Remove app_array, link_array
- de24332: Remove link.{receiving_app,has_new_data}
- e777817: Fix ingress drop monitor
- 2b6664c: Sort links instead of apps for breathe order.
Asumu Takikawa (1):
- bb6b695: Fix typo in lib.protocol.tcp constructor
Luke Gorrie (10):
- eadeb4c: README.md: Add Snabb logo
- a233c98: core.lib: Fix timer() to match documentation
- 186f2ea: core.lib: Add timeout() and throttle() functions
- bf226af: engine: Make engine.now() work outside of breaths
- e68f5a5: intel_app: replace lib.timer() with lib.throttle()
- 37bc6c1: pcap_filter: replace lib.timer() with lib.timeout()
- 19ad6f0: core.lib: Remove timer()
- 17afb18: core.main: Make supervisor child process instead of parent
- 152b403: core.main: prctl supervisor name to "[snabb sup]"
- 08817a3: engine: Fix selftest() method for link topology change
Max Rottenkolber (4):
- ac60a9b: apps.test.synth: send sensible amount of packets per breath. (Send up to pull_npackets+(n-1) instead of pull_npackets*n packets.)
- d480e47: apps/intel_mp: integrate documentation.
- 6392134: apps.intel.intel_mp: merge SHM statistics counters (2847e9b).
- 383b4c4: intel_mp: preserve RAL/H[0] for 82599 and use it get device MAC.
Pete Bristow (27):
- e758971: rewrite pci.c in lua, support both flocked and unflocked memory maps
- e120a99: fix build issues
- 27e4516: move intel1g driver to a new home
- cdee3fc: rejig intel1g to support multiprocess RSS queues
- d6b18fb: fix i350 support
- 9f04635: fix typo in variable names in close_pci_resource
- 384e445: add speed tests to intel1g
- 689c2d1: move to 3 space indents
- 04d2845: Better tests that reliably pass, minor layout changes
- 4bf42b2: modularise register definitions to support intel 82599
- aedf75c: split out some reusable functions
- 39b3fba: working RSS support
- 5f17ea1: rename from intel1g to intel_mp
- c2b60ab: Replace all the tests and make them all pass.
- d34a639: support a configurable mtu, based on PR954
- 38701dc: move to no HT cpuids
- 696903a: pull packets from the nic in engine.pull_npackets groups
- 404adc9: apps.intel.Intel1g has been removed so remove it from documentation
- d33f1df: intel1g is gone, swap driver reporting to intel_mp
- 84ece1a: fix spurious test failures when rxq1 is master
- 916454c: the purpose of this test is to show that 2 queues is faster than 1, sometimes it runs slow in absolute terms which needs timeline for further investigation, hence the 400000pps test. The test was written on a very fast consumer CPU rather than a slower per core server CPU, 200000 should pass on E5 chips ok
- a96e483: Only kill snabb processes started from intel_mp/selftest.sh
- 561f241: lower pps thresholds for selftests, davos is relatively old and slow
- 89754f2: remove taskset pinning
- 68d48cc: add a simple benchmarking app
- 4ebca35: Add 64bit register variants and support for wrapping rather than resetting counter registers
- 8b664a2: intel.Intel now works for i210/i350/82599, per q stats counters are exported, mac address is export via a counter
Ryan Hartlage (1):
- ffe36d0: Update build instructions to use new repo name
Timo Buhrmester (2):
Snabb 2016.11 “Babaco”
This release introduces a new library for managing NUMA pinning from within Snabb, a new design for more efficient shifting and appending to packets, and re-synchronization functionality for our ESP implementation, meaning its conceptually complete. Babaco also synchronizes the lwAFTR application with Igalia, and Snabb NFV has received some love as well. As usual this release contains many miscellaneous bug fixes and improvements.
Major Changes
- #1046 #1047 Synchronized lwAFTR program with Igalia
- #1038 Introduced
lib.numa
for managing NUMA pinning from within Snabb - #1032 Introduced new design for shifts and appends in
core.packet
: instead of moving the packet data, it now re-positions the pointer - #1000 Implemented re-synchronization in
lib.ipsec.esp
Minor Changes
- #911 Added YANG model for Snabb NFV configuration
- #1051 Fixed bug in
checksum
method oflib.protocol.ipv4
- #1054 Polished and fixed critical bug in ESP integration for Snabb NFV
- #1039 Fixed a bug in Snabb NFV where redundant reconfiguration occurred
- #1034 Virtio: use packet shifting to tag packets
- #1031 Included various missing sections in the Snabb manual
Contributors
Andy Wingo (85):
- 4540e60: Add missing lwaftr end-to-end-vlan conf file
- c91d3a9: RateLimitedRepeater operates real line rate
- e114ec9: loadtest prints out bitrates with overhead
- 8260923: PodHashMap: Be more like CTable
- 36780f5: Add PodHashMap:iterate
- 7f5cca8: RangeMap: Add :iterate method
- 231c59e: Add BindingTable:iterate_psid_map
- 697c560: Add BindingTable:iterate_br_addresses
- 6d97550: Add BindingTable:iterate_softwires
- 033e746: Add documentation.
- 9278eb0: Add BindingTable:dump
- a051092: Hook up binding table dumping to the lwAFTR
- dd5e5b3: Fix promise bug with more than one argument.
- 2c118cd: Loadtest supports different programs
- 3b1dfb4: Forward-port CHANGELOG.
- 163e611: Disable JIT flush/drop monitor on loadtest; print ingress drops.
- e382b30: Update documentation
- f0d75a3: Add get_mempolicy, set_mempolicy NUMA syscalls
- af8f015: Add beginnings of NUMA module for Snabb
- fc0bb6d: Add cpu_get_numa_node
- 0cb8bd8: Add more NUMA methods
- a3d8fa4: Add choose_numa_node_for_pci_addresses
- 449490d: pci_get_numa_node can accept canonical addresses
- 85f0319: Add numa.check_affinity_for_pci_addresses
- 806746d: Work around a broken `getcpu'
- e062328: Use lib.numa in lwaftr run
- d9390f3: ljsyscall: Fix getcpu()
- fabb961: ljsyscall: Add migrate_pages.
- 50a920b: numa: Use ljsyscall's fixed "getcpu()" implementation
- d802b76: numa: Migrate existing pages when binding to NUMA node.
- 976b5df: lwaftr loadtest uses lib.numa
- 0f2fa19: More performance documentation updates
- b792e57: v2.7 changelog
- e45397a: More helpful jit.flush message
- d87de59: Fix time printout.
- eb4aac4: Print troubleshooting link at every jit.flush.
- 841266d: Change --cpu mentions to taskset/numactl
- 0c89a4d: v2.8 release notes
- c9676f6: virtio-net driver: Use C header files
- e25a6bb: Add some headroom before a packet's data.
- 0650c04: Disable backpressure on intel driver
- d6087e5: virtio-net driver: Use direct descriptors
- da583ac: Fix assumptions that packet == packet.data
- 30ddd81: Indirect access to packet data
- fbec950: Bring length back to beginning of struct packet
- ae121ca: lwaftr is resilient to changes in p.data
- dfe46a2: Refactor packet headroom mechanism
- 8c15b78: Add assertions in packet.lua
- 0e619fe: Adapt virtio to use packet.shift for its headers
- 57177b2: Bump packet headroom to 64 bytes.
- 1b401ba: Default headroom in Lua, not C
- 814b208: v2.9 changelog
- 780e46a: Refactor ingress drop monitor to have configurable actions
- c249604: Enable warning ingress drop monitor on the NFV
- 5540648: snabbnfv traffic: Only re-start engine when configuration changes
- a2a6713: Add v2.10 changelog.
- 938594d: Fix assumptions that packet == packet.data
- 5416f9c: lwaftr is resilient to changes in p.data
- 71679a5: Implement shiftleft/shiftright by moving packet around
- c2097d2: Add minimum packet alignment.
- 998427e: virtio-net driver: Use C header files
- a5541e5: virtio-net driver: Use direct descriptors
- 3e61642: Convert lwaftr V4V6, generator, nh_fwd apps to new config
- c09e62d: Fix name of Join output link.
- 3f8f337: Supply nh_fwd app with minimal configuration.
- 93629e0: Add tests.
- 12f77a3: Fix allocate/new_packet mixup.
- 7bfbba4: Add get_mempolicy, set_mempolicy NUMA syscalls
- 9a0abb2: ljsyscall: Fix getcpu()
- c2f2d3d: ljsyscall: Add migrate_pages.
- 3b5fe60: Add NUMA module for Snabb
- 243480d: Remove stale timers code
- 4b8930d: Revert message change relative to uptream ctable
- 2567ddc: snabbnfv traffic: Only re-start engine when configuration changes
- ade4b3e: Reformat performance-tuning.md. No change.
- b5a2cde: Merge lwAFTR performance notes to performance-tuning.md
- eef390a: Tweaks
- 6c1f585: Refactor ingress drop monitor to have configurable actions
- de93573: Enable warning ingress drop monitor on the NFV
- 3489e4b: Address feedback
- 6bb456f: Address feedback bis
- 21759e2: Add README.numa.md
- e115542: Update README.md for packet.shiftleft et al
- 4b9becf: Fix typos in performance-tuning.md
- 876addc: Fix shm.exists() check in ingress drop monitor
Diego Pino Garcia (136):
- 11ff29f: Update and clean up documentation
- 7ecb418: Monitor ingress packet drops and jit flush if threshold exceeded
- f9d6289: Remove invalid NDP NS test
- 6846a3f: NDP: Match Neighbour Solicitation target address to lwAFTR IPv6 address
- 740f29b: Rename arguments v4-pci and v6-pci to v4 and v6
- cf46993: Update documentation regarding v4 and v6 arguments
- c1758a2: Remove short options for arguments v4 and v6
- 377b121: Add warning message about deprecated arguments '--v4-pci' and '--v6-pci'
- 018b086: Several improvements in virt/lwaftrctl
- 9e86b23: Handle NS requests and retries without timers
- f04e111: Implement next-hop forwarder
- 7ca5e52: Add nh_fwd unit tests
- f5eaada: Dump packet in 'od' format
- 000b99e: Return source ethernet if Target Link is not present
- 08525dd: Assert destination ethernet address in selftest
- abe6584: Add Neighbor Advertisement unit test
- e2bf05c: Clear out Flags in ICMPv4 echo-reply
- 0b5c313: Add method timer.deactivate(name)
- 0cae549: Retry Neighbour Solicitations during time limit
- 5edd4a2: Send NS packet inmediately and retry after every second
- 21d6145: Refactor dump lwAFTR configuration
- 481f2b5: Dump binding table to text file
- 4bbe3a9: Change dump file names format
- 164dc62: Redo lwAFTR's conf dump selftest
- 2f829bd: Use conf parser to read conf file in dump.lua's selftest
- c6788af: Update performance-tunning.md
- a461a48: Reintroduce v4-pci and v6-pci for backwards compatibility
- cc677cc: Implement ARP requests retries
- 223da17: Cleanup of lwaftrctl script
- 4ad3379: Fix IPSec's esp selftest
- 06b3483: Adapt lwAFTR counters to new counters API
- c1ed420: Name parameters in 'snabb_run_and_cmp'
- 5b8895d: Fix test 'from-to-b4 IPv6 packet NOT found in the binding table'
- 85299c2: Print error if couldn't find file
- 7e03587: Add test 'Testing sending non-IPv6 traffic to the IPv6 interface'
- b727704: Add test 'Testing sending non-IPv4 traffic to the IPv4 interface'
- dc381f6: Add on-a-stick mode
- 10331e2: Add lwAFTR monitor program
- 2b35a95: Add V4V6 selftest
- c1471a0: Refactor load_check
- d74c72c: Tag ARP packets as IPv4 packets
- f8250d9: Add on-a-stick support for 'lwAFTR check'
- 8aca7e6: Run end-to-end tests in on-a-stick mode too
- 2959333: Run end-to-end-vlan tests in on-a-stick mode too
- 719b3ab: Rename 'v4v6' app to 'V4V6'
- 4fe25a3: Add support for icmpv4_rate_limiter_n_packets and icmpv4_rate_limiter_n_seconds configuration parameters
- 45a66d4: Refactor transmit_icmpv6_with_rate_limit
- ad87150: Rate-limiting of ICMPv4 packets
- 98519bf: Remove 'ingress_drop_monitor' dead code
- 1119dfb: Import 'lwaftr query' program to lwaftr branch
- a8353a7: Format numbers with lib.comma_value
- f20229a: Filter counters to print
- 30a83b2: Sort counters
- c880ee8: Align counter values
- 6de1d4a: Add option to print out all available counter names
- f915586: Add a flag to allow monitor all packets in on-a-stick mode
- 696c33e: Add lwaftr nexthop program
- f4c48d7: Import ipv6_equals
- a26698d: Fix self.debug comparison
- 4182e16: Add method 'exists' to core/shm
- 83dd337: Print out multiple snabb instance pids
- 32f81df: Move parsing of arguments to parse_args
- 58691a2: Fetch PID by lwAFTR ID
- ec6223f: Remove unused variables
- b69925f: Update lwAFTR query documentation
- 60aaa9c: Fix counters path
- 6e5f416: Assert counters were initialized
- 4132426: Fix initialization of Reassembly/Fragmentation apps
- b023195: Remove empty counter files
- ed3d6a1: Rename V4V6 input and output links
- 6c29222: Import Snabbvmx
- 4d404dc: Initialize counters and reassembly/fragmentation apps
- e1e0de4: Add hairpinning queue
- 29156d0: Add parameter --mirror to Snabbvmx
- 379b33d: Store lwAFTR ID in shared memory
- 5ee7afb: Default MTU value 9500 in snabbvmx
- 4d86ace: Create lwAFTR counters in apps/lwaftr/counters
- 236cffe: Add documentation for SnabbVMX and fix code issues
- de87bce: Fix fetch lwAFTR instance by name
- 0af0f68: Add support of VLAN tagging in on-a-stick mode
- 41f300f: Pass load_on_a_stick arguments as hash
- adf5060: Load two virtual NICs if using two different VLAN tags
- 6b01e0d: Flush ingress-packet-drops to a counter
- b65a362: Monitor ingress-packet-drops in SnabbVMX
- 318116e: Use discard attributes to setup ingress-drop-monitor
- e03efe4: Read ingress-packet-monitor values from SnabbVMX conf file
- dac8774: Add script tcpreplay
- 53ba35f: Add Snabbvmx test
- a2b1fb4: Increase time interval
- 0f2824e: Clean up tcpreplay.lua script
- 482a196: Fix vlan assignment
- 331b40e: Refactor SnabbVMX selftest
- f23359e: Add VLAN tag testing to SnabbVMX selftest
- 8bf708f: Add nexthop test datasets and configuration files
- 9c29680: Add nexthop selftest
- 24e4...
Snabb 2016.10 “Ananas”
This release introduces a new and unified way to declare what configuration parameters your apps accept, and verifies app arguments uniformly. If you are a user of apps.vpn
, do note that it has been removed in Ananas, and that you should upgrade to use the new and improved implementation in the l2vpn branch. Also noteworthy, packetblaster has gained a new switch for when you just want to transmit a finite burst of packets, instead of transmitting continuously. As usual this release also contains many small bug fixes and improvements.
Major Changes
- #1008 Removed
apps.vpn
(obsoleted by the l2vpn program on the l2vpn branch) - #1010 Added
--no-loop
switch topacketplaster replay
for emitting finite bursts of packets - #1019 Unified the way apps specify their configuration options, and how they are verified
Minor Changes
- #1014 Optimized Tap app
- #1018 Replaced built-in
assert
with a version that synergizes with ljsyscall - #1023 #1024 #1027 Fixed bug where
htonl
performed a signed operation - #1005 #1015 #1017 Minor bug fixes and improvements
Contributors
Alexander Gall (1):
- fb15c66: Remove apps.vpn
Andy Wingo (3):
- 8d58c03: Add lib.parameters
- 823fcb9: Convert rate limiter to use parameters.parse
- 6d9c784: Add missing include
Diego Pino Garcia (13):
- a1af15e: Getter/setter ring_buffer_size
- c304027: Format packetblaster.lua and removed unused variables
- f3cc41c: Check 'packetblaster replay' arguments should be at least 2
- fb32e41: Refactor 'packetblaster synth'
- e58e124: Pass array of options instead of duration
- 4de74b1: Add switch 'no-loop' to 'packetblaster replay'
- 7429a78: Initialize loop flag in subprogram
- 0b035ae: Add --no-loop to 'packetblaster synth'
- bbdd182: Update 'replay' and 'synth' README
- 81d1d6a: Remove --no-loop flag in synth
- c547d90: Properly configure link for Intel82599
- b73f488: Report LoadGen results in synth.lua
- 65cdc1c: Cast VLAN tags as int32
Domen Kožar (1):
- da860a6: manual: support NixOS 16.03 and 16.09 texlive package sets
Katerina Barone-Adesi (2):
Max Rottenkolber (15):
- 598c5d0: core.main: check the return value of fork.
- eabe7bf: Provide global assert implementation that plays nicely with ljsyscall.
- 9daa25c: Make use of new assert implementation.
- 8c5164c: Integrate app arg parsing.
- 4411ad3: Move lib.assert to core.main, fixing global name space breakage.
- a3faf0c: config.app: set zone. core.main: print zone in handler.
- 8593f8e: apps.keyed_ipv6_tunnel: fix typo.
- 14656c8: intel_app: do not call parse_app_arg in reconfig.
- 0c1f3b4: apps.test.lwaftr: add missing options to config.
- def857d: Revert "config.app: set zone. core.main: print zone in handler."
- 82dbe04: core.config: print a helpful error message on failure to configure an app.
- 52a0bd7: core.lib.parse: improve error messages.
- 53bc9ac: snabbnfv: do not pass bogus parameter to AES128gcm app.
- 9236f15: apps.pcap.PcapWriter: add back mode parameter.
- f0a9bb0: Revert "Cast VLAN tags as int32" in favor of #1024, keep test case
Pete Bristow (3):
Snabb 2016.09 “Zapote”
This release changes the way Snabb apps utilize links to avoid back pressure, and the default ring size was quadrupled. Most apps no longer avoid overflowing their output links, and therefore excessive packets will be dropped at the link level instead of being buffered ad-hoc by apps. The result is that link statistics now reflect actual congestion, and the performance of the iperf benchmark improved slightly. Zapote also introduces anti-replay protection as well as logging of auditable events for lib.ipsec.esp
as per RFC 4303, meaning Snabb’s ESP implementation is almost complete. Our vhost_user implementation has seen some major improvements in both performance and stability. A bug on our side of the protocol implementation was fixed that was responsible for crashes with some QEMU versions, and by tweaking how the JIT compiles the vhost_user code the performance of the Snabb-to-DPDK benchmark was improved substantially. Last but not least, this release contains miscellaneous bug fixes and improvements.
Major Changes
- #950 Links are now used asynchronously throughout Snabb, and the new variable
engine.pull_npackets
governs how many packets apps pull into the app network on each breath - #988
lib.ipsec.esp
now implements anti-replay protection and logs “auditable” events - #1001 The vhost_user implementation was optimized, and its performance improved substantially
Minor Changes
- #984 Fixed a bug in our vhost_user implementation that caused crashes with some QEMU versions
- #990 Added
exists
method tocore.shm
to probe for SHM objects - #991
snabb top
now lists the PIDs of Snabb instances if multiple are detected and no target is specified - #985 #986 #996 Minor bug fixes and improvements
- #966 Various SnabbBot/CI improvements
Contributors
Diego Pino (3):
- 0b62e29: Support private repos
- 1e59dc7: Remove temporary directories if they exist
- f8443f5: Append CLIENT_ID and CLIENT_SECRET to urls
Diego Pino Garcia (4):
- 3a254ac: Revert "Remove temporary directories if they exist"
- 64491b9: Skip SnabbNFV test if cannot find QEMU image
- 3ea2348: Add method 'exists' to core/shm
- bc8c2ab: Print out multiple snabb instance pids
Katerina Barone-Adesi (1):
- bb9b3c2: Packet.lua: add clone_to_memory
Luke Gorrie (5):
- d77e43d: vhost_user: Enable/disable vring processing on kick/get_base
- 2a98aa5: snabbnfv: Update filter.ports config to allow iperf
- d4b71e6: net_device: Avoid unnecessary checksum calculation
- 7f1d205: virtio net_device: JIT each connection separately
- 54ac86d: Revert "Packet.lua: add clone_to_memory"
Max Rottenkolber (19):
- 0f654f7: snabb_bot: Dirty fix for GitHub API pagination to get runway.
- 8ae18fa: snabb_doc: same as previous commit but for SnabbDoc.
- 1dfa664: lib.ipsec.esp: Test minimum packet sizes.
- 54e7b90: remove link.full, increase link buffer size, add engine.pull_npackets.
- a1f60a2: Replace usage of link.full/nwritable with engine.pull_npackets.
- cca676e: scripts/snabb_doc.sh: push via https.
- 325ddca: lib.ipsec.seq_no_t: remove unused `full' method.
- b4a7968: lib.ipsec.esp: refactor track_seq_no.
- 13a12e9: snabbmark esp: work around anti-replay window.
- b6bed30: snabb_bot: fix bug where bogus performance regressions where reported.
- 55b1572: Fix-up Lwaftrgen:pull and basic_apps.Tee.
- c3c3413: core.link.size must be a power of two.
- f52861f: Revert "remove link.full", document link.nwritable, link.nreadable.
- 0d40aad: core.shm.exists: document return value type.
- b11191a: apps.virtio_net: Fix README to correctly reflect role of VirtioNet app.
- 0214574: core.packet: make packet_t public accoding to documentation.
- ee57dae: core.packet: document clone_to_memory.
- 1d2b27e: Revert "core.packet: make packet_t public accoding to documentation."
- cc829d2: core.packet: remove mention of packet_t in favor of “struct packet”.
Timo Buhrmester (7):
- 4c311c9: lib.ipsec.esp: Anti-replay (RFC 4303 App. A)
- 363b1bf: Refactoring broke advance_window; fix that
- 72532f6: lib.ipsec.esp: More thourough testing of the anti-replay facilities
- 29de34c: lib.ipsec.esp: Reinsert a few comments that got refactored out
- 54899c0: lib.ipsec.esp: Use core.lib.logger for the auditable events "integrity error" and "replayed"
- c37e01b: lib.ipsec.esp: One logger per module rather than per decryption context
- 2e75c11: lib.ipsec.esp: Fix typo
Snabb 2016.08 “Yolanda”
This release adds a handy utility to bind and unbind PCI devices to and from Linux, overhauls Snabb’s shared memory subsystem, and adds software I/O mode to SnabbNFV. The deprecated “data” and “length” functions from core.packet
were removed. Statistics counters in the vhost_user
app were removed as well, because they caused a performance regression for which not solution was found yet. As usual, this release also contains many bug fixes and minor improvements.
Major Changes
- #971 Added new utility
snabb pci_bind
to help with PCI device management - #969 Added software I/O mode to SnabbNFV allowing it to be run without dedicated network hardware
- #972 Overhauled shared memory subsystem
Minor Changes
- #967 Removed deprecated
packet.data
andpacket.length
- #968 Fixed bug in
apps.bridge.blooding
- #975 Skip Intel1g selftest if required environment variable is empty
- #979 Added
SNABB_SHM_ROOT
andSNABB_SHM_KEEP
environment variables - #983 Reverted statistics for
apps.vhost.vhost_user
because of performance regression
Contributors
Diego Pino Garcia (2):
Katerina Barone-Adesi (1):
- dcaf4f9: pci_bind: A utility to bind/unbind PCI cards
Luke Gorrie (2):
- 78c6764: core.shm: $SNABB_SHM_ROOT overrides /var/run/snabb
- 5c317aa: main: $SNABB_SHM_KEEP prevents removal of shm dir
Max Rottenkolber (10):
- a95751f: core.packet: Remove data/length reader functions.
- 0be75ab: SnabbNFV: Add support for virtual/software I/O mode.
- 38cf53c: SnabbNFV test reorganization and parameterization.
- f6ef311: SnabbNFV: make virtio mrg_rxbuf option configurable.
- 0814fd9: apps.bridge.flooding: Fix regression introduced by 4b4b8ad / #638.
- 2552468: SnabbNFV: add port option no_indirect_desc.
- 28a3de1: statistics: introduce shm frame abstraction to eliminate boilerplate code...
- 70ad231: snabb top: remove obsolete unlinking of runtime files (supervisor).
- a37441f: snabbnfv: Added symlink to dpdk_bench.sh for Hydra compatibility.
- 77c0d57: vhost_user: revert statistics.
Snabb 2016.07 “Xigua”
This release introduces a new link
callback for apps to configure themselves after their links are set up, and a new supervisor process is started alongside the usual Snabb process to clean up after it. SnabbNFV got support for encrypted tunnels, and per-app shared memory counters for statistics and diagnostics were added to many apps. The “length” and “data” functions from core.packet
were deprecated in favor of exposing the packet ctype and its ABI. As usual, this release also contains many bug fixes and minor improvements.
Major Changes
- #905 Introduced
link
callback for apps - #930 Added supervisor process to manage Snabb worker process
- #949 Added ESP (encrypted tunnel) support to SnabbNFV
- #931 #947 #953 #963 Added shared memory statistics counters for Apps
Minor Changes
- #913 Exposed and documented
core.packet
ctype - #934 #935 Multiple fixes for Virtio drivers
- #936 Added “align” argument to
core.memory.dma_alloc
- #904 #866 #889 #941 #835 #939 #958 #942 #944 #948 Various bug fixes and improvements
Contributors
Alexander Gall (1):
- 900ff8e: Fix interface speed
Andy Wingo (1):
- 995f9d8: vhost-user: Support operation without MRG_RXBUF.
Diego Pino (1):
- c86ec3e: Call app:start only if defined
Diego Pino Garcia (4):
- c3c69d2: Add 'start' method to apps
- 9dabdd2: Call app.start instead of app_table[name].start
- 0a5bfac: Remove unassigned initialization
- 80a7ee7: Trigger start event for each app
Domen Kožar (8):
- d0cc3c6: default.nix: enable parallel builds
- 738ef31: Snabb version is now statically stored in .version
- a119aeb: release.nix: don't rely on SNABB_PCI* defaults
- 1feb2c9: release.nix: by default use lugano servers
- 307b1e1: default.nix: remove .git from source since it's not deterministic
- 1d4e766: src/Makefile: silence grep
- 694b1c4: test_env.sh: output kernel console to stdout
- 1b60645: default.nix: don't hardcode the version
Luke Gorrie (13):
- b34c3ee: engine: Set shm path to "app/$name"
- 80614e1: doc/git-workflow.md: Rewritten based on new experience
- 12d0009: doc/git-workflow.md: Added section on upstreaming subsystems
- af8ae46: doc/git-workflow.md: Partly rewritten draft
- eccb614: doc/git-workflow.md: Created .src.md
- 113b607: git-workflow.md: Rewrote section on becoming a maintainer
- 4a37b98: git-workflow.md: Wrote about upstreaming subsystem branches
- 6c46b5d: doc: Remove stale .images/Branches.png file
- 4eb21b6: virtio/net_device: Fix bug with mergeable rx buffers
- e5f23a9: vhost_user: Fix & comment "feature cache"
- b20cb17: core.memory: Add 'align' argument to dma_alloc()
- 398dd16: core.main: Fix bug in SNABB_DEBUG env var handling
- e81a192: core.timer: Inhibit debug messages
Max Rottenkolber (73):
- 94ff234: Amendments to #766: - Use "apps/" instead of "app/" for uniformity - Set shm path to "apps/$name" when calling
app:stop' too - Unlink "apps/$name" after
app:stop' using `shm.unlink' - Add a test case to core.app selftest - fad0f43: core.counter: Qualify counter names using `shm.resolve'.
- 7ed4ed0: snabb top: add `--app' option to print app counters.
- eb9005b: snabb top: unlink own shm tree to avoid clutter.
- 5fbe0d6: vhost_user: Add RFC 7223 app counters.
- 8bb3215: Intel_app: Add RFC 7223 app counters.
- 7a55478: snabb top: Add --link parameter to list link counters.
- dde5da2: core.app: Put app counters under "counters/", update snabb top.
- 924ff4e: lib.json: Import JSON4Lua 1.0.0, include encode functionality.
- 8e34093: lib.macaddress: Support numeric initialization; add method to get numeric representation.
- 5f9efd2: core.link: Create “discontinuity-time” counters.
- 7b39148: snabb top: add `--yang' option to print YANG model as JSON.
- e457300: Update CONTRIBUTING.md.
- 8984741: snabb top --yang: Represent uint64_t as decimal string.
- ee00d16: [core.lib] Generalize `timer' to optionally accept 'repeating' option and support injecting a function to determine the current time.
- 45490b8: Revert "Intel_app: Add RFC 7223 app counters."
- f0ed10b: intel_app: expose per-pciaddress statistics in `counters/'.
- b853268: core.packet: document ctype and deprecate data and length functions.
- b11e375: core.packet: properly document shiftleft and shiftight.
- c186591: lib.protocol.ethernet: Add n_mcast, branch-free Multicast predicate.
- b09e843: Fix for f0ed10b: require macaddress module.
- 62e2fbf: Revert "lib.json: Import JSON4Lua 1.0.0, include encode functionality."
- f4834a5: snabb top: revert --yang dump.
- 793c394: snabbify statistics model.
- 2b9ef2c: intel_app: add ifTable MIB related counters.
- e9f5dda: lib.macaddress: add bytes method.
- 6b12e9c: spin out SNMP code from apps.intel.intel10 to lib.ipc.shmem.iftable_mib.
- 7c697b6: main: fork into worker and supervisor; perform clean up.
- be09fe5: main: send HUP instead of KILL.
- 3db174b: main: return correct exit code.
- ce2f220: main: supervise xpcall(main, hanlder).
- 4950cbb: main: check status of S.waitpid.
- 28c568c: main: cleanup after worker_pid.
- 4af7091: Remove obsolete `snabb gc'.
- 1c9f585: Move model.txt to src/doc/statistics.md.
- 339f8f1: apps.intel_app: Revert rxerrors calculation, remove broken txerrors.
- 7ec7f80: Revert "lib.macaddress: add bytes method." and remove int method.
- 327804f: doc/statistics.md: remove duplicates.
- 90fc893: core.app: fix bug in #766 introduced while merging 6cac870.
- ceb080f: core.app: fix bug in #766, use app.shmpath during reconfig.
- d82729a: core.app: fix typo in previous commit.
- 70b8967: intel1g: canonicalize env var name, document it in testing.md, pass it through dock.sh.
- 9f48b14: apps.intel.intel1g: use pci.map_pci_memory_locked.
- ed687f1: main: properly handle unsupported worker states (SIGSTOP/SIGCONT)-
- db9e343: main: comment syscall usage.
- c3b8672: Revert 'ed687f19f8459413145fabc56a462d7b38513ba8'.
- 5eb0f69: core.main: handle SIGSTOP and SIGCONT to worker.
- 76a5d6e: main: allow setting developer_debug/debug_on_error through environment.
- 127d21f: main: do not unlink runtime directory in developer_debug mode.
- 1befce4: remove packet.length/data.
- 751cc28: apps.bridge.base: use `app:start()' to run post configuration.
- 11890e6: core.app: edit documentation of app:start().
- 5488c68: lib.protocol.ethernet: add is_bcast and n_bcast.
- 9044c6f: apps.vhost.vhost_user: count rxbcast/txbcast.
- 5a01612: apps.tap.tap: add statistics counters.
- 6233d15: core.packet: make max_payload public.
- 788438e: apps.socket.raw: add statistics counters.
- 7d5b973: Rename app:start from #905 to app:configure.
- 4dec991: scripts/dock.sh: also pass through SNABB_PCI_INTEL1G1.
- a9f7011: lib.ipsec.esp: fix regression introduces by previous commit.
- e60226c: Rename app:configure to app:link.
- 0f38505: lib.ipsec.esp: Test minimum packet sizes.
- b8cbd65: SnabbNFV: Add “crypto” tunnel option using lib.ipsec.esp.
- ab5d1af: scripts/dock.sh: use eugeneia/snabb-nfv-test-vanilla by default.
- 626c6fc: apps.keyed_ipv6_tunnel: add diagnostics counters.
- c0f7076: apps.ipsec.esp: add statistics counters.
- fc7363c: apps.ipv6.nd_light: add statistics counters.
- 272a0d1: apps.packet_filter: add statistics counters.
- 506c66b: apps.rate_limiter: add statistics counters.
- e3fcbbf: Revert "lib.protocol.ethernet: Add n_mcast, branch-free Multicast predicate." Reason: its actually slower than the initial naive version.
- b418f8f: intel_app: fix wrong “speed” counter value.
- d52d89c: apps.ipv6.nd_light: revise counters, south = rx / north = tx.
- 905bf8d: vhost/vhost_user: avoid callbacks.
Pete Bristow (2):