Replies: 2 comments
-
|
Random rant: I really wish P4 Runtime API still succeeds in becoming a standard API widely adopted API for P4 devices. Imagine if P4 Runtime API were to get the best parts where BF Runtime API pioneered and got right, now that its p4c compiler backend modules and SDE are open source, maybe that can happen one day, although of course BF Runtime API still has many Tofino Native Architecture concepts where it might too opinionated for a std (or not), we'll see how it'll unfold. |
Beta Was this translation helpful? Give feedback.
-
|
TODO: add new table to mapping which OpenFlow event messages are being used, just so it can be used to check if another SB provides something somewhat equivalent |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Initial design considerations to support new remote southbound APIs on Kytos-ng
Goals
Get the discussion started for which southbound (SB) protocols need to be supported for use cases at AmLight in the next 2 to 3 years.
Understand if what's needed fits well in the ecosystem and Kytos-ng architecture.
Initial Kytos-ng architecture considerations to support the new SB(s).
Initial understanding how the platform and NApps should evolve to support the new SB(s).
Current Southbound Introduction
Southbound, Use Cases and Requirements
Which SB APIs can Kytos-ng try to support?
Previous network diagrams that Jeronimo has shared to think about new SBs:
Main goals: eventually, phase out OpenFlow 1.3 and introduce new SBs
Topology
Protocols and network applications terminology
This subsection will introduce a new terminology:
mef_eline.pathfinder,topology,maintenance.The following options are related to how a protocol or API can be integrated in a NApp (assuming that the platform still needs to work with OpenFlow + another SB(s)):
mef_eline, Option SM would mean, an EVC could either be provisioned with flows of a southbound X or southbound Y.mef_elinewould be a same EVC would use different southbounds (whether or not this is abstracted), and forpathfinderit would mean beaing able to find paths on devices with a single southbound kind or multiple different kinds.By introducing another SB it unlocks network FNApps and INApps to potentially be:
Challenges to be aware regarding Option MM:
Which southbounds would need to be supported in the short and medium-term?
mef_elineusing different southbounds in the same EVC) be needed in the next 3 years?Which problem(s) the new SB is supposed to solve at AmLight?
To get the discussion started:
a), b1), b2), and e) fit well with the current Kytos-ng architecture and would also align well with its evoluion as a remote SDN controller platform. option d) can also fit well if PINS + gNMI works well; c) is one of the major requirements that will shape large design decisions from this point forward.
All of these prior points, requirements and questions need to be answered, refined, and aligned with AmLight network engineering team use cases.
Current core libraries & NApps OpenFlow dependencies
General New Patterns to support new SBs
If we were to hypothetically develop and have to port all NApps to another SB:
NApps will typically choose an option SS, SM or MM and stick with it. If the NApp has too much south bound specific dependency it should be SS (such as
of_core), otherwise SM (such asmef_elinein the future), and if it's not too heavy flow-based, then MM.The general idea is to still keep a NApp responsible for doing one thing (network functionality or responsibility) and one main thing well, and only support multiple protocol choices in the same NApp if it doesn't have too much protocol details dependency that were made in its design.
Analogy with aiop4 and p4_l2ls
of_core+ TCP server, exceptp4s_coredoes whatof_corebut for P4Runtime API.p4s_coreusesaiop4, which is responsible for exposing asyncio gRPC client and managing the protocol state machine and its messagesp4_l2lsis a P4Runtime example NApp that can perform L2 switch learning functionalities by subscribing to events and pushing P4 table entriesHypothetical future new SB
of_core+pyoffor managing OpenFlow switches (in the meantime as OpenFlow gets phased out)p4s_core+aiop4for managing P4Runtime API switchesp4bf_core+aiobffor managing BFRuntime API switches (this hasn't been prototyped yet, but it's expected to work based on prior training knowledge)Related Notes
General new guidelines that will still be refined:
mef_elineits flow building methods will be refactored to be a flower builder (or factory) for a given SB/data model. For EVC creation, we'll need to discuss if option SM is good enough initially, and then only allow creation/updates of the same type.telemetry_intcan also be entirely offloaded to the pipeline dataplane design.flow_managerconsistency check, most of it is protocol flow entry agnostic, except for a few fields that can be parametrized.pathfinderhas low SB dependency, so it shouldn't need a fork, and all of its funcionality should still filter for OpenFlow only by default, but it should evolve to allow searching paths that's compatible with a given SB.flow_managerfor instance would likely be option SS:flow_manager(OpenFlow).flow_manager_bfrt(if it were for BFRuntime).flow_manager_p4rt(if it were for P4Runtime).flow_manager_p4could also turned into option MM if justifiable (although it'd be difficult, it wouldn't be as difficult as NApps which are e2e higher level applications likemef_eline):-
flow_manager_p4could compose bothflow_manager_bfrtandflow_manager_p4rt.How far is Kytos-ng ecosystem to support a new SB?
Depends on the use cases requirements and goals
Many of these items can be done in parallel if the team has capacity
However, the team currently is also responsible for maintaining Kytos-ng OpenFlow and NApps in production
Ballpark figure: to get an equivalent OpenFlow Kytos-ng ecosystem but in P4 production-grade will likely take a few years with an experienced full-time small team, but do we need an entire equivalent NApp ecosystem? Will we still maintain the same NApps or try to also trim them down?
Example with aiop4 and p4_l2ls (L2 learning switch)
p4_l2lsNApp withaiop4(withp4runtimev1.4.1) and l2ls running on Kytos-ng 2024.1.2linear,2topology except withsimple_switch_grpcswitches insted of OvS switchesIngressImpl.dmactable on the first switch:Quick comparison between BFRuntime API and P4Runtime API
Although they both are protobuf specs, they're not interchangeable, there are some common parts, but there are more messages differences than similarities:
Additional major TNA features:
Port status on P4Runtime API would need another API like gNMI or via thrift and polling
Next Steps
Beta Was this translation helpful? Give feedback.
All reactions