如何配置运行DPDK的EC2实例以过滤弹性IP和另一个ec2实例之间的流量?

时间:2019-07-10 17:24:55

标签: amazon-web-services amazon-ec2 dpdk

我有一个硬件设置,需要在AWS上进行仿真。在硬件方面,我有一个通过电缆调制解调器连接到互联网的客户计算机。在电缆调制解调器和客户计算机之间,插入运行DPDK和数据包筛选器应用程序的计算机。来自电缆调制解调器的所有数据包都在Int-1进入我的计算机/ dpdk,经过处理,然后将我的计算机保留在Int-2上,以转到客户的系统。对于来自客户系统的数据包,反向遍历相同的数据路径。数据包只是沿着以太网电缆到达它们应该去的地方。

我需要在AWS云中复制该副本,但是没有以太网电缆来强制路由数据包。我需要在弹性IP和具有私有IP的客户的EC2实例之间插入运行DPDK的EC2实例。设置如下:

                  VPC
                 +------------------------------------------------+
                 |                                                |
                 |    c5.2xlarge EC2           t2.micro EC2       |
                 |   +--------------------+   +----------------+  |
                 |   | My ec2 with DPDK   |   | Customer ec2   |  | 
     EIP 1.2.3.4 <---> Int-1 10.0.1.101   |   |                |  | 
                 |   |        ^           |   |                |  | 
                 |   |        |           |   |                |  | 
                 |   |        v           |   |                |  | 
                 |   |  <processing>      |   |                |  | 
                 |   |        ^           |   |                |  | 
                 |   |        |           |   |                |  | 
                 |   |        v           |   |                |  | 
                 |   |   10.0.2.101 Int-2 <---> 10.0.1.89 eth0 |  | 
                 |   |                    |   |                |  | 
                 |   +--------------------+   +----------------+  | 
                 +------------------------------------------------+

这是在centos7上运行。 当DPDK运行时,ens6变为Int-1,而ens7变为Int-2。

EIP 1.2.3.4曾经附加到客户的专用IP 10.0.1.89,因此,互联网用户可以访问客户的ec2,而客户的ec2用户可以访问互联网。

将我的ec2实例添加到VPC,并且将EIP与客户的ec2分离并重新附加到我的ec2之后,现在,我要过滤往返于客户ec2的双向流量。

如果我的ec2没有运行DPDK,我可以简单地使用iptables在两个方向上对NAT流量进行NAT。但是,使用DPDK时,我需要在ec2上运行的用户空间NAT,或者需要其他方式将数据包从EIP路由到我的Int-1接口,然后再从Int-2接口路由到客户ec2,然后再返回

据称有许多DPDK tcp / ip堆栈,但是似乎没有一个因某种原因而工作。我很想单独使用AWS路由而不使用NAT来完成这项工作,但是不知道是否可行。

帮助!

1 个答案:

答案 0 :(得分:1)

要实现基本的NAT,您不需要TCP / IP堆栈。只需将每个帧解析为IP标头,然后将任何IP 1.2.3.4替换为10.0.1.101,反之亦然。然后只需设置mbuf.ol_flags即可在NIC中重新计算校验和,或者在软件中进行校验就可以了。

有关校验和的更多详细信息,请参见Mbuf libraryrte_ipv4_udptcp_cksum()

另一个问题是您的DPDK过滤应用程序可以用作L3设备(即路由器),而如果它用作透明L2设备(即透明网桥)则可能会更简单。这将消除网关上额外路由的需要。

相关问题