Difference between revisions of "Project Proposals/processing pipeline"

From fd.io
Jump to: navigation, search
(Processing pipeline specific plugin leveraging v6SR to implement IP continuity)
 
 
(3 intermediate revisions by the same user not shown)
Line 23: Line 23:
 
<!-- Description of the work that will take place in this project -->
 
<!-- Description of the work that will take place in this project -->
  
Thank to this project it will be possible to create complex processing pipeline in which each node applies some transformation not at the IP packet level but rather at “application data level” which represents several IP packet payloads. For any given node in the processing pipeline the input and the output data sizes can be different.  
+
Thank to this project it will be possible to create complex processing pipeline in which each node applies some transformation not at the IP packet level but rather at “application data level” which represents several IP packet payloads. For any given node in the processing pipeline the input and the output data sizes can be different. The idea is to create a generic and extensible framework to allow additional functionality to be provided. Media processing is a natural application of this framework.
 +
The framework itself can be divided in three parts:
  
For media specific domain the implementation is based on a VPP plugin architecture. The media specific part is actually made of three plugins:
+
<LI>The input plug-in responsible for receiving incoming traffic and make it available to the processing application through e.g. a piece of memory
 
+
 
+
<LI>The input media plug-in. This plug-in is responsible for receiving incoming traffic and make it available to one of the media virtual function through a piece of memory
+
 
</LI>
 
</LI>
<LI>The output media plug-in. This plug-in is responsible for sending outgoing traffic from one media processing virtual function.
+
<LI>The output plug-in responsible for sending outgoing traffic from one processing application.
 
</LI>
 
</LI>
<LI>The media control plugin is used to configure the other plug-ins.  
+
<LI>A third control plugin is used to configure the other plug-ins.  
 
</LI>
 
</LI>
  
  
The media input as well as output plugin is actually split in two parts the media specific part and the ip specific part.  
+
The input as well as output plugins are actually split in two parts the application domain specific (e.g. Media) part and the ip specific part.  
 
+
(A fully detailed description of the involved mechanisms is accessible in a separate document)
(A fully detailed description of the involved mechanism is accessible in a separate document).
+
  
 
== Scope ==
 
== Scope ==
Line 95: Line 92:
  
 
The code of each plugin is itself divided in two parts:  
 
The code of each plugin is itself divided in two parts:  
<li> A fully generic part which is responsible for IP packetization and depacketization. This part exposes a configuration API totally agnostic from the application specific part. This part is also responsible for maintaining IP continuity across processing applications which are not IP aware.  
+
<li> A fully generic part which is responsible for IP packetization and depacketization. This part exposes a configuration API totally agnostic from the application specific part. This part is also responsible for maintaining IP continuity across processing applications which are not IP aware. This fully generic part is actually an extension of the existing v6SR development project which is meant to become an extensible framework to allow additional functionality to be provided.  
 
</li>  
 
</li>  
<LI>An application specific part which is responsible for implementing the communication between the VPP node and the external application using it. In the media particular case shared memory are used for this purpose.  
+
<LI>An application domain (e.g. Media) specific part which is responsible for implementing the communication with the external application. In the media particular case shared memory are used for this purpose. This domain specific part is new and could be considered either as an extension of the v6SR work or as a separate sub-project.  
 
</li>  
 
</li>  
 
== Meets Board Policy (including IPR, being within Board defined Scope etc) ==
 
== Meets Board Policy (including IPR, being within Board defined Scope etc) ==
Line 105: Line 102:
 
== Administrata ==
 
== Administrata ==
 
* Request for Project proposal consideration
 
* Request for Project proposal consideration
** Email: (place link to email to TSC proposing project, this can be obtained from [https://lists.fd.io/pipermail/tsc/ TSC Archives]
+
** Email: https://lists.fd.io/pipermail/tsc/2017-January/000369.html
** Date: (date proposed, makes it simpler to calculate the pre-requisite 2 week time period of gestation before being permitted to be voted on)
+
** Date: 12-Jan-2017

Latest revision as of 13:21, 12 January 2017

Processing and forward

Name

Processing Pipeline with SRv6

Project Contact Name and Email

Andre Surcouf (asurcouf@cisco.com)
Clarence Filsfils (cfilsfil@cisco.com)

Repository Name

ppsr

Description

Thank to this project it will be possible to create complex processing pipeline in which each node applies some transformation not at the IP packet level but rather at “application data level” which represents several IP packet payloads. For any given node in the processing pipeline the input and the output data sizes can be different. The idea is to create a generic and extensible framework to allow additional functionality to be provided. Media processing is a natural application of this framework. The framework itself can be divided in three parts:

  • The input plug-in responsible for receiving incoming traffic and make it available to the processing application through e.g. a piece of memory
  • The output plug-in responsible for sending outgoing traffic from one processing application.
  • A third control plugin is used to configure the other plug-ins.

  • The input as well as output plugins are actually split in two parts the application domain specific (e.g. Media) part and the ip specific part. (A fully detailed description of the involved mechanisms is accessible in a separate document)

    Scope

      - Processing
            - Transform
            - Forward
    


    Initial Committers

    Axel Taldir (ataldir@cisco.com)
    Eyal Shalev (eshalev@cisco.com)
    Francois Clad (fclad@cisco.com)

    Vendor Neutral

    There is no need for any particular hardware. However some implementation could use dedicated hardware to increase the performances. No driver required for any specific hardware

    The code of each plugin is itself divided in two parts:

  • A fully generic part which is responsible for IP packetization and depacketization. This part exposes a configuration API totally agnostic from the application specific part. This part is also responsible for maintaining IP continuity across processing applications which are not IP aware. This fully generic part is actually an extension of the existing v6SR development project which is meant to become an extensible framework to allow additional functionality to be provided.
  • An application domain (e.g. Media) specific part which is responsible for implementing the communication with the external application. In the media particular case shared memory are used for this purpose. This domain specific part is new and could be considered either as an extension of the v6SR work or as a separate sub-project.
  • Meets Board Policy (including IPR, being within Board defined Scope etc)

    Meets board policy as expressed in Technical Community Charter and IP Policy

    Administrata