IPv6
網際網路工程的網路協議
IPv6是英文“Internet Protocol Version 6”(網際網路協議第6版)的縮寫,是網際網路工程任務組(IETF)設計的用於替代IPv4的下一代IP協議,其地址數量號稱可以為全世界的每一粒沙子編上一個地址。
由於IPv4最大的問題在於網路地址資源有限,嚴重製約了網際網路的應用和發展。IPv6的使用,不僅能解決網路地址資源數量的問題,而且也解決了多種接入設備連入網際網路的障礙。
網際網路數字分配機構(IANA)在2016年已向國際網際網路工程任務組(IETF)提出建議,要求新制定的國際網際網路標準只支持IPv6,不再兼容IPv4。
至1992年初,一些關於網際網路地址系統的建議在IETF(網際網路工程任務組)上提出,並於1992年底形成白皮書。在1993年9月,IETF建立了一個臨時的ad-hoc下一代IP(IPng)領域來專門解決下一代IP的問題。這個新領域由Allison Mankin和Scott Bradner領導,成員由15名來自不同工作背景的工程師組成。IETF於1994年7月25日採納了IPng模型,並形成幾個IPng工作組。
從1996年開始,一系列用於定義IPv6的RFC發表出來,最初的版本為RFC1883。由於IPv4和IPv6地址格式等不相同,因此在未來的很長一段時間裡,網際網路中出現IPv4和IPv6長期共存的局面。在IPv4和IPv6共存的網路中,對於僅有IPv4地址,或僅有IPv6地址的端系統,兩者無法直接通信的,此時可依靠中間網關或者使用其他過渡機制實現通信。
2003年1月22日,IETF發布了IPv6測試性網路,即6bone網路。它是IETF用於測試IPv6網路而進行的一項IPng工程項目,該工程目的是測試如何將IPv4網路向IPv6網路遷移。作為IPv6問題測試的平台,6bone網路包括協議的實現、IPv4向IPv6遷移等功能。6bone操作建立在IPv6試驗地址分配基礎上.並採用3FFE::/16的IPv6前綴,為IPv6產品及網路的測試和試商用部署提供測試環境。
截至2009年6月,6bone網路技術已經支持了39個國家的260個組織機構。6bone網路被設計成為一個類似於全球性層次化的IPv6網路,同實際的網際網路類似,它包括偽頂級轉接提供商、偽次級轉接提供商和偽站點級組織機構。由偽頂級提供商負責連接全球範圍的組織機構,偽頂級提供商之間通過IPv6的lBGP-4擴展來儘力通信,偽次級提供商也通過BGP-4連接到偽區域性頂級提供商,偽站點級組織機構連接到偽次級提供商。偽站點級組織機構可以通過默認路由或BGP-4連接到其偽提供商。6bone最初開始於虛擬網路,它使用IPv6-over-IPv4隧道過渡技術。因此,它是一個基於IPv4網際網路且支持IPv6傳輸的網路,後來逐漸建立了純IPv6鏈接。
從2011年開始,主要用在個人計算機和伺服器系統上的操作系統基本上都支持高質量IPv6配置產品。例如,Microsoft Windows從Windows 2000起就開始支持IPv6,到Windows XP時已經進入了產品完備階段。而Windows Vista及以後的版本,如Windows 7、Windows 8等操作系統都已經完全支持IPv6,並對其進行了改進以提高支持度。Mac OS X Panther(10.3)、Linux 2.6、FreeBSD和Solaris同樣支持IPv6的成熟產品。一些應用基於IPv6實現.如BitTorrent點到點文件傳輸協議等,避免了使用NAT的IPv4私有網路無法正常使用的普遍問題。
2012年6月6日,國際網際網路協會舉行了世界IPv6啟動紀念日,這一天,全球IPv6網路正式啟動。多家知名網站,如Google、Facebook和Yahoo等,於當天全球標準時間0點(北京時間8點整)開始永久性支持IPv6訪問。
根據颶風電子統計,截至2013年9月,網際網路318個中的283個頂級域名支持IPv6接入它們的DNS。約佔89.0%,其中276個域名包含IPv6黏附記錄,共5,138,365個域名在各自的域內擁有IPv6地址記錄。
2017年11月26日,中共中央辦公廳、國務院辦公廳印發《推進網際網路協議第六版(IPv6)規模部署行動計劃》。
2018年6月,三大運營商聯合阿里雲宣布,將全面對外提供IPv6服務,並計劃在2025年前助推中國網際網路真正實現“IPv6 Only”。7月,百度雲制定了中國的IPv6改造方案。8月3日,工信部通信司在北京召開IPv6規模部署及專項督查工作全國電視電話會議,中國將分階段有序推進規模建設IPv6網路,實現下一代網際網路在經濟社會各領域深度融合。11月,國家下一代網際網路產業技術創新戰略聯盟在北京發布了中國首份IPv6業務用戶體驗監測報告顯示,移動寬頻IPv6普及率為6.16%,IPv6覆蓋用戶數為7017萬戶,IPv6活躍用戶數僅有718萬戶,與國家規劃部署的目標還有較大距離。
2019年4月16日,工業和信息化部發布《關於開展2019年IPv6網路就緒專項行動的通知》。
2019年5月,中國工信部發布消息:中國正加快基於網際網路協議第六版(IPv6)的下一代網際網路規模部署,加快網站及網際網路應用生態向IPv6升級。力爭2019年末,13個網際網路骨幹直聯點IPv6改造完成。
2020年3月23日,工業和信息化部發布《關於開展2020年IPv6端到端貫通能力提升專項行動的通知》,要求到2020年末,IPv6活躍連接數達到11.5 億,較2019年8億連接數的目標提高了43%。
2021年10月11日,中國工業和信息化部總工程師韓夏介紹說,中國IPv6(網際網路協議第六版)網路基礎設施規模全球領先,已申請的IPv6地址資源位居全球第一。中國IPv6“高速公路”全面建成。
IPv6的長分散式結構圖
一、冒分十六進位表示法
格式為X:X:X:X:X:X:X:X,其中每個X表示地址中的16b,以十六進位表示,例如:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
這種表示法中,每個X的前導0是可以省略的,例如:
2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
二、0位壓縮表示法
在某些情況下,一個IPv6地址中間可能包含很長的一段0,可以把連續的一段0壓縮為“::”。但為保證地址解析的唯一性,地址中”::”只能出現一次,例如:
FF01:0:0:0:0:0:0:1101 → FF01::1101
0:0:0:0:0:0:0:1 → ::1
0:0:0:0:0:0:0:0 → ::
三、內嵌IPv4地址表示法
為了實現IPv4-IPv6互通,IPv4地址會嵌入IPv6地址中,此時地址常表示為:X:X:X:X:X:X:d.d.d.d,前96b採用冒分十六進位表示,而最後32b地址則使用IPv4的點分十進位表示,例如::192.168.0.1與::FFFF:192.168.0.1就是兩個典型的例子,注意在前96b中,壓縮0位的方法依舊適用。
IPv6報文的整體結構分為IPv6報頭、擴展報頭和上層協議數據3部分。IPv6報頭是必選報文頭部,長度固定為40B,包含該報文的基本信息;擴展報頭是可選報頭,可能存在0個、1個或多個,IPv6協議通過擴展報頭實現各種豐富的功能;上層協議數據是該IPv6報文攜帶的上層數據,可能是ICMPv6報文、TCP報文、UDP報文或其他可能報文。
IPv6的 報文頭部結構如圖:
IPv6
版本號 | 表示協議版本.值為6 |
流量等級 | 主要用於QoS |
流標籤 | 用來標識同一個流裡面的報文 |
載荷長度 | 表明該IPv6包頭部后包含的位元組數,包含擴展頭部 |
下一報頭 | 該欄位用來指明報頭後接的報文頭部的類型,若存在擴展頭,表示第一個擴展頭的類型,否則表示其上層協議的類型,它是IPv6各種功能的核心實現方法 |
跳數限制 | 該欄位類似於IPv4中的TTL,每次轉發跳數減一,該欄位達到0時包將會被丟棄 |
源地址 | 標識該報文的來源地址 |
目的地址 | 標識該報文的目的地址 |
擴展頭部:IPv6報文中不再有“選項”欄位,而是通過“下一報頭”欄位配合IPv6擴展報頭來實現選項的功能。使用擴展頭時,將在IPv6報文下一報頭欄位表明首個擴展報頭的類型,再根據該類型對擴展報頭進行讀取與處理。每個擴展報頭同樣包含下一報頭欄位,若接下來有其他擴展報頭,即在該欄位中繼續標明接下來的擴展報頭的類型,從而達到添加連續多個擴展報頭的目的。在最後一個擴展報頭的下一報頭欄位中,則標明該報文上層協議的類型,用以讀取上層協議數據。
IPv6
IPv6協議主要定義了三種地址類型:單播地址(Unicast Address)、組播地址(Multicast Address)和任播地址(Anycast Address)。與原來在IPv4地址相比,新增了“任播地址”類型,取消了原來IPv4地址中的廣播地址,因為在IPv6中的廣播功能是通過組播來完成的。
單播地址:用來唯一標識一個介面,類似於IPv4中的單播地址。發送到單播地址的數據報文將被傳送給此地址所標識的一個介面。
組播地址:用來標識一組介面(通常這組介面屬於不同的節點),類似於IPv4中的組播地址。發送到組播地址的數據報文被傳送給此地址所標識的所有介面。
任播地址:用來標識一組介面(通常這組介面屬於不同的節點)。發送到任播地址的數據報文被傳送給此地址所標識的一組介面中距離源節點最近(根據使用的路由協議進行度量)的一個介面。
IPv6地址類型是由地址前綴部分來確定,主要地址類型與地址前綴的對應關係如下:
地址類型 | 地址前綴(二進位) | IPv6前綴標識 | |
單播地址 | 未指定地址 | 00…0(128 bits) | ::/128 |
環回地址 | 00…1(128 bits) | ::1/128 | |
鏈路本地地址 | 1111111010 | FE80::/10 | |
唯一本地地址 | 1111 110 | FC00::/7 (包括FD00::/8和 不常用的FC00::/8) | |
站點本地地址(已棄用,被唯一本地地址代替) | 1111111011 | FEC0::/10 | |
全球單播地址 | 其他形式 | - | |
組播地址 | 11111111 | FF00::/8 | |
任播地址 | 從單播地址空間中進行分配,使用單播地址的格式 |
IPv6單播地址與IPv4單播地址一樣,都只標識了一個介面。為了適應負載平衡系統,RFC3513允許多個介面使用同一個地址,只要這些介面作為主機上實現的IPv6的單個介面出現。單播地址包括四個類型:全局單播地址、本地單播地址、兼容性地址、特殊地址。
一、全球單播地址:等同於IPv4中的公網地址,可以在IPv6 Internet上進行全局路由和訪問。這種地址類型允許路由前綴的聚合,從而限制了全球路由表項的數量。
二、本地單播地址:
鏈路本地地址和唯一本地地址都屬於本地單播地址,在IPv6中,本地單播地址就是指本地網路使用的單播地址,也就是IPV4地址中區域網專用地址。每個介面上至少要有一個鏈路本地單播地址,另外還可分配任何類型(單播、任播和組播)或範圍的IPv6地址。
(1)鏈路本地地址(FE80::/10):僅用於單個鏈路(鏈路層不能跨VLAN),不能在不同子網中路由。結點使用鏈路本地地址與同一個鏈路上的相鄰結點進行通信。例如,在沒有路由器的單鏈路IPv6網路上,主機使用鏈路本地地址與該鏈路上的其他主機進行通信。
(2)唯一本地地址(FC00::/7):唯一本地地址是本地全局的,它應用於本地通信,但不通過Internet路由,將其範圍限制為組織的邊界。
(3)站點本地地址(FEC0::/10,新標準中已被唯一本地地址代替)
三、兼容性地址:在IPv6的轉換機制中還包括了一種通過IPv4路由介面以隧道方式動態傳遞IPv6包的技術。這樣的IPv6結點會被分配一個在低32位中帶有全球IPv4單播地址的IPv6全局單播地址。另有一種嵌入IPv4的IPv6地址,用於區域網內部,這類地址用於把IPv4結點當作IPv6結點。此外,還有一種稱為“6to4”的IPv6地址,用於在兩個通過Internet同時運行IPv4和IPv6的結點之間進行通信。
四、特殊地址:包括未指定地址和環回地址。未指定地址(0:0:0:0:0:0:0:0或::)僅用於表示某個地址不存在。它等價於IPv4未指定地址0.0.0.0。未指定地址通常被用做嘗試驗證暫定地址唯一性數據包的源地址,並且永遠不會指派給某個介面或被用做目標地址。環回地址(0:0:0:0:0:0:0:1或::1)用於標識環回介面,允許節點將數據包發送給自己。它等價於IPv4環回地址127.0.0.1。發送到環回地址的數據包永遠不會發送給某個鏈接,也永遠不會通過IPv6路由器轉發。
IPv6組播地址可識別多個介面,對應於一組介面的地址(通常分屬不同節點)。發送到組播地址的數據包被送到由該地址標識的每個介面。使用適當的組播路由拓撲,將向組播地址發送的數據包發送給該地址識別的所有介面。任意位置的IPv6節點可以偵聽任意IPv6組播地址上的組播通信。IPv6節點可以同時偵聽多個組播地址,也可以隨時加入或離開組播組。
IPv6組播地址的最明顯特徵就是最高的8位固定為1111 1111。IPv6地址很容易區分組播地址,因為它總是以FF開始的。
IPv6
一個IPv6任播地址與組播地址一樣也可以識別多個介面,對應一組介面的地址。大多數情況下,這些介面屬於不同的節點。但是,與組播地址不同的是,發送到任播地址的數據包被送到由該地址標識的其中一個介面。
通過合適的路由拓撲,目的地址為任播地址的數據包將被發送到單個介面(該地址識別的最近介面,最近介面定義的根據是因為路由距離最近),而組播地址用於一對多通信,發送到多個介面。一個任播地址必須不能用作IPv6數據包的源地址;也不能分配給IPv6主機,僅可以分配給IPv6路由器。
IPv6使用兩種地址自動配置協議,分別為無狀態地址自動配置協議(SLAAC)和IPv6動態主機配置協議(DHCPv6)。SLAAC不需要伺服器對地址進行管理,主機直接根據網路中的路由器通告信息與本機MAC地址結合計算出本機IPv6地址,實現地址自動配置;DHCPv6由DHCPv6伺服器管理地址池,用戶主機從伺服器請求並獲取IPv6地址及其他信息,達到地址自動配置的目的。
一、無狀態地址自動配置
無狀態地址自動配置的核心是不需要額外的伺服器管理地址狀態,主機可自行計算地址進行地址自動配置,包括4個基本步驟:
1. 鏈路本地地址配置。主機計算本地地址。
2. 重複地址檢測,確定當前地址唯一。
3. 全局前綴獲取,主機計算全局地址。
4. 前綴重新編址,主機改變全局地址。
二、IPv6動態主機配置協議
IPv6動態主機配置協議DHCPv6是由IPv4場景下的DHCP發展而來。客戶端通過向DHCP伺服器發出申請來獲取本機IP地址並進行自動配置,DHCP伺服器負責管理並維護地址池以及地址與客戶端的映射信息。
DHCPv6在DHCP的基礎上,進行了一定的改進與擴充。其中包含3種角色:DHCPv6客戶端,用於動態獲取IPv6地址、IPv6前綴或其他網路配置參數;DHCPv6伺服器,負責為DHCPv6客戶端分配IPv6地址、IPv6前綴和其他配置參數;DHCPv6中繼,它是一個轉發設備。通常情況下。DHCPv6客戶端可以通過本地鏈路範圍內組播地址與DHCPv6伺服器進行通信。若伺服器和客戶端不在同一鏈路範圍內,則需要DHCPv6中繼進行轉發。DHCPv6中繼的存在使得在每一個鏈路範圍內都部署DHCPv6伺服器不是必要的,節省成本,並便於集中管理。
IPSec機制協議安全的實現
與IPv4相同,IPv6路由協議同樣分成內部網關協議(IGP)與外部網關協議(EGP),其中IGP包括由RIP變化而來的RIPng,由OSPF變化而來的OSPFv3,以及IS-IS協議變化而來的IS-ISv6。EGP則主要是由BGP變化而來的BGP4+ 。
一、RIPng
下一代RIP協議(RIPng)是對原來的RIPv2的擴展。大多數RIP的概念都可以用於RIPng。為了在IPv6網路中應用,RIPng對原有的RIP協議進行了修改:
UDP埠號:使用UDP的521埠發送和接收路由信息。
組播地址:使用FF02::9作為鏈路本地範圍內的RIPng路由器組播地址。
路由前綴:使用128位的IPv6地址作為路由前綴。
下一跳地址:使用128位的IPv6地址。
二、OSPFv3
RFC 2740定義了OSPFv3,用於支持IPv6。OSPFv3與OSPFv2的主要區別如下:
1. 修改了LSA的種類和格式,使其支持發布IPv6路由信息。
3. 進一步理順了拓撲與路由的關係。OSPFv3在LSA中將拓撲與路由信息相分離,在一、二類LSA中不再攜帶路由信息,而只是單純的拓撲描述信息,另外增加了八、九類LSA,結合原有的三、五、七類LSA來發布路由前綴信息。
4. 提高了協議適應性。通過引入LSA擴散範圍的概念進一步明確了對未知LSA的處理流程,使得協議可以在不識別LSA的情況下根據需要做出恰當處理,提高了協議的可擴展性。
三、BGP 4+
傳統的BGP 4隻能管理IPv4的路由信息,對於使用其他網路層協議(如IPv6等)的應用,在跨自治系統傳播時會受到一定的限制。為了提供對多種網路層協議的支持,IETF發布的RFC2858文檔對BGP 4進行了多協議擴展,形成了BGP4+。
為了實現對IPv6協議的支持,BGP 4+必須將IPv6網路層協議的信息反映到NLRl(Network Layer Reachable Information)及下一跳(Next Hop)屬性中。為此,在BGP4+中引入了下面兩個NLRI屬性。
MP_REACH_NLRI:多協議可到達NLRI,用於發布可到達路由及下一跳信息。
MP_UNREACH_NLRI:多協議不可達NLRI,用於撤銷不可達路由。
BGP 4+中的Next Hop屬性用IPv6地址來表示,可以是IPv6全球單播地址或者下一跳的鏈路本地地址。BGP 4原有的消息機制和路由機制沒有改變。
四、ICMPv6協議
ICMPv6協議用於報告IPv6節點在數據包處理過程中出現的錯誤消息,並實現簡單的網路診斷功能。ICMPv6新增加的鄰居發現功能代替了ARP協議的功能,所以在IPv6體系結構中已經沒有ARP協議了。除了支持IPv6地址格式之外,ICMPv6還為支持IPv6中的路由優化、IP組播、移動IP等增加了一些新的報文類型。
IPv6不可能立刻替代IPv4,因此在相當一段時間內IPv4和IPv6會共存在一個環境中。要提供平穩的轉換過程,使得對現有的使用者影響最小,就需要有良好的轉換機制。這個議題是IETF ngtrans工作小組的主要目標,有許多轉換機制被提出,部分已被用於6Bone上。IETF推薦了雙協議棧、隧道技術以及網路地址轉換等轉換機制:
一、IPv6/IPv4雙協議棧技術
雙棧機制就是使IPv6網路節點具有一個IPv4棧和一個IPv6棧,同時支持IPv4和IPv6協議。IPv6和IPv4是功能相近的網路層協議,兩者都應用於相同的物理平台,並承載相同的傳輸層協議TCP或UDP,如果一台主機同時支持IPv6和IPv4協議,那麼該主機就可以和僅支持IPv4或IPv6協議的主機通信。
隧道技術
隧道機制就是必要時將IPv6數據包作為數據封裝在IPv4數據包里,使IPv6數據包能在已有的IPv4基礎設施(主要是指IPv4路由器)上傳輸的機制。隨著IPv6的發展,出現了一些運行IPv4協議的骨幹網路隔離開的局部IPv6網路,為了實現這些IPv6網路之間的通信,必須採用隧道技術。隧道對於源站點和目的站點是透明的,在隧道的入口處,路由器將IPv6的數據分組封裝在IPv4中,該IPv4分組的源地址和目的地址分別是隧道入口和出口的IPv4地址,在隧道出口處,再將IPv6分組取出轉發給目的站點。隧道技術的優點在於隧道的透明性,IPv6主機之間的通信可以忽略隧道的存在,隧道只起到物理通道的作用。隧道技術在IPv4向IPv6演進的初期應用非常廣泛。但是,隧道技術不能實現IPv4主機和IPv6主機之間的通信。
三、網路地址轉換技術
網路地址轉換(Network Address Translator,NAT)技術是將IPv4地址和IPv6地址分別看作內部地址和全局地址,或者相反。例如,內部的IPv4主機要和外部的IPv6主機通信時,在NAT伺服器中將IPv4地址(相當於內部地址)變換成IPv6地址(相當於全局地址),伺服器維護一個IPv4與IPv6地址的映射表。反之,當內部的IPv6主機和外部的IPv4主機進行通信時,則IPv6主機映射成內部地址,IPv4主機映射成全局地址。NAT技術可以解決IPv4主機和IPv6主機之間的互通問題。
與IPV4相比,IPV6具有以下幾個優勢:
一、IPv6具有更大的地址空間。IPv4中規定IP地址長度為32,最大地址個數為2^32;而IPv6中IP地址的長度為128,即最大地址個數為2^128。與32位地址空間相比,其地址空間增加了2^128-2^32個。
二、IPv6使用更小的路由表。IPv6的地址分配一開始就遵循聚類(Aggregation)的原則,這使得路由器能在路由表中用一條記錄(Entry)表示一片子網,大大減小了路由器中路由表的長度,提高了路由器轉發數據包的速度。
三、IPv6增加了增強的組播(Multicast)支持以及對流的控制(Flow Control),這使得網路上的多媒體應用有了長足發展的機會,為服務質量(QoS,Quality of Service)控制提供了良好的網路平台。
四、IPv6加入了對自動配置(Auto Configuration)的支持。這是對DHCP協議的改進和擴展,使得網路(尤其是區域網)的管理更加方便和快捷。
H3C IPv6網解決方案
六、允許擴充。如果新的技術或應用需要時,IPV6允許協議進行擴充。
七、更好的頭部格式。IPV6使用新的頭部格式,其選項與基本頭部分開,如果需要,可將選項插入到基本頭部與上層數據之間。這就簡化和加速了路由選擇過程,因為大多數的選項不需要由路由選擇。
八、新的選項。IPV6有一些新的選項來實現附加的功能。
原來的Internet安全機制只建立於應用程序級,如E-mail加密、SNMPv2網路管理安全、接入安全(HTTP、SSL)等,無法從IP層來保證Internet的安全。IP級的安全保證分組的鑒權和私密特性,其具體實現主要由IP的AH(Authentication Header)和ESP(Encapsulating Security Payload)標記來實現。IPv6實現了IP級的安全。
一、安全協議套:是發送者和接收者的雙向約定,只由目標地址和安全參數索引(SPI)確定。
二、包頭認證:提供了數據完整性和分組的鑒權。
四、ESPDES-CBC方式:ESP處理一般必須執行DES-CBC加密演演算法,數據分為以64位為單位的塊進行處理,解密邏輯的輸入是現行數據和先前加密數據塊的與或。
五、鑒權加私密方式:根據不同的業務模式,兩種IP安全機制可以按一定的順序結合,從而達到分組傳送加密的目的。按順序的不同,分為鑒權之前加密和加密之前鑒權。
雖然IPv6在全球範圍內還僅僅處於研究階段,許多技術問題還有待於進一步解決,並且支持IPv6的設備也非常有限。但總體來說,全球IPv6技術的發展不斷進行著,並且隨著IPv4消耗殆盡,許多國家已經意識到了IPv6技術所帶來的優勢,特別是中國,通過一些國家級的項目,推動了IPv6下一代網際網路全面部署和大規模商用。隨著IPv6的各項技術日趨完美,IPv6成本過高、發展緩慢、支持度不夠等問題將很快淡出人們的視野。
2021年7月12日,中央網路安全和信息化委員會辦公室、國家發展和改革委員會、工業和信息化部發布關於加快推進網際網路協議第六版(IPv6)規模部署和應用工作的通知。