Uploaded image for project: 'Fast Datapath Product'
  1. Fast Datapath Product
  2. FDP-856

Implement standalone service scaffolding, with a test service

XMLWordPrintable

    • Icon: Task Task
    • Resolution: Unresolved
    • Icon: Normal Normal
    • FDP-25.A
    • None
    • OVN
    • 13
    • False
    • Hide

      None

      Show
      None
    • False
    • Hide

      Given a system administrator is working in an OVN environment and has configured a service chain on a gateway logical router port or VIF logical switch port, 

      When the null service is created and linked within a service chain and packets pass through the configured service chain, 

      Then, the following outcomes should occur:

      • Logical flows must be created in the northbound database representing the service chain
      • Packets must pass through the null service without any modifications and the order of packet traversal must match the configured service chain.
      • All standalone services in the chain must start their pipeline by skipping packet processing if the port isn’t resident on the chassis.
      • Tests must confirm that services can be chained, multiple services can be linked in order, and all configurations must work honoring the direction and order of services.
      Show
      Given a system administrator is working in an OVN environment and has configured a service chain on a gateway logical router port or VIF logical switch port,  When the null service is created and linked within a service chain and packets pass through the configured service chain,  Then, the following outcomes should occur: Logical flows must be created in the northbound database representing the service chain Packets must pass through the null service without any modifications and the order of packet traversal must match the configured service chain. All standalone services in the chain must start their pipeline by skipping packet processing if the port isn’t resident on the chassis. Tests must confirm that services can be chained, multiple services can be linked in order, and all configurations must work honoring the direction and order of services.
    • rhel-sst-network-fastdatapath
    • ssg_networking
    • FDP 25.A

      For reference on OVN composable services, please see this document: https://docs.google.com/document/d/1GMyxUJbqTaCxCx3hbEGSu6xMRDriMWUK1dKNFpSWlXo/edit

      For this task, you will be implementing the foundation work for standalone services, along with a null/noop service for testing.

      • Northbound database changes
        • Create a "Service_Chain" table as described in the document
        • Add a "service_chain" column to the Logical_Router_Port and Logical_Switch_Port tables.
      • northd changes
        • Add logic to only allow service chains to be applied to gateway router ports and VIF logical switch ports.
        • Create southbound Datapath_Binding rows for each logical_port-service combination, allocating a chassis-unique tunnel key to each datapath.
        • Create two southbound Port_Binding rows for each Datapath_Binding, thus allowing the created Datapath_Bindings to link together. These port bindings should be of type "patch", and their "peer" setting should link them properly with each other, as well as with their attached logical ports.
        • Place the services in the proper place in the chain so that packets are sent to the service chain where the service chain has been configured, honoring the direction of the configured services in the process.
        • Ensure that all services start their pipelines with a stage that skips all processing on the service if is_chassis_resident(attached_logical_port) is false. This way, we don't have to add "&& is_chassis_resident(port)" to every flow in the table.
      • ovn-controller changes:
        • Ensure that datapath bindings relating to services are considered local to the same chassis as the port binding to which the service chain is applied.
      • Create a "null" service for testing.
        • In northd, the null service should create the following logical flows:
          • Ingress: One stage, with one flow: match=1, action=next;
          • Egress; One stage, with one flow: match=1, action=next;
        • Create tests in the testsuite using the null service.
          • Ensure that the service is inserted between datapaths where expected.
          • Ensure that multiple instances of the service can be chained together.
          • Ensure that the service chain direction is honored.
          • Ensure that the service can only be attached to a gateway logical router port or a VIF type logical switch port.
          • Ensure that the service is local to the chassis on which the attached logical port is bound. Ensure this works as expected on all services in a service chain.
          • Ensure that packets pass through the null service where expected.

              ovnteam@redhat.com OVN Team
              mmichelson Mark Michelson
              Jianlin Shi Jianlin Shi
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: