簡體   English   中英

如何配置運行 DPDK 的 EC2 實例以過濾彈性 IP 和另一個 ec2 實例之間的流量?

[英]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 中的校驗和或在軟件中進行,就大功告成了。

有關校驗和的更多詳細信息,請參閱Mbufrte_ipv4_udptcp_cksum()

另一個問題是您的 DPDK 過濾應用程序作為 L3 設備(即路由器)工作,而如果它作為透明 L2 設備(即透明網橋)工作可能會簡單得多。 這將消除網關上額外路由的需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM