Summary:
Name Bytes Mask RW? Prereqs NXM/OXM Support
───────────────── ──────────────── ───── ──── ──────── ────────────────
nsh_flags
1 yes yes NSH OVS 2.8+
nsh_ttl
1 no yes NSH OVS 2.9+
nsh_mdtype
1 no no NSH OVS 2.8+
nsh_np
1 no no NSH OVS 2.8+
nsh_spi
aka nsp
4 (low 24 bits) no yes NSH OVS 2.8+
nsh_si
aka nsi
1 no yes NSH OVS 2.8+
nsh_c1
aka nshc1
4 yes yes NSH OVS 2.8+
nsh_c2
aka nshc2
4 yes yes NSH OVS 2.8+
nsh_c3
aka nshc3
4 yes yes NSH OVS 2.8+
nsh_c4
aka nshc4
4 yes yes NSH OVS 2.8+
Service functions are widely deployed and essential in many
networks. These service functions provide a range of features
such as security, WAN acceleration, and server load balancing.
Service functions may be instantiated at different points in the
network infrastructure such as the wide area network, data
center, and so forth.
Prior to development of the SFC architecture [RFC 7665] and the
protocol specified in this document, current service function
deployment models have been relatively static and bound to
topology for insertion and policy selection. Furthermore, they do
not adapt well to elastic service environments enabled by
virtualization.
New data center network and cloud architectures require more
flexible service function deployment models. Additionally, the
transition to virtual platforms demands an agile service
insertion model that supports dynamic and elastic service
delivery. Specifically, the following functions are necessary:
1. The movement of service functions and application
workloads in the network.
2. The ability to easily bind service policy to granular
information, such as per-subscriber state.
3. The capability to steer traffic to the requisite
service function(s).
The Network Service Header (NSH) specification defines a new data
plane protocol, which is an encapsulation for service function
chains. The NSH is designed to encapsulate an original packet or
frame, and in turn be encapsulated by an outer transport
encapsulation (which is used to deliver the NSH to NSH-aware
network elements), as shown below:
+-----------------------+----------------------------+---------------------+
|Transport Encapsulation|Network Service Header (NSH)|Original Packet/Frame|
+-----------------------+----------------------------+---------------------+
The NSH is composed of the following elements:
1. Service Function Path identification.
2. Indication of location within a Service Function Path.
3. Optional, per packet metadata (fixed length or
variable).
[RFC 7665] provides an overview of a service chaining
architecture that clearly defines the roles of the various
elements and the scope of a service function chaining
encapsulation. Figure 3 of [RFC 7665] depicts the SFC
architectural components after classification. The NSH is the SFC
encapsulation referenced in [RFC 7665].
flags field (2 bits) Field
Name: nsh_flags
Width: 8 bits
Format: decimal
Masking: arbitrary bitwise masks
Prerequisites: NSH
Access: read/write
OpenFlow 1.0: not supported
OpenFlow 1.1: not supported
OXM: none
NXM: NXOXM_NSH_FLAGS
(1) since Open vSwitch 2.8
TTL field (6 bits) Field
Name: nsh_ttl
Width: 8 bits
Format: decimal
Masking: not maskable
Prerequisites: NSH
Access: read/write
OpenFlow 1.0: not supported
OpenFlow 1.1: not supported
OXM: none
NXM: NXOXM_NSH_TTL
(10) since Open vSwitch 2.9
mdtype field (8 bits) Field
Name: nsh_mdtype
Width: 8 bits
Format: decimal
Masking: not maskable
Prerequisites: NSH
Access: read-only
OpenFlow 1.0: not supported
OpenFlow 1.1: not supported
OXM: none
NXM: NXOXM_NSH_MDTYPE
(2) since Open vSwitch 2.8
np (next protocol) field (8 bits) Field
Name: nsh_np
Width: 8 bits
Format: decimal
Masking: not maskable
Prerequisites: NSH
Access: read-only
OpenFlow 1.0: not supported
OpenFlow 1.1: not supported
OXM: none
NXM: NXOXM_NSH_NP
(3) since Open vSwitch 2.8
spi (service path identifier) field (24 bits) Field
Name: nsh_spi
(aka nsp
)
Width: 32 bits (only the least-significant 24 bits may be nonzero)
Format: hexadecimal
Masking: not maskable
Prerequisites: NSH
Access: read/write
OpenFlow 1.0: not supported
OpenFlow 1.1: not supported
OXM: none
NXM: NXOXM_NSH_SPI
(4) since Open vSwitch 2.8
si (service index) field (8 bits) Field
Name: nsh_si
(aka nsi
)
Width: 8 bits
Format: decimal
Masking: not maskable
Prerequisites: NSH
Access: read/write
OpenFlow 1.0: not supported
OpenFlow 1.1: not supported
OXM: none
NXM: NXOXM_NSH_SI
(5) since Open vSwitch 2.8
c1 (Network Platform Context) field (32 bits) Field
Name: nsh_c1
(aka nshc1
)
Width: 32 bits
Format: hexadecimal
Masking: arbitrary bitwise masks
Prerequisites: NSH
Access: read/write
OpenFlow 1.0: not supported
OpenFlow 1.1: not supported
OXM: none
NXM: NXOXM_NSH_C1
(6) since Open vSwitch 2.8
c2 (Network Shared Context) field (32 bits) Field
Name: nsh_c2
(aka nshc2
)
Width: 32 bits
Format: hexadecimal
Masking: arbitrary bitwise masks
Prerequisites: NSH
Access: read/write
OpenFlow 1.0: not supported
OpenFlow 1.1: not supported
OXM: none
NXM: NXOXM_NSH_C2
(7) since Open vSwitch 2.8
c3 (Service Platform Context) field (32 bits) Field
Name: nsh_c3
(aka nshc3
)
Width: 32 bits
Format: hexadecimal
Masking: arbitrary bitwise masks
Prerequisites: NSH
Access: read/write
OpenFlow 1.0: not supported
OpenFlow 1.1: not supported
OXM: none
NXM: NXOXM_NSH_C3
(8) since Open vSwitch 2.8
c4 (Service Shared Context) field (32 bits) Field
Name: nsh_c4
(aka nshc4
)
Width: 32 bits
Format: hexadecimal
Masking: arbitrary bitwise masks
Prerequisites: NSH
Access: read/write
OpenFlow 1.0: not supported
OpenFlow 1.1: not supported
OXM: none
NXM: NXOXM_NSH_C4
(9) since Open vSwitch 2.8