Giter VIP home page Giter VIP logo

Comments (9)

ajamshed avatar ajamshed commented on August 22, 2024

Hi Arun,

I last checked up on KNI several months ago when I was testing dpdk-1.8.0. At that time, KNI did not look like a good fit for mTCP as the packet context (sk_buff) is created inside the kernel. One of our goals in mTCP is to make packets completely bypass the kernel and allow more CPU resources to be spent on the user space application. I have not gone through the KNI design in recent versions but I was not expecting any massive change in the architecture. Why do you think it is a good idea to add KNI support?

from mtcp.

arunkumarsit avatar arunkumarsit commented on August 22, 2024

I definitely agree with you. The performance and the user space packet handling are the things we need using mTCP. But how about handling any unsupported packet types (UDP).

I am in the process of integrating NFS Ganesha (user space NFS application) server with mTCP support. But NFS server supports UDP traffic as well, so I need to support UDP streams as well. I decided Kernel networking stack to handle the UDP packets in order to avoid developing UDP parser in user space.
Also whether mTCP handles RPC requests for mount commands? Up to my knowledge I feel like, RPC calls also needs to be sent to Kernel for processing.

Note: currently I am trying to do prototype of KNI with epserver example application.

As per the KNI example application (I checked it in dpdk-2.0.0), KNI application receives the input packets from eth port and sends it to KNI queue (via rte_kni_tx_burst) and then it will be sent to networking stack via netif_rx(() call.
While doing tx, the packets will be received by KNI queues (rte_kni_rx_burst) and the same will be sent out via eth ports (rte_eth_tx_burst)

Let me know your views/suggestions on this.

from mtcp.

ajamshed avatar ajamshed commented on August 22, 2024

I will probably have to (i) discuss the design in more detail with you, and (ii) look at KNI API + design in further detail. :). UDP is not supported in the mTCP stack. But I am not sure what will be the best design to integrate NFS Ganesha with mTCP. Let's discuss this further in email.. Shall we?

from mtcp.

quadrat avatar quadrat commented on August 22, 2024

Hi everybody.

Has there been any progress in the plan to support KNI?

I want to create a emulation environment based on Mininet with a number of HTTP servers running on Mininet hosts inside a single Linux kernel. There are be no physical interfaces involved. While I would like to implement these servers based on mTCP, I am afraid there is currently no existing possibility to connect mTCP apps to virtual Mininet network interfaces in kernel space. I assume that the usage of KNI would make this possible?

Any other ideas how to achieve this are welcome, too!

from mtcp.

arunkumarsit avatar arunkumarsit commented on August 22, 2024

Hi quadrat,

I integrated the KNI interface support with mTCP application (specifically in dpdk_module.c file) and KNI is working as expected.
But after this integration, there are 2 interfaces dpdk0 (mtcp) and vEth0_0 (KNI interface) are available for the same NIC interface. I am currently checking on this.

from mtcp.

arunkumarsit avatar arunkumarsit commented on August 22, 2024

Hi Asim Jamshed,

I have successfully integrated KNI with mtcp application. So using KNI I am able to send only needed packets to kernel networking stack.
After receiving packets via "rte_eth_rx_burst()" DPDK call, I can parse the packet and decide whether to send it to Kernel stack or let the mtcp to process.
Most part of the integration is done in dpdk_module.c and io_module.c files.

Note that I had to disable the dpdk0 interface and has to bring up KNI interface (say vEth0) to enable the above operation (after the application intialization is done).

from mtcp.

ajamshed avatar ajamshed commented on August 22, 2024

Hi Arun,

I am happy to know that you have made KNI support operational with your setup. Would you mind sharing the code? We get requests for this type of extension from others as well. It will be great if your patch can be integrated in the main mTCP stack.

from mtcp.

arunkumarsit avatar arunkumarsit commented on August 22, 2024

Hi Asim, I have sent you a mail on this. we will discuss in mail further.

from mtcp.

tigerjibo avatar tigerjibo commented on August 22, 2024

Hi Arun:
Can you share your code(KNI support in mTCP) to me? Thanks for you in advance!

from mtcp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.