CHANGES
=======

1.8.21
------

* Use newer grafana and prometheus versions
* Allow iperf retry on client connect failure
* Add mirroring to global router test
* Remove iperf diags
* static gw workaround by address family
* static neigh workaround
* Add static router neighbor for global router test
* Add more iperf diagnostics for client
* Dump logs for failed tests
* More iperf diagnostics
* iperf diagnostics where iperf client or server does not start
* Re-enable FaucetTaggedGlobalIPv6RouteTest with increased timeout
* Increase timeout for iperf client connection
* Revert "unit test with chewie"
* Hairpinning a port disables eth\_dst refresh optimization (because either eth\_dst or eth\_dst\_hairpin might not be used)
* Bump version for release
* Revert "Add random fraction of a second to thread schedule jitter."
* Revert "Run stack link expiry less often."
* pylint
* Add Generic valve type (all defaults)
* Run stack link expiry less often
* Global IPv6 route test still failing under CI
* Add random fraction of a second to thread schedule jitter
* Allow config exclusion of meters for OVS
* Reenable Global IPv6 test
* Disable meter support for OVS while troubleshooting
* Skip tagged global test for further troubleshooting
* Add valve\_service processing time
* Allow setting ping timeout
* Update sphinx from 1.7.9 to 1.8.0
* Enable FaucetTaggedGlobalIPv6RouteTest
* pylint
* pylint
* Skip IPv6 global route test for now
* IPv6 Global router test. Fix IPv6 tuple test
* No need for HOSTPREFIX
* Use ipaddress.ip\_interface()
* Template ping/fping
* Global routing constants
* scapy template
* More efficient drop rule accounting
* Use eth type constants
* Incremental change to Global routing test for IP independence
* Implement port stats stale flag
* Need to track port by VLAN cache add time
* pytype
* pytype
* Smarter avoiding of updating Prometheus learned\_macs on a port
* Avoid updating Prometheus learned\_macs if learned\_macs did not change
* Relax default learn jitter further
* Utilize OF capability to multiply output packet on many ports
* Relax learn jitter further to spread L2 relearn load
* \_controller\_and\_flood()
* IP version independant handling of interception/flooding of IP versus ICMP traffic to VIPs
* Don't not direct ICMP to controller, otherwise we can't use it for learning
* cache guard time must be an int always
* idle timeout on eth\_dst rules should always be greater, not the same, as src idle timeout to avoid unnecessary flooding
* Do not idle timeout hairpin flows
* Stricter ARP diversion to controller
* Explicitly drop unhandled ICMPv6 that was unicast to FAUCET
* Remove no-op check for valve\_packet.IPV6\_ALL\_NODES
* Revert "Remove no-op IPV6\_ALL\_NODES."
* Remove no-op IPV6\_ALL\_NODES
* refresh rules distinct from delete\_existing
* Avoid needlessly refreshing eth\_dst rules if a host remains on the same port
* cache guard time should be much more relaxed (to avoid rule thrash caused by link local IPv6 NS/reachability)
* Test NS for link local address
* Avoid multicasted ICMPv6 NSs for non FAUCET VIPs to controller
* vip table should check eth\_dst for ICMPv6
* btos() no longer needed now all python3
* cache\_update\_guard\_time default up to 17s from 7
* Ignore all nodes messages in control plane earlier without reparsing packet
* Test adding a VLAN
* Trivial port metadata fuzzing
* pylint
* pylint
* Test deletion of a port
* Test coverage for deleting VLAN
* Test coverage for ACL changes
* Test coverage changing ACL on a port
* Add test infrastructure to check config reload type
* prom\_inc() check incorrect
* test\_valve.py header
* pylint
* check flows added
* declare var before use
* change import style after rebase
* radius options
* remove exception catch
* unit test for chewie
* test chewie interface
* test chewie interface
* FaucetTaggedGlobalIPv4RouteTest needs NETNS
* Since we are apparently limited to creating one netns at a time, serialize netns based tests
* Workaround the apparently limit of one netns per test by cleaning up netns whether a test passes or fails
* Shorten timeout for ping
* get\_host\_netns() needs to be precise
* Rewrite test should use private MAC addresses
* Pre-version 1.8.21
* get\_netns\_list() can include other test hosts

1.8.20
------

* Don't need to verify flow since verifying functionality
* Verify hairpin routing
* Mark ZodiacGX testable with meters
* macvlan mode default should be vepa
* Simplify hairpin test
* add\_macvlan() allows configuration of mode
* Bump version for release
* Global router test verifies routing performance between VLAN/subnets
* Use macvlan VEPA mode in global test for MAC address diversity and enable verification of routing flow counters
* Revert "https://github.com/google/pytype/issues/133 is fixed so don't have to run under parallel."
* Revert "Run pytype by top level directory to limit memory usage."
* Revert "Still need to use parallel for pytype as pytype uses lots of memory."
* Still need to use parallel for pytype as pytype uses lots of memory
* Run pytype by top level directory to limit memory usage
* https://github.com/google/pytype/issues/133 is fixed so don't have to run under parallel
* Update pytype from 2018.8.10 to 2018.9.7.1
* Update sphinx from 1.7.8 to 1.7.9
* verify push\_vlan()
* ACLs should verify set\_fields
* Revert "ACLs also verify set\_fields."
* ACLs also verify set\_fields
* set\_field() should verify table config
* Verify all goto\_tables()
* Verify goto table/miss table config
* Fix unit tests for goto fix
* Set eth\_dst/hairpin/vip consistently
* Global router pylint
* Add link to pytype issue
* pass extra options for chewie v0.0.7
* removed catch exception
* Revert "Pregenerate pyi for mainline faucet."
* Pregenerate pyi for mainline faucet
* Global router test should have hairpin\_unicast enabled
* missed next table for port\_acl
* Port ACLs can skip VLAN validation
* Need to check py3 version later
* build matrix python 3.[46], but run docker tests under 3.6 only
* Log resolution attempt for non-connected network
* Handle packet not in faucet\_vip network
* pylint
* Add hairpin\_unicast config
* Add config for hairpin table size
* Configure next tables for hairpinning
* Port hairpinning now uses hairpin table
* Make DP output table dynamic
* eth\_dst\_hairpin should match on VLAN also (so same MAC in different VLANs handled)
* Further reservation of eth\_dst\_hairpin table
* route manager doesn't need to know flood table
* Reserve eth\_dst\_hairpin table
* revert - revert dot1x tests with chewie v0.0.5 (radius & statehandlers)
* revert - revert chewie-multivalves
* Pre-version 1.8.20

1.8.19
------

* Revert "Merge pull request #2377 from Bairdo/chewie-radius"
* Rollback to chewie 0.0.2
* Revert "Merge pull request #2380 from Bairdo/chewie-multi-valves"
* Chewie 0.0.7
* chewie 0.0.6
* Preversion 1.8.19

1.8.18
------

* Need to key off of table\_name, not ID
* pylint
* Confusion of missing/unregistered tags
* chewie version 0.0.6
* run dot1x tests in parallel
* Log labels incorrect for diagnosis
* Fix unit test for VIP table
* TFM autosizer more generous with VLAN table
* Rightsize L3 test
* VIP table can goto flood
* next tables must be iterable
* Rightsize scale L2/L3 tests for mostly TCAM hardware
* chewie config options for radius server ip/port/secret & chewie id
* maybe fix pytype error?
* Only flood down one member of LACP bundle
* vip table can forward to eth\_dst
* missed reference to new\_tables
* Actually use the next tables
* Bump README for release
* Handle configuration of very short maximum backoff interval
* Need to share state on table based variables so labels can be synchronized across all DPs
* handle cases where dot1x not enabled on first (or any) DPs
* Add random jitter to nexthop retry time
* Update sphinx from 1.7.7 to 1.7.8
* Targeted nexthop resolution uses unicast address
* IPv6 neighbor timeout should be much shorter
* Use different IPv6 neighbor timeout
* Revert "Revert "Separate timer for ND from ARP.""
* Need to check next retry time on unresolved nexthop
* Revert "Separate timer for ND from ARP."
* Simplify multicast address calculation
* Test repeated NS
* Separate timer for ND from ARP
* pylint
* pylint
* IPv6 hop limit critical
* Hop limit in advert must be 255
* Rename arp\_neighbor\_timeout to generic
* Don't reset cache entry every time when proactively resolving
* Missed ref. to cache gaurd time
* Reset ND timeout to 250s Allow configuration of L2 cache guard time
* need main() in check\_faucet\_config
* Make IPv6 ND timeout separate from ARP
* Set RA hop limit to 64 not 255
* pylint
* Raise min lint score to 9.4
* pylint
* pylint
* Spelling
* pylint
* pylint
* pylint
* pylint
* pylint
* FAUCET should reply to unicast ARP requests
* missed reference to new\_tables
* pylint
* pylint.,
* pylint
* pylint
* pylint
* Actually use the next tables
* update to chewie v0.0.5
* Should not have tags/metrics as class attribute
* lint
* Handle switch sending us unknown VLAN ID in FAUCET MAC when global routing is enabled
* dot1x on multiple ports
* Test name was too long. Timeout flow removed check. Start radius in setup
* dot1x tests with chewie v0.0.3 (radius & state handlers). Tests check all dot1x prometheus variables
* Use cached nexthop type deque
* Pre-version 1.8.18

1.8.17
------

* copy canonical table config
* flow is most likely a packet out so check that first
* global\_routing
* Make \_stateful\_gw() cheaper
* Only log ND/ARP activity if causes a state change
* Simplify icmpv6 checks
* Simplify CPN checks
* Reuse of gw advertisement
* Protocol independant VIP response handler
* Reuse resolve\_gw\_on\_vlan/port
* Add support for pip versions >= 10
* move part of valve.\_inc\_var() to faucet\_metrics.inc\_var()
* rename valve.\_port\_labels() valve.port\_labels()
* More use of ip\_pkt()
* Re-use \_ip\_pkt()
* Add dp & port metrics for failure/logoff/success. Add handlers for failure/logoff. Add partial test for logoff
* Catch problem with resolver not trying to resolve a gateway from coldstart
* Redo avoid double lookups
* Should check that cache entry is placeholder when resolving
* Revert "Avoid double lookup."
* Fix versions to match requirements.txt
* Add packaging test for comparing versions
* Test mirror port resolution
* use hex to remind me that this is a dictionary not a list
* validate valid mac validation
* Add test\_override\_port object validation
* Mark 8021X test software only
* Remove notify event for 8021X
* 8021X test cleanup
* pylint
* Yakkety and zesty are EOL
* Recursively include requirements.txt in test-requirements.txt
* distlib, packaging et al still fail
* Force deterministic python version for pytype
* Update sphinx from 1.7.6 to 1.7.7
