當前位置: 華文世界 > 科技

幹貨分享丨IPv6邊緣網路多出口技術方案分析與實際套用

2024-05-07科技

近年來,隨著互聯網的普及與廣泛套用,特別是行動網際網路、雲端運算、物聯網、工業互聯網的蓬勃發展,傳統的IPv4地址資源緊缺問題日益凸顯。IPv6能夠提供海量的網路地址資源,是實作萬物互聯,促進生產生活數位化、網路化、智慧化發展的關鍵要素。發展基於IPv6的下一代互聯網,是互聯網演進升級的必然趨勢。目前,國內三大基礎電信企業骨幹網和城域接入網路已全部支持IPv6,並全面支持IPv6承載和接入服務。因此,原來透過IPv4多鏈路接入互聯網的企業網路,升級改造為IPv4、IPv6雙棧方式接入,也勢在必行。由於IPv6與IPv4在技術上有諸多不同,因此IPv6多鏈路出口的路由部署存在著較大差異。

IPv4與IPv6出口在接入互聯網路技術上的差異

1.由於IPv4公網地址的局限,邊緣網路接入互聯網,基本上都采用NAT(Network Address Translation)接入方式,且基本上是PAT(Port Address Translation)方式。IPv6由於有海量的網路地址,邊緣網路接入互聯網路根本不存在NAT方式。國際標準組織在制訂IPv6相關技術標準的時候,建議避免使用IPv6 NAT技術,原因是IPv6 NAT會破壞互聯網端到端的可達性。

2.在IPv4環境下,一台網路主機(或介面)一般都配置一個IPv4單播地址,即使有多個網路介面地址,但主機在選擇某條路由時,有唯一確定的單播地址。但是在IPv6環境下,單播地址分為全球單播地址(GUA)、鏈路本地地址(LLA)、唯一本地地址(ULA)等。一台網路裝置(或介面)至少有兩個以上單播地址。網路裝置(或介面)在多個單播IPv6地址的情況下,與外界主動通訊時,還要根據目的IPv6地址選擇IPv6源地址,因此源地址的選擇就存在較大的不確定性。

在IPv4多鏈路出口情況下,由於存在網路營運商互聯互通方面的問題,最常用的出口選路方法采用就近選路原則,即透過缺省路由與營運商(ISP) 的明細路由結合起來完成選路,讓主機存取某ISP伺服器的流量從連線該ISP的鏈路轉發,避免流量從另外的ISP鏈路迂回繞道。即使明細路由缺失、或根據源地址等方式進行策略路由選路,企業網路絡的IPv4地址都會透過NAT44轉換成該營運商對應的IPv4地址,並從該營運商的鏈路上轉發出去。路由選擇即使不是最優路徑,一般也不會導致路由不可達的情況出現。

但是在IPv6的環境下,出口選路相比IPv4的情況會有很大的不同。一方面是因為上述所說的IPv6源地址選擇問題。另一方面是因為國際標準組織IETF在制訂IPv6相關技術標準時,建議避免使用IPv6 NAT 技術,以免破壞互聯網端到端的可達性。

因此,在IPv6網路多出口環境下,要滿足端到端可達性,而且出口防火墻在不開啟NAT66的情況下,內部主機必須配置多個IPv6地址,有幾條鏈路出口就必須配置相應數量的IPv6地址。但僅僅這些條件還不夠。下文結合圖 1、表1來介紹。

圖 1 IPv6多出口拓撲

表 1 出口裝置相關IPv6地址分配

某台有多個GUA地址的內網主機要存取外網時,當選擇的源地址是某一營運商(如ISP1)的IPv6地址,在出口裝置不做NAT66轉換的情況下,出口防火墻很有可能選擇將數據從另一營運商(ISP2)的鏈路進行轉發。這樣一來就造成數據丟包、路由不可達的情況出現。如圖1所示,如果內部主機PC配置了240E:691:2100:101:209::2/64(電信)和 2408:8640:20FF:2:209::2/64(聯通)兩個GUA地址,在防火墻單向(即使是雙向)放行IPv6封包及不開啟NAT66情況下,在出口防火墻選路時,將配置240E:691:2100:101:209::2/64(電信)源地址的封包,從聯通的鏈路上轉發出去,造成數據丟包。PC存取http://www.test-ipv6.com/網站,進行IPv6連線測試,IPv6多項計畫測試失敗,IPv6連線不正常。

基於IPv6端到端可達與網路路徑最優的兩種解決方案

1.出口防火墻上配置基於源地址的策略路由

針對上面提到的問題,當有多個GUA地址的內網主機要存取外網時,有兩個解決方案。一種辦法是:在出口防火墻保留靜態和預設路由的情況下,做源地址的策略路由,即根據源IPv6地址選擇路由。對於源地址為ISP1營運商的封包,就從該營運商ISP1鏈路轉發出去;對於源地址為ISP2營運商的封包,就從該營運商ISP2轉發出去,如圖2。

圖2 華為USG防火墻基於源地址的策略路由配置

PC登入http://www.test-ipv6.com/網站,進行IPv6連線測試,IPv6計畫測試全部成功,IPv6連線正常。

但這種辦法的缺點是,路由選擇可能不是最優路徑,流量有可能從另外的ISP鏈路迂回繞道,造成網速變慢的情況,失去了多家營運商多鏈路接入的初衷。比如,根據https://ispip.clang.cn/ 網站的數據,其中包含2001:e18::/32 等26條網路字首條目為中國聯通使用,2001:7fa:10::/48等40條網路字首條目為中國電信使用。如果內部主機分別存取2001:e18::/32和2001:7fa:10::/48這兩個網段的網路裝置,這兩個IPv6 地址的前16位元字首都為2001::/16。根據內部主機IPv6源地址選擇原則,一般情況下選擇與目的的IPv6地址最長匹配的源IPv6地址,內部主機因此選擇2408:8640:20FF:2::為字首的聯通GUA地址,防火墻根據源地址選路,都是選擇從聯通出口去存取這兩個網路地址。因此,存取中國電信的2001:7fa:10::/48網路時,就造成網路的迂回繞道,如圖3。

圖 3 防火墻IPv6會話表:存取聯通和電信的網路,都走了聯通出口

當其中一條出口鏈路故障或中斷時(如ISP1),由於采用的是源地址選路的智慧路由,會造成內部主機源地址為ISP1地址,網路通訊中斷。因此,例外處理辦法是在基於源地址策略路由的基礎上,作鏈路檢測,添加track ip-link Unicom6等命令(如圖4)。當檢測到某條鏈路失效時,去往該營運商的策略路由失效,防止封包從該營運商鏈路上轉發出去,造成數據丟包。

圖4 USG防火墻出口的IPv6 鏈路狀態檢測

此外,出口防火墻還需要做NAT66或NPTv6轉換。如果防火墻選擇從ISP1鏈路轉發,而ISP1鏈路剛好又發生故障,則該條策略路由不生效,ISP1鏈路的預設路由也不生效(透過鏈路檢測)。根據路由選路原則,封包選擇從另一條ISP2轉發出去,這樣內部主機源地址為ISP1的GUA 地址,而選擇的鏈路為其他營運商ISP2的,封包很可能會被丟棄。 因此,對於源地址為ISP1的封包從ISP2鏈路上轉發時,或對於源地址為ISP2的封包從ISP1鏈路轉發時,都需要做NAT66或NPTv6轉換(如圖5)。即對於源地址為ISP1的,需要從ISP2鏈路轉發時,將ISP1的源地址轉換為ISP2 地址。

圖5 終端IPv6源地址與選擇出口營運商鏈路不一致時,USG做NAT66或NPTv6轉換

2.出口防火墻上配置NAT66或NPTv6

當有多個GUA地址的內網主機,在出口防火墻有多鏈路出口的情況下,存取外網時出現異常的另一種解決方法為:在出口防火墻根據目的地址選路,並且做IPv6 NAT66。這與IPv4 NAT44的方法類似。為了防止網路迂回繞道的問題,出口防火墻根據目的地址選路。目的地址為中國電信的,走中國電信的鏈路出口,同時還要根據源地址的情況,決定是否做NAT66 轉換。如果源地址不是中國電信的GUA,出口防火墻還需要將源地址透過NAT66 轉換為中國電信的GUA;源地址是中國電信的,則直接轉發不作轉換。

如果目的地址和源地址均為中國聯通的,則透過中國聯通的鏈路出口,直接轉發。如果源地址不是中國聯通GUA ,出口防火墻還需要將源地址透過NAT66轉換為中國聯通的GUA。同時,對多條鏈路都配置預設路由,防火墻開啟全域策略選路,選路方法可以是根據租用的鏈路頻寬、鏈路品質、鏈路權重等方式,用最優的方式解決去往非中國聯通、和非中國電信的其他站點的存取。

IPv6 NAT66源地址轉換方法有兩種,即NAT66(字首地址靜態轉換)或NPTv6(IPv6-to-IPv6 Network Prefix Translation,NPTv6 RFC6296) 。NAT66只是將IPv6的字首部份做替換,後幾位保持不變。轉換裝置(如出口防火墻)需要保存這兩個地址之間的轉換對映關系。它是一種有狀態的地址轉換技術。NPTv6透過特定的演算法,實作IPv6地址之間的雙向轉譯,轉換裝置無需保存兩者之間的對映關系,是一種無狀態的地址轉譯技術。但是在出口防火墻安全策略實施後,也必須保留兩者之間的對映關系,否則外部數據無法返回到防火墻內部。嚴格來說,NPTv6盡管在邊緣網路內部使用的地址與在邊緣網路外部使用的地址不同,但端到端的可達性仍得以保留。NAT66與NPTv6的區別參閱相關文件。NAT66 轉換配置方法如圖5所示。圖6為防火墻IPv6 NAT66轉換的會話表。

圖6 USG防火墻IPv6 NAT66轉換的會話表

在防火墻出口要做NAT66或NPTv6(IPv6-to-IPv6 Network Prefix Translation,NPTv6)轉換,在內部主機地址配置上可以考慮不采用營運商多個GUA 地址,內部主機也可以使用單營運商IPv6 GUA地址,或者只配置唯一本地地址(如ULA)等其他方式。

對於內部主機地址為單營運商(如ISP1)的,如果目的地址鏈路選擇為ISP1的,則不需要做NAT轉換,數據直接轉發就可以了。因此,這種方式大大降低了NAT轉換的可能性。內部主機只配置唯一本地地址(ULA)的,則對所有進出防火墻的封包都要做NAT66或NPTv6轉換。而對於內部主機配置兩個營運商IPv6 GUA地址的,如果內部主機源地址,和存取的目的地址為同一營運商的,則不需要做NAT轉換,也能大大減少NAT轉換數量,可提升網路轉發效率。

以下根據內部主機配置的GUA地址或ULA地址,相關情況的比照。

從以上對比中對比可知,內部主機配置單個營運商GUA為比較合適的方案。

對於在出口防火墻上配置NAT66或NPTv6這種方案來說,無論哪一條鏈路故障,因為有鏈路冗余,都不會造成網路通訊中斷的情況出現。特別是內部主機只配置唯一本地地址(如ULA)時,NAT66 技術保持了邊緣網路IP地址獨立性,網路設計人員在規劃網路設計時,不需要因為更換網路電信業者,而對企業網路絡進行地址重新規劃。

但是由於使用NAT66或NPTv6技術,更改了原始IP地址,網路中存在FTP等套用層感知IP地址的套用時,需要部署ALG等相關技術,才能使這些套用正常地工作。同樣NAT66或NPTv6由於對地址作了轉換,IPSec技術在使用中,影響了包含IP地址的完整性校驗,部份IPSec問題可以透過部署防火墻的NAT-T等相關技術解決。

3.BGP等其他技術方案

除了以上兩種方案,BGP(Border Gateway Protocol,邊界閘道器協定)技術方案是大型企業接入IPv6網路的最佳選擇。BGP是自治系統間的路由協定。BGP交換的網路可達性資訊提供了足夠的資訊來檢測路由回路,並根據效能優先和策略約束對路由進行決策。BGP主要用於互聯網AS ( 自治系統 )之間的互聯,全國各大網路營運商和阿裏、騰訊等大型互聯網企業,都是透過BGP協定與自身的AS 號來實作多線互聯的。

企業可以在APNIC或CNNIC申請自己的AS號和IP地址,透過BGP路由協定,將IP地址資訊分別釋出到所連線的營運商網路中,實作與多個營運商之間的互聯互通。透過BGP協定方案連線網路,使各接入的營運商之間形成備份,當某一營運商出現故障時,系統會將該營運商路線上的存取請求切換到其他營運商路線上。無論是IPv4協定還是IPv6協定,BGP技術方案都是最佳方案之一。而內部主機只需要配置從CNNIC申請來的單一GUA地址就可以了,網路的獨立性也得到很好保證。但是從實際來看,將營運維護、安全措施、裝置設施及頻寬要求與營運商BGP互聯是不現實的。

解決方案對比及方案建議

以上兩種解決方案,一個是從基於端到端可達性角度出發,另一個是著重於將網路選路最佳化作為解決辦法,相關情況對比如下表所示。

綜合以上兩種技術方案,都各有優缺點。方案的選擇,取決於企業本身的業務需求和網路接入的頻寬情況。為了防止流量的迂回繞道,提高上網的品質,比較而言,方案二中終端配置單營運商GUA地址的方法,適合一般企業使用,值得推薦使用。這也是一般企業多鏈路接入多家營運商的初衷。由於IPv6 NAT66會破壞互聯網端到端的可達性,影響FTP、IPSec等相關業務,可以在較小的地址範圍,對出口防火墻做基於源地址的策略路由,因為策略路由會優先於明細路由實施。這其實是兩種方案的互為補充,技術人員在實施時可以根據情況靈活調整。

作者:寧波市北侖區傳媒中心 繆春倫、王承東、朱晴南