是否可以使用Intel DPDK编写Web服务器?

时间:2014-11-04 12:17:08

标签: dpdk

我是英特尔DPDK的新手。 我打算写一个http网络服务器。

可以使用DPDK使用以下逻辑实现吗?

  1. 获取数据包并将其发送给Worker Logical Cores。
  2. 工作者逻辑核心构建' http reuqest'由客户发送,使用 传入的数据包。
  3. 处理' http reuest'在Worker Logical Core中生成一个 ' http响应'。
  4. 为' http响应创建数据包'并将它们发送到输出 软件响起。
  5. 我不确定上述内容是否可行。

    是否可以使用英特尔DPDK编写Web服务器?

2 个答案:

答案 0 :(得分:2)

这是很多工作,因为你需要在DPDK之上的TCP / IP堆栈。即使你已经在DPDK之上移植了一个TCP / IP堆栈(或者重新使用来自操作系统的端口),你也无法获得性能,因为编写运行的C代码很容易,但写入TCP / IP堆栈维持良好的性能,这是一个非常困难的发展。

您可以尝试http://www.6wind.com/6windgate-performance/tcp-termination/:它们不提供HTTP服务器,但它们提供了类似于TCP套接字的L7,以构建最快的HTTP服务器。

答案 1 :(得分:1)

是的,可以使用DPDK构建Web服务器。您可以使用DPDK提供的KNI接口。在KNI接口上接收的所有数据包仍然通过内核网络堆栈进行路由 - 然而,继续捕获,这仍然比直接从内核接收数据包(需要多个副本)更快。使用DPDK,您仍然可以将内核ping到RX并将不同的内核ping到TX。然后,您可以指示您的操作系统不要将这些lcores用于其他任何事情。所以你真的有用于TX和RX的专用lcores。确保Tx和RX lcores位于不同的CPU插槽上。

更多信息: http://dpdk.org/doc/guides/sample_app_ug/kernel_nic_interface.html