Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RA2 Ch02] Review/remove SFC requirement #2189

Open
tomkivlin opened this issue Jan 13, 2021 · 3 comments
Open

[RA2 Ch02] Review/remove SFC requirement #2189

tomkivlin opened this issue Jan 13, 2021 · 3 comments
Labels
Projects

Comments

@tomkivlin
Copy link
Collaborator

As per discussion here: #2121 (comment)

@tomkivlin tomkivlin created this issue from a note in old-RA2 (Backlog) Jan 13, 2021
@rgstori rgstori moved this from Backlog to To do in old-RA2 Feb 11, 2021
@kumarsumangit
Copy link
Collaborator

By principle, SFC definition is in orchestration, devOps and SDN controller domain, but it requires support at networking requirements, which is relevant to Anuket RA2 forum.

SFC can be visualized as Service function plane (consists of SFF, SFC, SF, SF proxy) over Service function overlay network, which is realized over Overlay /underlay network.
In Overlay network, packets are routed based on networking principles as destination ip, next hop.
However, in service overlay network, packets are routed based on policies unlike overlay network, again defined at Orchestrator level. This requires specific support at CNI in CNF environment to provide such specific routing mechanism.
It means, we need to define or capture items, which will help realize SFC at CNF environment, are

  1. SFC aware interfaces available to Pod as plugins at CNI level.
  2. CNI need to route packets based on policy, along with networking routing principles.
    For example,
    CNI enables SFC by assigning a port/interface to Container (SFC identifier, or SFCID, to each SF and sequencing these service SFCIDs in a ordered list. A service SFCID may be of local significance or directly reachable from anywhere in the routing domain.
    Once packets destined to undergo SFP, CNI will be getting the information encapsulated in packet to enable this forwarding to Container (SF). This information will be encoded by SFC and forwarded to CNI to act as SFF.(out of scope for RA2)

SFC Architecture
Functional Components:- SFC can be visualized as made of these components which makes SFC possible.

  1. DevOps components of SF/SFC Orchestrator, CNF MANO–, which are responsible for as SF LCM. For example cloudify, K8S, Ansible, etc.
  2. SFC components for traffic steering in Service Plane. SFF, SF , SF proxy.
  3. SFC port Agent/ Renderer – creates and wires port for SF data path. CNI agent to wire Policy rules for SFC. It can deploy different techniques to stitch the wiring but provide the same functionality, for example l2xconn, srv6 , Segment routing etc.
    image

Call flow-
A possible use case to create the SFC in container system shown as below. After creation of container ( or existing container ), SFC interface(s) is(are) created, identified by interface Id(s) and attached with the container.
These interface IDs ae used to render SFP for given SFC.
Once packets received on these SFP, policy driven packet steering performed to route packets to SF for processing.

image

A Service Function Path consists of:
• a set of container interface ports, to define the sequence of service functions
• a set of flow classifiers, to specify the classified traffic flows to enter the chain (– out of scope of RA2)
If a service function has a pair of ports, the first port in the port-pair is the ingress port of the service function, and the second port is the egress port of the service function. The first port of the first port-pair is the head of the service chain. The second port of the last port-pair is the tail of the service chain. A bidirectional service chain would be composed of two unidirectional Port Chains.

For example, [{p1: p2}, {p3: p4}, {p5: p6}] represents:
image

In addition, SFP represented in CNF environment as -

image

Summary to RA2 relevance:-
Relevance to RA2-

  1. Attaching SFC supporting Interfaces at Pod using multi plugin
  2. Architecture support for SDN controller interfaces at CNI
  3. Configuring policy driven routes to steer traffic between these Interfaces via SDN controller .

Out of scope of RA2 :-
Note:- these are not exhaustive list.

  1. How CNI will support SFC using SRv6, mpls, NSH ?
  2. How SDN controller will interact with CNI for SFC policy?
  3. How packets are classified for SFC?
  4. How SFP is created from SFC design?

@rgstori
Copy link
Collaborator

rgstori commented Feb 25, 2021

  • if this is going to be in scope of RA2, it should be an optional feature
  • it is worth to identify what workloads (eg UPF) and use cases would leverage this functionality

@kumarsumangit
Copy link
Collaborator

Updating better diagrams -

Architecture-
SFC Architetcure-CNF

Call Flow
SFC call flow

SFP illustration
SFP chain

SFP Data Model
SFP Data model

@rgstori rgstori added the Kali Release Name for 1h2021 label Mar 18, 2021
@rgstori rgstori added this to the Kali - M2 - Scope Freeze milestone Mar 24, 2021
@rgstori rgstori moved this from To do to Backlog in old-RA2 Jun 22, 2021
@rgstori rgstori added Backlog and removed Kali Release Name for 1h2021 labels Jun 22, 2021
@rgstori rgstori removed this from the Kali - M2 - Scope Freeze milestone Jun 22, 2021
@rgstori rgstori added Lakelse and removed Backlog labels Jun 24, 2021
@rgstori rgstori added this to the Lakelse - M2 - Scope Freeze milestone Jun 24, 2021
@rgstori rgstori moved this from Backlog to To do in old-RA2 Jun 24, 2021
@rgstori rgstori removed this from the Lakelse - M2 - Scope Freeze milestone Nov 4, 2021
@rgstori rgstori added Backlog and removed Lakelse labels Nov 4, 2021
@rgstori rgstori moved this from To do to Backlog in old-RA2 Nov 4, 2021
@rgstori rgstori moved this from Backlog to In Progress in old-RA2 Jan 23, 2023
@rgstori rgstori moved this from In Progress to To do in old-RA2 Jan 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Backlog
old-RA2
  
To do
Development

No branches or pull requests

3 participants