Pipeline modification process
Pipeline modification follows this basic process:
An instance must be configured in the custom mode so that the controller can use the table modifications feature.
The controller using the “Table Features” request message, triggers a table modification request.
The first “OFPMP_TABLE_FEATURES” is sent with an empty body and the switch replies with the default table pipeline.
The controller understands the current pipeline.
If the controller wants to modify the default table pipeline, it again sends “OFPMP_TABLE_FEATURES” with the required table pipeline configuration.
The table pipeline has details of the table numbers, size of each table, instructions/match/action capabilities of each table.
If the table pipeline with all its properties and scale can be achieved in the hardware, the table modification request is accepted.
The table modification can happen dynamically on custom pipeline instances (that is, instance need not have to be disabled to do the table modification).
Example: Custom Pipeline Instance
switch(openflow)# show running-config Running configuration: ; J9850A Configuration Editor; Created on release #KB.16.02.0000x ; Ver #0d:33.ff.7c.5f.fc.7b.ff.ff.fc.ff.ff.3f.ef:49 hostname "switch-name" module A type j9991a module F type j9987a snmp-server community "public" unrestricted openflow controller-id 1 ip 10.20.30.42 controller-interface vlan 2 instance aggregate listen-port controller-id 1 version 1.3 only pipeline-model custom enable exit enable exit oobm ip address dhcp-bootp exit vlan 1 name "DEFAULT_VLAN" no untagged A2-A3,A5 untagged A1,A4,A6-A24,F1-F24 ip address dhcp-bootp exit vlan 2 name "VLAN2" untagged A2 ip address 10.20.30.40 255.255.255.0 exit vlan 3 name "VLAN3" untagged A3,A5 no ip address exit no allow-v2-modules switch(openflow)# show openflow OpenFlow : Enabled Egress Only Ports Mode : Disabled Instance Information No. of No. of OpenFlow Instance Name Oper. Status H/W Flows S/W Flows Version --------------------------------- ------------ ---------- ---------- -------- aggregate Up 8 0 1.3 only switch(openflow)# show openflow instance aggregate Configured OF Version : 1.3 only Negotiated OF Version : 1.3 Instance Name : aggregate Data-path Description : aggregate Administrator Status : Enabled Member List : VLAN 1, 3 Pipeline Model : Custom Pipeline Listen Port : 6633 Operational Status : Up Operational Status Reason : NA Datapath ID : 000140a8f09e8600 Mode : Active Flow Location : Hardware Only No. of Hardware Flows : 8 No. of Software Flows : 0 Hardware Rate Limit : 0 kbps Software Rate Limit : 100 pps Conn. Interrupt Mode : Fail-Secure Maximum Backoff Interval : 60 seconds Probe Interval : 10 seconds Hardware Table Miss Count : NA No. of Software Flow Tables : NA Egress Only Ports : None Table Model : Custom Pipeline Source MAC Group Table : Disabled Destination MAC Group Table : Disabled Controller Id Connection Status Connection State Secure Role ------------- ----------------- ---------------- ------ ------ 1 Connected Active No Equal switch(openflow)# show openflow instance aggregate flow-table OpenFlow Instance Flow Table Information Table Flow Miss ID Table Name Count Count Goto Table ----- --------------------- -------- ------------- ------------- 0 Custom L2 Src 1 0 1, 2, 3 1 Custom L2 Dst 1 0 2, 3 2 Custom L3 Table 1 0 3 3 Custom TCAM Table 5 0 * Table ID Table Name Available Free Flow Count ----- --------------------- ------------------------------ 0 Custom L2 Src Slot A : 7372 Slot F : 7372 1 Custom L2 Dst Slot A : 6144 Slot F : 6144 2 Custom L3 Table Slot A : 5529 Slot F : 5529 3 Custom TCAM Table Slot A : 2010 Slot F : 2010 * Denotes that the pipeline could end here.
Group 1 |
Group 2 |
Group 3 |
Group 4 |
Group 5 |
Group6 |
Custom(NOTE: Requires a separate Group for every field in this list) |
---|---|---|---|---|---|---|
ETH_DST |
IPV4_SRC |
IPV4_DST |
VLAN_ID |
TCP_SRC_RANGE |
VLAN_UNTAGGED (Used only if the table has wildcards or maskable matches; has match on VLAN_VID, and adding this does not exceed the maximum limit of match groups in a table) |
ARP_OP |
ETH_SRC |
IPV6_SRC |
IPV6_DST |
VLAN_PCP |
TCP_DST_RANGE |
VLAN_TAGGED (Used only if the table has wildcards or maskable matches; has match on VLAN_VID, and adding this to a table does not exceed the maximum limit of match groups in a table) |
ARP_SPA |
ETH_TYPE |
IP_DSCP |
UDP_SRC_RANGE |
ARP_TPA |
|||
IP_PROTO |
UDP_DST_RANGE |
ARP_SHA |
||||
TCP_SRC |
ARP_THA |
|||||
TCP_DST |
ICMPV4_TYPE |
|||||
UDP_SRC |
ICMPV4_CODE |
|||||
UDP_DST |
IPV6_FLABEL |
|||||
IN_PORT (Used if none of the previous tables have an APPLY (set-field/push_vlan/pop_vlan) |
ICMPV6_TYPE |
|||||
ICMPV6_CODE |
||||||
IPV6_ND_TARGET |
||||||
TCP_FLAGS |
||||||
CUSTOM_ONE |
||||||
CUSTOM_TWO |
||||||
CUSTOM_THREE |
||||||
CUSTOM_FOUR |
||||||
IN_PORT ( Used if any of the previous tables have an APPLY (set-field/push_vlan/pop_vlan) |