Port modification
Port modification is used to change the characteristics of a port in an OpenFlow instance on the switch via the controller. The controller sends an OFP_PORT_MOD message to the switch that can change the characteristics of a specific port.
The following command checks the state of the port configuration for all ports of an instance.
Syntax
show openflow instance <instance-name> port-statistics
Example
switch(of-inst-t1)# show openflow instance t1 port-statistics Number of Ports :1 Port 1/1 : Up Status Admin. Status : Enabled Flood : Enabled Receive : Enabled Forward : Enabled Packet_in : Disabled Statistics Collisions : 0 Rx Packets : 0 TxPackets : 47 Rx Bytes : 0 TxBytes : 10718 Rx Dropped : 0 TxDropped : 0 Rx Errors : 0 TxErrors : 0 Frame Errors : 0 CRC Errors : 0 Overrun Errors : 0
Example: OpenFlow version 1.0
Wireshark Capture of a sample Port-Mod message for a 1.0 instance OpenFlow Protocol Header Version: 0x01 Type: Port Mod (CSM) (15) Length: 32 Transaction ID: 4 Port Modification Port #: 5 MAC Address: HewlettP_02:2c:bb (84:34:97:02:2c:bb) Port ConfigFlags .... .... .... .... .... .... .... ...0 = Port is administratively down: No (0) .... .... .... .... .... .... .... ..0. = Disable 802.1D spanning tree on port: No (0) .... .... .... .... .... .... .... .0.. = Drop non-802.1D packets received on port: No (0) .... .... .... .... .... .... .... 0... = Drop received 802.1D STP packets: No (0) .... .... .... .... .... .... ...1 .... = Do not include this port when flooding: Yes (1) .... .... .... .... .... .... ..0. .... = Drop packets forwarded to port: No (0) .... .... .... .... .... .... .0.. .... = Do not send packet-in msgs for port: No (0) Port Config Mask .... .... .... .... .... .... .... ...0 = Port is administratively down: No (0) .... .... .... .... .... .... .... ..0. = Disable 802.1D spanning tree on port: No (0) .... .... .... .... .... .... .... .0.. = Drop non-802.1D packets received on port: No (0) .... .... .... .... .... .... .... 0... = Drop received 802.1D STP packets: No (0) .... .... .... .... .... .... ...1 .... = Do not include this port when flooding: Yes (1) .... .... .... .... .... .... ..0. .... = Drop packets forwarded to port: No (0) .... .... .... .... .... .... .0.. .... = Do not send packet-in msgs for port: No (0) Port Advertise Flags .... .... .... .... .... .... .... ...0 = 10 Mb half-duplex rate support: No (0) .... .... .... .... .... .... .... ..0. = 10 Mb full-duplex rate support: No (0) .... .... .... .... .... .... .... .0.. = 100 Mb half-duplex rate support: No (0) .... .... .... .... .... .... .... 0... = 100 Mb full-duplex rate support: No (0) ... .... .... .... .... .... ...0 .... = 1 Gb half-duplex rate support: No (0) .... .... .... .... .... .... ..0. .... = 1 Gb full-duplex rate support: No (0) .... .... .... .... .... .... .0.. .... = 10 Gb full-duplex rate support: No (0) .... .... .... .... .... .... 0... .... = Copper medium support: No (0) .... .... .... .... .... ...0 .... .... = Fiber medium support: No (0) .... .... .... .... .... ..0. .... .... = Auto-negotiation support: No (0) .... .... .... .... .... .0.. .... .... = Pause support: No (0) .... .... .... .... .... 0... .... .... = Asymmetric pause support: No (0) Pad: 0 Pad: 0 Pad: 0 Pad: 0
Example: OpenFlow version 1.3
Wireshark Capture of a sample Port-Mod message for a 1.3 instance OpenFlow Protocol Header Version: 0x04 Type: Port Mod (CSM) (16) Length: 40 Transaction ID: 4043243760 Port Modification Port #: 2 Pad: 0 Pad: 0 Pad: 0 Pad: 0 MAC Address: HewlettP_02:2c:be (84:34:97:02:2c:be) Pad: 0 Pad: 0 Port ConfigFlags .... .... .... .... .... .... .... ...0 = Port is administratively down: No (0) .... .... .... .... .... .... .... ..0. = Disable 802.1D spanning tree on port: No (0) .... .... .... .... .... .... .... .0.. = Drop non-802.1D packets received on port: No (0) .... .... .... .... .... .... .... 0... = Drop received 802.1D STP packets: No (0) .... .... .... .... .... .... ...0 .... = Do not include this port when flooding: No (0) .... .... .... .... .... .... ..0. .... = Drop packets forwarded to port: No (0) .... .... .... .... .... .... .1.. .... = Do not send packet-in msgs for port: Yes (1) Port Config Mask .... .... .... .... .... .... .... ...0 = Port is administratively down: No (0) .... .... .... .... .... .... .... ..0. = Disable 802.1D spanning tree on port: No (0) .... .... .... .... .... .... .... .0.. = Drop non-802.1D packets received on port: No (0) .... .... .... .... .... .... .... 0... = Drop received 802.1D STP packets: No (0) .... .... .... .... .... .... ...0 .... = Do not include this port when flooding: No (0) .... .... .... .... .... .... ..0. .... = Drop packets forwarded to port: No (0) .... .... .... .... .... .... .1.. .... = Do not send packet-in msgs for port: Yes (1) Port Advertise Flags .... .... .... .... .... .... .... ...0 = 10 Mb half-duplex rate support: No (0) .... .... .... .... .... .... .... ..0. = 10 Mb full-duplex rate support: No (0) .... .... .... .... .... .... .... .0.. = 100 Mb half-duplex rate support: No (0) .... .... .... .... .... .... .... 0... = 100 Mb full-duplex rate support: No (0) .... .... .... .... .... .... ...0 .... = 1 Gb half-duplex rate support: No (0) .... .... .... .... .... .... ..0. .... = 1 Gb full-duplex rate support: No (0) .... .... .... .... .... .... .0.. .... = 10 Gb full-duplex rate support: No (0) .... .... .... .... .... .... 0... .... = Copper medium support: No (0) .... .... .... .... .... ...0 .... .... = Fiber medium support: No (0) .... .... .... .... .... ..0. .... .... = Auto-negotiation support: No (0) .... .... .... .... .... .0.. .... .... = Pause support: No (0) .... .... .... .... .... 0... .... .... = Asymmetric pause support: No (0) Pad: 0 Pad: 0 Pad: 0 Pad: 0
Example
Send a Port-Mod command to the switch using dpctl, a controller utility.
root@openflow-ubuntu-10:/home/openflow# dpct ltcp:10.20.30.50:6633 port-desc ... {no="6", hw_addr="00:1b:3f:cf:76:fa", name="A6", config="0x0", state="0x1", curr="0x0", adv="0x0", supp="0x0", peer="0x0", curr_spd="100000000kbps", max_spd="100000000kbps"} ... root@openflow-ubuntu-10:/home/openflow# dcptl tcp:10.20.30.50:6633 port-mod port=6,addr=00:1b:3f:cf:76:fa,conf=0x40,mask=0x40 SENDING: port_mod{port="6", hwaddr="00:1b:3f:cf:76:fa", config="0x00000040", mask="0x40", adv="0x0"} OK root@openflow-ubuntu-10:/home/openflow# dcptl tcp:10.20.30.50:6633 port-desc ... {no="6", hw_addr="00:1b:3f:cf:76:fa", name="A6", config="0x40", state="0x1", curr="0x0", adv="0x0", supp="0x0", peer="0x0", curr_spd="100000000kbps", max_spd="100000000kbps"} ...