CHANGES
=======

1.9.13
------

* refactor for future stack redundancy support
* Don't require errors always (test code doesn't always cause them)
* Aggressively re-learn on LAGs
* Add .stickler.yml
* Prune flood redudant learn path, to reduce unnecessary learn flaps
* add basic adapter for faucetagent
* tunnel\_updated\_flags updated for all
* unused now
* Low risk pylint cleanup for tests
* pylint
* Consistency with n\_tagged
* pylint
* Add extra detail when L2 learning
* Add extra log detail when L2 learning and describing a stack port
* Send bad flow mods to switch
* pylint
* pylint
* pylint
* enable stacking + routing
* Update dependency pytype to v2019.7.30
* BugFix: Repeat Test Fails on Dot1X Events Verify
* failure can still stay the same if the port is down (ie. we didn't explicitly log a failure)
* expected total should be dynamic
* Don't verify logoff if not asked to
* Don't wait for 8021x flows on a port that might be down
* Generic kill for all NFV pids
* Remove more redundant args
* Check success flows only if not logging off
* Remove redundant 8021x prom var checks
* Remove redundant calls to wait\_for\_eap
* pylint
* Remove redundant 8021x prometheus variable checks
* Remove redundant checks for Success in tcpdump from 8021x attempt
* Garbage collect timeout for wpasupplicant is too short
* Remove more redundant code in 8021x MAB test
* Remove redundant code in 8021XSuccessTest
* Wrap 8021x processes in a timeout so they will be garbage collected no matter what

1.9.12
------

* pylint
* Revert stack topo updates to all valves
* pylint
* Add workaround for Aruba not accepting empty miss instructions
* Remove processing of stack changes on other\_valves
* Don't calculate flows for DPs that are down when considering stack changes
* disable unnecessary duplicate test
* Make verify\_broadcast() more load friendly by calling scapy fewer times
* Move more tests to run in parallel (they ran alone before due to historical performance problems)
* Verify that switch works after several disconnections
* Speed up verify\_broadcast() and verify\_unicast() which had unnecessarily high timers, and improve their diagnostic messages
* Don't leave behind empty temporary directory if we ran no tests
* Make external loop protection/stacking test far more readable
* Implement flood pruning and make stack state changes more efficient
* Update dependency pytype to v2019.7.26
* Lock scapy to 2.4.2
* Consider OFPPS\_LINK\_DOWN flag only
* Don't reset existing default
* Add default test duration
* Cleaner to move duration calculation to test class
* Share test start time via file as parallel runner can't access it directly
* OVS TFM ordering
* No need to str() test time
* Add simple wallclock profiling of tests
* Add TODOs
* Add TFM OVS version for testing
* Incremental TFM support for OVS
* Later pytype has its own parallel run capability. Use that rather than GNU parallel - much faster since running under GNU parallel can have a run time of 30m!

1.9.11
------

* Mark ARP fuzzing busted in 2.4.2
* Allow renovate to upgrade scapy
* Latest scapy
* Update dependency pika to v1.1.0
* Remove override\_output\_port (use tunnelling instead)
* Re-enable FaucetUntaggedMultiConfVlansOutputTest
* router\_vlan\_for\_ip\_gw() needs to be smarter when not routing between VLANs
* Add assigned VLANs/ACLs
* Add MAB config
* Need to verify invalid nexthop when global routing enabled
* IPv6 cannot be us log
* FAUCET should ignore BGP routes with nexthops not directly connected
* pytype
* Don't verify of\_port\_reason because might be 0 before first status change
* Fix declining lint score in integration tests
* Another port\_stats\_updating()
* Latest exabgp strictly verifies routes can't be hosts
* Don't use broadcast ping to stimulate learning, use a fake DHCP request instead (more reliably generated from scapy) Sync up port counters before starting an iperf that requires a minimum value, so that iperf and OF counters are much more likely to be synced
* Make counter sync function reusable. Fix counter latency check always report maximum
* Update dependency pytype to v2019.7.11
* Remove Dot1x Event Checks from 8021x Teardown

1.9.10
------

* Add Test Users to the Radius Config in Mininet\_tests
* Add Dot1x RADIUS-selected ACLs
* Allow FaucetSanityTest to be run standalone
* - Fix some tests to avoid some failures on Cisco C9K
* Remove Invalid Usage of NFV Port from 8021XPortFlapTest and 8021XVLANTest
* BUGFIX: Enforce output\_only restraint on nfv\_sw\_port
* Add Kill On Exception flag to API for Chewie
* Add MAB to Faucet
* Add note to disable keepalives as well
* Add Skip PIP Setup Option to Test Run Script
* No tests is not an error
* SameDPTest also needs ordering
* Require strict host name ordering too (tunnel test needs to reference hosts connected to specific switches)
* Use common tunnel verification function
* Stable switch name order
* Cleanup, cleanup order
* Set port up again after test
* More helpful message if no tests selected
* Need to use count method
* Don't repeat 0 tests
* Tunnel tests are flakey because tunnel verifier may pick a stack rather than host port
* Add -r option to test suite to allow repeated runs until failure is detected
* Fix incorrect comparison for global group
* Add tests for flow reordering and fix missing global group del
* LACP state changes need full VLAN rule re-write
* LACP use of port flood state still specific to LACP
* pylint
* Use \_warm\_reconfig\_port\_vlans() consistently
* Simplify dot1x port state changes further
* Remove flow table manipulation from one half of dot1x native VLAN handling
* Simplify 8021x native VLAN add/remove
* TODO to separate handling of add/change VLANs
* Use update\_vlan() consistently
* \_reset\_dot1x\_port\_flood() doesn't flood table ref
* Update manager API for update
* Add add/del VLAN helpers
* Remove direct calls to flood manager build\_flood\_rules()
* Update flood manager API
* README version no longer needed
* If we don't specify an explict version PBR will calculate from git tags
* Update dependency pytype to v2019.6.28
* Don't profile setting a port that is already up, up
* Profile test duplicates flow deduping
* Must be a list
* Avoid dedupe when OF message kind is not sent
* More efficient OF message classification
* Faster dedupe ofmsgs
* More efficient classification of global deletes
* TunnelTest use of FakeOFTable() conflicts with base test's pipeline. Integration test covers correct tunnel behavior across multiple actual DPs anyway
* Missing hardware declaration
* Suppress all but global deletes, if global deletes are present
* Test that table specific flowmods are not sent before TFM
* Update grafana/grafana-arm32v7-linux Docker tag to v6.2.5
* Update grafana/grafana Docker tag to v6.2.5
* Handle unknown ICMP6 type
* Add unit test for ping controller with size 64 bytes (previous integration test used fping which did not verify length)
* Cleanup incorrect documentation in test cases
* Preversion 1.9.10

1.9.9
-----

* self
* Reauth test can fail if more attempts occur than the hard coded timeout expects
* Making LACP resp rate configurable
* Config unit test cases for lacp\_resp\_interval
* config unit tests for LLDP src mac validation
* Upgrade Chewie Version to 0.0.18
* Change API between Chewie and Faucet to use KWARGS
* FIX: Use acl\_manager directly instead of Valve inside Faucet\_Dot1x
* Set :preserveSemverRanges for renovatebot
* Add note to disable DTP
* Bump README to 1.9.9
* Update dependency pytype to v2019.6.21
* Allow fixed or random ordering for port\_map
* Update prom/prometheus Docker tag to v2.10.0
* Simulated hardware switch also needs all IP functionality deconfigured
* First pass at a "silence" sanity check; must hear no unexpected packets in test environment where all hosts are deconfigured
* Remove debugging print()
* set/type
* Generate flowdel for potentially stale existing port specific flood rule
* Update dependency prometheus\_client to v0.7.1
* Update faucet/prometheus-pi Docker tag to v2.10.0
* Update dependency sphinx to v2.1.2
* Add missing :
* Remove port out pcp
* Should not fall through to default flood rule if stack port is not up
* Move ARP loop test to standard stack test base
* Also check no leaked p=0
* Move pcp set to vlan
* Only test
* pyup -> renovate
* Configure .renovaterc.json
* conf-zodiac.sh: set Zodiac and OF controller network details
* FAUCET can send truncated ICMP6 echo replies
* update grafana to 6.2.4
* err -> out
* Pin exabgp to 4.0.10
* Update apt dependency for python3-prometheus-client
* Update prometheus\_client from 0.6.0 to 0.7.0
* Update sphinx from 2.1.0 to 2.1.1
* Making LACP resp rate configurable
* LLDP src validation
* test\_topo.py tests clib rather than faucet
* Simplify get\_config() in mininet\_tests.py

1.9.8
-----

* Changing age calculation for LACP response
* Fix LLDP redundant logging
* Log error for types
* Fix missing parsing of optional hw\_switch\_config.yaml parameters
* setup 1.9.9
* README 1.9.8
* self.threads continually grows leading to high CPU. thread schedule jitter can be a float for better load distribution
* Fix crash when optional include file does not exist

1.9.7
-----

* Handle shell still running
* setup 1.9.8
* README 1.9.7
* Update pytype from 2019.5.24 to 2019.5.31
* Update sphinx from 2.0.1 to 2.1.0
* Add diagnostics for docker container tests. Handle read() possibly returning more than ps1
* host/switch prefixes should be sorted
* Consolidate common hardware switch remap code. Explicitly garbage collect OVS switches in tearDown()
* Lengthen marginal test timeouts
* Make pip cache easier to use for docker test runs
* Fix SameDp test for hardware
* Simulated hardware switch needs to be able to configure two VLAN headers
* pylint
* DPIDs cannot be duplicated
* Remove dangling faucet\_log function
* Stricter syntax checking for hardware test config, and smoke tests for hardware tests
* Convert to \_lacp\_actions
* Making test work properly
* Preversion 1.9.7
* README 1.9.6

1.9.6
-----

* Revert "Merge pull request #2957 from lantz/random-ports"
* ensure config\_hash metric exists even if parsing fails
* Update pytype from 2019.5.15 to 2019.5.24
* Increase min pylint to 9.44 (incremental step to 9.5)
* No longer need to exclude test\_packaging from static analysis
* Upgrade to chewie 0.0.17
* Allow building with any version of eventlet

1.9.5
-----

* Upgrade to grafana 6.2.0
* Cleanup PR
* Working test version
* Fixing basic clone
* Fix formatting error
* Adding port cloning
* Add dyn clone function
* Trying new test
* update readme to broaden potential adapters
* update copyright for 2019
* Timeout should adjust for packets sent
* Capture only echo packets for tunnel test
* Include unicast and routed packets in egress acl unit tests
* Apply egress ACLs to flooded packets
* add integration test for egress acls
* Preversion 1.9.6
* Bump README 1.9.5
* Reverting some changes from master
* Fix conditional iteration
* Fix porty copy in case of port-down
* add unit test for egress acls
* install egress acls on datapath
* add accept to egress function in ValvePipeline
* Build egress\_acl table on switch when configured
* Add configuration for vlan egress acls
* include egress acl table in pipeline
* verify\_unicast() doesn't handle for possible packet loss. pylint
* Add some error debugging info
* Don't send suppressed lacp
* Port Randomization Support
* Cleanup test
* Loop protect all
* Working tests, finally
* Ignore case when searching for "tshark"
* Make wireshark regex less greedy so it can match newer versions
* Only check final condition
* Update control
* Add failing pasthrough test
* Remove some code
* Converting tto pasthrough
* update variables to match prometheus variables
* Add monkey@vandervecken to AUTHORS
* Update ryu from 4.31 to 4.32
* Update pytype from 2019.4.26 to 2019.5.15
* Add section on non-beta Cisco IOS XE versions
* Remove debugging comment
* Add verify unicast check
* Adding in unicast tests
* Add test for missing config
* TunnelTests should send more than one test packet
* Update verify\_unicast\_not\_looped to use new scapy\_template format
* Rebase against master
* Revert "Workaround for https://www.traviscistatus.com/incidents/kyf149kl6bvp?u=3g7kt113nmgs."
* Add unicast loop protection

1.9.4
-----

* Preversion 1.9.5
* README 1.9.4
* Workaround for https://www.traviscistatus.com/incidents/kyf149kl6bvp?u=3g7kt113nmgs
* Unconditionally delete all groups on Aruba as unreferenced groups steal resources from regular flowmods
* Move tunnel rule generation to stack port state changes
* Minimum necessary change to support same-DP tunnels
* Remove more redundant 8021X native VLAN code
* Use common \_reset\_dot1x\_port\_flood()
* Move del\_native\_vlan
* Min. fix for bad 8021x flowdel
* Verify flowdels
* Missed VID reference
* More hardcoded VIDs
* Correct VID order
* More hardcoded VIDs
* Don't hardcode high VLAN VID which can't be used on some platforms
* drop\_lldp appears to be an old leftover artifact
* More strict tunnel verification
* Detect coredumps after tests
* Update debian/control
* Upgrade eventlet for later distros (see also https://github.com/openstack/requirements/commit/377dcbb8b267447920739412dc03490013fa5062)
* setup.cfg to 1.9.4
* Loop protect test has hard coded port

1.9.3
-----

* Upgrade images used for docker compose
* Downgrade pi-gen to 2018-11-13-raspbian-stretch
* Bump README 1.9.3
* Add a new option to the hw\_switch\_config.yaml to be able to use the IPv6 of the CPN interface
* Simplify tunnel rule parsing and fix bug where vlan\_vid update is missed
* Update pytype from 2019.4.19 to 2019.4.26
* Re-enable for hardware
* special case for NUM\_DPS == 2
* TunnelTest order
* Correct ranges for non\_host\_ports
* String needs MAX\_HOSTS
* Use non\_host\_ports() consistently
* Hardcoded ports in FaucetSingleStackStringOfDPTaggedTest
* Another FaucetSingleStackAclControlTest hardcoded port
* TODO for acl\_port\_in
* TunnelTest hardcoded port
* FaucetSingleStackAclControlTest hardcoded ports
* ACL\_IN\_DP hardcoded
* Remove hard coding of string remote ports
* Fix two broken switch vendor URLs in the docs
* Set minimum performance bar at 100M
* Mirror packets with consistent perspective based on mirrored port
* Add mirror perf tests
* Update pytype from 2019.4.12 to 2019.4.19
* changed a few too many
* event notif no longer experimental; closes #1312
* fixes #2913
* pin to the latest pip
* Change faucet\_config\_hash\_info label format
* faucet\_config\_applied: fraction of DPs we've tried to program

1.9.2
-----

* Refactor faucet\_dot1x.py
* Fix port for reload trigger
* Check "/" not in label for filename
* Quote Prom labels for info
* add dynamic vlan to unit test
* remove empty test\_untagged from 8021XBaseTest class
* extract 8021x base test class. find a free udp port for radius
* change signature for chewie v0.15
* remove eth\_dst flows for the dynamic vlan
* tidy up a couple of things
* remove dynamic vlan on port down
* remove learning rules
* add documentation for dynamic 1x vlan
* dot1x get native vlan from radius
* change 802.1x event checks to not check order
* Update pytype from 2019.4.5 to 2019.4.12
* Update sphinx from 2.0.0 to 2.0.1
* Update pika from 1.0.0 to 1.0.1
* Add smoke unit test for dot1x\_acl functionality
* 802.1x ACLs
* add expected events to new dot1x tests
* Remove unneeded CONFIG\_HASH global/module variable
* Add faucet\_config\_hash\_{info,func} and test
* use chewie v0.0.15
* add tests for periodic reauthentication, and when id request on port up
* change rule priority level for static dot1x rules
* add dot1x event test checks
* change dot1x event structure
* Preversion 1.9.3
* Release version 1.9.2
* Update ryu from 4.30 to 4.31
* Update pytype from 2019.3.27 to 2019.4.5
* add event notifications for 802.1x
* add option to configure log level during tests
* fix pytype issue
* add requirements file for rabbitmq for tests
* minor linting
* Rename first\_external to use\_external
* heartbeat\_interval has been deprecated
* Cleanup PR, no logging
* Update pytype from 2019.3.21 to 2019.3.27
* Update sphinx from 1.8.5 to 2.0.0
* Update pika from 0.13.1 to 1.0.0
* Fix loop\_protect\_external
* Breaking test for multi-port exclusion
* Fix for stack2 external\_loop\_protect flooding
* Clean up test
* Only create loop devices if they don't exist

1.9.1
-----

* prevsion 1.9.2
* README 1.9.1
* Need to check for Prometheus thread exceptions
* Unused import
* Check for dead threads
* Remove force fail
* Update pytype from 2019.3.15 to 2019.3.21
* Using local fix
* Failed fixes
* Mark DP disconnected when explicitly closing it
* Working test
* Flap configuraiton and test again
* Update with comprehensive tests
* More test-case tweaks
* pytype
* Ensure to\_conf() dict keys are always strings. Ensure IP addresses of any kind converted to strings
* Remove datadiff
* Switch to difflib
* New test
* Make to\_conf() much smarter so we can remove datadiff library

1.9.0
-----

* Duplicate, duplicate VLAN check
* Multiple router VLAN test needs to support policy route
* Clarify LLDP beacon service comments about stacking and spanning tree
* Support router configuration that just connects BGP to a VLAN in another router (and check multiple routers can't control same VLAN)
* Pre-version faucet 1.9.1
* More thorough checks for partial BGP config that could cause BGP to be disabled
* Add header row to BGP configuration table
* Add release notes for faucet 1.9.0
* VLAN name
* Correct formatting/missing fields for BGP. Allow a router to be configured without top-level VLANs (BGP only)
* pylint
* Need to check BGP is enabled
* config test case for BGP
* Update BGP docs for bgp dict
* BGP sub-dict
* pytype
* Should use yaml.safe\_load()
* Remove dl\_dst output action from ACLs (which did not work anymore anyway)
* Use relative time comparison profiling config parsing performance
* Prevent running faucet on python versions earlier than 3.5
* Update apt package to require faucet versions 1.9+
* Make apt package depend on python 3.5+
* Prevent installation on python versions earlier than 3.5
* Remove installation documentation for debian jessie
* Disable unit testing on python 3.4
* Release faucet 1.9.0
* Correct typo in documentation
* pylint
* placate pytype
* Travis is even slower than that
* Travis is horribly slow (increase profile timeout)
* Reduce config reload time for 100 interfaces from ~3s to 0.5s
* pylint
* Avoid generating per-port flood flowmod if flood actions same as VLAN
* Upgrade faucet VM image to Ubuntu Bionic

1.8.37
------

* Ensure vlan\_pcp is 0 when loop protection enabled
* Handle permanent learn case
* Remove unnecessary double call to \_configure\_tables(). Return flag for cache update needed when learning, to remove unnecessary duplicate L2\_LEARN events
* Preversion 1.8.38
* README 1.8.37
* pylint/coverage improvements for dot1x
* syntax
* except syntax
* Handle NotSequence exception from datadiff
* Update pytype from 2019.3.1 to 2019.3.8
* Standardize stack host tests
* Make verify\_no\_bcast\_to\_self() more efficient to reduce test runtime
* Enable LLDP always for stacking ports
* Need to set on: tags: true for travis to deploy tag rather than branch

1.8.36
------

* Increase number of shards now that we make more efficient use of Travis
* Need to handle disappearing wpa control socket race condition
* Preversion 1.8.37
* README .36
* pylint, fix no-else-raise
* Further retries/timeouts for slow/lossy 8021x
* check auth doesnt occur via wpa status and ping fail
* pytype multiple syntax
* pytype
* Update test-requirements.txt
* Update scapy from 2.4.0 to 2.4.2
* Update pytype from 2019.1.30 to 2019.2.13
* Update python-debian from 0.1.33 to 0.1.34
* Update sphinx\_rtd\_theme from 0.4.2 to 0.4.3
* Add a method for querying prometheus in code
* developer\_guide: document env cmdline setup
* tutorial/nfv\_services: add tcpdump example
* fix, so 1x falp test runs on software

1.8.34
------

* Preversion 1.8.35
* Upgrade to sphinx 1.8.4
* README 1.8.34
* Update debian/control for new Prometheus
* Upgrade prometheus\_client to 0.5.0
* Consistently use correct tcpdump output string
* CDP and friends should not be flooded
* Rename to faucet\_config\_load\_error
* Implement error signal in Prometheus for invalid config
* Placate pytype
* Remove redundant Valve name in log message
* Fix specification of table config for tunnelling ACLs. Validate set\_fields and match\_types on table configs to prevent this kind of bug in future
* \_configure\_tables() should be last step
* Tunnel tests missing hw\_dpid arg to build\_net, so wrong vendor is selected
* Convert RST images to figures
* Improve documentation for running hardware test suite
* Update architecture diagram

1.8.33
------

* Preversion 1.8.34
* Bump README version to 1.8.33
* Relax OF counter synchronization window pending better method
* Downgrade python-debian to make packaging unit tests pass again
* Fix code that reads debian/control
* Need more patience for hw based tests
* Update faucet\_dot1x.py
* Update chewie to 0.0.13 in debian/control
* Upgrade to Chewie 0.0.13
* Consistently consider port status when calculating flooding rules
* Handle LACP peer signaling 1->0 synchronization
* Handle LACP actor state transition 1 to 0
* Missing flowdel return
* pytype 2019.1.30
* Fix LACP expiry case
* Hardware LACP test needs much longer timeout for port recovery
* Fix Prometheus tests for hardware
* Test might miss cold start counter increment if DP happens to be down
* Ensure DP status 1 at end of reload in case restart count incremented multiply
* Need to retry change counter
* Reload tests need to be smarter for new potentially double cold starts
* Force switch OF reconnection on a cold start. This ensures that FAUCET and the switch have the same list of ports. Previously we could be desynchronized (e.g. adding a port, but we don't know its oper status). Add internal API change to allow a Valve to request a switch OF reconnection
* s/ebt/ebtables/
* Need ebt module as well
* Need to retry host retry check
* Some dockers need --cap-add=NET\_ADMIN for ebtables to work
* port can be None
* Skip null nexthops
* test\_port\_down\_flow\_gone should be in separate test
* Expire nexthops on port down event
* Test that eth dst flows are garbage collected when port goes down
* Use tunnel\_type for consistency
* pytype
* pylint
* pylint false trigger on comment
* parallel in test image is 2014 era so needs different halt flag
* Scapy >2.4.0 broken
* Fix coverage holes for LACP active/flap cases. Ensure remaining event handlers can return ofmsgs for multiple valves. Refactor to allow setting loop protection field
* External loop protection + stacking needs to set loop protect field in VLAN table
* Fix LACP active test for hardware
* Allow setting of loop protect field on output
* Explicitly dedupe action list for flooding rules
* Adding port up check
* Don't check non-harpin ports
* make a port's lacp state up before rebuilding flood rules
* test should wait for lacp port to come up
* Need to merge ofmsgs from previous Valve service call
* fix incorrect logging on LAG port
* Valve services functions can return ofmsgs for multiple Valves
* Kill even unhealthy controllers
* pylint
* VLAN internal reservation
* Valve tests with fakeOFtable
* tunnel acl flowmods created by acl manager
* BUGFIX: Chewie port never comes back up
* Include unit test to catch faulty instructions
* change formatter for ports < 65535
* Generate prometheus metric tables better
* Need sphinx 1.8
* Import new apidoc main()
* Fix table overflow/wrapping issue in rtd theme with CSS
* Use more appropriate table column sizes

1.8.30
------

* Upgrade to chewie 0.0.12
* Preversion 1.8.31
* README 1.8.30
* allow dot1x to run on < 65535 ports per dp
* pylint
* Remove unnecessary 2to3 list() syntax
* Update interface mirroring documentation interaction with ACL mirroring
* handle removal of permanent learn flows with ValveHostManager
* Add method for the removal of filters from classification table
* Re-enable groups for stacking. Don't send group with same actions but different ID for unicast flooding (may cause hash collision). Add more port flap tests to stacking
* remove no-op deletes
* make valve\_pipeline responsible for deleting flows from egress\_table
* Add del\_port and del\_vlan commands to ValveManagers

1.8.29
------

* fix indentation
* groups silently disabled when stacking until better tested
* remove no longer needed references to tables
* Preversion 1.8.30
* Upgrade to chewie 0.0.11
* Test VLAN PCP match and set
* Upgrade docker images
