 From the CUBE studios in Palo Alto in Boston, connecting with thought leaders all around the world, this is a CUBE Conversation. Hi, I'm Stu Miniman and welcome to a CUBE Conversation. I'm coming to you from our Boston area studio and we are going to be digging into P4, which is the Programming Protocol Independent Packet Processors and to help me with that first-time guest on the program, Mario Baldi. He is a distinguished technologist with Pensando. Mario, so nice to see you. Thanks for joining us. Thank you. Thank you for inviting me. All right. So, Mario, you have a very robust technical career, a lot of patents. You've worked on many technologies deep in the networking and developer world. Give our audience a little bit of your background and what brought you to Pensando? Yeah, yeah, absolutely. So I started my professional life in academia. Actually, I worked for many years in academia, about 15 years exclusively in academia. I was focusing both my teaching and research on computer networking. And then I also worked in a number of startups and established companies in the last about eight years, almost exclusively in the industry. And before joining Pensando, I worked for a couple of years at Cisco on a P4 programmable switch. And that's where I got in touch with P4. Actually, for the occasion, I wore a T-shirt of one of the P4 workshops, which reminds me a bit of those people when you ask them whether they do any sports. They tell you they have a membership at the gym. So I don't just have the membership. I didn't just show up at the workshop. I've really been involved in the community. And so when I learned what Pensando was doing, I immediately got very excited that the Isaac that Pensando has developed is is really extremely powerful and flexible because it's fully programmable, partly programmable with P4, partly programmable differently. And and Pensando is is starting to deploy this Isaac at the edge in hosts. And I think such a powerful and flexible device at the edge of the network really opens incredible opportunities to, on the one hand, implement what we have been doing in a different way. On the other hand, implement completely different solutions. So, you know, I've been working most of my career in innovation. And when when I saw this, I immediately got very excited and I realized that Pensando was really the right place for me to be. Excellent. Yeah. It's interesting. You know, many people in the industry, they they talk about innovation coming out of the universities, you know, Stanford often gets mentioned. But the university that you, you know, attended and also were associate professor at in Italy, a lot of the networking team, your MPLS, you know, team at Pensando, many of them came from them. Silvano Guy, you know, written many books there, you know, a very storied career in that environment. P4, maybe step back for a second to, you know, you're you're deep in this in this this this group. Help us understand what that is, how long it's been around, you know, and who participates with P4. Yeah. Yeah. So as you were saying before, and you were one of the few people from whom I've heard saying it because everyone calls it P4 and nobody says what it really means. So programming protocol independent packet processors. So it's a programming language for packet processors. And and it's protocol independent. So it doesn't start from assuming that we want to use certain protocols. So before, first of all, allows you to specify what packets look like. So what the headers look like and how they can be parsed. And secondly, because P4 is specifically designed for packet processing, it's based on the idea that you want to look up values in tables. So it allows you to define tables and keys that are being used to look up those tables and find an entry in the table. And when you find an entry, that entry contains an action and parameters to be used for for that action. So the idea is that the packet descriptions that you have in the program define how the packets should be should be processed. Header fields should be parsed, values extracted from them. And those values are being used to as keys to look up into tables. And when when when the appropriate entry in the table is found and action is executed and that action is going to modify those header fields. And this happens a number of times. The program specifies a sequence of tables that are being looked up. Header fields being modified. And in the end, those modified header fields are used to construct new packets that are being sent out of the device. So this is the basic idea of a P4 program. You specify a bunch of tables that are being looked up using values extracted from packets. And so this is very powerful for for a number of reasons. So first of all, it's simple, which is always good, as we know, especially networking. And then it maps very well on what we need to do when we do packet processing. So writing a packet processing program is relatively easy and fast. It would be difficult to write a generic programming before. You could not, but the packet processing program is easy to write. And last, but not least, before really maps well on hardware that was designed specifically to process packets, what we call what we call domain specific processors, right? And those processors are, in fact, designed to quickly look up table. They might have T cam inside. They might have processors that are specialized in performing in building keys and performing table lookup and modifying those header feeds. So when you have those processors that are usually organized in pipelines to achieve a good throughput, then you can very efficiently take a P4 program and compile it to execute it very high speed on those processors. And this way, you get the same performance of a fixed function as it, but it's fully programmable. Nothing is fixed, which means that you can develop your features much faster. You can add features and fixed bugs, you know, with a very short cycle, not with the four or five year cycle of baking a new as it. And this is this is extremely, this is extremely powerful. This is the strong value proposition of P4. Yeah, absolutely. I think that resonates Mario. You know, I used to do presentations about the networking industry and you would draw timelines out there in decades because from the standard to get deployed for, you know, the hardware to get baked, the customers to do the adoption, things take a really long time. You brought up, you know, edge computing. Obviously, you know, we are, you know, it is really exciting, but it is changing really fast. And there's a lot of differing capabilities out there. So if you could help us, you know, connect the dots between what P4 does and what the customers need. You know, we talk about multi-cloud and edge. What is it that P4 in general and what Pensando is doing with P4 specifically enables this next generation architecture? Yeah, yeah, absolutely. So Pensando has developed this card, which we call the DSC, Distribute Services Card, that is built around an ASIC that has a very, very versatile architecture. It's fully programmable. And it's fully programmable at various levels. And one of them is, in fact, P4. Now, this card has a PCIe interface, so it can be installed in host. And by the way, this is not the only way this powerful ASIC can be deployed. It's the first way Pensando has decided to use it. And so we have this card that can be plugged into host. It has two network interfaces. So it can be used as a network adapter. But in reality, because the card is fully programmable and it has several processors inside. It can be used to implement very sophisticated services, things that you wouldn't even dream of doing with the typical network adapter, with the typical nick. So in particular, this card, this ASIC contains a sizable amount of memory. Right now we have two sizes, four and a gig, but we are going to have versions of the card with even larger memory. Then it has some specialized hardware for specific functions like cryptographic functions, compression, computation of CRCs, sophisticated queuing system, a packet buffer with the queuing system to handle packets that they have to go out of the interfaces or coming from the interfaces. And then it has several types of processors. It has generic processors, specifically arms, arm processors that can be programmed with general purpose languages. And then a set of processors that are specific for packet processing that are organized in a pipeline. And those are ideal to be programmed with P4. They can, we can very easily map a P4 program on that pipeline of processors. So that's where Pensando is leveraging P4 as the language for programming those processors that allow us to process packets at the line rates of our 200, 200 gigabit interfaces that we have in the card. Great. So, Mario, what about from a customer viewpoint? Do they need to understand, you know, how to program in P4? Is this transparent to them? What's the customer interaction with it? Oh, yeah, not at all. The Pensando platform, Pensando is offering a platform that is a completely turnkey solution. Basically, the platform, first of all, the platform has a controller with which the user interacts. The user can configure policies on this controller. So using an intent based paradigm, the user defines policies, the controller is going to push those policies to the cards. So in your data center, in your host, in your data center, you can deploy thousands of those cards. Those cards implement distributed services. Let's say, just to give a very simple example, a distributed, stateful firewall implemented on all of those cards. The user writes a security policy says this particular application can talk to these other particular application and that's translated into configuration for those cards. It's transparently deployed on the cards that start enforcing the policies. So the user can use this system at this very high level. However, if the user has more specific needs, then the system, the platform offers several interfaces and several APIs to program the platform through those interfaces. So the one at the highest level is a REST API to the controller. So if the customer has an orchestrator, they can use that orchestrator to automatically send policies to the controller. Or if a customer already have their own controller, they can interact directly with the DSCs, with the cards on the host, with another API that's fully open. It's based on GRPC. And this way they can control the cards directly. If they need something even more specific, if they need a functionality that Pensando doesn't offer on those cards, hasn't already written software for the cards, then customers can program the card. And the first level at which they can program it is the ARM processors. We have ARM processors. Those are running a version of Linux, so customers can program it by writing C code or Python. But if they have very specific needs, like when they write a software for the ARM processor, they can leverage the P4 code that we have already written for the card for those specialized packet processors. So they can leverage all of the protocols that our P4 program is already supporting. And by the way, because that software, they can pick and choose among a library of many different protocols and features we support and decide to deploy them and then integrate them in their software, in their software running on the ARM processor. However, if they want to add their own proprietary protocols, if they want, if they need to execute some functionalities at very high performance, then that's when they can write P4 code. And even in that case, we are going to make it very simple for them because they don't have to write everything from scratch. They don't have to worry about how to process IP packets, how to terminate TCP. We have the software P4 code for that. They can focus just on their own feature and we are going to give them a development environment that allows them to focus on their own feature and integrate it with the rest of our P4 program, which, by the way, is something that P4 is not designed for. P4 is not designed for having different programmers write different pieces of the program and put them together. But we have the means to enable these. Okay, interesting. So, you know, maybe bring us inside a little bit in the P4 community. You're very active in it. When I look online, there's a large language consortium, many of all the hardware and software companies that I would expect in the networking space are on that list. So, what's Pensando's participation in the community and you were just teasing through what does P4 do and then what does Pensando maybe enable above and beyond what P4 just does on its own. Yeah, so, yes, Pensando is very much involved in the community. There has been recently an event which, online event that substituted the yearly P4 workshop. It was called the P4 Expert on Table Series and Pensando had very strong participation. Our CTO, VP and Jane, had the keynote speech talking about how P4 can be extended beyond packet processing. Before we said it has been designed for packet processing, but today there are many applications that require message processing, which is more sophisticated and he gave a speech on how we can go towards that direction. Then we had a talk that was resulting from a submission that was reviewed and accepted on, in fact, the architecture of our ASIC and how it can be used to implement many interesting use cases. And finally, we participated into a panel in which we discussed how to use P4 in NICS, in SmartNICS at the edge of the network. And there we argued with some use cases and example and code how P4 needs to be extended a little bit because NICS have different needs and open up different opportunities rather than switches. Now, P4 was never really meant only for switches, but if we looked at what happened, the community has worked mostly on switches. For example, it has defined what is called the PSA, Portable Switch Architecture. And we see that the NICS have edge devices have a little bit different requirements. So one of the things we are doing within the community is working within one of the working groups. It's called the Architecture Work Group. And we are working in there to create the definition of a P&A, Portable NIC Architecture. Now, we didn't start this activity. This activity has started already in 2018. But it had slowed down significantly, mostly because there wasn't so much of a push. So now, Peisando coming on the market with this new architecture really gave new life to this activity. And we are contributing actively. We have proposed a candidate for a new architecture, which has been discussed within within the community. And, you know, just to give you an example, why do we need a new architecture? Because if you think of a switch, there are several reasons. But one that's very intuitive, intuitive. If you think of a switch, you have packets coming in, they've been processed and packets go out. As we said before, that's the P&A, sorry, PSA architecture is meant for this kind of operation. If you think of a NIC, it's a little bit different because yes, you have packets coming in. And yes, if you have multiple interfaces like our card, you might take those packets and send them out. But most likely what you want to do, you want to process those packets and then not give the packets to the host. Otherwise, the host CPU will have to process them again to pass them again. You want to give some artifacts to the host, some pre-processed information. So you want to, I don't know, take those packets, for example, assemble many TCP messages and provide a stream of bytes coming out of a TCP connection. Now, these requires a completely different architecture, packets coming in, something else goes out. And it goes out, for example, through a PCI bus. So you need some, a different architecture and then you will need in the P4 language, different constructs to deal with the fact that you are modifying memory. You are moving data from the card to the host and vice versa. So again, back to your question, how are we involved in the workgroups? We are involved in the architectural workgroup right now to define the PNA, the portable NIC architecture. And also, I believe in the future, we will be involved in the language group to propose some extensions to the language. Excellent. Well, Mario, thank you so much for giving us a deep dive into P4, where it is and, you know, some of the potential futures for where we'll go in the future. Thanks so much for joining us. Thank you. All right. I'm Stu Miniman. Thank you so much for watching theCUBE.