DPDK deep-dive

Поделиться
HTML-код
  • Опубликовано: 11 янв 2021
  • This video is part of the IIT-Bombay's CS 744 course. It presents a high-level overview of the Intel's Data Plane Development Kit (DPDK) from a developer's point of view. This video provides pointers to compile and install DPDK in a Linux machine as well as a brief comparison of the implementation designs while developing a DPDK application (RTC/pipeline).
    Link to the prereq video: • Kernel-bypass techniqu...
    The slides used in this video can be found here: drive.google.com/file/d/1Xuwq...

Комментарии • 38

  • @nisachannel7077
    @nisachannel7077 Год назад +1

    Super useful and informative!!

  • @myeshakhalil4509
    @myeshakhalil4509 Год назад +1

    Hello, thank you for posting a super helpful video, can you share what traffic generator you have used for testing purposes.

  • @nramesh83
    @nramesh83 3 года назад +1

    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" ?

    • @diptyaroop
      @diptyaroop  3 года назад +2

      Yes, this example is just a simple forwarder.

  • @venuaditya5705
    @venuaditya5705 Год назад +1

    from 5G perspective, the whole L1 can be implemented using DPDK? Is there any open source project which does the same?

  • @Cybernetic1
    @Cybernetic1 2 года назад

    Thanks

  • @HariKrishna-gd4ho
    @HariKrishna-gd4ho 3 года назад +1

    Dear Sir,
    Very informative video, thanks for sharing your Knowledge on DPDK in a simple way of understanding

    • @diptyaroop
      @diptyaroop  3 года назад

      Thanks for your feedback.

    • @HariKrishna-gd4ho
      @HariKrishna-gd4ho 3 года назад

      @@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

    • @diptyaroop
      @diptyaroop  3 года назад +2

      @@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).

    • @HariKrishna-gd4ho
      @HariKrishna-gd4ho 3 года назад

      @@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

    • @diptyaroop
      @diptyaroop  3 года назад +1

      @@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.

  • @pavethrann4531
    @pavethrann4531 Год назад +1

    how did you run a load generator?

  • @AmanDeepSingh-xe9of
    @AmanDeepSingh-xe9of 3 года назад

    Very nicely explained Sir. Where can I see rest of your CS 744 course videos.

    • @diptyaroop
      @diptyaroop  3 года назад +4

      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.

  • @sateesh6644
    @sateesh6644 3 года назад

    Very good explanation, please make video on EAL(Environment Abstraction Layer) ? what is importance of EAL in DPDK

    • @diptyaroop
      @diptyaroop  3 года назад +1

      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,

  • @fujinafiul6044
    @fujinafiul6044 Год назад

    nice

  • @sateesh6644
    @sateesh6644 3 года назад

    At which point mempool is created ? Diff b/w mempool & huge page? Is Rx queue & Tx queue are buffers of NIC or DPDK itself ???

    • @diptyaroop
      @diptyaroop  3 года назад

      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.

  • @crazycsa
    @crazycsa 3 года назад

    Where is the Kernel Bypass video, the one you mentioned in the video.

    • @diptyaroop
      @diptyaroop  3 года назад

      The link is in the description

  • @hima4411
    @hima4411 3 года назад +1

    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

    • @anuhp3769
      @anuhp3769 2 года назад

      Dude did you get to know how to run this? Please reply anuhp154@gmail.com

  • @sampathisadvikreddy9791
    @sampathisadvikreddy9791 Месяц назад

    how did you saw the throughput

  • @athithanvijay183
    @athithanvijay183 3 года назад

    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?

    • @diptyaroop
      @diptyaroop  3 года назад

      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.

    • @athithanvijay183
      @athithanvijay183 3 года назад

      @@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

    • @diptyaroop
      @diptyaroop  3 года назад

      @@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.

    • @vijayedutechdotcom7315
      @vijayedutechdotcom7315 3 года назад

      @@diptyaroop Thanks. Let me try testpmd.

  • @xiaoluo6228
    @xiaoluo6228 3 года назад

    Where can I find the series course about dpdk

    • @diptyaroop
      @diptyaroop  3 года назад

      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.

  • @subhammohanta
    @subhammohanta 3 года назад

    Can You Share related Videos on Dpdk.

    • @diptyaroop
      @diptyaroop  3 года назад

      You can check out the "DPDK Project" channel on RUclips

  • @smrutiswayer3672
    @smrutiswayer3672 3 года назад

    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.

    • @smrutiswayer3672
      @smrutiswayer3672 3 года назад

      Any one reading this .suggestions would be helpful

    • @diptyaroop
      @diptyaroop  3 года назад

      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.

    • @fujinafiul6044
      @fujinafiul6044 Год назад

      @@diptyaroop which one did you use? testpmd or customized?