faucet.valve_flood module

Manage flooding to ports on VLANs.

class faucet.valve_flood.ValveFloodManager(logger, flood_table, pipeline, use_group_table, groups, combinatorial_port_flood)[source]

Bases: faucet.valve_manager_base.ValveManagerBase

Implement dataplane based flooding for standalone dataplanes.

FLOOD_DSTS = ((True, None, None), (False, '01:80:c2:00:00:00', 'ff:ff:ff:00:00:00'), (False, '01:00:5E:00:00:00', 'ff:ff:ff:00:00:00'), (False, '33:33:00:00:00:00', 'ff:ff:00:00:00:00'), (False, 'ff:ff:ff:ff:ff:ff', 'ff:ff:ff:ff:ff:ff'))
add_vlan(vlan)[source]

install flows in response to a new vlan

build_flood_rules(vlan, modify=False)[source]

Add flows to flood packets to unknown destinations on a VLAN.

static edge_learn_port(_other_valves, pkt_meta)[source]

Possibly learn a host on a port.

Parameters:
  • other_valves (list) – All Valves other than this one.
  • pkt_meta (PacketMeta) – PacketMeta instance for packet received.
Returns:

port to learn host on.

initialise_tables()[source]

Initialise the flood table with filtering flows.

static update_stack_topo(event, dp, port=None)[source]

Update the stack topology. It has nothing to do for non-stacking DPs.

class faucet.valve_flood.ValveFloodStackManager(logger, flood_table, pipeline, use_group_table, groups, combinatorial_port_flood, stack, stack_ports, dp_shortest_path_to_root, shortest_path_port)[source]

Bases: faucet.valve_flood.ValveFloodManager

Implement dataplane based flooding for stacked dataplanes.

EXT_PORT_FLAG = 1
NONEXT_PORT_FLAG = 0
edge_learn_port(other_valves, pkt_meta)[source]

Possibly learn a host on a port.

Parameters:
  • other_valves (list) – All Valves other than this one.
  • pkt_meta (PacketMeta) – PacketMeta instance for packet received.
Returns:

port to learn host on, or None.

update_stack_topo(event, dp, port=None)[source]

Update the stack topo according to the event.