CHANGES
=======

1.7.0
-----

* Bump to 1.7.0
* Add release notes for 1.7.0
* Apply correct docker image to deploy-package job
* FaucetUntaggedMultiConfVlansOutputTest still doesn't pass under Travis (base OVS too old?)
* Enable OVS multiple tags and tests
* Revert "Enable FaucetUntaggedMultiConfVlansOutputTest."
* Enable FaucetUntaggedMultiConfVlansOutputTest
* Update log and config directories in documentation
* Update paths used by VM builder
* Log which configuration file we used on startup
* By default load our ryu.conf on faucet start if it exists
* Document environment variable usage
* Complete FaucetUntaggedOutputOverrideTest
* Incremental test of output override
* Incremental implementation of override\_output\_port
* Check undefined override\_output\_port
* Add config for Override output port
* Tidy gitlab ci
* Preversion 1.7.0
* Enable use of YAML CLoader
* comments for Cloader
* bast -> bcast
* Test that broadcasts to mirrored port are mirrored
* Incremental fix for port mirroring - broadcasts to a mirrored port were not mirrored, and an extra copy of packets broadcast from a mirrored port were sent
* Make YAML duplicate key checker more efficient
* Optimize flooding rules for stacking, if combinatorial\_port\_flood is disabled
* Add log message when host moves ports
* Allow DP type decision for whether to use barriers
* Use more consistent cache refresh time
* Increase probability of L2 rule refresh
* Test broadcast not flooded back to self
* Use correct allow instructions for VLAN ACLs
* gitlab-ci.yaml added
* Use SwapVid feature to smash a packet into another VLAN
* Adding debian packaging support to faucet
* Add DP config option, combinatorial\_port\_flood (default True). If False, we use only one flood rule for all ports on a VLAN (using OpenFlow spec implied behavior, if a rule says in\_port=n,output:n,x,y, packet is sent to x and y only, because OFPP\_IN\_PORT was not specified)
* Make in\_port filtering optional when building a flood rule
* Incremental implementation of force\_port\_vlan in ACLs
* Refactor to support force\_port\_vlan
* pylint
* Even uglier flow dedupe
* Only dedupe ofmsgs if deletes
* Ugly but necessary dupe flows helper
* De-duplicate all OF messages sent to dataplane
* Preversion 1.6.28
* Crash clearing cache when port has permanent learn enabled

1.6.27
------

* PIP typo
* Version bump
* pip claims setuptools not installed, when install request is on same command line as ryu. Make ryu a seperate install command
* Preversion 1.6.27

1.6.26
------

* Pre-install Ryu in base-test image
* Version bump
* Test coldstart safety with BGP
* Clarify BGP limitations even further
* New pytype throws pyi-error for os
* pytype
* Switch from getopt to argparse
* \_set\_port\_status()
* discovered\_ports
* Synchronize Prometheus port state with DP at connect time
* Revert "Update sphinx from 1.7.0 to 1.7.1"
* Update sphinx from 1.7.0 to 1.7.1
* Test suite and documentation fixes
* Parse FAUCET LLDP messages
* Parse LLDP helper
* Add LLDP receiving TODOs
* Enable logging of LLDP
* Need to disable LLDP receiving incrementally
* Incremental support for receiving LLDP
* faucet\_dp\_mac
* Move LACP match to VLAN table
* We need to handle packets without a VLAN tag (control plane traffic)
* Revert "Move LACP match to VLAN table."
* Move LACP match to VLAN table
* LACP/LLDP packets should use separately configurable MAC rather than native VLAN's
* Move default FAUCET\_MAC to valve\_packet.py
* Encode DPID in LLDP packets
* Stack ACL test needs to be single, because uses static port
* ACL stack test needs to trigger learning
* Don't need to verify no error deconfiguring addresses for switch interfaces
* bcast\_blocked should fail with one try if we see a packet
* Stacking broadcast tests should retry as necessary
* Don't learn hosts with broadcast destinations from stacking port
* Flood manager needs eth\_src table
* Add Ethernet broadcast tests
* Log L3 dst address also when learning. Test broadcast connectivity when stacking
* OVS switch interfaces should not have any IP config
* Rate limit update\_metrics() only on packet in, not in background
* Revert "MaxPorts tests both need update metric rate 0."
* MaxPorts tests both need update metric rate 0
* Still cannot 1Hz update yet
* 1Hz updates except for ban test
* Install dsniff
* reduce pps for learning test to avoid kernel load
* kernel ARP processing on many macvlans overloads test environment
* Disable IPv6 on L2 scaling test (kernel overload)
* Add hook to allow simplification of host interfaces
* Need to handle ReadTimeout
* Update Ryu to 4.23
* Simplify scrape Prometheus
* update NoviFlow docs to have larger tables for test automation
* Stack tests need OVS\_TYPE
* Attempt flood ping after meter applied
* Default to kernel based OVS unless using meters
* OVS 2.9.0 supports meters, so test them and switch to netdev based bridges to get access to them
* Documentation cleanup for output dict
* Only call update\_metrics() for ports that were updated
* With lots of hosts, learned\_macs and counters can be temporarily desynchronized while being updated
* Add prometheus rule for creating instance\_dpid:ignored\_packet\_ins:rate1m
* Preversion 1.6.26

1.6.25
------

* Update version
* Better explain vlan\_neighbors variable
* Workaround stale netns
* dps -> dp
* Dead nexthop cache entries need to be expired
* total\_port\_vlan\_hosts\_count doesn't account for stacking
* Make faucet\_bgp cold/warm/start safe
* Revert "Remove vlan total hosts/by port count run time check."
* add\_cache\_host() didn't handle existing entry on different port
* Remove vlan total hosts/by port count run time check
* Revert mesh tests
* Runtime consistency checks for learning metrics
* Don't verify learn counters in mesh test yet
* HostCacheEntry incorrectly used cache\_time in key
* verify learn counters in IPv4 and 6 routing meshes
* Helper to verify learning counters
* Test vlan\_hosts\_learned == port\_vlan\_hosts\_learned
* Explicitly decode of\_dp\_desc\_stats labels as UTF8
* bgp handler should use keys for DP ID and VLAN
* diagnostic changes for faucet\_bgp (and re-enable bgp\_connect\_mode paramater)
* Correct default for Gauge Prometheus address
* Default Gauge Prometheus address
* Preversion 1.6.25

1.6.24
------

* Build faucet-event-adapter-rabbitmq-pi on pi build cluster
* Need to rollback coldstart check for BGP as well, because with faucet\_bgp rollback, it's not safe again
* Roll back faucet\_bgp due to https://github.com/faucetsdn/faucet/issues/1706
* Use PromGauge, not Gauge
* Rename test thread param
* Need to use threads when testing
* Remove confusing PromGauge reference
* Configure IPv4 BGP peers first
* Add TODO to make MAC table updates less expensive
* Add TODO to rate limit update\_metrics() calls
* Revert "Don't call update\_metrics() at all on packet in."
* Add config time check for BGP peer families
* Don't call update\_metrics() at all on packet in
* Delete FaucetUntaggedBGPIPv46RouteTest
* Allow config of BGP config mode
* Don't double add/del prefixes on BGP peer config/deconfig
* Disable MP-BGP
* Add FaucetUntaggedBGPIPv46RouteTest
* Fix log handler
* V46 test not ready yet, and log peer up/down
* local\_as
* minor BGP refactor
* Multiple adds of VAN routes
* Version bump
* Add documentation builds to test suite
* Revert 16eb309
* add get\_sys\_prefix (copied from valve\_util), for when running in a virtual environment
* Update sphinx from 1.7.0 to 1.7.1
* FaucetMaxHostsPortTest needs to check for cleared MAC address
* Increase L2 scale test to 2048
* Make MAC table export less expensive
* Increase L2/L3 test limits to 1024
* ping\_all\_when\_learned() causes CPU spike in verify\_learning() don't call update\_metrics on every packet in, only when flows emitted
* Rate limit connectivity test
* Make counting hosts learned on port less expensive
* Run int tests using test source directory, not pip3 installed version
* remove unneeded variables
* pylint
* allow 0,1, or path to be specified
* add a dockerfile for rabbitmq-adapter on raspberry pi
* rabbitmq adapter use FAUCET\_EVENT\_SOCK as path
* Add L3 integration test
* Revert tc on controller
* Add tc for controller interface
* Revert "Experimental increase of learning test to 1024."
* Upgrade to DPDK 18.02 (though can't be built with -j)
* Simplify DPDK build
* reset BGP neighbor before deconfiguring
* Support multiple BGP VLANs (work around single Ryu BGP speaker limitation)
* Document Ryu only supports one BGP speaker. Determine BGP VLAN by looking up peer IP address
* native\_vlan
* Remove couchdb from architecture diagram
* Remove more CouchDB dependencies
* remove more couchdb dependencies
* Remove support for CouchDB
* Comments for flow\_timeout()
* Configure switch not to send us flow removed messages if not needed (default case)
* Test coverage to 76%
* Test IPv6 NA
* Test coverage for IPv6 FIB route
* Add test for ARP reply from host
* Test case for ICMPv6 RAs
* Can't use ofp.OFPP\_LOCAL as a test interface
* couple minor changes:
* use delete\_strict in Valve.lacp\_up()
* LACP intercept length should be longer
* Use common signal\_handler/start
* Common event should be in valve\_ryuapp
* Use common base signal handler
* Use same config\_stat method
* Gauge can use ConfigWatcher()
* Use common ConfigWatcher implementation
* Pre-version

1.6.22
------

* Fix ln -s for pre-commit
* Update version
* Revert "Upgrade DPDK to 18.02."
* Upgrade DPDK to 18.02
* Docs for ACL mirror action
* TODOs
* Put faucet pipeline config in own file
* Use common start/stop watchers
* Start watchers
* Add start/stop watcher helpers
* Switch from coveralls to codecov
* Revert "Faucet and Gauge can use same signal handler."
* Revert "RyuAppBase."
* RyuAppBase
* Faucet and Gauge can use same signal handler
* Still a list
* Still incorrect watchers iterator
* Watchers is a dict itself
* Revert "enumerate order."
* enumerate order
* Gauge should hang up on unknown DPs
* Increase min test coverage
* Add coverage for add/del route
* Test coverage for add/del route
* Test coverage for datapath disconnect
* Test coverage for learn FIB route from packet
* Provide initial configuration for pyup
* Increase min coverage
* MirrorACL test case fix
* Test coverage for TFM
* Only call learn\_hosts() where necessary
* pylint
* Remove unnecessary test attributes
* Reorganize Valve tests to base class without tests
* Re-enable pytype
* pytype
* pytype
* pytype
* Revert test\_valve.py change to base class
* Revert pytype
* Revert "Revert "pytype.""
* Disable pytype to investigate coverage decrease
* Revert "pytype."
* pytype
* pytype
* Revert "pytype."
* pytype
* Pre-version v1.6.21

1.6.21
------

* Release v1.6.21
* appease 2to3
* Add --display-labels option to fctl
* Exclude base class from testing
* pylint
* Test LLDP results in packet outs
* Remove unused matches
* Remove unneeded ryuapp variables
* Move common initializers to valve\_ryuapp.py
* Miss call to self.get\_setting()
* Setting needs to be upper
* Move get\_setting() method to valve\_ryuapp.py
* Revert "Move more common features to valve\_ryuapp.py."
* Revert "Move common logging/setting parsing to valve\_ryuapp."
* Move common logging/setting parsing to valve\_ryuapp
* Move more common features to valve\_ryuapp.py
* Use common RyuApp class
* Test request\_reload\_config()
* Increase test coverage for valves manager loads\_configs()
* Add testing for valve managers load\_configs()
* Move hard to test code out of faucet.py
* reload\_config() doesn't need to return cold start flag
* Add coveralls.io badge
* Increase minimum test coverage
* Increase test coverage for fctl
* Reparse args for testability
* Test new\_valve()
* pylint
* Add test coverage for main
* Increase minimum test coverage
* Don't have to hardcode astroid
* Test coverage for fctl
* pytype found corner case with no resolver flows
* New pytype workaround
* Prevsion 1.6.21

1.6.20
------

* Revert "Test new\_valve()."
* Version bump for release
* Test config file change detection
* Test new\_valve()
* Test parse\_configs()
* Move new\_valve to valves manager
* pylint
* Fix ofdescstats handler
* Increase minimum unit test coverage
* Use port state helper
* Add port state decoder
* Move ofdescstats\_handler to valve
* Move more un-unit testable code out of faucet.py
* Need to give callable to valves manager so can send flows to DP by ID
* Initial coverage for valves manager
* faucet.py no longer needs config hashes
* Move config change stat to valves\_manager
* BGP gets metrics as initializer
* Incremental move of BGP to valves manager
* Incremental move of update\_metrics to valves\_manager
* Incremental move faucet.py state to valves\_manager
* Add ValvesManager class (incremental change)
* Ryu 4.22
* Need to reset nexthop retries if we get more packets for long-term dead nexthop
* Clarify ACL change detection
* Test other valves which may not be stacked
* Verify stacking flooding
* Clarify flooding test messages further
* Clarify messages from flooding test
* Run docker pull explicitly to avoid Travis timeout
* Increase test coverage handling packet in
* pylint
* Move pkt\_meta parsing to valve
* Test handling of unknown port number
* Use common mirroring actions implementation
* push up base and python3 images for docker-compose
* Event server should reject multiple clients, and also keep only most recent N events when the queue is full
* All hosts must have nonzero eth\_dst counters
* Add retries for flow tables in Prometheus
* Add test for Prometheus flow logging
* Add unit tests for gauge config
* dps shouldn't be a required key for gauge.yaml #1441
* Reduce dimensions for Prometheus flow table logging
* Prometheus/Influx now logs DP ID
* Initial implementation of Prometheus flow table counters
* Incremental implementation of flow table counters for Prometheus
* map old OF match names to new
* Update faucet\_mininet\_test\_base.py
* Update faucet\_mininet\_test\_base.py
* Update faucet\_mininet\_test\_base.py
* Need to translate back to old matches for Ryu ofctl
* Remove old style unsupported tp\_dst match
* Add flow counters for Gauge Prometheus
* Drop support for old style OF1.0 matches (nw\_src, nw\_dst et al)
* Run more unit tests in pre-commit hook
* Pre-version 1.6.15

1.6.14
------

* Release faucet 1.6.14
* pylint
* Better check for bad include format and fix errors
* Fix typo
* Fix #1414
* Fix #1412
* Fix #1415
* Fix #1410 and #1411
* Fix #1409 and #1408
* Fix #1407 and #1406
* Fix #1405 and #1401
* Fix #1404
* Update docker documentation
* Add note that only one client is supported
* Allocate new port if iperf client or server fail to start
* typo
* Explicitly set iperf client IP
* Revert "Revert "Add routing IPv6 routing test address by loopback interface.""
* Revert "Add routing IPv6 routing test address by loopback interface."
* Add routing IPv6 routing test address by loopback interface
* TODO to fix IPv6 test host addresses for consistent ND
* Revert "IPv6 routing tests can fail occasionally because we don't find the FAUCET VIP in the IPv6 neighbor table."
* IPv6 routing tests can fail occasionally because we don't find the FAUCET VIP in the IPv6 neighbor table. This is because the source address of the neighbor discovery request was not predictable and FAUCET might not reply to it
* FaucetConfigReloadAclTest should verify port 4 can't be learned as well
* FaucetConfigReloadAclTest less redundant
* FaucetConfigReloadAclTest can fail due to hosts learned check before Prometheus updated
* FaucetConfigReloadAclTest might expire a host under load
* Remove logs every controller start attempt, log prom output from both FAUCET and Gauge automatically
* More thorough check that FAUCET is listening on Prometheus port
* Check controller health again after test start/switch connection
* Revert "Temporarily add .fuzz to enable deletion of orphan repo on Dockerhub."
* Temporarily add .fuzz to enable deletion of orphan repo on Dockerhub
* Remove exception logs before restarting test
* Put default for FAUCET\_EVENT\_SOCK in get\_setting()
* Fix console command
* adjust entrypoint permissions; add group
* add /var/run/faucet
* add in from @gizmoguy
* lock pytype to a commit that works
* docs should clarify usage is an env for docker run
* fixing requested changes
* rework dockerfiles using su-exec in a base image
* put sudo back
* extra dependencies, ovs lock requires root
* set ipv6 conf
* simplify build time for tests
* build the base-tests along with the tests
* switch Dockerfiles mostly to non-root; fixes #1391
* remove section that is no longer accurate
* update DPDK to 17.11
* Preversion 1.6.14

1.6.13
------

* Release 1.6.13
* Add link to Poseidon tutorial
* Clean up pydoc strings
* Fix error logging
* Add additional sanity checking over state of event socket\_path
* Add docker flag for starting with ipv6 enabled
* Switch to using napoleon for generating code documentation
* Add descriptions of faucet/gauge
* Fix Sphinx build warnings
* Optimized config-fuzzer and related files
* Revert "Try https://blog.travis-ci.com/2017-12-01-new-update-schedule-for-linux-build-images."
* Try https://blog.travis-ci.com/2017-12-01-new-update-schedule-for-linux-build-images
* FAUCET\_EVENT\_SOCK can be a bool (default path) or an explicit path
* Check event\_sock actually needed
* hotfix changing FAUCET\_EVENT\_SOCK to a bool
* fix formatting for md -> rst
* minimize exposure of /var/run; md -> rst;
* Revert "Add another shard."
* Add another shard
* incorrect pylint import warning
* STAT\_RELOAD environment variable not explicitly set, so can be left over from previous test in the environment
