RegrTestItemsTable

From OpenFlow Wiki

Jump to: navigation, search
Class Phase Item OpenFlow message C
a
s
e
Feature Existing
Test
1 Establishment Hello message exchange OFPT_HELLO 1 "Switch initiates OFPT_HELLO, and then it receives OFPT_HELLO from Controller." test_hello
2 "OFPT_HELLO has only ofp_header, but it can have body. Switch has to expect body, which has to be ignored."
3 Each of them(Switch/Controller) performs version negotiation using information in OFPT_HELLO test_hello
4 "Even if Switch (or Controller) behaves as older version, it doesn't mention it to the oppornent."
5 "If Switch doesn't have version compatibility, it sends OFPT_ERROR to Controller and terminates connection. (See Error section)"
6 "If Controller doesn't have version compatibility, Switch will receive OFPT_ERROR from Controller. Then...? (See Error section)"
Feature check OFPT_FEATURES_REQUEST 1 Switch sends back OFPT_FEATURES_REPLY when it receives OFPT_FEATURES_REQUEST.
OFPT_FEATURES_REPLY 2 Reply from Switch includes:
    maximum packets buffered at once (n_buffers)
number of tables (n_tables)
Switch capabilities (capabilities)
   OFPC_FLOW_STATS
OFPC_TABLE_STATS
OFPC_PORT_STATS
OFPC_STP
OFPC_MULTI_PHY_TX
OFPC_IP_REASM
Supported actions by Switch (actions)
  OFPAT_OUTPUT
OFPAT_SET_VLAN_VID
OFPAT_SET_VLAN_PCP
OFPAT_STRIP_VLAN
OFPAT_SET_DL_SRC
OFPAT_SET_DL_DST
OFPAT_SET_NW_SRC
OFPAT_SET_NW_DST
OFPAT_SET_TP_SRC
OFPAT_SET_TP_DST
OFPAT_VENDOR
Port definitions (for all OpenFlow ports) (struct ofp_phy_port port[x])
  port_no
hw_addr
name
config
                        OFPPC_PORT_DOWN
OFPPC_NO_STP
OFPPC_NO_RECV
OFPPC_NO_RECV_STP
OFPPC_NO_FLOOD
OFPPC_NO_FWD
OFPPC_NO_PACKET_IN
state
  OFPPS_LINK_DOWN
OFPPS_STP_LISTEN
OFPPS_STP_LEARN
OFPPS_STP_FORWARD
OFPPS_STP_BLOCK
OFPPS_STP_MASK
curr/advertised/supported/peer
  OFPPF_10MB_HD
OFPPF_10MB_FD
OFPPF_100MB_HD
OFPPF_100MB_FD
OFPPF_1GB_HD
OFPPF_1GB_FD
OFPPF_10GB_FD
OFPPF_COPPER
OFPPF_FIBER
OFPPF_AUTONEG
OFPPF_PAUSE
OFPPF_PAUSE_ASYM
2 Connectivity check ECHO message exchange OFPT_ECHO_REQUEST 1 Switch issues OFPT_ECHO_REQUEST (what's the trigger? when? frequency? Does Switch initiates it automatically? ... are not in the spec)
OFPT_ECHO_REPLY 2 Switch sends OFPT_ECHO_REPLY when it receives OFPT_ECHO_REQUEST from Controller
3 Switch sends OFPT_ECHO_REPLY with the same body on REQUEST.
4 Switch sends OFPT_ECHO_REPLY with no body when REQUEST doesn't contain any.
3 Configuration Switch configuration OFPT_SET_CONFIG 1 Controller sets OFPC_SEND_FLOW_EXP when it wants Switch to initiate OFPT_FLOW_EXPIRED message.
"Only when it is set, Switch issues OFPT_FLOW_EXPIRED message when the flow expires."
  flag
  OFPC_SEND_FLOW_EXP
2 Controller sets the packet size to be sent from Switch with OFPT_PACKET_IN test_switch_config
  miss_send_len test_miss_send_length
3 Controller sets the Switch's behavior in case incoming IP packet is fragmented
  flag
  "OFPC_FRAG_NORMAL (See ""Flow setting"" section)"
OFPC_FRAG_DROP
OFPC_FRAG_REASM
OFPC_FRAG_MASK (used as a mask for the above three options)
OFPT_GET_CONFIG_REQUEST 4 Switch sends back OFPT_GET_CONFIG_REPLY when it receives OFPT_GET_CONFIG_REQUEST. test_Switch_config
OFPT_GET_CONFIG_REPLY 5 Switch reflects the values which Controller sets with OFPT_SET_CONFIG message test_Switch_config
Port configuration OFPT_PORT_MOD 1 Switch changes the specified ports' characteristics as Controller commands in OFPT_PORT_MOD message. Switch issues no reply on receipt.
"Non-STP-support-switch must follow the setting below, when it performs OUTPUT action to OFPP_FLOOD port."
  OFPPC_PORT_DOWN
OFPPC_NO_STP
OFPPC_NO_RECV
OFPPC_NO_RECV_STP
OFPPC_NO_FLOOD
OFPPC_NO_FWD
OFPPC_NO_PACKET_IN
2 Switch changes particular parts of the characteristics as specified with OFPT_PORT_MOD mask field.
4 Statistics information OFPT_STATS_REQUEST 1 Switch reports OFPT_STATS_REPLY when it receives OFPT_STATUS_REQUEST from the Controller. "test_flow_stats, test_port_stats"
OFPT_STATS_REPLY 2 Switch(datapath) reports the information specified by OFPT_STATUS_REQUEST's type field. partially.
3 Following are the types requested by Controller:
  OFPST_DESC
OFPST_FLOW test_flow_stats
OFPST_AGGREGATE
OFPST_TABLE
OFPST_PORT test_port_stats
OFPST_VENDOR
When Type is OFPST_DESC:
4   The OFPT_STATS_REQUEST has no Body.
5 Switch replies the following information:
  Manufacturer (character)
Hardware description (character)
Software description (character)
Serial number (character)
When Type is OFPST_FLOW:
6   The OFPT_STATS_REQUEST has ofp_flow_stats_request as Body. test_flow_stats
7 Switch shows the information about the entry specified by Controller with ofp_match field. test_flow_stats but only 1 pattern.
8 "If out_port is specified by Controller, Switch shows information only about the specified port"
9 The Switch's reply includes: test_flow_stats but not verified.
  Time flow has been alive (duration)
Priority of the entry (priority)
idle_timeout
hard_timeout
packet_count
byte_count
actions (struct ofp_action_header)
When Type is OFPST_AGGREGATE:
10   The OFPT_STATS_REQUEST has ofp_aggregate_stats_request as Body.
11 Switch shows the information about the entry specified by Controller with ofp_match field.
12 "If out_port is specified by Controller, show information only about specified port"
13 The Switch's reply includes:
  packet_count
byte_count
flow_count
When Type is OFPST_TABLE:
14   The OFPT_STATS_REQUEST has no Body.
15 The Switch's reply includes:
  Name of the table (name)
Wildcards supported by the table (wildcards)
max number of entries (max_entries)
number of active entries (active_count)
number of packets looked up in the table (lookup_count)
number of packets that hit the table (matched_count)
When Type is OFPST_PORT:
16   The OFPT_STATS_REQUEST has no Body. test_port_stats
17 The Switch's reply includes: test_port_stats but not verified or displayed
  rx_packets
tx_packets
rx_bytes
tx_bytes
rx_dropped
tx_dropped
rx_errors
tx_errors
rx_frame_err
rx_over_err
rx_crc_err
collisions
18 "When Switch doesn't support particular fields, Switch sends back the fields with all '1's." test_port_stats but not verified or displayed
When Type is OFPST_VENDOR:
19   The OFPT_STATS_REQUEST has ofp_aggregate_stats_request as Body.
20 The other parts are vendor-defined.
5 Status change notification OFPT_PORT_STATUS 1 "When a port is added, Switch Sends OFPT_PORT_STATUS with:"
  OFPPR_ADD
port information (struct ofp_phy_port)
2 "When a port is removed, Switch sends OFPT_PORT_STATUS with:"
  OFPPR_DELETE
port information (struct ofp_phy_port)
3 "When a port configuration is changed (LINK UP/DOWN?802.1D port state), Switch sends OFPT_PORT_STATUS with:"
  OFPPR_MODIFY
port information (struct ofp_phy_port)
6 Packet forwarding action Action types OFPT_PACKET_IN 1 Switch initiates OFPT_PACKET_IN when an incoming packet doesn't match any entries on any tables. test_packet_in
Switch writes OFPR_NO_MATCH in the reason field of OFPT_PACKET_IN.
2 Switch initiates OFPT_PACKET_IN when corresponding action for the flow-matched entry mentions to send it to Controller (OFPP_Controller). test_XXX_Controller
Switch writes OFPR_ACTION in the reason field of OFPT_PACKET_IN.
3 Switch includes Buffer ID in OFPT_PACKET_IN as follows:
  Buffer id (ID for the potion of the packet or 0xFFFF for entire packet) no (buffer id is not checked)
4 Switch can send fraction of packet (size of miss_send_len) + buffer ID "test_miss_send_length (buffer is not checked, and proceeding action (packet_out) is not been made.)"
5 Switch can send entire packet + buffer ID of 0xffff. test_packet_in
OFPT_PACKET_OUT 6 "Switch sends packet out to the port mentioned in OFPT_PACKET_OUT, which include all or fraction of data and buffer_id" test_packet_out
7 "When buffer_id in OFPT_PACKET_OUT is 0xffff, Switch sends all the data contained in OFPT_PACKET_OUT" test_packet_out
8 "When buffer_id in OFPT_PACKET_OUT is set, Switch sends internally-buffered data to the port (buffered when Switch sends OFPT_PACKET_IN to Controller with associated buffer_id.)"
7 Flow setting Flow table setting OFPT_FLOW_MOD 1 "When Switch receives OFPT_FLOW_MOD, it parses the contents and set parameters accordingly." many tests...
The parameters include:
  matching entry (struct ofp_match match)
ADD/MODIFY/MODIFY_STRICT/DELETE/DELETE_STRICT (command)
idle_timeout
hard_timeout
priority
buffer_id
outport for OFPFC_DELETE/DELETE_STRICT commands. OFPP_NONE or particular port number. (out_port)
zero or more actions (struct ofp_action_header actions)
When command is OFPFC_ADD:
2   "In wildcard mode, when table already has matching entry and has the same priority, Switch rejects the new message and send back OVERLAP error message to the Controller."
3 "When table is full, Switch sends back OFPT_ERROR - OFPET_FLOW_MOD_FAILED - OFPFMFC_ALL_TABLES_FULL to Controller. (See Error section)"
When command is OFPFC_MODIFY:
4   "If Switch doesn't have matching entry information yet, it adds the flow to the table."
5 "If Switch already has matching entry information, it overwrites the action to the table."
6 Switch doesn't clear the corresponding counters.
7 "If out_port is specified by Controller, Switch modifies the action only when output port is also matched."
When command is OFPFC_MODIFY_STRICT:
8   Switch modifies action only when both entry and priority are matched
9 Switch doesn't clear the corresponding counters.
10 "If out_port is specified by Controller, modify the action only when output port is matched."
11 matching entry (struct ofp_match match) test_forward_exact_port/all/Controller
  match fields include: test_forward_exact_icmp_port/all/Controller/fool
  PHY PORT # (in_port)
MAC SRC (dl_src)
MAC DST (dl_dst)
VLAN (dl_vlan)
Ethernet frame type (dl_type)
Network protocol (nw_proto)
IP SRC (nw_src)
IP DST (nw_dst)
TP SRC (tp_src)
TP_DST (tp_dst)
ICMP TYPE (tp_src)
ICMP CODE (tp_dst)
12 tp_src and tp_dst must be zero if Controller wants Switch to match fragmented IP packets
13 Switch assumes tp_src and tp_dst as ICMP_TYPE and ICMP_CODE when nw_proto is ICMP. test_forward_exact_icmp_port/all/Controller/fool
Switch supports various Ethernet types
14   Ethernet II many tests...
15 SNAP test_llc (but not performed as auto-run test)
dl_type=0x5FF is used for 802.3 matching
16 "When IP packet is fragmented on the condition where OFPC_FRAG_NORMAL is set, the packet will be looked up. TP_SRC and TP_DSP must be zero in order to match (as described above)."
match field also includes wildcards fields which consist of:
17   PHY PORT # (in_port) test_forward_wildcard_port/all/Controller
18 MAC SRC (dl_src) test_forward_wildcard_port/all/Controller
19 MAC DST (dl_dst) test_forward_wildcard_port/all/Controller
20 VLAN (dl_vlan)
21 Ethernet frame type (dl_type)
22 Network protocol (nw_proto)
23 IP SRC (nw_src) with netmask support "test_forward_wildcard_port/all/Controller, but netmask is not tested"
24 IP DST (nw_dst) with netmask support "test_forward_wildcard_port/all/Controller, but netmask is not tested"
25 TP SRC (tp_src) test_forward_wildcard_port/all/Controller
26 TP_DST (tp_dst) test_forward_wildcard_port/all/Controller
27 ICMP TYPE (tp_src) test_forward_exact_icmp_port/all/Controller/fool
28 ICMP CODE (tp_dst) test_forward_exact_icmp_port/all/Controller/fool
29 everything (ALL) test_forward_any_port (wildcard=0x3ff --> must be corrected to fff)
"When command is either OFPFC_ADD, OFPFC_MODIFY, OFPFC_MODIFY_STRICT:"
  action field includes:
  OFPAT_OUTPUT
30   OFPP_ALL,"test_forward_exact_all, test_forward_wildcard_all, test_forward_exact_icmp_all, test_forward_wildcard_icmp_all,"
31 OFPP_Controller,"test_forward_exact_Controller, test_forward_wildcard_Controller, test_forward_exact_icmp_Controller, test_forward_wildcard_icmp_Controller"
32 OFPP_LOCAL
33 OFPP_TABLE -- Perform actions in flow table only for packet_out message
34 OFPP_IN_PORT
35 OFPP_NORMAL
36 OFPP_FLOOD
37 OFPP_NONE
38 PORT (not exceeding OFPP_MAX),"test_forward_exact_port, test_forward_wildcard_port, test_forward_exact_icmp_port, test_forward_wildcard_icmp_port"
39 OFPAT_SET_VLAN_VID
"When VLAN ID already exists, Switch replaces it with new one."
"When VLAN ID doesn't exist, Switch adds it with VLAN PCP 0x0"
40   OFPAT_SET_VLAN_PCP
  "When VLAN PCP already exists, Switch replaces it with new one."
"When VLAN PCP doesn't exist, add it with VLAN ID 0x0"
41   OFPAT_STRIP_VLAN
42 OFPAT_SET_DL_SRC test_forward_modify_action
43 OFPAT_SET_DL_DST test_forward_modify_action
44 OFPAT_SET_NW_SRC
  Switch recalculates IP checksum and UDP/TCP checksum if necessary,test_forward_modify_action
45 OFPAT_SET_NW_DST
Switch recalculates IP checksum and UDP/TCP checksum if necessary,test_forward_modify_action
46 OFPAT_SET_TP_SRC
Switch recalculates UDP/TCP checksum,test_forward_modify_action
47 OFPAT_SET_TP_DST
Switch recalculates UDP/TCP checksum,test_forward_modify_action
48 OFPAT_VENDOR
49   "When action field doesn't exist, Switch drops the matched packets (""drop"" action)." test_drop_exact
50 "When multiple actions exist, Switch performs all of them. The order is not defined in the spec." test_forward_modify_action
51 Using multiple actions Switch can send packet out to multiple/all ports.
When command is OFPFC_DELETE
52   Switch deletes the flow of matched entry. test_delete
53 "If the entry doesn't exist, Switch doesn't do anything (it doesn't even send any error reports)."
54 "If out_port is other than OFPP_NONE, Switch erases the entry only if output port is also matched."
When command is OFPFC_DELETE_STRICT
55   Switch deletes the flow when both entry and priority are matched. test_delete_strict
56 "If the entry doesn't exist, Switch doesn't do anything (it doesn't even send any error reports)."
57 "If out_port is other than OFPP_NONE, Switch erases the entry only if output port is also matched."
8 flow_expiration Notice when flow is expired OFPT_FLOW_EXPIRED 1 Switch initiates OFPT_FLOW_EXPIRED message if OFPT_SET_CONFIG-OFPC_SEND_FLOW_EXP is set "test_flow_expired, test_forward_after_expiration, and many other tests"
2 Switch doesn't initiate OFPT_FLOW_EXPIRED message if OFPT_SET_CONFIG-SEND_FLOW_EXP is not set
3 Switch sends the following information in OFPT_FLOW_EXPIRED. yes and checked
  entry
priority
reason(HARD TIMEOUT or IDLE TIMEOUT)
duration
packet_cnt
byte_cnt
4 "The reason is either HARD_TIMEOUT or IDLE_TIMEOUT, depending on OFPT_FLOW_MOD and expiring situation."
5 "If HARD_TIMEOUT is set, the flow must be expired after the specified time, even if Switch keeps receiving the matched packets."
9 Error Assert Error message when necessary OFPT_ERROR 1 "When exchanging OFPT_HELLO, if Switch and Controller don't have OpenFlow version compatibility, the receiver of OFPT_HELLO sends error as follows:"
  OFPET_HELLO_FAILED
  OFPHFC_INCOMPATIBLE
"On Controller/Switch message, if header or vendor information has problem and request is not understood, send error as follows:"
  OFPET_BAD_REQUEST
2   OFPBRC_BAD_VERSION version not supported
3 OFPBRC_BAD_TYPE type not supported
4 OFPBRC_BAD_STAT ofp_stats_request type not supported
5 "OFPBRC_BAD_VENDOR ofp_vendor, ofp_stats_request, ofp_stats_reply: vendor not supported"
6 OFPBRC_BAD_SUBTYPE vendor subtype not supported
Error about action description
7 "When action description (of what messages???) is something wrong, Switch sends following ""type"" and ""code"" and at least the first 64 bytes of the failed request"
  OFPET_BAD_ACTION
8   OFPBAC_BAD_TYPE unknown action type
9 OFPBAC_BAD_LEN length problem
10 OFPBAC_BAD_VENDOR unknown vendor id
11 OFPBAC_BAD_VENDOR_TYPE unknown action type for vendor id
12 OFPBAC_BAD_OUT_PORT problem validating output action
13 OFPBAC_BAD_ARGUMENT bad action argument
"When OFPT_FLOW_MOD performed, if table in Switch is full, Switch sends an error message as follows:"
  OFPET_FLOW_MOD_FAILED
14   OFPFMFC_ALL_TABLES_FULL
10 Others VENDOR EXTENSION OFPT_VENDOR "Vendor specific, but when something is wrong with the message, Switch sends back an error message to Controller (See Error section)."
11 Unexpected behavior Connection Loss 1 Switch doesn't do anything and it lets the flows expire.
  "(...But if hard timeout is not set, they may not expire at all...)"
12 Controller connection Protocol 1 Switch can connect Controller either via plain TCP or over SSL.
2 Switch can connect to any fixed IP address and TCP port number (even though it assumes tcp:6633 by default)
13 Other features 802.1d STP support 1 "If Switch supports STP, Switch tells so to Controller via OFPC_STP bit on OFPT_FEATURES_REPLY during its initializing phase."
2 STP-supporting Switch must process 802.1D packets before flow lookup.
3 "Switch updates the ""struct ofp_phy_port"" according to the decision made with STP process"
4 "When outport is OFP_FLOOD, Switch restricts the output ports based on the state on ofp_phy_port."
5 "When outport is OFP_ALL, Switch ignores STP port state when forwarding."