IPv6

IPv6,IPng(Internet Protocol Next generation)
1995年SIPP被更名為IPv6
可並存於原有IPv4的環境下進行通信
ps:
IPv5,提供給Stream Protocol實驗協定使用

ipv6比ipv4進步的有:
更多的位址數量
具有Auto-Configuration機制,可自動設定client ip
提供renumbering機制:可不斷重換ip,為了資安
保密性更佳
提升Routing(路由)效率

IPv6指派程序
IANA會指派給RIR一些registry prefix(註冊網路)
RIR會指派給ISP一些ISP prefix(ISP網路)
ISP會指派給客戶一些site prefix(站台網路)/global routing prefix(全域路由網路)
客戶可根據需求自己指派subnet network(子網路) 

………………………

整合認證及安全的機制,強化的安全性
IPv6協定設計時已考量網路安全功能,內嵌式的點對點安全保護能力,提供網際網路一個更安全的資料交換方式。
IPv6 係利用Next Header中的Authentication Header及Encrypted Security Payload Header對傳輸的資料進行認證及加密,使用者將不需透過額外的設備或軟體就可以達到網路安全的功效

較佳的路由效率及最佳化
IPv6將位址空間使用階層式的方式劃分為三層:
 Top Level Aggregator Identifier
 Next Level Aggregator Identifier
 Site Level Aggregator Identifier
各層負責授權IP網段給其下層的機構,此種管理方式使得交換的路由資訊可以經由彙整變得非常精簡
另外在處理封包的表頭時因欄位數量減少為8個,因此路由器判斷較快

服務品質的保證,支援聲音與影像,及更好的QoS(品質管控)
IPv6的表頭中,保留了Flow Label的欄位,可和MPLS技術相配合,不同的資料流對應到不同的Flow Label,可做為服務品質控制的依據
IPv6在表頭加入兩項參數,包括Traffic Class(資料流種類)與Flow Label(資料流標記)將有助於服務品質控制機制的設計

自動設定及行動性的功能
IPv6在設計上加入支援行動IP的機制,可自動取得IP不需透過手動設定,以利未來支援行動網際網路
支援行動IP機制中的另一項重要特性即藉由Neighbor Discovery與Auto-configuration機制來簡化使用者IP位址的設定
利用Extension Header的Destinetion Header與Routing Header,使行動通訊中之路由機制獲得最佳化,解決了triagle route(三角路由)的問題

… 

IPv6 header
基本表頭為ipv4的2倍大,且固定長度,使封包表頭處理更有效 
每個欄位盡可能對齊在位元組上,讓表頭簡化許多

IPv6刪除ipv4的以下功能 
1.可選擇性擴充部分
2.IP 切割的功能:fragment僅能在兩端間先處理好,ipv6不支援在設備中將packet切成fragment
3.Checksum(檢查碼):ipv6不使用header checksum,因重傳成本極低所以若發現有錯在重傳即可

extension header(擴充表頭)
IPv6設計以Next Header(下一表頭)的方式來增加表頭的可擴充性。
使用者可以透過Next Header(下一表頭)的方式自行在表頭中指示下一個表頭的內容以利網路端或是接收端完成特定的工作 
ps:ipv4無此功能

header format
為40byte固定長度,各欄位如下:
ver(版本) 4bit
trafic class(資料流種類)8bit:用來對用戶或者應用做分類,以利於實現對主要特定的用戶與主要特殊的應用之優先服務
RFC 2474用DS來traffic class
flow label(流量標記)20bit:提供給需高傳輸效率保證的應用程式用
payload length(資料負載長度)2byte:跟在IPv6標頭之後的payload欄位長度,以octet為單位,最多可表達到64k(2^16)
next header(下個表頭欄位)1byte:描述後續表頭的資訊型別,如Extension Header或資料包所攜帶資料的型別,代碼與ipv4 protocol欄位相同,定義在rfc1700
hop limit(跨站極限)1byte
source address(來源位置)16byte:只有unicast才可當來源位置
destination address(目地位置)16byte
Extension Header(擴充表頭),位址不固定
payload(資料):載送上層協定,如果有需要也會包含ipv6 extend header
ps:以上ipv6格式為rfc2460版本

…………………..

ipv6格式 
僅使用無級式定址結構
沒有廣播的概念 
128bit,共8段,每段4個16進位共16bit,後面可接”/首碼長度”
ex:2000:5E0D:309A:FFC6:24A0:0000:0ACD:729D/3
ps:平均每人可分到一百萬個IP 

縮寫規則:
1IPv6每一段的前面為0可省略
ex:0c12:0234:0010:1000:0122:0100:0000:ABCD可寫為c12:234:10:1000:122:100:0:ABCD
2多次連續0的段可寫為::,但只能出現一次
ex:1234:0000:0000:1234:0000:0000:0000:ABCD可寫為1234::1234:0:0:0:ABCD或1234:0:0:1234::ABCD

prefix length(首碼長度)
用來表示network id(與ipv4概念相同)
ex:
prefix length=64(代表Network ID部份為64bit)
若ip為2003:1234:3344:1234:1234:1234:34ff:2314/64
network=2003:1234:3344:1234:0000:0000:0000:0000/64
縮寫=2003:1234:3344:1234::/64
ex:
prefix length=56
若ip為2003:1234:3344:1234:1234:1234:34ff:2314/56
network=2003:1234:3344:1200:0000:0000:0000:0000/56
縮寫=2003:1234:3344:1200::/56 

prefix term
前12bit的prefix也稱為registry prefix,主要指派給RIR
前32bit的prefix也稱為isp prefix,主要指派給ISP
前48bit也稱為global routing prefix或site prefix ,主要指派給customer 
前64bit的prefix也稱為subnet prefix ,主要由組織內部自行指派給各別的區域  

若要指定port號則格式為[ipv6]:port
ex:[2000:5E0D:309A:FFC6:24A0:0000:0ACD:729D]:80

保留IP
::/128表示unspecified address(未知的位置),當主機無適合的ip可用時會使用該位址
::1/128 為loopback位置,等同於ipv4的127.0.0.1 
::/0 表示default route

……………….

ipv6 address
主要分為unicast(單播),multicast(群播),anycast(任意播)
屬於multiple address type,也就是一個介面可以同時存在以上三種類型
ps:ipv4一個介面只能一種
  

 unicastmulticastanycast/cluster
addressa single interfacea set of interfacesa set of interfaces
Delivery tosingle interfaceall interfaces in the seta single interface in the set
communicationone-to-oneone-to-manyone-to-nearest
one-to-one-of-many
other  Nearest is defined as being closest in term of routing distance
comment適用在單一節點對單一節點的傳送已整合ipv4 multicast和broadcast
不能用在來源位置
可用在router-subnetting
ipv6新增的類型
只能用在路由器,不能用在電腦,也不能用在來源位置
1個anycast位置可被多節點使用,但是傳送給此位址的封包,是先送給距離最近或成本最低的節點做處理
IPv6介面能有多個anycast addresses
可用在router-subnetting
被用來做discovery function
ipv4無此功能

unicast address
主要有以下幾種
no-scoped address:不在限制範圍即可看到的IP 
 global unicast(等同於ipv4的public ip)
scoped address:只在限制範圍才看的到IP
 unique local unicast(等同rfc1918定義的ipv4 private ip)
 link-local unicast


global unicast address(全域單點位址)
網路為2000::/3
IANA允許主機在internet上用來通訊的位址
格式為[3bit首碼,固定001][45bit public topology][16bit site topology][64bit interface id]
public topology(公用拓樸)適用於isp或提供網路服務交換者
 格式為[13bit tla][8bit res][24bit nla]
 tla id(top level aggregation id,最高層可集合id)
 res(reserve,保留用):保留給tla和nla欄位不足時用
 nal id(next level aggregation id,下一層可集合的id)
 ps:isp prefix=48,因為3bit+45bit 
site topology(位置拓樸)適用於區域性的組織
 格式為[slaid][subnet]
 sla id(site level aggregation id,位置層可集合的id)
 ps:
ps:These are your typical publicly routable addresses,just like a regular publicly routable address in IPv4

unique local unicast
網路為FD00::/8
2進位格式為[8bit首碼][40bit global id][16bit subnet][64bit interface id]
除了8bit首碼外,其餘都是自己指派
ps:interface id指的是主機
ps:取代site-local unicast用
也可表示為FC00::/7
格式為[7bit首碼,固定為1111110][1bit L][40bit global id][16bit subnet id][64bit interface id]
欄位L若為1表示local,若為0表示保留

link-local unicast
網路為FE80::/10或FE80::/64
2進位格式為[10bit首碼,固定為1111111010][54bit的0][64bit interface id]
設備可以算出自己的link lock ipv6位址,
在IPv6的每個介面都會有屬於自己的link-local address
屬於link-local領域:該位置的封包不會離開本地鏈路或本地子網路
用途包括:
 用做RS(Router Solicitation,路由器請求)和RA(Router Advertisement,路由器公告)訊息的來源位置
 用做NDP
 IP路徑的NEXT HOP 

ps:
Site-Local unicast(己不使用)

也可表示為FEC0::/10
2進位格式為[10bit首碼,固定為1111111011][38bit的0][16bit subnet id][64bit interface id]
IPv4-Compatible(己不使用)
格式為[96bit的0][32bit ipv4位置]
ex:ipv4位置135.75.43.52,等同於16進位的874B2B34,因此ipv6位置是::874B:2B34
ps:Site-Local,Link-Local,unique-local不可被繞送,類似ipv4的私有ipps:

64bit interface id
用來辦識連線的介面位置,也就是連結層位置,且必須為唯一
產生方式如下:
 採用modified EUI-64演算法
 作業系統自動產生隨機位址
 手動設定
 Tunnel Server系統自動產生或指定
 經由加密機制產生之虛擬位址(IPv6 IP Sec)
 DHCPv6伺服器指定(Stateful)

EUI-64
做法:插入fffe在mac的company id(前24bit)和node id(後24bit)間,在轉成2進位,並把第7個bit換成1,在轉成16進位
ex:00-C0-3F-BB-93-91轉成eui64格式
1插入fffe成為00-C0-3F-FF-FE-BB-93-91
2轉成2進位為00000000-1100000…後省略
3將第7bit改為1為00000010-1100000…後省略
4重組為16進位為02C0:3FFF:FEBB:9391

multicast
網路為FF00::/8
格式為[8bit首碼,固定為11111111][4bit flgs][4bit scop][112bit group id]
scop是用來限制multicast group的範圍,
 2表示link-local,也就是網路FF02::/16
 5表示site:也就是網路FF05::/16
group id是用來辦識multicast group的值

常見的群播位址
ff02::1 相同鏈路上的所有ipv6 client節點
ff02::2 相同鏈路上的所有ipv6 router節點
ff02::1:ff00:0/104 solicited node multicast address(請求節點群播位址),用於ND,DAD
ff02::1:2 轉送到dhcp伺服器的router位置
ff05::1:3 dhcp伺服器位址
ff05::101 ntp伺服器位址
常見的routing protocol群播位址
FF02::5,FF02::6 OSPF訊息
FF02::9 RIPv2訊息
FF02::A EIGRP訊息

anycast
格式為[不固定首碼][0000…]

……..

global unicast address分配方式
Stateful Auto-configuration(全狀態自動配置)
Stateless Auto-configuration(無狀態自動配置)
static-configuration 


Stateful Autoconfiguration(全狀態自動配置):
需使用stateful DHCPv6伺服器來配置
ps:
ipv6主機使用ipv6群播位置ff02::1:2尋找Stateful DHCPv6位置(ipv4使用廣播)


Stateless Autoconfiguration(無狀態自動配置)
1透過ndp來學習prefix,prefix長度,預設閘道
 1.1主機發送NDP的RS訊息到ff02::2以要求所有ROUTER回覆,目前子網路的ipv6 prefix以及預設閘道是多少
 1.2router透過NDP的RA訊息到ff02::1以回覆所有主機
2使用EUI-64的格式來計算IPv6位址的主機id
ps:目前IPv6位址=子網路prefix+eui64位址
3使用無狀態dhcp學到dns的ipv6位址
管理員需事先在Stateless DHCPv6 server內指定好DNS位址
ps:透過RDNSS技術可不用透過DHCPv6解決DNS問題

static configuration
可分兩種
手動指派128bit完整位置
手動指派64bit prefx並要求設備使用EUI64格式
ps:
需使用無狀態dhcp學到dns的ipv6位址

ps:
以上三種方式,default gateway都需由客戶端與ROUTER使用NDP(neighbor discovery protocol)解決

ps:
dhcpv6伺服器有兩運作模式
 stateful:伺服器會追蹤狀態訊息(同dhcpv4),只用在ipv6 Stateful Auto-configuration
 stateless:伺服器不會追蹤狀態訊息,只用在ipv6 Stateless Auto-configuration

………………………….

ND(neighbor discovery)
RFC4861
功能包括
 Address Resolution
 Duplicate Address Detection
 Stateless Address Autoconfiguration
 router Redirect
功能如下
 主機用它來發現相鄰路由器。
 主機用它來發現位址、位址字首以及其它組態參數。
 節點用它來解析 IPv6 封包轉寄到的相鄰節點的連結層位址,並確定相鄰
 節點的連結層位址從何時起發生改變。
 節點用它來確定是否仍然可以連線到相鄰節點。
 路由器用它來通告自己的存在、主機組態參數以及連結字首。
 路由器用它來通知主機:有更好的下一躍點位址,以供轉寄針對特定目的的封包
ps:
IND(inverse neighbor discovery)找出IPv6的位址
該機制會使用請求節點群播位址ff02::1:ff00:0/104


Address Resolution

主要用來找出MAC,主機傳送封包前會從mac table找mac(如同IPv4的ARP程式)
若沒有mac則做以步驟
1.1主機發送NS(neighbor solicitation)的ICMP訊息到FF02::1:FF00:0/104(solicited node),要求對方回覆MAC位置
1.2對方將mac透過NA(neighbor advertisement)的ICMP訊息 以回覆該主機

DAD(duplicate address detection,重複位址偵測)
IPv6學到位址時,會執行DAD以檢查是否有ip重覆
透過ndp的ns訊息做檢查

ICMPv6 
具備IPv4 ICMP基本功能,廢除了一些不再使用的過時消息類型,並提供一個簡單的故障排除回應服務。
綜合了另外兩個在原 IPv4中分屬不同協議完成的功能:MLD,ND

MLD(Multicast Listener Discovery)
用來交換 IPv6 路由器之間的成員資格狀態資訊,這些路由器支援多點傳送及多點傳送群組的成員。
獨立成員主機報告多點傳送群組中的主機成員資格,並且多點傳送路由器每隔一段時間輪詢一次成員資格狀態。 

 

ipv6 core取代ipv4的功能
 IPv6 IPv4
 ICMPv6 ICMP
 ND ARP,icmp router discovery,icmp redirect
 MLD IGMP

 


ND訊息種類
RS(Router Solicitation,路由器邀請封包)
RA(Router Advertisement,路由器公告封包)
NS(Neighbor Solicitation,芳鄰邀請封包)
NA(Neighbor Advertisement,芳鄰公告封包)
Redirect(重蹈封包)

RS(router solicitation)
type:8bit:value=133
code:8bit:value=0
checksum:16bit
reserved:32bit:value=0
option:攜帶以下資訊source link-layer(1)

RA(router advertisement)
router公告指派網路組態給ipv6節點
封包格式如下
type:8bit,value=134
code:8bit,value=0
checksum:16bit
cur hop limit:8bit
M:1bit
O:1bit
reserved:6bit
router lifetime:16bit
reachable time:32bit
retrans timer:32bit
options:攜帶以下資訊
 source link-layer(1),prefix information(3),MTU(5),recursive dns server(25)

……………….. 

ipv4/ipv6互通方式,主要分三種
dual stack(雙堆疊):設備同時使用ipv4和ipv6
translator(位址協定轉換機制),ipv6主機和ipv4主機轉換和通訊
tunneling:將ipv6封裝在ipv4上,使用部份ipv4設備建立起ipv6網路

translator主要有以下兩種
NAT-PT(protocol translatioin):RFC2766,轉換ipv6和ipv4的位址,主要透過DNSv6和DNSv4
siit(Stateless IP/ICMP Translation),RFC2765

tunneling可分為兩種
點對點:
 支援IGP,
 運算程序較少,適用於流量大的環境
 可使用MCT(手動方式),或使用GRE實做
多點:
 不支援IGP,
 運算程序較多,適用於流量小的環境
 實做方法有6to4,ISATAP,MDVPN
ps:
其他tunneling還有
Tunnel Broker(通道中繼器)屬於automatic tunnel,需要用到tunnel server,在RFC 3053詳述
6over4 tunneling
IPsec VTI(Virtual Tunnel Interface)
Teredo tunneling,使用2001::/32

MCT(manually configure tunnel)
rfc4213
僅支援IPv6
建立link local方式:FE80::/96(96bit)+來源ip(32bit)
MTU=1480

GRE
CISCO先定義,後改為RFC2784
可支援多協定
建立link local方式:IPv6 EUI64
MTU=1476

MDVPN
cisco定義
屬於Point-to-Multipoint架構
可解決GRE的point-to-point在大型Hub-and-Spoke VPN設定上的不便
主要技術包括multi GRE和NHRP 

6to4自動通道
rfc3056
主要有兩做作法
1
使用6to4 ipv6的站台:資料流仍然會使用IPv4
優點:若有新的站台要加入時,設定較容易 
適用組織的internet連線不使用IPv6情況
通道兩端設備需支援dual-stack(ipv4 and ipv6)
使用ipv6位址2002::/16,該位置不指派給global unicast
2進位格式為[16bit首碼(0x2002)][32bit IPv4][16bit subnet][64bit interface id]
 目地ipv4位址會置入ipv6第2,3欄位,也就是前48bit的ipv6可被用來指派到介面 
2
使用global unicast的站台


ISATAP
rfc4214
使用global unicast的站台
0000:5EFE會加入在IPv6的第5,6欄位
使用modified eui-64,因此目地ipv4位址會置入ipv6第7,8欄位