[英]How can I configure my EC2 instance running DPDK to filter traffic between elastic IP and another ec2 instance?
我有一個需要在 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。 但是對於 DPDK,我需要一個在我的 ec2 上運行的用戶空間 NAT,或者我需要一些其他方式將數據包從 EIP 路由到我的 Int-1 接口,然后將 Int-2 接口輸出到客戶 ec2,然后返回.
那里有許多聲稱的 DPDK tcp/ip 堆棧,但由於某種原因,似乎沒有一個真正起作用。 我很想單獨使用 AWS 路由而不使用 NAT,但不知道這是否可行。
幫助!
要實現基本的 NAT,您不需要 TCP/IP 堆棧。 只需將每個幀解析為 IP 標頭,並將任何 IP 1.2.3.4
替換為10.0.1.101
,反之亦然。 然后只需設置mbuf.ol_flags
以重新計算 NIC 中的校驗和或在軟件中進行,就大功告成了。
有關校驗和的更多詳細信息,請參閱Mbuf庫和rte_ipv4_udptcp_cksum() 。
另一個問題是您的 DPDK 過濾應用程序作為 L3 設備(即路由器)工作,而如果它作為透明 L2 設備(即透明網橋)工作可能會簡單得多。 這將消除網關上額外路由的需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.