Địa chỉ IPv6 (Internet protocol version 6) là thế hệ địa chỉ Internet phiên bản mới được thiết kế để thay thế cho phiên bản địa chỉ IPv4 trong hoạt động Internet. Địa chỉ IPv4 có chiều dài 32 bít, biểu diễn dưới dạng các cụm số thập phân phân cách bởi dấu chấm, ví dụ 203.119.9.0. IPv4 là phiên bản địa chỉ Internet đầu tiên, đồng hành với việc phát triển như vũ bão của hoạt động Internet trong hơn hai thập kỷ vừa qua. Với 32 bit chiều dài, không gian IPv4 gồm khoảng 4 tỉ địa chỉ cho hoạt động mạng toàn cầu. Do sự phát triển như vũ bão của mạng và dịch vụ Internet, nguồn IPv4 dần cạn kiệt, đồng thời bộc lộ các hạn chế đối với việc phát triển các loại hình dịch vụ hiện đại trên Internet. Phiên bản địa chỉ Internet mới IPv6 được thiết kế để thay thế cho phiên bản IPv4, với hai mục đích cơ bản: Thay thế cho nguồn IPv4 cạn kiệt để tiếp nối hoạt động Internet. Hình vẽ sau mô tả tình hình hiện nay của IPv4, và tầm địa chỉ hiện có của IPv4, qua đó ta thấy dự đoán có thể hết địa chỉ vào khoảng năm 2010 hay sớm hơn. Khắc phục các nhược điểm trong thiết kế của địa chỉ IPv4.
Trang 11 Sự ra đời của IPv6
Địa chỉ IPv6 (Internet protocol version 6) là thế hệ địa chỉ Internet phiên bảnmới được thiết kế để thay thế cho phiên bản địa chỉ IPv4 trong hoạt độngInternet Địa chỉ IPv4 có chiều dài 32 bít, biểu diễn dưới dạng các cụm số thậpphân phân cách bởi dấu chấm, ví dụ 203.119.9.0 IPv4 là phiên bản địa chỉInternet đầu tiên, đồng hành với việc phát triển như vũ bão của hoạt độngInternet trong hơn hai thập kỷ vừa qua Với 32 bit chiều dài, không gian IPv4gồm khoảng 4 tỉ địa chỉ cho hoạt động mạng toàn cầu
Do sự phát triển như vũ bão của mạng và dịch vụ Internet, nguồn IPv4 dần cạnkiệt, đồng thời bộc lộ các hạn chế đối với việc phát triển các loại hình dịch vụhiện đại trên Internet Phiên bản địa chỉ Internet mới IPv6 được thiết kế để thaythế cho phiên bản IPv4, với hai mục đích cơ bản:
• Thay thế cho nguồn IPv4 cạn kiệt để tiếp nối hoạt động Internet Hình vẽsau mô tả tình hình hiện nay của IPv4, và tầm địa chỉ hiện có của IPv4, qua đó tathấy dự đoán có thể hết địa chỉ vào khoảng năm 2010 hay sớm hơn
Tầm địa chỉ IPv4
Trang 2Cụ thể như hình vẽ sau là đồng
hồ hiển thị tình trạng kiệt quệIPv4 của Tổ chức cấp phát địachỉ số Internet -IANA (ngày27/5/2010) cho thấy địa chỉIPv4 chỉ còn khoảng 7% - đủdùng cho 429 ngày nữa (tứckhoảng 30/7/2011)
• Khắc phục các nhược điểm trong thiết kế của địa chỉ IPv4
Ví dụ như bảng định tuyến của mạng backbone (mạng xương sống) ngày càng
lớn Hình dưới đây là hình mô tả kích thước của bảng định tuyến được nở dần ratheo các năm
Trang 3Kích thước bảng định tuyến
Địa chỉ IPv6 có chiều dài 128 bít, biểu diễn dưới dạng các cụm số hexa phâncách bởi dấu :, ví dụ 2001:0DC8::1005:2F43:0BCD:FFFF (lưu ý dấu :: là dãytoàn 0, trong 1 địa chỉ IP chỉ xuất hiện 1 lần dấu ::) Với 128 bít chiều dài, khônggian địa chỉ IPv6 gồm 2^128 địa chỉ, cung cấp một lượng địa chỉ khổng lồ chohoạt động Internet
IPv6 được thiết kế với những tham vọng và mục tiêu như sau:
• Không gian địa chỉ lớn hơn và dễ dàng quản lý không gian địa chỉ
• Khôi phục lại nguyên lý kết nối đầu cuối-đầu cuối của Internet và loại bỏhoàn toàn công nghệ NAT (Network Address Translation - Chuyển dịchđịa chỉ mạng)
• Quản trị TCP/IP dễ dàng hơn: DHCP(Dynamic Host Configuration
Protocol: giao thức cấu hình động máy chủ, là một giao thức cấu hình tự
động địa chỉ IP Máy tính được cấu hình một cách tự động vì thế sẽ giảm
việc can thiệp vào hệ thống mạng Nó cung cấp một database trung tâm
để theo dõi tất cả các máy tính trong hệ thống mạng Mục đích quan trọngnhất là tránh trường hợp hai máy tính khác nhau lại có cùng địa chỉ IP)được sử dụng trong IPv4 nhằm giảm cấu hình thủ công TCP/IP cho host.IPv6 được thiết kế với khả năng tự động cấu hình mà không cần sử dụngmáy chủ DHCP, hỗ trợ hơn nữa trong việc giảm cấu hình thủ công
• Cấu trúc định tuyến tốt hơn: Định tuyến IPv6 được thiết kế hoàn toànphân cấp
• Hỗ trợ tốt hơn Multicast: Multicast là một tùy chọn của địa chỉ IPv4, tuynhiên khả năng hỗ trợ và tính phổ dụng chưa cao
Trang 4• Hỗ trợ bảo mật tốt hơn: IPv4 được thiết kế tại thời điểm chỉ có các mạngnhỏ, biết rõ nhau kết nối với nhau Do vậy bảo mật chưa phải là một vấn
đề được quan tâm Song hiện nay, bảo mật mạng internet trở thành mộtvấn đề rất lớn, là mối quan tâm hàng đầu
• Hỗ trợ tốt hơn cho di động: Thời điểm IPv4 được thiết kế, chưa tồn tạikhái niệm về thiết bị IP di động Trong thế hệ mạng mới, dạng thiết bị nàyngày càng phát triển, đòi hỏi cấu trúc giao thức Internet có sự hỗ trợ tốthơn
2 Cấu trúc header của IPv6
2.1 Khác biệt cơ bản giữa IPv4 header và IPv6 header.
IPv6 là một cải tiến về version của thủ tục Internet hiện thời, IPv4 Tuy nhên, nóvẫn là một thủ tục Internet (một thủ tục là một tập các quy trình để giao tiếp)Trong thủ tục Internet, thông tin như địa chỉ IP của nơi gửi và nơi nhận của góitin dữ liệu được đặt phía trước dữ liệu Phần thông tin đó được gọi là header
Hình 1: IPv4 Header
Trang 5Hình 2: IPv6 Header
Dạng thức của header đã được đơn giản hoá đi trong IPv6: Header củaIPv6 chỉ có 6 trường và 2 địa chỉ trong khi header của IPv4 có tận 10trường và 2 địa chỉ Cụ thể các trường như sau:
- Trường địa chỉ nguồn (Source Address) và địa chỉ đích (Destination Address) của IPv6 có chiều dài mở rộng đến 128 bít (3 bít dành cho địa
chỉ khả tuyến toàn cầu (Globally Routable Unicast - GRU nên còn 125 bít)) trong khi IPv4 chỉ có 32 bít Do vậy, Ipv6 tăng kích thước tầm địa chỉlên khoảng 10^28 lần so với Ipv4 Mặc dù trường địa chỉ nguồn và địa chỉđích có chiều dài mở rộng tới gấp 4 lần số bít, song chiều dài header của IPv6 không hề tăng nhiều so với header của IPv4
- Phiên bản (Version): Gồm 4 bít được sử dụng để xác định phiên bản của
giao thức IP đang được sử dụng và nó có giá trị là 6 với IPv6
- Hop limit: Gồm 8 bít, được sử dụng để giới hạn số hop mà packet đi qua,
được sử dụng để tránh cho packet được định tuyến vòng vòng trong mạng.Trường này giống như trường TTL (Time-To-Live) của IPv4
- Chiều dài tải dữ liệu(Payload Length): Gồm 16 bít, tương tự như trường
“Total Length” của IPv4, xác định tổng kích thước của gói tin IPv6 baogồm cả phần mào đầu mở rộng (không chứa header)
- Next header: Gồm 8 bít, thay thế trường “Protocol” Trường này chỉ định
đến mào đầu mở rộng đầu tiên của gói tin IPv6, đặt sau mào đầu cơ bản
Trang 6hoặc chỉ định tới thủ tục lớp trên như TCP, UDP, ICMPv6 khi trong góitin IPv6 không có mào đầu mở rộng.
- Phân dạng lưu lượng (Traffic Class): Gồm 8 bít thực hiện chức năng
tương tự trường “Service Type” của IPv4 Trường này được sử dụng đểbiểu diễn mức độ ưu tiên của gói tin, mỗi điểm kết nối IPv6 có thể đánhdấu gói tin với từng loại dữ liệu, ví dụ gói tin nên được truyền với tốc độnhanh hay thông thường Trường Service Type gồm TOS (Type ofService) và Precedence TOS xác định loại dịch vụ và bao gồm: giá trị, độtin cậy, thông lượng, độ trễ hoặc bảo mật Precedence xác định mức ưutiên sử dụng 8 mức từ 0-7
- Nhãn dòng (Flow Label): Có chiều dài 20 bít, là trường mới được thiếtlập trong IPv6 Trường này được sử dụng để chỉ định gói tin thuộc mộtdòng (Flow) nhất định giữa nguồn và đích, yêu cầu bộ định tuyến IPv6phải có cách xử lý đặc biệt Bằng cách sử dụng trường này, nơi gửi gói tin
có thể xác định một chuỗi các gói tin, ví dụ gói tin của dịch vụ thoại VoIPthành một dòng và yêu cầu chất lượng cụ thể cho dòng đó Khi một routerxác định dòng lưu lượng lần đầu, nó sẽ nhớ dòng lưu lượng đó, cũng nhưcác xử lý đặc biệt ứng với lưu lượng này, và khi các lưu lượng khác thuộcdòng này đến, nó sẽ xử lý nhanh hơn là xử lý từng packet Ngay cả trongIPv4, một số các thiết bị giao tiếp cũng được trang bị khả năng nhận dạngdòng lưu lượng và gắn mức ưu tiên nhất định cho mỗi dòng Tuy nhiên,những thiết bị này không những kiểm tra thông tin tầng IP ví dụ địa chỉnơi gửi và nơi nhận, mà còn phải kiểm tra cả số port là thông tin thuộc vềtầng cao hơn Trường Flow Label trong IPv6 cố gắng đặt tất cả nhữngthông tin cần thiết vào cùng nhau và cung cấp chúng tại tầng IP
- Trường tự chọn (Options) bỏ đi trong header của IPv6: Trường
Options này được sử dụng để thêm các thông tin về các dịch vụ tuỳ chọnkhác nhau (VD thông tin liên quan đến mã hoá có thể được thêm vào tạiđây) Vì vậy, chiều dài của IPv4 header thay đổi tuỳ theo tình trạng làmcho các router điều khiển giao tiếp theo những thông tin trong IP header
Trang 7không thể đánh giá chiều dài header chỉ bằng cách xem xét phần đầu góitin Điều này làm cho khó khăn trong việc tăng tốc xử lý gói tin với hoạtđộng của phần cứng Trong địa chỉ IPv6 thì những thông tin liên quan đếndịch vụ kèm theo được chuyển hẳn tới một phân đoạn khác gọi là header
mở rộng “Extension header” Trong hình vẽ trên là header cơ bản Đối vớinhững gói tin thuần tuý, chiều dài của header được cố định là 40 byte Về
xử lý gói tin bằng phần cứng, có thể thấy trong IPv6 có thể thuận tiện hơnIPv4
- Trường kiểm tra header (Header Checksum): sử dụng để kiểm tra lỗi
trong thông tin header, được tính toán ra dựa trên những con số củaheader Tuy nhiên, có một vấn đề nảy sinh là header chứa trường TTL(Time to Live), giá trị trường này thay đổi mỗi khi gói tin được truyền qua
1 router Do vậy, header checksum cần phải được tính toán lại mỗi khi góitin đi qua 1 router Nếu giải phóng router khỏi công việc này, chúng ta cóthể giảm được trễ Thực ra, tầng TCP phía trên tầng IP có kiểm tra lỗi củacác thông tin khác nhau bao gồm cả địa chỉ nhận và gửi Vậy có thể thấycác phép tính tương tự tại tầng IP là dư thừa, nên Header Checksum được
gỡ bỏ khỏi IPv6
IPv6 có mục tiêu cung cấp khung làm việc truyền tải thông minh, dễ dàng xử lýcho thiết bị bằng cách giữ cho header đơn giản và chiều dài cố định Cấu trúcgói tin IPv6 như sau:
Trang 8- Header mở rộng (extension header) trong IPv6: là đặc tính mới trong
thế hệ địa chỉ IPv6 Trong IPv4, thông tin liên quan đến những dịch vụthêm vào được cung cấp tại tầng IP được hợp nhất trong trường Optionscủa header Vì vậy, chiều dài header thay đổi tuỳ theo tình trạng Khácthế, địa chỉ IPv6 phân biệt rõ ràng giữa header mở rộng và header cơ bản,
và đặt phần header mở rộng sau phần header cơ bản Header cơ bản cóchiều dài cố định 40 byte, mọi gói tin IPv6 đều có header này Header mởrộng là tuỳ chọn Các thiết bị xử lý gói tin (ví dụ router), cần phải xử lýheader cơ bản trước, chúng không phải xử lý header mở rộng (trừ trườnghợp header mở rộng “hop by hop”) Router có thể xử lý gói tin hiệu quảhơn vì chúng biết chỉ cần nhìn vào phần header cơ bản với chiều dài nhưnhau
- Header mở rộng được chia thành nhiều loại tuỳ thuộc vào dạng và chứcnăng chúng phục vụ Khi nhiều dịch vụ thêm vào được sử dụng, phầnheader mở rộng tương ứng với từng loại dịch vụ khác nhau được đặt tiếpnối theo nhau Trong cấu trúc header IPv6 trường Next Header có 8 bít.Trường này sẽ xác định xem extension header có tồn tại hay không, khi
mà header mở rộng không được sử dụng, header cơ bản chứa mọi thôngtin tầng IP Nó sẽ được theo sau bởi header của tầng cao hơn, tức hoặc làheader của TCP hay UDP, và trường Next Header chỉ ra loại header sẽtheo sau Mỗi header mở rộng (extension header) cũng chứa trường NextHeader và xác định header mở rộng nào sẽ theo sau nó Node đầu cuối khinhận được gói tin chức extension header sẽ xử lý các extension headernày theo thứ tự được sắp xếp của chúng Dưới đây là bảng giá trị củatrường Next Header:
Trang 9- Dạng của extension header: Có 6 loại của extension header: Hop-by-Hop Option, Destination Option, Routing, Fragment, Authentication, and ESP (Encapsulating Security Payload) Một gói tin IPv6 có thể sử dụng cùng lúc nhiều extension header, thường có một khuyến nghị là đặt chúng theo thứ tự quy định như trên.
Hop-by-Hop Option: Thông thường extension header được xử lý tại đíchtuy nhiên có một ngoại lệ của quy tắc này là header Hop-by-Hop Optionđược xử lý tại mọi router
Destination Option: Destination Option header được sử dụng để xác địnhchu trình cần thiết phải xử lý bởi node đích Có thể xác định tại đây bất cứchu trình nào, thông thường chỉ có những node đích xử lý header mở rộngcủa IPv6 Như vậy thì các header mở rộng khác ví dụ Fragment header có
Trang 10thể cũng được gọi là Destination Option header Tuy nhiên, DestinationOption header khác với các header khác ở chỗ nó có thể xác định nhiềudạng xử lý khác nhau.
Routing: Routing header được sử dụng để xác định đường dẫn định tuyến
Ví dụ, có thể xác định nhà cung cấp dịch vụ nào sẽ được sử dụng, và sựthi hành bảo mật cho những mục đích cụ thể Node nguồn sử dụngRouting header để liệt kê địa chỉ của các router mà gói tin phải đi qua.Các địa chỉ trong liệt kê này được sử dụng như địa chỉ đích của gói tinIPv6 theo thứ tự được liệt kê và gói tin sẽ được gửi từ router này đếnrouter khác tương ứng
Fragment: Fragment Header được sử dụng khi nguồn gửi gói tin IPv6 gửi
đi gói tin lớn hơn Path MTU, để chỉ xem làm thế nào khôi phục lại đượcgói tin từ các phân mảnh của nó MTU (Maximum Transmission Unit) làkích thước của gói tin lớn nhất có thể gửi qua một đường dẫn cụ thể nào
đó Trong môi trường mạng như Internet, băng thông hẹp giữa nguồn vàđích gây ra vấn đề nghiêm trọng Cố gắng gửi một gói tin lớn qua mộtđường dẫn hẹp sẽ làm quá tải Trong địa chỉ IPv4, mối router trên đườngdẫn có thể tiến hành phân mảnh (chia) gói tin theo giá trị của MTU đặtcho mỗi giao diện Tuy nhiên, chu trình này áp đặt một gánh nặng lênrouter Bởi vậy trong địa chỉ IPv6, router không thực hiện phân mảnh góitin (các trường liên quan đến phân mảnh trong header IPv4 đều được bỏđi) Node nguồn IPv6 sẽ thực hiện thuật toán tìm kiếm Path MTU, để tìmbăng thông hẹp nhất trên toàn bộ một đường dẫn nhất định, và điều chỉnhkích thước gói tin tuỳ theo đó trước khi gửi chúng Nếu ứng dụng tạinguồn áp dụng phương thức này, nó sẽ gửi dữ liệu kích thước tối ưu, và sẽkhông cần thiết xử lý tại tầng IP Tuy nhiên, nếu ứng dụng không sử dụngphương thức này, nó phải chia nhỏ gói tin có kích thướng lớn hơn MTUtìm thấy bằng thuật toán Path MTU Discovery Trong trường hợp đó,
Trang 11những gói tin này phải được chia tại tầng IP của node nguồn và Fragmentheader được sử dụng.
Authentication and ESP: Ipsec là phương thức bảo mật bắt buộc được sửdụng tại tầng IP Mọi node IPv6 phải thực thi Ipsec Tuy nhiên, thực thi vàtận dụng lại là khác nhau, và Ipsec có thực sự được sử dụng trong giaotiếp hay không phụ thuộc vào thời gian và từng trường hợp Khi Ipsecđược sử dụng, Authentication header sẽ được sử dụng cho xác thực và bảomật tính đồng nhất của dữ liệu, ESP header sử dụng để xác định nhữngthông tin liên quan đến mã hoá dữ liệu, được tổ hợp lại thành extensionheader Trong IPv4, khi có sử dụng đến Ipsec, thông tin được đặt trongtrường Options
IPv6 ứng dụng một hệ thống tách biệt các dịch vụ gia tăng khỏi các dịch vụ
cơ bản và đặt chúng trong header mở rộng (extension header), cao hơn nữa phânloại các header mở rộng theo chức năng của chúng Làm như vậy, sẽ giảm tảinhiều cho router, và thiết lập nên được một hệ thống cho phép bổ sung một cáchlinh động các chức năng, kể cả các chức năng hiện nay chưa thấy rõ ràng
3 Cấu trúc địa chỉ của IPv6
3.1 Hình thức biểu diễn
IPv6 Address gồm 8 nhóm, mỗi nhóm 16 bít được biểu diễn dưới dạng số Thập lục phân (Hexa-Decimal) Ta có các quy tắc đơn giản để biểu diễn như sau:
Cho phép bỏ các số (0) nằm trước trong mỗi nhóm (octet)
Thay bằng một số (0) cho nhóm có toàn số không
Thay bằng dấu :: cho các nhóm liên tiếp có toàn số (0)
Dấu :: chỉ được xuất hiện 1 lần trong toàn bộ địa chỉ IPv6
Ví dụ: Ta có địa chỉ 2001:0FAC:0000:0000:000C:100A:0000:89FB
Dựa vào các quy tắc trên ta có thể viết lại như sau:
2001:FAC:0:0:C:100A:0:89FB hoặc 2001:FAC::C:100A:0:89FB
Trang 12Phân loại IPv6
3.2.1 Đ a ch Unicast ị ỉ
Một địa chỉ unicast xác định duy nhất 1 interface của 1 node IPv6 Một gói tin
có đích đến là 1 địa chỉ unicast thì gói tin đó sẽ được chuyển đến 1 interface duynhất có địa chỉ đó Các loại địa chỉ sau thuộc Unicast:
Global unicast addresses
Link local addresses
Site local addresses
Unique local IPv6 unicast addresses
Special addresses
3.2.1.1 Global unicast addresses (GUA)
GUA là địa chỉ IPv6 toàn cầu (tương tự như địa chỉ public của IPv4) Phạm viđịnh vị của GUA là toàn hệ thống IPv6 trên thế giới
Hình 3.1 Định dạng của GUA001: Ba bít đầu luôn có giá trị là 001 (Prefix= 2000:: /3)
Global Routing Prefix: gồm 45 bít là địa chỉ được cung cấp cho công ty, cơquan, hay một tổ chức nào đó khi đăng kí địa chỉ IPv6 toàn cầu ( public IP).Subnet ID: Gồm 16 bít là địa chỉ do các tổ chức tự cấp
Interface ID: Gồm 64 bít là địa chỉ của các interface trong subnet
Có thể đơn giản hóa thành dạng như sau: