draft-ietf-bess-service-chaining-00.txt | draft-ietf-bess-service-chaining-01.txt | |||
---|---|---|---|---|
BGP Enabled Services (bess) R. Fernando | BGP Enabled Services (bess) R. Fernando | |||
INTERNET-DRAFT Cisco | INTERNET-DRAFT Cisco | |||
Intended status: Standards Track S. Mackie | Intended status: Standards Track S. Mackie | |||
Expires: October 2016 Juniper | Expires: May 3, 2017 Juniper | |||
D. Rao | D. Rao | |||
Cisco | Cisco | |||
B. Rijsman | B. Rijsman | |||
Juniper | Juniper | |||
M. Napierala | M. Napierala | |||
AT&T | AT&T | |||
T. Morin | October 30, 2016 | |||
Orange | Orange | |||
April 13, 2016 | ||||
Service Chaining using Virtual Networks with BGP VPNs | Service Chaining using Virtual Networks with BGP VPNs | |||
draft-ietf-bess-service-chaining-00 | draft-ietf-bess-service-chaining-01 | |||
Abstract | Abstract | |||
This document describes how service function chains (SFC) can be | This document describes how service function chains (SFC) can be | |||
applied to traffic flows using routing in a virtual (overlay) | applied to traffic flows using routing in a virtual (overlay) network | |||
network to steer traffic between service nodes. Chains can include | to steer traffic between service nodes. Chains can include services | |||
services running in routers, on physical appliances or in virtual | running in routers, on physical appliances or in virtual machines. | |||
machines. Service chains have applicability at the subscriber edge, | Service chains have applicability at the subscriber edge, business | |||
business edge and in multi-tenant datacenters. The routing function | edge and in multi-tenant datacenters. The routing function into SFCs | |||
into SFCs and between service functions within an SFC can be | and between service functions within an SFC can be performed by | |||
performed by physical devices (routers), be virtualized inside | physical devices (routers), be virtualized inside hypervisors, or run | |||
hypervisors, or run as part of a host OS. | as part of a host OS. | |||
A BGP control plane for route distribution is used to create virtual | A BGP control plane for route distribution is used to create virtual | |||
networks implemented using IP MPLS, VXLAN or other suitable | networks implemented using IP MPLS, VXLAN or other suitable | |||
encapsulation, where the routes within the virtual networks cause | encapsulation, where the routes within the virtual networks cause | |||
traffic to flow through a sequence of service nodes that apply | traffic to flow through a sequence of service nodes that apply packet | |||
packet processing functions to the flows. | processing functions to the flows. | |||
Two techniques are described: in one the service chain is | Two techniques are described: in one the service chain is implemented | |||
implemented as a sequence of distinct VPNs between sets of service | as a sequence of distinct VPNs between sets of service nodes that | |||
nodes that apply each service function; in the other, the routes | apply each service function; in the other, the routes within a VPN | |||
within a VPN are modified through the use of special route targets | are modified through the use of special route targets and modified | |||
and modified next-hop resolution to achieve the desired result. | next-hop resolution to achieve the desired result. | |||
In both techniques, service chains can be created by manual | In both techniques, service chains can be created by manual | |||
configuration of routes and route targets in routing systems, or | configuration of routes and route targets in routing systems, or | |||
through the use of a controller which contains a topological model | through the use of a controller which contains a topological model of | |||
of the desired service chains. | the desired service chains. | |||
This document also contains discussion of load balancing between | This document also contains discussion of load balancing between | |||
network functions, symmetric forward and reverse paths when stateful | network functions, symmetric forward and reverse paths when stateful | |||
services are involved, and use of classifiers to direct traffic into | services are involved, and use of classifiers to direct traffic into | |||
a service chain. | a service chain. | |||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
Drafts. | Drafts. | |||
Internet-Drafts are draft documents valid for a maximum of six | Internet-Drafts are draft documents valid for a maximum of six months | |||
months and may be updated, replaced, or obsoleted by other documents | and may be updated, replaced, or obsoleted by other documents at any | |||
at any time. It is inappropriate to use Internet-Drafts as | time. It is inappropriate to use Internet-Drafts as reference | |||
reference material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt | http://www.ietf.org/ietf/1id-abstracts.txt | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html | http://www.ietf.org/shadow.html | |||
This Internet-Draft will expire on October 13, 2016. | This Internet-Draft will expire on October 13, 2016. | |||
Copyright Notice and License Notice | Copyright Notice and License Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with | carefully, as they describe your rights and restrictions with respect | |||
respect to this document. Code Components extracted from this | to this document. Code Components extracted from this document must | |||
document must include Simplified BSD License text as described in | include Simplified BSD License text as described in Section 4.e of | |||
Section 4.e of the Trust Legal Provisions and are provided without | the Trust Legal Provisions and are provided without warranty as | |||
warranty as described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1 Introduction ...................................................4 | 1 Introduction ...................................................4 | |||
1.1 Terminology................................................5 | 1.1 Terminology................................................5 | |||
2 Service Function Chain Architecture Using Virtual Networking ...8 | 2 Service Function Chain Architecture Using Virtual Networking ...8 | |||
2.1 High Level Architecture....................................9 | 2.1 High Level Architecture....................................9 | |||
2.2 Service Function Chain Logical Model......................10 | 2.2 Service Function Chain Logical Model......................10 | |||
2.3 Service Function Implemented in a Set of SF Instances.....11 | 2.3 Service Function Implemented in a Set of SF Instances.....11 | |||
2.4 SF Instance Connections to VRFs...........................13 | 2.4 SF Instance Connections to VRFs...........................13 | |||
skipping to change at page 3, line 44 ¶ | skipping to change at page 3, line 44 ¶ | |||
3.4 Forward and Reverse Flow Load Balancing...................29 | 3.4 Forward and Reverse Flow Load Balancing...................29 | |||
3.4.1 Issues with Equal Cost Multi-Path Routing............29 | 3.4.1 Issues with Equal Cost Multi-Path Routing............29 | |||
3.4.2 Modified ECMP with Consistent Hash...................29 | 3.4.2 Modified ECMP with Consistent Hash...................29 | |||
3.4.3 ECMP with Flow Table.................................30 | 3.4.3 ECMP with Flow Table.................................30 | |||
3.4.4 Dealing with different hash algorithms in an SFC.....32 | 3.4.4 Dealing with different hash algorithms in an SFC.....32 | |||
4 Steering into SFCs Using a Classifier .........................32 | 4 Steering into SFCs Using a Classifier .........................32 | |||
5 External Domain Co-ordination .................................34 | 5 External Domain Co-ordination .................................34 | |||
6 Fine-grained steering using BGP Flow-Spec .....................35 | 6 Fine-grained steering using BGP Flow-Spec .....................35 | |||
7 Controller Federation .........................................35 | 7 Controller Federation .........................................35 | |||
8 Coordination Between SF Instances and Controller using BGP ....35 | 8 Coordination Between SF Instances and Controller using BGP ....35 | |||
9 BGP Attributes ................................................36 | 9 BGP Extended Communities ......................................36 | |||
10 Summary and Conclusion........................................38 | 10 Summary and Conclusion........................................38 | |||
11 Security Considerations.......................................38 | 11 Security Considerations.......................................38 | |||
12 IANA Considerations...........................................38 | 12 IANA Considerations...........................................38 | |||
13 Informative References........................................38 | 13 Informative References........................................38 | |||
14 Acknowledgments...............................................40 | 14 Acknowledgments...............................................40 | |||
1 Introduction | 1 Introduction | |||
The purpose of networks is to allow computing systems to communicate | The purpose of networks is to allow computing systems to communicate | |||
with each other. Requests are usually made from the client or | with each other. Requests are usually made from the client or | |||
customer side of a network, and responses are generated by | customer side of a network, and responses are generated by | |||
applications residing in a datacenter. Over time, the network | applications residing in a datacenter. Over time, the network between | |||
between the client and the application has become more complex, and | the client and the application has become more complex, and traffic | |||
traffic between the client and the application is acted on by | between the client and the application is acted on by intermediate | |||
intermediate systems that apply network services. Some of these | systems that apply network services. Some of these activities, like | |||
activities, like firewall filtering, subscriber attachment and | firewall filtering, subscriber attachment and network address | |||
network address translation are generally carried out in network | translation are generally carried out in network devices along the | |||
devices along the traffic path, while others are carried out by | traffic path, while others are carried out by dedicated appliances, | |||
dedicated appliances, such as media proxy and deep packet inspection | such as media proxy and deep packet inspection (DPI). Deployment of | |||
(DPI). Deployment of these in-network services is complex, time- | these in-network services is complex, time- consuming and costly, | |||
consuming and costly, since they require configuration of devices | since they require configuration of devices with vendor-specific | |||
with vendor-specific operating systems, sometimes with co-processing | operating systems, sometimes with co-processing cards, or deployment | |||
cards, or deployment of physical devices in the network, which | of physical devices in the network, which requires cabling and | |||
requires cabling and configuration of the devices that they connect | configuration of the devices that they connect to. Additionally, | |||
to. Additionally, other devices in the network need to be configured | other devices in the network need to be configured to ensure that | |||
to ensure that traffic is correctly steered through the systems that | traffic is correctly steered through the systems that services are | |||
services are running on. | running on. | |||
The current mode of operations does not easily allow common | The current mode of operations does not easily allow common | |||
operational processes to be applied to the lifecycle of services in | operational processes to be applied to the lifecycle of services in | |||
the network, or for steering of traffic through them. | the network, or for steering of traffic through them. | |||
The recent emergence of Network Functions Virtualization (NFV) | The recent emergence of Network Functions Virtualization (NFV) | |||
[NFVE2E] to provide a standard deployment model for network services | [NFVE2E] to provide a standard deployment model for network services | |||
as software appliances, combined with Software Defined Networking | as software appliances, combined with Software Defined Networking | |||
(SDN) for more dynamic traffic steering can provide foundational | (SDN) for more dynamic traffic steering can provide foundational | |||
elements that will allow network services to be deployed and managed | elements that will allow network services to be deployed and managed | |||
far more efficiently and with more agility than is possible today. | far more efficiently and with more agility than is possible today. | |||
This document describes how the combination of several existing | This document describes how the combination of several existing | |||
technologies can be used to create chains of functions, while | technologies can be used to create chains of functions, while | |||
preserving the requirements of scale, performance and reliability | preserving the requirements of scale, performance and reliability for | |||
for service provider networks. The technologies employed are: | service provider networks. The technologies employed are: | |||
o Traffic flow between service functions described by routing and | o Traffic flow between service functions described by routing and | |||
network policies rather than by static physical or logical | network policies rather than by static physical or logical | |||
connectivity | connectivity | |||
o Packet header encapsulation in order to create virtual private | o Packet header encapsulation in order to create virtual private | |||
networks using network overlays | networks using network overlays | |||
o VRFs on both physical devices and in hypervisors to implement | o VRFs on both physical devices and in hypervisors to implement | |||
forwarding policies that are specific to each virtual network | forwarding policies that are specific to each virtual network | |||
o Optional use of a controller to calculate routes to be installed | o Optional use of a controller to calculate routes to be installed | |||
in routing systems to form a service chain. The controller uses a | in routing systems to form a service chain. The controller uses a | |||
topological model that stores service function instance | topological model that stores service function instance | |||
connectivity to network devices and intended connectivity between | connectivity to network devices and intended connectivity between | |||
service functions. | service functions. | |||
o MPLS or other labeling to facilitate identification of the next | o MPLS or other labeling to facilitate identification of the next | |||
interface to send packets to in a service function chain | interface to send packets to in a service function chain | |||
o BGP or BGP-style signaling to distribute routes in order to | o BGP or BGP-style signaling to distribute routes in order to create | |||
create service function chains | service function chains | |||
o Distributed load balancing between service functions performed in | o Distributed load balancing between service functions performed in | |||
the VRFs that service function instance connect to. | the VRFs that service function instance connect to. | |||
Virtualized environments can be supported without necessarily | Virtualized environments can be supported without necessarily running | |||
running BGP or MPLS natively. Messaging protocols such as NC/YANG, | BGP or MPLS natively. Messaging protocols such as NC/YANG, XMPP or | |||
XMPP or OpenFlow may be used to signal forwarding information. | OpenFlow may be used to signal forwarding information. Encapsulation | |||
Encapsulation mechanisms such as VXLAN or GRE may be used for | mechanisms such as VXLAN or GRE may be used for overlay transport. | |||
overlay transport. The term 'BGP-style', above, refers to this type | The term 'BGP-style', above, refers to this type of signaling. | |||
of signaling. | ||||
Traffic can be directed into service function chains using IP | Traffic can be directed into service function chains using IP routing | |||
routing at each end of the service function chain, or be directed | at each end of the service function chain, or be directed into the | |||
into the chain by a classifier function that can determine which | chain by a classifier function that can determine which service chain | |||
service chain a traffic flow should pass through based on deep | a traffic flow should pass through based on deep packet inspection | |||
packet inspection (DPI) and/or subscriber identity. | (DPI) and/or subscriber identity. | |||
The techniques can support an evolution from services implemented in | The techniques can support an evolution from services implemented in | |||
physical devices attached to physical forwarding systems (routers) | physical devices attached to physical forwarding systems (routers) to | |||
to fully virtualized implementations as well as intermediate hybrid | fully virtualized implementations as well as intermediate hybrid | |||
implementations. | implementations. | |||
1.1 Terminology | 1.1 Terminology | |||
This document uses the following acronyms and terms. | This document uses the following acronyms and terms. | |||
Terms Meaning | Terms Meaning | |||
----- ----------------------------------------------- | ----- ----------------------------------------------- | |||
AS Autonomous System | AS Autonomous System | |||
ASBR Autonomous System Border Router | ASBR Autonomous System Border Router | |||
CE Customer Edge | ||||
FW Firewall | FW Firewall | |||
I2RS Interface to the Routing System | I2RS Interface to the Routing System | |||
L3VPN Layer 3 VPN | L3VPN Layer 3 VPN | |||
LB Load Balancer | LB Load Balancer | |||
NLRI Network Layer Reachability Information [RFC4271] | NLRI Network Layer Reachability Information [RFC4271] | |||
P Provider backbone router | P Provider backbone router | |||
proxy-arp proxy-Address Resolution Protocol | proxy-arp proxy-Address Resolution Protocol | |||
RR Route Reflector | RR Route Reflector | |||
RT Route Target | RT Route Target | |||
SDN Software Defined Network | SDN Software Defined Network | |||
skipping to change at page 6, line 41 ¶ | skipping to change at page 6, line 36 ¶ | |||
composite built from several service functions executed in one or | composite built from several service functions executed in one or | |||
more pre-determined sequences and delivered by software executing | more pre-determined sequences and delivered by software executing | |||
in physical or virtual devices. | in physical or virtual devices. | |||
Classification: Customer/network/service policy used to identify and | Classification: Customer/network/service policy used to identify and | |||
select traffic flow(s) requiring certain outbound forwarding | select traffic flow(s) requiring certain outbound forwarding | |||
actions, in particular, to direct specific traffic flows into the | actions, in particular, to direct specific traffic flows into the | |||
ingress of a particular service function chain, or causing | ingress of a particular service function chain, or causing | |||
branching within a service function chain. | branching within a service function chain. | |||
Virtual Network: A logical overlay network built using virtual | Virtual Network: A logical overlay network built using virtual links | |||
links or packet encapsulation, over an existing network (the | or packet encapsulation, over an existing network (the underlay). | |||
underlay). | ||||
Service Function Chain (SFC): A service function chain defines an | Service Function Chain (SFC): A service function chain defines an | |||
ordered set of service functions that must be applied to packets | ordered set of service functions that must be applied to packets | |||
and/or frames selected as a result of classification. An SFC may | and/or frames selected as a result of classification. An SFC may be | |||
be either a linear chain or a complex service graph with multiple | either a linear chain or a complex service graph with multiple | |||
branches. The term 'Service Chain' is often used in place of | branches. The term 'Service Chain' is often used in place of | |||
'Service Function Chain'. | ||||
SFC Set: The pair of SFCs through which the forward and reverse | SFC Set: The pair of SFCs through which the forward and reverse | |||
directions of a given classified flow will pass. | directions of a given classified flow will pass. | |||
Service Function (SF): A logical function that is applied to | Service Function (SF): A logical function that is applied to | |||
packets. A service function can act at the network layer or other | packets. A service function can act at the network layer or other | |||
OSI layers. A service function can be embedded in one or more | OSI layers. A service function can be embedded in one or more | |||
physical network elements, or can be implemented in one or more | physical network elements, or can be implemented in one or more | |||
software instances running on physical or virtual hosts. One or | software instances running on physical or virtual hosts. One or | |||
multiple service functions can be embedded in the same network | multiple service functions can be embedded in the same network | |||
skipping to change at page 7, line 28 ¶ | skipping to change at page 7, line 20 ¶ | |||
A non-exhaustive list of services includes: firewalls, DDOS | A non-exhaustive list of services includes: firewalls, DDOS | |||
protection, anti-malware/ant-virus systems, WAN and application | protection, anti-malware/ant-virus systems, WAN and application | |||
acceleration, Deep Packet Inspection (DPI), server load balancers, | acceleration, Deep Packet Inspection (DPI), server load balancers, | |||
network address translation, HTTP Header Enrichment functions, | network address translation, HTTP Header Enrichment functions, | |||
video optimization, TCP optimization, etc. | video optimization, TCP optimization, etc. | |||
SF Instance: An instance of software that implements the packet | SF Instance: An instance of software that implements the packet | |||
processing of a service function | processing of a service function | |||
SF Instance Set: A group of SF instances that, in parallel, | SF Instance Set: A group of SF instances that, in parallel, implement | |||
implement a service function in an SFC. | a service function in an SFC. | |||
Routing System: A hardware or software system that performs layer 3 | Routing System: A hardware or software system that performs layer 3 | |||
routing and/or forwarding functions. The term includes physical | routing and/or forwarding functions. The term includes physical | |||
routers as well as hypervisor or Host OS implementations of the | routers as well as hypervisor or Host OS implementations of the | |||
forwarding plane of a conventional router. | forwarding plane of a conventional router. | |||
Gateway: A routing system attached to the source or destination | Gateway: A routing system attached to the source or destination | |||
network that peers with the controller, or with the routing system | network that peers with the controller, or with the routing system | |||
at one end of an SFC. A source network gateway directs traffic | at one end of an SFC. A source network gateway directs traffic from | |||
from the source network into an SFC, while a destination network | the source network into an SFC, while a destination network gateway | |||
gateway distributes traffic towards destinations. The routing | distributes traffic towards destinations. The routing systems at | |||
systems at each end of an SFC can themselves act as gateways and | each end of an SFC can themselves act as gateways and in a | |||
in a bidirectional SF instance set, gateways can act in both | bidirectional SF instance set, gateways can act in both directions | |||
directions | ||||
VRF: A subsystem within a routing system as defined in [RFC4364] | VRF: A subsystem within a routing system as defined in [RFC4364] that | |||
that contains private routing and forwarding tables and has | contains private routing and forwarding tables and has physical | |||
physical and/or logical interfaces associated with it. In the case | and/or logical interfaces associated with it. In the case of | |||
of hypervisor/Host OS implementations, the term refers only to the | hypervisor/Host OS implementations, the term refers only to the | |||
forwarding function of a VRF, and this will be referred to as a | forwarding function of a VRF, and this will be referred to as a | |||
'VPN forwarder.' | 'VPN forwarder.' | |||
Ingress VRF: A VRF containing an ingress interface of a SF instance | Ingress VRF: A VRF containing an ingress interface of a SF instance | |||
Egress VRF: A VRF containing an egress interface of a SF instance | Egress VRF: A VRF containing an egress interface of a SF instance | |||
Note that in this document the terms 'ingress' and 'egress' are used | Note that in this document the terms 'ingress' and 'egress' are used | |||
with respect to SF instances rather than the tunnels that connect SF | with respect to SF instances rather than the tunnels that connect SF | |||
instances. This is different usage than in VPN literature in | instances. This is different usage than in VPN literature in general. | |||
general. | ||||
Entry VRF: A VRF through which traffic enters the SFC from the | Entry VRF: A VRF through which traffic enters the SFC from the source | |||
source network. This VRF may be used to advertise the destination | network. This VRF may be used to advertise the destination | |||
network's routes to the source network. It could be placed on a | network's routes to the source network. It could be placed on a | |||
gateway router or be collocated with the first ingress VRF. | gateway router or be collocated with the first ingress VRF. | |||
Exit VRF: A VRF through which traffic exits the SFC into the | Exit VRF: A VRF through which traffic exits the SFC into the | |||
destination network. This VRF contains the routes from the | destination network. This VRF contains the routes from the | |||
destination network and could be located on a gateway router. | destination network and could be located on a gateway router. | |||
Alternatively, the egress VRF attached to the last SF instance may | Alternatively, the egress VRF attached to the last SF instance may | |||
also function as the exit VRF. | also function as the exit VRF. | |||
2 Service Function Chain Architecture Using Virtual Networking | 2 Service Function Chain Architecture Using Virtual Networking | |||
The techniques described in this document use virtual networks to | The techniques described in this document use virtual networks to | |||
implement service function chains. Service function chains can be | implement service function chains. Service function chains can be | |||
implemented on devices that support existing MPLS VPN and BGP | implemented on devices that support existing MPLS VPN and BGP | |||
standards [RFC4364, RFC4271, RFC4760], as well as other | standards [RFC4364, RFC4271, RFC4760], as well as other | |||
encapsulations, such as VXLAN [RFC7348]. Similarly, equivalent | encapsulations, such as VXLAN [RFC7348]. Similarly, equivalent | |||
control plane protocols such as BGP-EVPN with type-2 and type-5 | control plane protocols such as BGP-EVPN with type-2 and type-5 route | |||
route types can also be used where supported. The set of techniques | types can also be used where supported. The set of techniques | |||
described in this document represent one implementation approach to | described in this document represent one implementation approach to | |||
realize the SFC architecture described in [sfc-arch]. | realize the SFC architecture described in [sfc-arch]. | |||
The following sections detail the building blocks of the SFC | The following sections detail the building blocks of the SFC | |||
architecture, and outline the processes of route installation and | architecture, and outline the processes of route installation and | |||
subsequent route exchange to create an SFC. | subsequent route exchange to create an SFC. | |||
2.1 High Level Architecture | 2.1 High Level Architecture | |||
Service function chains can be deployed with or without a | Service function chains can be deployed with or without a classifier. | |||
classifier. Use cases where SFCs may be deployed without a | Use cases where SFCs may be deployed without a classifier include | |||
classifier include multi-tenant data centers, private and public | multi-tenant data centers, private and public cloud and virtual CPE | |||
cloud and virtual CPE for business services. Classifiers will | for business services. Classifiers will primarily be used in mobile | |||
primarily be used in mobile and wireline subscriber edge use cases. | and wireline subscriber edge use cases. Use of a classifier is | |||
Use of a classifier is discussed in Section 4. | discussed in Section 4. | |||
A high-level architecture diagram of an SFC without a classifier, | A high-level architecture diagram of an SFC without a classifier, | |||
where traffic is routed into and out of the SFC, is shown in Figure | where traffic is routed into and out of the SFC, is shown in Figure | |||
1, below. An optional controller is shown that contains a | 1, below. An optional controller is shown that contains a topological | |||
topological model of the SFC and which configures the network | model of the SFC and which configures the network resources to | |||
resources to implement the SFC. | implement the SFC. | |||
+-------------------------+ | +-------------------------+ | |||
|--- Data plane connection| | |--- Data plane connection| | |||
|=== Encapsulation tunnel | | |=== Encapsulation tunnel | | |||
| O VRF | | | O VRF | | |||
+-------------------------+ | +-------------------------+ | |||
Control +------------------------------------------------+ | Control +------------------------------------------------+ | |||
Plane | Controller | | Plane | Controller | | |||
....... +-+------------+----------+----------+---------+-+ | ....... +-+------------+----------+----------+---------+-+ | |||
skipping to change at page 10, line 16 ¶ | skipping to change at page 10, line 14 ¶ | |||
SFC composed of SF instances, SF1, SF2 and SF3. Routing system R-A | SFC composed of SF instances, SF1, SF2 and SF3. Routing system R-A | |||
contains a VRF (shown as 'O' symbol) that is the SFC entry point. | contains a VRF (shown as 'O' symbol) that is the SFC entry point. | |||
This VRF will advertise a route to reach Network-B into Network-A | This VRF will advertise a route to reach Network-B into Network-A | |||
causing any traffic from a source in Network-A with a destination in | causing any traffic from a source in Network-A with a destination in | |||
Network-B to arrive in this VRF. The forwarding table in the VRF in | Network-B to arrive in this VRF. The forwarding table in the VRF in | |||
R-A will direct traffic destined for Network-B into an encapsulation | R-A will direct traffic destined for Network-B into an encapsulation | |||
tunnel with destination R-1 and a label that identifies the ingress | tunnel with destination R-1 and a label that identifies the ingress | |||
(left) interface of SF1 that R-1 should send the packets out on. The | (left) interface of SF1 that R-1 should send the packets out on. The | |||
packets are processed by service instance SF-1 and arrive in the | packets are processed by service instance SF-1 and arrive in the | |||
egress (right) VRF in R-1. The forwarding entries in the egress VRF | egress (right) VRF in R-1. The forwarding entries in the egress VRF | |||
direct traffic to the next ingress VRF using encapsulation | direct traffic to the next ingress VRF using encapsulation tunneling. | |||
tunneling. The process is repeated for each service instance in the | The process is repeated for each service instance in the SFC until | |||
SFC until packets arrive at the SFC exit VRF (in R-B). This VRF is | packets arrive at the SFC exit VRF (in R-B). This VRF is peered with | |||
peered with Network-B and routes packets towards their destinations | Network-B and routes packets towards their destinations in the user | |||
in the user data plane. In this example, routing systems R-A and R-B | data plane. In this example, routing systems R-A and R-B are gateway | |||
are gateway routing systems. | routing systems. | |||
In the example, each pair of ingress and egress VRFs are configured | In the example, each pair of ingress and egress VRFs are configured | |||
in separate routing systems, but such pairs could be collocated in | in separate routing systems, but such pairs could be collocated in | |||
the same routing system, and it is possible for the ingress and | the same routing system, and it is possible for the ingress and | |||
egress VRFs for a given SF instance to be in different routing | egress VRFs for a given SF instance to be in different routing | |||
systems. The SFC entry and exit VRFs can be collocated in the same | systems. The SFC entry and exit VRFs can be collocated in the same | |||
routing system, and the service instances can be local or remote | routing system, and the service instances can be local or remote from | |||
from either or both of the routing systems containing the entry and | either or both of the routing systems containing the entry and exit | |||
exit VRFs, and from each other. It is also possible that the ingress | VRFs, and from each other. It is also possible that the ingress and | |||
and egress VRFs are implemented using alternative mechanisms. | egress VRFs are implemented using alternative mechanisms. | |||
The controller is responsible for configuring the VRFs in each | The controller is responsible for configuring the VRFs in each | |||
routing system, installing the routes in each of the VRFs to | routing system, installing the routes in each of the VRFs to | |||
implement the SFC, and, in the case of virtualized services, may | implement the SFC, and, in the case of virtualized services, may | |||
instantiate the service instances. | instantiate the service instances. | |||
2.2 Service Function Chain Logical Model | 2.2 Service Function Chain Logical Model | |||
A service function chain is a set of logically connected service | A service function chain is a set of logically connected service | |||
functions through which traffic can flow. Each egress interface of | functions through which traffic can flow. Each egress interface of | |||
skipping to change at page 11, line 20 ¶ | skipping to change at page 11, line 17 ¶ | |||
In Figure 2, above, a service function chain has been created that | In Figure 2, above, a service function chain has been created that | |||
connects Network-A to Network-B, such that traffic from a host in | connects Network-A to Network-B, such that traffic from a host in | |||
Network-A to a host in Network-B will traverse the service function | Network-A to a host in Network-B will traverse the service function | |||
chain. | chain. | |||
As defined in [sfc-arch], a service function chain can be uni- | As defined in [sfc-arch], a service function chain can be uni- | |||
directional or bi-directional. In this document, in order to allow | directional or bi-directional. In this document, in order to allow | |||
for the possibility that the forward and reverse paths may not be | for the possibility that the forward and reverse paths may not be | |||
symmetrical, SFCs are defined as uni-directional, and the term 'SFC | symmetrical, SFCs are defined as uni-directional, and the term 'SFC | |||
set' is used to refer to a pair of forward and reverse direction | set' is used to refer to a pair of forward and reverse direction SFCs | |||
SFCs for some set of routed or classified traffic. | for some set of routed or classified traffic. | |||
2.3 Service Function Implemented in a Set of SF Instances | 2.3 Service Function Implemented in a Set of SF Instances | |||
A service function instance is a software system that acts on | A service function instance is a software system that acts on packets | |||
packets that arrive on an ingress interface of that software system. | that arrive on an ingress interface of that software system. Service | |||
Service function instances may run on a physical appliance or in a | function instances may run on a physical appliance or in a virtual | |||
virtual machine. A service function instance may be transparent at | machine. A service function instance may be transparent at layer 2 | |||
layer 2 and/or layer 3, and may support branching across multiple | and/or layer 3, and may support branching across multiple egress | |||
egress interfaces and may support aggregation across ingress | interfaces and may support aggregation across ingress interfaces. For | |||
interfaces. For simplicity, the examples in this document have a | simplicity, the examples in this document have a single ingress and a | |||
single ingress and a single egress interface. | single egress interface. | |||
Each service function in a chain can be implemented by a single | Each service function in a chain can be implemented by a single | |||
service function instance, or by a set of instances in order to | service function instance, or by a set of instances in order to | |||
provide scale and resilience. | provide scale and resilience. | |||
+------------------------------------------------------------------+ | +------------------------------------------------------------------+ | |||
| Logical Service Functions Connected in a Chain | | | Logical Service Functions Connected in a Chain | | |||
| | | | | | |||
| +--------+ +--------+ | | | +--------+ +--------+ | | |||
| Net-A--->| SF-1 |----------->| SF-2 |--->Net-B | | | Net-A--->| SF-1 |----------->| SF-2 |--->Net-B | | |||
skipping to change at page 12, line 36 ¶ | skipping to change at page 12, line 36 ¶ | |||
| '''''' '''''' | | | '''''' '''''' | | |||
+------------------------------------------------------------------+ | +------------------------------------------------------------------+ | |||
Figure 3 - Service Functions Are Composed of SF Instances Connected | Figure 3 - Service Functions Are Composed of SF Instances Connected | |||
Via Virtual Networks | Via Virtual Networks | |||
In Figure 3, service function SF-1 is implemented in three service | In Figure 3, service function SF-1 is implemented in three service | |||
function instances, SFI-11, SFI-12, and SFI-13. Service function SF- | function instances, SFI-11, SFI-12, and SFI-13. Service function SF- | |||
2 is implemented in two SF instances. The service function instances | 2 is implemented in two SF instances. The service function instances | |||
are connected to the next service function in the chain using a | are connected to the next service function in the chain using a | |||
virtual network, VN-2. Additionally, a virtual network (VN-1) is | virtual network, VN-2. Additionally, a virtual network (VN-1) is used | |||
used to enter the SFC and another (VN-3) is used at the exit. | to enter the SFC and another (VN-3) is used at the exit. | |||
The logical connection between two service functions is implemented | The logical connection between two service functions is implemented | |||
using a virtual network that contains egress interfaces for | using a virtual network that contains egress interfaces for instances | |||
instances of one service function, and ingress interfaces of | of one service function, and ingress interfaces of instances of the | |||
instances of the next service function. Traffic is directed across | next service function. Traffic is directed across the virtual network | |||
the virtual network between the two sets of service function | between the two sets of service function instances using layer 3 | |||
instances using layer 3 forwarding (e.g. an MPLS VPN) or layer 2 | forwarding (e.g. an MPLS VPN) or layer 2 forwarding (e.g. a VXLAN). | |||
forwarding (e.g. a VXLAN). | ||||
The virtual networks could be described as "directed half-mesh", in | The virtual networks could be described as "directed half-mesh", in | |||
that the egress interface of each SF instance of one service | that the egress interface of each SF instance of one service function | |||
function can reach any ingress interface of the SF instances of the | can reach any ingress interface of the SF instances of the connected | |||
connected service function. | service function. | |||
Details on how routing across virtual networks is achieved, and | Details on how routing across virtual networks is achieved, and | |||
requirements on load balancing across ingress interfaces are | requirements on load balancing across ingress interfaces are | |||
discussed in later sections of this document. | discussed in later sections of this document. | |||
2.4 SF Instance Connections to VRFs | 2.4 SF Instance Connections to VRFs | |||
SF instances can be deployed as software running on physical | SF instances can be deployed as software running on physical | |||
appliances, or in virtual machines running on a hypervisor. These | appliances, or in virtual machines running on a hypervisor. These two | |||
two types are described in more detail in the following sections. | types are described in more detail in the following sections. | |||
2.4.1 SF Instance in Physical Appliance | 2.4.1 SF Instance in Physical Appliance | |||
The case of a SF instance running on a physical appliance is shown | The case of a SF instance running on a physical appliance is shown in | |||
in Figure 4, below. | Figure 4, below. | |||
+---------------------------------+ | +---------------------------------+ | |||
| | | | | | |||
| +-----------------------------+ | | | +-----------------------------+ | | |||
| | Service Function Instance | | | | | Service Function Instance | | | |||
| +-------^-------------|-------+ | | | +-------^-------------|-------+ | | |||
| | Host | | | | | Host | | | |||
+---------|-------------|---------+ | +---------|-------------|---------+ | |||
| | | | | | |||
+------ |-------------|-------+ | +------ |-------------|-------+ | |||
skipping to change at page 14, line 40 ¶ | skipping to change at page 14, line 40 ¶ | |||
| | | Routing System | | | | | | | Routing System | | | | |||
| | +-----------------------------+ | | | | | +-----------------------------+ | | | |||
| | Hypervisor or Host OS | | | | | Hypervisor or Host OS | | | |||
| +---------------------------------+ | | | +---------------------------------+ | | |||
| Host | | | Host | | |||
+-------------------------------------+ | +-------------------------------------+ | |||
Figure 5 - Ingress and Egress VRFs for a Virtual Routing System and | Figure 5 - Ingress and Egress VRFs for a Virtual Routing System and | |||
Virtualized SF Instance | Virtualized SF Instance | |||
When more than one instance of an SF is running on a hypervisor, | When more than one instance of an SF is running on a hypervisor, they | |||
they can be connected to the same VRF for scale out of an SF within | can be connected to the same VRF for scale out of an SF within an | |||
an SFC. | SFC. | |||
The routing mechanisms in the VRFs into and between service function | The routing mechanisms in the VRFs into and between service function | |||
instances, and the encapsulation tunneling between routing systems | instances, and the encapsulation tunneling between routing systems | |||
are identical in the physical and virtual implementations of SFCs | are identical in the physical and virtual implementations of SFCs and | |||
and routing systems described in this document. Physical and virtual | routing systems described in this document. Physical and virtual | |||
service functions can be mixed as needed with different combinations | service functions can be mixed as needed with different combinations | |||
of physical and virtual routing systems, within a single service | ||||
chain. | chain. | |||
The SF instances are attached to the routing systems via physical, | The SF instances are attached to the routing systems via physical, | |||
virtual or logical (e.g, 802.1q) interfaces, and are assumed to | virtual or logical (e.g, 802.1q) interfaces, and are assumed to | |||
perform basic L3 or L2 forwarding. | perform basic L3 or L2 forwarding. | |||
A single SF instance can be part of multiple service chains. In this | A single SF instance can be part of multiple service chains. In this | |||
case, the SF instance will have dedicated interfaces (typically | case, the SF instance will have dedicated interfaces (typically | |||
logical) and forwarding contexts associated with each service chain. | logical) and forwarding contexts associated with each service chain. | |||
skipping to change at page 15, line 27 ¶ | skipping to change at page 15, line 26 ¶ | |||
instances in the chain and, when a classifier is not used, from the | instances in the chain and, when a classifier is not used, from the | |||
originating network into the SFC and from the SFC into the | originating network into the SFC and from the SFC into the | |||
destination network. | destination network. | |||
The tunnels can be MPLS over GRE [RFC4023], MPLS over UDP [draft- | The tunnels can be MPLS over GRE [RFC4023], MPLS over UDP [draft- | |||
ietf-mpls-in-udp], MPLS over MPLS [RFC3031], VXLAN [RFC7348], or | ietf-mpls-in-udp], MPLS over MPLS [RFC3031], VXLAN [RFC7348], or | |||
another suitable encapsulation methods. | another suitable encapsulation methods. | |||
Tunneling capabilities may be enabled in each routing system as part | Tunneling capabilities may be enabled in each routing system as part | |||
of a base configuration or may be configured by the controller. | of a base configuration or may be configured by the controller. | |||
Tunnel encapsulations may be programmed by the controller or | Tunnel encapsulations may be programmed by the controller or signaled | |||
signaled using BGP. The encapsulation to be used for a given route | using BGP. The encapsulation to be used for a given route is signaled | |||
is signaled in BGP using the procedures described in [draft-rosen- | in BGP using the procedures described in [draft-rosen- | |||
idr-tunnel-encaps], i.e. typically relying on the BGP Tunnel | idr-tunnel-encaps], i.e. typically relying on the BGP Tunnel | |||
Encapsulation Extended Community. | Encapsulation Extended Community. | |||
2.6 SFC Creation Procedure | 2.6 SFC Creation Procedure | |||
This section describes how service chains are created using two | This section describes how service chains are created using two | |||
methods: | methods: | |||
o Sequential VPNs - where a conventional VPN is created between | o Sequential VPNs - where a conventional VPN is created between each | |||
each set of SF instances to create the links in the SFC | set of SF instances to create the links in the SFC | |||
o Route Modification - where each routing system modifies | o Route Modification - where each routing system modifies advertised | |||
advertised routes that it receives, to realize the links in an | routes that it receives, to realize the links in an SFC on the | |||
SFC on the basis of a special service topology RT and a route- | basis of a special service topology RT and a route- policy that | |||
policy that describes the service chain logical topology | describes the service chain logical topology | |||
In both cases the controller, when present, is responsible for | In both cases the controller, when present, is responsible for | |||
creating ingress and egress VRFs, configuring the interfaces | creating ingress and egress VRFs, configuring the interfaces | |||
connected to SF instances in each VRF, and allocating and | connected to SF instances in each VRF, and allocating and configuring | |||
configuring import and export RTs for each VRF. Additionally, in the | import and export RTs for each VRF. Additionally, in the second | |||
second method, the controller also sends the route-policy containing | method, the controller also sends the route-policy containing the | |||
the service chain logical topology to each routing system. If a | service chain logical topology to each routing system. If a | |||
controller is not used, these procedures will require to be | controller is not used, these procedures will require to be performed | |||
performed manually or through scripting, for instance. | manually or through scripting, for instance. | |||
The source and destination networks' prefixes can be configured in | The source and destination networks' prefixes can be configured in | |||
the controller, or may be automatically learned through peering | the controller, or may be automatically learned through peering | |||
between the controller and each network's gateway. This is further | between the controller and each network's gateway. This is further | |||
described in Section 2.8.5 and Section 5. | described in Section 2.8.5 and Section 5. | |||
The following sub-sections describe how RT configuration, local | The following sub-sections describe how RT configuration, local route | |||
route installation and route distribution occur in each of the | installation and route distribution occur in each of the methods. | |||
methods. | ||||
It should be noted that depending on the capabilities of the routing | It should be noted that depending on the capabilities of the routing | |||
systems, a controller can use one or more techniques to realize | systems, a controller can use one or more techniques to realize | |||
forwarding along the service chain, ranging from fully centralized | forwarding along the service chain, ranging from fully centralized to | |||
to fully distributed. The goal of describing the following two | fully distributed. The goal of describing the following two methods | |||
methods is to illustrate the broad approaches and as a base for | is to illustrate the broad approaches and as a base for various | |||
various optimization options. | optimization options. | |||
Interoperability between a controller implementing one method and a | Interoperability between a controller implementing one method and a | |||
controller implementing a different method is achieved by relying on | controller implementing a different method is achieved by relying on | |||
the techniques described in section 5 and section 8, that describe | the techniques described in section 5 and section 8, that describe | |||
the use of BGP-style service chaining within domains that are | the use of BGP-style service chaining within domains that are | |||
interconnected using standard BGP VPN route exchanges. | interconnected using standard BGP VPN route exchanges. | |||
2.6.1 SFC Provisioning Using Sequential VPNs | 2.6.1 SFC Provisioning Using Sequential VPNs | |||
The task of the controller in this method of SFC provisioning is to | The task of the controller in this method of SFC provisioning is to | |||
create a set of VPNs that carry traffic to the destination network | create a set of VPNs that carry traffic to the destination network | |||
through instances of each service function in turn. This is achieved | through instances of each service function in turn. This is achieved | |||
by allocating and configuring RTs such that the egress VRFs of one | by allocating and configuring RTs such that the egress VRFs of one | |||
set of SF instances import an RT that is an export RT for the | set of SF instances import an RT that is an export RT for the ingress | |||
ingress VRFs of the next, logically connected, set of SF instances. | VRFs of the next, logically connected, set of SF instances. | |||
The process of SFC creation is as follows: | The process of SFC creation is as follows: | |||
1. Controller creates a VRF in each routing system that is | 1. Controller creates a VRF in each routing system that is | |||
connected to a service instance that will be used in the | connected to a service instance that will be used in the SFC | |||
SFC | ||||
2. Controller configures each VRF to contain the logical | 2. Controller configures each VRF to contain the logical | |||
interface that connects to a SF instance. | interface that connects to a SF instance. | |||
3. Controller implements route target import and export | 3. Controller implements route target import and export | |||
policies in the VRFs using the same route targets for the | policies in the VRFs using the same route targets for the | |||
egress VRFs of a service function and the ingress VRFs of | egress VRFs of a service function and the ingress VRFs of | |||
the next logically connected service function in the SFC. | the next logically connected service function in the SFC. | |||
4. Controller installs a static route in each ingress VRF | 4. Controller installs a static route in each ingress VRF whose | |||
whose next hop is the interface that a SF instance is | next hop is the interface that a SF instance is connected | |||
connected to. The prefix for the route is the destination | to. The prefix for the route is the destination network to | |||
network to be reached by passing through the SFC. The | be reached by passing through the SFC. The following | |||
following sections describe variations that can be used. | sections describe variations that can be used. | |||
5. Routing systems advertise the static routes via BGP as VPN | 5. Routing systems advertise the static routes via BGP as VPN | |||
routes with next hop being the IP address of the router, | routes with next hop being the IP address of the router, | |||
with an encapsulation specified and a label that identifies | with an encapsulation specified and a label that identifies | |||
the service instance interface. | the service instance interface. | |||
6. Routing systems containing VRFs with matching route targets | 6. Routing systems containing VRFs with matching route targets | |||
receive the updates. | receive the updates. | |||
7. Routes are installed in egress VRFs with matching import | 7. Routes are installed in egress VRFs with matching import | |||
targets. The egress VRFs of each SF instance will now | targets. The egress VRFs of each SF instance will now | |||
contain VPN routes to one or more routers containing | contain VPN routes to one or more routers containing ingress | |||
ingress VRFs for SF instances of the next service function | VRFs for SF instances of the next service function in the | |||
in the SFC. | SFC. | |||
Routes to the destination network via the first set of SF instances | Routes to the destination network via the first set of SF instances | |||
are advertised into the source network, and the egress VRFs of the | are advertised into the source network, and the egress VRFs of the | |||
last SF instance set have routes into the destination network. | last SF instance set have routes into the destination network. | |||
As discussed further in Section 3, egress VRFs can load balance | As discussed further in Section 3, egress VRFs can load balance | |||
across the multiple next hops advertised from the next set of | across the multiple next hops advertised from the next set of ingress | |||
ingress VRFs. | VRFs. | |||
2.6.2 Modified-Route SFC Creation | 2.6.2 Modified-Route SFC Creation | |||
In this method of SFC configuration, all the VRFs connected to SF | In this method of SFC configuration, all the VRFs connected to SF | |||
instances for a given SFC are configured with same import and export | instances for a given SFC are configured with same import and export | |||
RT, so they form a VPN-connected mesh between the SF instance | RT, so they form a VPN-connected mesh between the SF instance | |||
interfaces. This is termed the 'Service VPN'. A route is configured | interfaces. This is termed the 'Service VPN'. A route is configured | |||
or learnt in each VRF with destination being the IP address of a | or learnt in each VRF with destination being the IP address of a | |||
connected SF instance via an interface configured in the VRF. The | connected SF instance via an interface configured in the VRF. The | |||
interface may be a physical or logical interface. The routing system | interface may be a physical or logical interface. The routing system | |||
that hosts such a VRF advertises a VPN route for each locally | that hosts such a VRF advertises a VPN route for each locally | |||
connected SF instance, with a forwarding label that enables it to | connected SF instance, with a forwarding label that enables it to | |||
forward incoming traffic from other routing systems to the connected | forward incoming traffic from other routing systems to the connected | |||
SF instance. The VPN routes may be advertised via an RR or the | SF instance. The VPN routes may be advertised via an RR or the | |||
controller, which sends these updates to all the other routing | controller, which sends these updates to all the other routing | |||
systems that have VRFs with the service VPN RT. At this point all | systems that have VRFs with the service VPN RT. At this point all the | |||
the VRFs have a route to reach every SF instance. The same virtual | VRFs have a route to reach every SF instance. The same virtual IP | |||
IP address may be used for each SF instance in a set, enabling load- | address may be used for each SF instance in a set, enabling load- | |||
balancing among multiple SF instances in the set. | balancing among multiple SF instances in the set. | |||
The controller builds a route-policy for the routing systems in the | The controller builds a route-policy for the routing systems in the | |||
VPN, that describes the logical topology of each service chain that | VPN, that describes the logical topology of each service chain that | |||
it belongs to. The route-policy contains entries in the form of a | it belongs to. The route-policy contains entries in the form of a | |||
tuple for each service chain: | tuple for each service chain: | |||
{Service-topology-name, Service-topology-RT, Service-node- | {Service-topology-name, Service-topology-RT, Service-node- | |||
sequence} | sequence} | |||
skipping to change at page 19, line 22 ¶ | skipping to change at page 19, line 20 ¶ | |||
modification of behavior in the routing systems allows the automatic | modification of behavior in the routing systems allows the automatic | |||
and constrained flow of traffic through the service chain. | and constrained flow of traffic through the service chain. | |||
Each routing system in the service VPN will process the VPN route to | Each routing system in the service VPN will process the VPN route to | |||
Network-B via R-B as follows: | Network-B via R-B as follows: | |||
1. If the routing system contains VRFs that import the | 1. If the routing system contains VRFs that import the | |||
Service-topology-RT, continue, otherwise ignore the route. | Service-topology-RT, continue, otherwise ignore the route. | |||
2. The routing system identifies the position and role | 2. The routing system identifies the position and role | |||
(ingress/egress) of each of its VRFs in the SFC by | (ingress/egress) of each of its VRFs in the SFC by comparing | |||
comparing the IP address of the route in the VRF to the | the IP address of the route in the VRF to the connected SF | |||
connected SF instance with those in the Service-node- | instance with those in the Service-node- sequence in the | |||
sequence in the route-policy. Alternatively, the controller | route-policy. Alternatively, the controller may provision | |||
may provision the specific service node IP to be used as | the specific service node IP to be used as the next-hop in | |||
the next-hop in each VRF, in the route-policy for the VRF. | each VRF, in the route-policy for the VRF. | |||
3. The routing system modifies the next-hop of the imported | 3. The routing system modifies the next-hop of the imported | |||
route with the Service-topology-RT, to select the | route with the Service-topology-RT, to select the | |||
appropriate next-hop as per the route-policy. It ignores | appropriate next-hop as per the route-policy. It ignores the | |||
the next-hop and label in the received route. It resolves | next-hop and label in the received route. It resolves the | |||
the selected next-hop in the local VRF routing table. | selected next-hop in the local VRF routing table. | |||
a. The imported route to Network-B in the ingress VRF is | a. The imported route to Network-B in the ingress VRF is | |||
modified to have a next-hop of the IP address of the | modified to have a next-hop of the IP address of the | |||
logically connected SF instance. | logically connected SF instance. | |||
b. The imported route to Network-B in the egress VRF is | b. The imported route to Network-B in the egress VRF is | |||
modified to have a next hop of the IP address of the | modified to have a next hop of the IP address of the | |||
next SF instance in the SFC. | next SF instance in the SFC. | |||
4. The egress VRFs for the last service function install the | 4. The egress VRFs for the last service function install the | |||
skipping to change at page 20, line 13 ¶ | skipping to change at page 20, line 13 ¶ | |||
the various intermediate routing systems in the SFC. | the various intermediate routing systems in the SFC. | |||
2.6.3 Common SFC provisioning considerations | 2.6.3 Common SFC provisioning considerations | |||
In both the methods, for physical routers, the creation and | In both the methods, for physical routers, the creation and | |||
configuration of VRFs, interfaces and local static routes can be | configuration of VRFs, interfaces and local static routes can be | |||
performed programmatically using Netconf; and BGP route distribution | performed programmatically using Netconf; and BGP route distribution | |||
can use a route reflector (which may be part of the controller). In | can use a route reflector (which may be part of the controller). In | |||
the virtualized case, where a VPN forwarder is present, creation and | the virtualized case, where a VPN forwarder is present, creation and | |||
configuration of VRFs, interfaces and installation of routes may | configuration of VRFs, interfaces and installation of routes may | |||
instead be performed using a single protocol like XMPP, NC/YANG or | instead be performed using a single protocol like XMPP, NC/YANG or an | |||
an equivalent programmatic interface. | equivalent programmatic interface. | |||
Also in the virtualized case, the actual forwarding table entries to | Also in the virtualized case, the actual forwarding table entries to | |||
be installed in the ingress and egress VRFs may be calculated by the | be installed in the ingress and egress VRFs may be calculated by the | |||
controller based on its internal knowledge of the required SFC | controller based on its internal knowledge of the required SFC | |||
topology and the connectivity of SF instances to routing systems. In | topology and the connectivity of SF instances to routing systems. In | |||
this case, the routes may be directly installed in the forwarders | this case, the routes may be directly installed in the forwarders | |||
using the programmatic interface and no BGP route advertisement is | using the programmatic interface and no BGP route advertisement is | |||
necessary, except when coordination with external domains (Section | necessary, except when coordination with external domains (Section 5) | |||
5) or federation between controller domains is employed (Section 7). | or federation between controller domains is employed (Section 7). | |||
Note however that this is just one typical model for a virtual | Note however that this is just one typical model for a virtual | |||
forwarding based system. In general, physical and virtual routing | forwarding based system. In general, physical and virtual routing | |||
systems can be treated exactly the same if they have the same | systems can be treated exactly the same if they have the same | |||
capabilities. | capabilities. | |||
In both the methods, the SF instance may also need to be set up | In both the methods, the SF instance may also need to be set up | |||
appropriately to forward traffic between it's input and output | appropriately to forward traffic between it's input and output | |||
interfaces, either via static, dynamic or policy-based routing. If | interfaces, either via static, dynamic or policy-based routing. If | |||
the service function is a transparent L2 service, then the static | the service function is a transparent L2 service, then the static | |||
route installed in the ingress VRF will have a next-hop of the IP | route installed in the ingress VRF will have a next-hop of the IP | |||
address of the routing system interface that the service instance is | address of the routing system interface that the service instance is | |||
attached to on its other interface. | attached to on its other interface. | |||
2.7 Controller Function | 2.7 Controller Function | |||
The purpose of the controller is to manage instantiation of SFCs in | The purpose of the controller is to manage instantiation of SFCs in | |||
networks and datacenters. When an SFC is to be instantiated, a model | networks and datacenters. When an SFC is to be instantiated, a model | |||
of the desired topology (service functions, number of instances, | of the desired topology (service functions, number of instances, | |||
connectivity) is built in the controller either via an API or GUI. | connectivity) is built in the controller either via an API or GUI. | |||
The controller then selects resources in the infrastructure that | The controller then selects resources in the infrastructure that will | |||
will support the SFC and configures them. This can involve | support the SFC and configures them. This can involve instantiation | |||
instantiation of SF instances to implement each service function, | of SF instances to implement each service function, the instantiation | |||
the instantiation of VRFs that will form virtual networks between SF | of VRFs that will form virtual networks between SF instances, and | |||
instances, and installation of routes to cause traffic to flow into | installation of routes to cause traffic to flow into and between SF | |||
and between SF instances. It can also include provisioning the | instances. It can also include provisioning the necessary static, | |||
necessary static, dynamic or policy based forwarding on the service | dynamic or policy based forwarding on the service function instance | |||
function instance to enable it to forward traffic. | to enable it to forward traffic. | |||
For simplicity, in this document, the controller is assumed to | For simplicity, in this document, the controller is assumed to | |||
contain all the required features for management of SFCs. In actual | contain all the required features for management of SFCs. In actual | |||
implementations, these features may be distributed among multiple | implementations, these features may be distributed among multiple | |||
inter-connected systems. E.g. An overarching orchestrator might | inter-connected systems. E.g. An overarching orchestrator might | |||
manage the overall SFC model, sending instructions to a separate | manage the overall SFC model, sending instructions to a separate | |||
virtual machine manager to instantiate service function instances, | virtual machine manager to instantiate service function instances, | |||
and to a virtual network manager to set up the service chain | and to a virtual network manager to set up the service chain | |||
connections between them. | connections between them. | |||
skipping to change at page 21, line 28 ¶ | skipping to change at page 21, line 26 ¶ | |||
2.8 Variations on Setting Prefixes in an SFC | 2.8 Variations on Setting Prefixes in an SFC | |||
The SFC Creation section above described the basic procedures for a | The SFC Creation section above described the basic procedures for a | |||
couple of SFC creation methods. This section describes some | couple of SFC creation methods. This section describes some | |||
techniques that can extend and provide optimizations on top of the | techniques that can extend and provide optimizations on top of the | |||
basic procedures. | basic procedures. | |||
2.8.1 Using a Default Route | 2.8.1 Using a Default Route | |||
In the methods described above, it can be noted that only the | In the methods described above, it can be noted that only the gateway | |||
gateway routing systems need the specific network prefixes to steer | routing systems need the specific network prefixes to steer traffic | |||
traffic in and out of the SFC. The intermediate systems can direct | in and out of the SFC. The intermediate systems can direct traffic in | |||
traffic in the ingress and egress VRFs by using only a default | the ingress and egress VRFs by using only a default route. Hence, it | |||
route. Hence, it is possible to avoid installing the network | is possible to avoid installing the network prefixes in the | |||
prefixes in the intermediate systems. This can be done by splitting | intermediate systems. This can be done by splitting the SFC into two | |||
the SFC into two sections - one linking the entry and exit VRFs and | sections - one linking the entry and exit VRFs and the other | |||
the other including the intermediate systems. For instance, this may | including the intermediate systems. For instance, this may be | |||
be achieved by using two different Service-topology-RTs in the | achieved by using two different Service-topology-RTs in the second | |||
second method. | method. | |||
2.8.2 Using a Default Route and a Large Prefix | 2.8.2 Using a Default Route and a Large Prefix | |||
In the configuration methods described above, the network prefixes | In the configuration methods described above, the network prefixes | |||
for each network (Network-A and Network-B in the example above) | for each network (Network-A and Network-B in the example above) | |||
connected to the SFC are used in the routes that direct traffic | connected to the SFC are used in the routes that direct traffic | |||
through the SFC. This creates an operational linkage between the | ||||
implementation of the SFC and the insertion of the SFC into a | implementation of the SFC and the insertion of the SFC into a | |||
network. | network. | |||
For instance, subscriber network prefixes will normally be segmented | For instance, subscriber network prefixes will normally be segmented | |||
across subscriber attachment points such as broadband or mobile | across subscriber attachment points such as broadband or mobile | |||
gateways. This means that each SFC would have to be configured with | gateways. This means that each SFC would have to be configured with | |||
the subscriber network prefixes whose traffic it is handling. | the subscriber network prefixes whose traffic it is handling. | |||
In a variation of the SFC configuration method described above, the | In a variation of the SFC configuration method described above, the | |||
prefixes used in each direction can be such that they include all | prefixes used in each direction can be such that they include all | |||
possible addresses at each side of the SFC. For example, in Figure | possible addresses at each side of the SFC. For example, in Figure 1, | |||
1, the prefix for Network-A could include all subscriber IP | the prefix for Network-A could include all subscriber IP addresses | |||
addresses and the prefix for Network-B could be the default route, | and the prefix for Network-B could be the default route, 0/0. | |||
0/0. | ||||
Using this technique, the same routes can be installed in all | Using this technique, the same routes can be installed in all | |||
instances of an SFC that serve different groups of subscribers in | instances of an SFC that serve different groups of subscribers in | |||
different geographic locations. | different geographic locations. | |||
The routes forwarding traffic into a SF instance and to the next SF | The routes forwarding traffic into a SF instance and to the next SF | |||
instance are installed when an SFC is initially built, and each time | instance are installed when an SFC is initially built, and each time | |||
a SF instance is connected into the SFC, but there is no requirement | a SF instance is connected into the SFC, but there is no requirement | |||
for VRFs to be reconfigured when traffic from different networks | for VRFs to be reconfigured when traffic from different networks pass | |||
pass through the service chain, so long as their prefix is included | through the service chain, so long as their prefix is included in the | |||
in the prefixes in the VRFs along the SFC. | prefixes in the VRFs along the SFC. | |||
In this variation, it is assumed that no subscriber-originated | In this variation, it is assumed that no subscriber-originated | |||
traffic will enter the SFC destined for an IP address also in the | traffic will enter the SFC destined for an IP address also in the | |||
subscriber network address range. This will not be a restriction in | subscriber network address range. This will not be a restriction in | |||
many cases. | many cases. | |||
2.8.3 Disaggregated Gateway Routers | 2.8.3 Disaggregated Gateway Routers | |||
As a slight variation of the above, a network prefix may be | As a slight variation of the above, a network prefix may be | |||
disaggregated and spread out among various gateway routers, for | disaggregated and spread out among various gateway routers, for | |||
instance, in the case of virtual machines in a data-center. In order | instance, in the case of virtual machines in a data-center. In order | |||
to reduce the scaling requirements on the routing systems along the | to reduce the scaling requirements on the routing systems along the | |||
SFC, the SFC can again be split into two sections as described | SFC, the SFC can again be split into two sections as described above. | |||
above. In addition, the last egress VRF may act as the exit VRF and | In addition, the last egress VRF may act as the exit VRF and install | |||
install the destination network's disaggregated routes. If the | the destination network's disaggregated routes. If the destination | |||
destination network's prefixes can be aggregated, for instance into | network's prefixes can be aggregated, for instance into a subnet | |||
a subnet prefix, then the aggregate prefix may be advertised and | prefix, then the aggregate prefix may be advertised and installed in | |||
installed in the entry VRF. | the entry VRF. | |||
2.8.4 Optimizing VRF usage | 2.8.4 Optimizing VRF usage | |||
It may be desirable to avoid using distinct ingress and egress VRFs | It may be desirable to avoid using distinct ingress and egress VRFs | |||
for the service instances in order to make more efficient use of VRF | for the service instances in order to make more efficient use of VRF | |||
resources, especially on physical routing systems. The ingress VRF | resources, especially on physical routing systems. The ingress VRF | |||
and egress VRF may be treated as conceptual entities and the | and egress VRF may be treated as conceptual entities and the | |||
forwarding realized using one or more options described in this | forwarding realized using one or more options described in this | |||
section, combined with the methods described earlier. | section, combined with the methods described earlier. | |||
skipping to change at page 23, line 29 ¶ | skipping to change at page 23, line 29 ¶ | |||
specific network prefixes may be installed in the intermediate | specific network prefixes may be installed in the intermediate | |||
service VRFs to direct traffic towards the attached service | service VRFs to direct traffic towards the attached service | |||
instances. | instances. | |||
Similarly, a per-interface policy-based-routing rule applied to an | Similarly, a per-interface policy-based-routing rule applied to an | |||
access interface can serve to direct traffic coming in from attached | access interface can serve to direct traffic coming in from attached | |||
service instances towards the next SF set. | service instances towards the next SF set. | |||
2.8.5 Dynamic Entry and Exit Signaling | 2.8.5 Dynamic Entry and Exit Signaling | |||
When either of the methods of the previous sections are employed, | When either of the methods of the previous sections are employed, the | |||
the prefixes of the attached networks at each end of an SFC can be | prefixes of the attached networks at each end of an SFC can be | |||
signaled into the corresponding VRFs dynamically. This requires that | signaled into the corresponding VRFs dynamically. This requires that | |||
a BGP session is configured either from the network device at each | a BGP session is configured either from the network device at each | |||
end of the SFC into each network or from the controller. | end of the SFC into each network or from the controller. | |||
If dynamic signaling is performed, and a bidirectional SFC set is | If dynamic signaling is performed, and a bidirectional SFC set is | |||
configured, and the gateways to the networks connected via the SFC | configured, and the gateways to the networks connected via the SFC | |||
exchange routes, steps must be taken to ensure that routes to both | exchange routes, steps must be taken to ensure that routes to both | |||
networks do not get advertised from both ends of the SFC set by re- | networks do not get advertised from both ends of the SFC set by re- | |||
origination. This can be achieved if a new BGP Extended Community is | origination. This can be achieved if a new BGP Extended Community is | |||
implemented to control re-origination. When a route is re- | implemented to control re-origination. When a route is re-originated, | |||
originated, the RTs of the re-originated routes are appended to the | the RTs of the re-originated routes are appended to the new Route- | |||
new RT-Record Extended Community, and if the RT for the route | Target Record Extended Community, and if the RT for the route already | |||
already exists in the Extended Community, the route is not re- | exists in the Extended Community, the route is not re-originated (see | |||
originated (see Section 9.1). | Section 9.1). | |||
2.8.6 Dynamic Re-Advertisements in Intermediate systems | 2.8.6 Dynamic Re-Advertisements in Intermediate systems | |||
The intermediate routing systems attached to the service instances | The intermediate routing systems attached to the service instances | |||
may also use the dynamic signaling technique from the previous | may also use the dynamic signaling technique from the previous | |||
section to re-advertise received routes up the chain. In this case, | section to re-advertise received routes up the chain. In this case, | |||
the ingress and egress VRFs are combined into one; and a local | the ingress and egress VRFs are combined into one; and a local | |||
route-policy ensures the re-advertised routes are associated with | route-policy ensures the re-advertised routes are associated with | |||
labels that direct incoming traffic directly to the attached service | labels that direct incoming traffic directly to the attached service | |||
instances on that routing system. | instances on that routing system. | |||
2.9 Layer-2 Virtual Networks and Service Functions | 2.9 Layer-2 Virtual Networks and Service Functions | |||
There are SFs that operate at layer-2, in a transparent mode, and | There are SFs that operate at layer-2, in a transparent mode, and | |||
forward traffic based on the MAC DA. When such a SF is present in | forward traffic based on the MAC DA. When such a SF is present in the | |||
the SFC, the procedures at the routing system are modified slightly. | SFC, the procedures at the routing system are modified slightly. In | |||
In this case, the IP address associated with the SF instance (and | this case, the IP address associated with the SF instance (and used | |||
used as the next-hop of routes in the above procedures) is actually | as the next-hop of routes in the above procedures) is actually the | |||
the one assigned to the routing system interface attached to the | one assigned to the routing system interface attached to the other | |||
other end of the SF instance, or it could be a virtual IP address | end of the SF instance, or it could be a virtual IP address logically | |||
logically associated with the service function with a next-hop of | associated with the service function with a next-hop of the other | |||
the other routing system interface. The routing system interface | routing system interface. The routing system interface uses distinct | |||
uses distinct interface MAC addresses. This allows the current | interface MAC addresses. This allows the current scheme to be | |||
scheme to be supported, while allowing the transparent service | supported, while allowing the transparent service function to work | |||
function to work using its existing behavior. | using its existing behavior. | |||
A SFC may be also be set up between end systems or network segments | A SFC may be also be set up between end systems or network segments | |||
within the same Layer-2 bridged network. In this case, applying the | within the same Layer-2 bridged network. In this case, applying the | |||
procedures described earlier, the segments or groups of end systems | procedures described earlier, the segments or groups of end systems | |||
are placed in distinct Layer-2 virtual networks, which are then then | are placed in distinct Layer-2 virtual networks, which are then then | |||
inter-connected via a sequence of intermediate Layer-2 virtual | inter-connected via a sequence of intermediate Layer-2 virtual | |||
networks that form the links in the SFC. Each virtual network maps | networks that form the links in the SFC. Each virtual network maps to | |||
to a pair of ingress and egress MAC VRFs on the routing systems to | a pair of ingress and egress MAC VRFs on the routing systems to which | |||
which the SF instances are attached. The routing systems at the ends | the SF instances are attached. The routing systems at the ends of the | |||
of the SFC will advertise the locally learnt or installed MAC | SFC will advertise the locally learnt or installed MAC entries using | |||
entries using BGP-EVPN type-2 routes, which will get installed in | BGP-EVPN type-2 routes, which will get installed in the MAC VRFs at | |||
the MAC VRFs at the other end. The intermediate systems may use | the other end. The intermediate systems may use default MAC routes | |||
default MAC routes installed in the ingress and egress MAC VRFs, or | installed in the ingress and egress MAC VRFs, or the other variations | |||
the other variations described earlier in this document. | described earlier in this document. | |||
2.10 Header Transforming Service Functions | 2.10 Header Transforming Service Functions | |||
If a service function performs an action that changes the source | If a service function performs an action that changes the source | |||
address in the packet header (e.g., NAT), the routes that were | address in the packet header (e.g., NAT), the routes that were | |||
installed as described above may not support reverse flow traffic. | installed as described above may not support reverse flow traffic. | |||
The solution to this is for the controller modify the routes in the | The solution to this is for the controller modify the routes in the | |||
reverse direction to direct traffic into instances of the | reverse direction to direct traffic into instances of the | |||
transforming service function. The original routes with a source | transforming service function. The original routes with a source | |||
skipping to change at page 25, line 26 ¶ | skipping to change at page 25, line 26 ¶ | |||
address could be mapped to. In the case of network address | address could be mapped to. In the case of network address | |||
translation, this would correspond to the NAT pool. | translation, this would correspond to the NAT pool. | |||
3 Load Balancing Along a Service Function Chain | 3 Load Balancing Along a Service Function Chain | |||
One of the key concepts driving NFV [NFVE2E]is the idea that each | One of the key concepts driving NFV [NFVE2E]is the idea that each | |||
service function along an SFC can be separately scaled by changing | service function along an SFC can be separately scaled by changing | |||
the number of service function instances that implement it. This | the number of service function instances that implement it. This | |||
requires that load balancing be performed before entry into each | requires that load balancing be performed before entry into each | |||
service function. In this architecture, load balancing is performed | service function. In this architecture, load balancing is performed | |||
in either or both of egress and ingress VRFs depending on the type | in either or both of egress and ingress VRFs depending on the type of | |||
of load balancing being performed, and if more than one service | load balancing being performed, and if more than one service instance | |||
instance is connected to the same ingress VRF. | is connected to the same ingress VRF. | |||
3.1 SF Instances Connected to Separate VRFs | 3.1 SF Instances Connected to Separate VRFs | |||
If SF instances implementing a service in an SFC are each connected | If SF instances implementing a service in an SFC are each connected | |||
to separate VRFs(e.g. instances are connected to different routers | to separate VRFs(e.g. instances are connected to different routers or | |||
or are running on different hosts), load balancing is performed in | are running on different hosts), load balancing is performed in the | |||
the egress VRFs of the previous service, or in the VRF that is the | egress VRFs of the previous service, or in the VRF that is the entry | |||
entry to the SFC. The controller distributes BGP multi-path routes | to the SFC. The controller distributes BGP multi-path routes to the | |||
to the egress VRFs. The destination prefix of each route is the | egress VRFs. The destination prefix of each route is the ultimate | |||
ultimate destination network, or its representative aggregate or | destination network, or its representative aggregate or default. The | |||
default. The next-hops in the ECMP set are BGP next-hops of the | next-hops in the ECMP set are BGP next-hops of the service instances | |||
service instances attached to ingress VRFs of the next service in | attached to ingress VRFs of the next service in the SFC. The load | |||
the SFC. The load balancing corresponds to BGP Multipath, which | balancing corresponds to BGP Multipath, which requires that the route | |||
requires that the route distinguishers for each route are distinct | distinguishers for each route are distinct in order to recognize that | |||
in order to recognize that distinct paths should be used. Hence, | distinct paths should be used. Hence, each VRF in a distributed, SFC | |||
each VRF in a distributed, SFC environment should have a unique | environment should have a unique route distinguisher. | |||
route distinguisher. | ||||
+------+ +-------------------------+ | +------+ +-------------------------+ | |||
O----|SFI-11|---O |--- Data plane connection| | O----|SFI-11|---O |--- Data plane connection| | |||
// +------+ \\ |=== Encapsulation tunnel | | // +------+ \\ |=== Encapsulation tunnel | | |||
// \\ | O VRF | | // \\ | O VRF | | |||
// \\ | * Load balancer | | // \\ | * Load balancer | | |||
// \\ +-------------------------+ | // \\ +-------------------------+ | |||
// +------+ \\ | // +------+ \\ | |||
Net-A-->O*====O----|SFI-12|---O====O-->Net-B | Net-A-->O*====O----|SFI-12|---O====O-->Net-B | |||
\\ +------+ // | \\ +------+ // | |||
\\ // | \\ // | |||
\\ // | \\ // | |||
\\ // | \\ // | |||
skipping to change at page 26, line 27 ¶ | skipping to change at page 26, line 25 ¶ | |||
\\ +------+ // | \\ +------+ // | |||
O----|SFI-13|---O | O----|SFI-13|---O | |||
+------+ | +------+ | |||
Figure 6 - Egress VRF Load Balancing across SF Instances Connected | Figure 6 - Egress VRF Load Balancing across SF Instances Connected | |||
to Different VRFs | to Different VRFs | |||
In the diagram, above, a service function is implemented in three | In the diagram, above, a service function is implemented in three | |||
service instances each connected to separate VRFs. Traffic from | service instances each connected to separate VRFs. Traffic from | |||
Network-A arrives at VRF at the start of the SFC, and is load | Network-A arrives at VRF at the start of the SFC, and is load | |||
balanced across the service instances using a set of ECMP routes | balanced across the service instances using a set of ECMP routes with | |||
with next hops being the addresses of the routing systems containing | next hops being the addresses of the routing systems containing the | |||
the ingress VRFs and with labels that identify the ingress | ingress VRFs and with labels that identify the ingress interfaces of | |||
interfaces of the service instances. | the service instances. | |||
3.2 SF Instances Connected to the Same VRF | 3.2 SF Instances Connected to the Same VRF | |||
When SF instances implementing a service in an SFC are connected to | When SF instances implementing a service in an SFC are connected to | |||
the same ingress VRF, load balancing is performed in the ingress VRF | the same ingress VRF, load balancing is performed in the ingress VRF | |||
across the service instances connected to it. The controller will | across the service instances connected to it. The controller will | |||
install routes in the ingress VRF to the destination network with | install routes in the ingress VRF to the destination network with the | |||
the interfaces connected to each service instance as next hops. The | interfaces connected to each service instance as next hops. The | |||
ingress VRF will then use ECMP to load balance across the service | ingress VRF will then use ECMP to load balance across the service | |||
instances. | instances. | |||
+------+ +-------------------------+ | +------+ +-------------------------+ | |||
|SFI-11| |--- Data plane connection| | |SFI-11| |--- Data plane connection| | |||
+------+ |=== Encapsulation tunnel | | +------+ |=== Encapsulation tunnel | | |||
/ \ | O VRF | | / \ | O VRF | | |||
/ \ | * Load balancer | | / \ | * Load balancer | | |||
/ \ +-------------------------+ | / \ +-------------------------+ | |||
/ +------+ \ | / +------+ \ | |||
skipping to change at page 27, line 25 ¶ | skipping to change at page 27, line 25 ¶ | |||
\ / | \ / | |||
\ / | \ / | |||
+------+ | +------+ | |||
|SFI-13| | |SFI-13| | |||
+------+ | +------+ | |||
Figure 7 - Ingress VRF Load Balancing across SF Instances | Figure 7 - Ingress VRF Load Balancing across SF Instances | |||
Connected to the Same VRF | Connected to the Same VRF | |||
In the diagram, above, a service is implemented by three service | In the diagram, above, a service is implemented by three service | |||
instances that are connected to the same ingress and egress VRFs. | instances that are connected to the same ingress and egress VRFs. The | |||
The ingress VRF load balances across the ingress interfaces using | ingress VRF load balances across the ingress interfaces using ECMP, | |||
ECMP, and the egress traffic is aggregated in the egress VRF. | and the egress traffic is aggregated in the egress VRF. | |||
If forwarding labels that identify each SFI ingress interface are | If forwarding labels that identify each SFI ingress interface are | |||
used, and if the routes to each SF instance are advertised with | used, and if the routes to each SF instance are advertised with | |||
different route distinguishers, then it is possible to perform ECMP | different route distinguishers, then it is possible to perform ECMP | |||
load balancing at the routing instance at the beginning of the | load balancing at the routing instance at the beginning of the | |||
encapsulation tunnel (which could be the egress VRF of the previous | encapsulation tunnel (which could be the egress VRF of the previous | |||
SF in the SFC). | SF in the SFC). | |||
3.3 Combination of Egress and Ingress VRF Load Balancing | 3.3 Combination of Egress and Ingress VRF Load Balancing | |||
skipping to change at page 28, line 29 ¶ | skipping to change at page 28, line 29 ¶ | |||
Net-A-->O*====O----|SFI-13|---O*====O---|SFI-22|---O====O-->Net-B | Net-A-->O*====O----|SFI-13|---O*====O---|SFI-22|---O====O-->Net-B | |||
+------+ +------+ | +------+ +------+ | |||
^ ^ ^ ^ ^ ^ | ^ ^ ^ ^ ^ ^ | |||
| | | | | | | | | | | | | | |||
| Ingress Egress | | | | | Ingress Egress | | | | |||
| Ingress Egress | | | Ingress Egress | | |||
SFC Entry SFC Exit | SFC Entry SFC Exit | |||
Figure 8 - Load Balancing across SF Instances | Figure 8 - Load Balancing across SF Instances | |||
In Figure 8, above, an SFC is composed of two services implemented | In Figure 8, above, an SFC is composed of two services implemented by | |||
by three service instances and two service instances, respectively. | three service instances and two service instances, respectively. The | |||
The service instances SFI-11 and SFI-12 are connected to the same | service instances SFI-11 and SFI-12 are connected to the same ingress | |||
ingress and egress VRFs, and all the other service instances are | and egress VRFs, and all the other service instances are connected to | |||
connected to separate VRFs. | separate VRFs. | |||
Traffic entering the SFC from Network-A is load balanced across the | Traffic entering the SFC from Network-A is load balanced across the | |||
ingress VRFs of the first service function by the chain entry VRF, | ingress VRFs of the first service function by the chain entry VRF, | |||
and then load balanced again across the ingress interfaces of SFI-11 | and then load balanced again across the ingress interfaces of SFI-11 | |||
and SFI-12 by the shared ingress VRF. Note that use of standard ECMP | and SFI-12 by the shared ingress VRF. Note that use of standard ECMP | |||
will lead to an uneven distribution of traffic between the three | will lead to an uneven distribution of traffic between the three | |||
service instances (25% to SFI-11, 25% to SFI-12, and 50% to SFI-13). | service instances (25% to SFI-11, 25% to SFI-12, and 50% to SFI-13). | |||
This issue can be mitigated through the use of BGP link bandwidth | This issue can be mitigated through the use of BGP link bandwidth | |||
extended community [draft-ietf-idr-link-bandwidth]. As described in | extended community [draft-ietf-idr-link-bandwidth]. As described in | |||
the previous section, if a next-hop forwarding label is used, | the previous section, if a next-hop forwarding label is used, another | |||
another way to mitigate this effect would be to advertise routes to | way to mitigate this effect would be to advertise routes to each SF | |||
each SF instance connected to a VRF with a different route | instance connected to a VRF with a different route distinguisher. | |||
distinguisher. | ||||
After traffic passes through the first set of service instances, it | After traffic passes through the first set of service instances, it | |||
is load balanced in each of the egress VRFs of the first set of | is load balanced in each of the egress VRFs of the first set of | |||
service instances across the ingress VRFs of the next set of service | service instances across the ingress VRFs of the next set of service | |||
instances. | instances. | |||
3.4 Forward and Reverse Flow Load Balancing | 3.4 Forward and Reverse Flow Load Balancing | |||
This section discusses requirements in load balancing for forward | This section discusses requirements in load balancing for forward and | |||
and reverse paths when stateful service functions are deployed. | reverse paths when stateful service functions are deployed. | |||
3.4.1 Issues with Equal Cost Multi-Path Routing | 3.4.1 Issues with Equal Cost Multi-Path Routing | |||
As discussed in the previous sections, load balancing in the forward | As discussed in the previous sections, load balancing in the forward | |||
SFC in the above example can automatically occur with standard BGP, | SFC in the above example can automatically occur with standard BGP, | |||
if multiple equal cost routes to Network-B are installed into all | if multiple equal cost routes to Network-B are installed into all the | |||
the ingress VRFs, and each route directs traffic through a different | ingress VRFs, and each route directs traffic through a different | |||
service function instance in the next set. The multiple BGP routes | service function instance in the next set. The multiple BGP routes in | |||
in the routing table will translate to Equal Cost Multi-Path in the | the routing table will translate to Equal Cost Multi-Path in the | |||
forwarding table. The hash used in the load balancing algorithm (per | forwarding table. The hash used in the load balancing algorithm (per | |||
packet, per flow or per prefix) is implementation specific. | packet, per flow or per prefix) is implementation specific. | |||
If a service function is stateful, it is required that forward flows | If a service function is stateful, it is required that forward flows | |||
and reverse flows always pass through the same service function | and reverse flows always pass through the same service function | |||
instance. Standard ECMP does not provide this capability, since the | instance. Standard ECMP does not provide this capability, since the | |||
hash calculation will see different input data for the same flow in | hash calculation will see different input data for the same flow in | |||
the forward and reverse directions (since the source and destination | the forward and reverse directions (since the source and destination | |||
fields are reversed). | fields are reversed). | |||
Additionally, if the number of SF instances changes, either | Additionally, if the number of SF instances changes, either | |||
increasing to expand capacity, or decreases (planned, or due to a SF | increasing to expand capacity, or decreases (planned, or due to a SF | |||
instance failure), the hash table in ECMP is recalculated, and most | instance failure), the hash table in ECMP is recalculated, and most | |||
flows will be directed to a different SF instance and user sessions | flows will be directed to a different SF instance and user sessions | |||
will be disrupted. | will be disrupted. | |||
There are a number of ways to satisfy the requirements of symmetric | There are a number of ways to satisfy the requirements of symmetric | |||
forward/reverse paths for flows and minimal disruption when SF | forward/reverse paths for flows and minimal disruption when SF | |||
instances are added to or removed from a set. Two techniques that | instances are added to or removed from a set. Two techniques that can | |||
can be employed are described in the following sections. | be employed are described in the following sections. | |||
3.4.2 Modified ECMP with Consistent Hash | 3.4.2 Modified ECMP with Consistent Hash | |||
Symmetric forwarding into each side of an SF instance set can be | Symmetric forwarding into each side of an SF instance set can be | |||
achieved with a small modification to ECMP if the packet headers are | achieved with a small modification to ECMP if the packet headers are | |||
preserved after passing through the SF instance set and assuming | preserved after passing through the SF instance set and assuming that | |||
that the same hash function, same hash salt and same ordering | the same hash function, same hash salt and same ordering association | |||
association of hash buckets to ECMP routes is used in both | of hash buckets to ECMP routes is used in both | |||
directions. Each packet's 5-tuple data is used to calculate which | ||||
hash bucket, and therefore which service instance, that the packet | hash bucket, and therefore which service instance, that the packet | |||
will be sent to, but the source and destination IP address and port | will be sent to, but the source and destination IP address and port | |||
information are swapped in the calculation in the reverse direction. | information are swapped in the calculation in the reverse direction. | |||
This method only requires that the list of available service | This method only requires that the list of available service function | |||
function instances is consistently maintained in load balance tables | instances is consistently maintained in load balance tables in all | |||
in all the routing systems rather than maintaining flow tables. This | the routing systems rather than maintaining flow tables. This | |||
requirement can be met by the use of a distinct VPN route for each | requirement can be met by the use of a distinct VPN route for each | |||
instance. | instance. | |||
In the SFC architecture described in this document, when SF | In the SFC architecture described in this document, when SF instances | |||
instances are added or removed, the controller is required to | are added or removed, the controller is required to install (or | |||
install (or remove) routes to the SF instances. The controller could | remove) routes to the SF instances. The controller could configure | |||
configure the load balancing function in VRFs that connect to each | the load balancing function in VRFs that connect to each added (or | |||
added (or removed) SF instance as part of the same network | removed) SF instance as part of the same network transaction as route | |||
transaction as route updates to ensure that the load balancer | updates to ensure that the load balancer configuration is | |||
configuration is synchronized with the set of SF instances. | synchronized with the set of SF instances. | |||
The consistent ordering among ECMP routes in the routing systems | The consistent ordering among ECMP routes in the routing systems | |||
could be achieved through configuration of the routing systems by | could be achieved through configuration of the routing systems by the | |||
the controller using, for instance, Netconf; or when the routes are | controller using, for instance, Netconf; or when the routes are | |||
signaled using BGP by the controller or a routing system, the order | signaled using BGP by the controller or a routing system, the order | |||
for a given instance can be sent in a new 'Consistent Hash Sort | for a given instance can be sent in a new 'Consistent Hash Sort | |||
Order' BGP Extended Community (defined in Section 9.2). | Order' BGP Extended Community (defined in Section 9.2). | |||
The effect of rehashing when SF instances are added or removed can | The effect of rehashing when SF instances are added or removed can be | |||
be minimized, or even eliminated using variations of the technique | minimized, or even eliminated using variations of the technique of | |||
of consistent hashing [consistent-hash]. Details are outside the | consistent hashing [consistent-hash]. Details are outside the scope | |||
scope of this document. | of this document. | |||
3.4.3 ECMP with Flow Table | 3.4.3 ECMP with Flow Table | |||
A second refinement that can ensure forward/reverse flow | A second refinement that can ensure forward/reverse flow consistency, | |||
consistency, and also provides stability when the number of SF | and also provides stability when the number of SF instances changes | |||
instances changes ('flow-stickiness'), is the use of dynamically | ('flow-stickiness'), is the use of dynamically configured IP flow | |||
configured IP flow tables in the VRFs. In this technique, flow | tables in the VRFs. In this technique, flow tables are used to ensure | |||
tables are used to ensure that existing flows are unaffected if the | that existing flows are unaffected if the number of ECMP routes | |||
number of ECMP routes changes, and that forward and reverse traffic | changes, and that forward and reverse traffic passes through the same | |||
passes through the same SF instance in each set of SF instances | SF instance in each set of SF instances implementing a service | |||
implementing a service function. | function. | |||
The flow tables are set up as follows: | The flow tables are set up as follows: | |||
1. User traffic with a new 5-tuple enters an egress VRF from a | 1. User traffic with a new 5-tuple enters an egress VRF from a | |||
connected SF instance. | connected SF instance. | |||
2. The VRF calculates the ECMP hash across available routes | 2. The VRF calculates the ECMP hash across available routes | |||
(i.e., ECMP group) to the ingress interfaces of the SF | (i.e., ECMP group) to the ingress interfaces of the SF | |||
instances in the next SF instance set. The consistent hash | instances in the next SF instance set. The consistent hash | |||
technique described in section 3.4.2 must be used here and | technique described in section 3.4.2 must be used here and | |||
in subsequent steps. | in subsequent steps. | |||
3. The VRF creates a new flow entry for the 5-tuple of the new | 3. The VRF creates a new flow entry for the 5-tuple of the new | |||
traffic with the next-hop being the chosen downstream ECMP | traffic with the next-hop being the chosen downstream ECMP | |||
group member (determined in the step 2. above) . All | group member (determined in the step 2. above) . All | |||
subsequent packets for the same flow will be forwarded | subsequent packets for the same flow will be forwarded using | |||
using flow lookup and, hence, will use the same next-hop. | flow lookup and, hence, will use the same next-hop. | |||
4. The encapsulated packet arrives in the routing system that | 4. The encapsulated packet arrives in the routing system that | |||
hosts the ingress VRF for the selected SF instance. | hosts the ingress VRF for the selected SF instance. | |||
5. The ingress VRF of the next service instance determines if | 5. The ingress VRF of the next service instance determines if | |||
the packet came from a routing system that is in an ECMP | the packet came from a routing system that is in an ECMP | |||
group in the reverse direction(i.e., from this ingress VRF | group in the reverse direction(i.e., from this ingress VRF | |||
back to the previous set of SF instances). | back to the previous set of SF instances). | |||
6. If an ECMP group is found, the ingress VRF creates a flow | 6. If an ECMP group is found, the ingress VRF creates a flow | |||
entry for the reversed 5-tuple with next-hop of the tunnel | entry for the reversed 5-tuple with next-hop of the tunnel | |||
on which traffic arrived. This is for the traffic in the | on which traffic arrived. This is for the traffic in the | |||
reverse direction. | reverse direction. | |||
7. If multiple SF instances are connected to the ingress VRF, | 7. If multiple SF instances are connected to the ingress VRF, | |||
the ECMP consistent hash is used to choose which one to | the ECMP consistent hash is used to choose which one to send | |||
send the traffic into. | the traffic into. | |||
8. A forward flow table entry is created for the traffic's 5- | 8. A forward flow table entry is created for the traffic's 5- | |||
tuple with next hop of the interface of the SF instance | tuple with next hop of the interface of the SF instance | |||
chosen in the previous step. | chosen in the previous step. | |||
9. The packet is sent into the selected SF instance. | 9. The packet is sent into the selected SF instance. | |||
The above method ensures that forward and reverse flows pass through | The above method ensures that forward and reverse flows pass through | |||
the same SF instances, and that if the number of ECMP routes changes | the same SF instances, and that if the number of ECMP routes changes | |||
when SF instances are added or removed, all existing flows will | when SF instances are added or removed, all existing flows will | |||
continue to flow through the same SF instances, but new flows will | continue to flow through the same SF instances, but new flows will | |||
use the new ECMP hash. The only flows affected will be those that | use the new ECMP hash. The only flows affected will be those that | |||
were passing through an SF instance that was removed, and those will | were passing through an SF instance that was removed, and those will | |||
be spread among the remaining SF instances using the updated ECMP | be spread among the remaining SF instances using the updated ECMP | |||
hash. | hash. | |||
If the consistent hash algorithm is used in both directions, then | If the consistent hash algorithm is used in both directions, then | |||
only the forwarding flow entries would be required, and would be | only the forwarding flow entries would be required, and would be | |||
built independently in each direction. If distinct VPN routes with | next-hop forwarding labels are used, then only the flow table in step | |||
next-hop forwarding labels are used, then only the flow table in | 3 is sufficient to provide flow stickiness. | |||
step 3 is sufficient to provide flow stickiness. | ||||
3.4.4 Dealing with different hash algorithms in an SFC | 3.4.4 Dealing with different hash algorithms in an SFC | |||
In some cases, there will be two or more hash algorithms in | In some cases, there will be two or more hash algorithms in | |||
forwarders along an SFC. E.g. when a physical router is at the entry | forwarders along an SFC. E.g. when a physical router is at the entry | |||
and exit of the chain, and virtual forwarders are used within the | and exit of the chain, and virtual forwarders are used within the | |||
chain. Forward and reverse flows will mostly not pass through the | chain. Forward and reverse flows will mostly not pass through the | |||
same SF instances of the first SF, and the SFC will not operate as | same SF instances of the first SF, and the SFC will not operate as | |||
intended if the first SF is stateful. It may be impractical, or | intended if the first SF is stateful. It may be impractical, or | |||
prohibitively expensive to implement the flow table-based methods | prohibitively expensive to implement the flow table-based methods | |||
described above to achieve flow stability and symmetry. This issue | described above to achieve flow stability and symmetry. This issue | |||
can be mitigated by ensuring that the first SF is not stateful, or | can be mitigated by ensuring that the first SF is not stateful, or by | |||
by placing a null SF between the physical router and the first | placing a null SF between the physical router and the first actual SF | |||
actual SF in the SFC. This ensures that the hash method on both | in the SFC. This ensures that the hash method on both sides of | |||
sides of stateful service instances is the same, and the SFC will | stateful service instances is the same, and the SFC will operate with | |||
operate with flow stability and symmetry if the methods described | flow stability and symmetry if the methods described above are | |||
above are employed. | employed. | |||
4 Steering into SFCs Using a Classifier | 4 Steering into SFCs Using a Classifier | |||
In many applications of SFCs, a classifier will be used to direct | In many applications of SFCs, a classifier will be used to direct | |||
traffic into SFCs. The classifier inspects the first or first few | traffic into SFCs. The classifier inspects the first or first few | |||
packets in a flow to determine which SFC the flow should be sent | packets in a flow to determine which SFC the flow should be sent | |||
into. The decision criteria can be based on just the IP 5-tuple of | into. The decision criteria can be based on just the IP 5-tuple of | |||
the header (i.e filter-based forwarding), or could involve analysis | the header (i.e filter-based forwarding), or could involve analysis | |||
of the payload of packets using deep packet inspection. Integration | of the payload of packets using deep packet inspection. Integration | |||
with a subscriber management system such as PCRF or AAA may be | with a subscriber management system such as PCRF or AAA may be | |||
skipping to change at page 33, line 33 ¶ | skipping to change at page 33, line 33 ¶ | |||
| +---+ +---+ | | | +---+ +---+ | | |||
| | | | | | |||
| +---+ +---+ +---+ | | | +---+ +---+ +---+ | | |||
+--+ X +---+ Y +---+ Z +-+ | +--+ X +---+ Y +---+ Z +-+ | |||
+---+ +---+ +---+ | +---+ +---+ +---+ | |||
Figure 9 - Subscriber/Application-Aware Steering with a Classifier | Figure 9 - Subscriber/Application-Aware Steering with a Classifier | |||
In the diagram, the classifier receives subscriber traffic and sends | In the diagram, the classifier receives subscriber traffic and sends | |||
the traffic out of one of two logical interfaces, depending on | the traffic out of one of two logical interfaces, depending on | |||
classification criteria. The logical interfaces of the classifier | classification criteria. The logical interfaces of the classifier are | |||
are connected to VRFs in a router that are entries to two SFCs | connected to VRFs in a router that are entries to two SFCs (shown as | |||
(shown as O in the diagram). | O in the diagram). | |||
In this scenario, the entry VRF for each chain does not advertise | In this scenario, the entry VRF for each chain does not advertise the | |||
the destination network prefixes and the modified method of setting | destination network prefixes and the modified method of setting | |||
prefixes, described in Section 2.8.2 can be employed. Also, the | prefixes, described in Section 2.8.2 can be employed. Also, the exit | |||
exit VRF for each SFC does not peer with a gateway or proxy node in | VRF for each SFC does not peer with a gateway or proxy node in the | |||
the destination network and packets are forwarded using IP lookup in | destination network and packets are forwarded using IP lookup in the | |||
the main routing table or in a VRF that the exit traffic from the | main routing table or in a VRF that the exit traffic from the SFCs is | |||
SFCs is directed into (shown as X in the diagram). A flow table may | directed into (shown as X in the diagram). A flow table may be | |||
be required to ensure that reverse traffic is sent into the correct | required to ensure that reverse traffic is sent into the correct SFC. | |||
SFC. | ||||
An alternative would be where the classifier is itself a | An alternative would be where the classifier is itself a distributed, | |||
distributed, virtualized service function, but with multiple egress | virtualized service function, but with multiple egress interfaces. In | |||
interfaces. In that case, each virtual classifier instance could be | that case, each virtual classifier instance could be entry VRF would | |||
attached to a set of VRFs that connect to different SFCs. Each chain | load balance across the first SF instance set in its SFC. The reverse | |||
entry VRF would load balance across the first SF instance set in its | flow table mechanism described in Section 3.4.3 could be employed to | |||
SFC. The reverse flow table mechanism described in Section 3.4.3 | ensure that flows return to the originating classifier instance which | |||
could be employed to ensure that flows return to the originating | may maintain subscriber context and perform charging and accounting. | |||
classifier instance which may maintain subscriber context and | ||||
perform charging and accounting. | ||||
5 External Domain Co-ordination | 5 External Domain Co-ordination | |||
It is likely that SFCs will be managed as a separate administrative | It is likely that SFCs will be managed as a separate administrative | |||
domain from the networks that they receive traffic from, and send | domain from the networks that they receive traffic from, and send | |||
traffic to. If the connected networks use BGP for route | traffic to. If the connected networks use BGP for route distribution, | |||
distribution, the controller in the SFC domain can join the network | the controller in the SFC domain can join the network domains by | |||
domains by creating BGP peering sessions with routing systems or | creating BGP peering sessions with routing systems or route | |||
route reflectors in those network domains to exchange VPN routes, or | reflectors in those network domains to exchange VPN routes, or with | |||
with local border routers that peer with the external domains. While | local border routers that peer with the external domains. While a | |||
a controller can modify route targets for the VRFs within its SFC | controller can modify route targets for the VRFs within its SFC | |||
domain, it is likely to not have any control over the external | domain, it is likely to not have any control over the external | |||
networks with which it is peering. Hence, the design does not assume | networks with which it is peering. Hence, the design does not assume | |||
that the RTs of external network domains can be modified by the | that the RTs of external network domains can be modified by the | |||
controller. It may however learn those RTs and use them in it's | controller. It may however learn those RTs and use them in it's | |||
modified route advertisements. | modified route advertisements. | |||
In order to steer traffic from external network domains into an SFC, | In order to steer traffic from external network domains into an SFC, | |||
the controller will advertise a destination network's prefixes into | the controller will advertise a destination network's prefixes into | |||
the peering source network domain with a BGP next-hop and label | the peering source network domain with a BGP next-hop and label | |||
associated with the SFC entry point that may be on a routing system | associated with the SFC entry point that may be on a routing system | |||
attached to the first SF instance. This advertisement may be over | attached to the first SF instance. This advertisement may be over | |||
regular MP-BGP/VPN peering which assumes existing standard VPN | regular MP-BGP/VPN peering which assumes existing standard VPN | |||
routing/forwarding behavior on the network domain's routers | routing/forwarding behavior on the network domain's routers | |||
(PEs/ASBRs). The controller can learn routes to networks in external | (PEs/ASBRs). The controller can learn routes to networks in external | |||
domains at the egress of an SFC and advertise routes to those | domains at the egress of an SFC and advertise routes to those network | |||
network into other external domains using the first ingress routing | into other external domains using the first ingress routing instance | |||
instance as the next hop thus allowing dynamic steering through re- | as the next hop thus allowing dynamic steering through re- | |||
origination of routes. | origination of routes. | |||
An operational benefit of this approach is that the SFC topology | An operational benefit of this approach is that the SFC topology | |||
within a domain need not be exposed to other domains. Additionally, | within a domain need not be exposed to other domains. Additionally, | |||
using non-specific routes inside an SFC, as described in Section | using non-specific routes inside an SFC, as described in Section | |||
2.8.1, means that new networks can be attached to a SFC without | 2.8.1, means that new networks can be attached to a SFC without | |||
needing to configure prefixes inside the chain. | needing to configure prefixes inside the chain. | |||
The controller will typically remove the destination network's RTs | The controller will typically remove the destination network's RTs | |||
and replace them with the RTs of the source network while | and replace them with the RTs of the source network while advertising | |||
advertising the modified routes. Alternatively, an external domain | the modified routes. Alternatively, an external domain may be | |||
may be provisioned with an additional export-only RT and an import- | provisioned with an additional export-only RT and an import- only RT | |||
only RT that the controller can use. | that the controller can use. | |||
6 Fine-grained steering using BGP Flow-Spec | 6 Fine-grained steering using BGP Flow-Spec | |||
When steering traffic from an external network domain into an SFC | When steering traffic from an external network domain into an SFC | |||
based on attributes of the packet flow, BGP Flow-spec can be used as | based on attributes of the packet flow, BGP Flow-spec can be used as | |||
a signaling option. | a signaling option. | |||
In this case, the controller can advertise one or more flow-spec | In this case, the controller can advertise one or more flow-spec | |||
routes into the entry VRF with the appropriate Service-topology-RT | routes into the entry VRF with the appropriate Service-topology-RT | |||
for the SFC. Alternatively, it can use the procedures described in | for the SFC. Alternatively, it can use the procedures described in | |||
RFC5575 or [flowspec-redirect-ip] on the gateway router to redirect | RFC5575 or [flowspec-redirect-ip] on the gateway router to redirect | |||
traffic towards the first SF. | traffic towards the first SF. | |||
skipping to change at page 35, line 39 ¶ | skipping to change at page 35, line 34 ¶ | |||
domains there may be a requirement to exchange information between | domains there may be a requirement to exchange information between | |||
controllers. Again, a BGP session between controllers can be used to | controllers. Again, a BGP session between controllers can be used to | |||
exchange route information as described in the previous sections and | exchange route information as described in the previous sections and | |||
allow such domain spanning SFCs to be created. | allow such domain spanning SFCs to be created. | |||
8 Coordination Between SF Instances and Controller using BGP | 8 Coordination Between SF Instances and Controller using BGP | |||
In many cases, the configuration of SF instance determines its | In many cases, the configuration of SF instance determines its | |||
network behavior. E.g. when NAT pools are set up, or when an SSL | network behavior. E.g. when NAT pools are set up, or when an SSL | |||
gateway is configured with a set of enterprise IP addresses to use. | gateway is configured with a set of enterprise IP addresses to use. | |||
In these cases, the addresses that will be used by the SFs need to | In these cases, the addresses that will be used by the SFs need to be | |||
be known in the networks connecting to them in order that traffic | known in the networks connecting to them in order that traffic can be | |||
can be properly routed. When SFCs are involved, this means that the | properly routed. When SFCs are involved, this means that the | |||
controller has to be notified when such configuration changes are | controller has to be notified when such configuration changes are | |||
made in SF instances. Sometimes, the changes will be made by end- | made in SF instances. Sometimes, the changes will be made by end- | |||
customers and it is desirable the controller adjust the SFC routing | ||||
configuration automatically when the change is made, and without | configuration automatically when the change is made, and without | |||
customers needing to notify the service provider via a portal, for | customers needing to notify the service provider via a portal, for | |||
instance, or requiring development of integration modules linking | instance, or requiring development of integration modules linking the | |||
the SF instances and the controller. | SF instances and the controller. | |||
One option for automatic notification for SFs that support BGP is | One option for automatic notification for SFs that support BGP is for | |||
for the connected forwarding system (physical or virtual SFF) to | the connected forwarding system (physical or virtual SFF) to also | |||
also support BGP, and for SF instances to be configured to peer with | support BGP, and for SF instances to be configured to peer with the | |||
the SFF. When changes are made to the configuration of a SF | SFF. When changes are made to the configuration of a SF instance, | |||
instance, that for example, the SF will accept packets from a | that for example, the SF will accept packets from a particular | |||
particular network prefix on one of its interfaces, the SF instance | network prefix on one of its interfaces, the SF instance will send a | |||
will send a BGP route update to the SFF it is connected to and which | BGP route update to the SFF it is connected to and which it has a BGP | |||
it has a BGP session with. The controller can then adjust the routes | session with. The controller can then adjust the routes along SFCs to | |||
along SFCs to ensure that packets with destinations in the new | ensure that packets with destinations in the new prefix reach the | |||
prefix reach the reconfigured SF instance. | reconfigured SF instance. | |||
BGP could also be used to signal from the controller to a SF | BGP could also be used to signal from the controller to a SF instance | |||
instance that certain traffic should be sent out from a particular | that certain traffic should be sent out from a particular interface. | |||
interface. This could be used to direct suspect traffic to a | This could be used to direct suspect traffic to a security scrubbing | |||
security scrubbing center,for example. | center,for example. | |||
Note that the SFF need not support a BGP stack itself; it can proxy | Note that the SFF need not support a BGP stack itself; it can proxy | |||
BGP messages to the controller which will support such a stack. | BGP messages to the controller which will support such a stack. | |||
9 BGP Extended Communities | 9 BGP Extended Communities | |||
9.1 Route-Target_RECORD | 9.1 Route-Target Record | |||
Route-Target Record (RT-Record) is an optional, transitive BGP | Route-Target Record (RT Record) is defined as a transitive BGP | |||
attribute of Type code TBD. It contains an RT value representing one | Extended Community, that contains a Route-Target value representing | |||
of the RTs that the route has been attached with previously, and | one of the RTs that the route has been attached with previously, and | |||
which may no longer be attached to the route on subsequent re- | which may no longer be attached to the route on subsequent re- | |||
advertisements (see Section 2.8.5). It is encoded as follows: | advertisements (see Section 2.8.5). | |||
0 1 2 3 | A Sub-Type code 0x13 is assigned in the three BGP Extended Community | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | types - Two-Octet AS-Specific 0x00, IPv4-Address-Specific 0x01 and | |||
Four-Octet AS-Specific 0x02. A Sub-Type code 0x0013 is also assigned | ||||
in the BGP Transitive IPv6 Address-Specific Extended Community. | ||||
The Extended Community is encoded as follows: | ||||
0 1 2 3 | ||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|Attr Type Code | | | | 0x00,0x01,0x02| Sub-Type=0x13 | Route-Target Value | | |||
+-+-+-+-+-+-+-+-+ Route-Target Extended Community Value + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| (8B or 20B) | | | Route-Target Value contd. | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Attr Type Code : The BGP Attribute Type Code for the Route-Target | ||||
It can be 16 for RFC 4360 Extended Community, or | ||||
25 for IPv6 Address Specific Extended Community | ||||
Value : It contains a Route-Target Extended Community of | The Type field of the BGP Route-Target Extended Community is | |||
one of the types specified in RFC 4360 or RFC | copied into the Type field of the RT Record Extended Community. | |||
5701 | ||||
The Value field (Global Administrator and Local Administrator) of | ||||
the Route-Target Extended Community is copied into the Route- | ||||
Target Value field of the RT Record Extended Community. | ||||
When comparing a RT-Record to a Route-Target, only the Type and | ||||
the Route-Target value fields are used in the comparison. The sub- | ||||
type field is masked out. | ||||
When a speaker re-originates a route that contains one or more | When a speaker re-originates a route that contains one or more | |||
RTs, it must add each of these RTs as RT-Record extended communities | RTs, it must add each of these RTs as RT Record extended communities | |||
of the re-originated route. | in the re-originated route. | |||
A speaker must not re-originate a route to an RT, if this RT is | A speaker must not re-originate a route with an RT, if this RT is | |||
present as an RT-Record extended community. | already present as an RT Record extended community. | |||
9.2 CONSISTENT_HASH_SORT_ORDER | 9.2 CONSISTENT_HASH_SORT_ORDER | |||
Consistent Hash Sort Order is an optional transitive Opaque BGP | Consistent Hash Sort Order is an optional transitive Opaque BGP | |||
Extended Community of type TBD, defined as follows: | Extended Community of sub-type 0x14, defined as follows: | |||
Type Field : The value of the high-order octet is determined by | Type Field : The value of the high-order octet is determined by | |||
provisioning as per [RFC4360]. The value of the low- | provisioning as per [RFC4360]. The value of the low- | |||
order octet is to be assigned by IANA from the | order octet is assigned as 0x14 by IANA from the | |||
Transitive Opaque Extended Community Sub-Types | Transitive Opaque Extended Community Sub-Types registry. | |||
registry. | ||||
Value Field : The value field contains a Sort Order sub-field that | Value Field : The value field contains a Sort Order sub-field that | |||
indicates the relative order of this route among the | indicates the relative order of this route among the | |||
ECMP set for the prefix, to be sorted in increasing | ECMP set for the prefix, to be sorted in increasing | |||
order. It is a 32-bit unsigned integer. The field is | order. It is a 32-bit unsigned integer. The field is | |||
encoded as shown below: | encoded as shown below: | |||
+------------------------------+ | +------------------------------+ | |||
| Sort Order (4 octets) | | | Sort Order (4 octets) | | |||
+------------------------------+ | +------------------------------+ | |||
| Reserved (2 octets) | | | Reserved (2 octets) | | |||
+------------------------------+ | +------------------------------+ | |||
10 Summary and Conclusion | 10 Summary and Conclusion | |||
The architecture for service function chains described in this | The architecture for service function chains described in this | |||
document uses virtual networks implemented as overlays in order to | document uses virtual networks implemented as overlays in order to | |||
create service function chains. The virtual networks use standards- | create service function chains. The virtual networks use standards- | |||
based encapsulation tunneling, such as MPLS over GRE/UDP or VXLAN, | based encapsulation tunneling, such as MPLS over GRE/UDP or VXLAN, to | |||
to transport packets into an SFC and between service function | transport packets into an SFC and between service function instances | |||
instances without routing in the user address space. Two methods of | without routing in the user address space. Two methods of installing | |||
installing routes to form service chains are described. | routes to form service chains are described. | |||
In environments with physical routers, a controller may operate in | In environments with physical routers, a controller may operate in | |||
tandem with existing BGP route reflectors, and would contain the SFC | tandem with existing BGP route reflectors, and would contain the SFC | |||
topology model, and the ability to install the local static | toology model, and the ability to install the local static interface | |||
interface routes to SF instances. In a virtualized environment, the | routes to SF instances. In a virtualized environment, the controller | |||
controller can emulate route refection internally and simply install | can emulate route refection internally and simply install required | |||
required routes directly without advertisements occurring. | routes directly without advertisements occurring. | |||
11 Security Considerations | 11 Security Considerations | |||
The security considerations for SFCs are broadly similar to those | The security considerations for SFCs are broadly similar to those | |||
concerning the data, control and management planes of any device | concerning the data, control and management planes of any device | |||
placed in a network. Details are out of scope for this document. | placed in a network. Details are out of scope for this document. | |||
12 IANA Considerations | 12 IANA Considerations | |||
The new BGP Extended Communities in Section 9 require a type | The new BGP Extended Communities in Section 9 are assigned types as | |||
allocation in the IANA registry for extended communities. | defined above in the IANA registry for extended communities. | |||
13 Acknowledgments | ||||
This document was prepared using 2-Word-v2.0.template.dot. | ||||
This document is based on earlier drafts [draft-rfernando-bess- | ||||
service-chaining] and [draft-mackie-sfc-using-virtual-networking]. | ||||
The authors would like to thank D. Daino, D.R. Lopez, D. Bernier, W. | ||||
Haeffner, A. Farrel, L. Fang, and N. So, for their contributions to | ||||
the earlier drafts. The authors would also like to thank the | ||||
following individuals for their review and feedback on the original | ||||
proposals: E. Rosen, J. Guchard, P. Quinn, P. Bosch, D. Ward, A. | ||||
Ganesan, N. Seth, G. Pildush and N. Bitar. The authors also thank | ||||
Wim Henderickx for his useful suggestions on several aspects of the | ||||
draft. | ||||
14 Informative References | 13 Informative References | |||
[NFVE2E] "Network Functions Virtualisation: End to End | [NFVE2E] "Network Functions Virtualisation: End to End Architecture, | |||
Architecture, http://docbox.etsi.org/ISG/NFV/70- | http://docbox.etsi.org/ISG/NFV/70- | |||
DRAFT/0010/NFV-0010v016.zip". | DRAFT/0010/NFV-0010v016.zip". | |||
[RFC2328] J. Moy, "OSPF Version 2", RFC 2328, April, 1998. | [RFC2328] J. Moy, "OSPF Version 2", RFC 2328, April, 1998. | |||
[sfc-arch] Halpern, J. and Pignataro, C., "Service Function Chaining | [sfc-arch] Halpern, J. and Pignataro, C., "Service Function Chaining | |||
(SFC) Architecture", RFC 7665, October 2015. | (SFC) Architecture", RFC 7665, October 2015. | |||
[RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private | [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private | |||
Networks (VPNs)", RFC 4364, February 2006. | Networks (VPNs)", RFC 4364, February 2006. | |||
skipping to change at page 39, line 5 ¶ | skipping to change at page 39, line 38 ¶ | |||
[draft-ietf-bess-evpn-overlay-02] | [draft-ietf-bess-evpn-overlay-02] | |||
A. Sajassi, et al, "A Network Virtualization Overlay | A. Sajassi, et al, "A Network Virtualization Overlay | |||
Solution using EVPN", draft-ietf-bess-evpn-overlay, | Solution using EVPN", draft-ietf-bess-evpn-overlay, | |||
February 2015. | February 2015. | |||
[draft-ietf-sfc-nsh] | [draft-ietf-sfc-nsh] | |||
Quinn, P., et al, "Network Service Header", draft-ietf- | Quinn, P., et al, "Network Service Header", draft-ietf- | |||
sfc-nsh-00, March 2015. | sfc-nsh-00, March 2015. | |||
[draft-niu-sfc-mechanism] | [draft-niu-sfc-mechanism] | |||
Niu, L., Li, H., and Jiang, Y., "A Service Function | Niu, L., Li, H., and Jiang, Y., "A Service Function | |||
Chaining Header and its Mechanism", draft-niu-sfc- | Chaining Header and its Mechanism", draft-niu-sfc- | |||
mechanism-00, January 2014. | mechanism-00, January 2014. | |||
[draft-rijsman-sfc-metadata-considerations] | [draft-rijsman-sfc-metadata-considerations] | |||
B. Rijsman, et al. "Metadata Considerations", draft- | B. Rijsman, et al. "Metadata Considerations", draft- | |||
rijsman-sfc-metadata-considerations-00, February 12, 2014 | rijsman-sfc-metadata-considerations-00, February 12, 2014 | |||
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. | [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. Bierman, | |||
Bierman, "Network Configuration Protocol (NETCONF)", RFC | "Network Configuration Protocol (NETCONF)", RFC 6241, June | |||
6241, June 2011. | 2011. | |||
[RFC4023] Worster, T., Rekhter, Y., and E. Rosen, "Encapsulating | [RFC4023] Worster, T., Rekhter, Y., and E. Rosen, "Encapsulating MPLS | |||
MPLS in IP or Generic Routing Encapsulation (GRE)", RFC | in IP or Generic Routing Encapsulation (GRE)", RFC 4023, | |||
4023, March 2005. | March 2005. | |||
[RFC7510] Xu, X., Sheth, N. et al, "Encapsulating MPLS in UDP", RFC | [RFC7510] Xu, X., Sheth, N. et al, "Encapsulating MPLS in UDP", RFC | |||
7510, April 2015. | 7510, April 2015. | |||
[draft-ietf-i2rs-architecture] | [draft-ietf-i2rs-architecture] | |||
Atlas, A., Halpern, J., Hares, S., Ward, D., and T Nadeau, | Atlas, A., Halpern, J., Hares, S., Ward, D., and T Nadeau, | |||
"An Architecture for the Interface to the Routing System", | "An Architecture for the Interface to the Routing System", | |||
draft-ietf-i2rs-architecture, work in progress, March | draft-ietf-i2rs-architecture, work in progress, March | |||
2015. | 2015. | |||
skipping to change at page 41, line ? ¶ | skipping to change at page 40, line 34 ¶ | |||
[draft-ietf-idr-link-bandwidth] | [draft-ietf-idr-link-bandwidth] | |||
P. Mohapatra, R. Fernando, "BGP Link Bandwidth Extended | P. Mohapatra, R. Fernando, "BGP Link Bandwidth Extended | |||
Community", draft-ietf-idr-link-bandwidth, work in | Community", draft-ietf-idr-link-bandwidth, work in | |||
progress. | progress. | |||
[flowspec-redirect-ip] | [flowspec-redirect-ip] | |||
Uttaro, J. et al. "BGP Flow-Spec Redirect to IP Action", | Uttaro, J. et al. "BGP Flow-Spec Redirect to IP Action", | |||
draft-ietf-idr-flowspec-redirect-ip-02, February 2015. | draft-ietf-idr-flowspec-redirect-ip-02, February 2015. | |||
14 Acknowledgments | ||||
This document was prepared using 2-Word-v2.0.template.dot. | ||||
This document is based on earlier drafts [draft-rfernando-bess- | ||||
service-chaining] and [draft-mackie-sfc-using-virtual-networking]. | ||||
The authors would like to thank D. Daino, D.R. Lopez, D. Bernier, W. | ||||
Haeffner, A. Farrel, L. Fang, and N. So, for their contributions to | ||||
the earlier drafts. The authors would also like to thank the | ||||
following individuals for their review and feedback on the original | ||||
proposals: E. Rosen, J. Guchard, P. Quinn, P. Bosch, D. Ward, A. | ||||
Ganesan, N. Seth, G. Pildush and N. Bitar. The authors also thank Wim | ||||
Henderickx for his useful suggestions on several aspects of the | ||||
Authors' Addresses | Authors' Addresses | |||
Rex Fernando | Rex Fernando | |||
Cisco | Cisco | |||
170 W Tasman Drive | 170 W Tasman Drive | |||
San Jose, CA 95134 | San Jose, CA 95134 | |||
USA | USA | |||
Email: rex@cisco.com | Email: rex@cisco.com | |||
Stuart Mackie | Stuart Mackie | |||
End of changes. 119 change blocks. | ||||
459 lines changed or deleted | 449 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |