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).

OpenFlow pipeline

OpenFlow custom match instance

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.
OpenFlow match field groups

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)