faucet.valve module¶
Implementation of Valve learning layer 2/3 switch.
-
class
faucet.valve.
ArubaValve
(dp, logname)[source]¶ Bases:
faucet.valve.TfmValve
Valve implementation that uses OpenFlow send table features messages.
-
DEC_TTL
= False¶
-
PIPELINE_CONF
= 'aruba_pipeline.json'¶
-
-
class
faucet.valve.
TfmValve
(dp, logname)[source]¶ Bases:
faucet.valve.Valve
Valve implementation that uses OpenFlow send table features messages.
-
PIPELINE_CONF
= 'tfm_pipeline.json'¶
-
SKIP_VALIDATION_TABLES
= ()¶
-
-
class
faucet.valve.
Valve
(dp, logname)[source]¶ Bases:
object
Generates the messages to configure a datapath as a l2 learning switch.
Vendor specific implementations may require sending configuration flows. This can be achieved by inheriting from this class and overwriting the function switch_features.
-
DEC_TTL
= True¶
-
L3
= False¶
-
base_prom_labels
= None¶
-
control_plane_handler
(pkt_meta)[source]¶ Handle a packet probably destined to FAUCET’s route managers.
For example, next hop resolution or ICMP echo requests.
- Args:
- pkt_meta (PacketMeta): packet for control plane.
- Returns:
- list: OpenFlow messages, if any.
-
datapath_connect
(discovered_up_port_nums)[source]¶ Handle Ryu datapath connection event and provision pipeline.
- Args:
- discovered_up_port_nums (list): datapath ports that are up as ints.
- Returns:
- list: OpenFlow messages to send to datapath.
-
lacp_handler
(pkt_meta)[source]¶ Handle a LACP packet.
We are a currently a passive, non-aggregateable LACP partner.
- Args:
- pkt_meta (PacketMeta): packet for control plane.
- Returns:
- list: OpenFlow messages, if any.
-
parse_rcv_packet
(in_port, vlan_vid, eth_type, data, orig_len, pkt, eth_pkt)[source]¶ Parse a received packet into a PacketMeta instance.
- Args:
- in_port (int): port packet was received on. vlan_vid (int): VLAN VID of port packet was received on. eth_type (int): Ethernet type of packet. data (bytes): Raw packet data. orig_len (int): Original length of packet. pkt (ryu.lib.packet.packet): parsed packet received. ekt_pkt (ryu.lib.packet.ethernet): parsed Ethernet header.
- Returns:
- PacketMeta instance.
-
port_add
(port_num)[source]¶ Handle addition of a single port.
- Args:
- port_num (list): list of port numbers.
- Returns:
- list: OpenFlow messages, if any.
-
ports_add
(port_nums, cold_start=False)[source]¶ Handle the addition of ports.
- Args:
- port_num (list): list of port numbers. cold_start (bool): True if configuring datapath from scratch.
- Returns:
- list: OpenFlow messages, if any.
-
ports_delete
(port_nums)[source]¶ Handle the deletion of ports.
- Args:
- port_nums (list): list of port numbers.
- Returns:
- list: OpenFlow messages, if any.
-
rcv_packet
(other_valves, pkt_meta)[source]¶ Handle a packet from the dataplane (eg to re/learn a host).
The packet may be sent to us also in response to FAUCET initiating IPv6 neighbor discovery, or ARP, to resolve a nexthop.
- Args:
- other_valves (list): all Valves other than this one. pkt_meta (PacketMeta): packet for control plane.
- Return:
- list: OpenFlow messages, if any.
-
recent_ofmsgs
= <queue.Queue object>¶
-
reload_config
(new_dp)[source]¶ Reload configuration new_dp.
- Following config changes are currently supported:
- Port config: support all available configs (e.g. native_vlan, acl_in)
- & change operations (add, delete, modify) a port
- ACL config:support any modification, currently reload all rules
- belonging to an ACL
- VLAN config: enable, disable routing, etc…
- Args:
- new_dp (DP): new dataplane configuration.
- Returns:
- tuple of:
- cold_start (bool): whether cold starting. ofmsgs (list): OpenFlow messages.
-
resolve_gateways
()[source]¶ Call route managers to re/resolve gateways.
- Returns:
- list: OpenFlow messages, if any.
-
state_expire
()[source]¶ Expire controller caches/state (e.g. hosts learned).
Expire state from the host manager only; the switch does its own flow expiry.
- Return:
- list: OpenFlow messages, if any.
-
switch_features
(_msg)[source]¶ Send configuration flows necessary for the switch implementation.
Arguments: msg – OFPSwitchFeatures msg sent from switch.
Vendor specific configuration should be implemented here.
-