CHANGES
=======

* Bump version for Monday release
* Add ref to vendor specific docs
* Verify ip neigh returns parseable result
* Switch loghandler to WatchedFileHandler - FAUCET/Gauge no longer rotate their own logfiles - this must be done by standard tools like logrotate
* Add example queries for flow tables in InfluxDB
* Initial flow table export to InfluxDB
* Infrastructure for CouchDB testing (no testing yet)
* Move more common poller/logger functions
* Move update() common code to library
* Refactor common code in InfluxDB library
* Move NSODBC to own library
* Add ConnectTimeoutError
* Move InfluxDB to gauge\_influx.py
* Move port/flow pollers to gauge\_pollers.py
* Move GaugePoller to separate file
* pylint
* Decrease timeout for Influx unreachable test
* Handle a ReadTimeout from InfluxDB
* Separate tests for Influx down/unreachable
* Verify that error connecting to InfluxDB is noted in Gauge's log and Gauge exception log empty
* Add newline
* Quote diagram
* Upgrade Ryu to 4.15
* Add diagram to hardware testing
* Missing \_ip\_neigh() arg
* Test separate MAC addresses in intervlan routing
* Fix pip install
* Test override of FAUCET MAC for RAs
* Neighbor discovery needs MAC in uppercase
* packet\_builder() needs vlan arg
* Don't hardcode FAUCET\_MAC
* Make FAUCET\_MAC configurable
* Configure table\_ids from prometheus
* symbolic names for table\_ids
* rename db to influxdb
* Fix up prometheus with docker-compose
* Install client gNMI binary
* Make the gNMI client run
* Test VID swapping
* Implement swap\_vid (swap existing VID with another)
* Remove restriction on global inter VLAN routing
* Use IPv6 hop limit 255 for link local traffic consistency
* update docker-compose for 1.5.4
* Bump version number
* stack ports should not have vlan-tag stripped
* Update the paths of keys and certs
* Flood table needs to be larger for ncast rules
* Add reference to hw\_switch\_config.yaml
* Add router conf to defaults type checking
* Enable type checking on all DP items
* mirror can be str or int
* Add guideline for testing self-signed certificates
* Remove obsolete README
* Add config default type checking
* Better enumerate table IDs so easier to skip unused tables in future based on DP configuration
* Don't need to mask eth\_src/dst in eth\_src table
* Add wildcard config back
* Need to implement ncast of ARP messages not destined for VIP
* Revert "Move arp\_tpa to VIP table (less expensive)."
* Move arp\_tpa to VIP table (less expensive)
* Revert "Partial remove of icmpv6\_type match."
* Partial remove of icmpv6\_type match
* Revert "Make table 3 more narrow (loose icmpv6\_type)."
* Revert "Don't need to match icmpv6\_type in table 3."
* Don't need to match icmpv6\_type in table 3
* Make table 3 more narrow (loose icmpv6\_type)
* Implement workaround for platforms that can't do dec ttl
* Enable IPv6 partially
* Fix Aruba for VIP table
* Delete all flows using wildcard
* Add VIP table
* Syntax
* Need default method for add\_faucet\_vip\_nd()
* ipv4\_src not required in eth\_src
* Refactor VIP flow generation for common code
* Migrate FIB to VIP flow generation to common function
* Migrate to IPv6 VIP table
* Migrate IPv4 to VIP table
* Syntax
* Simply add\_faucet\_vip()s
* Temporarily revert VIP table changes in favor of incremental ones for easier testing
* Proactive mode fixes
* Use descriptive table names
* Add to table\_ids to account for VIP table
* Make space for VIP table
* Ethernet source doesn't need to match ipv4\_src
* FIB tables don't need to match protocol fields
* Migrate to VIP table (converting FIB tables to exact match)
* explictly specify version in docker-compose.yaml
* Allocate FAUCET VIP table
* Cleanup use of route managers
* need to run apt-get update again
* Can't run python3 based tests easily outside docker
* Skip pipeline configuration if necessary
* Test tagged groups
* TFM driver now compares TFM config with known requirements to make sure they match
* Synchronize Aruba pipeline config with FAUCET
* Remove more unneeded features
* Remove more unnecessary pipeline features
* Remove more unnecessary pipeline features
* Remove unneeded miss/features
* Add missing in\_port to table 6 and make names more conveniently located
* Revert "Iterate over route managers rather than call individually."
* Hide ports server socket, and dump any exceptions if can't start controller
* Iterate over route managers rather than call individually
* pylint
* pylint
* Don't need to pin pylint anymore
* Typo
* Make group\_table\_routing seperate from group\_table (so you can have group table based VLAN flooding without using groups for nexthops)
* More .gitignore vim noise
* Group tables including hairpin not supported yet, but shouldn't break nonetheless
* Don't hard code in\_port in Hairpin test
* Support hairpin mode
* Implement switched\_edge (configurably allow switching between hosts on the same port)
* Reorder import
* Revert "Delete legacy \_\_init\_\_.py and reorder module imports."
* Delete legacy \_\_init\_\_.py and reorder module imports
* Revert "Remove python2 legacy import infrastructure."
* Remove python2 legacy import infrastructure
* We no longer support python2. We are fully tested against python3.5 (and likely other versions of python3)
* Reenable config check CLI
* Another python3 gauge library fix
* More library path for Gauge
* Library workarounds
* Import reorder
* setuptools missing from Gauge dockerfile
* Revert "move to python3 paths."
* Expose Prometheus Ports in Docker
* temp disable config cli check
* PYTHONPATH
* Needs PYTHONPATH for check\_config
* move to python3 paths
* exabgp 4 is totally broken, but the only version of exabgp that starts under python3. Stick to python2 exabgp 3.4 for now
* Need netbase
* Need netbase
* Don't specify pip as pip3 for upgrade
* Upgrade pi Docker to python3
* Update docker builds to use python3
* Disable pylint3 of python2 mininet test suite
* Bump to 1.5.3
* Use env to pass pythonpath
* Add show of installed package as check
* Need to call lint check with python path
* pylint check needs PYTHONPATH
* Need to install python3 version of test dependencies also
* specify python version for docker based tests
* Need test-requirements.txt
* Don't pin exabgp version
* pip3 install from file path incorrect
* Fix min lint compare
* Attempt to run Travis tests under python3
* test\_check\_config.py passes under python3
* Pass under python3
* dual python2/3 import style
* Add presentation I gave at AARNet Networkshop 2017
* Add prometheus to architecture diagram
* Update README\_noviflow.rst
* Move to new Trusty images (https://blog.travis-ci.com/2017-06-19-trusty-updates-2017-Q2)
* Test tabs are bad
* Refuse to reload a busted config
* Dockerfile to build and run FAUCET on Pi (Raspbian)
* pylint must be removed later
* Don't run gnmi\_cli
* Run gnmi\_cli
* Need to double apt-get update
* Add gnmi client
* Prompt ND resolution before fping
* Add IPv6 fping
* fping test is report only, just make sure some packets come back
* Make controller performance test single threaded
* fping IPv6 as well
* Do controller fping
* Bump to 1.5.2
* More hangup cases on unknown DPs. Explicitly hang up on DP if deleted
* rand DPID might be duplicate. test config reload with unkwown dpid
* Test reload config with an unknown DPID
* Reserve range of DPIDs for tests
* Hangup on unknown datapaths. Handle configuration of a newly configured DP after reload
* Return empty values for down DP
* Instrument warm/cold restarts
* VLAN \_\_repr\_\_ needs to be set to correctly detect changes
* Ensure pip package builds
* Bump version number
* Implement ports\_add which can add multiple ports at once and VLAN flood rules only once
* Make ports\_delete, which can handle multiple ports and defer flood rule updates to one operation
* port\_delete doesn't need old\_eth\_srcs arg
* Clarify cold start message
* hash calculation should sort items
* port modify should delete/add port
* delete old port (including VLAN config) before adding new one
* ReloadTest should define VLAN 200
* verify floods don't cross VLANs when port VLAN changes
* Verify floods don't cross VLANs
* Make port native\_vlan and tagged\_vlans more convenient (references to VLANs not vids)
* Increase lint min to 9.0
* Syntax
* Add generic TFM switch support
* pylint
* Quote style
* Revert "Remove unneeded CustomJson."
* Remove unneeded CustomJson
* Update HPE doc with pipeline config
* table name has to be byte string
* FaucetDestRewriteTest too short
* Add Aruba to lint checks, enforce min lint score
* pylint
* pylint
* Fix aruba\_pipeline.py for python3
* Look for JSON pipeline config files in /etc/ryu/faucet by default
* Move aruba configuration files to /etc/ryu/faucet/
* pylint
* Remove TODO to export host learning
* Explicitly test removing an ACL from a port
* Revert "pylint."
* Test removing ACL
* pylint
* Restrict iperf server to run only on specified IP
* Test VLAN ACLs
* Don't do a double open() on the flow input file
* change import style
* catch connect timeout error
* Wait longer for DP to come up (slower hardware switch defaults)
* More test healthchecks
* check dp status
* Don't block ports starting up
* Can't yield ports until net stopped
* Return empty if scrape prometheus fails
* Correct health checks
* exabgp not shutdown correctly
* All tests now parallel
* Move FaucetStringOfDPSwitchTopo to faucet\_mininet\_test\_topo
* fix que count
* Allocate and return ports to minimize port allocation conflicts further
* More health checks
* Recreate entire Mininet topo if necessary
* fuser\_out can be null if no results
* Another check that controller started OK
* Attempt restart of controllers if they don't start right away due to busy ports
* need to support Ls in dpid for Prometheus
* More time for ports server to start
* preallocate more test ports
* Remove net namespace
* Fix wrong arg passing of port.number
* check exception first in tearDown()
* pylint
* Wait for controllers to start logging
* Use host net namespace running tests
* Use isAvailable() method
* Wait for controller ports available
* test\_config.py more readable
* Revert "get\_native\_vlan() unused."
* get\_native\_vlan() unused
* Hide tagged/untagged implementation further from VLAN users
* port\_is\_tagged/untagged() takes port, not number (so can migrate to set instead of list linear search)
* Improve performance of Conf hash
* FaucetGroupTableTest needs to check for broadcast flow
* Smarter detection of actual VLAN config change by eliminating ports
* Wait on TCP listen ports causing hang
* Disable API test
* Reenable API test with shorter timeout
* Disable API test as nuisance flake while continuing to troubleshoot. Tests should verify controller listening on all ports before proceeding
* ports changed may impact vlans
* Pre allocate ports in ports server
* ACLs couldn't be compared because they did not inherit Conf
* watcher.stop() called with erronenous arg. Fix more log messages missing DPID
* Improve change detection logging and use cold start if all ports on a DP changed
* Improve logging in config change application
* Redundant port attributes
* Use common code when resetting flows on add/delete of port
* When cold starting a datapath, don't do unnecessary repeated deletes and repeated provisioning of flooding rules
* Defer adding learning flows until initial pipeline provision done
* pylint
* Pipeline provisioned twice on new connections
* Log DP ID
* Gauge did not handle DP events from unconfigured DPs
* Move Docker tests to python3
* test\_api python3 compat
* Syntax
* Fix FaucetGroupTableTest
* Strict dict-based matches for groups, table\_id for routes
* Syntax
* get\_group\_id\_for\_matching\_flow() uses get\_matching\_flow()
* Common helper for unicast flood status
* Support match\_exact
* syntax
* Incremental test passing progress
* Fix get\_all\_matching\_flows\_on\_dpid()
* Migrate more flow matches to new style
* flow matcher more strict (use parse flow dicts)
* python3 compat
* python3 compat
* python3 test compatibility
* Do exec of ryu-manager to reduce resource usage
* pylint
* Don't share test environment (causes tests to fail due to environment variable confusion)
* Implement templated packet out flooding
* Refactor: flooding implementation
* Don't need to reserve 9179 anymore
* Report controller crashes on initial DP status
* Increase max parallel tests
* Break/fix Ryu
* Correct Ryu version
* Break/fix
* Allocate BGP port dynamically so tests can be run in parallel
* Update requirements
* pylint
* pylint
* Move unit test implementation to own file
* Dump Ryu logs if controller fails to start
* pylint
* Use common prom port allocation
* Simplify FaucetAPI test
* Simplify BaseFAUCET
* Use common cargs
* Simplify BaseFAUCET
* pylint
* Move BaseFAUCET to topo.py
* Move Topo to topo
* Recreate faucet\_mininet\_test\_topo
* Revert "Add faucet\_mininet\_test\_topo library."
* Add faucet\_mininet\_test\_topo library
* pylint
* pylint
* pylint
* pylint
* pylint
* pylint
* pylint
* pylint
* Refactor setUp()
* pylint
* pylint
* Move timeout\_cmd to util
* pylint
* pylint
* Remove remaining helpers to base
* Move tcpdump\_helper() to base
* Move setUp() and gauge\_smoke\_test() to base
* Move start\_net() to base
* Move attach\_physical\_switch() to base
* We rely on at least ryu 4.14
* Fix Gauge container path
* Relative links not supported
* MD link format
* Revert "formatting."
* formatting
* Make READMEs linked
* Make Docker instructions more copy-pastable
* parse\_packet can return None
* Ryu's parser is too clever, trying to parse down to the application. Have it drop the packet if the Ryu parser crashes
* Correct dp\_status and N\_TAGGED/N\_UNTAGGED
* dp\_id not defined for dp\_status update
* default should be None for dp\_status
* Flap ports test needs to account for Zodiac tests which have less ports
* Add dp\_status Prometheus variable
* Implement port status in Prometheus
* Update to HPE Aruba documentation
* Wait longer for hardware switch to connect
* netifaces should be in test-requirements.txt too, for completeness
* Type check hw\_switch\_conf.yaml options
* Create ryu and faucet log directories if they don't exist
* Rework config installation on package install
* Fix startup race - test port server may not have started by the time first test needs it
* We don't update nexthops when responding to a ARP request/ND solicit
* Reduce default packet in size to 96b, except for icmp6 echo (should be 128b)
* Bump version to 1.5.0
* We need to install ryu from git for now
* Better diagnostics when controller doesn't start
* Add minimum pylint score test
* pylint
* Fix indent
* pylint
* pylint
* pylint
* pylint
* pylint
* pylint
* Fix threads not starting
* pin astroid version (pylint is unstable)
* Add test for unknown hardware
* Clean up configuration loader (and support deletion of de-configured DP)
* Move API config rendering to config\_parser
* Move port status handler to valve.py
* Make proactive learning configurable
* Extend unknown item check to all config types
* Should return full raw packet
* Add proactive\_learn config item
* Move packet in parsing to valve\_packet
* Move BGP implementation to separate file
* Use address family generically for IPv4/IPv6 options. Catch more possible exceptions in faucet.py
* Update comments. \_send\_flow\_msgs() should catch exceptions
* Register API as last step. Rename internal attributes
* \_is\_host\_fib\_route() should not return True if route not in the FIB. Don't proactively learn if already trying
* Revert "Don't try to proactively learn if we're already trying."
* Don't try to proactively learn if we're already trying
* Switch features handler called before DPSet knows about DPID
* Add test for IPv6 ND to FAUCET vips
* Ethernet multicast for NS calculated incorrectly
* Add log count of resolve flows sent
* Don't explicitly learn nexthop from RS, let learn logic do it
* Add testing of multiple VIPs in RAs
* Hotfix: RAs incorrectly generated multiple times in same packet
* Remove log noise
* rdisc6 based test
* Hotfix: need to filter to IPv6 VIPs where IPv4 VIPs also configured
* Don't restrict IPv6 responses to hop\_limit 255
* rdisc6 calls itself ndisc6!
* rdisc6 needs -V
* ndisc6 package, gets rdisc6 binary
* Use rdisc6 instead of ndisc6
* Fix ndisc6 dependency check
* Test response to RS
* Respond to IPv6 RS
* Listen to RSs
* Advertise every non-link local VIP, from every link-local VIP
* Only send RAs for fe80::/10
* hop limit must be 255
* Set hop limit in router advertisement
* router set instead of onlink
* Set RA A/L flags and verify. If advertise\_interval set to 0, disable RAs
* Need to make number of "-v" configurable for tcpdump
* Make advertise\_interval configurable. RAs with prefix should use network address
* RATest timeout too short
* moved documentation to docs
* Removed generating file
* Log noise from advertise
* Removed working
* Reduce RA frequency to ~30s
* removed rat
* mice md
* test
* added markdown version
* fine github display
* Add test for IPv6 VIP RAs
* Documentation for Conf subclasses
* Send an actual correct RA
* Implement sending RAs
* Implement periodic advertisements, simplify control channel handling and handle DP down when flows to be sent
* Add advertise services thread and simplify event triggering
* Be able to construct an IPv6 RA
* Fix iperf min test for IPv6
* iperf min test could get confused as to which host was the server
* Add delay between iperf connection retries
* iperf tests use dynamic ports
* aruba: Add arp\_tpa to the list of match fields on Table 0
* Same reliability fix for IPv4 iperf,
* Make IPv6 iperf more reliable (give ND a chance to work after port flaps)
* Make configuration of nailed forwarding less confusing
* flowdel returns a list
* Use DELETE\_STRICT to delete routes-as-flows, to cause priority to be respected (fix default routes)
* Actually exit with non zero status if any tests failed
* Add IPv6 default route test. Hit exabgp with a bigger hammer to kill it after a test
* Verify IPv4 default route
* Dump switch flow table on tearDown() for better diagnositics
* Test default BGP routing for IPv4. Route deletes should match priority so that route mask matches (otherwise delete of default deletes all routes)
* Ignore vim tmp files
* Use flowdel\_strict when deleting routes
* Ignore add/del routes for FAUCET VIPs
* Remove hardcoded port in Prometheus learned\_mac export
* pylint
* Remove hardcoded port in MaxPortCount test
* Refactor learned\_mac export
* Refactor learned\_mac tests to use common scrape\_promethesus\_var() helper
* removed to hex of dpid. pylint
* Actually check return status of tests when running under Docker
* FaucetTaggedProactiveNeighborIPv6RouteTest didn't actually test proactive learning because ND was defeating it
* Make scrape\_prometheus\_var() more robust
* vlan is numeric to wait\_bgp\_up
* Reset sensible learning defaults
* Make sensible learning limits by default
* Make learn\_ban\_timeout configurable
* Implement proactive neighbor limiting
* Implement vlan\_neighbors instrumentation and improve Prometheus testing
* Retry iperf if necessary
* Reduce test log noise further
* Add missing vid default
* Expand unknown config item check
* Make learn jitter configurable
* Implement proactive resolution for IPv6
* Implement proactive resolution for IPv4
* Divert traffic for unknown neighbors on connected subnet to controller for neighbor learning
* Remove pylint noise
* Test config check script under docker
* Silence confusing test output
* Stop iperf server process explicitly after test
* Safety timeout for exabgp is too low
* need to detect BGP listen address family
* Verify IPv6 router performance
* Do both IPv4 and IPv6 iperf/flap port tests
* Add support for IPv6 iperf testing
* Remove unused L4type arg to iperf
* Add EthSrcMask test
* Fix hardcoded use of AT ports in DestRewriteTest
* Fix use of hardcoded test ports in FaucetConfigReload test
* Make it possible to run individual tests when running under Docker
* Install a console script for check\_faucet\_config
* removed debug prints
* use fping from first host to second host's interfaces
* Hacky, but 10 tests passed
* Make \_verify\_host\_learned\_mac() more verbose to diagnose occasional test timeouts
* Move FaucetAPI to own module
* FaucetMetrics should be in own file
* Added extra ping
* Add tests for BGP neighbor routes
* Add BGP route count
* Set port\_mod up on all switch ports before each test
* refactor to port up/down admin methods
* remove logging & redundant test code
* Added another check. Cleanup
* Add mention of table features message
* remove commented pylint
* merged
* temp save
* clear all for this valve outside loop
* Added prometheus check to max hosts test
* test
* export mac learned 'map' to prometheus metrics
* ip neighbor cache can time out between pings
* pin exabgp version (test breakages)
* increase ID space for sid\_prefix
* Better debug for overflow in sid\_prefix
* Make Linux interfaces 1 char shorter (16 is the limit)
* Get rid of BGP debugging
* Add Prometheus port
* Correct number attribute for port
* FaucetSingleGroupTableUntaggedIPv4RouteTest still flakey (wrong args to group creation)
* Need ARP\_TPA in table 0 for nailed forwarding
* Need to match eth\_dst in table 0
* table 0 needs to match VLANs also
* Initial example configuration for NoviFlow
* Need to add a nexthop group before adding a FIB route when learning a new host from a packet
* Soft timeout for tcpdump (else we don't see output)
* Add metric updating thread
* Add BGP uptime monitoring via Prometheus
* Use Mbps, not MBps
* Use own implementation of iperf (mininet's unreliable)
* timeout command disables buffering on stdout and stderr
* Make detecting host IP more robust
* Consistent use of shell timeout wrapper
* Add helper to verify no exception log and log contents if found
* Print exception log contents if any
* Use Prometheus to verify switch still connected during HUP test
* Syntax
* Don't crash when receiving packet for unconfigured VLAN
* Typos in FaucetDestRewriteTest
* shutdown mininet in tearDown() before anything else
* Run test suite cleanup even in docker
* Don't use mininet wait switch connection (race condition)
* Add title for running the tests
* Add note where to run commands
* Document hardware testing
* Allow tests to get hardware switch config from /etc/ryu/faucet
* Fixed typos
* Expand OVS DPDK example
* Fix capitalization for systemd config
* Need to use MD not rst style
* Fix markdown in README.docker.md
* Simplify starting FAUCET instructions
* Update minimum library documentation
* Spell out test examples
* Document how to apply changes via HUP
* Add pip install instructions
* Remove redundant docker configuration
* Fix links to config
* Add README\_config.rst
* Update with Gauge instructions
* Syntax for install instructions
* First rewrite with docker instructions
* Add link to deployments
* Split out README.rst to installation/configuration guides
* Remove obsolete upstart reference
* Remove redundant vendor information from README
* Add hint to enable Travis
* Update test version of mininet
* Add dependency check for iperf
* Add missing iperf dependency
* pylint 1.7 is broken
* Run docker based tests
* Purge outdated python-astroid which breaks pylint
* Disable run of docker based tests while troubleshooting test failures
* Docker builds actually failing due to pip unable to build any wheels due to old setuptools
* pip wheel builds all break unless setuptools et al upgraded first
* Add wheel to test requirements
* Add install of OVS
* Run FAUCET unit tests from docker image
* Run build of docker based tests
* Add docker requirement for travis
* Lagopus switch should use Lagopus as vendor
* Add instructions for OVS + DPDK
* literal formatting
* Add Lagopus to vendor directory
* Increase packet counter default timeout to 10 seconds
* IPv4 routing tests now verify iperf minimum 1M and also that routes-as-flows are reported as matching
* dpid\_log() fix
* Improve warning and debug logs with datapath
* Improve default logging in valve.py to include datapath
* 2to3 compatibility check
* Don't need to print unknown top config set
* Fail to parse unknown top level config
* Add missing interfaces default
* Fail to parse a DP that has unknown configuration subitems
* Add stress test for 50 MACs on a port
* Add stress test for learning 50 hosts on a port
* Whitespace in port MAC limit
* max hosts on port test simplified using macvlans
* Mixed test uses host lists with only one member
* pylint
* pylint
* add docstring
* spelling
* Changed port max\_host test, where test failed as a MAC not from a host was being learnt caused the test to fail
* Refactor VLAN actions into seperate function
* Allow ACL to rewrite a packet and continue processing as well as output to a port
* From Bill Fisher:
* FaucetString tests need to set self.dpid to verify ACLs
* Clarify non-zero packet count flow failure further
* Clarify test failure when flow is expected with a non-zero packet count
* Relax iperf/OF counter requirement to within 10%
* Compare iperf and OF BW after iperf - must be within 5%
* Verify that iperf and OF port counters match to within 5%
* Refactor cut/paste code calling ofctl API to use a common retry wrapper
* tests for port max\_hosts
* max\_hosts learn on port
* Add minimum bw iperf test
* Need to select FaucetSingleString as well
* Skip string tests when testing hardware as no way to configure which switch is the hardware switch yet
* Don't hardcode test eap.conf config path
* break/fix #2 for config reload
* break/fix config reload
* Add map of DP name to DP ID
* Implement faucet\_config table name/number mapping variables
* Implement hook for valve to update gauge/metrics
* Implement learned host by vlan gauge
* Remove superfluous eap.conf
* pylint
* https://github.com/anarkiwi/faucet/commit/ba3270c1707b14ba1f9f5782aafefa1bbbc0d532 means that ipv6\_nd\_target doesn't need to be provisioned for eth\_src anymore
* pylint
* Remove cut/paste test implementation for dest rewriting
* Incremental removal of cut/paste dest rewrite test
* pylint
* Use config reload counter to verify HUP has been processed
* Work-around a PBR python3 bug
* use wait\_until\_matching\_flow instead of sleep
* Implement counter for config reload requests
* Add sleep. Removed debug print
* Use py2 and py3 compatible io.read() instead of read()
* updated config reload unittest
* Rewrite destination MAC address, while allowing through faucet pipeline
* fix for permanent learn port failing to learn after reloading config)
* Revert "updated unittest for config reload"
* Revert "fix for permanent learn port failing to learn after reloading config)"
* Remove vestigal influxdb\_stats
* Add of\_dp\_connections and of\_dp\_disconnections
* Implement export of of\_flowmsgs\_sent and of\_errors
* Rename packet\_ins var to of\_packet\_ins (more consistent with prom. naming conventions)
* ensure config\_parser to check the correctness of vlan reference under port config
* updated unittest for config reload
* fix for permanent learn port failing to learn after reloading config)
* Implement prometheus client support via HTTP
* Add dependency on prometheus\_client
* Add test to ensure EAPOL can be mirrored
* Revert "update and improve the config reload test"
* Revert "some fixes (e.g. permanent learn port fails to learn after reload) and improvement for config reload"
* Revert "fix typos"
* Don't use ipv6\_nd\_target to match ND traffic destined for a FAUCET VIP, use a cheaper multicast MAC match instead (RFC 2464 section 7), and also flood where they may be an overlap with another IPv6 address in another IP subnet with the same least significant octets
* fix typos
* merged reannz/faucet
* update and improve the config reload test
* some fixes (e.g. permanent learn port fails to learn after reload) and improvement for config reload
* Refine PopVlan tcpdump expression
* Split TaggedControlPlane test into IPv4 and IPv6 versions
* Add support for pop\_vlans in ACL output action (pop N vlans):
* Implement multiple VLAN header push support in ACLs
* Need to add ssl listen port when SSL enabled
* Add TLS testing support
* include aruba directory for pylint checks
* removed clobber and sdist targets
* Updated Makefile with targets, cleanup developer guide
* Makefile for developers
* Split ControlPlaneTest into IPv4 and IPv6 so can be tested separately
* Fix tcpdump guess for mininet host interface
* Use -h to get ladvd version
* Python dependency netifaces requires GCC to be installed
* Improve doc for configuring hardware switch controller
* For hardware tests, require cpn\_intf to be set (so listens only on CPN port address)
* Migrate to #!/usr/bin/env python
* add a jitter to hard\_timeout of src\_rule to avoid hosts timepout simultaneously
* Use exact match for arp\_tpa
* Don't unnecessarily flood ARP/ICMP6 intended for the controller
* Duplicate/outdated test docs in README (they should be in actual unittests)
* Run a sanity test before running all tests, to make sure test environment has the essentials. This makes environmental problems easier to diagnose by failing early
* Support excluding tests
* Enable 2to3 checking of unicode
* Eliminate use of long (python3 compat)
* 2to3 presence check
* Automatically run 2to3 to verify code is python3 compatible
* Replace xrange with enumerate (python3 compat)
* Add some of the presentations I've given on Faucet
* Remove white background from text on diagram
* Update ACL syntax
* Reorganise and update documentation
* Remove redundant arrow
* Add Allied Telesis to the vendors list
* python 3.x not yet supported and causes travis build errors
* Revert "python3 compat."
* python3 compat
* Add Copyright assertion on behalf of Contributors
* Disambiguate wording in CONTRIBUTING.rst
* Copyright Changes
* remove ipaddr
* Re-organise faucet codebase
* remove duplicate groupadd from input\_ofmsgs
* moved barriers to valve\_flowreorder
* add barrier after group\_mod add/delete and flow\_mod delete
* remove hardcoded OUTPUT:port\_no from all regex strings in faucet\_mininet\_test.py
* remove hardcoded port\_no from all regex strings in faucet\_mininet\_test.py
* remove hardcoded port\_no from FaucetUntaggedHUPConfigChangeTest
* pylint
* pylint
* pylint
* pylint
* pylint
* pylint
* pylint
* pylint
* pylint
* stop takes no args
* Catch more binary/string to unicode cases (python2/3)
* print syntax (python3)
* ensure unicode encoding input to ipaddress functions (python2/python3 compat)
* Rename util to valve\_util (python3 compat)
* rename util to valve\_util
* Rename util to valve\_util (python3 compat)
* print newline
* typo
* Check network from ip\_interface
* more itervalues (python3 compat)
* require ipaddr in favor of ipaddress (python3 compatibility)
* python3 compat
* python3 syntax compat
* python3 syntax compat
* pylint
* python3 syntax
* pylint
* python3 syntax compat
* python3 print/itervalues compat changes
* iterkeys -> keys (python3 compat)
* iteritems() to items() (python3 compat)
* python3 print syntax
* Use python3 print syntax
* test class name no longer needed now that we always check for OFPErrors
* MAC mismatch test can fail because host-to-host IPv6 neighbor discovery hasn't happened yet
* Make MAC mismatch assert clearer
* Add TODOs for nexthop group leak and detecting flaps
* Group based routing also could cause OFPErrors
* Fix OFPErrors due to n-cast group rules
* Split group flood implementation to own methods
* Implement InterVLAN routing
* Plumb routers config through to route manager
* Sanity check routers config
* Initial stub config structure for Router
* Add another sanity check for ACLs
* config\_parser should be the one to create ACL object
* Clarify support of version 2 only
* config\_hash references needs util
* Config parser utilities that don't deal with config implementation can be separate
* Allow a controller pps limit to be set
* ACL config class shouldn't be in valve\_acl
* \_dp\_include() doesn't need to know config section names
* reduce knowledge of top level config for dp parser
* simplify \_dp\_include() to reduce config structure knowledge
* refactor duplicate include code in \_dp\_include()
* Remove unused args
* Revert "Revert "Revert "simplify \_dp\_include\_() (doesn't need hardcoded list of config sections to include)."""
* Revert "Revert "simplify \_dp\_include\_() (doesn't need hardcoded list of config sections to include).""
* Revert "simplify \_dp\_include\_() (doesn't need hardcoded list of config sections to include)."
* simplify \_dp\_include\_() (doesn't need hardcoded list of config sections to include)
* pylint/newlines
* Simplify config parser arguments
* Implement wildmatch match for any VLAN VID present
* Mask for flowmod should be converted to string always
* pylint
* Reduce OF packet in size further to bare minimum (further reduce any payload from host)
* added file based storing of flow tables
* mininet tests need to pass pylint
* Fix inheritance problems for Zodiac tests
* Inheritance for Zodiac tests is wrong (will fix next change)
* Generate test traffic for Gauge Influx tests
* pylint
* pylint
* Test that Gauge can talk to fake Influx back end and doesn't crash when that backend is down
* pylint
* pylint
* Add initial smoke test for Influx
* Add placeholder for influx backend port
* Run check script on installed example
* Run pip install from local tarball as smoke test for pip
* data\_files\_prefix wasn't used
* More optimization
* Additional updates to packaging scripts
* fix timing issues and possible query failures
* updated scripts for OpenSUSE VM packaging
* Implement FaucetNailed test, for Umbrella verification
* pylint is wrong about numpy not having float64
* Ensure float64s when commiting to InfluxDB
* InfluxDB is int64, and we are logging uint64, so use float always
* Use canonical rcv\_time
* Add more exceptions to handle
* Add influxdb example queries
* Initial handling of HTTP connection failures
* Implement make\_point() helper function for InfluxDB
* pylint
* Use common helper functions
* Move port enum/description functions to base class
* Simplify Gauge #1
* pylint
* Add influxdb to Docker requirements
* HUP test needs tcpdump to be quiet
* Fix FaucetAPI test
* Automatically run tcpdumps of OF channel
* Regularlize FAUCET controller args
* Fix clobber target
* Fix for pip install package
* Correct list contact. Ignore egg\_infos
* Default to FAUCET's setup details
* Make v1.4.0 version consistent
* Bump to v1.4.0 and smarter setup.py that can take defaults and automatically parse version from README
* Revert "use default arguments, parse version from README."
* Revert "setup.py is a bit smarter - has convenient defaults and can scrape"
* Revert "Bump version number."
* Bump version number
* setup.py is a bit smarter - has convenient defaults and can scrape version number from READMEs
* use default arguments, parse version from README
* Update MANIFEST
* Gauge service script for Ubuntu
* Run pylint syntax check
* travis dot version doesn't like ";" as a delimiter
* Need pylint and graphviz for package build to work
* Put more stress testing on gateway resolution testing (more swap MAC/re-resolve test forwarding cycles)
* Run more tests under travis
* Fix setup.py
* setup.py executable
* No need for separate setup\_apps.py
* Need bitstring for test\_valve.py
* setup\_apps.py orphan. setup.py should reference requirements
* pylint
* Experimentally enable travis CI
* Increase test iterations for IPv4 routing
* Fix missed update of nexthop where nexthop expired but not changed to new MAC
* Fix typo and added a sample start-faucet script for quick reference
* Rename group test class names so can skip OFPError check for group tests
* Remove deliberate reload of FAUCET in MaxHost tests (causes test flake)
* Verify that no OFPErrorMsgs in debug log. Group table support causes some errors, will be fixed next change
* Add unit test for check config script
* Add check\_faucet\_config.py, which parses a list of FAUCET configs, and exits with 0 if all configs can be parsed, or non-0 if not
* pylint
* tune gateway resolution timers for test reliability
* Change logging priority for exceptions in gauge
* Fix API test (was causing controller exception)
* Lint/comments. Simplify API test file
* Make sure no controller exception logged
* Make sure no exception logged from Gauge
* Make backoff time configurable
* Always update nexthop cache on packet in
* Revert "Need to reset resolve retry count when learning nexthop from packet."
* Need to reset resolve retry count when learning nexthop from packet
* Should report on field when using OFPActionSetField
* Make pipeline report actual superset
* Implement pipeline features reporting
* Ignore .swp files
* Fix duplicate debug log lines, and add DPID to debug log
* Add missing port\_sock ref
* socket for port server should be in temporary directory
* Use standard test timeout
* Only delete test directories if all successful. Keep Gauge logs too
* Group mininet controller log file with test file directory
* Use consistent/descriptive name for test directories. Also don't delete test directory if an exception was logged
* Improve unit test temporary directory name
* Bump version number to 1.4 - prep for release
* Script to upload CouchApp to CouchDB
* Add jitter to resolution/expire tasks
* helper function to delete host FIB route
* Enable host FIB entry expiry
* Make resolver configurable
* Implement host FIB route expiry
* Only log host learned line when host actually learned
* Reduce log spam for gateway resolution
* Add exponential gateway resolution backoff
* Better logging for resolve rate limiting
* Implement retry counter
* Implement resolve retry counter
* Incremental gateway resolution refactor
* Revert "Revert "Add nexthop cache fresh check method.""
* Revert "Simplify nexthop resolution."
* Revert "nexthop resolver needs retry counter."
* Revert "Add nexthop cache fresh check method."
* nexthop resolver needs retry counter
* Simplify nexthop resolution
* Add nexthop cache fresh check method
* Don't re-add host FIB entry unless was not present or MAC changed (otherwise every ping refreshes FIB route)
* FIB route add should use PacketMeta instance
* Fix missed check for resolved IP gateway. Simply nexthop cache handling slightly
* removed flow\_manager placeholder
* updated README
* Changed config placeholders to defaults in gauge config file
* lint
* Only delete groups if groups configured
* Simplify group table support
* Incremental PacketMeta refactor
* Incremental pkt\_meta refactor
* Incremental PacketMeta refactor
* Incremental PacketMeta refactor
* Couchapp to display flow table entries using d3.js and datatables.js
* Incremental refactoring to use PacketMeta
* Incremental refactor to use PacketMeta
* Placeholder for Flow Info app
* Incremental use of PacketMeta object
* Add PacketMeta class to simplify passing around packet metadata
* Stricter validation of ND requests for VIP
* Further stricter check for ICMPv6 replies (dest IP)
* Further simplify handling ND adverts
* Simplify processing of ND adverts
* Stricter check for ICMPv6 echo replies
* add\_host\_fib\_route\_from\_pkt() can share code for IPv4 and IPv6
* Strictly check for dest MAC and ICMP type when ICMP v4 echo replying
* Stricter/simpler checking of CPN destined IPv4 traffic
* Rename last vestage of "controller" subnet reference (should be VIP)
* Correct masking of VIPs
* updated image based on dot file
* Rename controller\_ip -> faucet\_vip, since they are actually IP addresses implemented by FAUCET itself (and can be confused with OFA/OFC addresses)
* updated unittest
* fix a bug on control plane hander: faucet responses to control plane packets that are not meant for it
* unittest for veryfing invalid BGP routes
* avoid adding invalid BGP routes when vlan having multiple controller ips
* Incremental route resolution
* revert commit of rmtree
* Resolver can add placeholder nexthop entry if none exists
* Args to ips\_in\_controller method
* Simplify CP handlers
* refactor - further prepare for more nexthop metadata to manage retries
* Rename neighbor\_cache nexthop cache
* rename LinkNeighbor to Nexthop (prepare for expansion of nexthop metadata)
* refactor resolve gateways #3
* refactor gateway resolver #2
* Revert "Simplify resolve/gateways."
* Revert "Gateway resolver needs tuple."
* Gateway resolver needs tuple
* Simplify resolve/gateways
* pylint
* ladvd doesn't always exit cleanly, so execute it under a timeout
* Use exploded method
* Don't ignore packet ins for learning if port changed
* use ipaddr exploded method
* pylint
* pylint
* pylint
* Rate limit learning traffic; don't re/install learning rules for packets from the same/host VLAN combination within 1s
* Reorder flowmods to have delete first, with a single barrier
* Add flowmod/delete check
* Whitespace
* flowdel
* Whitespace
* pylint
* pylint
* pylint
* pylint
* pylint
* pylint
* Add bgp\_local\_address configuration option
* ryu tends to squash errors, and thus not exit.  This wrapper KILL's itself when it gets exceptions in various places
* Change logging priority for exceptions
* Tidy commercial switches section
* Tidy up links
* Update support section
* Correct table numbering
* use GROUP tables for FIB and VLAN flooding
* Handle OpenFlow messages from add\_host\_fib\_route\_from\_pkt
* use version 2 as the default config
* update pipeline diagram
* moving to vendors directory
* Added make stats target to get repo stats
* Use packaging library for parsing test dependency versions
* Update the document to use .rst style markup
* Move the readme file of Aruba to the docs directory
* updated version to 1.3.2
* updated version number
* Update version info
* Run test\_api in faucet\_mininet\_test.py
* pylint fix
* Add a README for using Faucet on Aruba switches
* typo fix, added missing routing related fields
* typo fix and certificate print commands
* \* Make it clearer discovered ports, are discovered only when up. \* Explicitly configure stack ports even when down
* Fix typos in echo statements
* added hooks for running controller in SSL mode
* fix typos and directory names on controller host
* updated default directory to match Ubuntu
* Setup OVS PKI script
* Make all our default drop rules for certain traffic configurable
* Throw away unsupported statistics returned by OpenvSwitch
* added title to the graph
* updated dot file and image
* Generate faucet.yaml visual graph
* convenient scripts to setup Faucet service on Ubuntu
* Adds API for faucet
* Add functions for retrieving running config
* Fix testcase for LLDP. Add testcase for CDP
* Update test\_config.py for multiple bgp neighbours
* Fix URLs and group email ids
* Pipeline documentation update to match code
* Update documentation for v1.3
* Config v1 is gone
* Broadcast ping address not generated correctly
* Run all Zodiac tests
* Physical tests would not always wire correct ports for Zodiac
* Make test\_valve executable
* Remove the empty last line in the aruba\_pipeline file
* Update the aruba faucet pipeline based on the latest port/vlan acl changes
* We depend on ryu newer than v4.9 for routing
* Tidy sample configuration files into an examples directory
* Sometimes /var/run/ladvd is missing, so ladvd won't run, which breaks the LLDP tests
* Update the scale of tables in the Aruba pipeline
* added Lagopus yaml file
* updated instructions
* Ryu 4.9's BGP speaker library, doesn't handle an ipaddr.IPAddress as a nexthop
* Docker tests need ladvd (LLDP) dependency
* Explicitly enable exabgp debugging messages selectively
* Make LLDP dropping configurable with dp drop\_lldp parameter. This enables NFV offloading of LLDP
* Added Lagopus as a supported vendor
* scripts for easy installation of DPDK, OVS, Lagopus
* Update magic numbers
* reverting some accidental changes
* Add ZodiacFX 3 port tests
* Add routing/FIB entry also, when learning a host
* Add vlan acls
* StringStack tests needed to write out config before starting topology
* BGP can support multiple peers in same VLAN
* Better checking for presence of controller debug logs
* Add test for IPv6 locally connected subnets
* Use common method to add FIB entry
* Handle IPv4 routing between locally connected subnets
* Simplify config change detection/application and logging
* Force relearn after setting IPv6 address
* pylint, comments
* Use all ip tools rather than ifconfig. Bounce interface when changing IPv6 address
* Need to actually clear IPv6 addresses before setting
* typo
* Delete any existing IP routes
* Migrate more classes to base
* Move methods to base
* Hardware tests now support Gauge
* Remove remaining globals
* remove global OF\_PORT
* Simplify Gauge controller class
* Add hw\_switch attribute and reduce use of global SWITCH\_MAP
* fix dpid for external configuration
* Eliminate DPID global
* Eliminate HARDWARE global
* Pass in test config to test class (so can remove globals)
* Simplify topology creation
* Need to disambiguate stack switch names
* Add untagged stack test case
* pylint
* Make test host/switch prefixes shorter, as Linux is limited. Verify that IP configuration commands succeed
* Make packet rate limit actually apply per second. Make recv\_packet smaller. pylint
* Avoid reserved OpenFlow TCP ports
* Multiple DP tests can now run parallel
* Use self.\_vlan\_match\_tables not hardcoded list
* Fix stacking
* Move more methods to base. Ensure switch/host IDs can never conflict, based on unique port
* Move more methods to base
* Don't include testit.sh
* Now that max parallel is fixed, don't delay socket response
* fix max parallel tests didn't actually limit max. simply string of DPs config generation
* hash switch/host IDs to minimize conflicts. add extra logging
* Run test\_valve and test\_config
* Fix typo
* Add docstrings, improve naming
* Add missing retries for IPv4 ping
* Retry IPv4 pings. Try to stimulate learning if host not learned due to load/packet loss
* Adds unit tests for valve
* Fix a bug in \_in\_port\_tables where it would only return acl\_table
* Reduce parallisim further. Try harder to confirm hosts learned
* fix hardware tests (DPID as int consistently, need to configure OF port statically). fuser TCP port check relaxed
* Increase random free port delay
* Further lower test load (limit the rate at which new free ports are allocated)
* pylint
* Improve mirroring reliability. More checks to ensure controller is really ready
* Don't serve more reserved ports
* Clear stale logs
* Text log of port status if configured
* Add smoke test of port status logger
* Run all tests script, and reduce test load average by running stack tests singly
* Add documentation, basic IPv6 routing test can be parallelized
* Documention and pylint
* More move of base methods and documentation
* Implement free port server (reduce possibility tests could get assigned same port). More migration of methods to base
* Verbosity, Stack test fix
* pylint
* Move and normalize flow retrieval/test methods
* Move get flows methods
* pylint
* Move find\_free\_port to library
* Move more methods to libraries
* Add utility library
* Use ip rather than route for consistency
* Move more methods to base
* Move tearDown method
* Move more classes to base
* Don't hammer parallel tests quite so much
* Split out to seperate base class
* pylint
* Update HPE related info in README
* Update HPE related info in README
* faucet.py: ignore non-connected DP elements when reloading configuration
* couchdb: Use new Docker couchdb infrastructure
* added Netronome as a supported vendor
* Add Netronome as supported vendor
* Sample Grafana dashboard for Faucet
* added additional user creation statements
* Updates to gauge
* DPDK install script for Lagopus
* Updated
* updated to include changes to huge pages and Grub
* New script to only install OVS and DPDK packages
* updated script - now a bash script
* OVS setup script
* Optimization to install scripts
* Fix typos, code cleanup
* updating scripts
* Allow forcing serial executiom of faucet\_mininiet\_tests
* Document that it is possible to configure hardware type
* When using an external switch, DPID not converted to str of an int
* fix test\_config failure due code changes
* fix typos
* add unittest for config reload
* Add incremental config reload. Supported changes: - Port config: all types (e.g. vlan, acl\_in, enabled, unicast\_flood, etc..) - ACL config: add/remove/modify ACL rules. Currently reload every rule of an ACL - VLAN config: enable/disable routing, and other configs (e.g. unicast\_flood, etc..)
* Added Faucet preso from OVS Conference, typo fix
* Updated purchase info for HPE Aruba Switches
* Update the Aruba pipeline to match that of FAUCET
* Added the missing JSON files for Aruba.  Also incremented the .version for release
* docker-compose: Add CouchDB to environment
* Docker: Install Python requirements
* docker-compose: Add support for 'build' step
* docker-compose: Specify explicit versions of external images
* Docker: normalize Dockerfile's
* Docker: Ignore Git directory during 'build' phase
* Add note about python-dev on Ubuntu
* Shouldn't use hashed pip package path
* Fix pip install URL
* Added faucet\_ovs.yaml to the list of faucet yaml files
* One more template file to make OVS work on Ubuntu
* Added setup instructions for OVS
* Change to ACL "allow" rule behavior. Previously, "allow" was required. It is now optional and defaults to 0. However, in the "mirror" case, the default is 1
* Minor changes to readme in 'working with real hardware' section
* Faucet Presentation
* updated Faucet Architecture diagram
* updated scripts for v1.2 release
* more updates for packaging
* updated class diagram
* pylint
* Assert on configuring routing when stacking
* Implement simplest possible distributed unicast learning
* Add configurable discards processing packet in
* Add configurable discard rate when learning to reduce controller load
* Add method to find next port closer to destination DP
* packet in handler needs to know about other Valves when stacking to resolve destination
* Added version info gauge.yaml and updated class diagram
* Fix installation of one-way unicast\_flood rule when unicast\_flooding disabled at port level. Add test coverage that behavior and flows are correct
* pylint fix
* Change to v1.2 ahead of v1.2 release
* Fix commented out cleanup
* Implement distributed flooding
* More stacking helper functions for valve\_flood
* Mirror/unmirror port flood rule generation can use common code
* Add helper to generate output, to input port
* Flood manager needs to know stack topology
* Rollback recent flood refactors (breaks tests)
* Fix output ports implementation
* Move implementation of multiple output action list to valve\_of
* valve\_flood now knows where each DP is relative to root in stack
* Add tests for unicast flooding combinations
* Split flood output port generator to accommodate stacking changes
* Add shorted path methods
* Simplify valve\_flood slightly
* Add test of stacking (stacking only implemented as config, but generate partial config)
* Simply StringOfDp test further
* Add documentation to multiple DP test case
* MultiDP test cleanups. \* MultiDP tests added old style v1 gauge parameters which are ignored (removed) \* MultiDP tests should describe inter switch link ports
* Verify that each link has been configured in both directions
* Make ACL blocking test method reusable
* Simplify multiple DP tests to use common ofctl query method
* \* Rename stack switch to dp (consistency) \* Construct stacking topology and root DP
* Build a graph of configured topology
* Add dependency on networkx
* Update V1.0 reference to V1.1
* Add configuration structures for stacking
* pylint fixes
* Example gauge.conf config rename to .yaml
* Rename gauge.conf to gauge.yaml, because it's YAML
* Move all tests to use v2 config format, and log a warning when parsing v1 (v1 unsupported)
* Fixed adding the correct ryu.conf and necessary restart scripts for faucet and gauge
* Add comments
* Move documentation to docs directory
* Updated gauge.conf and add demo YAML files
* Fix hotfix in priority of drop rule
* Mirror destination port drop rule has wrong priority
* hotfix: in V2 config, ACLs might not apply to all DPs
* Spelling
* pylint fixes
* Mark private method
* Documentation and private methods
* Another private method
* Mark methods private
* pylint fixes
* pylint fixes
* Documentation updates
* Add new config\_file\_hash function
* Simplify config file change detection (and remove duplicate hashlib calls)
* pylint fixes
* Add requirement to add a test
* Fix handling of V2 config mirror handling by port name, rather than number
* pylint fixes
* All core python now subject to pylint
* Documentation updates
* Add architectural assumptions
* Remove unused datapath\_down() function. Documentation additions
* Make valve DPID logging consistent
* Fix another test broken by config reload optimization
* Incremental documentation of valve\_of
* Add developer guide stub
* Fix test for new config reload message
* Add documentation to valve\_packet
* Log DPID consistently in faucet.py
* Revert just DPID logging changes for faucet.py to facilitate merge
* Make DPID log message clearer for hex version
* Log DPIDs consistently
* Change assertEquals(..., None) to assertIsNone
* pylint fixes
* pylint fix
* Common helper for deleting all flows matching a port
* pylint fixes
* Eliminate mirror\_from\_port entirely
* Eliminate use of mirror\_from\_ports
* Add finalize\_config method to DP to handle config merging once all objects added
* Add more fine-grained reload detection logic
* Fix and add unit tests
* Don't need to use mirror\_from\_port (may eliminate entirely)
* Add more TODOs
* Typo in ban rule method
* Move ban function to valve\_host
* Add pylint check for valve\_host
* pylint fixes
* Tests should wait for host to be learned before pinging
* Move unicast MAC test to valve\_packet
* Need to make sure FAUCET is actually ready to forward after HUP
* Move logging initialization to common util function
* vlan\_vid() no longer required in main class
* Move host expiry to valve\_host
* Move use of host cache to valve\_host
* Move learning methods to valve\_host
* valve\_flood: correct mask on IEEE 802.x multicast MAC OUI
* Move delete method
* Add valve\_host module
* Simplify host learn method
* Add flood module
* Add valve\_flood module
* Add valve\_acl module
* Move control plane handlers for routing to valve\_route
* Need to clear IPv6 addresses from host when testing routing mesh
* pylint check valve\_route
* Move controller IP flow installation to valve\_route
* Move add/del/update routes to valve\_route
* Move resolve\_gateways() to valve\_route
* Fix commented out exception handler
* Move resolver method to valve\_route
* Add ValveRouteManager class as a stub
* Helper to always set ofp.VID\_PRESENT
* Refactor route/nexthop handling to be closer to OOP (next change to be class for route table manager)
* Split control plane IP installation into two functions
* Put fully canonical paths in data structure, add logic to avoid include loops
* Fix recursive includes
* Only need to add controller IP rules once when VLAN initialized
* Move method to check if packet is in VLAN's subnet
* Move code to generate rules for adding a new port to a VLAN to common function
* More modules pass pylint checks
* More modules can pass basic pylint. Move VLAN port methods to VLAN module
* Parse mirror\_destination port attribute at config parse time
* Split port\_acl\_method to submethod to process an individual ACL rule
* Move match dict builder to valve\_of
* pylint new helper classes
* Always use ICMP protocol code
* Remove valve.py dependency on ethernet lib
* Move remaining packet building code to valve\_packet
* Move out IPV6 helpers
* Move arp packet helpers out of valve
* Add first packet helper
* Syntax
* Temp move of parser import back for Aruba pipeline
* Move more parser calls to valve\_of
* Only reload Faucet config if the files have changed
* Move more helpers out
* Move more helpers to valve\_of
* Move first few OF helpers to new file
* Guage db config file removal from setup
* faucet.yaml changed
* README.rst: fix syntax errors, typos and format consistency
* Test config changed and gauge db config file deleted
* config file changes
* Fix up spelling and typos
* Added instructions on installing Faucet with Docker
* V1.1 release URLs
* Add FaucetACLOverrideTest
* FaucetMultipleDPTest: Replace wait\_until\_matching\_flow with matching\_flow\_present
* FaucetMultipleDPTest: Add acl\_in\_dp argument to set\_config, fix wait\_until\_matching\_flow
* removed db logic from gauge.py, config file changed, new watcher class created for flow db updates
* FaucetMultipleDPTest.get\_config: Rewrite to use a dict and yaml.dump
* Fix JSON to handle tables without matches
* Update ovs2json.py to handle table with no match specified
* For Shivaram; install workaround for V1.1 release
* For Shivaram; CouchDB doc and setup.py version/description change
* Rename back to .conf from .yaml
* Change version and update file name
* ZodiacFX should specify hardware ZodiacFX
* Fixed typos
* Update config examples for version 2
* Typo in ACL/blocked test
* Add tcpdump\_helper for tests that need to run tcpdump, that waits for tcpdump to start before initiating the test
* \* Ban message tells you what MAC was banned. \* Extraneous check for traffic on port 5002, before packets sent
* \* Fix mixed VLAN test - was tested but did not assert if it ever failed (looks like it did not fail anyway). \* Fix max host learning test (test for presence of correct flows) \* Tests now can verify host has been learned before measuring traffic from it
* Mixed VLAN test case did not actually assert on failure
* Ensure flows for hosts that should have been learned are installed
* Use common helper for ofctl URL
* Add cleanup mode for unit tests to cleanup after failed runs
* https://github.com/inside-openflow/faucet/commit/f46cb0777119d4609d65b806dbae96ee8abab353 - fix docker test run to run in parallel and install missing dependency on pylint version
* Rework ordering of tcpdump tests
* Improvements to exception handling in tests for ofctl REST API
* Readme and setup.py changed to accomodate db updations
* Master repo syncup for gauge.py
* Master repo syncup
* Make tests more robust when we get a bad JSON reply
* Fix and add extra config error checking
* Allow recursive includes
* Syntax cleanup and consistency
* Add documentation for including files
* Configure test\_config logger to allow meaningful dp\_parser error output
* Change test\_config.py to test includes
* Include non-absolute files relative to config file location
* Add support for required and optional include files
* Todo item added
* Formatting changes
* Formatting changes
* added instructions for couchdb configuration for debian OS
* Change DP default hardware to match SUPPORTED\_HARDWARE in valve\_factory
* Fix graceful handling of unknown DP hardware types
* \* Update Aruba JSON pipeline config to match IPv4 routing configuration (superset of regular switching pipeline). \* OVS dump-flows uses vlan\_tci type match to express matches of matches without a tag; remap them to OXM style for compatibility
* Added DB updation counter
* valve\_flowdel() now automatically sends a barrier for every delete request. some OFAs require this to ensure delete completes before doing anything else
* Bug fix on switch db
* Ensure barriers are sent after deletes
* Add helper to tests to make sure flapping switch ports are handled
* adding an example grafana dashboard
* changes to docker-compose.yaml
* Add barrier after delete all
* Fixed indentation markup error
* Fixed errors
* Documentation updates
* Remove leading slash in data\_files only if in venv
* Changes
* Allow vlan VID to be pushed on a packet when doing policy based forwarding - add 'vlan\_vid' to output actions
* Support virtualenv and pyvenv paths for log and config default locations
* Switch disconnect bug fix
* Update pipeline diagram to include FIB tables
* lint fixes
* Update README.rst on config file format
* Don't crash faucet if someone plugs a cable into an unconfigured port
* remove upstart dir
* Updated run scripts and removing unnecessary files
* FaucetMultipleDPTest: Tidy up and fix mixing tagged/untagged hosts
* trying better html
* Fix 'self' reference in dp\_parser\_v1 exception logger
* Add separate function to add VLANs to DPs, which checks for shared BGP VLANs
* trying better variations for embedding Maps
* updated URL to pip install and link to Google Map
* Added Faucet deployment map
* Update docker documentation
* Add in YAML new document marker
* Fix typo in config defaults
* Openvswitch module must be loaded on the docker host for tests to run
* updated pip dependencies
* Only add VLAN object to DP if any ports use it
* this should have been removed in the rebase
* moving Install file to docs directory
* Move pylint error suppressions into the specific blocks
* Merge remote-tracking branch 'upstream/master' into multiple-dps
* Typo fix
* Typo fix
* Bug fixes and pylint changes
* Contribution by Shaun Wackerly <wackerly@hpe.com>. This script will be used to automatically sync hardware/pipeline configuration with FAUCET's archiecture
* Error fixes
* Change default number of untagged hosts to 0
* Use consistent syntax formatting
* Increase readability of switch-to-switch link condition
* Add base class for testing multiple DPs and basic tests
* Big Config Changes
* Change gauge docker to use docker-compose for db
* Faucet Config file for ZodiacFX switches
* Add concurrencytest to dependencies
* Updated class diagram
* reload\_config: Fix DPID member access
* Renamed config file
* Fixed text related to 802.1x support
* Added flow fetch and update using table\_id, match combination
* adding code lines to get duplicate flow entries from flow\_db
* bug fix
* Modify testconfig.yaml to use multiple DPs
* Faucet Architecture
* Make sure all new VLAN objects are constructed with dp\_ids
* Add multiple DP support to Gauge
* Fixes to previous commit
* Add dp\_id field to VLAN so bgp\_route\_handler can efficiently find the DP's valve object
* Updated feature list
* Add multiple DP support to Faucet
* Write out flood rules as linear expansion, which avoids instructing the switch to loop packets back to input. Not all vendors implement groups correctly, so we can't use groups yet
* Simplify flood action generation further
* Rename argument to flood port list for clarity
* Mirror tests could depend on unicast flooding
* Simplify flood table additions for mirroring/non-unicast flooding
* Remove 'in\_port' match requirement for tables that don't actually ever match 'in\_port'
* Enforce table/match types
* duplicate ofmsg logging
* use ofmsgs not flowmods everywhere add helper function for packet receive
* Add IPv4 route helper
* lint/prospecter fixes (whitespace, etc)
* Force exabgp log output to be unbuffered
* Allow more tests to run in parallel
* Explicitly kill exabgp after each run. HUP test didn't actually do anything. Fix it and check that controller reconfigures
* Need to start exabgp on IPv6 loopback appropriately. Lengthen BGP connection/update timeouts
* If exabgp gets stuck, kill it automatically between test runs
* Add test for routing on same VLAN but ports in different subnets. Add helpers for exabgp. Use route\_as\_flow helper to match routes as flows more explicitly
* Renable disabled 5001 block test
* Make (some) tests able to run in parallel, by dynamically allocating ports. FaucetSingle tests have to run serially, due to hardcoded ports
* Lint 1.6 fixes
* Make helper method to verify presence of a route, flow. Exercise the already-resolved nexthop case for BGP
* Require lint error check to pass for faucet and gauge too
* Require lint error check to pass for valve.py
* Lint fixes
* Fix a (serious) mistake: missing fib\_table argument in add\_route
* passing server ip as argument as by default it was taking localhost ip
* Restore overwritten commit removing unneeded ip\_gw parameter to del\_route
* get fib installed immediately when the nexthop is already resolved
* restructuring directories
* Lint fixes. Initialize any local routes before starting BGP speaker
* Don't try to match on FAUCET\_MAC when deleting routes (not needed, FIB table dependency already verifies MAC)
* Flow update addition
* Check library/dependencies
* Require eth type match for controller IPv4 FIB entry
* Move controller host address matches to FIB tables
* Improve scaling incrementally - move IPv4 and IPv6 FIBs to own tables
* Define IPv4 and IPv6 FIB tables
* Fix permanent learn
* Add installation of exabgp in Dockerfile.tests
* Fix IPv6 tagged routing test
* Add tests for BGP receive
* Add test for BGP reception (V4)
* Complete BGP receive path
* Add receive route handler. Still need to trigger route installation on adding a route
* Respect longest prefix match first
* Implement policy based forwarding
* Add smoke test for Gauge
* Fix building of gauge Dockerfile
* Implement BGP advertisement of controller IPs and static routes. IPv4 and IPv6 is implemented
* Lint fixes
* Fix use of not passed config\_file
* Lint fixes
* Document configuration file format changes
* Removing db updation code from faucet.py and adding it to guage.py
* Parse new configuration format
* Updated database architecture doc img
* Fixed pylint errors and db updation logic
* format correction
* modifying connection string
* Adding Config file and code for parsing required values
* Added odbc module and db\_architecture.rst
* When running on 32 bit platforms, dp\_id can be a long
* Removed TODO and SWITCH\_MAP in wait\_until\_matching\_flow since they shouldn't be useful anymore
* removed useless commented line
* changed expected strings to find the desired flow entry in the multipart reply
* Use Ryu REST app to get flows instead of ovs-ofctl
* Add support to test physical as well as software switches
* Allow DPID and hardware to be more easily configured
* Explicitly specify OF1.3
* More lint fixes
* updated with supported hardware vendor info and blog link
* Lint fixes
* Fix fine grained mirror test
* Restore all tests
* Fix bad string substitutions
* Fix local test case usage
* merged upstream and fixed wrong indentation
* test default config uses OVS
* Configurable switch port\_no
* Include instructions in README of how to use official Docker Hub builds
* Move Dockerfiles to root of project to enable easier automatic building
* updated unittest to verify routing with prefixes have the same nexthop
* Drop gauge.conf for Docker container
* Add dependencies to allow PyYAML build
* Formatting and spelling corrections
* Drop dockerdev make step and Dockerfile.dev
* Corrected config and log paths
* \`docker build\` must be run from the root now
* Dis-ignore things that shouldn't exist
* Dockerfile.dev is redundant (use Dockerfile instead)
* Fix Docker volume paths
* Switch to installing faucet from the repo
* Move Dockerfile.tests into docker/; use pip after all
* Get rid of dockerdev make target
* fix the missing routes bug. upon receiving arp reply, we only added the first route to forwarding table, ignoring other routes that share the same gw
* Reduced priority of flows for learned hosts
* avoid sending duplicate arp
* using shorter file names
* fixed file name and updated README
* ONF Deployment picture
* No need to pip install ipaddr
* Don't need this (wrong for setup.py develop)
* Python seems to manage without these
* Use setup.py develop instead of install
* Install deps for PyYAML build
* Use new path inside container
* Bypass the pip package, just: \`python setup.py install\`
* Move Dockerfile.test to top-level
* Tidy up the docker files and documentation slightly
* Restructure the Valve inheritance
* Document addition of Dockerfile.dev and Dockerfile.tests
* Add dockerfile for running faucet mininet tests
* Add docker container for development
* Ignore files created by  dockerdev make target
* Add dockerdev make target
* Document further faucet mininet test dependencies
* Make FAUCET\_DIR configurable via environment
* Fix handling of gauge DP reconnections
* Fix docker build for gauge
* Resolved some previous mistaken commits
* Fix handling of DP reconnections
* Github rst parser != Atom rst parser
* Tripping over RST
* Edit and reformat FAQ
* static ip addressing
* restore the test base :) removing hardcoded openflow13
* removed unncessary code regarding acl rules deletion
* Update REAMDE.rst
* scripts for VM packaging
* Mark Zodiac FX supported as of v60\_RC2
* Extend ACL to allow mirror action acl format: acls:    1:       - rule:           dl\_type: 0x800           nw\_proto: 6           actions:               allow: 1               mirror: 14        - rule:            actions:                allow: 1
* updated to v1.0
* Fixed file locations
* updated faucet.yaml to be more generic
* Revert "Complete fixes for Python 3.5"
* Revert "More fixes to make it work with Python3.5"
* More fixes to make it work with Python3.5
* Complete fixes for Python 3.5
* Fix typo - change opt to ryu
* Fix typo
* fix typo to include faucet
* Fixes for production deployment
* Move Aruba pipeline to subdirectory
* Allow Aruba pipeline to be configured, by specifying:
* Add Aruba configuration infrastructure
* Removed the changes to faucet.py, these will be added in an optional per-vendor change later
* Add vendor specific hook for switch features
* Added support for Aruba switch custom pipeline configuration
* Add ofchannel\_log parameter (log all packet in/out flowmods) for debugging
* Retry MaxHosts test if insufficient hosts learned
* Add test for mixed tagged/untagged ports on a VLAN
* Expiry not run soon enough (and another expiry fix)
* Host cache expiry fix
* Add max\_hosts per VLAN config (basic protection against flow table exhaustion)
* Need to decrement TTL when doing routing
* Fix typo Kit found
* Replaces valve docker files with faucet ones
* Add dependancy on ipaddr
* Fix typos in gauge
* Fix gauge logging and logging documentation
* Block on controller flows begin in switch to make tests more reliable
* Add note for retry
* \* Mininet takes forever to actually shutdown properly. \* IPv6 ND sometimes takes a while, so retry
* \* Make tearDown() inherited. \* Add TODO for rate-limiting learning protection
* Ping controller via IPv6 to push ND
* Don't try to cycle interface via ifconfig when changing MACs (breaks IPv6 tests)
* Implement ARP/ND refresh
* Refactor route resolver to common code
* ARP/ND entries now have a timeout (still need to implement route replacement)
* Start reliably on boot
* Correct path inside gauge.conf
* Need to export subset of env variables
* Correct example config paths
* Documentation on installation, and init scripts
* Lint fixes (staticmethods, line too long)
* \* Refactor ND and ARP generation into helpers. \* Some lint fixes (line too long) \* Move to consistant quoting (use single quote)
* Fix IPv6 static routing (routes not added)
* Add complete IPv6 static route testing (tagged, untagged)
* Refactor ping methods into common test methods
* Add IPv6 routing test
* \* Add IPv6 gateway resolution
* \* Need a per-VLAN IPv6 ND cache
* \* Redirect IPv6 ND replies for FAUCET to control plane
* Add tests for multiple IPs per VLAN, and IPv6 on VLANs
* Add HUP test
* Implement IPv6 ND/echo reply from controller
* Initial support for IPv6 controller addresses
* pylint fixes (missing return value when datapath down, checking multicast source)
* \* Allow more than one controller IP per VLAN to be configured. \* Stricter ACL on checking whether ARP/ICMP to controller should be processed based on VLAN/controller IP combination
* pylint fixes (class style)
* pylint fixes (spaces, class style, remove use of map())
* Some methods are static (pylint)
* lint fix (unused vid)
* Update how tables are numbered
* Add note about VLAN package requirement
* Add note about OVS 2.3.3 required
* Add note that we need mininet > 2.2.0
* added influxdb python client libraries to the dependency list
* fixed pip install download URL
* updated version number to 0.30
* Updated markup
* updated feature set with pictures
* Add support for Influx DB. If influxdb\_stats: True in config, then port state changes and port stats are sent to InfluxDB, not log file
* Support IPv4 static routes on tagged VLANs
* Add test for tagged control plane traffic
* Control plane can now handle to ARP request/replies on both tagged and untagged ports
* pylint fixes
* pylint fixes
* pylint fixes
* remove obsolete ACL class
* pylint fixes
* Implement IPv4 static routes for untagged VLANs
* Add initial ARP resolver
* Correct name of new event
* Add event and helpers for ARP implementation
* Refactor tests to use common config header
* Update README.rst
* Update README.rst
* Update README.rst
* Update README.rst
* Update README.rst
* Update README.rst
* Create README.md
* Update faucet\_mininet\_test.py
* Update faucet\_mininet\_test.py
* Update faucet\_mininet\_test.py
* Add static routes to VLANs
* Test that disabling unicast\_flood on a VLAN doesn't break forwarding
* Implement configurable unicast flooding behavior at both VLAN and port level
* Add explicit multicast flood rules
* Drop packets from broadcast addresses
* Refactor flood action helper
* Correct default deny on all tables
* Add separate rule for broadcasts
* Add helper for packet ins, and limit maximum packet in size
* Default drop on all tables
* Simple build test only
* removed uml target
* added pyreverse to the list of python packages
* added sudo to make for write permissions
* changed make targets
* added sudo to python installation as /etc/ryu directory needs to be created
* install our package and add make all script
* added sudo for pip install
* simplified file to get the first build
* Added Travis Continuous integration
* Updated deployment picture with supported switches
* Remove further references to Pica8
* Delete README.md (redundant)
* Pica8 is not currently supported (no multitable)
* Added mininet testing info and instructions for new hardware vendors
* Added NoviFlow to the list of commercial hardware vendors
* typo fix
* Added instructions for testing before a pull-request
* Fix tests, and retire test\_valve.py (functionality superceeded by mininet tests)
* updated documentation
* updated to include correct version number and package names
* Directory restructuring
* Implement permanent\_learn mode on a by port basis (hosts learned on such ports cannot be learned/moved to others once learned on that port)
* Ignore file list
* Refactor learn host on a VLAN port into own function
* Test that hosts can move ports
* Comment: ACL compiler uses old OFPMatch() API
* Update to new OFPMatch API
* Add support for tagged/untagged on same port (need specific match for untagged packets)
* Test control plane ARP/ICMP responder
* Implement control plane ARP and ICMP responder
* Whitespace
* We need the full packet to the control plane handler, to parse it
* Send ICMP/ARP packets destined to controller, to controller. Ignore them for the moment
* Remove redundant config re supported hardware
* Tagged and untagged VLANs on the same port are not supported
* Diagnostic log for unhandled port status has reversed args
* List supported OFAs
* Implement mirror test. Fix tmpdir. Fix host names to be tagged/untagged
* Add mixed tagged/untagged test
* Add ACL test
* \* Refactor using unittest library. \* Wait for switches to connect before trying to pass traffic
* typos in copyright
* Implement tagged VLAN test
* Run an actual mininet test
* Unconfigured ports are not added
* \* Automatically delete all flows referencing a input port
* \* Fix mirroring of broadcasts from a mirrored port
* Support multiple flood rules
* \* flood actions built by helper
* \* Default drop to table 0
* Fix extraneous vlan\_table\_match
* Encapsulate all match functions in one helper
* \* Explicit drop all rule on all tables by default. \* Add helper for goto table
* \* add helper function to apply actions. \* pass mirror action list only and compile instructions on demand
* Use function to enumerate all tables
* Refactor adding vlans on a port into separate functions
* Autoconfigure only in one place (port\_add time)
* Simplify arguments to flow helpers with defaults for match and priority
* Add input ACL support
* Add ACL entries to config
* \* Signal handler should send an event to Ryu's framework (fix HUP handler) \* Simplify logic in port status handler
* Complete port mirroring implementation (packets in as well as output)
* \* major refactor and cleanup (reduce pylint errors, rename port\_num vs port class, etc) \* use helper functions to create flows (remove a lot of duplicate code and ensure all flows are generated with correct cookie)
* Add mirror output feature (adding attribute "mirror: N" on a port, causes that port to get a copy of everything output to N)
* Remove duplicate code from datapath\_connect(), calling port\_add() instead
* Further README tidyup
* Improve documentation
* Trivial error in faucet.yaml-dist
* Rearchitecture for the REANNZ Faucet Project
* Allow users to disable broadcast/multicast handling rules
* Bug fix: ACLs will now work when table\_miss=False
* Bugfix: Applying a priority\_offset to a single DP will now work
* Update License
* Don't install unicast flows in case where in\_port is the out\_port
* Properly license Valve and components as Apache 2.0
* Use OpenFlow cookies to enable coexisting wither other controllers
* Add Dockerfile for building Valve docker containers
* Added documentation on reloading configuration
* Support datapath down events
* Support reloading of Valve's configuration file
* Use DPSet application to grab Ryu datapath objects
* Fix log formatter for regular log messages after DP has registered
* Update readme
* Add stats collection (disabled by default)
* Bug fix: configured changed to running
* Add note on how to use hex datapath IDs
* Add a readme
* Add support for ipv6 ACLs
* Update distribution config file to show off new features
* Rework parsing engine. Adds full support for multi-dp.  \* Split off our old ugly parsing engine into a few classes  \* Adds back support for ACLs  \* Fixes installing broadcast flows for tagged/untagged ports  \* Clean ups  \* Bug fixes
* Remove our broken IGMP snooping implementation
* Changes to allow flow based handling of broadcast and multicast
* Included (vlan\_vid=vid|ofproto\_v1\_3.OFPVID\_PRESENT)
* Changes to support multiple datapaths
* Fix compliance with OF 1.3.3 section 7.2.5
* Ensure ACL is an optional param
* Update distribution config file to show off more features
* Add log message for IP/network ACLs
* Add simple ACLs to valve
* Improve logging
* Rework packet\_in handler
* Rework valve flows
* Fix grabbing in\_port from a Packet In message
* Fix VLAN VID matches
* Add OpenFlow 1.3 support to valve
* Fix bug in the case we don't have only one type of ports (exclusively tagged or untagged)
* Using priority 1 on prontos seems to break for some reason. Upping priorities to work around this
* Removing debugging print statement I accidentally commited #YOLO
* Make the last commit work
* Add flood rules preemptively to avoid packet outs
* Turns out Joe was right first time. Also rename \_vlan to vlan\_
* Fetch VLAN tags from packets
* Fix lots of bugs, change config format
* Improving valve by adding configuration file
* Our valve is a basic vlan switch
