發展歷史
至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連結。
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地址記錄。
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網路就緒專項行動的通知》。5月,中國工信部稱計畫於2019年末,完成13個網際網路骨幹直聯點IPv6的改造。
組成結構
表示方法
IPv6的地址長度為128位,是IPv4地址長度的4倍。於是IPv4點分十進制格式不再適用,採用十六進制表示。IPv6有3種表示方法。
一、冒分十六進制表示法
格式為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的報文頭部結構如圖:
版本號 | 表示協定版本.值為6 |
---|
流量等級 | 主要用於QoS |
---|
流標籤 | 用來標識同一個流裡面的報文 |
---|
載荷長度 | 表明該IPv6包頭部後包含的位元組數,包含擴展頭部 |
---|
下一報頭 | 該欄位用來指明報頭後接的報文頭部的類型,若存在擴展頭,表示第一個擴展頭的類型,否則表示其上層協定的類型,它是IPv6各種功能的核心實現方法 |
---|
跳數限制 | 該欄位類似於IPv4中的 TTL,每次轉發跳數減一,該欄位達到0時包將會被丟棄 |
---|
源地址 | 標識該報文的來源地址 |
---|
目的地址 | 標識該報文的目的地址 |
---|
擴展頭部: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使用兩種地址自動配置協定,分別為無狀態地址自動配置協定(
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伺服器不是必要的,節省成本,並便於集中管理。
路由協定
IPv4初期對IP位址規劃的不合理,使得網路變得非常複雜,路由表條目繁多。儘管通過劃分子網以及路由聚集一定程度上緩解了這個問題,但這個問題依舊存在。因此IPv6設計之初就把地址從用戶擁有改成運營商擁有,並在此基礎上,路由策略發生了一些變化,加之IPv6地址長度發生了變化,因此路由協定發生了相應的改變。
與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地址。
二、
OSPFv3RFC 2740定義了OSPFv3,用於支持IPv6。OSPFv3與OSPFv2的主要區別如下:
1. 修改了LSA的種類和格式,使其支持發布IPv6路由信息。
2. 修改了部分協定流程。主要的修改包括用Router-lD來標識鄰居,使用鏈路本地地址來發現鄰居等,使得網路拓撲本身獨立於網路協定,以便於將來擴展。
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協定的改進和擴展,使得網路(尤其是區域網路)的管理更加方便和快捷。
五、IPv6具有更高的安全性。在使用IPv6網路中用戶可以對網路層的數據進行加密並對IP報文進行校驗,在IPV6中的加密與鑑別選項提供了分組的保密性與完整性。極大的增強了網路的安全性。
六、允許擴充。如果新的技術或套用需要時,IPV6允許協定進行擴充。
七、更好的頭部格式。IPV6使用新的頭部格式,其選項與基本頭部分開,如果需要,可將選項插入到基本頭部與上層數據之間。這就簡化和加速了路由選擇過程,因為大多數的選項不需要由路由選擇。
八、新的選項。IPV6有一些新的選項來實現附加的功能。
安全性能
原來的Internet安全機制只建立於應用程式級,如E-mail加密、
SNMPv2網路管理安全、接入安全(
HTTP、
SSL)等,無法從IP層來保證Internet的安全。IP級的安全保證分組的
鑒權和私密特性,其具體實現主要由IP的AH(Authentication Header)和
ESP(Encapsulating Security Payload)標記來實現。IPv6實現了IP級的安全。
一、安全協定套:是傳送者和接收者的雙向約定,只由目標地址和安全參數索引(SPI)確定。
二、包頭認證:提供了數據完整性和分組的鑒權。
三、安全包頭封裝:ESP根據用戶的不同需求,支持IP分組的私密和數據完整性。 它既可用於傳送層(如
TCP、
UDP、
ICMP)的加密, 稱傳送層模式ESP,同時又可用於整個分組的加密,稱隧道模式ESP。
四、ESPDES-CBC方式:ESP處理一般必須執行DES-CBC加密算法,數據分為以64位為單位的塊進行處理,解密邏輯的輸入是現行數據和先前加密數據塊的與或。
五、鑒權加私密方式:根據不同的業務模式,兩種IP安全機制可以按一定的順序結合,從而達到分組傳送加密的目的。按順序的不同,分為鑑權之前加密和加密之前鑒權。
套用前景
雖然IPv6在全球範圍內還僅僅處於研究階段,許多技術問題還有待於進一步解決,並且支持IPv6的設備也非常有限。但總體來說,全球IPv6技術的發展不斷進行著,並且隨著IPv4消耗殆盡,許多國家已經意識到了IPv6技術所帶來的優勢,特別是中國,通過一些國家級的項目,推動了IPv6
下一代網際網路全面部署和大規模商用。隨著IPv6的各項技術日趨完美,IPv6成本過高、發展緩慢、支持度不夠等問題將很快淡出人們的視野。