Hi, hi everyone, thank you for attending. So we're going to talk about BPF again. So many of you probably know that we can somewhat trace many things on Linux with BPF. I want to talk about how to try and understand what may go wrong with those BPF programs themselves. So not trying to try some figures, but just the BPF programs. So I'm Quentin. I've been working with BPF for the last four years or so. First in a company called Sixwind doing software acceleration for packet processing for networks. Then at NatureNum, where I worked on hardware fluid of BPF packet processing. So with all of that, you may find that some of the examples are slightly more focused on BPF for network processing rather than tracing, but everything I would present should be the same for the different use cases. So BPF is the extended version of the packet filter. You could use it to write your own programs, for example, in C code and then compile them into the BPF bytecode and inject that into the kernel where it is verified in order to make sure that the programs are safe and that it terminates in order to avoid security issues or crashing your kernel. These kind of small issues you want to avoid. So you have an interpreter in the kernel. You also have a JIT compiler to get better performance with BPF programs. And once they are loaded in the kernel, you can attach them to one of the existing hooks. So for example, network processing or tracing hooks. So yeah, that's about it. So the instructions are 64 bits. You have 11 registers, 500 bytes stack. It's not really complete in the sense that we don't have generic loops. Now we have bounded loops. And it comes also with a number of additional features. We have maps that are shared between BPF programming in the kernel and user space or several BPF programs. We have some functions we can call from the kernel. We have BTF on which I'll come back later. So that's about it for BPF. The following diagram can summarize the workflow. So we compile our C programming to be BPF instructions that we inject into the kernel. It may or may not be JIT compiled. And at some point we'll attach it to a hook where it's run well even there. So whether a function that we want to trace is triggered, for example. So the rest of the presentation will be organized like this. Like this. That's better. So remainder of EVPF that's done. The tools to inspect BPF objects. So we have a number of them. I would like to introduce them in the first part for the different steps of that diagram I just showed before. And then in the second part, I'd like to make a somewhat deeper introduction to BPF tool which is used a lot to try to get some information about the BPF objects loaded in the system. So that will be programs and maps, for example. I would like also to give a brief overview of the possible next steps in terms of BPF introspection and debugging what's being discussed at the moment in the community and what we could do. So I just forgot to mention the main use cases for BPF. So we have networking, tracing. We have also some use cases for circuit filtering between C groups. There is work in progress for Linux's security module. And we have also more use cases, smaller ones that exist today and probably some others that will appear in the future. So let's start with the first step of our workflow. When I try to compile a C program, for example, into EBPF bytecode, at that step of the process, I want to make sure that the EBPF bytecode is consistent with the program I had in mind, with what I wanted to create. So how can I do that? So I have this clang command line because you compile your C into BPF with clang and LLVM. There is also a GCC backend now, but it's not as complete as clang. And once I have my object file, I can use LLVM objdom to dump the bytecode of the program. So that's what we have here, B7. And the rest of zeros is putting the value zero into register zero, which is used for storing the return value of the program. And then I have a second instruction which says exit and return from the program. So return zero, basically. I can also get the C source code in that output if I were to provide the dash G flag to clang and use the different options with LLVM objdom. So that's useful to check what I have in my object file. I have an option also that might be useful, which is instead of compiling directly from C into BPF bytecode, I can compile into assembly, EBPF assembly. And that gives me an assembly file, a .s file, that is much easier to edit if I want to change my BPF code itself without having to write all the code by hand. And if I want to test a specific sequence of instructions to test some kernel BPF feature to test, for example, for hardware flows, we wanted to make sure that some instruction sequences were processed in a particular way. So that's useful. And clang again can compile this assembly into regular BPF. So that's it for the first step. There's not much to debug really at this point. That's mostly to inspect things. That's also the case when you try to load your program. So you have your BPF bytecode and you're trying to mostly pass the verifier. That's something here in the kernel acting as a guardian somehow and that often tells you, this I don't want of it. There is a security risk, so you have to change your program. So we want the program to pass the verifier or at least we want to understand why it's rejected, which is essentially improving the program to get something that works. So we have a variety of resources that can be used to inject the program into the kernel and possibly get this output information from the verifier, the debug information that the verifier sends back. So there is the BPF, which is in particular used in BPF tool, which is a common line utility. For networking we have IP, TC, BCC, but BCC is mostly used with tracing, use cases, tracing programs. So we can load programs with those tools without having to reimplement everything ourselves and use and code manually the BPF system code. And we can do some additional management of the BPF programs and maps. So we have different things that can give us some information. We have the logs from the verifier. We have kernel logs sometimes for some specific BPF errors. For networking we can have netleague stack messages too from IP or TC for example. And we have some places where we have documentation to understand those errors. So typically that would be the filter.txt documentation file in the kernel documentation or the CDM guide about BPF which is really complete. So this is a non-exhaustive list of what the verifier tries to check. So if you have non-valid BPF syntax it will be rejected, too many instructions more than the kernel supports it will be rejected and so on and so forth. So just so that you can have a look at an example error message from the verifier. So I'm trying to inject a program here and I'm trying to read a packet, a network packet. But I haven't checked that the offset inside that packet is a safe offset in the term that my packet is big enough for me to try and access the given offset in the packet. So I have a potential risk out of bound access which may never happen because if I'm trying that on the second byte of the packet I never have out of bound access because my packet will always have a MAC header so I virtually have no risk but the verifier doesn't care if logically there is a risk out of bound access the program is rejected. So the message is very useful when you know what you're talking about BPF context invalid BPF context access but for newcomers especially that's very cryptic messages it's very hard to understand what it refers to. So we would like to have some better things in the future maybe some additional documentation or FAQs that would tell us where to look in that case but still we do want to have those messages so it's especially important to be able to print them into the console or you're just on your own to understand what's going on. So we have some debug flags that can be passed to the tools to the various tools so you have to provide for example if you were to inject all on your program with a custom management program calling the BPF system call yourself you would have to be careful to pass a buffer to the kernel too so that the kernel can write into this buffer the logs that correspond to that message which we saw just before because we have a number of tools already such as BPF tool and Libbpf which is used in BPF tool such low level buffer management is already done for us to some extent but for example Libbpf itself does have an additional number of debug information so that might be information about hey now I'm trying to inject a program in the kernel or before that hey now I'm trying to perform health relocation about some stuff from a given section of your object file that I'm trying to put back to the correct place into the rest of the BPF instructions we have a number of health magic stuff that's happening before injecting the program so you may have to tell Libbpf to dump this information so for BPF tool for example you can have information from Libbpf and from the kernel with dash-debug option so that's something useful to know too so for interpreting this information we have that's the same locations that I mentioned earlier the filter the text documentation the Selium guide there is some additional information now under documentation slash networking I think slash BPF although it's still not perfect I think the hardcore solution if you don't get anything better is to go and read the kernel code yeah that's not really ideal too so yeah maybe in the future we'll have something a bit more user friendly that would be nice to have sorry about that so now we have managed somehow to fix our program and to pass the verifier based on the output we managed to make it work to add the check that was missing for the packet access so the program is now loaded in the kernel it's not attached yet it can be attached it's just here in the kernel it's referenced by something in user space so that it doesn't get wiped out from the kernel so that can be a file descriptor typically or when the program gets attached then it's referenced in the kernel until we we detach it so we have our program sitting here and what can we do with it so we have an options a number of options such as listing existing programs in the kernel and maps and dumping the instructions for those programs of the content of those maps so maps will typically be array maps or hash maps or there are a number of additional maps for some specific use cases so BPF tool here is the the main tool that we use on a daily basis to inspect those objects when they are loaded in the kernel I'll come back to BPF tool later though I'll just move on to something else which is BTF for BPF sorry for BPF type format so since kernel 4.18 I think so that's recent BTF objects can be used to embed some debug information about the BPF programs and maps so it's something that's similar to the dwarf format that's being used with JDB for example so you have a number of information stored into your object file and that are passed down to the kernel when you eject your program which means that the kernel may have some information about the BPF programs or maps so for programs it's just a matter of using a recent enough version of clang and lvm and passing the debug flag for maps we have to do some wrapping in the source code so what I have here is a classic definition of a BPF map that would be in the C source code and I have above that to to add some information in particular about the type for the key which is a pointer to a need and the type for the value which is a point to that struct there are more details sadly just mostly in the commit log of that change for now the reference for how those things work would be samples and self-test in the kernel repository for now we're still waiting for documentation to catch up so an example of a program that's being dumped with a BPF format I have the sorry didn't want to click I have the regular BPF bytecode instructions here and below and in the middle of that I have the C instructions I hope you can read hopefully somewhat so here I have an int balancer ingress which is the name of the function here I have if data plus offset is superior to data and then and my program goes on so this is the C instructions that were used to compile the program into BPF bytecode but I get this information from the kernel now the kernel knows this information about the program so that's useful to understand what's going on and it's also being used for some other BPF features in the sense that ptf objects like this are checked by the kernel especially for mats that are checked for consistency so that you cannot just load anything, any information you would like to but something that really corresponds to the map that's being loaded and some advanced BPF features rely on BPF objects to work but that's something different so just let's just think of it as deepening information available to us for now so I have had the possibility to inspect my objects in the kernel and that's good I have my programs loaded now I want to run them maybe so I want to do some actual work with my programs, some processing, some tracing whatever so I attached them to one of the hooks in the kernel so for tracing that would be trace points or K probes for networking that would be TC hooks or XDP at the driver level and for the other use cases but how can I understand why my program doesn't work as I expected I mean I've attached my program to an interface and it doesn't drop the packets I wanted it to drop or it doesn't give me the arguments of the function I was expected to trace so what's happening we have a number of solutions we don't have a step by step debugger yet so it's mostly again about introspection we do have a printf like thing because in kernel it's more printk like thing it's a function that can be called from the bpf programs themselves so it's just when you're debugging a program with printf everywhere that's the same thing except it doesn't print to the console because it runs in the kernel so it goes to psfs file or pipe you have two files actually that can be used and you get the output of whatever information you feed to your program so you have to use a constant string at the first argument but that's pretty much the same thing as other printed functions otherwise so in that case I'm printing the four first bytes of packets so I pass format string the size of the format string and then the data that I want to use for person x here so that's good for understanding what's going on that's not good in terms of perfments so we have a different mechanism which is a bit more complex to use perf even arrays but that can be used to stream data more efficiently from the user space so that's what you would use for example if you were to re-implement TCP dump but with BPF programs attached to XDP interface you would stream data with perfunet arrays or you could use that to send the flow of data like for tracing each time a system call is called and you want to print the arguments for that system call that's also possible to use perf even arrays to notify the user space and user space can print them into the console so you could have something that's close to a trace at least in appearance you would have something somewhat similar so yeah and one of the advantage of this is that it can be used with hardware for network processing too so one thing that's interesting too is that BPF can be used for tracing right so why don't we reuse BPF for tracing BPF programs well actually that's possible now since the latest I'm not even sure it's out 5.5 I think it's being it's the merge window right now so we do have a possibility to attach BPF programs at the entry or the exit of another BPF programs at least for networking programs I'm not sure it works with tracing programs so at least for networking programs okay so but for networking programs it's supposed to work so you can have the the input packet the data of the packet you are processing with program you are debugging and you can also get the output data so you can check the difference between the two and see how your program managed to process the packet you can also use BCC or BPF trace to inject programs to trace the kernel if you are hitting some some unknown issue that's happening for example during verification time I've been using BPF trace a couple of times to understand what was the function inside the kernel verifier that was rejecting my programs so it can be useful to some extent but that's not the easiest way to understand what's going on but still that's something good to think about if you're stuck otherwise so we have a feature that can help us testing BPF programs and by testing in test runs I mean instead of attaching a program to a network interface and wait for packets what I do is manually tell the system to run this program not on a real packet but on that input buffer and to give me back the output data once the program has run so there is a specific program type for that that can be no that's not a program type sorry that's a supplement for the BPF system code and that works best again with networking program because it's a bit more tricky to use with tracing programs so you provide input you get output and you can see what's happening it has some limitations so not on program types it's a bit difficult to check how general data structures that might be changed by the program are changed or not it's a bit more complicated to implement some BPF helpers are so those functions that you can call from within BPF programs are very hard to support with that mechanism for example when you try to redirect a packet to a different interface how can you check that it really worked just by getting an output buffer that's another issue and it would like well some people at least would like to have this feature available for non-route users in order to run test suits on BPF programs but there are security issues again so yeah so a number of these limitations have been proposed in a conference in March in a Dev conference for discussion so things might evolve and improve hopefully and other things that might be useful for understanding what's going on is that you have statistics now regarding programs so you have to activate them with this control and then you get the duration of your program run and the number of times the program has run so at least you can check that your program has run the number of times you expected it to run it's not enabled by default because there is a slight overhead for gathering statistics when you run the program so you have to to activate it a small number of machine learners thinks to know about debugging at runtime too so PERF has support for annotating GTBPF programs so you can run PERF top to the annotated part and you can find the instructions of your program on which the CPU is spending some time so who knows if you need to check what's happening on that side you're being covered there are a number of user space BPF machines so they are nowhere as complete as what's in the kernel but still if you wanted to run a BPF machine under GTB today you would have to turn to one of these user space machines so your BPF especially is in C or BPF is in Rust but otherwise they are pretty equivalent there is a small debugger too I think it's step by step I don't remember it's a debugger too but it's for legacy CBPF which is much simpler than a BPF so also simpler to debug and that's another kernel repository so that's about it for loading and running BPF programs and just wanted to speak quickly about writing programs in user space to manage your BPF objects so what we want is the ability to debug such programs to improve BPF support in the tool chain in general so we have the ability to use those frameworks that work already, BCC, BPF trace LibCafeers library I've been working for and that turns some filtering rules into BPF programs and network filtering rules into BPF programs you have LibBPF of course that can be used to implement your programs managing BPF objects you have a feature that allows you to dump the list of BPF related features on your system with BPF tools so that you can check what's available, what program types are available what map types are available what BPF helpers even and if the BPF is called in the first place it's supported these kind of things since it's the debugging tool anyway we have support for BPF in S trace we have BPF support in Valgrin although in Valgrin I think it might be getting a bit outdated but S trace I think is mostly up to date so that's really nice to have especially when you're trying to inject a program into the kernel and you don't get much information you just get a newer code and turns out that your BPF tool program has been trying several different things like checking that basically I can inject a very simple program and then it tried to create a map and then at last it tried to inject your program so which of those different codes failed I'm not really sure so I can trace it with S trace that's very useful so that's it about the introspection debugging BPF in general I wanted to talk a bit more about BPF tool because that's really useful to do all those things not to load them but most of them so one of the I hope you can read at the back of the room one of the simplest function is listing the programs that are running on the system so I have BPF tool prog show so this is a list of programs attached to to so get in C group so the first seven programs had actually been loaded by system D on my system for fire rolling things and then at the end there is one program that I had added to about XDP so networking processing I can list those programs I can also download the instructions so I can download the what we call the translating instructions that's after my program has been loaded into the kernel kernel verifies the program of rewrites and because of that there are some small changes possibly not in terms of of the logics of the program but just in terms of small offsets regarding to the different data structures being used so I can have just these instructions as they are in the program but I can also download the JT instructions in the second case it was JIT compiled into a native binary for X86 and I can get all those instructions so that's interesting to see what's happening with the JIT compiler I can load the program I can attach it to a variety of hooks I don't think I can attach it to K-progs or to response with BPF2 at this time so I have the related commands BPF2 prog load BPF2 prog attach C group attach and for networking that will be net attach yeah I can work with maps too so I have BPF2 map show to list the maps all those LPM try were related to the system D programs injected in my system I can look up entries in maps so here's the case of a very simple array map and I'm dumping the content of the first entries so what we don't have here is BPF which is missing with BPF information I would have more data than this I forgot to put the picture I would have the fields so my entry here comes from a C stroke with a number of fields of attributes and I would have the name of the attributes and the values beside them instead of just blob of hexadecimal values so I can dump the full map at once too I can update an entry in the map or delete an entry in the map to even works for some specific map types such as the one used for jumping from one program into another one you have this kind of features and BPF2 is really helpful to just update the map I'm sorry this picture is really small I'm not sure why so the idea is what I presented earlier can I zoom on that I don't know how to zoom on that I'm sorry so it shows a list of BPF features spotted on the system first one is BPFC's call for privileged users is enabled on that system cheat compiler is disabled and so on and so forth we have a number of BPF related config options that were used when compiling the kernel so that we know what BPF features will be available and all that can be reused when you write user space programs working with BPF stuff so this is not too big but not as small picture of BPF programs so what I'm doing here is just running a test run of a program I've loaded previously into the kernel so I'm providing so I have BPF2 program this is a handle to my program I'm providing input data data in and my input file data out and dash to dump into the console and I want to run that program 10 times so I get here the output data hello twitter that was because I wanted to put that in a tweet return value of the program is zero and I have the duration on average of those 10 runs so here it is for test runs so some additional features for BPF2 without any screenshots because they are too small anyway so we can list programs per C-group per tracing hook so we can really inspect at that tracing hook what do I have we can load several programs at once especially useful when you have a number of programs with tail calls and you jump from one into the other one we can dump directly into the console the output of BPF trace printk we can dump from perf event maps there's a thing about generation of a skeleton header file for for for helping with writing programs for managing BPF objects but that's pretty new we have batch mode, we have JSON support which is pretty nice batch completion and more so I had made a Twitter thread if you want to look into that more information obviously there is some documentation for BPF tool at least we have man BPF tool and different man pages for the different sub commands so BPF tool pro BPF tool map and so on so here you are ready to use BPF tool now it's it's being packaged now on Fedora Ubuntu 2 on the latest ones I think should be added to 1804 some time otherwise BPF tool is located under the kernel repository few words about what's coming next for BPF debugging so we want to add more stuff to debug like can we have more modular programs with more modular curves between programs so there is something that was added very recently to the kernel for having that could that help for debug maybe there is a discussion about adding more information to the ccfs system file and also discussion about improvements for the test run which it would be really really so nice to have a real step by step debugger for BPF we don't have that at the moment but people are really thinking into that so how can we do that should we sorry why pitrace pitrace where is pitrace I don't know pitrace enough to know if that would work that's an idea maybe so we have a we should talk about that so here are some ideas that were proposed besides pitrace running a program in a VM freezing it is that doable extend the BPF test run interface attach kprobs to every single instruction is that something doable that just leads to explore for now we I would like at least have an updated documentation because what's existing is not always up to date and I definitely think we would beneficiate from a real troubleshooting guide that would tell you this error is often related to that thing in your source code that you should change to that other thing so again in particular the things about step-by-step debugging and ccfs are being proposed to the next net dev conference in March so to conclude debugging BPF programs is not trivial we don't have a step-by-step debugger yet but the tooling is getting better and better we have more tool more efficient we can dump instructions and map contents at any stage the workflow we can print data when the program is running we can do test runs in the kernel we can run in user space BPF VMs that's not the best we can do but that can help debugging what's happening BPF itself can be used to inspect other programs which is really nice we have added here the BTF debugging for format that's being used to provide more information so all of this it's here it's already very good and hopefully we will have better things in the future too so fingers crossed and that's it for my presentation thank you I don't know if you have time for questions quick okay so yeah can I do this and what is the best API you can if you want to generate it yourself so the question is so if you want to code your own BPF assembler program you can do that you might hit a number of issues not on basic program it will work for basic programs not using advanced features but if you're trying to use a BTF debugging information for example or more advanced codes from one program to the other one there is a number of things that are happening when I mentioned health relocation stuff and this is getting more and more complex so you could re-implement that but that would not be trivial so lead BPF is really a reference here it doesn't prevent you to work on your side with another BPF assembler but for more complex stuff you will have more work to do and more time to spend on that other questions yes sorry can you speak louder is it possible to manage a hardware interrupt from BPF program I don't think so I'm not sure I don't think so you don't have a hook on that I think so I would say no there wasn't a question in the back yeah sorry can you speak louder that's the question yeah so how big is a network programming is a network BPF program on average it was limited to 4k instructions before now it's limited to up to 1 million instructions but that's not really true because there's a number of instructions that the verifier can check and it checks some instructions several times and so the average it's hard to tell because it depends on what you're running but the 4k limitations was definitely a hard limit to some people and they want you to have more than that that's also why you can jump from one program to another one one motivation was to circumvent that limitation so I don't have a number in mind but programs can range to a few few dozen instructions to thousands and thousands of instructions now so it really depends on the complexity of your programs you're welcome


Targeted therapy is where we have identified a mutation that is a driver in your cancer and then we can give you a medication that's specifically targeted to that mutation. It's not chemotherapy. It's not attacking every cell in your body. It's a therapy that's being delivered specifically to where the cancer is. I had a patient who is a young woman. She was doing perfectly fine and then suddenly got a headache and then it became a seizure. She came into the emergency room, found that she had lung cancer spread to her brain. Totally devastating. She didn't smoke, lived a very clean life. Turns out that after getting her radiation that she had an epidermal growth factor receptor mutation and we were able to give her a targeted therapy. Now she takes a pill a day and has been in remission for more than a year. Seeing patients living their lives normally, it's what brings joy to my day. It's the highlight of my day.


Okay, we gotta throw some co in here, okay? Oh my god! Alright, what's up everyone? Look, I got some scary Thomas videos I wanna watch. There's a couple of them I haven't seen yet, so I wanna check it out right now. And there's a Five Nights at Thomas game that I wanna just play the hard levels. Like, we're not gonna do the easy stuff. We're just gonna play hard levels and see if it's actually scarier, alright? So let's check it out! The first video is Thomas the nuclear- The thermal nuclear bomb by Chugga Y.T. One of my favorite channels ever. He's super talented, so go follow him. These look like some Pixar stuff, man. Like, this guy's so talented, like, for real, for real. Chugga Y.T. About to go big, bro. Wow. He looks so tall. I thought he was gonna see an explosion, I thought he was gonna blow up or something. But, hey yo, look, Chugga Y.T. Awesome channel, go and follow him right now. So the next video I wanted to check out is by cameraman of Sador. And it's called Skibbity Thomas Tank Engine 1. Let's check this one out. It's only 26 seconds, so let's go. Thomas, okay, Thomas. So random. What is this? He's like a transformer, Thomas? Oh, yo. Thomas is not playing, bro. That was pretty dope, too. And I actually haven't watched this one, too, from Chugga Y.T. It's Thomas Tank Engine in IMAX Theater. Let's see this one. Oh, okay, so he wanna go watch the Thomas video. Bro, if you make a feature film, I'll go watch it. I'll go watch it, bro. Okay, yeah. We've watched all these videos, but it looks like he's getting... He's trying to get a better seat. That was a fire video, too, with Thomas and the cars. Hey, sir, what are you doing? Hide your cell phone now. You can't film here. They caught him. Oh, he's trying to bootleg the movie, or what? He's getting closer to the screen. Oh, right there is where I like to be in theaters. I don't like to be too close. He going all the way to the front. Okay. Hey, he got super close to the movie, huh? What's gonna happen? Is something gonna happen? I feel like that Thomas is looking at him with a little key, but it's just a screen. Oh, dang, okay. That was dope. Chuck a whitey.  So now, since today, the Five Nights at Freddy movie comes out, I wanna actually try this game out. The Five Nights at Thomas. Look how creepy Thomas looks right here. Look, let's see. Do it again. Do it again, Thomas. Let's see your eyes. So I just wanna check it out. Let me press Enter. All right. But I didn't wanna do that. Look, I'm gonna do, I'm gonna start off on the third night because I don't wanna do the beginning. Yeah, it goes slow. So let's just go from here.  I'm gonna put the volume up so I get scared. All right, let's go. All the way up. Thomas will get angry if you use the flashlight too much. Well, guess what, little homie? Hello? Hello? I see you. Okay, we gotta throw some coal in here. Okay. A little bit of coal. Oh my God! A little coal. Oh my God! I didn't know it was gonna be so fast. All right, let's try it one more time. All right. All right. No, no, no. Hey, look, chill. All right, I'm trying to answer the phone. Okay, there we go. Okay, let's try to beat this. Let's try to beat this. Ah, yo! Chill! Thomas! Thomas, chill, chill, chill, chill, chill. You don't even know what to do.  This is so loud in my ears right now. It really scared me, dude. Okay, so I'm just not gonna use the flashlight too much. Okay. Oh, I could close the door.  I didn't know I could close the door. Okay, let's close that door. He's right there. Hello? Oh, I gotta make sure this... I see you. I gotta make sure this cold... Okay. I'm gonna just try it one more time. It's because I haven't gotten the rhythm yet. The rhythm yet, okay? Can you just answer the phone? Hello? Hello? I see you. Oh, it answers by itself? Uh, well, good job. I guess. Okay, okay, okay. Okay, we good, we good, we good.  God, like, y'all can feel my heartbeat right now. Why is this so hard? Okay, one more time. I just... I can't just leave this like this now. Like... Maybe it's because I'm throwing too much coal or what? Do I gotta be more patient? All right, you know what? Obviously, I said I'd get this game. I don't know why I thought it was gonna be easy. But obviously, I am wrong. But look, look, if Junior wants to do this, maybe on livestream, we'll do it Monday if you guys are down. But it looks like there is something else. Like, there's like another Thomas? Or something?  So, hope you guys enjoyed that. Oh, by the way, I forgot to tell y'all, by the way, if you guys want to go give me a follow, you can go on Instagram and follow me on boolehheroesmikey. And by the way, that's it. Hopefully you guys enjoyed that. That was super scary.   But make sure you guys click like and subscribe and hit the notification bell. And Junior will be live Monday. I'll probably join him, alright? Come through, alright? See y'all later. Peace.


Understanding the role of topology in determining electronic structure can lead to the discovery, or appreciation, of materials with exotic properties such as protected surface states. Here, the authors present a framework for identifying topologically distinct band structures for all 3D space groups. This article was authored by Hoi Chun Po, Ashvin Vishwanath, and Haruki Watanabe.


What's up everybody, Jayce here for jaspyscasebreak.com 23-24 Panini Prison Basketball sold out This is a hobby edition 6 box half case break PYT number 10 guys and it has been marinating for a good amount of time guys We got it done today Appreciate you guys Let's see if we can get done guys All right, so Joe did number this PYT 10 PYT 10 so Let you know all the second half that's there. All right, we go. We got Jermay Grant There's a little scoop and Kevin Knox a little white for the Blazers Blazers that's going to Tristan and we got Hunter Tyson with the Denver Nuggets Denver Nuggets is Mark. We got Ben Shepard, Jaylen Pickett, and then we got Patrick Beverly to 199 Luca Donchich there's pods K-Song Sonogo and we got a nice Clay Thompson here At 81 out of 125 blue ice little color match there for the Warriors going to Sean Maddock There's a little Brandon Miller. All right, do we have a redemption? Jaylen Hood Shafina, there's two parts like here 19 out of 49 for the Lake Show. I haven't been with that one. Redemption Sensation of signature's prism silvers Des Moines Hodge. I have no idea who Des Moines Hodge is That is for the Lakers That goes deep into their checklist Is this an old school player or is this a rookie? Oh, no, he is a rookie. And then we got Kamara to 199 for Portland Nice K-Song Wallace Little white prism. That's a nice one there for the Thunder Andrew with that one There's a Thompson twin We got Nicholas Batum for the Clippers and then Jovik to 49 And wow, how about for the Super Sonics? Ray Allen Going to the O.K. Seat Thunder Andrew That's 15 out of 49. That's pretty sweet Jaylen Hood Shafina Silver Ray Allen there to 175 And then Franz Wagner for the Magic Out of 75 Max Strauss and we got an Amari Bailey out of 299 for the Charlotte Hornets Johnson Johnson Oh, shit. Is that gold? I think I see gold First of all, we got a James Worthy for the Lakers autograph Blue signature 17 out of 49 I think I see gold guys. I see gold It's got a big color Big rookie gold Scoot Hornets PJ Washington Jr. Man, I would have loved the Brandon Miller But PJ's been doing pretty well for the Dallas Mavericks now 5 out of 10 gold Gold Hornets going to Tristan though All right guys, so again, that was a nice little hit there guys All right, next box What do you know man, what do you know? Huckiz and SGA hit for me already And then I have a SGA or a Huckiz and Giddy hit for me already Do it, Huckiz has 24 points That's crazy Jordan Poole There's a Wemby base You got them in tex I thought you already had left Look at my tex Kate Cunningham And Austin Reeves Reeves We got Noah Conley For Brooklyn Andrew with that one And Serger Barry Rice For the Spurs Victor Oladipo Whoa Nice, nice skin That's a Thunder edition though Thunder For Andrew Oh, how about this baby? Very nice for Detroit 112 out of 199 Nice color match Asur Thompson for Detroit Andrew got that from that team random Very nice And then little Kenneth Lofton For the Grizzlies Yolkich Oh, another teaser Man Amar Bailey this time for the Hornets Out of 49 Geez That was a nice box though All right, halfway through guys Kulabali Serger Thompson And Matisse Dibalt For Portland We got Patrick Ewing for the Nex Go need Eugene Lee Scoot And then Jalen McDaniels For the Raptors Raptors is Tris Brandon Miller And Colin Castellan For the Lakers And Brandon Ingram that's 199 First Brown First Cods K-Song Gordon Hayward Nice Scoot Red Wave For Portland going to Tris Lively And a little AI And another Jalen Hood Shafino Lakers having a great break And you got a gold P.J. Washington Jr. Hakesh having a great game Against my Thunder right now And nice as Suhr Thompson Got a nice blue color match Now an autograph too Detroit Andrew There's Amen And Nikola Jovic For the Heat To 49 Miami Heat That's going to Michael Joris Walker Silver Prism Rookie Petrussev And then Alexander The Zenkov Ogbaji There's that Des Moines Great break for the Lakers man I know that's craziest You still got Jalen Hood Shafino colors But Mojo Castellan Or Castleton There's another 1v base We got two AI Out of 199 Again More for the Lakers man Getting some crazy amounts of color Stralter Jaden Hardy Alrighty guys Last box here That's what I'm saying man And we got Kevin Love To 299 Grady Dick For the Raptors Winner Tristan There's Brown and Miller Holotoscope Jason Tatum And nice Chris Murray there Marcus Smart to 199 For the Grizzlies Gonna Matthew Olivera Then we got David Thompson For the Denver Nuggets Denver Nuggets autograph is Mark We got Malik Monk Otto For the Sacramento Kings Going to Evan And we got Bol Bol for the Suns Out of 199 Suns is Robert Love me some Bol Bol Alright we got a Silver Wemby Luck of the Lottery Take that So 2 Wemby base and Luck of the Lottery Hopefully there's a color hiding in here for you Sean We got a couple Dwayne Wade for the Heat He's the number 2 overall pick Colby Jones And a Tyrese Halliburton Alrighty guys Well I'm not sure how the first half went to be honest But like this half was pretty solid I mean I've seen a lot worse We've had a lot worse here But I was hoping for a big big big nuke But we did get some nice stuff for For a handful of people I'll do a quick little recap right now as well Alright so like I said I'll top load all these autographs right now But this was the majority of them A nice Grady Dick Asoor Scoot Ray Allen Quezon And here are some of them over here The Wemby's Asoor The Snakeskin The Gold So there you go guys Thank you guys so much guys This was number 10 Jaspys casebreaks.com


Welcome to the power van the cubes coverage of the HPE Aruba Pensando announcement Antonio Neary is here and John Chambers to help us set up the day guys great to see you thanks so much for coming on yeah thanks for having us today David's gonna be fine sure is so two years ago you guys might recall we are in the Goldman Sachs offices overlooking Manhattan and that's when you announced the investment in Pensando the relationship two years goes by fast how's it going yeah definitely two years ago boss by fast and a lot has happened right a lot has happened since then what I will say first and foremost the partnership had got stronger much stronger because as John and I and the team work together we validated the vision the vision that ultimately the world will be way more distributed that edge to cloud architectures will be required and the original idea that John had with the Pensando team partnered with us to bring that cloud experience to the edge it goes stronger and stronger and stronger at the same time we also introduced new joint offers with the Pensando silicone and software with our HP ProLiant servers and since then we have learned quite a bit right so which inform us what the next step should be and that's what we hear today to talk about not just the work we have done around the distributor services cards as we talked about it in the past but now the distributor service is switching which we believe is another market in transition opportunity for us to disrupt as we go forward so John speaking of transitions you've seen a number of industry transitions dating back to you know my East Coast days yes but so what was the wave or the waves that you saw that sort of led you to this new venture to the partnership with HPE well the exciting part is Antonio and I can almost finish each other's sentences you compete against market transitions enabled by new technology the biggest transition of all is the clouds moving to the edge the computer moving to the edge your storage security your software applications etc and we saw this wave together and when you talk about what's changed in the last two years I think it exceeded both of our expectations how where our teams work together we outlined audacious goals of a hundred million in terms of orders within the first two years and we hit and exceeded that we said we're going to be in a billion after three years after we had a hundred million we're on track for that and if you watch our dream of democratizing the cloud giving the capability for any major hyperscaler to compete within Amazon Web Services originally with them and now bringing it down to any enterprise or any government agency be able to do it and the ability to do this as a team is what's unheard of in innovation is hard to move with speed two companies to move together with innovation and more focus on the outcome than anything else our teams work even better than I thought we we could and I think you're seeing today the next major phase that we make where we take these concepts and we're going to revolutionize the switching industry every 10 to 12 years there's a chance for a major change and you get through that and often the incumbents don't change we're going to get through this we think very very well and we're again setting a tremendous challenge to the market with you know in liberty software and silicon and programmability throughout the whole architecture and results that I think even surprised our engineers a hundred times the scale of the nearest competitor in the market today at 10 times the performance at one-third the total total cost of ownership and Tony and I can even sell that with that our teams are functioning well and it's that ability to see markets and say how does your partner win that culture is so important to us in terms of the direction it's already a chime in on this because you for years have been talking about the great basically redefining cloud not just a remote set of services somewhere out there in the cloud but connecting to on-prem and hybrid multi-cloud out to the edge is that the big wave that that you see here is that what you're writing definitely is one component of the wave I think the other part is remember what I said in 2018 when I became CEO of Hewlett Packard Enterprise that the enterprise of the future will be a century cloud enabling data driven and through the unfortunate events of the global pandemic right that has been validated right we live now in a much more distributed and you know enterprise than ever before the original architectures that John obviously pioneered for for decades you know you have the data center and you have the campus and the branch now you have this extension called the micro branch the micro branch is our homes our home offices right but now what happens is that the cloud obviously is here to stay because it's all about speed and agility but it's also important that we define cloud correctly which is an experience that we should bring for all the applications and data and what we see that the vast majority of the data is created at the edge where we live and work here we are you and I and John having a conversation there is cameras everywhere taping this there's a lot of bits being created and those are bits I hope I value when people watch this but but to me that's the the big opportunity to really disrupt the cloud as we know it and bring that set of capabilities closer to what the action is the second part of this which I think is important is that what we saw with the consumption of it and this is where you know we have a vision to become the edge to cloud platform that you can consume as a service and that's our HP Green Lake offer but the other service offerings taken off to a level we have not imagined and it's not just the fact that the public cloud is there is everything whether it's in your premises or at the edge and that's why I'm so excited about the partnership with Pensanda to disrupt these age to cloud architectures with a know how that we have our go to market in the as a service model to accelerate those markets in transition you take the excitement of a company that's reinventing itself and you think about HPE they are literally the original Silicon Valley grad startup so much of what is great about the valley they brought Lou Platt who was the CEO at HPE when I came to Silicon Valley and nobody knew what Cisco was much less the internet they thought we were a food company I called up Lou and I said Lou I need help I don't know the valley teach me about how you've been successful he not only met with me once he met with me for three years at the end of the three years he said I said to him now we're really cook at this time we're going out of control becoming the most valuable company in the world for a while and I said Lou what can I do to pay the HPE back and he said very simply John give back to the next generation that stuck with me forever the values of a company the leaders where there was Lou whether it was the original leaders of the company or Antonio their cultures and values are so much aligned so we have a chance to change the market together I was all in and you know while we competed a little bit it in the past it was very little and now we have a chance to change a whole market and take on the John's and perhaps really disrupt the whole industry that gets exciting we've got a team that is built eight billion dollar products per year eight different times now we're going to do it a ninth and maybe a tenth together and to share that is truly exciting with a world-class team at HPE so let's talk a little bit about HPE Aruba and Pensando where you guys are going you started sort of at the core two years ago and I think you know I think Aruba in some regards is misunderstood I mean you're basically building a major cloud strategy around that stretches to the edge so what is it that you are trying to disrupt here maybe give us a little insight as to the industry transitions that you're seeing yeah so first of all Aruba is doing incredible well I mean if you see the our latest results yeah growing between 25 and 30 percent on a year-over-year basis we have improved profitability but what I'm really excited about is that our value proposition a mobile first cloud first approach is resonating with customers when it comes down to connectivity and analytics so to me that's an incredible value and in order to become a cloud company we leverage the Aruba infrastructure that was developed over the years to build a subscription based model to connectivity and extend it all the way to what we call the cloud which for us is the core business that now with John and his team we are changing the architectures around those are those components of the the solution so Aruba has been incredible foundational not only to grow the company but also to give us the foundation technology to become that H2 Cloud company so what we're doing with John we are taking out this new architecture to the next level of the the entire solution so we started with the server business we integrated these distributed service cards and now we are taking it to their rack level architecture and eventually to the you know data center architecture in a true H2 Cloud environment and that means we are introducing the distributed service switching technology which is again is a joint innovation between the Aruba IP and the Pensando IP which we think with John will change again every 10 to 12 years that switching market and it's fun to take on the big comparison bring them down which I love doing and it's also unique to see how fast our teams are moving together our cultures are very similar and we set audacious goals for a team and so far they've been exceeding them so you know a little bit about this networking market is this a is this a new category of switch is this how unique is this well I think it's all the above it's Antonio use the word platform and architecture it's a distributed service platform that now is going into switching as well its ability to redefine everything with software in silicon and that's a lot different than what the industry seen before and to move with speed in terms of software defined program ability everywhere everything automated and simple simple which makes it so easy to start how simple all you do is plug a server in to the switch and you look at what we're doing together already with the HPE servers and how you literally add value on top of with the distributive services card and platform so you see it all coming together how big could it be I think it will be the next generation and truly not just the cloud moving to the edge but internet working security how low balancing all comes together that really is going to change an industry group so I think it's going to be the next big product for the whole segment of the industry and I think it will bring tremendous value from the company obviously we love the technology and these these markets but ultimately about from the customer's perspective is less less capex because they don't need to add lot balancing and all these things that are costs and actually friction points and point of failure but also optics because to the point that John said right it's all about simplicity and automation and awareness around the the application and also the the infrastructure that ultimately we want this to be autonomous and intelligent so therefore is that an opex reduction on the runtime to it go ahead John it's in many ways future proof it's an architecture for the future not for the past when you get your peers that talk about scale in low single digit thousands and we talk about scale in millions you talk about performance that literally is tenfold in order of magnitude better and you build an architecture that allows the market to go where they want with easy use for your customers that's about innovation with speed that can lead no small company or no large company probably could do by themselves I think very few people in the industry would have the courage to do it but probably not the culture to remake it work well talk about HPE Pensando I mean you got small company big company and you guys have been at this now for a couple years it seems to be gaining momentum that that is in and of itself unique why HPE and Pensando well I think again start with a thesis that John and I share about the future as John said it takes courage to do these things and ultimately culture is everything well we jointly realized that the way we think the way we work is very similar these are two companies that are very engineering driven and everything they do but they put the customer at the center of how we think about the future and it has been amazing to me in fact I we connect every handful of weeks to check what we are and I keep you know in many ways here's the larger company in many ways it's pushing the smaller company to go further and faster and to me is all about speed so we think about what makes a strategic partnership work it has to be really material both sides in other words it has to change in industry HPE is done an amazing job you doubled your profits in the last four years and you're reinventing yourself again and again but it's a common vision of where the markets going to go as Antonio articulated very well when goes to the edge green lakes gonna be your delivery vehicle for it it's about bringing together all these technologies into one not individual appliances or approaches you do load balance and you do security you do skill and you do networking and it's about the best of each company saying how do you help the other country be successful when our teams are together other than their accents usually can't tell who's from HPE and who's from Pensando how should we be evaluating the progress over the next several quarters months years one of the sort of benchmarks we should be looking for well I think the most important metrics customer relevance in my mind the financials generally tend to follow that because if you're relevant is you know we were talking in our teams you know are you important your strategic right generally we are very important what we do matters but we want to be strategic and I think this joint innovation will catapult us to be way more strategic in everything we do so it's customer relevancy obviously from the financial perspective we both have an idea to create multi-billion-dollar businesses otherwise why doing it right so and in the market is huge is huge I mean you know Dave that obviously we are living an amazing time where data is exploding everywhere right and I think this is just a starting point right so we obviously start with an idea and a thought and a specific focus but if you think about the next generation is create data fabrics that are secure and then you can run these models with the AI machine learning that scale the network fabric becomes the core of everything you do right so think about it the way you ask the question it's been two years as of the announcement that we're making jointly since we made the announcement two years ago we've overexcited every expectation it starts with the customers as you said Antonio how many of the large customers do we have two years from now are we in the same leadership position like we are with the first generation of the distributed services platform and have we got a number of the very largest accounts in the world committed to us and are we still one to two generations ahead of our newest competitor two years from now like we are today with our current card capability and platform capability pretty cool partnership thanks so much guys for helping us kick off the power of and really appreciate it thank you the right there's your Betty we've got thank you a ton of content you're going to hear from technologists how they're trying to change the world what it means for customers you're watching the cube