1.07k likes | 1.25k Views
IPv6 Tutorial - Addressing. 紀廷運 Louk Chi louk@louk.dyndns.org Executive Secretary in IPv6 R&D division of the NICI Taiwan HSnetwork lab , NTHU. Outline. 1.1 IPv6 歷史沿革 1.2 IPv6 協定架構及其定址方式 1.3 Prefix Length. 1.1 IPv6 歷史沿革. 1990 年 IETF(Internet Engineering task Force) 進行新一代網際網路通訊協定的選擇作業
E N D
IPv6 Tutorial - Addressing 紀廷運 Louk Chi louk@louk.dyndns.org Executive Secretary in IPv6 R&D division of the NICI Taiwan HSnetwork lab , NTHU
Outline • 1.1 IPv6歷史沿革 • 1.2 IPv6協定架構及其定址方式 • 1.3 Prefix Length
1.1 IPv6歷史沿革 • 1990年IETF(Internet Engineering task Force) 進行新一代網際網路通訊協定的選擇作業 • 1993年成立IPng Area (IPng:IP The Next Generation)來評估各項建議和技術的可行性以加速協定的制定。 • 1994年CATNIP、SIPP、TUBA這三份IPng建議書最為人所支持。而在1995年RFC1752文件中,比較這三份建議書,經過多方討論廣納意見之後,決定採用SIPP,再加上128位元的位址以及自動設定等功能 • 此時,新一代網路通訊協定(IPv6)的雛形就此誕生。在這之後,陸陸續續又有許多RFC被提出用來規範IPv6相關規格、位址架構、控制協定等標準,讓IPv6更臻完整也造就其蓬勃發展。
Outline • 1.1 IPv6歷史沿革 • 1.2 IPv6協定架構及其定址方式 • 1.3 Prefix Length
IPv6 address • 定址方式 • Unicast address • Multicast • anycast
IPv6 定址方式 • 傳統IPv4位址32位元的表示方式是將其以8個位元為單位分成四個段落,每一個段落以十進位表示,其最大數值為255。例如: • 95.135.44.23。 • 在IPv6的128位元位址中,是以16個位元為單位分成八個段落,而每一段落均以四位數的十六進位表示,型態為x:x:x:x:x:x:x:x,其中x為四位數的十六進位。例如: • FFEE:BBAA:1234:C988:0000:0000:0987:1210
位址簡化規則 • 為簡化IPv6的位址的表示方式,我們可將位址中位元為0的部份加以省略。 • 主要原則為: • 在每一段落中前導(Leading)連續為0的位元可省略; • 另外若有連續段落均為0時,則可以”::”符號來表示。依此原則:FFEE:BBAA:1234:C988:0000:0000:0987:1210可簡化表示成FFEE:BBAA:1234:C988::987:1210 • 需要注意的是”0987”中的0為該段落的前導,故可省略,但”1210”中的0就不能省略,因為若省略成”121”將被視為”0121”。
位址簡化原則(cont.) • 除此之外,”::”也可以用來表示整個IPv6位址中前導段式連續為0的情況,下面是其他幾個IPv6位址的表示範例: • 12FF:0:0:0:8:600:100A:2AFF → 12FE::8:600:100A:2AFF • 0:0:0:0:0:012A:12A0:1 → ::12A:12A0:1 • 0:0:0:0:0:0:0:0 (unspecified address) → ::
嵌入式IPv4位址(IPv6 Address with Embedded IPv4 Address) • 在某些IPv4與IPv6並存的環境中,為方便起見,往往將既有的IPv4的32位元位址直接置於IPv6位址的最後32位元中,此種方式稱為嵌入式IPv4位址(IPv6 Address with Embedded IPv4 Address),而且IPv4位址保留其原本之表示方式,上述之原則仍然適用,如下所示: • 0:0:0:0:0:0: 95.135.44.23 → :: 95.135.44.23 • 0:0:0:0:0:FFFF:129.145.88.43 → ::FFFF: 129.145.88.43
不分級跨範圍路由(CIDR) • 在IPv4位址架構中為表示位址有效的前導位元數所採用的不分級跨範圍路由(Classless Inter Domain Routing,簡稱CIDR)方式也可應用在IPv6位址的表示中,其主要的格式為IPv6-address/prefix-lingth • 其中IPv6-address可為上述任一種IPv6位址的表示方式,而prefix-length則為位址前綴的長度(以十進位表示)。例如,假設位址前綴為”AABB000000000C5”(十六進位,長度為60位元),則下列均為正確的表示方式 • AABB:0000:0000:0C50:0000:0000:0000:0000/60 • AABB::C50:0:0:0:0/60 • AABB:0:0:C50::/60
IPv6位址架構 • 典型的IPv6位址包含三個部份 • 全球路由位址前綴(Global Routing Prefix)用來識別特殊位址,像是群體播送,或是指定一個網點(Site)的位址範圍。 • 子網路識別碼(Subnet ID)用來識別網點中的鏈結 。 • 介面識別碼(Interface ID) 用來識別一個鏈結上的介面,而且它在該鏈結上必須是唯一的。
單一播送位址(Unicast) • IPv6的單一播送位址主要包括子網路(Subnet)位址前綴與介面識別碼兩部份 • 子網路位址前綴可為任意長度,在某些特殊情形下,我們可將128位元都視為節點位址,而沒有任何內在架構(Internal Structure)。 • 一般而言,介面識別碼的長度大都為64位元。介面識別碼在單一播送位址架構中主要是用來區別鏈結中的介面;當子網路位址前綴加上介面識別碼所形成之位址必須是唯一的。 • 在大部份狀況下,介面識別碼多直接由鏈結層(Link Layer)位址,例如,媒介存取控制(Medium Access Control, 簡稱MAC),直接轉換而來。
128 001 TLA RES NLA SLA Interface ID 001 0x1ffe NLA1 NLA2 SLA Interface ID 13 8 24 16 64 3FFE:3600:0000::/48 reserved 3FFE:3600:0001::/48 for NDHU 東華大學 3FFE:3600:0002::/48 for CCIT 中正理工學院 3FFE:3600:0003::/48 for NCKU 成功大學 3FFE:3600:0004::/48 for NCU-CSIE中央大學 3FFE:3600:0005::/48 for NCU-CC 中央大學 3FFE:3600:0006::/48 for NTU 臺灣大學 3FFE:3600:0007::/48 for 中正大學 3FFE:3600::/24 CHT-TL
2001:: • IPv6網段名稱 IPv6網址範圍 • 1HINET-TW-20000208 2001:0238::/32 • 2TANET-TWNIC-TW-20001006 2001:0288::/32 • 3ASNET-TWNIC-TW-20020711 2001:0C08::/32 • 4TTN-TWNIC-TW-20020812 2001:0C50::/32 • 5SIXREN-TWNIC-TW-20020827 2001:0C58::/32 • 6CHTTL-TW-20021002 2001:0CA0::/32 • 7SEEDNET-IPv6-TWNIC-TW-20021209 2001:0CD8::/32 • 8TFN-TWNIC-TW-20030313 2001:0D20::/32 • 9TWNIC-TW-v6-20030331 2001:0DC1::/32 • 10TWNTT-NET-TWNIC-TW-20030519 2001:0D40::/32 • 11NHRIv6-TWNIC-TW-20030523 2001:0D48::/32 • 12GIGAMEDIA-TW-20030606 2001:0D58::/32
在單一播送位址中又可分為 • 鏈結區域位址 • 網點區域位址 • 全球位址
鏈結區域位址(Link local) • 鏈結區域位址是被設計用來當終端設備接單一鏈結網路上時,進行自動位址組態(Automatic Address Configuration)、及發現芳鄰(Neighbor Discovery)時使用; • 或在沒有路由器情況下,例如,多部終端設備經由一以太網路線互連,每一終端設備使用一鏈結區域位址就可使用。 • 鏈結區域位址的主要特徵在不需判別子網路位址,故該欄位設定為0。 • 若網路上有路由器,則路由器不該將發送端位址或目的端位址中任一為鏈結區域位址型態的封包轉送至另一鏈結上。
網點區域位址(Site local) • 網點區域位址的使用是在將封包的傳送侷限於某一網域內部,如此,一個連接外部網路的子網路閘道路由器不應將發送端位址或目的端位址中任一為網點區域位址型態的封包轉出此子網路外部。
任一播送位址(Anycast) • IPv6所規劃之任一播送位址基本上是將一個單一播送位址分配給多個屬於不同節點的介面,而傳送給此一位址之封包會依路由協定中的距離或花費(Cost)等條件,選擇一最近(少)之目的地。 • IPv6任一播送位址的使用會有如下限制: • 任一播送位址不能做為IP封包之發送端位址 • 任一播送位址目前只適合配置給IPv6網路中之路由器使用,而不分配給網路主機
群體播送位址 (Multicast) • 群體播送位址是指多個介面(通常屬於不同的節點)共同使用一相同位址,與任一播送位址不同的是封包傳送給此一位址時,網路需將此一封包送達每一個介面。而且一節點可同時屬於一個或一個以上之群體播送位址。
IPv6的優勢 • 除了在定址上採用了128個位元來代表網路上裝置的識別碼,擴充了定址空間的容量之外,IPv6 簡化的表頭,可以加速網路處理的速度; 額外提供延伸表頭 (extension headers)及選擇欄位(option fields),使路由效能提昇。 • 在服務品質(Qos, Quality of Service) 方面,IPv6 header 增加了流量等級(traffic class)和流向標籤(flow label)以提供網路的服務品質,在多媒體的應用上尤其重要。 • IPv6 支援的隨插隨用功能:將之分為有狀態(Statefull)和無狀態(Stateless)兩種。一般IPv6使用的 Autoconfiguration 即屬於無狀態自動設定,而DHCPv6則屬於有狀態自動設定。透過隨插隨用功能,可大大地減輕網管人員的負擔。
IPv6設計重點 • 與目前IPv4協定堆疊中的流程相容 • Protocol的單純化 • 解決IPv4位址空間不足的問題 • Mobile、Multicast • 運用更容易 • Plug and Play • Security • 可應變後續的發展 • 易於擴充新功能 • 便於自IPv4移轉
Outline • 1.1 IPv6歷史沿革 • 1.2 IPv6協定架構及其定址方式 • 1.3 Prefix Length
Prefix Length • 位址前綴(Prefix)是位址的一部分,它表示具有固定值的位元或者是網路識別碼的位元。 • 常見IPv6位址記成「位址/位址前綴長度」。例如,FE80::2AA:FF:FE9A:4CA2/64 表示位址的前 64 位元是網路位址前綴。位址前綴表示法也用於表示網路或子網路識別碼。例如,21DA:D3::/48 就是代表一個子網路。
Prefix Length FP:可聚集的全球單一播送位址的前置碼(其值為001) TLA ID:頂層聚集識別碼(Top-Level Aggregation Identifier) RES:保留(Reserved) NLA ID:下一層聚集識別碼(Next-Level Aggregation Identifier) SLA ID:網點層聚集識別碼(Site-Level Aggregation Identifier) Interface ID:介面識別碼
Prefix Length • 頂層聚集識別碼(Top-Level Aggregation Identifier)為最高層級的路由。 • 保留(RES)為給TLA或NLA未來擴充所使用的。 • 下一層聚集識別符(Next-Level Aggregation Identifier)是一個得到TLA識別碼的組織用來產生位址的層級和辨識不同的網點之用 。
Prefix Length • 每一個取得頂層聚集識別碼的組織也可利用其(24-n)位元的網點識別碼(Site ID)做更細部的規劃,分配第二層甚或第三層之NLA給它的下屬網路,讓下層的網路提供者可以自行規劃 。
Prefix Length • 網點層聚集識別碼(Site-Level Aggregation Identifier)是作為單一個組織產生本地層級位址和辨識子網路之用,網點層聚集識別碼也可以仿照上述的下一層聚集識別碼再分配的方式再分配下一層的網點層聚集識別碼給它的下屬網路。 • 介面識別碼(Interface ID)是用來識別每一個連結的介面,而且介面識別碼的位址是由MAC層位址構成的64 位元 IEEE EUI-64格式來表示。
Prefix Length • 如果TLA ID分配太小的話,將會發生無法提供足夠路徑的問題,針對這樣的問題,解決的方法如下: • 借用RES欄位,使得TLA ID延伸到RES欄位,這樣可以增加到兩百萬個位址。 • 再配置其他的FP前綴格式。
Prefix Length • 分配TLA ID和NLA ID時的規則共識: • TLA的數目限制在可以管理的範圍內。 • TLA只配置給網際網路提供商或網際網路交換商,而不配置給末端用戶者,即使用戶者有多重連接的需求。 • TLA只配置給打算在三個月內提供IPv6轉運服務的組織,以免造成位址的的浪費。 • 配有TLA的組織,必須將所分配到的位址提供公開存取,方便做故障的排除。
Prefix Length • 位址前綴格式(Prefix)位址的分配不要超過48位元,這樣可以促進網點(Site)轉換到其他服務提供者或是multi-homing轉換到多個服務提供者位址的速度。 • 想要在網際網路註冊使用TLA ID或是Sub-TLA ID者,必須付費給IANA(Internet Assigned Numbers Authority) • 已取得TLA ID或是Sub-TLA ID者,必須提供NLA ID位址空間註冊服務。 • 定期提供已註冊的統計資料進行更新。 • 組織要求配置其它新增的TLA ID或是Sub-TLA ID位址時,必須證明目前的NLA ID位址分配使用率超過90%。
Prefix Length • 調整後的TLA和NLA位址格式 • FP(Format Prefix):設定001,可聚集的全球單一播送位址。 • TLA ID(Top-Level Aggregation Identifier):設定為0x0001,由IANA配置。 • Sub-TLA ID(Sub-TLA Identifier):可以由註冊者配置給組織或是IANA直接配置給組織,Sub-TLA ID配置時,不一定是連續的區域。 • NLA ID(Next-Level Aggregation Identifier):由組織來分配成一些子網路給需求者,可以使用類似IPv4 CIDR的配置方式。
Prefix Length • 浮動位址 • RFC3513 • RFC3177
Outline • IPv6 Header • Extention Header • ICMPv6 • Neighbor Discovery
Outline • IPv6 Header • Extention Header • ICMPv6 • Neighbor Discovery
Version (4bit)這個欄位代表IP版本,IPv6以二進位表示即為0110 • Traffic Class (8bit)表示封包的類別或優先度,可評估封包傳送的先後次序,透過這個欄位,在流量壅塞的時候可以讓較重要的封包優先通過。 ․ • Flow Label (20bit)流向標記顯示封包所屬的Flow編號。此欄位常用於需要即時服務或沒有預設品質要求的服務,來源將此欄位設定之後,傳輸的網路及路由便可根據此欄位所帶的值,發出RSVP或優先控制等要求,flow是從來源位址發送一連串的封包傳送至目的端,中途的路由器會提供特別處理,在相同流向下所有封包,其來源位址、目的位址、優先權和流向標記都會相同。由於此欄位的使用還在實驗階段,若經過沒有支援此欄位的主機或路由器,則會使用其預設值0。
Payload Length (16bit)表示IPv6標頭後帶有多少個封包,以Byte為單位來計算。此欄位16bit最多可表示至65535Bytes,而IPv6延伸標頭也包含在計算中。若Payload長度大於65535Bytes時,這個欄位便會被設為0,且IPv6表頭後帶著Hop By Hop Option延伸標頭內的Jumbo Payload Option。這個選項在MTU小於65535的環境以及封包有Fragment Header時均無法使用。 • Next Header (8bit)此欄位可以辨識表頭型態,類似IPv4中的Protocol欄位,IPv6基本標頭之後可以接續一或多個延伸標頭,若沒有IPv6延伸標頭時,此欄位就顯示上層的協定代碼;當IPv6延伸標頭被附加時,此欄位就會顯示IPv6基本標頭後接續的第一個被分配之延伸標頭的種類,下表僅列出一些常用之欄位值。
Hop Limit (8bit)用來辨識封包是否繼續往下傳送,封包每傳遞一個節點,此欄位便會減1,當Hop Limit為0卻還沒有到達目的位址時,此封包就會被丟棄,該節點也會發送ICMP回應訊息通知來源端。 • Source Address (128bit)顯示封包的來源位址 • Destination Address封包的目的位址,一般而言都是設為最終目的的位址,但如果延伸標頭中有Routing Header存在的時候,就不設為最終目的,而是設定成Source Routing List中所紀錄下一個Route Interface的位址。
Outline • IPv6 Header • Extention Header • ICMPv6 • Neighbor Discovery
Extension Header • IPv6 標頭由以下2項元件所構成的。 • 固定40Byte之「IPv6基本標頭」 • 除基本標頭之外,還可以有一個或多個的「IPv6延伸標頭」
Extension Header IPv6 Datagram的一般形式: • - 當遇到沒有支援的延伸標頭時,回覆給對方ICMP Parameter Problem • Message (Type=1, Code=1),將封包捨棄。 • - 有支援延伸標頭功能,但送來的延伸標頭Option不被支援時,對Option • 編號要求錯誤處理。
Extension Header • 當封包傳送在其傳輸路徑上時,這些延伸標頭都不會被處理與驗證,一直到此封包到達其IPv6標頭中Destination欄位所指定的端點。 • 延伸標頭必須被嚴格地按他們在標頭中出現的順序來處理與分析。接收端不可以先掃描整個封包,然後只挑其中某些延伸標頭來處理而不管其前面的延伸標頭。 • 唯一例外,一定會被檢查的延伸標頭就是Hop-by-Hop Options標頭,其攜帶的資訊必須在其傳送路徑上的每一個節點被處理與檢查。 • 每個延伸標頭的長度都是8 Bytes的整數倍。
Extension Header • 當在同一個封包中有延伸標頭要被使用時,建議延伸標頭出現的順序如下所示: • 1.IPv6 Header • 2.Hop-by-Hop Options Header (RFC2460) • 3.Destination Options Header (RFC2460) • 4.Routing Header( Type 0 ) (RFC2460) • 5.Fragment Header (RFC2460) • 6.Authentication Header (RFC2402) • 7.Encapsulating Security Payload Header (RFC2406) • 8.Destination Options Header (RFC2460) • 9.Upper Layer Header
Extension Header • 延伸標頭中的Hop by Hop延伸標頭與目的地延伸標頭會用到的延伸標頭選項,使用ASN.1(Abstract Syntax Notation one)所制定之 TLV(Type-Length-Value)編碼格式來編碼。 • Option的TLV編碼形式:
Extension Header • Option Type • 「Action Code」之2 Bit動作定義如下: • 00:此Option情報跳過,繼續處理下一個標頭。 • 01:捨棄這個封包。 • 10:不論封包的目的地位址是否為群播位址,捨棄這個封包,並回傳此封包的來源位址一個ICMP Parameter Problem, Code2, Message的封包,通知發送端Option Type無法被解讀。 • 11:捨棄封包,並且除了封包的目的地位址是群播位址外(Unicast等),回傳此封包的來源位址一個ICMP Parameter Problem, Code2, Message的封包,通知發送端Option Type無法解讀。