fabric-testbed / ControlFramework

Basic framework for a Fabric Control Framework Actor
MIT License
1 stars 0 forks source link

P4 Support #389

Open kthare10 opened 3 months ago

kthare10 commented 3 months ago

Enabling P4 Switch on FABRIC

Standard slice request

User's Slice Request

The user requests a slice with the following specifications:

Connections:

Expected Result:

Upon deploying P4 code on the P4 switch, VM1 should successfully transmit traffic to VM2.

Slice Request

A sample slice request using fablib can be found below:

simple_p4_slice_request

p4-slice-topology

Switch Provisioning for Users

The AM Handler performs the following steps to provision a P4 switch:

Switch Deprovisioning

The AM Handler undertakes the following actions to deprovision a P4 switch:

Outstanding Items

Connectivity of P4 Switch

Switch Environment

Queries

ibaldin commented 3 months ago

Couple of questions/thoughts

  1. Transmitting traffic between VM1 and VM2 is conditional on appropriate P4 program loaded into the switch - are you planning to provide a default that makes it act like e.g. a learning switch? I'm guessing freeRtr does that out of the box. Seems like a good idea - a user gets a working-by-default environment.
  2. Deprovisioning user keys - is it needed if the switch is reimaged every time? In my original thinking we were going to wipe the switch clean after every user/use. That seems like a good security feature. Otherwise users will leave all kinds of artifacts behind I think.
kthare10 commented 3 months ago
  1. As you mentioned intent is to give user a default working environment. freeRtr gives that too. In addition, we are working on for default example P4 code which can be deployed, that just passes traffic.
  2. You are right - removing SSH keys is not required as the next provisioning, we flash with the image again.
kthare10 commented 3 months ago

Recommendations: