首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置运行DPDK的EC2实例过滤弹性IP和其他ec2实例之间的流量?

如何配置运行DPDK的EC2实例过滤弹性IP和其他ec2实例之间的流量?
EN

Stack Overflow用户
提问于 2019-07-11 01:24:56
回答 1查看 350关注 0票数 1

我有一个需要在AWS上模拟的硬件设置。在硬件方面,我有一台客户的计算机通过电缆调制解调器连接到互联网。在电缆调制解调器和客户的计算机之间,我插入了运行DPDK的计算机和数据包过滤器应用程序。来自电缆调制解调器的所有数据包在Int-1处进入my computer/dpdk,并被处理,然后离开Int-2上的my computer进入客户系统。对于源自客户系统的分组,反向遍历相同的数据路径。数据包只需沿着以太网电缆到达它们应该到达的地方。

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

代码语言:javascript
复制
                  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。

弹性公网IP 1.2.3.4以前是附着在客户的内网IP 10.0.1.89上的,因此互联网用户可以访问客户的ec2,客户的ec2用户可以访问互联网。

将我的ec2实例添加到私有网络后,将弹性公网I从客户的ec2中分离出来,并重新附着到我的ec2中,现在我希望对进出客户的ec2的流量进行双向过滤。

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

有许多所谓的DPDK tcp/ip堆栈,但由于这样或那样的原因,似乎没有一个真正起作用。我希望只使用AWS路由,而不使用NAT,但不知道这是否可行。

帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-11 05:38:35

要实现基本的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设备(即透明网桥)工作可能会简单得多。这将消除在网关上额外路由的需要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56975763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档