switches module¶
This module is part of the nmeta suite running on top of Ryu SDN controller.
It provides classes that abstract the details of OpenFlow switches
-
class
switches.
Switches
(config)¶ Bases:
baseclass.BaseClass
This class provides an abstraction for a set of OpenFlow Switches.
It stores instances of the Switch class in a dictionary keyed by DPID. The switch instances are accessible externally.
A standard (not capped) MongoDB database collection is used to record switch details so that they can be accessed via the external API.
-
add
(datapath)¶ Add a switch to the Switches class
-
stats_reply
(msg)¶ Read in a switch stats reply
-
delete
(datapath)¶ Delete a switch from the Switches class
-
-
class
switches.
Switch
(config, datapath, offset)¶ Bases:
baseclass.BaseClass
This class provides an abstraction for an OpenFlow Switch
-
dbdict
()¶ Return a dictionary object of switch parameters for storing in the database
-
request_switch_desc
()¶ Send an OpenFlow request to the switch asking it to send us it’s description data
-
set_switch_config
(config_flags, miss_send_len)¶ Set config on a switch including config flags that instruct fragment handling behaviour and miss_send_len which controls the number of bytes sent to the controller when the output port is specified as the controller.
-
packet_out
(data, in_port, out_port, out_queue, no_queue=0)¶ Sends a supplied packet out switch port(s) in specific queue.
Set no_queue=1 if want no queueing specified (i.e. for a flooded packet). Also use for Zodiac FX compatibility.
Does not use Buffer IDs as they are unreliable resource.
-
set_switch_table_miss
(miss_send_len)¶ Set a table miss rule on table 0 to send packets to the controller. This is required for OF versions higher than v1.0
-
-
class
switches.
FlowTables
(config, datapath, offset)¶ Bases:
baseclass.BaseClass
This class provides an abstraction for the flow tables on an OpenFlow Switch
-
suppress_flow
(msg, in_port, out_port, out_queue)¶ Add flow entries to a switch to suppress further packet-in events while the flow is active.
Prefer to do fine-grained match where possible. Install reverse matches as well for TCP flows.
Do not install suppression for these types of flow: - DNS (want to harvest identity) - ARP (want to harvest identity) - DHCP (want to harvest identity) - LLDP (want to harvest identity)
-
drop_flow
(msg)¶ Add flow entry to a switch to suppress further packet-in events for a particular flow.
Prefer to do fine-grained match where possible.
TCP or UDP source ports are not matched as ephemeral
-
add_flow
(match_d, actions, priority, idle_timeout, hard_timeout, cookie)¶ Add a flow entry to a switch
-
actions
(out_port, out_queue, no_queue=0)¶ Create actions for a switch flow entry. Specify the out port and QoS queue, and set no_queue=1 if don’t want QoS set. Returns a list of action objects
-
match_ipv4_tcp
(ipv4_src, ipv4_dst, tcp_src, tcp_dst)¶ Match an IPv4 TCP flow on a switch. Passed IPv4 and TCP parameters and return an OpenFlow match object for this flow
-
match_ipv4_udp
(ipv4_src, ipv4_dst, udp_src, udp_dst)¶ Match an IPv4 UDP flow on a switch. Passed IPv4 and UDP parameters and return an OpenFlow match object for this flow
-
match_ipv6_tcp
(ipv6_src, ipv6_dst, tcp_src, tcp_dst)¶ Match an IPv6 TCP flow on a switch. Passed IPv6 and TCP parameters and return an OpenFlow match object for this flow
-
match_ipv6_udp
(ipv6_src, ipv6_dst, udp_src, udp_dst)¶ Match an IPv6 UDP flow on a switch. Passed IPv6 and UDP parameters and return an OpenFlow match object for this flow
-
match_ipv4
(ipv4_src, ipv4_dst, ip_proto)¶ Match an IPv4 flow on a switch. Passed IPv4 parameters and return an OpenFlow match object for this flow
-
match_ipv6
(ipv6_src, ipv6_dst)¶ Match an IPv6 flow on a switch. Passed IPv6 parameters and return an OpenFlow match object for this flow
-
-
switches.
_ipv4_t2i
(ip_text)¶ Turns an IPv4 address in text format into an integer. Borrowed from rest_router.py code