throbber
OpenFlow Switch Specification
`
`Version 1.4.0 (Wire Protocol 0x05)
`October 14, 2013
`
`ONF TS-012
`
`Ex. 1018
`Juniper Networks, Inc. / Page 1 of 206
`
`

`

`OpenFlow Switch Specification
`
`Version 1.4.0
`
`Disclaimer
`
`THIS SPECIFICATION IS PROVIDED ”AS IS” WITH NO WARRANTIES WHATSOEVER,
`INCLUDING ANY WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT, FIT-
`NESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING
`OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. Without limitation, ONF dis-
`claims all liability, including liability for infringement of any proprietary rights, relating to use
`of information in this specification and to the implementation of this specification, and ONF
`disclaims all liability for cost of procurement of substitute goods or services, lost profits, loss of
`use, loss of data or any incidental, consequential, direct, indirect, or special damages, whether
`under contract, tort, warranty or otherwise, arising in any way out of use or reliance upon this
`specification or any information herein.
`
`No license, express or implied, by estoppel or otherwise, to any Open Networking Foundation or
`Open Networking Foundation member intellectual property rights is granted herein.
`
`Except that a license is hereby granted by ONF to copy and reproduce this specification for
`internal use only.
`
`Contact the Open Networking Foundation at http://www.opennetworking.org for information
`on specification licensing through membership agreements.
`
`Any marks and brands contained herein are the property of their respective owners.
`
`Contents
`
`1 Introduction
`
`2 Switch Components
`
`3 Glossary
`
`4 OpenFlow Ports
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`4.1 OpenFlow Ports
`4.2 Standard Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`4.3 Physical Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`4.4 Logical Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`4.5 Reserved Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`
`5 OpenFlow Tables
`5.1 Pipeline Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.2 Flow Table
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.3 Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.4 Table-miss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.5 Flow Removal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.6 Group Table
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.6.1 Group Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`
`9
`
`9
`
`10
`
`11
`11
`12
`12
`12
`12
`
`13
`14
`15
`16
`17
`17
`18
`18
`
`2
`
`© 2013; The Open Networking Foundation
`
`Ex. 1018
`Juniper Networks, Inc. / Page 2 of 206
`
`

`

`OpenFlow Switch Specification
`
`Version 1.4.0
`
`5.7 Meter Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.7.1 Meter Bands
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.8 Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.9
`Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.10 Action Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.11 Action List
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.12 Actions
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`5.12.1 Default values for fields on push . . . . . . . . . . . . . . . . . . . . . . . . . . .
`
`6 OpenFlow Channel
`6.1 OpenFlow Protocol Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.1.1 Controller-to-Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.1.2 Asynchronous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.1.3
`Symmetric
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.2 Message Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.3 OpenFlow Channel Connections
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.3.1 Connection Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.3.2 Connection Interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.3.3 Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.3.4 Multiple Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.3.5 Auxiliary Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.4 Flow Table Modification Messages
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.5 Flow Table Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.6 Group Table Modification Messages
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.7 Meter Modification Messages
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.8 Bundle Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.8.1 Bundle overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.8.2 Bundle example usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.8.3 Bundle error processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.8.4 Bundle atomic modifications
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6.8.5 Bundle parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`
`7 The OpenFlow Protocol
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`7.1 OpenFlow Header
`7.1.1 Padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`7.2 Common Structures
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`7.2.1 Port Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`7.2.1.1 Port Description Structures . . . . . . . . . . . . . . . . . . . . . . . . .
`7.2.1.2 Port Description Properties . . . . . . . . . . . . . . . . . . . . . . . . .
`7.2.2 Flow Match Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`7.2.2.1 Flow Match Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`7.2.2.2 Flow Match Field Structures . . . . . . . . . . . . . . . . . . . . . . . .
`7.2.2.3 OXM classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`7.2.2.4 Flow Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`7.2.2.5 Flow Match Field Masking . . . . . . . . . . . . . . . . . . . . . . . . .
`7.2.2.6 Flow Match Field Prerequisite . . . . . . . . . . . . . . . . . . . . . . .
`7.2.2.7 Flow Match Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`
`19
`20
`20
`22
`22
`23
`24
`26
`
`26
`26
`27
`27
`28
`28
`29
`30
`31
`31
`31
`34
`35
`38
`39
`41
`42
`42
`42
`43
`43
`44
`
`44
`44
`46
`46
`46
`46
`48
`51
`51
`52
`53
`53
`54
`54
`55
`
`3
`
`© 2013; The Open Networking Foundation
`
`Ex. 1018
`Juniper Networks, Inc. / Page 3 of 206
`
`

`

`OpenFlow Switch Specification
`
`Version 1.4.0
`
`60
`7.2.2.8 Experimenter Flow Match Fields . . . . . . . . . . . . . . . . . . . . . .
`60
`7.2.3 Flow Instruction Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`62
`7.2.4 Action Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`68
`7.2.5 Experimenter Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`69
`7.3 Controller-to-Switch Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`69
`7.3.1 Handshake
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`70
`7.3.2
`Switch Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`71
`7.3.3 Flow Table Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`71
`7.3.4 Modify State Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`71
`7.3.4.1 Modify Flow Table Message
`. . . . . . . . . . . . . . . . . . . . . . . .
`74
`7.3.4.2 Modify Flow Entry Message
`. . . . . . . . . . . . . . . . . . . . . . . .
`77
`7.3.4.3 Modify Group Entry Message . . . . . . . . . . . . . . . . . . . . . . . .
`79
`7.3.4.4 Port Modification Message . . . . . . . . . . . . . . . . . . . . . . . . .
`81
`7.3.4.5 Meter Modification Message
`. . . . . . . . . . . . . . . . . . . . . . . .
`84
`7.3.5 Multipart Messages
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`87
`7.3.5.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`88
`7.3.5.2
`Individual Flow Statistics . . . . . . . . . . . . . . . . . . . . . . . . . .
`89
`7.3.5.3 Aggregate Flow Statistics . . . . . . . . . . . . . . . . . . . . . . . . . .
`90
`7.3.5.4 Table Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`90
`7.3.5.5 Table Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`91
`7.3.5.6 Table Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`96
`7.3.5.7 Port Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`99
`7.3.5.8 Port Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`7.3.5.9 Queue Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
`7.3.5.10 Queue Descriptions
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
`7.3.5.11 Group Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
`7.3.5.12 Group Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
`7.3.5.13 Group Features
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
`7.3.5.14 Meter Statistics
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
`7.3.5.15 Meter Configuration Statistics . . . . . . . . . . . . . . . . . . . . . . . 107
`7.3.5.16 Meter Features Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . 107
`7.3.5.17 Flow monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
`7.3.5.18 Experimenter Multipart . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
`7.3.6 Packet-Out Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
`7.3.7 Barrier Message
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
`7.3.8 Role Request Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
`7.3.9 Bundle messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
`7.3.9.1 Bundle control messages
`. . . . . . . . . . . . . . . . . . . . . . . . . . 115
`7.3.9.2 Bundle Add message
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
`7.3.9.3 Bundle flags
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
`7.3.9.4 Bundle properties
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
`7.3.9.5 Creating and opening a bundle . . . . . . . . . . . . . . . . . . . . . . . 118
`7.3.9.6 Adding messages to a bundle . . . . . . . . . . . . . . . . . . . . . . . . 118
`7.3.9.7 Closing a bundle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
`7.3.9.8 Committing Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
`7.3.9.9 Discarding Bundles
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
`7.3.9.10 Other bundle error conditions
`. . . . . . . . . . . . . . . . . . . . . . . 121
`
`4
`
`© 2013; The Open Networking Foundation
`
`Ex. 1018
`Juniper Networks, Inc. / Page 4 of 206
`
`

`

`OpenFlow Switch Specification
`
`Version 1.4.0
`
`7.3.10 Set Asynchronous Configuration Message . . . . . . . . . . . . . . . . . . . . . . 121
`7.4 Asynchronous Messages
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
`7.4.1 Packet-In Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
`7.4.2 Flow Removed Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
`7.4.3 Port Status Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
`7.4.4 Controller Role Status Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
`7.4.5 Table Status Message
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
`7.4.6 Request Forward Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
`7.5 Symmetric Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
`7.5.1 Hello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
`7.5.2 Echo Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
`7.5.3 Echo Reply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
`7.5.4 Error Message
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
`7.5.5 Experimenter Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
`
`A Header file openflow.h
`
`140
`
`174
`B Release Notes
`B.1 OpenFlow version 0.2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
`B.2 OpenFlow version 0.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
`B.3 OpenFlow version 0.8.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
`B.4 OpenFlow version 0.8.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
`B.5 OpenFlow version 0.8.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
`B.6 OpenFlow version 0.8.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
`B.6.1 IP Netmasks
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
`B.6.2 New Physical Port Stats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
`B.6.3 IN PORT Virtual Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
`B.6.4 Port and Link Status and Configuration . . . . . . . . . . . . . . . . . . . . . . . 177
`B.6.5 Echo Request/Reply Messages
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
`B.6.6 Vendor Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
`B.6.7 Explicit Handling of IP Fragments . . . . . . . . . . . . . . . . . . . . . . . . . . 179
`B.6.8 802.1D Spanning Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
`B.6.9 Modify Actions in Existing Flow Entries . . . . . . . . . . . . . . . . . . . . . . . 180
`B.6.10 More Flexible Description of Tables
`. . . . . . . . . . . . . . . . . . . . . . . . . 180
`B.6.11 Lookup Count in Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
`B.6.12 Modifying Flags in Port-Mod More Explicit . . . . . . . . . . . . . . . . . . . . . 181
`B.6.13 New Packet-Out Message Format . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
`B.6.14 Hard Timeout for Flow Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
`B.6.15 Reworked initial handshake to support backwards compatibility . . . . . . . . . . 182
`B.6.16 Description of Switch Stat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
`B.6.17 Variable Length and Vendor Actions . . . . . . . . . . . . . . . . . . . . . . . . . 183
`B.6.18 VLAN Action Changes
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
`B.6.19 Max Supported Ports Set to 65280 . . . . . . . . . . . . . . . . . . . . . . . . . . 185
`B.6.20 Send Error Message When Flow Not Added Due To Full Tables . . . . . . . . . . 185
`B.6.21 Behavior Defined When Controller Connection Lost
`. . . . . . . . . . . . . . . . 185
`B.6.22 ICMP Type and Code Fields Now Matchable . . . . . . . . . . . . . . . . . . . . 186
`B.6.23 Output Port Filtering for Delete*, Flow Stats and Aggregate Stats . . . . . . . . 186
`
`5
`
`© 2013; The Open Networking Foundation
`
`Ex. 1018
`Juniper Networks, Inc. / Page 5 of 206
`
`

`

`OpenFlow Switch Specification
`
`Version 1.4.0
`
`B.7 OpenFlow version 0.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
`B.7.1 Failover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
`B.7.2 Emergency Flow Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
`B.7.3 Barrier Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
`B.7.4 Match on VLAN Priority Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
`B.7.5 Selective Flow Expirations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
`B.7.6 Flow Mod Behavior
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
`B.7.7 Flow Expiration Duration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
`B.7.8 Notification for Flow Deletes
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
`B.7.9 Rewrite DSCP in IP ToS header . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
`B.7.10 Port Enumeration now starts at 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 188
`B.7.11 Other changes to the Specification . . . . . . . . . . . . . . . . . . . . . . . . . . 188
`B.8 OpenFlow version 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
`B.8.1 Slicing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
`B.8.2 Flow cookies
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
`B.8.3 User-specifiable datapath description . . . . . . . . . . . . . . . . . . . . . . . . . 189
`B.8.4 Match on IP fields in ARP packets . . . . . . . . . . . . . . . . . . . . . . . . . . 189
`B.8.5 Match on IP ToS/DSCP bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
`B.8.6 Querying port stats for individual ports . . . . . . . . . . . . . . . . . . . . . . . 189
`B.8.7 Improved flow duration resolution in stats/expiry messages . . . . . . . . . . . . 189
`B.8.8 Other changes to the Specification . . . . . . . . . . . . . . . . . . . . . . . . . . 189
`B.9 OpenFlow version 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
`B.9.1 Multiple Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
`B.9.2 Groups
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
`B.9.3 Tags : MPLS & VLAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
`B.9.4 Virtual ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
`B.9.5 Controller connection failure
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
`B.9.6 Other changes
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
`B.10 OpenFlow version 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
`B.10.1 Extensible match support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
`B.10.2 Extensible ’set field’ packet rewriting support . . . . . . . . . . . . . . . . . . . . 193
`B.10.3 Extensible context expression in ’packet-in’
`. . . . . . . . . . . . . . . . . . . . . 193
`B.10.4 Extensible Error messages via experimenter error type . . . . . . . . . . . . . . . 193
`B.10.5 IPv6 support added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
`B.10.6 Simplified behaviour of flow-mod request
`. . . . . . . . . . . . . . . . . . . . . . 194
`B.10.7 Removed packet parsing specification . . . . . . . . . . . . . . . . . . . . . . . . 194
`B.10.8 Controller role change mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . 194
`B.10.9 Other changes
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
`B.11 OpenFlow version 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
`B.11.1 Refactor capabilities negotiation . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
`B.11.2 More flexible table miss support
`. . . . . . . . . . . . . . . . . . . . . . . . . . . 195
`B.11.3 IPv6 Extension Header handling support
`. . . . . . . . . . . . . . . . . . . . . . 196
`B.11.4 Per flow meters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
`B.11.5 Per connection event filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
`B.11.6 Auxiliary connections
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
`B.11.7 MPLS BoS matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
`B.11.8 Provider Backbone Bridging tagging . . . . . . . . . . . . . . . . . . . . . . . . . 197
`
`6
`
`© 2013; The Open Networking Foundation
`
`Ex. 1018
`Juniper Networks, Inc. / Page 6 of 206
`
`

`

`OpenFlow Switch Specification
`
`Version 1.4.0
`
`B.11.9 Rework tag order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
`B.11.10Tunnel-ID metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
`B.11.11Cookies in packet-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
`B.11.12Duration for stats
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
`B.11.13On demand flow counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
`B.11.14Other changes
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
`B.12 OpenFlow version 1.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
`B.12.1 Improved version negotiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
`B.12.2 Other changes
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
`B.13 OpenFlow version 1.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
`B.13.1 Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
`B.13.2 Clarifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
`B.14 OpenFlow version 1.4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
`B.14.1 More extensible wire protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
`B.14.2 More descriptive reasons for packet-in . . . . . . . . . . . . . . . . . . . . . . . . 201
`B.14.3 Optical port properties
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
`B.14.4 Flow-removed reason for meter delete . . . . . . . . . . . . . . . . . . . . . . . . 202
`B.14.5 Flow monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
`B.14.6 Role status events
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
`B.14.7 Eviction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
`B.14.8 Vacancy events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
`B.14.9 Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
`B.14.10Synchronised tables
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
`B.14.11Group and Meter change notifications . . . . . . . . . . . . . . . . . . . . . . . . 204
`B.14.12Error code for bad priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
`B.14.13Error code for Set-async-config . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
`B.14.14PBB UCA header field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
`B.14.15Error code for duplicate instruction . . . . . . . . . . . . . . . . . . . . . . . . . 204
`B.14.16Error code for multipart timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
`B.14.17Change default TCP port to 6653 . . . . . . . . . . . . . . . . . . . . . . . . . . 205
`
`C Credits
`
`List of Tables
`
`. . . . . . . . . . . . . . . . . . . . . .
`1 Main components of a flow entry in a flow table.
`2 Main components of a group entry in the group table.
`. . . . . . . . . . . . . . . . . . .
`3 Main components of a meter entry in the meter table.
`. . . . . . . . . . . . . . . . . . .
`4 Main components of a meter band in a meter entry.
`. . . . . . . . . . . . . . . . . . . .
`5
`List of counters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`6
`Push/pop tag actions.
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`7
`Change-TTL actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`8
`Existing fields that may be copied into new fields on a push action. . . . . . . . . . . . .
`9
`OXM TLV header fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`10 OXM mask and value.
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`11 Required match fields.
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`
`205
`
`15
`18
`19
`20
`21
`25
`25
`26
`52
`54
`57
`
`7
`
`© 2013; The Open Networking Foundation
`
`Ex. 1018
`Juniper Networks, Inc. / Page 7 of 206
`
`

`

`OpenFlow Switch Specification
`
`Version 1.4.0
`
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`12 Match fields details.
`13 Match combinations for VLAN tags.
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`
`58
`59
`
`List of Figures
`
`1 Main components of an OpenFlow switch. . . . . . . . . . . . . . . . . . . . . . . . . . .
`2
`Packet flow through the processing pipeline. . . . . . . . . . . . . . . . . . . . . . . . . .
`3
`Flowchart detailing packet flow through an OpenFlow switch. . . . . . . . . . . . . . . .
`4
`OXM TLV header layout.
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`
`9
`14
`16
`52
`
`8
`
`© 2013; The Open Networking Foundation
`
`Ex. 1018
`Juniper Networks, Inc. / Page 8 of 206
`
`

`

`OpenFlow Switch Specification
`
`Version 1.4.0
`
`1 Introduction
`
`This document describes the requirements of an OpenFlow Switch. We recommend that you read the
`latest version of the OpenFlow whitepaper before reading this specification. The whitepaper is avail-
`able on the Open Networking Foundation website (https://www.opennetworking.org/standards/
`intro-to-openflow). This specification covers the components and the basic functions of the switch,
`and the OpenFlow protocol to manage an OpenFlow switch from a remote controller.
`
`Figure 1: Main components of an OpenFlow switch.
`
`2 Switch Components
`
`An OpenFlow Switch consists of one or more flow tables and a group table, which perform packet
`lookups and forwarding, and an OpenFlow channel to an external controller (Figure 1). The switch
`communicates with the controller and the controller manages the switch via the OpenFlow protocol.
`
`Using the OpenFlow protocol, the controller can add, update, and delete flow entries in flow tables,
`both reactively (in response to packets) and proactively. Each flow table in the switch contains a set
`of flow entries; each flow entry consists of match fields, counters, and a set of instructions to apply to
`matching packets (see 5.2).
`
`Matching starts at the first flow table and may continue to additional flow tables (see 5.1). Flow entries
`match packets in priority order, with the first matching entry in each table being used (see 5.3). If
`a matching entry is found, the instructions associated with the specific flow entry are executed. If no
`match is found in a flow table, the outcome depends on configuration of the table-miss flow entry: for
`example, the packet may be forwarded to the controller over the OpenFlow channel, dropped, or may
`continue to the next flow table (see 5.4).
`
`Instructions associated with each flow entry either contain actions or modify pipeline processing (see
`5.9). Actions included in instructions describe packet forwarding, packet modification and group table
`
`9
`
`© 2013; The Open Networking Foundation
`
`Controller
`
`OpenFlow Protocol
`
`OpenFlow
`Channel
`
`Group
`Table
`
`Flow
`Table
`
`Flow
`Table
`
`...
`Pipeline
`OpenFlow Switch
`
`Ex. 1018
`Juniper Networks, Inc. / Page 9 of 206
`
`

`

`OpenFlow Switch Specification
`
`Version 1.4.0
`
`processing. Pipeline processing instructions allow packets to be sent to subsequent tables for further
`processing and allow information, in the form of metadata, to be communicated between tables. Table
`pipeline processing stops when the instruction set associated with a matching flow entry does not specify
`a next table; at this point the packet is usually modified and forwarded (see 5.10).
`
`Flow entries may forward to a port. This is usually a physical port, but it may also be a logical port
`defined by the switch or a reserved port defined by this specification (see 4.1). Reserved ports may
`specify generic forwarding actions such as sending to the controller, flooding, or forwarding using non-
`OpenFlow methods, such as “normal” switch processing (see 4.5), while switch-defined logical ports
`may specify link aggregation groups, tunnels or loopback interfaces (see 4.4).
`
`Actions associated with flow entries may also direct packets to a group, which specifies additional
`processing (see 5.6). Groups represent sets of actions for flooding, as well as more complex forwarding
`semantics (e.g. multipath, fast reroute, and link aggregation). As a general layer of indirection, groups
`also enable multiple flow entries to forward to a single identifier (e.g. IP forwarding to a common next
`hop). This abstraction allows common output actions across flow entries to be changed efficiently.
`
`The group table contains group entries; each group entry contains a list of action buckets with specific
`semantics dependent on group type (see 5.6.1). The actions in one or more action buckets are applied
`to packets sent to the group.
`
`Switch designers are free to implement the internals in any way convenient, provided that correct match
`and instruction semantics are preserved. For example, while a flow entry may use an all group to
`forward to multiple ports, a switch designer may choose to implement this as a single bitmask within
`the hardware forwarding table. Another example is matching; the pipeline exposed by an OpenFlow
`switch may be physically implemented with a different number of hardware tables.
`
`3 Glossary
`
`This section describes key OpenFlow specification terms:
`
`ˆ Byte: an 8-bit octet.
`
`ˆ Packet: an Ethernet frame, including header and payload.
`
`ˆ Port: where packets enter and exit the OpenFlow pipeline (see 4.1). May be a physical port, a
`logical port defined by the switch, or a reserved port defined by the OpenFlow protocol.
`
`ˆ Pipeline: the set of linked flow tables that provide matching, forwarding, and packet modification
`in an OpenFlow switch.
`
`ˆ Flow Table: a stage of the pipeline. It contains flow entries.
`
`ˆ Flow Entry: an element in a flow table used to match and process packets. It contains a set of
`match fields for matching packets, a priority for matching precedence, a set of counters to track
`packets, and a set of instructions to apply.
`
`ˆ Match Field: a field against which a packet is matched, including packet headers, the ingress
`port, and the metadata value. A match field may be wildcarded (match any value) and in some
`cases bitmasked.
`
`10
`
`© 2013; The Open Networking Foundation
`
`Ex. 1018
`Juniper Networks, Inc. / Page 10 of 206
`
`

`

`OpenFlow Switch Specification
`
`Version 1.4.0
`
`ˆ Metadata: a maskable register value that is used to carry information from one table to the next.
`
`ˆ Instruction: instructions are attached to a flow entry and describe the OpenFlow processing that
`happens when a packet matches the flow entry. An instruction either modifies pipeline processing,
`such as directing the packet to another flow table, or contains a set of actions to add to the action
`set, or contains a list of actions to apply immediately to the packet.
`
`ˆ Action: an operation that forwards the packet to a port or modifies the packet, such as decre-
`menting the TTL field. Actions may be specified as part of the instruction set associated with a
`flow entry or in an action bucket associated with a group entry. Actions may be accumulated in
`the Action Set of the packet or applied immediately to the packet.
`
`ˆ Action Set: a set of actions associated with the packet that are accumulated while the packet
`is processed by each table and that are executed when the instruction set instructs the packet to
`exit the processing pipeline.
`
`ˆ Group: a list of action buckets and some means of choosing one or more of those buckets to apply
`on a per-packet basis.
`
`ˆ Action Bucket: a set of actions and associated parameters, defined for groups.
`
`ˆ Tag: a header that can be inserted or removed from a packet via push and pop actions.
`
`ˆ Outermost Tag: the tag that appears closest to the beginning o

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket