IPv6 協議轉換網關 fnat46

fnat46

在當前IPv4單棧局域網內,客戶端(PC端、手機端)通過有線或無線方式訪問外部IPv6單棧網絡資源

整體思路

IPv4/IPv6 協議轉換網關 fnat46

局域網內終端接入協議轉換網關,通過DNS46完成域名解析,對訪問IPv6資源的網絡請求通過NAT46協議轉換設備完成協議轉換(請求、響應),以完成全程網絡會話。

流程時序

IPv4/IPv6 協議轉換網關 fnat46

  1. IPv4客戶端向域名服務器DNS46發起資源服務網絡請求(A記錄);
  2. DNS46通過遞歸查詢公網該服務域名的A記錄。如果得到A記錄,則返回給客戶端,客戶端繼續使用A記錄的IPv4完成網絡請求;
  3. 如果DNS46查詢到該域名只有AAAA記錄,則表示該域名服務只提供了IPv6單棧服務,需要NAT46的轉換服務;
  4. DNS46從可用IPv4資源池中選擇一個IP,註冊該IPv4與服務域名IPv6的映射,將該映射同步至NAT46網關,然後將該IPv4返回給客戶端;
  5. 客戶端向該 IPv4發起網絡會話請求,該請求通過路由到達DNS46網關;
  6. DNS46網關以報頭目的IP查詢映射,得到真實的IPv6目的地址,將IPv4協議報頭替換為IPv6報頭,通過NAT46網關的IPv6出口以IPv6協議向服務域名發起請求;
  7. NAT46網關收到響應後,通過查詢映射表,將IPv6報頭轉換為IPv4報頭,返回給IPv4客戶端,會話完成。

NAT46網關

用於完成IPv4報頭和IPv6報頭的協議相互轉換,內置映射表。協議轉換參考IETF相應RFC文檔。

DNS46域名服務器

(項目當前暫未實現) 提供域名服務,做為所有客戶端的第一級DNS服務器,通過DNS遞歸查詢,對IPv4服務資源正常返回A記錄,對IPv6服務資源返回臨時A記錄,與NAT46同步A記錄與AAAA記錄的映射。

實際應用需解決的問題

  • 項目已通過功能性驗證測試(ICMP/TCP/UDP),但遠未達到產品級可用標準;
  • 雖然使用了DPDK框架,但協議包並未實現ZERO-COPY,直接複製了PAYLOAD,有望後面嘗試解決;
  • 三層協議轉換要考慮到所有可能的協議類型(ARP/IP/GRE/VLAN/MPLS)等;
  • 處理網絡包的分段;

建立開發環境

  1. 安裝Intel NFF-GO DPDK平臺框架 (https://github.com/intel-go/nff-go)
  2. 開發機器至少3個網卡,其中1個管理口,1個IPv4網絡接口,1個IPv6網絡接口
  3. IPv4&IPv6網絡接口加載DPDK綁定
  4. 根據網絡環境更改編譯文件和運行配置文件

更多使用方法可以查看官方文檔

開源地址:

https://gitee.com/xujf/fnat46

更多更優質的資訊,請關注我,你的支持會鼓勵我不斷分享更多更好的優質文章。


分享到:


相關文章: