We live in a world dominated by programmable things. My thermostat can be programmed with schedules. I can buy kitchen appliances that can be integrated together in a variety of ways. Enterprises are also seeing the boon of programmable systems, especially with networks. People who understand the value of extending their network or control systems with programmability can reap rewards into the future instead of hoping that something will last a few years.
But not all systems are built to be programmable. We’ve been fighting that battle for years with middling success. When you work in a technology vertical that is dominated by traditional thinking, the idea of building something extensible is often frowned upon. One good example of this is the gradual migration away from purpose-built ASIC designs. ASICs are very fast for what they are designed to do. However, as needs have changed over the years we have started to realize that building something designed to do one thing super fast isn’t the most flexible architecture out there.
The latest trend has been to introduce Field Programmable Gate Arrays (FPGAs) into the mix. An FPGA is just what it sounds like – a programmable piece of hardware that allows you to build custom logic to accelerate processes. They aren’t quite as fast at specific tasks as an ASIC would be. However, they are also reprogrammable. That means that if you want to change the design of your circuit you can. It’s a huge boon for people with workloads that are friendly to FPGAs.
There are downsides to FPGAs and ASICs though. FPGAs are expensive compared to an ASIC. They are more power-hungry. And, somewhat similar to an ASIC, they have their own custom programming language, Verilog. Verilog is a hardware description language (HDL), which is used to build out the logic design in FPGAs. It is somewhat understandable as a programming language, however, it is very purpose-specific. If you aren’t programming FPGAs you’re not going to have much use for Verilog. So how can we build fast hardware that is easier to work on?
Pensando: Powered by P4
During Cloud Field Day 7, the delegates got a look at a new company named Pensando. They’re looking to create acceleration interfaces that are better than those you can find in purpose-built ASICs or FPGAs. If the name sounds vaguely familiar, it’s because the word pensando in Italian means “thinking”. And if the idea of a company with an Italian name trying to come up with a novel new solution to issues sounds familiar, you wouldn’t be surprised to hear the names Mario Mazzola, Prem Jain, Luca Cafiero, and Soni Jiandani associated with Pensando. The team that built Andiamo and Nuova, as well as Insieme is now working on Pensando.
The heart of Pensando got me super excited when I had the opportunity to sit down and talk to Prem Jain during RSA earlier this year. We started discussing how their team saw the need to add acceleration to the cloud, specifically in the storage space. They realized that a lot of the functions that were being offered by array vendors could be offloaded onto a separate card designed to handle them. It didn’t need to be as fast as an ASIC but it did need to be programmable to handle all of the different ways that data can be manipulated on its way to being stored. That meant that FPGAs were out because they are somewhat expensive to develop in that manner. So, how could the team develop something that allowed them to program the hardware but easily be reprogrammed and extended as necessary?
The answer, as it turned out, had already been solved in the networking space by Nick McKeown and the team at Barefoot Networks. They developed a network forwarding language for building programmability on their switches call P4. It allowed them to build the forwarding behavior of a switch from the ground up. Want to build in packet forwarding? Write the code for it. Want to enable routing? There’s code for that too. You can build any forwarding behavior into your device as long as you write the code for it.
Pensando looked at what P4 offered and realized that they could build the same thing into their platform. All they had to do was extend the language to include looking at hardware other than networking chips. So they did. When you think about it, it was pretty easy to extend all the metaphors that were needed from networking to storage. After all, data goes in and comes out all the time in both places. It just sticks around a little longer in a storage array than it does in a switch.
Predicting Pensando’s P4 Platform
I love this decision by Pensando to adopt P4 as their programmability language. It means their platform can truly be extensible. FPGAs are great until you have to reprogram them. You have to find someone that knows Verilog or VHDL, another FPGA programming language. Think about how hard it is today to find someone that knows Python or Rust or Go, even as popular as those languages are. Verilog isn’t as obscure as FORTRAN or COBOL, but you’re not going to find someone out there that just happens to have learned it from Codecademy.
On the other hand, P4 is easy to pick up and has a ton of uses outside of Pensando. It can be used in a variety of projects to build programmability and extend systems. You don’t have to limit yourself when you learn it. And, just like any good open project, the improvements made by the contributors flow back into the project as well. Everyone who builds on things builds better things for the future. I’m not saying you can’t do the same with Verilog, but the nature of the language and the way that FPGAs are designed tends to lead to a platform that is more closed and leveraged for competitive advantage. With P4, the roots are there in the language. The advantage comes from the way that the Pensando team uses the hardware in its platform to make P4 work well.
Bringing It All Together
Pensando is in the early stages of making something big. Their platform is currently shipping with NetApp and HPE systems and I’m sure we’re going to see wider adoption, especially in cloud providers. With the power of P4 behind what they’re doing, the sky is the limit for their solution. I’m excited to see how much better Pensando can make people’s experience going forward. The more successful they are with their ideas the more P4 will grow. And that’s a programmability win for everyone.