3

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

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

  1. 获取数据包并将其发送到 Worker Logical Cores。
  2. 使用传入数据包,客户端发送的 Worker Logical Core 构建“http reuqest”。
  3. 在 Worker 逻辑核心中处理“http reuest”并产生“http 响应”。
  4. 为“http 响应”创建数据包并将它们分派到输出软件环。

我不确定上述是否可行。

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

4

2 回答 2

2

这是很多工作,因为您需要一个位于 DPDK 之上的 TCP/IP 堆栈。即使您在 DPDK 上移植了 TCP/IP 堆栈(或重用操作系统的端口),您也不会获得性能,因为编写运行的 C 代码很容易,但编写 TCP/IP维持良好性能的堆栈,这是一个非常困难的开发。

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

于 2015-02-10T09:39:20.007 回答
2

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

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

于 2015-07-03T08:37:16.603 回答