藍汛解讀:IPv6 離我們有多遠?

2017年11月"兩辦"印發了《推進互聯網協議第六版(IPv6)規模部署行動計劃》,使得IPv6開始落地,並強制執行。計劃提出要用5到10年時間,形成下一代互聯網自主技術體系和產業生態,建成全球最大規模的IPv6商業應用網絡。

· 到2018年末,市場驅動的良性發展環境基本形成,IPv6活躍用戶數達到2億,在互聯網用戶中的佔比不低於20%。

· 到2020年末,市場驅動的良性發展環境日臻完善,IPv6活躍用戶數超過5億,在互聯網用戶中的佔比超過50%,新增網絡地址不再使用私有IPv4地址。

· 到2025年末,我國IPv6網絡規模、用戶規模、流量規模位居世界第一位,網絡、應用、終端全面支持IPv6,全面完成向下一代互聯網的平滑演進升級。

由此可見,針對2018年底要求完成2億活躍用戶的目標,對於ISP、ICP都是一個很大的挑戰。而且,對於國家機關的網站的IPv6遷移也是硬性指標。這給CDN市場帶來了新機遇,有很大的機會為客戶、潛在客戶快速安全地實現IPv6業務合規上線和遷移。本文將為大家介紹IPv6的關鍵技術知識點。

IPv6地址

IPv4的地址長度為32位,地址空間為2的32次方,約42億個(世界上平均3個人有2個IP地址)。

IPv6的地址長度為128位,地址空間為2的128次方,約3.4×10^38個。

IPv6地址的表示

IPv4地址表示

二進制:10101100 00010000 00000001 00000001

十進制:172.16.1.1

IPv6地址表示

十六進制:2001:0410:0000:0001:0000:0000:0000:45ff

IPv6地址與IPv4地址表示方法有所不同,用十六進制表示,4位一組,中間用":"隔開。

藍汛解讀:IPv6 離我們有多遠?

IPv6地址的壓縮表示

如圖可見,地址中,以"0"開頭的組,就可以省略0,而多個連續的全0字段,則通過"::"來壓縮代替。

IPv6 地址 = 前綴 + 接口標識

其中,前綴相當於IPv4地址中的網絡ID,接口標識則相當於IPv4地址中的主機ID。前綴長度就是和IPv4地址標識一樣,採用/xx來表示,如:2001:da8:207::8207/64。

IPv6地址分類

單播地址(unicast address)

如同 IPv4 的Unicast模式,適用在單一節點對單一節點的數據傳送。標識一個接口,目的地址為單播地址的報文會被送到被標識的接口。

這種類型的IPv6地址可區分為Global、Site-Local、Link-Local和IPv4-Compatible 4種型態。

下面針對這幾種類型加以介紹:

Global 地址

前3bits為首碼,內容固定是001,最後的64bits為接口標識(Interface ID)。Interface ID的功能如同IPv4的主機地址(Host ID)。

藍汛解讀:IPv6 離我們有多遠?

Site-Local 地址

前10bits為首碼,內容固定為1111111011,間隔38bits的0之後,接著16bits 的子網地址(Subnet ID),最後才是 64bits的接口標識。

藍汛解讀:IPv6 離我們有多遠?

Link-Local 地址

也是用前10bits為首碼,內容固定為1111111010,接著是連續54bits的0,最後的64bits也是接口標識。

藍汛解讀:IPv6 離我們有多遠?

IPv4-Compatible 地址

沒有所謂的首碼與接口標識,只有原本32bits的IPv4地址前面,加上96bits的0。

藍汛解讀:IPv6 離我們有多遠?

組播地址 (multicast address)

IPv6的組播整合了IPv4的Multicast及廣播傳送 (Broadcast),適用於單一節點對多節點的傳送。標識多個接口,目的地址為組播地址的報文會被送到被標識的所有接口。

藍汛解讀:IPv6 離我們有多遠?

藍汛解讀:IPv6 離我們有多遠?

而4-bit的lifetime如果取值0,則為永久屬性,而取值1,則為臨時屬性。

常見的組播地址有:

藍汛解讀:IPv6 離我們有多遠?

任播地址 (anycast address)

Anycast的特殊之處在於:一個Anycast地址可以被多個節點使用,但是傳送給此地址的報文,並非真的將它送到這些節點來,而僅僅是送給距離最近或成本最低(根據路由表來判斷)的一個節點。

以RFC4291的規定,目前的Anycast地址只能分配給路由器,不能分配給電腦使用,而且不能作為發送端的地址。這種IPv6地址的首碼長度不固定,首碼以外的位元都是0。

設備IPv6地址的設置方式

由前文可知,設備的後64bit的地址是和設備相關的。因此如何設置這64bit的地址段則就是設備相關的。

目前,共有4種設置方式:

· 通過EUI-64設置的

· 通過自動生成的偽隨機數設置的

· 通過DHCPv6設置

· 手動設置

EUI-64

EUI-64就是通過設備的MAC地址來生成這64bit地址字段。而由於MAC地址是48bit,通過將48bit的MAC地址對分為兩段,兩段之間填入0xFFFE來補齊為64bit。

藍汛解讀:IPv6 離我們有多遠?

自動生成的偽隨機數

針對EUI-64有可能造成的主機MAC地址和IPv6地址對應關係所引發的安全隱患,採用自動生成的偽隨機數來規避的方法。

藍汛解讀:IPv6 離我們有多遠?

ICMPv6 和Neighbor Discovery

ICMPv6 是基於RFC 2463,相對於IPv4的ICMP的演進,基本的信令模式是類似的,但是信令的種類和code進行了變化。

ICMPv6,提供了以下信息的承載:

· 錯誤信息

· 提示類信息

· MTU的路徑探測

· Neighbor Discovery

ICMPv6的錯誤信息

目標不可達 (ICMP packet type1)

目標不可達會通過解釋碼來告知不可達的原因:

o 0 - No route to destination

o 1 - Access is administratively prohibited

o 3 - Address unreachable

o 4 - Port unreachable

數據包太大 (ICMP packet type2)

說明數據包大於IPv6鏈路的MTU。由於IPv6不會根據MTU而將數據包分包,所以會通過ICMP信息通知源數據包大於MTU。

超時 (ICMP packet type3)

超出了跳數。

參數錯 (ICMP packet type4)

同樣的,有個解釋碼來告知原因:

o 0 - Erroneous header field

o 1 - Unrecognized next-header type

o 2 - Unrecognized IPv6 option

Neighbor Discovery

Neighbor Discovery Protocol提供了IPv6下設備使能的能力:

· 自動配置地址和地址前綴的發現

· 衝突地址的發現

· MTU的發現

· 路由發現

· 地址解析

IPv6的路由器定期發送Router Advertisement (RA),來提示路由的存在和提供主機的配置信息。RA信息是ICMP type 134 信息,從發送路由器的單播地址作為源,目的地址是link-scope all-nodes的組播地址。RA設置255為跳數限制,而且不能發送到local link之外的網絡。

主機通過RA來進行本機的路由配置,而主機也可以通過發送Router Solicitation( RS) 來請求RA 。

IPv6和DNS

相對於IPv4的DNS中,hostname到IP的解析,IPv6的DNS中,從host那麼到IP的解析是什麼樣的呢?

IPv6中,相對於IPv4的A記錄,是AAAA記錄,比如:

AAAA record:

www.abc.test AAAA 2001:db8:C18:1::2

而IPv6中,相對於IPv4的PTR記錄,其PTR就要長的多了:

PTR record:

2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0.8.1.c.0.

8.b.d.0.1.0.0.2.ip6.arpa PTR www.abc.test.

IPv6下的移動IP

RFC 3775將移動IPv6協議定義為:不管IPv6節點位於IPv6網絡的何處以及與移動IPv6節點通信的其他節點是否支持移動IPv6,始終可以對IPv6節點進行訪問。

移動IPv6從移動IPv4中借鑑了許多概念和術語,例如:

· 移動節點(MN)

· 家鄉代理(HA)

· 家鄉地址

· 家鄉鏈路

· 轉交地址

· 外地鏈路

移動IP的機制實現

當移動節點在家鄉鏈路時,它與通信節點採用傳統的路由方式進行通信。

藍汛解讀:IPv6 離我們有多遠?

當移動節點移動到外地鏈路,通過無狀態自動配置或有狀態自動配置轉交地址。然後移動節點註冊它的primary轉交地址到家鄉鏈路的一個路由器上,請求這個路由器充當它的家鄉代理,這個過程稱為"綁定"。移動節點通過發送"binding update"的消息,然後家鄉代理回應"binding acknowledgement"來完成"綁定"過程。

藍汛解讀:IPv6 離我們有多遠?

在這樣的場景下,移動節點可以有兩種方式和通信節點進行通信:

【1】 雙向隧道模式

通信節點不要求支持移動IPv6,也不需要移動節點和通信節點間綁定註冊。通信節點不知道移動節點的轉交地址,它就像向其他任何固定節點發送數據包那樣向移 動節點發送數據包。通信節點只是將移動節點的家鄉地址(它知道的唯一地址)放入目的IPv6地址域中,並將它自己的地址放在源IPv6地址域中,然後將數 據包進行轉發。這樣,數據包將被送往移動節點的家鄉鏈路,就像移動IPv4中那樣。在家鄉鏈路上,家鄉代理上使用"代理鄰居協議"(proxy ND),截獲這個數據包,然後把這個包作為淨荷,在其上面再加上一層IPv6報頭,把新的數據包發送到移動節點的轉交地址,這個過程應用的是"隧道技術"。移動節點將送過來的包拆封,發現內層數據包的目的地是它的家鄉地址,於是將內層數據包交給高層協議處理。從移動節點發往通信節點的從"反向隧道"發往家鄉代理,然後按照傳統的路由方式發送到移動節點。

藍汛解讀:IPv6 離我們有多遠?

【2】路由優化的通信模式

需要通信節點必須支持移動IPv6,而且移動節點註冊了它的綁定連接到通信節點。當通信節點發送報文到移動節點時,首先從其綁定緩存中查找包含移動節點的 IP地址的條目,如果找到,則使用type 2 路由頭來發送報文(報文的目的IP地址為移動節點的轉交地址),type 2路由頭裡包含了移動節點的家鄉地址,當報文到達移動節點的轉交地址時,移動節點把路由頭裡的Home address作為報文最後的目的地址,然後移動節點判斷報文的目的地址為自己的家鄉地址,則將內層數據包交給高層協議處理。類似的,移動節點使用home address option來通知通信節點自己的家鄉地址。路由優化消除了與雙向隧道向關聯的傳輸延遲。

藍汛解讀:IPv6 離我們有多遠?


分享到:


相關文章: