2014-11-04 119 views
0

我是英特尔DPDK的新手。 我打算写一个http网页服务器。是否可以使用Intel DPDK编写Web服务器?

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

  1. 获取数据包并将其发送给工作逻辑核心。
  2. 工人逻辑核生成的“http reuqest”由客户机发送,用 传入分组。
  3. 过程中的“http reuest”在工逻辑核和产生 “http响应”。
  4. 为“http响应”创建数据包,并将其派遣到输出 软件环。

我不知道是否高于可行与否。

是否有可能编写出使用英特尔DPDK一个Web服务器?

+0

您需要首先实现TCP/IP协议栈来检索HTTP消息,没有:在

的更多信息?也许https://github.com/opendp/dpdk-ans这会得到这个工作。 – 2016-11-24 02:58:28

回答

2

这是大量的工作,因为你需要在DPDK顶部的TCP/IP协议栈。即使一旦你在DPDK之上移植了一个TCP/IP协议栈(或者从操作系统重用了一个端口),你也不会有这样的性能,因为编写运行的C代码很容易,但是写一个TCP/IP维持良好性能的栈,这是一个非常艰难的发展。

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

1

是的,它可能使用DPDK构建Web服务器。您可以使用由DPDK提供的KNI界面。所有在KNI接口上接收到的数据包仍然通过内核网络堆栈进行路由 - 然而,继续捕获,这比直接从内核接收数据包(需要多个副本)要快。使用DPDK,您仍然可以将内核ping到RX,将不同的内核ping到TX。然后您可以指示您的操作系统不要将这些内核用于其他任何事情。所以你真的有专门的数据包发送和接收的核心。确保Tx和RX线圈位于不同的CPU插座上。 http://dpdk.org/doc/guides/sample_app_ug/kernel_nic_interface.html

+0

嗨Abhishek,为什么Tx和Rx lcore必须位于不同的CPU插槽上,如果它们位于同一CPU插槽上会发生什么? – Subbu 2016-08-23 18:36:43

相关问题