WEBVTT

00:00.000 --> 00:16.760
Thank you for attending the meeting, this has been today, so I'm going to be basically

00:16.760 --> 00:22.000
just playing how did I get into EPPF for us and so forth, and why rust.

00:22.000 --> 00:26.720
I'm basically a Python developer, or you know, so I spend a lot of time working in open

00:26.720 --> 00:29.480
stack, which is an open source for you may know.

00:29.480 --> 00:34.000
So you may wonder why the hell did I switch from Python to Rust and so on, but first of

00:34.000 --> 00:40.980
all, go with me, I just have some quick intro about EPPF how it does it work, if it's

00:40.980 --> 00:41.980
going to be quick.

00:41.980 --> 00:47.620
So basically, EPPF started out as a new backend for some package filtering, and

00:47.620 --> 00:56.740
DLDR is a way to run user space code within the kernel, which makes it so much more efficient.

00:56.740 --> 00:58.740
So how does it work?

00:58.740 --> 01:06.100
Yes, super quick here, we got a user or a developer writing an EPPF program or an application,

01:06.100 --> 01:11.500
then it gets compiled using a compiler such as LVM or whatsoever, and that gets into

01:11.500 --> 01:18.140
a bad code, and then by code gets into, gets loaded by your EPPF library, and then it gets

01:18.140 --> 01:23.700
too very far with what's heavily covered in the previous session, and it gets to adjust in

01:23.700 --> 01:29.420
time compiler, which makes it so much more efficient, and that's why we get basically

01:29.420 --> 01:33.860
like a machine code really, it's much more efficient here.

01:33.860 --> 01:42.260
We also, then we attach our EPPF program to what it's called a hook, and a hook is basically

01:42.260 --> 01:48.500
a set of system events such as thinking about like a sillium, a hook would be something

01:48.500 --> 01:54.460
has happened in our sneak or something has happened in our system whatsoever, and then

01:54.460 --> 01:59.720
we can call a series of what we call helper programs, such as for instance, I got an incoming

01:59.720 --> 02:04.820
packet, and I just want to forward that to another sneak or whatsoever.

02:04.820 --> 02:10.380
In order to sell, I also have like a set of maps, which is basically shared a structure

02:10.380 --> 02:15.940
of memory in between the kernel space and the user space.

02:15.940 --> 02:21.180
We're copying this a little bit, this is basically like we attach in a kernel space,

02:21.180 --> 02:26.260
we attach to a BPM hook, network events, it's called whatsoever, we may write data into

02:26.260 --> 02:30.780
maps, and the user space we deploy the program to the kernel, we may refer them up, and

02:30.780 --> 02:36.020
they may map it itself, it's used to basically start, and the structure space is limited.

02:36.020 --> 02:41.100
And then we here, you can see some super quick, then dirty, like a space, there we got

02:41.100 --> 02:48.100
a topop program, it may use them up, this is an example, written up why some go library,

02:48.100 --> 02:52.980
and then we got their compiler by fire and so forth, and this is fine so far, but I'm

02:52.980 --> 02:58.500
going to be a developer, why should I use Rust or Python or go, or I guess there's even

02:58.500 --> 03:05.660
some J about EDPF libraries, so we're last, we copy this a little bit, as I told

03:05.660 --> 03:10.860
you before, I am already a Python developer, so I try using Python, people of BPM, because

03:10.860 --> 03:16.100
what didn't work well, because first of all there is a BPM compiler for Python, called

03:16.100 --> 03:22.620
BCC, which is BPM compiler collection, but the thing is that you need to basically go and

03:22.620 --> 03:28.020
create your BPM programmer program as a string in Python, again, as you may know, Python

03:28.020 --> 03:33.020
is not a compile language, so it's interpreted, and this is working a way, so whenever

03:33.020 --> 03:38.060
it gets interpreted, it did go, compile a thing, and go along, and also this is some hobby

03:38.060 --> 03:44.260
in the pre-cated, and then we got CF course, which may be the main language to use for

03:44.260 --> 03:50.340
a lot of people when running and doing BPM, so we got BPM, it works, I'm not a CD developer,

03:50.340 --> 03:54.900
I go lost a lot, so I decided this is not a good thing to use for others for me, and then

03:54.900 --> 04:00.380
we got go, in the beginning I started using the BPM, I think what's cool to have, until

04:00.380 --> 04:05.260
I realized that it's probably the first one that was in the terms of library, so also

04:05.260 --> 04:11.580
the vocabulary, next, we got CD BPM, this one's very cool, so thank you for the

04:11.580 --> 04:16.620
isolation guys, it's really one of my time, it works well, I can also do go development,

04:16.620 --> 04:21.500
but I'm also working in some period, which I'll be speaking about later, called BPM, which

04:21.500 --> 04:26.780
was already written in Rust, so I just said, okay, let's give it a try, so we got a couple

04:26.780 --> 04:31.060
of libraries, lead BPM for AS, red BPM, if it's another one, which is no longer else

04:31.060 --> 04:43.420
to maintain it, and A, so why A, so this is a really real native Rust-based BPM library,

04:43.420 --> 04:50.340
so you may think about, hey, that's okay, but you probably be happy that it is dependent

04:50.340 --> 04:52.820
on the BPM anyway, so why others?

04:52.820 --> 04:58.180
We don't use that, this is using lip-cid, the dependencies are likely, and one of the things

04:58.180 --> 05:04.660
that we would like about that is that, well, first of all, it allows you to do what it's called

05:04.660 --> 05:10.060
BPM Core, in case you don't know what this is, it's compiled once, run everywhere,

05:10.060 --> 05:16.300
so based, and also supports what most modern kernel in Linux distribution allow you, which

05:16.300 --> 05:26.260
is like a BPM type system, which in between these two basically, they allow you to go

05:26.260 --> 05:30.940
and create your programs, and run these in every Linux, which has the modern kernel, which

05:30.940 --> 05:36.260
is very cool, so for example, the door of supports that, and you can get both CsFS calls

05:36.260 --> 05:38.940
from their directly under all.

05:38.940 --> 05:39.940
What else?

05:39.940 --> 05:44.860
It does support ASync, for instance, Tokyo and ASync, if you don't know, they'll start

05:44.860 --> 05:50.700
them, they'll start basically ASync to our libraries, so it was really cool, also, but besides

05:50.700 --> 05:54.200
that, which you may think it's going to be cool, and it works well, so I'm happy with

05:54.240 --> 05:57.240
ASync, what did you try to do ASync?

05:57.240 --> 06:03.640
ASync has a lot of support in terms of templating, what do I call for templating?

06:03.640 --> 06:08.800
Is there a kernel type of people, is there anybody here familiar with Gingertu?

06:08.800 --> 06:14.280
Thank you so much, so if you're familiar with Gingertu, this is pretty much the same

06:14.280 --> 06:22.960
or both templating, so we can create basically a BPM program in seconds, and I'll be

06:22.960 --> 06:28.040
a demo, and if the network doesn't betray me, then you'll be seeing some XDP programs

06:28.040 --> 06:30.040
in.

06:30.040 --> 06:37.520
As I was saying, basically, we just need to install Rust, so if you depend on ASync, such

06:37.520 --> 06:39.120
as SSL, that's all for us.

06:39.120 --> 06:41.320
So let's take a look at that.

06:41.320 --> 06:47.160
But let me know if you've found this big enough, and otherwise, I'll maximize it.

06:47.160 --> 06:48.160
Is it okay?

06:48.160 --> 06:49.160
Maybe we go?

06:50.040 --> 06:53.360
How about now?

06:53.360 --> 06:56.360
Mobby?

06:56.360 --> 07:02.440
Now, I think so.

07:02.440 --> 07:04.440
More?

07:04.440 --> 07:17.680
Okay, now I'll make it up, so you need to go and start Rust, of course, and also

07:17.680 --> 07:23.640
have an open SSL that's on the season so forth, and I'll go and besides Cargo and Cargo

07:23.640 --> 07:24.640
Generate.

07:24.640 --> 07:25.640
What the hell is this?

07:25.640 --> 07:26.640
Cargo Generate 10?

07:26.640 --> 07:35.560
So coming back here, here with me, this is what an A, a template looks like, if you're

07:35.560 --> 07:41.120
familiar with any kind of templating languages, such as Gingertu, both templates and so forth,

07:41.120 --> 07:46.320
you'll see that this is totally straightforward, so basically, substitute it, so we are going

07:46.320 --> 07:51.520
to be pointing our Cargo Generate to this repo, and if then it works work, it will work

07:51.520 --> 07:53.320
as well.

07:53.320 --> 08:07.080
Okay, so let's be cognizant, oh no, EVPF, and you can select which kind of EVPF program you

08:07.080 --> 08:08.480
like to trust.

08:08.480 --> 08:11.880
So those are a couple of those, and you can also add your own if you're interested in

08:11.880 --> 08:12.880
today's.

08:12.880 --> 08:17.040
So I guess the most historical one, if you're going to be one XTP, which is done for

08:17.040 --> 08:22.040
express data path, basically, some kind of network and thing.

08:22.040 --> 08:28.480
Okay, so we just created one, which is called EVPF, but for the record, and I say it and

08:28.480 --> 08:33.360
trust the laptop, and then network here, I created one just before hand, just in case.

08:33.360 --> 08:38.640
So let me show you a good one.

08:38.640 --> 08:47.440
Okay, this is what it looks like, and if you're interested in knowing what does it do,

08:47.440 --> 09:01.080
getting back to the slides, again, I guess, then trust that, but basically it creates all

09:01.080 --> 09:10.480
this can fall in for a program, which will be testing, let's see.

09:10.480 --> 09:29.640
So let's start the program itself.

09:29.640 --> 09:35.960
You can see that this is not working here, but basically you can also, the closing of the

09:35.960 --> 09:40.520
AI, it's not only AI, but it's a capital of products that goes along with that.

09:40.520 --> 09:44.280
So for instance, login in EVPF, it's maybe tough, and it's something you may need to

09:44.280 --> 09:49.320
write on your AI, offers quite a couple of different surprises, as is AI log.

09:49.320 --> 09:53.480
So we will be able to see a lot of login here for free, which it's also cool, specifically

09:53.480 --> 09:57.720
for somebody who has never written any kind of EVPF program, and maybe not trust anymore.

09:57.720 --> 10:06.600
Let's see here.

10:06.600 --> 10:11.000
We can see with VPF tool that we are having one XTP program running here, if you can see

10:11.000 --> 10:21.360
the upper most window, let's do something here, let's be a little bit, it works.

10:21.360 --> 10:22.360
So congratulations.

10:22.360 --> 10:28.840
We have been triggering our first VPF program in Rust in how much, to me, it's maybe five.

10:28.840 --> 10:32.920
I think this is really cool, and I really encourage you to give it a try.

10:32.920 --> 10:39.440
Let's speak all you need more about how does it works in the hood.

10:39.440 --> 10:43.240
This all, of course, depends on how the template is being done.

10:43.240 --> 10:47.720
This is open source, so you can create your own template and modify that, this is, for instance,

10:47.960 --> 10:53.400
it requires you to use examples, you also got your entry points for, basically, the kind of

10:53.400 --> 11:00.920
space in the user space, and of course, cargo and so forth, and also it offers a default

11:00.920 --> 11:05.400
formatting file for Rust format, right in the way.

11:05.400 --> 11:11.560
How done, well, I forgot to compare this, trick is I did it before hand, but let's give it a try anyway.

11:18.440 --> 11:25.080
So this was precompiled, let's go to the other one, what was done before.

11:25.080 --> 11:33.080
I was called ETPF, so try to build, we just do the trick for you, and just go and, well,

11:33.080 --> 11:38.680
well, actually, networking here is quite decent, so thank you for them, it's requested me.

11:47.720 --> 11:54.360
Anyway, so it'll just go build everything, you can do cargo check, and you'll see that you get

11:54.360 --> 12:00.360
all the listing anyway.

12:00.360 --> 12:07.640
So this is how, like the main application looks like, I'm running on XCP application, you can

12:07.640 --> 12:12.840
see, of other, that it's just loading the Microsoft XCP in the binders for a year, it's also

12:12.840 --> 12:20.520
using a lot of ETPF, and it's super simple, it's just basically a skin for a packet, okay,

12:20.520 --> 12:25.080
versatile packet, then do that action, which would be called one of those helper function, I just go

12:25.080 --> 12:34.840
beforehand. So also, getting back, you may want to say something more real, so we use that for

12:34.840 --> 12:39.480
simple XCP program, which is doing nothing, it's pretty much like a hello world, but we are

12:39.560 --> 12:44.520
also using this in BPM, which is a BPM loader, which I'll be speaking about tomorrow in the

12:44.520 --> 12:49.720
distribution spectrum, you are interested, but this is using the for real, and you can see

12:49.720 --> 12:56.680
sure that they're most of the. Besides that, we are trying to increase it to us, I'm being part of

12:56.680 --> 13:03.240
the Fedora, EPPF's group, if you are not there, I really encourage to give you the try, please join us,

13:03.240 --> 13:08.200
so far we have been in the identifier and BPM minus one of the first programs you package into Fedora,

13:09.160 --> 13:14.840
Rust is coming with a lot of drawbacks in terms of packaging, because basically it's tough,

13:14.840 --> 13:19.080
building all the dependencies, so for instance, we have a year-half like more than 200

13:19.080 --> 13:24.040
dependencies, which weren't packets in Fedora, so there's no realistic way to handle that,

13:24.040 --> 13:29.880
but anyway, we are interested, but I'll be happy to also speak with anybody who would be interested

13:29.880 --> 13:33.560
into that not only for BPM model, but also for another BPM furniture.

13:34.280 --> 13:43.800
And we just found that this last year, but I think it's really annoying. So, so far, I spoke a lot,

13:43.800 --> 13:47.400
I showed you some examples, I spoke about the C group, but questions about that.

13:50.680 --> 13:51.320
Go ahead.

13:51.320 --> 13:55.320
Is it functional in the LX series with BPM particular?

13:55.320 --> 14:00.840
Yeah, it aims to be, it's still not least 100 percent, but the ADS for AIA to be matching like a

14:00.920 --> 14:02.280
feature compatibility with that, yeah.

14:11.960 --> 14:17.160
Oh, yeah. Well, not use NAIA, AIA doesn't use BPM, but you can say switch over to another,

14:17.160 --> 14:20.120
you know, Rust, library who uses like, LibbyPFRs.

14:20.120 --> 14:29.960
Can also be, for example, if you have program written in C, and I sell older users,

14:29.960 --> 14:34.040
but so vice versa, you can also write, if you have program in Rust,

14:34.040 --> 14:36.520
I'll love it for another level of user experience.

14:36.520 --> 14:40.520
I'm not sure if I can go on your main, but basically you'll be AIA,

14:40.520 --> 14:45.080
I'll love you to use also parts of that. You can use the loader, and I'll also have

14:45.080 --> 14:48.840
your NABPM program that you might like to be. I hope that as well as your question.

14:50.520 --> 14:51.320
Yeah, go ahead.

14:59.320 --> 15:05.240
Yeah, sorry. So he's asking about AIA, is having templates for any other events rather than network?

15:05.240 --> 15:09.880
Yes, where is he? Yeah, there is a full repo about templates, so I mean, I'm more

15:09.880 --> 15:12.920
infinite working, so that's what I was looking for, but it's not limited to that.

15:12.920 --> 15:18.680
So you can just find templates for K probes, for U probes, for traffic control, and for a lot of

15:18.680 --> 15:24.600
those, and if it's not there, we are encouraging you to try to build your own, of course.

15:24.600 --> 15:29.880
Besides start, there's an annoying project called the AIA book, which covers the API and the

15:29.880 --> 15:32.280
library and I think it's pretty cool.

15:37.160 --> 15:40.920
So okay, if no more questions, and thank you so much for attending, I'll be enjoyed it,

15:40.920 --> 15:42.280
and I'll do a part of that.

