Non-Transparent Service Functions for Port Chains¶
URL of the launchpad blueprint:
https://blueprints.launchpad.net/networking-sfc/+spec/sfc-non-transparent-sf
This specification describes the support for non-transparent Service Functions in SFC Port Chains.
Problem Description¶
Service Functions (SF) that do not support SFC encapsulation, such as NSH, require an SFC Proxy to re-classify a packet that is returned from the egress port of the SF. The SFC Proxy uses the N-tuple values of a packet header to re-classify a packet. The packet N-tuple consists of the following:
Source IP address
Destination IP address
Source TCP/UDP port
Destination TCP/UDP port
IP Protocol
However, if the SF is non-transparent (it modifies a part of the N-tuple of a packet), then re-classification cannot be done correctly. See https://datatracker.ietf.org/doc/draft-song-sfc-legacy-sf-mapping/
Proposed Changes¶
This is an enhancement to the SFC proxy so that it is configured with the N-tuple translation rules of the SF. In other words how the SF translates the ingress Port N-tuple to the egress Port N-tuple of a packet:
SF Ingress port N-tuple => SF Egress port N-Tuple
The SFC Proxy can then adjust for the SF translation rules by using this N-tuple mapping. The SFC Proxy applies the N-tuple mapping to packets received from the egress port of the SF before the re-classification function.
The Port Pair Group port-pair-group-parameter attribute allows service specific configuration to be applied to all Service Functions (Port Pairs) in a Port Pair Group.
The port-pair-group-parameter will be enhanced to add an “n-tuple-map”. This is an array of ingress-egress N-tuple value pairs: {ingress-N-tuple-value, egress-N-tuple-value} that are the same as the actual translation done by the SF itself.
An example of the CLI format is shown below:
- n_tuple_map=’source_ip_prefix_ingress=10.0.0.9&
source_ip_prefix_egress=10.0.0.12& protocol_ingress=icmp& protocol_egress=tcp’
The SFC Proxy in the OVS Integration Bridge will apply the “n-tuple-map” to the N-tuple of packets received from the egress port of the SF before they are passed to the re-classification function so that the re-classification rules are matched correctly.
Compute Node
+--------------------------------+
| VM |
| +--------------------------+ |
| | Non-transparent | |
| | Service Function | |
| +--------------------------+ |
| P1 |^ P2 |. |
| |. |. |
| +------.------------.------+ |
| | . SFC Proxy v | |
| | . +-----------+ | |
| | . |N-tuple Map| | |
| | . +-----------+ | |
| | . |Re-classify| | |
| | . +-----------+ | |
| | . . | |
| | .>.... ...> | |
| | | |
| | OVS Integration | |
| | Bridge | |
| +--------------------------+ |
| |
+--------------------------------+
Alternatives¶
None
Data model impact¶
Add “n-tuple-map” to the Port Pair Group port-pair-group-parameter attribute.
REST API impact¶
Add “n-tuple-map”: “N-TUPLE-MAP” to the port-pair-group-parameter.
Security impact¶
None
Notifications impact¶
None
Other end user impact¶
None
Performance Impact¶
None
Other deployer impact¶
None.
Developer impact¶
None.
Implementation¶
Assignee(s)¶
Cathy Zhang (cathy.h.zhang@huawei.com)
Louis Fourie (louis.fourie@huawei.com)
Work Items¶
Extend API port-pair-group-parameter to support “n-tuple-map” attribute.
Extend ‘networking-sfc’ OVS driver to support “n-tuple-map” attribute.
Add unit and functional tests.
Update documentation.
Dependencies¶
None
Testing¶
Unit tests and functional tests will be added.
Documentation Impact¶
None
References¶
None