ipv4v6双栈技术_【第二十六期】IPv6系列应用篇——数据中心IPv4/IPv6双栈架构探讨...
背景
2017年,工業和信息化部發布了《推進互聯網協議第六版(IPv6)規模部署行動計劃》的通知,從國家層面推動下一代IP技術——IPv6的普及和應用。目標到2020年末,IPv6活躍用戶數超過5億,在互聯網用戶中的占比超過50%,新增網絡地址不再使用私有IPv4地址。這就要求從互聯網應用、網絡基礎設施、應用基礎設施和網絡安全等各個維度推動IPv6的改造和建設。
互聯網業務的IPv6改造不會一蹴而就,這還受限終端及運營商網絡的IPv6能力,所以IPv4業務和IPv6業務并存將會持續很長時間。而數據中心作為應用基礎設施的重要部分,需要同時支撐IPv4業務和IPv6業務,雙棧部署是最重要的技術手段。今天就跟大家聊聊數據中心IPv4/IPv6網絡雙棧架構的一些實踐。雙棧部署涉及很多方面,由于受限文章長度,本次主要聚焦IPv6組網下的PXE裝機及IPv6服務器雙歸冗余架構的實現。
在展開具體分析之前,先帶大家先回顧IPv6地址分類(含規劃建議)和IPv6地址的分配原則,幫助大家更好的理解本文內容。
IPv6地址分類及規劃建議
數據中心基礎網絡主要使用IPv6單播地址,涉及服務器業務地址、服務器管理地址、交換機互聯地址、交換機管理地址的分配。
IPv6單播地址可分為全球單播地址、唯一本地地址以及鏈路本地地址,如下圖所示。
▲圖一 IPv6單播地址分類
? 服務器業務地址、服務器管理地址以及交換機管理地址建議采用唯一本地地址,并使用64位掩碼長度。
1、空間大:
(1)64位掩碼空間擁有2,814,749億個地址空間。
2、節省交換機硬件表項:
(1)交換機用于存放表項的硬件資源十分有限;
(2)64位掩碼的網段路由相比128位掩碼的主機路由,需要更小的匹配域(源IP、目的IP),消耗更少的硬件資源。
使用64位掩碼的網段也會帶來一些小問題,我會在IPv6服務器雙歸冗余架構章節詳細介紹。
? 交換機互聯地址建議使用唯一本地地址。
1、唯一本地地址空間足夠大,這個上面已說明;
2、OSPF、BGP等路由協議對鏈路本地地址的支持還不夠成熟。
IPv6地址分配原則
如下圖所示,IPv6地址分配方式可分為手工配置和自動配置,自動配置又分為有狀態地址自動分配(DHCPv6)以及無狀態地址自動分配。
▲圖二 IPv6地址配置方式
有狀態地址分配方式和DHCPv4類似,依賴DHCPv6協議從DHCPv6 Server的地址池中獲取可用的IPv6地址,而無狀態地址自動配置擺脫了復雜的DHCPv6協議,依賴ND(Neighbor Discovery,鄰居發現)協議即可完成地址自動配置。下圖是服務器無狀態地址自動配置的過程:
▲圖三 無狀態地址自動配置過程
? 服務器主動發送RS(Router Solicitation,路由器請求)報文,RS報文的源IP是服務器的Link-local地址,目的IP是組播IP;
? 交換機收到RS報文后,進行RA(Router Advertisement,路由器公告)報文的封裝及發送,源IP是網關的Link-local地址,目的IP是組播IP。需要重點關注的是RA報文的M標志位以及O標志位,M標志位的值為0,服務器才會走無狀態地址配置流程;
? 服務器收到RA報文后,會將RA報文的源IP設置為默認網關,并解析RA報文的M、O標志位,如果M標志位為0則解析RA報文攜帶的路由前綴內容,接口ID使用EUI-64格式生成。
RA報文中M以及O標志位的具體含義如下:
? M:管理地址標志位(Managed Address Configuration)。
1、置0表示無狀態地址分配,客戶通過無狀態協議獲取IPv6地址;
2、置1表示有狀態地址分配,客戶端通過有狀態協議(DHCPv6)獲取IPv6地址。
? O:其他狀態標志位(Other stateful Configuration)。
1、置0表示客戶端通過無狀態獲取除地址外的其他配置信息;
2、置1表示客戶端通過有狀態獲取其他配置信息(如DNS、SIP服務器等);
若M標志位為1,則O標志位也必須為1。
相比有狀態地址自動配置,無狀態地址自動配置的優勢如下:
? 真正的即插即用
主機連接到一個沒有DHCP服務器的網絡時,無須手動配置地址等參數即可訪問網絡;
? 網絡遷移方便
當一個站點的網絡前綴發生變化時,主機能夠方便地進行重新編址而不影響網絡連接;
? 降低網絡復雜度
不需要部署獨立的DHCPv6服務器,所以簡化了網絡規劃及運維難度;
? 提高網絡可靠性
服務器地址獲取不依賴集中的DHCPv6服務器,從而提高整體的可靠性。
IPv6服務器PXE裝機方式
在數據中心內部,服務器裝機是必不可少的環節,傳統的PXE(Preboot Execute Environment,預啟動執行環境)裝機流程如下:
▲圖四 傳統PXE裝機示意圖
整體分兩個階段:
? PXE階段:
服務器需要通過DHCP協議獲得配置信息,包括IP地址,默認網關以及File Server地址。
? 安裝階段:
服務器請求File Server的軟件鏡像以及配置信息,下載完成后通過內嵌裝機軟件,完成系統安裝,配置下發等一系列動作。
對比IPv4的PXE裝機流程,有狀態地址自動配置環境下的IPv6服務器裝機變得更加復雜。
當然你可以繼續沿用現有的IPv4網絡對IPv6服務器進行裝機,不過考慮到最終要演進到IPv6 only,IPv6裝機是必不可少的。下面具體闡述有狀態地址自動配置環境下IPv6服務器裝機復雜在哪里?
▲圖五 IPv6有狀態PXE裝機
有狀態地址自動配置環境下的IPv6 PXE裝機也分為兩個大階段:
? PXE階段:
1、服務器需要通過ND(Neighbor Discovery,鄰居發現)協議或者DHCPv6協議獲取IP地址;
2、通過ND協議完成服務器的“默認網關”配置;
3、通過DHCPv6 完成File Server地址配置。
? 安裝階段:
拿到File Server地址配置后,通過TFTP或者FTP下載鏡像以及配置信息,通過內嵌裝機軟件完成系統安裝。
IPv6服務器PXE裝機的復雜主要體現在需要同時依賴ND協議及DHCPv6的有狀態地址自動配置兩種技術。
? 必須依賴ND協議獲取默認網關的相關配置
1、默認網關信息必須依賴ND協議的RA消息:
(1)RA消息的源IP(默認是網關的Link-local地址)是下聯服務器的默認網關。
2、必須通過RA消息中O標志位獲取DHCPv6 Server信息。
? 需要依賴DHCPv6服務器獲取File Server地址等信息
服務器必須向DHCPv6 server獲取File server地址以及DNS等信息。
從上面的過程不難看出,ND協議是對于IPv6主機是必不可少的組件,所以要降低IPv6服務器PXE裝機的復雜度,只能想辦法實現去掉DHCPv6協議。
深入分析有狀態PXE裝機方案,只需要解除通過DHCPv6獲取File Server地址配置這一個限制即可。具體就是通過RA+DNS的方式實現,這個方案我們稱之為無狀態地址裝機方案。
? 定義RA消息的URL Option擴展屬性,攜帶File Server的域名;
? 主機通過RA消息獲得DNS 服務器地址(DNS服務器地址手工配置在交換機);
? 通過DNS域名解析,獲得File Server的地址。
基于無狀態地址自動配置的IPv6服務器PXE裝機整體流程如下圖所示:
▲圖六 IPv6無狀態PXE方案
服務器發送RS報文請求,交換機應答RA(啞終端則等待設備定期發送RA),服務器根據RA報文完成自動配置,包括:IP地址、默認網關、DNS Server、以及File Server的URL;
? 服務器獲取地址后,發送DAD報文進行地址沖突檢測;
? 服務器發送NS報文請求網關ND,交換機通過NS報文學習服務器ND信息,并發送NA應答;
? 服務器向DNS Server發送域名解析URL請求,然后從File Server下載bootfile,執行裝機。
顯然基于無狀態地址的IPv6 PXE裝機方案去掉了繁重的DHCPv6協議,不需要額外消耗DHCP Server資源,更簡單、更輕量,也簡化了網絡的規劃。有狀態的DHCPv6裝機方案,地址池的計算、管理全部在DHCPv6服務器端,這種方式出錯成本很高,即DHCP服務器的地址池維護分配如果出現問題,整個集群的服務器PXE裝機都會受影響,而無狀態地址裝機則更為簡單,簡單意味著可靠和穩定。
IPv6服務器雙歸冗余架構
在聊IPv6服務器雙歸冗余架構之前,我們先看看IDC雙棧方案的整體組網架構。
▲圖七 IDC雙棧方案架構示意圖
? 接入、匯聚、核心交換機之間建立雙棧EBGP鄰居;
? 直連端口配置雙棧地址,IPv4 的BGP Session承載IPv4路由,IPv6 的BGP session承載IPv6路由;
? 服務器上行雙歸到接入交換機,兩臺接入交換機為一組,接入交換機實現去堆疊方案(類似IPv4下的去堆疊,具體參見【第六期】如何實現數據中心網絡架構“去”堆疊。
IPv6服務器雙歸冗余架構就是IPv6環境下的接入交換機去堆疊,與IPv4下的去堆疊組網目標一致,但是具體細節上又有很多的不同。
? 廣播風暴抑制
1、在IPv6的去堆疊方案中,最重要的是避免廣播風暴,需要在接入交換機下聯口開啟風暴抑制功能;
2、IPv4場景組要指定隔離廣播、組播、未知單播報文;
3、IPv6取消廣播的概念,只需隔離組播報文。
? 二層隔離+網關代答
1、IPv4在二層隔離的場景下,同子網內主機的互通采用ARP Proxy方案,即ARP代答,對于主機ARP請求的任何IP地址都應答網關的MAC地址;
2、IPv6在二層隔離的場景下,同子網內主機的互通有兩種方案:
(1)部署ND Proxy來實現代答,類似IPv4的ARP Proxy方案;
(2)通過RA消息(L-bit)標識置為0,通告下連地址段前綴為“off-link”,即非直連網段,所有報文的轉發都必須通過網關。
ND Proxy方案詳解
ND Proxy方案的復雜度在交換機側,不依賴于服務器的協議棧。
交換機需要實現同網段通信走三層轉發。即交換機對服務器發出所有NS請求,都以網關的MAC地址進行應答,并在硬件出方向不轉發服務器的NS報文,包括目的服務器和源服務器是同網段。
ND-Proxy網關代答詳細流程如下圖:
▲圖八 ND-proxy代答時序圖
? 服務器S1主動發NS報文來獲取服務器S2的MAC地址;
? 交換機配置了ND Proxy,所以NS報文直接被上送到CPU,判斷本機是否存在S2的ND表項,如果存在則直接代答NA報文;
? 如果不存在S2的ND表項,為了確保S2當前是真實在線的,交換機CPU會主動發源IP是網關IP、目的IP是服務器S2的NS報文;
? S2收到NS后應答NA報文,交換機收到S2的NA報文后在本地生成S2的ND表項并代答NA報文給S1;
? 如果S2發生故障或者不在線,則網關不會代答NA報文給服務器S1,否則會造成黑洞丟包。
設置硬件出方向不轉發NS報文的原因是避免ND表項泄露。
這個問題跟IPv4場景的去堆疊場景類似,如果不做出方向ARP報文的抑制會導致ARP泄露,從而導致服務器雙掛變單掛的故障場景下,部分業務流會一直斷流。
▲圖九 Server1雙掛變單掛示意圖
如上圖所示,如果不做ARP或者ND在出方向的抑制,當廣播風暴抑制不生效時,S2會學到S1的ARP以及ND記錄,則S2發往S1的報文封裝的MAC地址是S1的真實MAC地址,而不是網關的MAC地址,當S1發生單上聯口故障時,S2到S1走交換機-1的流量會被全部丟棄。
接入交換機硬件出方向應用ARP抑制完全沒問題,但是出方向應用NS抑制會帶來新問題,即同一臺接入交換機下其他服務器無法收到DAD報文,導致DAD(Duplicate Address Detection,重復地址檢測)檢測失效。為解決此問題,交換機需要實現DAD報文學習ND的功能。流程如下圖所示:
▲圖十 DAD報文學習ND流程圖
? 當交換機收到DAD報文時,會查看本機是否存在請求目的地址的ND表項;
? 如果沒有則創建ND表項,并把ND狀態置為Stale;
? 如果存在ND表項,則比較DAD報文的源MAC和該ND表項的MAC;
? 如果MAC不同,則說明檢測到重復地址,發送NA報文通知發送端IP地址重復,IP地址不可用。
L-bit網關代答方案詳解
基于L-bit的網關代答方案,通過RA報文中攜帶指定Prefix的off-link屬性,使下聯主機對與該Prefix同網段的通信請求,必須先經過網關。L-bit方案依賴服務器主機的協議棧行為,不是所有的服務器OS都天然支持。
L-bit網關代答方案的詳細原理如下:
? 交換機上關閉RA抑制功能;
? 周期性通告RA消息給直連服務器,交換機配置指定前綴的On-link Flag為0;
? 主機收到RA后,通過解析指定前綴的On-link-flag是否為0;
? 如果On-link-flag為0,則表示到此前綴的所有流量直接發給默認網關;
服務器同時通過解析RA報文獲取默認網關IP,并查詢ND表項,發往此前綴的所有流量的目的MAC會被封裝成默認網關MAC。
簡單對比ND-Proxy以及L-bit這兩種網關代答方案:
▲表一 兩種網關代答方案優劣對比
顯然在服務器OS滿足要求的前提下,L-bit方案更好。不過網絡無法對業務服務器灌裝版本做嚴格的要求,所以建議采用ND-Proxy方案、L-bit方案同時開啟。如果服務器OS支持L-bit能力,則不會走到ND-Proxy的代答流程;如果服務器OS不支持L-bit,交換機的ND-proxy功能可以保證代答轉發。
在第一章節講IPv6地址規劃時,我們遺留了一個問題,即采用64位掩碼長度網段的問題,其實這也不算是問題,只是在服務器雙歸部署時,需要進行一些特殊的處理,這就牽扯到一個重要的特性——ND指定前綴轉路由。
在理解ND指定前綴轉路由概念之前,我們先要講一下關于去堆疊場景ARP/ND轉主機路由的需求。如果一組接入交換機各自發布相同的主機網段路由,那么當其中一臺接入交換機與某臺主機的上行鏈路故障時,訪問這臺主機的流量可能會丟失一半的流量。只有把ARP/ND轉成主機路由,面對上面的問題,接入交換機在發現下行連接某個主機的鏈路故障時,它會快速撤銷其對應的主機路由,就不會發生斷流問題了。這里面的關鍵就在于ARP/ND生成的主機路由是如何占用硬件表項的?
? IPv4環境:
1、接入交換機會把ARP轉成32位長度的主機路由;
2、IPv4主機路由表項是復用ARP硬件表項資源的;
3、所以并沒有因為生成主機路由占用雙份的資源。
? IPv6環境:
1、ND轉成的主機路由算是網段路由,占用交換機ALPM表項;
2、ND本身占用的是L3_entry表項;
3、ND轉成的主機路由與ND表項不復用;
如果直接把ND轉成對應128位長度的主機路由,一條128位的主機路由在ALPM硬件資源中需要占用兩個表項(210 bit),對于本來就緊張的APLM硬件資源就是極大的浪費。
所以,在IPv6服務器雙歸冗余架構下,為了最大化節約交換機ALPM硬件表項的資源,需要壓縮ND轉成的主機路由長度,指定ND轉成主機路由的前綴長度,這就是ND指定前綴轉路由。而64位掩碼長度是最優的選擇,因為64位掩碼長度的網絡路由在ALPM硬件資源中只占用一條表項(105 bit)。這也就是在第一章講IPv6地址規劃時,為什么建議采用64位掩碼長度的原因。
下面我們舉個例子來說明。
假設終端的IPv6地址為fc00:1:1010:35::1124,按照統一的64位網段規劃,接入交換機學到ND后轉fc00:1:1010:35::1124/64網絡路由,按照下聯48臺服務器,每臺服務器1虛30的能力來計算,直連ND表項的數量為48*30 = 1440個,只占ALPM表容量的1%左右(以Broadcom Trident3估算),假設一個POD有30組接入交換機,那么每臺接入交換機上從網絡學到ND轉成64位掩碼長度的網絡路由會占用了29 * 1% = 29%的ALPM硬件資源,設想下,如果不壓縮ND轉成的主機路由長度,那么從網絡學到的128位主機路由就會很輕易的用掉58%的ALPM硬件資源。
總 結
本文重點針對IPv4/IPv6雙棧環境下的地址規劃、PXE裝機及服務器雙歸部署進行了簡單的討論。總結起來,因為IPv6相關協議及地址長度的變化,再疊加原有的IPv4,IPv4/IPv6雙棧架構對網絡運維、網絡安全,以及交換機硬件表項都帶來不小的挑戰,部署雙棧后如何應對這些挑戰,后面會繼續跟大家分享。
附專業術語解釋:
本期作者:陳冬林
銳捷網絡互聯網系統部行業咨詢
往期精彩回顧
總結
以上是生活随笔為你收集整理的ipv4v6双栈技术_【第二十六期】IPv6系列应用篇——数据中心IPv4/IPv6双栈架构探讨...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux批量修改文件名字
- 下一篇: 因为热爱