Tuesday, March 21, 2017

FAUCET @ OpenStack 2017


Joe Stringer will present "Deploying an OVS-based feature switch in 5 minutes or less", a demo showing how to quickly deploy the Faucet open source OpenFlow controller as a drop-in replacement for a network switch.

Joe Stringer will present "Cyber RFP!" about the strategy that the Faucet open source OpenFlow controller uses to validate a switch's OpenFlow support using a comprehensive, easy to use testsuite.

Monday, March 13, 2017

Inter VLAN routing

FAUCET now supports routing between VLANs, in a way similar to non-SDN switch/routers

In this example, hosts in VLAN 100 can reach hosts in VLAN 200, using FAUCET as a gateway (FAUCET of course presents a gateway in each VLAN).

In the future, FAUCET will allow you to configure routing between just the VLANs you specify, rather than all or none.

        faucet_vips: [""]
        faucet_vips: [""]
        vlans: [100, 200]
        hardware: "Open vSwitch"
        dp_id: 0x1
                native_vlan: 100
                native_vlan: 200

Tuesday, February 28, 2017

FAUCET continuous integration testing with Travis


You've added a new feature to FAUCET and the tests pass; that's great! But how can you be confident that they pass in an environment that has been cleanly set up from scratch?

With Travis CI you can. Travis automatically runs tests for you in a dynamically created VM and tracks various code metrics so you can see things improve over time.


If you clone FAUCET to your own repo, you can have Travis do this checking for you easily.

Friday, February 24, 2017

Reporting on the FAUCET pipeline

It's useful to know, when implementing a feature and while testing it, what impact it might have in terms of match or action resources on the switch.

The FAUCET unit tests now produce a report on what match, instructions, and actions are used by each table.

The following example is when running the FaucetUntaggedTest only. As you can see, there are operations on VLAN/VID, and some mask matching on eth_dst (the rest being exact match).

FAUCET's pipeline changes occasionally to accommodate new features, so it's handy to be able to run this report at any time.

table: 0
  matches: ['in_port']
  table_instructions: ['OFPInstructionGotoTable']
  table_actions: []
table: 1
  matches: ['eth_dst', 'eth_src', 'eth_type', 'in_port', 'vlan_vid']
  table_instructions: ['OFPInstructionGotoTable']
  table_actions: ['OFPActionPushVlan', 'OFPActionSetField_vlan_vid']
table: 2
  matches: ['in_port']
  table_instructions: []
  table_actions: []
table: 3
  matches: ['eth_src', 'in_port', 'vlan_vid']
  table_instructions: ['OFPInstructionGotoTable']
  table_actions: ['OFPActionOutput']
table: 4
  matches: ['vlan_vid']
  table_instructions: []
  table_actions: []
table: 5
  matches: ['vlan_vid']
  table_instructions: []
  table_actions: []
table: 6
  matches: ['eth_dst', 'vlan_vid']
  table_instructions: ['OFPInstructionGotoTable']
  table_actions: ['OFPActionOutput', 'OFPActionPopVlan']
table: 7
  matches: ['eth_dst', 'eth_dst/ff:ff:00:00:00:00', 'eth_dst/ff:ff:ff:00:00:00', 'in_port', 'vlan_vid']
  table_instructions: []

  table_actions: ['OFPActionOutput', 'OFPActionPopVlan']