<form id="f3fhb"><listing id="f3fhb"><mark id="f3fhb"></mark></listing></form>

    <thead id="f3fhb"><var id="f3fhb"></var></thead>

    <sub id="f3fhb"><var id="f3fhb"></var></sub>

    <sub id="f3fhb"><var id="f3fhb"></var></sub>

    <address id="f3fhb"></address>
      <thead id="f3fhb"><dfn id="f3fhb"></dfn></thead>
        <form id="f3fhb"><dfn id="f3fhb"><menuitem id="f3fhb"></menuitem></dfn></form>
            <address id="f3fhb"><dfn id="f3fhb"><mark id="f3fhb"></mark></dfn></address>


                《廈門理工學院學報》  2020年第5期 40-46   出版日期:2020-10-30   ISSN:1673-4432   CN:35-1289/Z
                采用P4的數據平面NAT-DP技術方案


                面對網絡設備種類的不斷增多,對網絡規模與服務質量日益增長的需求使得多廠商設備以及新協議不斷激增。然而,協議的更新與轉換往往是一個復雜的過程,需要的時間跨度長。因此,網絡管理員需要在完成協議更新前實行不同協議之間的通信策略,以滿足不同協議共存的現實需求。 協議轉換(network address translationprotocol translation,NATPT)[1]技術采用IPv4/IPv6地址映射技術(包括IPv6與IPv4地址映射和地址翻譯[2])實現對IPv4和IPv6的地址映射與轉換,并通過建立和維護IP協議間的映射關系,達到一定的隔離防護效果。NATPT技術采用無狀態IP/ICMP轉換技術[3]實現對協議頭部字段的語義一致性的翻譯,對IPv4/IPv6首部字段、ICMPv4/ICMPv6首部字段和ICMPv4/ICMPv6差錯報文的翻譯,會選擇性地翻譯協議間共有信息,而丟棄協議間的差異信息。但是,由于受到協議轉換器性能以及可編程性的制約,無法實現特殊場景需求下協議的擴展,只能夠運行在IPv4網絡與IPv6網絡之間,無法滿足多個協議之間過渡和轉化的場景需求。并且,對未來網絡發展而言,按需定制網絡設備的數據包處理行為成為日益迫切的需求[4],而管理員在對NATPT技術重新配置時,協議轉換情況多變且操作復雜。綜上可見,NATPT可擴展性和可重配置性不足。 為了解決協議轉換性能制約和網絡環境中存在的擴展性差等問題,學術界開展了積極的研究與探討[5]。文獻等提出基于網絡地址轉換器的UDP簡單穿越和HTTP代理技術的NAT穿越方法,解決SIP協議無法穿越NAT的缺陷,實現了NAT技術對SIP協議的支持。文獻[6]提出基于可編程協議無關報文處理語言(programming protocolindependent packet processors,P4)的MAPE技術,為IPv4用戶提供基于TCP/UDP的NAPT和穿透IPv6網絡的服務,展現出在可編程數據平面實現NAT技術的可行性,為協議無關性P4語言解決NATPT技術的多協議擴展的問題提供了思路。為了解決設備級遙測數據的探測和運維復雜性導致擴展性不好的問題,文獻[7]提出了基于P4的主動網絡遙測機制,展現出數據平面具有很好的擴展性和可重配置性。通過P4語言將協議過渡與轉換卸載到可編程數據平面,將成為未來網絡發展的一個重要組成部分。 本文基于可編程數據平面,通過P4語言實現可編程的解析器對不同協議的支持,提出網絡地址可編程數據平面協議轉換(network address translationprogrammable data plane protocol translation,NATDP)技術。對IPv4、IPv6和擴展的協議進行解析和載荷提取,以實現頭部協議與載荷的無關性。報文與載荷分離后,通過對控制流與匹配動作表的定義,設計出對應的協議轉換處理算法,在實現協議類型轉換的同時,精確下發轉換后協議的報文信息,以實現數據包的跳轉轉發動作和多協議轉換功能,并進行協議擴展和重新配置。 廈門理工學院學報2020年 第5期陳本彬,等:采用P4的數據平面NATDP技術方案 1可編程交換機的數據包處理流程 為實現協議擴展性和安全策略可自定義性,采用可編程軟件交換機實現數據包協議與負載的分離和頭部信息的解析—多協議轉換—重組的流程。數據包在通過解析器解析并實例化協議信息后,管理員可根據協議頭部信息中提取出的源地址、目的地址、協議類型等參數,實現數據包轉發動作規則的自定義、流量識別和防御DOS攻擊等功能[8]?删幊誊浖粨Q機的數據包處理流程如圖1所示。 圖1可編程軟件交換機的數據包處理流程 Fig1Software switch data packet processing 可編程交換機的數據包處理流程主要由解析器,入口、出口匹配動作管道,逆解析器和交換機運行配置文件組成[9]。解析器完成不同協議解析、實例化過程和頭部的提取,分離出來的載荷會被放入緩沖區。入口、出口匹配動作管道由多級匹配動作表以流水線形式組成,通過P4語言對入口、出口流水線的控制以及匹配動作表對不同數據包執行動作的定義,完成數據包的處理。圖1中的陰影部分表示經過入口、出口匹配動作管道完成預定的數據包處理流程,其中元數據是由報文在入口與出口間進行匹配、轉發等操作時,所需要的由數據平面自身產生或者消耗的信息。 11解析器 為了實現數據平面協議無關處理和數據包操作,需要將協議首部信息通過P4語言定義,并通過解析器將不同類型的協議報文信息解析,生成描述數據包進行匹配動作表的實例化集合。解析器通常先完成以太網報頭的解析,并從中提取出長度為16 bit的etherType字段。以太網頭部定義如下: header ethernet_t{ macAddr_t dstAddr macAddr_t srcAddr bit<16> etherType } etherType字段存儲封裝的有效負載的協議。0x800代表IPv4,0x86DD代表IPv6。類似的,實現自定義協議時,不僅要定義頭部結構,也需要在頭部定義16 bit的協議類型字段。〖BF〗〓〓const bit<16> PROTOCOL_ TYPE = 0x86ff〓〓header〓protocol_definition{〓〓〓〓bit<8>〓〓〖WB〗version〓〓〓〓bit<16>〖DW〗protocol_authentication〓〓〓〓bit<8>〖DW〗ttl〓〓〓〓bit<8>〖DW〗protocol〓〓〓〓bit<32>〖DW〗srcAddr〓〓〓〓bit<32>〖DW〗dstAddr〓〓}〖BFQ〗這里定義了簡單的協議結構,完成頭部結構的定義后,解析器通過相應的解析決策實現協議標頭信息的提取。報文信息經過解析器提取后,報文與載荷進行有效分離,其中載荷會進入緩沖區,待報文信息經過控制流水線處理后,數據包被逆解析器進行重組,并完成相應的轉發、丟棄和多播等動作[10]。 12流水線控制與匹配動作表 流水線控制程序由入口和出口組成。入口控制可以根據解析器解析出的頭部信息和元數據對頭部字段進行修改以實現路由轉發功能,P4轉發模型如圖2所示。 圖2P4轉發模型 Fig2P4 forwarding mode 匹配動作表中配置基于匹配動作表的名稱、IP地址、動作名、MAC地址和端口號的映射表。入口處理則根據匹配動作表名稱進行基于關鍵字字段的匹配,關鍵字一般取源IP地址。P4有“精確”“最長前綴匹配(longest prefix match,lpm)”“三元”“范圍”和“有效”5種類型的匹配方式[11]。其中lpm將執行表中與關鍵字實現最長字段匹配的動作。根據最長字段匹配后的結果,匹配動作表將傳入報文轉發所需參數,確定報文的輸出端口、轉發的目的地址和隊列,執行相應動作實現報文處理。數據包可以被轉發、組播或通過計數實現流控和基于端口的負載均衡等[12]。 出口控制可對報文信息進行修改,是協議轉換技術在數據平面實現的重要機制。本文的數據平面多協議轉換技術的實現和轉換策略的配置通過出口流水線控制實現。P4語言通過編程配置數據包的標頭字段,傳入的數據包根據相應配置完成數據包標頭的解析和載荷的提。13]。通過解析后的頭部字段與匹配動作表完成匹配。數據包在處理過程中除標頭信息外,還攜帶元數據以實現端口配置。 2NATDP技術在數據平面中的實現方法 可編程以太網交換機的問世,使得用戶可自主實現交換機功能的增加或刪除、增加新協議、更改流表、自定義中間件功能,為實現協議轉換技術的擴展和自定義安全策略創造了條件[14]。本文提出的NATDP技術,可以實現同層協議之間的轉換,支持用戶自定義協議轉換策略,可提升協議轉換技術的靈活性,也可減少防護策略更新的維護壓力。NATDP技術的難點是用P4語言將NATPT技術卸載到數據平面,實現終端間跨協議通信。NATDP技術的研究重點是將NATPT技術與OpenFlow理念相結合,使NATDP技術在數據平面實現協議轉換的可擴展性和轉換機制的可重配置。實現流程需以下4步: 1)根據管道控制程序對報文中的協議類型進行篩選。在報文中檢測到需要轉換的源協議類型時,控制動作生效。匹配動作表中設置協議轉換的白名單,默認動作為不修改報文,或者刪除報文信息。 〖BF〗apply {〓〓〓 if (〖ZK(〗hdr〖ZK(〗srcProtolisValid()) {dstProtol _change()headers_changeapply()srcProtol_change()〖ZK)〗}〖ZK)〗〓〓〓 }〖BFQ〗2)更改上一層協議報文中的協議類型相關參數,保證協議轉換前后,以及在后續解析轉發過程中信息的準確性。修改完成后,外部通信時會依照修改后的協議類型進行數據包的傳遞。 〖BF〗action 〖ZK(〗dstProtol_change() {hdrethernetetherType = TYPE_ dstProtolhdr dstProtolsetValid()}〖ZK)〗action 〖ZK(〗srcProtol_change() {hdr srcProtolsetInvalid()}〖ZK)〗〖BFQ〗3)匹配動作表中提取源報文頭部信息中的關鍵字段,進行lpm方式的匹配完成配置文件中的動作和參數的傳遞,實現指定源地址區域應用協議轉換技術。轉換后的協議與外部通信,可以有效避免信息地址信息泄露的風險。匹配信息需要設置轉換的協議類型和地址信息,為協議轉換在網絡通信中設置安全防護屏障,在匹配動作表中也可以設置黑名單,過濾掉外部可能出現的風險。 〖BF〗table headers_change{〓〓key 〖ZK(〗= {hdr srcProtoldstAddr: lpm〖ZK)〗〓〓}〓〓actions 〖ZK(〗= {srcProtol _to_ dstProtolNoAction〖ZK)〗〓〓}〓〓size = 1024〓〓default_action = NoAction()}〖BFQ〗4)根據配置文件中協議的報文參數,通過匹配加動作的方式完成轉換后協議信息傳入。 〖BF〗action 〖ZK(〗srcProtol _to_ dstProtol (bit<4> version,bit<8> trafficClass,bit<20> flowLabel,bit<16> payLoadLen,bit<8> nextHdr,bit<8> hopLimit,bit<128> srcAddr,bit<128> dstAddr){hdr dstProtolversion = versionhdr dstProtoltrafficClass = trafficClasshdr dstProtolflowLabel = flowLabelhdr dstProtolpayLoadLen = payLoadLenhdr dstProtolnextHdr = nextHdrhdr dstProtolhopLimit = hopLimithdr dstProtolsrcAddr = srcAddrhdr dstProtoldstAddr = dstAddr〖ZK)〗}〖BFQ〗出口控制完成協議轉換后,報文傳入逆解析器完成數據包頭部信息的重組。NATDP技術依靠P4語言強大的報文處理能力,可以實現協議轉換流程的自定義。載荷在經過解析器后,直接進入緩沖區等待,并不參與整個協議轉換流程。直到報文傳入逆解析器后,載荷與頭部信息重組完成,數據包被執行相應的轉發,復制等動作。數據平面實現協議間的轉換流程如圖3所示。 圖3協議轉換流程圖 Fig3Protocol conversion 3仿真測試實驗 31實驗平臺 采用Mininet仿真器進行仿真實驗。作為一款虛擬化技術型開源軟件,Mininet可以模擬由軟件定義網絡節點組成的輕量級網絡。用戶主機可以通過Mininet自定義控制器、交換機、和主機組成的虛擬網絡系統,實現網絡運行環境的模擬與測試。為將P4源程序轉換成Mininet配置文件,需要使用行為模型(behavior model)編譯器(bmv2)對P4程序編譯:p4cbm2ssp4v 16p4runtimefile build/xxxp4infop4runtimeformat texto build/xxxjson xxxp4。編譯完成后,運行腳本實現交換機通信:run_exercisepyt topologyjsonb simple_switch_grpc。 32協議轉換仿真測試 首先測試IP協議的轉換功能。主機h1作為接受端接收來自主機h2的服務請求,h1為IPv6節點,h2為IPv4節點。為消除協議差別的通信障礙,數據包在虛擬網絡沿著h1s1h2路徑,其中s1交換機為數據平面軟件交換機。IPv4IPv6協議轉換測試結果如圖4所示。 圖4IPv4IPv6協議轉換測試 Fig4IPv4IPv6 protocol conversion test 由圖4(a)發送端h2主機信息可知,目標主機的IPv4地址為100110,發送數據信息為“hello p4”。發送端發送的是協議類型為IPv4的數據包。由圖4(b)接收端h1主機信息可知,發送端主機h2在交換機中的地址映射配置為(100210fe80::2222),h1的IPv6地址為fe80::1111,接收到數據信息“hello p4”。發送端發送的協議類型已經從IPv4轉換為接收端的IPv6?删幊探粨Q機完成協議轉換機制算法對應的運行日志如圖5所示: 圖5交換機運行日志 Fig5Switch operation log 運行日志中,記錄出口控制流水線中實現協議轉換的流程,如圖5所示。具體的實現步驟如下:(1)由于要先完成IPv4IPv6的協議類型的轉換,在原協議類型的數據包經過解析器的實例化后,先判斷出原協議類型是否處于生效狀態和轉換的協議類型是否未生效(if (hdripv4isValid() && !hdripv6isValid());(2)將以太網層的協議類型字段修改成轉換后的類型值,并將目的轉換協議生效(hdripv6setValid());(3)在使源協議失效前,通過源協議的目的地址實現匹配(hdripv4dstAddr:lpm),將所需要生成的協議類型的頭部信息以匹配動作表的方式完成數據傳入(table_add headers_change ipv4_ipv6 100110/32 =〉 6 0 0 12 6 64 fe80::2222 fe80::1111),并實現協議地址與類型的映射關系;(4)被轉換協議完成目的協議報文信息的傳入后,需要將原協議類型失效(hdripv4setInvalid());(5)轉換后的協議與以太網協議通過逆解析器完成重組。實驗結果顯示,NATDP技術在數據平面的實現方法可以成功在可編程數據平面實現NATPT技術效果。 33協議擴展性與可重配置性仿真測試 為展現NATDP技術的協議擴展功能,在實現對數據包從IPv4到IPv6轉換的同時,對tcp與udp協議之間的轉換進行了測試,協議擴展性仿真測試需要在協議轉換實現IPv4IPv6轉換的基礎上,實現UDPTCP的協議轉換擴展。具體實現原理如下:(1)數據包通過解析器完成UDP協議頭部的解析與實例化;(2)在IPv4IPv6轉換過程中第三步,IPv6類型頭部生成并通過匹配動作表完成數據傳入時,需要將IPv6頭部中攜帶的協議類型相關字段修改為TCP類型(hdripv6nextHdr=6)。此時,數據包在完成重組后,進行下一次解析轉發時,會在完成IPv6數據頭部解析后,自動實例化解析TCP協議;(3)通過udp的目的端口號實現匹配(hdrudpdport:lpm),并將擴展的TCP協議信息通過匹配動作表的方式完成數據傳入;(4)轉換后的以太網、IPv6與TCP協議通過逆解析器完成重組,數據包處理流程結束,數據包被轉發。測試結果如圖6所示。 圖6UDPTCP協議轉換測試結果 Fig6UDPTCP protocol conversion test 測試結果如圖6(a)與圖6(b)所示,NATDP技術方案實現IPv4IPv6轉換的同時,對UDPTCP也實現了協議類型的轉換,可以有效解決特殊場景需求下NATPT技術無法用于傳輸層協議轉換的缺陷,增強了協議轉換的可擴展性。由于P4語言tcp報文中bit〈3〉ecn與bit〈6〉ctrl參數在mininet仿真中轉換為flags參數,測試通過給定的流表下發參數值的方式難以保證對應報文參數的準確性,從而對實驗過程中的載荷部分產生了一定的影響。但從發送端為udp,接收端為tcp來看,NATDP技術可以擴展udp與tcp之間的通信,實現了協議的可擴展性。 數據平面實現NATPT技術的可重配置性提升,在于用戶可通過P4語言靈活定義交換機中協議轉換算法的處理流程。傳統路由交換設備的可編程邏輯由硬件廠商設計,是內部封閉且硬件設備緊密綁定,而基于P4的NATDP技術方案,使得協議轉換技術在可編程數據平面可以實現靈活便捷的二次開發。同時,數據平面相較于在傳統設備上實現協議轉換技術,可以克服協議因受硬件綁定而導致兼容性難等問題。因此NATDP技術方案實現對協議轉換技術的可重配置性的提升。 4結論 基于P4語言,將NATPT技術卸載到可編程數據平面中,實現數據平面協議轉換技術NATDP。測試結果表明,NATDP通過P4語言對協議的解析與轉換過程進行定義,可以使管理員在數據平面實現協議轉換機制的靈活配置,提升了NATPT技術的可重配置性。同時,由于NATDP技術可以通過協議轉換算法的自主設計,實現對轉換協議類型的擴展,可以有效解決NATPT技術服務于 IPv4和IPv6節點之間的通信時,無法實現多協議節點之間的數據包通信、協議擴展性差的問題。在協議類型轉換前后,匹配動作表會精確下發轉換后所需的報文信息,高效實現協議間差異信息的轉換,有效地保障了轉換后協議信息的完整性。但是,用軟件編程會影響交換機的運行空間和轉發速率,同時可編程的數據平面也給網絡安全帶來風險,相關問題有待進一步探索。
                摇骰子玩法