@@diptyaroop Sir, Could you please make a video on or share some inputs, how the L2/L3/L4 headers are handled in DPDK, data plane. lets say , if i want to send a udp packet from dpdk installed machine to non dpdk machine, how the control plane comes into picture and once it identifies flow how data plane comes into picture, As i am new to DPDK, i have many queries, kindly address my doubt sir, which will create me more interest in learning DPDK Thanks in advance Harikrishna Datrika
@@HariKrishna-gd4ho If you want to send UDP packets, you have to craft all the headers in the application (userspace) itself. The headers should be as per standard. Otherwise, non-DPDK machines will reject the packet. So, the packet structure will be MAC hdr | IP hdr | UDP hdr | payload. For UDP hdr, you may use rte_udp_hdr structure and assign values to all the fields. Similarly, for IPv4 hdr, rte_ipv4_hdr, and so on, where the dest IP will be that of the non-DPDK machine. You will also have to calculate the checksum (either in userspace or offloaded to NIC) for real applications. The testpmd application is a good place to start learning about this. The control plane tells what to do with incoming packets. For example, it may say to forward a packet to a certain machine with IP addr x. The data plane actually processes the packets and does what the control plane tells it to do. So, here, in the data plane, the dst_addr field of the IP hdr will be set to x, and all other necessary fields will be assigned. Then, the packet will be forwarded to its destination. You may want to check out the resources mentioned towards the end of the video (slides link in description).
@@diptyaroop will the control plane activities done by Linux kernal, through KNI interfaces, where in the dpdk interfaces will be visible to linux machine ?, let say in the real applications in the production environment, will they build all these MAC hdr | IP hdr | UDP hdr for all data packets to send to a non dpdk machine, will it be able to achieve gigabit speeds with all the processing ? kindly clear my doubts
@@HariKrishna-gd4ho You may use KNI. However, you can also build your application without using KNI. It depends on your requirements. KNI just provides a way to use the kernel's n/w stack. So, if you need the help of kernel's n/w stack, it's better if you use KNI instead of tun/tap devices. Otherwise, there's no need. Yes, you can reach Gbps speeds even after building the headers in the data plane. You can either write your own processing logic. There are also open-source userspace processing stacks like mTCP that you can use.
Hi, I have made only this video. However, you can check out this page: www.cse.iitb.ac.in/~mythili/os/ It has plenty of videos, slides, and other resources for the CS 744 course.
Thank you for this informative presentation. I was wondering why the incoming RX packets have to be transmitted again on the TX path. Aren't they separate streams? E.g. RX packets could be data being downloaded from the network (E.g. youtube streaming) whereas TX packets would be upload data (e.g. uploading a file or video). Or is the example here that of a packet "forwarder" ?
Thanks for video. Is it possible to implement software firewall using DPDK? Can we use pipeline model for that? Any links on how to develop and test pipeline sample application?
Yes, it's possible to implement firewall on DPDK. You may use any model (RTC/pipeline) to implement. There is a packet classification library with which you can do access control (doc.dpdk.org/guides/prog_guide/packet_classif_access_ctrl.html), or can implement your own logic in the userspace. There are many sample applications for DPDK. You can check out their source code as well as documentation (doc.dpdk.org/guides/sample_app_ug/index.html). There are also various sources available on the Internet (articles/videos) and you may check them out.
@@diptyaroop Thank you for your reply. In the video, load generator is used in example. Would be great if you clarify whether you have used testpmd or packetgen from DPDK which can accept destination MAC address as input in load generator. If we do same example using virtual machines would it work? any idea on that
@@athithanvijay183 In the video, we have used an in-house load generator. However, you can use (& modify if required) testpmd to serve your purpose. It should also work on VMs, but I think you may have to do some small tweaks. Please check out DPDK documentation/ other resources available online for details.
There is no such course on DPDK as far as I know. There are several videos available on YT (eg. DPDK project channel) as well as other resources. This video is part of the CS 744 course at IIT Bombay.
Thanks. I'll try to make a video if I get time. Meanwhile, you may check this high-level overview: www.linkedin.com/pulse/dpdk-layman-aayush-shrut EAL documentation is available at doc.dpdk.org/guides/prog_guide/env_abstraction_layer.html However, this documentation will be a bit overwhelming at the first glance in my opinion. I suggest you read it in parts, coupled with reading about other things in DPDK as well as some hands-on coding if possible,
Hi Sir, As I am very new to DPDK this vedio is really very informative. I am following your instructions and trying l2fwd application. I am wondering in some points 1- what is that load generator ? 2- Where I can get that load generator and how to run that ? Please help me with my queries.
Any application which generates traffic (packets) can be a load generator. For example, iperf. A good starting point will be the testpmd application. It can also act as a load generator. I would suggest to go through the testpmd documentation and source code and try different things by running/tweaking the code.
Super useful and informative!!
Dear Sir,
Very informative video, thanks for sharing your Knowledge on DPDK in a simple way of understanding
Thanks for your feedback.
@@diptyaroop Sir, Could you please make a video on or share some inputs, how the L2/L3/L4 headers are handled in DPDK, data plane.
lets say , if i want to send a udp packet from dpdk installed machine to non dpdk machine, how the control plane comes into picture and once it identifies flow how data plane comes into picture, As i am new to DPDK, i have many queries, kindly address my doubt sir, which will create me more interest in learning DPDK
Thanks in advance
Harikrishna Datrika
@@HariKrishna-gd4ho If you want to send UDP packets, you have to craft all the headers in the application (userspace) itself. The headers should be as per standard. Otherwise, non-DPDK machines will reject the packet. So, the packet structure will be MAC hdr | IP hdr | UDP hdr | payload. For UDP hdr, you may use rte_udp_hdr structure and assign values to all the fields. Similarly, for IPv4 hdr, rte_ipv4_hdr, and so on, where the dest IP will be that of the non-DPDK machine. You will also have to calculate the checksum (either in userspace or offloaded to NIC) for real applications. The testpmd application is a good place to start learning about this.
The control plane tells what to do with incoming packets. For example, it may say to forward a packet to a certain machine with IP addr x. The data plane actually processes the packets and does what the control plane tells it to do. So, here, in the data plane, the dst_addr field of the IP hdr will be set to x, and all other necessary fields will be assigned. Then, the packet will be forwarded to its destination.
You may want to check out the resources mentioned towards the end of the video (slides link in description).
@@diptyaroop will the control plane activities done by Linux kernal, through KNI interfaces, where in the dpdk interfaces will be visible to linux machine ?, let say in the real applications in the production environment, will they build all these MAC hdr | IP hdr | UDP hdr for all data packets to send to a non dpdk machine, will it be able to achieve gigabit speeds with all the processing ? kindly clear my doubts
@@HariKrishna-gd4ho You may use KNI. However, you can also build your application without using KNI. It depends on your requirements. KNI just provides a way to use the kernel's n/w stack. So, if you need the help of kernel's n/w stack, it's better if you use KNI instead of tun/tap devices. Otherwise, there's no need.
Yes, you can reach Gbps speeds even after building the headers in the data plane. You can either write your own processing logic. There are also open-source userspace processing stacks like mTCP that you can use.
Hello, thank you for posting a super helpful video, can you share what traffic generator you have used for testing purposes.
how did you run a load generator?
how did you saw the throughput
from 5G perspective, the whole L1 can be implemented using DPDK? Is there any open source project which does the same?
How to install DPDK?
Hi sir,i am undergrad student and new to dpdk.How do we create 2 servers to run the load generator and the l2fwd application
Dude did you get to know how to run this? Please reply anuhp154@gmail.com
Very nicely explained Sir. Where can I see rest of your CS 744 course videos.
Hi, I have made only this video. However, you can check out this page:
www.cse.iitb.ac.in/~mythili/os/
It has plenty of videos, slides, and other resources for the CS 744 course.
Thank you for this informative presentation. I was wondering why the incoming RX packets have to be transmitted again on the TX path. Aren't they separate streams? E.g. RX packets could be data being downloaded from the network (E.g. youtube streaming) whereas TX packets would be upload data (e.g. uploading a file or video). Or is the example here that of a packet "forwarder" ?
Yes, this example is just a simple forwarder.
Thanks
Thanks for video. Is it possible to implement software firewall using DPDK? Can we use pipeline model for that? Any links on how to develop and test pipeline sample application?
Yes, it's possible to implement firewall on DPDK. You may use any model (RTC/pipeline) to implement. There is a packet classification library with which you can do access control (doc.dpdk.org/guides/prog_guide/packet_classif_access_ctrl.html), or can implement your own logic in the userspace. There are many sample applications for DPDK. You can check out their source code as well as documentation (doc.dpdk.org/guides/sample_app_ug/index.html). There are also various sources available on the Internet (articles/videos) and you may check them out.
@@diptyaroop Thank you for your reply. In the video, load generator is used in example. Would be great if you clarify whether you have used testpmd or packetgen from DPDK which can accept destination MAC address as input in load generator. If we do same example using virtual machines would it work? any idea on that
@@athithanvijay183 In the video, we have used an in-house load generator. However, you can use (& modify if required) testpmd to serve your purpose. It should also work on VMs, but I think you may have to do some small tweaks. Please check out DPDK documentation/ other resources available online for details.
@@diptyaroop Thanks. Let me try testpmd.
Where can I find the series course about dpdk
There is no such course on DPDK as far as I know. There are several videos available on YT (eg. DPDK project channel) as well as other resources. This video is part of the CS 744 course at IIT Bombay.
nice
At which point mempool is created ? Diff b/w mempool & huge page? Is Rx queue & Tx queue are buffers of NIC or DPDK itself ???
www.linkedin.com/pulse/dpdk-layman-aayush-shrut/
stackoverflow.com/questions/58658739/what-are-the-hardware-rx-tx-queue-in-ethernet-controller
Hope these links help.
Can You Share related Videos on Dpdk.
You can check out the "DPDK Project" channel on RUclips
Very good explanation, please make video on EAL(Environment Abstraction Layer) ? what is importance of EAL in DPDK
Thanks. I'll try to make a video if I get time.
Meanwhile, you may check this high-level overview: www.linkedin.com/pulse/dpdk-layman-aayush-shrut
EAL documentation is available at doc.dpdk.org/guides/prog_guide/env_abstraction_layer.html
However, this documentation will be a bit overwhelming at the first glance in my opinion. I suggest you read it in parts, coupled with reading about other things in DPDK as well as some hands-on coding if possible,
Where is the Kernel Bypass video, the one you mentioned in the video.
The link is in the description
Hi Sir,
As I am very new to DPDK this vedio is really very informative. I am following your instructions and trying l2fwd application. I am wondering in some points
1- what is that load generator ? 2- Where I can get that load generator and how to run that ?
Please help me with my queries.
Any one reading this .suggestions would be helpful
Any application which generates traffic (packets) can be a load generator. For example, iperf. A good starting point will be the testpmd application. It can also act as a load generator. I would suggest to go through the testpmd documentation and source code and try different things by running/tweaking the code.
@@diptyaroop which one did you use? testpmd or customized?