faucet.valve module¶
Implementation of Valve learning layer 2/3 switch.
-
class
faucet.valve.
ArubaValve
(dp, logname, metrics, notifier)[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.
OVSValve
(dp, logname, metrics, notifier)[source]¶ Bases:
faucet.valve.Valve
Valve implementation for OVS.
-
USE_BARRIERS
= False¶
-
-
class
faucet.valve.
TfmValve
(dp, logname, metrics, notifier)[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, metrics, notifier)[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¶
-
USE_BARRIERS
= True¶
-
base_prom_labels
= None¶
-
datapath_connect
(discovered_ports)[source]¶ Handle Ryu datapath connection event and provision pipeline.
Parameters: discovered_ports (list) – datapath OFPorts. Returns: OpenFlow messages to send to datapath. Return type: list
-
flood_manager
= None¶
-
flow_timeout
(table_id, match)[source]¶ Call flow timeout message handler:
Parameters: - table_id (int) – ID of table where flow was installed.
- match (dict) – match conditions for expired flow.
Returns: OpenFlow messages, if any.
Return type: list
-
host_manager
= None¶
-
lacp_handler
(pkt_meta)[source]¶ Handle a LACP packet.
We are a currently a passive, non-aggregateable LACP partner.
Parameters: pkt_meta (PacketMeta) – packet for control plane. Returns: OpenFlow messages, if any. Return type: list
-
lldp_handler
(pkt_meta)[source]¶ Handle an LLDP packet.
Parameters: pkt_meta (PacketMeta) – packet for control plane.
-
logger
= None¶
-
oferror
(msg)[source]¶ Correlate OFError message with flow we sent, if any.
Parameters: msg (ryu.controller.ofp_event.EventOFPMsgBase) – message from datapath.
-
parse_rcv_packet
(in_port, vlan_vid, eth_type, data, orig_len, pkt, eth_pkt)[source]¶ Parse a received packet into a PacketMeta instance.
Parameters: - 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.
Parameters: port_num (list) – list of port numbers. Returns: OpenFlow messages, if any. Return type: list
-
port_status_handler
(port_no, reason, port_status)[source]¶ Return OpenFlow messages responding to port operational status change.
-
ports_add
(port_nums, cold_start=False, log_msg='up')[source]¶ Handle the addition of ports.
Parameters: - port_num (list) – list of port numbers.
- cold_start (bool) – True if configuring datapath from scratch.
Returns: OpenFlow messages, if any.
Return type: list
-
ports_delete
(port_nums, log_msg='down')[source]¶ Handle the deletion of ports.
Parameters: port_nums (list) – list of port numbers. Returns: OpenFlow messages, if any. Return type: list
-
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.
Parameters: - other_valves (list) – all Valves other than this one.
- pkt_meta (PacketMeta) – packet for control plane.
Returns: OpenFlow messages, if any.
Return type: list
-
recent_ofmsgs
= deque([], maxlen=32)¶
-
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…
Parameters: new_dp (DP) – new dataplane configuration. Returns: OpenFlow messages. Return type: ofmsgs (list)
-
resolve_gateways
()[source]¶ Call route managers to re/resolve gateways.
Returns: OpenFlow messages, if any. Return type: list
-
send_flows
(ryu_dp, flow_msgs)[source]¶ Send flows to datapath.
Parameters: - ryu_dp (ryu.controller.controller.Datapath) – datapath.
- flow_msgs (list) – OpenFlow messages to send.
-
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.
Returns: OpenFlow messages, if any. Return type: list
-