IP v6
Chương I: Giới thiệu về cấu trúc của IPv6
ỊLợi ích của IPv6:
Một trong những lý do chính để phát triển một phiên bản mới của IP đó
là việc địa chỉ IPv4 lớp B đang hết dần. 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.
Hình 1: Tầm địa chỉ IPv4
Bên cạnh đó, do sự phát triển ngày một lớn của bảng định tuyến ở
backbone. Sau đây là hình mô tả kích thước của bảng định tuyến được
nở dần ra theo các năm.
Hình 2:Kích thước bảng định tuyến
Các vấn đề về bảo mật, các tùy chọn của IP và hiệu suất định tuyến.
Các ích lợi của IPv6 gồm: Tăng kích thước của tầm địa chỉ IP; tăng
sự phân cấp địa chỉ; đơn giản hoá địa chỉ host (địa chỉ được thống
nhất là: toàn cục, site và cục bộ) ; đơn giản hoá
việc tự cấu hình địa chỉ (gồm DHCPv6 và neighbor discovery thay
cho ARP broadcast); tăng độ linh hoạt cho định tuyến multicast; có
thêm địa chỉ anycast; header được sắp xếp hợp lý; tăng độ bảo mật
(vì có thêm các header mở rộng về
bảo mật giúp bảo đảm sự toàn vẹn dữ liệu); có tính di động tốt hơn
(home agent; care-of-address; và header định tuyến mở rộng); hiệu
suất tốt hơn (việc tóm tắt địa chỉ; giảm ARP broadcast; giảm sự phân
mảnh gói tin; không có header checksum; QoS được tích hợp sẵn...).
1. Tăng kích thước của tầm địa chỉ:
IPv6 sử dụng 128 bit địa chỉ trong khi IPv4 chỉ sử dụng 32 bit; nghĩa là IPv6 có
tới 2128 địa chỉ khác nhau; 3 bit đầu luôn là 001 được giành cho các địa chỉ khả
định tuyến toàn cầu (Globally Routable Unicast –GRU). Nghĩa là còn lại 2125 địa
chỉ, nghĩa là có khoảng 4,25.1037 địa chỉ, trong khi IPv4 chỉ có tối đa 3,7.109
địa chỉ, nghĩa là IPv6 sẽ chứa 1028 tầm địa chỉ IPv4.
2.Tăng sự phân cấp địa chỉ:
IPv6 chia địa chỉ thành một tập hợp các tầm xác định hay boundary:Ba bit đầu cho
phép biết được địa chỉ có thuộc địa chỉ khả định tuyến toàn cầu (GRU) hay không,
giúp các thiết bị định tuyến có thể xử lý nhanh hơn. Top level aggregation (TLA) ID
được sử dụng vì 2 mục đích: thứ nhất, nó được sử dụng để chỉ định một khối địa chỉ
lớn mà từ đó các khối địa chỉ nhỏ hơn được tạo ra để cung cấp sự kết nối cho những
địa chỉ nào muốn truy cập vào Internet; thứ hai, nó được sử dụng để phân biệt một
đường (route) đến từ đâu. Nếu các khối địa chỉ lớn được cấp phát cho các nhà cung
cấp dịch vụ và sau đó được cấp phát cho khách hàng thì sẽ dễ dàng nhận ra các mạng
chuyển tiếp mà đường đó đã đi qua cũng như mạng mà từ đó route xuất phát.
Với IPv6, việc tìm ra nguồn của 1 route sẽ rất dễ dànNext level aggregator(NLA)
là một khối địa chỉ được gán bên cạnh khối TLA, những địa chỉ này được tóm tắt
lại thành những khối TLA lớn hơn, khi chúng được trao đổi giữa các nhà cung cấp
dịch vụ trong lõi internet, ích lợi của loại cấu trúc địa chỉ này là: thứ nhất là sự ổn
định về định tuyến, nếu chúng ta có 1 NLA và muốn cung cấp dịch vụ cho các
khách hàng, ta sẽ cố cung cấp dịch vụ đầy đủ nhất, tốt nhất; bên cạnh đó, chúng ta
cũng muốn cho phép các khách hàng của chúng ta nhận được đầy đủ bảng định
tuyến nếu họ muốn để tạo việc định tuyến theo chính sách; cân bằng tải... để thực
hiện việc này chúng ta phải mang tất cả các đường trong backbone để có thể chuyển
cho họ.
3.Đơn giản hoá việc đặt địa chỉ host: IPv6 sử dụng 64 bit sau cho địa chỉ host,và trong 64 bit đó thì có cả 48 bit là địa chỉ MAC của máy, do đó phải đệm vào đó một số bit đã được định nghĩa trước mà các thiết bị định tuyến sẽ biết được những bit này trên subnet, ngày nay, ta sử dụng chuỗi 0xFF và 0xFE (:FF:FE: trong IPv6) để đệm vào địa chỉ MAC. Bằng cách này, mọi host sẽ có một host ID duy nhất trong mạng. Sau này nếu đã sử dụng hết 48 bit MAC thì có thể sẽ sử dụng luôn 64 bit mà không cần đệm.
4.Việc tự cấu hình địa chỉ đơn giản hơn: một địa chỉ multicast có thể được gán cho nhiều máy, địa chỉ anycast là các gói anycast sẽ gửi cho đích gần nhất (một trong những máy có cùng địa chỉ) trong khi multicast packet được gửi cho tất cả máy có chung địa chỉ (trong một nhóm multicast).
Kết hợp host ID với multicast ta có thể sử dụng việc tự cấu hình như sau: khi một máy được bật lên, nó sẽ thấy rằng nó đang được kết nối và nó sẽ gửi một gói multicast vào LAN; gói tin này sẽ có địa chỉ là một địa chỉ multicast có tầm cục bộ(Solicited Node Multicast address). Khi một router thấy gói tin này, nó sẽ trả lời một địa chỉ mạng mà máy nguồn có thể tự đặt địa chỉ, khi máy nguồn nhận được gói tin trả lời này, nó sẽ đọc địa chỉ mạng mà router gửi, sau đó, nó sẽ tự gán cho nó một địa chỉ IPv6 bằng cách thêm host ID (được lấy từ địa chỉ MAC của interface kết nối với subnet đó) với địa chỉ mạng=>tiết kiệm được công sức
gán địa chỉ IP.
5.Tăng độ linh hoạt cho định tuyến multicast:
Đặt trường hợp: giám đốc muốn gửi một hội nghị truyền hình đến các nhân viên trong công ty mà không muốn gửi tất cả mọi người trong internet (chỉ gửi những người cần xem), lúc đó, IPv6 có một khái niệm về tầm vực multicast. Với IPv6, bạn có thể thiết kế một luồng multicast xác định chỉ được gửi trong một khu vực nhất định và không bao giờ cho phép các packet ra khỏi khu vực đó.
8 bit đầu luôn được thiết lập là 1 giúp các thiết bị định tuyến biết được gói tin này là một gói tin multicast. 4 bit sau là flag (hiện tại, 3 bit đầu không được định nghĩa và luôn là 0, bit thứ tư là T bit được sử dụng để quyết định xem địa chỉ multicast này là địa chỉ được gán lâu dài (được gọi là well-known) hay tạm thời (transient). 4 bit tiếp theo là scope, xác định gói tin multicast có thể đi bao xa, trong khu vực nào
thì gói tin được định tuyến; scope có thể có các giá trị sau: 1(có tầm trong nội bộ node); 2 (có tầm trong nội bộ liên kết); 5 (có tầm trong nội bộ site); 8 (có tầm trong nội bộ tổ chức); E (có tầm toàn cục).
Tuỳ vào cách gán địa chỉ multicast, chúng ta có thể kiểm soát các gói tin multicast
được đi bao xa, và các thông tin định tuyến kết hợp với các nhóm multicast được
quảng bá bao xa. Ví dụ: nếu chúng ta muốn quảng bá một multicast trong văn
phòng của ta, và muốn toàn thế giới thấy nó, ta sẽ gán tầm cho nó là E (110),
tuy nhiên, nếu bạn muốn tạo một nhóm multicast cho một hội nghị truyền hình
bạn có thể gán tầm là 5 hay 2.
6. Địa chỉ Anycast:
IPv6 định nghĩa một loại địa chỉ mới: anycast. Một địa chỉ anycast là một địa chỉ
IPv6 được gán cho một nhóm các máy có chung chức năng, mục đích. Khi
packet được gửi cho một địa chỉ anycast, việc định tuyến sẽ xác định thành viên
nào của nhóm sẽ nhận được packet qua việc xác định máy gần nguồn nhất.
Việc sử dụng anycast có 2 ích lợi: một là, nếu bạn đang đến một máy gần nhất
trong một nhóm, bạn sẽ tiết kiệm được thời gian bằng cách giao tiếp với máy
gần nhất; thứ hai là việc giao tiếp với máy gần nhất giúp tiết kiệm được băng
thông.
Địa chỉ anycast không có các tầm địa chỉ được định nghĩa riêng như multicast,
mà nó giống như một địa chỉ unicast, chỉ có khác là có thể có nhiều máy khác
cũng được đánh số với cùng scope trong cùng một khu vực xác định.
Anycast được sử dụng trong các ứng dụng như DNS...
7.Header hợp lý:
Header của IPv6 đơn giản và hợp lý hơn IPv4. IPv6 chỉ có 6 trường và 2 địa chỉ,
trong khi IPv4 chứa 10 trường và 2 địa chỉ. IPv6 header có dạng:
IPv6 cung cấp các đơn giản hoá sau:
· Định dạng được đơn giản hoá: IPv6 header có kích thước cố định
40 octet với ít trường hơn IPv4, nên giảm được overhead, tăng độ linh
hoạt.
· Không có header checksum: trường checksum của IPv4 được bỏ đi
vì các liên kết ngày nay nhanh hơn và có độ tin cậy cao hơn vì vậy chỉ cần
các host tính checksum còn router thì khỏi cần
· Không có sự phân mảnh theo từng hop: trong IPv4, khi các packet
quá lớn thì router có thể phân mảnh nó, tuy nhiên việc này sẽ làm tăng
thêm overhead cho packet. Trong IPv6 thì chỉ có host nguồn mới có thể
phân mảnh một packet theo các giá trị thích hợp dựa vào một MTU path
mà nó tìm được, do đó, để hỗ trợ host thì IPv6 chứa một hàm giúp tìm ra
MTU từ nguồn đến đích.
8.Bảo mật:
IPv6 tích hợp tính bảo mật vào trong kiến trúc của mình bằng cách giới thiệu
2 header mở rộng tùy chọn: Authentication header(AH) và Encrypted
Security Payload (ESP) header. Hai header này có thể được sử dụng chung
hay riêng để hỗ trợ nhiều chức năng bảo mật.
·AH: quan trọng nhất trong header này là trường Integriry Check Value
(ICU). ICU được tính bởi nguồn và được tính lại bởi đích để xác minh.
Quá trình này cung cấp việc xác minh tín toàn vẹn và xác minh nguồn
gốc của dữ liệu. AH cũng chứa cả một số thứ tự để nhận ra một tấn
công bằng các packet replay giúp ngăn các gói tin được nhân bản.
· ESP header: ESP header chứa một trường : security parameter index
(SPI) giúp đích của gói tin biết payload được mã hoá như thế nào. ESP
header có thể được sử dụng khi tunneling, khi tunnelling thì cả header
và payload gốc sẽ được mã hoá và bỏ vào một ESP header bọc ngoài,
khi đến gần đích thì các gateway bảo mật sẽ bỏ header bọc ngoài ra và
giải mã để tìm ra header và payload gốc.
9.Tính di động:
IPv6 hỗ trợ tốt các máy di động như laptop. IPv6 giới thiệu 4 khái niệm
giúp hỗ trợ tính toán di động gồm: Home address; care-of address;
binding; home agent.
Trong IPv6 thì các máy di động được xác định bởi một địa chỉ home
address mà không cần biết hiện tại nó được gắn vào đâu. Khi một máy
di động thay đổi từ 1 subnet này sang subnet khác; nó phải có một
care-of address qua một quá trình tự cấu hình. Sự kết hợp giữa home
address và care-of address được gọi là một binding. Khi một máy di
động nhận được 1 care-of address, nó sẽ báo cho home agent của nó
bằng gói tin được gọi là binding update để home agent có thể cập nhật
lại binding cache của home agent về care-of address của máy di động
vừa gửi. Home agent sẽ duy trì một ánh xạ giữa các home address và
care-of address và bỏ nó vào binding cache. Một máy di động có thể
được truy cập bằng cách gửi một packet đến các home address của nó.
Nếu máy di động không được kết nối trên subnet của home agent thì
home agent sẽ gửi packet đó cho máy di động qua care-of address
của máy đó trong binding cache của home agent (Lúc này,home agent
được xem như máy trung gian để máy nguồn có thể đến được máy di
động). Máy di động sau đó sẽ gửi một gói tin binding update cho máy
nguồn của gói tin. Máy nguồn sau đó sẽ cập nhật binding cache của nó,
thì sau này máy nguồn muốn gửi đến máy di động, chỉ cần gửi trực tiếp
đến cho máy di động qua care-of address chứa trong binding cache
của nó mà không cần phải gửi qua home address. Do đó chỉ có gói tin
đầu tiên là qua home agent.
10. Hiệu suất:
IPv6 cung cấp các lợi ích sau:
· Giảm được overhead vì chuyện dịch địa chỉ: vì trong IPv4 có sử
dụng private address để tránh hết địa chỉ, do đó xuất hiện kỹ thuật
NAT để dịch địa chỉ, nên tăng overhead cho gói tin. Trong IPv6 do
không thiếu địa chỉ nên không cần private address, nên không cần
dịch địa chỉ.
· Giảm được overhead do định tuyến: nhiều khối địa chỉ IPv4 được
phân phát cho các user nhưng lại không tóm tắt được, nên phải cần
các entry trong bảng định tuyến làm tăng kích thước của bảng định
tuyến và thêm overhead cho quá trình định tuyến, ngược lại, các địa
chỉ IPv6 được phân phát qua các ISP theo một kiểu phân cấp địa
chỉ giúp giảm được overhead.
· Tăng độ ổn định cho các đường: trong IPv4, hiện tượng route
flapping thường xảy ra, trong IPv6, một ISP có thể tóm tắt các router|
của nhiều mạng thành một mạng đơn và chỉ quản lý mạng đơn đó và
cho phép hiện tượng flapping chỉ ảnh hưởng đến nội bộ của mạng bị
flapping.
· Giảm broadcast: trong IPv4 sử dụng nhiều broadcast như ARP,
trong khi IPv6 sử dụng neighbor discovery để thực hiện chức năng
tương tự trong quá trình tự cấu hình mà không cần sử dụng broadcast.
· Multicast có giới hạn: trong IPv6, một địa chỉ multicast có chứa
một trường scope có thể hạn chế các gói tin multicast trong các node,
trong các link, hay trong một tổ chức.
· Không có checksum.
II. Cấu trúc của địa chỉ:
Địa chỉ unicast IPv6 có chiều dài 128 bit và được chia làm 2 phần: một subnet
prefix và interface ID. Với các địa chỉ khả định tuyến toàn cục AGU, thì cả
prefix và interface ID đều có chiều dài là 64 bit. Subnet prefix là địa chỉ mạng
được gán cho liên kết. Trong khi interface ID là địa chỉ MAC của node.
Trong quá trình tự cấu hình của IPv6, host sẽ cung cấp interface ID của nó từ
ROM và yêu cầu router cục bộ hay sử dụng DHCPv6 server để xác định
subnet prefix.
· Do địa chỉ MAC chỉ có 48 bit nên 16 bit trong interface ID sẽ được để giành.
IEEE có yêu cầu một địa chỉ MAC dài 64 bit được gọi là EUI-64.
· Quản lý địa chỉ: một địa chỉ khả định tuyến toàn cục sẽ có subnet prefix là 64
bit và subnet prefix này sẽ được chia nhỏ thành 5 trường:
Trường đầu tiên là trường format prefix(FP), giúp xác định một địa chỉ khả định
tuyến toàn cục (AGU) với giá trị nhị phân là 001. Trường thứ 3 chưa được dùng
đến và được để giành cho tương lai. Hai trường: TLA ID và NLA ID là quan
trọng nhất. TLA ID là top level aggregation identifier. Các địa chỉ toàn cục
IPv6 sẽ được gán cho các ISP hay các tổ chức dạng TLA. Các tổ chức TLA
sẽ tiếp tục phân phát các tầm địa chỉ này cho các tổ chức Next level aggregation
(NLA). Phương pháp phân phối địa chỉ theo thứ bậc này cho phép việc tóm tắt
địa chỉ để giảm kích thước của bảng định tuyến ở core. Còn với các nhà quản trị
mạng thì trường quan trọng nhất là site-level aggregation (SLA) ID. Không giống
với 2 trường kia, SLA ID thường sẽ không được gán sẵn giá trị khi cung cấp cho
các tổ chức. SLA ID cho phép 1 tổ chức định nghĩa các phân cấp địa chỉ trong
cơ quan của họ. 16 bit SLA ID có thể hỗ trợ lên đến 65535 subnet.
Bảng sau sẽ thể hiện sự so sánh về cấu trúc địa chỉ của IPv4 với IPv6:
III. Khảo sát cấu trúc mạng của IPv6:
1. Các vấn đề cơ bản về giao tiếp trong IPv6: chúng ta sẽ khảo sát cách các
thiết bị giao tiếp với nhau trong một mạng và cách IPv6 tham gia vào đó cũng như
khảo sát việc giao tiếp giữa 2 host/subnet, host với router...
a. Các giao tiếp trong một subnet: IPv6 được thiết kế theo kiểu “plug and play”.
Có hỗ trợ việc tự cấu hình. Để hiểu các giao tiếp trong một subnet, ta cần hiểu
các khái niệm sau: tự cấu hình phi trạng thái (stateless); địa chỉ liên kết cục bộ
(link-local); link-local prefix; Interface ID; Neighbor solicitation message; neighbor
advertisement message; neighbor cache.
· Nếu một mạng không có router, không có kết nối với internet, và không có cả
các server để hỗ trợ cho quá trình tự cấu hình thì các host trong mạng đó phải cấu
hình địa chỉ IPv6 của nó bằng một quá trình gọi là stateless autoconfiguration.
· Khi một máy kết nối với 1 port trên 1 subnet, máy sẽ tự cấu hình một địa chỉ
thử (tentative address) được gọi là địa chỉ liên kết cục bộ (link-local address).
Địa chỉ này có kích thước 128 bit gồm 1 prefix liên kết cục bộ và địa chỉ MAC
của máy; prefix liên kết cục bộ là một định danh toàn số 0 và theo dạng hex là
FE8. Một địa chỉ liên kết cục bộ có dạng sau: FE80:0:0:0:xxxx:xxxx:xxxx:xxxx
· Để đảm bảo địa chỉ đó là duy nhất thì máy sẽ gửi một gói tin đặc biệt là:
neighbor solicitation đến địa chỉ vừa cấu hình và đợi reply trong một giây.
Nếu không thấy thì máy sẽ xem địa chỉ đó là duy nhất trong mạng, nếu có
một gói tin neighbor advertisement message thì địa chỉ đó không duy nhất.
Sau khi xác định địa chỉ liên kết cục bộ là duy nhất, quá trình tiếp theo là
query các router lân cận trong mạng.
· Để giao tiếp với hoat đích trên mạng, máy phải tìm ra interface ID của máy
đích. Do đó, máy sẽ sử dụng chức năng được gọi là IPv6 Neighbor Discovery
protocol. Máy sẽ gửi một gói tin neighbor solicitation cho đích và interface ID
sẽ được gửi trả lại trong gói tin Neighbor advertisement. Interface ID sẽ được
bỏ vào header của IPv6 và truyền trên mạng. Máy sau đó sẽ thêm một entry
vào neighbor cache của nó. Entry đó sẽ chứa địa chỉ IPv6 của đích, interface
ID của nó , một con trỏ vào packet sắp truyền, và một flag để xác định đích
có phải là một router hay không. Cache này sẽ được sử dụng cho những lần
gửi sau mà không cần gửi lại gói tin solicitation.
· Địa chỉ liên kết cục bộ không thể được sử dụng để giao tiếp ra khỏi một
subnet. Với những giao tiếp liên subnet thì cần các địa chỉ site-local và global
address để nối các router.
b. Các giao tiếp liên subnet:
Khi một máy phát hiện thấy có một router tồn tại trên subnet, thì quá trình tự
cấu hình có sự khác biệt, và cần các khái niệm sau: site-local address; subnet ID;
router solicitation message; router advertisement message; default router list cache;
destination cache; prefix list cache; redirect message; path MTU discovery.
· Trong và sau quá trình tự cấu hình thì PC đều phụ thuộc rất nhiều vào quá trình
IPv6 neighbor discovery protocol, để tìm các node trong cùng subnet và tìm các
router cho các đích đến các subnet khác.
· Trong quá trình tự cấu hình, sau khi P4C sinh ra một địa chỉ liên kết cục bộ
duy nhất thì nó sẽ query một router. PC sẽ gửi một gói tin được gọi là router
solicitation và một router sẽ phản hồi lại với một gói itn gọi là router advertisement.
Việc hiện diện của router nghĩa là có thể có các subnet khác kết nối với router.
Mỗi subnet phải có một subnet ID của nó vì việc định tuyến là dựa trên subnet ID.
Địa chỉ của PC bây giờ phải có một subnet ID duy nhất vì địa chỉ liên kết cục bộ
không còn đủ để sử dụng nữa. Để hỗ trợ quá trình stateless autoconfig thì router
advertisement sẽ chứa một subnet ID. Router advertisement của mỗi interface
sẽ chứa một subnet ID khác nhau. ID này sẽ được kết hợp với interface ID
để tạo địa chỉ IPv6. PC sẽ bỏ địa chỉ liên kết cục bộ của nó và cấu hình một địa
chỉ mới được gọi là site-local address, gồm 16 bit subnet ID có dạng:
FEC0:0:0:<subnet ID>:xxxx:xxxx:xxxx:xxxx
· PC sẽ sử dụng thôn tin từ router advertisement để cập nhật các cache của nó
. Subnet ID sẽ được thêm vào prefix list cache của PC. Cache này được sử dụng
để xem một địa chỉ có cùng subnet hay không với PC. Thông tin của router sẽ
được thêm vào neighbor cache và destination cache. Nếu router có thể được sử
dụng là một router mặc định thì một entry sẽ được thêm vào default router list cache.
· Khi PC đã sẵn sàng gửi packet cho đích, nó sẽ query prefix list để xem địa chỉ
đích có chung subnet với nó hay không. Nếu không thì packet sẽ được gửi cho
router trong default router list. PC sau đó sẽ cập nhật destination cache của nó với
một entry cho host đích và next hop của nó. Nếu default router được chọn không
phải là next hop tối ưu đến đích thì router sẽ gửi một Redirect message cho PC
nguồn với một next hop router tốt hơn đến đích. PC sau đó sẽ cập nhật destination
cache của nó với next hop mới cho đích đó. Các cache được duy trì bởi bởi mỗi
IPv6 host và được query trước khi các solicitation message được truyền, các
cache sẽ giúp giảm được số message và các cache này sẽ được cập nhật định kỳ.
· Để hỗ trợ các giao tiếp liên subnet thì IPv6 cung cấp một dích vụ hữu ích khác
là Path MTU discovery. IPv6 không cho phép các router phân mảnh các packet
quá lớn được truyền qua các liên kết của next hop, chỉ có các node nguồn mới
được phép phân mảnh packet. Sử dụng IPv6 Path MTU discovery, một node
nguồn có thể quyết định packet lớn nhất có thể được gửi đến đích. Với thông
tin về các MTU của các liên kết có trên những hop trung gian, node nguồn có
thể định lại kích thước cho các packet của nó một cách phù hợp để truyền.
c. Giao tiếp giữa các mạng:
Trong quá trình tự cấu hình stateless, mỗi node có trách nhiệm cấu hình địa chỉ
của chính nó và cache lại interface ID của nó và thông tin được cung cấp bởi
giao thức neighbor discovery. Trong một mạng nhỏ, quá trình này có ích lợi là
đơn giản và dễ dùng. Bất lợi của nó là quá dựa vào kỹ thuật multicast, sử dụng
không hiệu quả tầm địa chỉ và thiếu bảo mật, thiếu sự kiểm soát chính sách và
việc đăng nhập.
· Để hỗ trợ các giao tiếp giữa các mạng lớn hơn và phức tạp hơn thì ta phải
sử dụng quá trình tự cấu hình stateful. Để hiểu rõ hơn quá trình này, ta phải hiểu
rõ các khái niệm sau: stateful autodiscovery; DHCPv6; DHCPv6 client, relay,
agent, server.
· Stateful autoconfig dựa trên các server để cung cấp các thông tin cấu hình,
những server này được gọi là các DHCPv6 server. Tuy nhiên, với các nhà quản
trị thì stateful phức tạp hơn stateless vì nó yêu cầu các thông tin cấu hình phải
được thêm vào cơ sở dữ liệu của DHCPv6 server. Do đó, stateful có khả
năng mở rộng tốt hơn cho những mạng lớn.
· Stateful có thể được sử dụng đồng thời với stateless. Ví dụ: một node có thể
theo các quá trình stateless trong quá trình khởi động để lấy địa chỉ liên kết cục bộ.
Sau đó, nó có thể sử dụng stateful để lấy thêm các thông tin từ DHCPv6 server.
· Để lấy thông tin cấu hình thì PC phải xác định một DHCPv6 server bằng cách
gửi ra một DHCP solicit message hay bằng cách lắng nghe một DHCP advertisement.
PC sau đó sẽ gửi một unicast DHCPv6 Request. Nếu DHCPv6 server không ở
chung subnet với PC thì một DHCP relay hay agent sẽ forward yêu cầu cho một
server khác. Server sẽ hồi âm bằng một DHCPv6 Reply chứa thông tin cấu hình cho PC.
· Việc sử dụng DHCPv6 có nhiều ích lợi như:
+ Kiểm soát:DHCPv6 kiểm soát việc phân phối và gán các địa chỉ từ một điểm kiểm
soát tập trung.
+ Tóm tắt: do việc phân phối có thứ bậc nên có thể tóm tắt.
+ Renumbering: khi một ISP mới được chọn để thay thế cái cũ thì các địa chỉ mới có
thể dễ dàng được phân phối hơn với dịch vụ DHCPv6.
+ Bảo mật: một hệ thống đăng ký host có thể được sử dụng trong một dịch vụ
DHCPv6. Hệ thống đăng ký này có thể cung cấp một cách có chọn lựa các dịch
vụ mạng cho các host đăng ký và từ chối truy cập cho các host không đăng ký.
Chương II: Cách đặt địa chỉ trong IPv6
I. Các đặc tính:
1.Cấu trúc địa chỉ IPv6: địa chỉ IPv6 dài 128 bit gồm 8 phần ở dạng thập lục
phân được phân cách bởi các dấu hai chấm (:). Mỗi phần của nó sẽ dài 16 bit. IPv6
sử dụng dang thập lục phân, đây là thay đổi cơ bản so với IPv4 sử dụng dạng chấm
(dot). Nguyên nhân là do tầm địa chỉ IPv6 quá lớn nên không thể sử dụng dạng dot
vì sẽ rất dài (gấp 4 chiều dài của IPv4 hiện tại).
Một dạng chuẩn của một địa chỉ IPv6 sẽ có dạng: 2001:0010:3456:6EFD:00AC:0DEC:DDEE:EEDD
· IPv6 cung cấp 2 phương pháp để rút gọn việc ghi địa chỉ. Thứ nhất là việc bỏ
các số 0 đứng đầu và thứ hai là việc thay thế nhiều nhóm số 0 thành một dấu ::
Ví dụ: địa chỉ sau đây trước khi được rút gọn có dạng:
ADBF:0:0:0:0:000A:00AB:0ACD
Sau khi rút gọn theo cách 1:
ADBF:0:0:0:0:A:AB:ACD
Theo cách 2:
ADBF::A:AB:ACD
Chú ý: Dấu :: chỉ xuất hiện duy nhất một lần trong địa chỉ.
Để biểu diễn một địa chỉ IPv4 theo dạng IPv6, ta gán 6 phần đầu của địa chỉ
IPv6 bằng 0, 2 phần còn lại dài 32 bit được ghi theo kiểu IPv4. Ví dụ: IPv4
sẽ có dạng:
0:0:0:0:0:0.A.B.C.D
hay ::A.B.C.D
Ví dụ: ::192.168.1.1
2. Các loại địa chỉ: IPv6 có các loại địa chỉ sau: unicast, multicast và anycast.
a. Unicast: một địa chỉ unicast đại diện cho một host. Các địa chỉ unicast được
chia nhỏ thành những dạng sau: địa chỉ unicast khả tóm tắt toàn cục (AGU); địa
chỉ loopback; địa chỉ không xác định; interface ID; địa chỉ unicast cục bộ;
NSAP; IPX.
· AGU: là một cấu trúc giúp gán và phân phối các địa chỉ IPv6. Cấu trúc này
chia tầm địa chỉ ra làm 5 phần gồm: FP(Format prefix); Top level aggregation
identifier (TLA ID); next level aggregation identifier (NLA ID); site level
aggregation identifier (SLA ID); và interface ID.
+ FP: luôn là 001 để xác định địa chỉ này ở dạng địa chỉ khả định tuyến toàn cục.
Với mỗi loại địa chỉ IPv6 sẽ có một Format Prefix duy nhất để giúp các thiết bị định
tuyến dễ dàng xử lý địa chỉ hơn.
+ TLA-ID: cung cấp 8192 TLA, nghĩa là có thể có 8192 nhà cung cấp ở cấp này.
Các TLA ở cấp cao nhất của bảng phân cấp định tuyến. Các TLA sẽ đuợc gán
một trong 8192 TLA ID và sẽ có trách nhiệm phân phát các địa chỉ của mình
quản lý xuống cho các khách hàng.
+NLA-ID: là các ID cho các nhà cung cấp cấp 2, một NLA có thể là một tổ chức
có một kết nối với một TLA hay là một ISP. NLA sẽ được nhận một NLA-ID từ
TLA, và đến lượt nó, nó phải cung cấp địa chỉ của nó cho các khách hàng.
+ SLA-ID: SLA là mạng của khách hàng.
· Nhà cung cấp cao nhất cho các tầm địa chỉ IPv6 là Internet Assigned Number
Authority (IANA). IANA sẽ phân phối các tầm địa chỉ cho các Internet Registry
(IR) ở từng khu vực. Có 3 IR là: ARIN; RIPE Network Cordination Centre
(NCC); và APNIC. ARIN thuộc khu vực châu Mỹ, Caribê, và một phần châu Phi;
RIPE NCC quản lý châu Âu, Trung Đông, và phần còn lại của châu Phi; APNIC
quản lý khu vực châu Á Thái Bình Dương. Các IR sẽ chia tầm TLA thành những
tầm TLA con, giúp phân phối địa chỉ theo quy luật sau:
+ IR sẽ gán các địa chỉ cho các TLA con (TLA ISP).
+ TLA ISP sẽ gán các địa chỉ NLA cho các NLA ISP.
+ NLA ISP sẽ gán các SLA cho khách hàng.
· Địa chỉ loopback: không phải là một địa chỉ, có dạng: 0:0:0:0:0:0:0:1 hay :
:1. Được sử dụng để kiểm tra.
· Interface ID: để tạo các địa chỉ EUI-64 từ địa chỉ MAC, ta thực hiện
các bước sau:+ Thêm FF-FE vào giữa các byte 3 và 4 của địa chỉ MAC.
+ Lấy bù bit “Universal/Local”(U/L), là bit thứ 7 kể từ trái sang của địa chỉ MAC.
Ví dụ: Ta có địa chỉ MAC: 0008:749B:3CF4
Bước 1: Thêm FF-FE vào giữa byte thứ 3,4 của địa chỉ MAC:
Là thêm vào giữa 74 và 9B:
0008:74FF:FE9B:3CF4
Bước 2: Lấy bù bit U/L của byte đầu tiên:
Byte đầu tiên là 00:
00000000=00000010=02h
Vậy ta có EUI-64 từ MAC trên là:
0208:74FF:FE9B:3CF4
· Địa chỉ sử dụng cục bộ: gồm 2 loại: địa chỉ liên kết cục bộ (được sử dụng
trên 1 liên kết) và địa chỉ site cục bộ (được sử dụng trong một site).
+ Địa chỉ liên kết cục bộ: chỉ có tác dụng trên một liên kết của router. Chỉ những
host và interface của router được kết nối vào cùng một subnet mới có được địa
chỉ liên kết cục bộ của segment đó. Router sẽ không quảng bá địa chỉ này.
Có dạng sau:
1111111010 0.......0 Interface I
10bit 54bit 64 bit
hay :FE80::/64
+ Site-local address: là địa chỉ chỉ có thể định tuyến được trong một site.
Nghĩa là các host được cấu hình với địa chỉ này có thể giao tiếp với các
host khác trong cùng một múi mạng nhưng không được định tuyến ra ngoài.
Site-local giống như địa chỉ private trong IPv4. Có dạng:
1111111011 0......0 subnet ID Interface
10 bit 38bit 16bit 64 bit
Hay: FEC0::/10
b. Subnet trong IPv6: IPv6 được chia nhỏ thành các prefix là TLA, subTLA,
NLA và SLA. Các ARIN, RIPE, APNIC phân phối các sub TLA cho các
nhà cung cấp TLA. Những nhà cung cấp này lại phân phối các tầm địa chỉ NLA
cho các nhà cung cấp nhỏ hơn...
Các tầm địa chỉ sau sẽ được phân phối cho các IR:
2001:0400::/23 cho ARIN
2001:0200::/23 cho APNIC
2001:0600::/23 cho RIPE
Chúng ta sẽ sử dụng ARIN làm ví dụ. Ta sẽ xem quy luật phân phối:
+ARIN sẽ phân phối các địa chỉ /35 cho các subTLA.
+TLA sẽ phân phối các tầm địa chỉ cho các NLA.
+Và các NLA sẽ phân phối một tầm địa chỉ /48 cho các SLA.
+Phân phối /64 cho các SLA chỉ có một subnet.
+Phân phối /128 cho các SLA với chỉ 1 subscriber.
Ví dụ: ARIN có được tầm địa chỉ 2001:0420::/23, sẽ phân phối xuống
cho các subTLA: subTLA1 có tầm 2001:0420::/35; subTLA2 có tầm
2001:0428::/35. Việc phân phối này cho phép các subTLA subnet tầm
địa chỉ được phân để phân phối xuống cho các NLA:
· SubTLA1 sẽ cung cấp các prefix cho các NLA:
2001:0420:0001::/48
2001:0420:0002::/48
· SubTLA2 sẽ cung cấp cho các NLA:
2001:0428:0001::/48
2001:0428:0002::/48
· Mỗi NLA lại subnet và phân phối cho các SLA; với NLA
có tầm địa chỉ 2001:0420:0001::/48 có thể phân phối các địa
chỉ sau:
2001:0420:0001:1::/48
2001:0420:0001:2::/48
èsử dụng cách phân phối này, ta chỉ cần quản l tầm địa chỉ ở mỗi cấp, vì vậy
giảm được kích thước bảng định tuyến.
c. Địa chỉ multicast: Có cấu trúc như sau:
11111111 flag scope groupID
8bit 4bit 4bit 112bit
· Flag: là trường 4 bit, trong đó chỉ sử dụng bit thứ tư (ba bit đầu không
sử dụng) để xác định xem đây là địa chỉ thường được sử dụng (permanent)
hay không. Nếu bit đó bằng 0 thì nghĩa là permanent và 1 nghĩa là
non-permanent. Các địa chỉ permanent là do một tổ chức quốc tế gán.
· Trường scope: được sử dụng để xác định phạm vi của group, gồm các giá trị sau:
1- Node-local scope
2- Linl-local scope
5-site-local scope
8-organization-local scope
E-global scope
GroupID: xác định ID của group.
Các địa chỉ thường dung:
a. Node-local scope: FF01:0:0:0:0:0:0:1(địa chỉ cho tất cả
các node); FF01:0:0:0:0:0:0:2(tất cả router).
b. Link-local scope:
FF02::1-tất cả các node
FF02::2-tất cả router
FF02::4-DVMRP router
FF02::5-tất cả OSPF IGP router
FF02::6-tất cả OSPF IGP DR
FF02::7-ST router
FF02::8-ST host
FF02::9-RIP router
FF02::A-EIGRP router
FF02::B-mobile agent
FF02::D-PIM router
FF02::1:2-DHCP agent
FF02::1:FFxx:xxx-solicited node address
c. Site-local scope:
FF05::2-tất cả router
FF05::1:3-tất cả DHCP server
d. Địa chỉ anycast: bất cứ địa chỉ nào được gán cho nhiều hơn 1
interface thì được xem là địa chỉ anycast. Các packet được gửi
đến một địa chỉ anycast sẽ được định tuyến đến interface gần
nhất có địa chỉ đó. Anycast không khác unicast. Do đó, router
phải được cấu hình để xử l những gói tin anycast. Địa chỉ này
có dạng:
Subnet prefix 0….0
n bit 128-n bit
* Có 2 loại địa chỉ anycast được giành sẵn. Định dạng của những địa chỉ
này phụ thuộc vào lọai địa chỉ IPv6 được cấu hình. Định dạng này được quyết
định bằng cách xét định dạng prefix. Quy luật là nếu các bit đầu tiên của 1 địa
chỉ là 000 thì interface ID có thể có chiều dài không cố định, còn nếu các bit đầu
không phải là 000 thì interface ID phải là 64 bit.
Ví dụ: Lọai địa chỉ anycast có 64 bit interface ID có dạng:
Subnet Prefix 111…111 Anyast ID
n bit 121-n 7 bit
Interface ID của lọai này tùy thuộc vào chiều dài của subnet ID.
· Các địa chỉ anycast này không được sử dụng để gán cho
các interface. Hiện nay chỉ có 3 Anycast ID là: 7E (làm địa chỉ
của home-agent trong mibile IPv6); 7F, và 00.
· Ví dụ: Nếu ta viết interface ID của IPv6 home agent, ta sẽ viết:
1111110111111111 111….111 1…10=111111011…111 1111110
57bit 7bit=FE
Chương 3: IPv6 Header
I. Phân tích:
IPv6 header có kích thước cố định. Trong khi IPv4 header có kích thước
thay đổi. Với kích thước cố định thì một router có thể xử lý gói tin một cách hiệu quả.
IPv6 header lưu các thông tin cần thiết để định tuyến và phân phát gói tin
đến đích. Các header sẽ được xử lý bởi mỗi node trên đường đến đích.
4 bit đầu tiên là version được sử dụng để xác định version của giao thức
IP đang được sử dụng và nó có giá trị là 6 với IPv6. Trường này rất quan
trọng vì nó cho phép cả hai giao thức cùng tồn tại trên một segment mà
không xảy ra đụng độ.
Hai trường tiếp theo là traffic class và flow label được sử dụng để cung
cấp các kiểu chất lượng dịch vụ (QoS) dạng diffServe và cung cấp sự
hỗ trợ các ứng dụng có yêu cầu xử lý đặc biệt theo từng luồng dữ liệu.
Trường traffic class có tác dụng như trường Type of Service (ToS)
của IPv4, được sử dụng để ưu tiên traffic. Trường flow label kết hợp
với địa chỉ nguồn và đích giúp xác định luồng traffic có yêu cầu được
xử lý đặc biệt bởi các router trên đường. Khi một router xác định dòng
traffic lần đầu, nó sẽ nhớ dòng traffic đó, cũng như các xử lý đặc biệt ứng
với traffic này, và khi các traffic khác thuộc dòng này đến, nó sẽ xử lý
nhanh hơn là xử lý từng packet.
Trường payload 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 (không chứa header).
Trường next header được sử dụng để xác định header tiếp theo sau
IPv6 header. Mục đích của trường nay giống với trường protocol bên
IPv4.
Trường hop limit đượ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) bên IPv4.
II.So sánh IPv6 và IPv4 header:
IPv6 header có một vài điểm chung so với IPv4, chúng ta sẽ phân tích lại
IPv4 header để xem xét sự giống và khác nhau giữa chúng cũng như thấy
được sự cải tiến trong nội dung header của IPv6.
- Version: giống ở IPv6
- Header length: xác định kích thước header tùy thuộc vào
trường Option. Trường này không có ở IPv6 vì IPv6 header
có kích thước cố định.
- Type of service (ToS): tương tự như traffic class bên IPv6.
- Total length: giống với payload length bên IPv6.
- Identification, flags, fragment offset: được sử dụng để xử lý
việc phân mảnh và kết hợp các gói tin. Ở IPv4, một hop trung
gian có thể phân mảnh một packet khi kích thước lớn hơn MTU
của hop đó. Không giống với IPv4, việc xử lý phân mảnh trong
IPv6 xảy ra chỉ trên node nguồn bằng việc sử dụng kỹ thuật
gọi là path MTU. Do đó, thông tin liên quan đến việc phân mảnh
sẽ được mã hoá trong header “fragmentation” (là một header mở
rộng của gói tin IPv6).
- TTL: giống như hop limit bên IPv6.
- Protocol: tương tự như next header bên IPv6.
- Header checksum: được sử dụng để đảm bảo sự toàn vẹn
của IPv6 header. Tuy nhiên, ở lớp trên lại tính lại checksum cho
toàn packet nên việc tính header checksum là dư thừa, nên trong
IPv6 header không có trường này.
- Options: trường này được được mã hoá trong các header mở
rộng bên IPv6.
III. Header mở rộng của IPv6:
Các header mở rộng được đặt giữa IPv6 header và header của các giao
thức lớp trên, được sử dụng để mang các thông tin tuỳ chọn ở lớp Internet
trong packet. Một IPv6 packet có thể chứa một hay nhiều header mở rộng.
Mỗi header mở rộng sẽ có giá trị đại diện cho nó. Ví dụ: TCP (6); UDP (7);
Routing header (43); Fragment header (44); ESP (50); AH (51); ICMP (58)...
IPv6 có thể được thực thi đầy đủ với các header mở rộng sau:
hop-by-hop option; routing; fragment; destination option; authentication
và ESP. Khi có nhiều header cùng tồn tại trong một packet thì chúng nên
theo thứ tự sau:
- IPv6 header
- Hop-by-hop option (0)
- Destination option header (60) (được xử lý bởi mọi node
có xuất hiện trong Routing header)
- Routing header (43)
- Fragment header (44)
- Authentication header (51)
- Encapsulating security payload (ESP) header (50)
- Destination option header (60) (chỉ được xử lý bởi đích của gói tin)
- Upper layer header.
Trừ destination option header ra, các header khác đều xuất hiện một
lần trong packet. Destination option header chứa thông tin được xử lý
bởi đích cuối. Khi packet có chứa routing header, thì có thể sẽ có thêm
một Destination option header nữa được sử dụng để xác định rằng
packet này nên được xử lý bởi tất cả các node trung gian được liệt
kê trong routing header.
Khi IPv4 có chứa trường Option thì tất cả các hop trung gian đều phải
xử lý gói tin nên làm tăng độ trễ truyền cho gói tin.
Chỉ trừ header Hop-by-hop option, còn các header còn lại chỉ được xử
lý bởi node đích của packet. Hop-by-hop option header chứa các thông
tin tuỳ chọn mà cần được xử lý bởi tất cả các node trung gian.
Giá trị của trường next header xác định hành động kế tiếp được xử lý,
do đó các header mở rộng phải được xử lý theo thứ tự mà chúng xuất
hiện trong các packet. Khi một node nhận được một giá trị next header
mà nó không biết, nó sẽ bỏ gói tin và gửi một gói tin được gọi là ICMP
parameter problem cho nguồn của gói tin.
Hiện tại, hop-by-hop option header và destination option header sẽ chứa
một số các tùy chọn được mã hoá ở dạng Type-Length-Value (TLV).
Loại tùy chọn được mã hoá sao cho 2 bit cao nhất sẽ xác định hành động
mà node sẽ làm nếu nó không nhận ra loại tuỳ chọn và bit thứ 3 sẽ xác
định dữ liệu tuỳ chọn có thể thay đổi đường đi để đến đích cuối của packet
hay không. Ví dụ: khi một node xác định một giá trị kiểu tuỳ chọn là 130
(10000010), 2 bit cao nhất là 10 (nghĩa là bỏ packet và gửi một ICMP
parameter problem cho nguồn của gói tin). Các giá trị 2 bit đầu như sau:
00-bỏ qua option này và tiếp tục xử lý header
01-bỏ qua packet
10-bỏ qua packet và gửi ICMP parameter problem
11-bỏ qua packet và nếu đích của packet không phải là multicast
thì mới gửi ICMP parameter problem.
Bit thứ 3 bằng 0 là không cho phép dữ liệu tuỳ chọn thay đổi đường
đến đích và bằng 1 là cho phép thay đổi.
1. Hop-by-hop option header:
Là header chứa thông tin tùy chọn được xử lý bởi tất cả các node
trung gian. Nó có dạng:
Loại tuỳ chọn của tùy chọn cảnh báo router (Router Alert option) là 5
(0000 0101) xác định rằng các node nếu không nhận ra tùy chọn này
có thể bỏ qua nó và tiếp tục xử lý header, và dữ liệu tuỳ chọn không
được thay đổi đường đi. Kích thước của tùy chọn là 2. Ví dụ: hình sau
sẽ mô tả một packet gồm một router alert hop-by-hop option
2. Routing header:
Là header cho phép nguồn quyết định những đường để đến đích bằng
cách liệt kê một hay nhiều các node mà nó sẽ đi qua. Nó có dạng:
Khi một node xác định kiểu định tuyến mà nó không biết và giá trị của
segment left bằng 0, nó sẽ bỏ qua routing header và tiếp tục xử lý
header. Tuy nhiên nếu segment left khác 0 thì node sẽ bỏ gói tin và
gửi ICMP parameter problem đến nguồn. Hiện nay, chỉ có kiểu định
tuyến bằng 0 mới được định nghĩa và nó có dạng:
Tác dụng khác của routing header là để giao tiếp với một node di
động ở xa home network của nó mà không cần định tuyến tam giác.
Nếu không cần tối ưu đường thì packet có thể được gửi đến home
network của node di động và sau đó sẽ được home agent truyền đi,
tạo nên định tuyến tam giác. Do đó, nguồn của kết nối có thể xác
định đường đi bằng cách sử dụng routing header lọai 0 và cho phép
nguồn xác định đường mà không cần định tuyến tam giác.
Ví dụ: Với kết nối giữa node nguồn s và node đích d qua 2 router trung
gian r1, r2 thì s có thể tạo IPv6 packet với routing header như sau:
Ta thấy, ở hình (a) trường đích là r1 mà không phải là node d,
nguyên nhân là do, vì chỉ trừ hop-by-hop option header là được
xử l bởi tất cả các node trung gian trên đường đi tới đích, các header
còn lại chỉ được xử l bởi duy nhất node đích của packet, do đó, đích
của gói tin phải là router r1, sau khi xem xét IPv6 header, nó sẽ tiếp tục
xử lý header mở rộng, lúc đó, r1 sẽ xử lý routing header mà node s gửi
cho nó: địa chỉ đầu của routing header là router tiếp theo trên đường đi
(r2) theo sau là node đến cuối cùng. Router r1 sẽ giảm trường segment
left và hóan đổi các giá trị của trường destination trong IPv6 header
với trường first address trong routing header, và gửi cho r2. Hình b
miêu tả packet mà r1 gửi cho r2. Tương tự như vậy, sau khi xem xét
IPv6 header, r2 sẽ tiếp tục xử lý routing header (vì trường đích là r2
nên r2 được phép mở routing header), r2 sẽ giảm segment left và hóan
đổi trường destination với địa chỉ thứ 2 trong routing header.
Khi xử lý routing header, index của địa chỉ để có thể hóan chuyển với
trường đích được tính như sau:
(Header extension length%2)-(Segment left -1)
Header Extension header=2*(số địa chỉ có trong routing header)
Do đó, Hdr Ext length không được lẻ, nếu l3 thì node đang xử
lý sẽ gửi gói tin ICMP parameter problem về node nguồn.
Khi segment left giảm tới 0 thì node đang xử l routing header sẽ được
xem như node đích của gói tin và nó sẽ tiếp tục xử lý các header khác
trong packet mà không gửi gói tin đi nữa.
3. Fragment header:
Ở IPv4 thì trường total length trong header sẽ giới hạn kích thước tối
đa của 1 packet là 64 kB. Tuy nhiên, phụ thuộc vào kỹ thuật được sử
dụng mà kích thước thật của packet có thể được giới hạn lại. Do đó,
nếu packet quá lớn thì IP có nhiệm vụ phân mảnh packet để đảm
bảo kích thước packet không vượt quá MTU. Do đó, dữ liệu của
người dùng được gửi trong một packet từ một nguồn có thể đến đích
trong nhiều packet nếu có 1 liên kết có MTU nhỏ hơn MTU của
node nguồn. Tuy nhiên việc phân mảnh này sẽ không tối ưu.
Ví dụ: giả sử, ta gửi 1 ứng dụng 3000 byte từ nguồn có MTU là
3000 byte, khi gửi đến liên kết tiếp theo có MTU=1500 byte, do
đó, packet phải bị chia đôi, sau đó lại gửi đến liên kết tiếp theo
nữa có MTU là 1000 byte thì gói tin lại phải chia làm 4 phân: 2
phần 1000 và 2 phần 500. Do đó, không tối ưu. Nếu nguồn biết
được MTU thì nó có thể chỉ cần chia gói tin ra làm 3 phần, mỗi
phần 1000byte ngay từ đầu. Ở IPv6 thì node nguồn sẽ tìm ra MTu
nhỏ nhất trên đường đi và thực hiện việc phân mảnh tối ưu. Trước
khi phân mảnh thì gói tin gốc sẽ gồm 2 phần: phần có thể phân mảnh
và phần không thể phân mảnh. Trong đó, IPv6 header và các header
mở rộng (được xử l bởi node đích) là có thể phân mảnh. Hình sau
sẽ mô tả quá trình phân mảnh trong IPv6:
Fragment header có dạng:
4.Authentication header:
Trong một mạng IP, cả trong IPv4 và IPv6 thì header này được sử
dụng để cung cấp sự toàn vẹn dữ liệu và xác minh nguồn gốc của
dữ liệu. Trong mạng IPv6, AH cung cấp sự xác thực cho IPv6 header,
các header của các giao thức lớp trên và dữ liệu người dùng, cũng
như các header mở rộng không được phép thay đổi trên đường đi.
Định dạng của AH được mô tả trong hình sau:
Trường sequence number được sử dụng để cung cấp sự bảo vệ chống lại
sự nghe lén dữ liệu. Khi một Security Association (SA) được thiết lập giữa
nguồn và đích thì các bộ đếm ở bên gửi và bên nhận sẽ được thiết lập là 0.
Do đó, bắt buộc bên gửi phải tăng trường này qua mỗi lần truyền, tuy nhiên,
bên nhận có thể không xử lý việc truyền này. Dịch vụ này chỉ hiệu quả nếu
bên nhận xử lý trường này.
Trường xác thực dữ liệu chứa Integrity Check Value(ICV) cho packet.
Giải thuật xác minh (được lựa chọn khi SA được thiết lập giữa bên gửi và
bên nhận) sẽ xác định kích thước của ICV, các quy tắc so sánh, và các
bước xử lý cần thiết. Giá trị này được tính trên gói tin bởi node nguồn và
được xác minh bởi node đích (bằng cách so sánh giá trị trong packet nhận
được với cái mà nó tính ra).
AH có thể được sử dụng ở trạng thái transport hay tunnel. AH ở transport
mode được thực thi ở các host, cung cấp sự bảo vệ cho các header ở lớp
trên và các trường trong IPv6 header. Còn AH ở tunnel mode được áp vào
gói tin IPv6 gốc, bao đóng gói tin gốc bằng cách xây dựng một gói tin IPv6
mới sử dụng các địa chỉ IPv6 riêng, như một gateway bảo mật.
Ở transport mode, AH được xem như một end-to-end payload và được
đặt sau IPv6 header và các header mở rộng trừ destination option header.
Hình sau mô tả AH hoạt động ở transport mode:
Trong tunnel mode, AH được áp vào gói tin IPv6 ban đầu sử dụng các địa
chỉ IPv6 khác như những điểm giao tiếp và một IPv6 header mới được xây
dựng sử dụng các địa chỉ của các gateway bảo mật cho các địa chỉ nguồn
và đích . Quá trình xử lý phân mảnh có thể được áp vào AH. Hình sau sẽ
mô tả thứ tự của các header khi áp AH ở tunnel mode vào:
5.Encapsulating security payload:
ESP header được sử dụng ở transport mode hay tunnel mode cũng cung
cấp các dịch vụ bảo mật trong các mạng IPv4 và IPv6. Các dịch vụ bảo
mật qua ESP gồm xác thực nguồn gốc dữ liệu, dịch vụ anti-replay...Sự
thực thi và các tuỳ chọn được chọn ở thời điểm thiết lập SA sẽ quyết
định các dịch vụ bảo mật được sử dụng.
Trong trường hợp của AH khi cung cấp dịch vụ anti-replay, nguồn sẽ
tăng sequence number tuy nhiên node đích phải kiểm tra trường nay để
bật dịch vụ anti-replay. Để cung cấp dịch vụ xác thực nguồn traffic thì
thông tin về nguồn và đích thực phải được che đi. Do đó, dịch vụ này
yêu cầu ESP header được sử dụng trong tunnel mode. Hình sau sẽ mô
tả định dạng của ESP header. Giá trị next header của header trước nếu
bằng 50 nghĩa là header tiếp theo được xử lý chính là ESP header.
Trường payload data chứa dử liệu đã được mã hoá được mô tả bởi
trường next header. Giải thuật mã hoá được sử dụng xác định kích
thước và vị trí của cấu trúc dữ liệu trong trường payload data.
Khi hoạt động ở transport mode thì thứ tự của các header trong IPv6
packet sẽ như sau:
Và ở tunnel mode sẽ có thứ tự như sau:
Chương I: Giới thiệu về cấu trúc của IPv6
ỊLợi ích của IPv6:
Một trong những lý do chính để phát triển một phiên bản mới của IP đó
là việc địa chỉ IPv4 lớp B đang hết dần. 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.
Hình 1: Tầm địa chỉ IPv4
Bên cạnh đó, do sự phát triển ngày một lớn của bảng định tuyến ở
backbone. Sau đây là hình mô tả kích thước của bảng định tuyến được
nở dần ra theo các năm.
Hình 2:Kích thước bảng định tuyến
Các vấn đề về bảo mật, các tùy chọn của IP và hiệu suất định tuyến.
Các ích lợi của IPv6 gồm: Tăng kích thước của tầm địa chỉ IP; tăng
sự phân cấp địa chỉ; đơn giản hoá địa chỉ host (địa chỉ được thống
nhất là: toàn cục, site và cục bộ) ; đơn giản hoá
việc tự cấu hình địa chỉ (gồm DHCPv6 và neighbor discovery thay
cho ARP broadcast); tăng độ linh hoạt cho định tuyến multicast; có
thêm địa chỉ anycast; header được sắp xếp hợp lý; tăng độ bảo mật
(vì có thêm các header mở rộng về
bảo mật giúp bảo đảm sự toàn vẹn dữ liệu); có tính di động tốt hơn
(home agent; care-of-address; và header định tuyến mở rộng); hiệu
suất tốt hơn (việc tóm tắt địa chỉ; giảm ARP broadcast; giảm sự phân
mảnh gói tin; không có header checksum; QoS được tích hợp sẵn...).
1. Tăng kích thước của tầm địa chỉ:
IPv6 sử dụng 128 bit địa chỉ trong khi IPv4 chỉ sử dụng 32 bit; nghĩa là IPv6 có
tới 2128 địa chỉ khác nhau; 3 bit đầu luôn là 001 được giành cho các địa chỉ khả
định tuyến toàn cầu (Globally Routable Unicast –GRU). Nghĩa là còn lại 2125 địa
chỉ, nghĩa là có khoảng 4,25.1037 địa chỉ, trong khi IPv4 chỉ có tối đa 3,7.109
địa chỉ, nghĩa là IPv6 sẽ chứa 1028 tầm địa chỉ IPv4.
2.Tăng sự phân cấp địa chỉ:
IPv6 chia địa chỉ thành một tập hợp các tầm xác định hay boundary:Ba bit đầu cho
phép biết được địa chỉ có thuộc địa chỉ khả định tuyến toàn cầu (GRU) hay không,
giúp các thiết bị định tuyến có thể xử lý nhanh hơn. Top level aggregation (TLA) ID
được sử dụng vì 2 mục đích: thứ nhất, nó được sử dụng để chỉ định một khối địa chỉ
lớn mà từ đó các khối địa chỉ nhỏ hơn được tạo ra để cung cấp sự kết nối cho những
địa chỉ nào muốn truy cập vào Internet; thứ hai, nó được sử dụng để phân biệt một
đường (route) đến từ đâu. Nếu các khối địa chỉ lớn được cấp phát cho các nhà cung
cấp dịch vụ và sau đó được cấp phát cho khách hàng thì sẽ dễ dàng nhận ra các mạng
chuyển tiếp mà đường đó đã đi qua cũng như mạng mà từ đó route xuất phát.
Với IPv6, việc tìm ra nguồn của 1 route sẽ rất dễ dànNext level aggregator(NLA)
là một khối địa chỉ được gán bên cạnh khối TLA, những địa chỉ này được tóm tắt
lại thành những khối TLA lớn hơn, khi chúng được trao đổi giữa các nhà cung cấp
dịch vụ trong lõi internet, ích lợi của loại cấu trúc địa chỉ này là: thứ nhất là sự ổn
định về định tuyến, nếu chúng ta có 1 NLA và muốn cung cấp dịch vụ cho các
khách hàng, ta sẽ cố cung cấp dịch vụ đầy đủ nhất, tốt nhất; bên cạnh đó, chúng ta
cũng muốn cho phép các khách hàng của chúng ta nhận được đầy đủ bảng định
tuyến nếu họ muốn để tạo việc định tuyến theo chính sách; cân bằng tải... để thực
hiện việc này chúng ta phải mang tất cả các đường trong backbone để có thể chuyển
cho họ.
3.Đơn giản hoá việc đặt địa chỉ host: IPv6 sử dụng 64 bit sau cho địa chỉ host,và trong 64 bit đó thì có cả 48 bit là địa chỉ MAC của máy, do đó phải đệm vào đó một số bit đã được định nghĩa trước mà các thiết bị định tuyến sẽ biết được những bit này trên subnet, ngày nay, ta sử dụng chuỗi 0xFF và 0xFE (:FF:FE: trong IPv6) để đệm vào địa chỉ MAC. Bằng cách này, mọi host sẽ có một host ID duy nhất trong mạng. Sau này nếu đã sử dụng hết 48 bit MAC thì có thể sẽ sử dụng luôn 64 bit mà không cần đệm.
4.Việc tự cấu hình địa chỉ đơn giản hơn: một địa chỉ multicast có thể được gán cho nhiều máy, địa chỉ anycast là các gói anycast sẽ gửi cho đích gần nhất (một trong những máy có cùng địa chỉ) trong khi multicast packet được gửi cho tất cả máy có chung địa chỉ (trong một nhóm multicast).
Kết hợp host ID với multicast ta có thể sử dụng việc tự cấu hình như sau: khi một máy được bật lên, nó sẽ thấy rằng nó đang được kết nối và nó sẽ gửi một gói multicast vào LAN; gói tin này sẽ có địa chỉ là một địa chỉ multicast có tầm cục bộ(Solicited Node Multicast address). Khi một router thấy gói tin này, nó sẽ trả lời một địa chỉ mạng mà máy nguồn có thể tự đặt địa chỉ, khi máy nguồn nhận được gói tin trả lời này, nó sẽ đọc địa chỉ mạng mà router gửi, sau đó, nó sẽ tự gán cho nó một địa chỉ IPv6 bằng cách thêm host ID (được lấy từ địa chỉ MAC của interface kết nối với subnet đó) với địa chỉ mạng=>tiết kiệm được công sức
gán địa chỉ IP.
5.Tăng độ linh hoạt cho định tuyến multicast:
Đặt trường hợp: giám đốc muốn gửi một hội nghị truyền hình đến các nhân viên trong công ty mà không muốn gửi tất cả mọi người trong internet (chỉ gửi những người cần xem), lúc đó, IPv6 có một khái niệm về tầm vực multicast. Với IPv6, bạn có thể thiết kế một luồng multicast xác định chỉ được gửi trong một khu vực nhất định và không bao giờ cho phép các packet ra khỏi khu vực đó.
8 bit đầu luôn được thiết lập là 1 giúp các thiết bị định tuyến biết được gói tin này là một gói tin multicast. 4 bit sau là flag (hiện tại, 3 bit đầu không được định nghĩa và luôn là 0, bit thứ tư là T bit được sử dụng để quyết định xem địa chỉ multicast này là địa chỉ được gán lâu dài (được gọi là well-known) hay tạm thời (transient). 4 bit tiếp theo là scope, xác định gói tin multicast có thể đi bao xa, trong khu vực nào
thì gói tin được định tuyến; scope có thể có các giá trị sau: 1(có tầm trong nội bộ node); 2 (có tầm trong nội bộ liên kết); 5 (có tầm trong nội bộ site); 8 (có tầm trong nội bộ tổ chức); E (có tầm toàn cục).
Tuỳ vào cách gán địa chỉ multicast, chúng ta có thể kiểm soát các gói tin multicast
được đi bao xa, và các thông tin định tuyến kết hợp với các nhóm multicast được
quảng bá bao xa. Ví dụ: nếu chúng ta muốn quảng bá một multicast trong văn
phòng của ta, và muốn toàn thế giới thấy nó, ta sẽ gán tầm cho nó là E (110),
tuy nhiên, nếu bạn muốn tạo một nhóm multicast cho một hội nghị truyền hình
bạn có thể gán tầm là 5 hay 2.
6. Địa chỉ Anycast:
IPv6 định nghĩa một loại địa chỉ mới: anycast. Một địa chỉ anycast là một địa chỉ
IPv6 được gán cho một nhóm các máy có chung chức năng, mục đích. Khi
packet được gửi cho một địa chỉ anycast, việc định tuyến sẽ xác định thành viên
nào của nhóm sẽ nhận được packet qua việc xác định máy gần nguồn nhất.
Việc sử dụng anycast có 2 ích lợi: một là, nếu bạn đang đến một máy gần nhất
trong một nhóm, bạn sẽ tiết kiệm được thời gian bằng cách giao tiếp với máy
gần nhất; thứ hai là việc giao tiếp với máy gần nhất giúp tiết kiệm được băng
thông.
Địa chỉ anycast không có các tầm địa chỉ được định nghĩa riêng như multicast,
mà nó giống như một địa chỉ unicast, chỉ có khác là có thể có nhiều máy khác
cũng được đánh số với cùng scope trong cùng một khu vực xác định.
Anycast được sử dụng trong các ứng dụng như DNS...
7.Header hợp lý:
Header của IPv6 đơn giản và hợp lý hơn IPv4. IPv6 chỉ có 6 trường và 2 địa chỉ,
trong khi IPv4 chứa 10 trường và 2 địa chỉ. IPv6 header có dạng:
IPv6 cung cấp các đơn giản hoá sau:
· Định dạng được đơn giản hoá: IPv6 header có kích thước cố định
40 octet với ít trường hơn IPv4, nên giảm được overhead, tăng độ linh
hoạt.
· Không có header checksum: trường checksum của IPv4 được bỏ đi
vì các liên kết ngày nay nhanh hơn và có độ tin cậy cao hơn vì vậy chỉ cần
các host tính checksum còn router thì khỏi cần
· Không có sự phân mảnh theo từng hop: trong IPv4, khi các packet
quá lớn thì router có thể phân mảnh nó, tuy nhiên việc này sẽ làm tăng
thêm overhead cho packet. Trong IPv6 thì chỉ có host nguồn mới có thể
phân mảnh một packet theo các giá trị thích hợp dựa vào một MTU path
mà nó tìm được, do đó, để hỗ trợ host thì IPv6 chứa một hàm giúp tìm ra
MTU từ nguồn đến đích.
8.Bảo mật:
IPv6 tích hợp tính bảo mật vào trong kiến trúc của mình bằng cách giới thiệu
2 header mở rộng tùy chọn: Authentication header(AH) và Encrypted
Security Payload (ESP) header. Hai header này có thể được sử dụng chung
hay riêng để hỗ trợ nhiều chức năng bảo mật.
·AH: quan trọng nhất trong header này là trường Integriry Check Value
(ICU). ICU được tính bởi nguồn và được tính lại bởi đích để xác minh.
Quá trình này cung cấp việc xác minh tín toàn vẹn và xác minh nguồn
gốc của dữ liệu. AH cũng chứa cả một số thứ tự để nhận ra một tấn
công bằng các packet replay giúp ngăn các gói tin được nhân bản.
· ESP header: ESP header chứa một trường : security parameter index
(SPI) giúp đích của gói tin biết payload được mã hoá như thế nào. ESP
header có thể được sử dụng khi tunneling, khi tunnelling thì cả header
và payload gốc sẽ được mã hoá và bỏ vào một ESP header bọc ngoài,
khi đến gần đích thì các gateway bảo mật sẽ bỏ header bọc ngoài ra và
giải mã để tìm ra header và payload gốc.
9.Tính di động:
IPv6 hỗ trợ tốt các máy di động như laptop. IPv6 giới thiệu 4 khái niệm
giúp hỗ trợ tính toán di động gồm: Home address; care-of address;
binding; home agent.
Trong IPv6 thì các máy di động được xác định bởi một địa chỉ home
address mà không cần biết hiện tại nó được gắn vào đâu. Khi một máy
di động thay đổi từ 1 subnet này sang subnet khác; nó phải có một
care-of address qua một quá trình tự cấu hình. Sự kết hợp giữa home
address và care-of address được gọi là một binding. Khi một máy di
động nhận được 1 care-of address, nó sẽ báo cho home agent của nó
bằng gói tin được gọi là binding update để home agent có thể cập nhật
lại binding cache của home agent về care-of address của máy di động
vừa gửi. Home agent sẽ duy trì một ánh xạ giữa các home address và
care-of address và bỏ nó vào binding cache. Một máy di động có thể
được truy cập bằng cách gửi một packet đến các home address của nó.
Nếu máy di động không được kết nối trên subnet của home agent thì
home agent sẽ gửi packet đó cho máy di động qua care-of address
của máy đó trong binding cache của home agent (Lúc này,home agent
được xem như máy trung gian để máy nguồn có thể đến được máy di
động). Máy di động sau đó sẽ gửi một gói tin binding update cho máy
nguồn của gói tin. Máy nguồn sau đó sẽ cập nhật binding cache của nó,
thì sau này máy nguồn muốn gửi đến máy di động, chỉ cần gửi trực tiếp
đến cho máy di động qua care-of address chứa trong binding cache
của nó mà không cần phải gửi qua home address. Do đó chỉ có gói tin
đầu tiên là qua home agent.
10. Hiệu suất:
IPv6 cung cấp các lợi ích sau:
· Giảm được overhead vì chuyện dịch địa chỉ: vì trong IPv4 có sử
dụng private address để tránh hết địa chỉ, do đó xuất hiện kỹ thuật
NAT để dịch địa chỉ, nên tăng overhead cho gói tin. Trong IPv6 do
không thiếu địa chỉ nên không cần private address, nên không cần
dịch địa chỉ.
· Giảm được overhead do định tuyến: nhiều khối địa chỉ IPv4 được
phân phát cho các user nhưng lại không tóm tắt được, nên phải cần
các entry trong bảng định tuyến làm tăng kích thước của bảng định
tuyến và thêm overhead cho quá trình định tuyến, ngược lại, các địa
chỉ IPv6 được phân phát qua các ISP theo một kiểu phân cấp địa
chỉ giúp giảm được overhead.
· Tăng độ ổn định cho các đường: trong IPv4, hiện tượng route
flapping thường xảy ra, trong IPv6, một ISP có thể tóm tắt các router|
của nhiều mạng thành một mạng đơn và chỉ quản lý mạng đơn đó và
cho phép hiện tượng flapping chỉ ảnh hưởng đến nội bộ của mạng bị
flapping.
· Giảm broadcast: trong IPv4 sử dụng nhiều broadcast như ARP,
trong khi IPv6 sử dụng neighbor discovery để thực hiện chức năng
tương tự trong quá trình tự cấu hình mà không cần sử dụng broadcast.
· Multicast có giới hạn: trong IPv6, một địa chỉ multicast có chứa
một trường scope có thể hạn chế các gói tin multicast trong các node,
trong các link, hay trong một tổ chức.
· Không có checksum.
II. Cấu trúc của địa chỉ:
Địa chỉ unicast IPv6 có chiều dài 128 bit và được chia làm 2 phần: một subnet
prefix và interface ID. Với các địa chỉ khả định tuyến toàn cục AGU, thì cả
prefix và interface ID đều có chiều dài là 64 bit. Subnet prefix là địa chỉ mạng
được gán cho liên kết. Trong khi interface ID là địa chỉ MAC của node.
Trong quá trình tự cấu hình của IPv6, host sẽ cung cấp interface ID của nó từ
ROM và yêu cầu router cục bộ hay sử dụng DHCPv6 server để xác định
subnet prefix.
· Do địa chỉ MAC chỉ có 48 bit nên 16 bit trong interface ID sẽ được để giành.
IEEE có yêu cầu một địa chỉ MAC dài 64 bit được gọi là EUI-64.
· Quản lý địa chỉ: một địa chỉ khả định tuyến toàn cục sẽ có subnet prefix là 64
bit và subnet prefix này sẽ được chia nhỏ thành 5 trường:
Trường đầu tiên là trường format prefix(FP), giúp xác định một địa chỉ khả định
tuyến toàn cục (AGU) với giá trị nhị phân là 001. Trường thứ 3 chưa được dùng
đến và được để giành cho tương lai. Hai trường: TLA ID và NLA ID là quan
trọng nhất. TLA ID là top level aggregation identifier. Các địa chỉ toàn cục
IPv6 sẽ được gán cho các ISP hay các tổ chức dạng TLA. Các tổ chức TLA
sẽ tiếp tục phân phát các tầm địa chỉ này cho các tổ chức Next level aggregation
(NLA). Phương pháp phân phối địa chỉ theo thứ bậc này cho phép việc tóm tắt
địa chỉ để giảm kích thước của bảng định tuyến ở core. Còn với các nhà quản trị
mạng thì trường quan trọng nhất là site-level aggregation (SLA) ID. Không giống
với 2 trường kia, SLA ID thường sẽ không được gán sẵn giá trị khi cung cấp cho
các tổ chức. SLA ID cho phép 1 tổ chức định nghĩa các phân cấp địa chỉ trong
cơ quan của họ. 16 bit SLA ID có thể hỗ trợ lên đến 65535 subnet.
Bảng sau sẽ thể hiện sự so sánh về cấu trúc địa chỉ của IPv4 với IPv6:
III. Khảo sát cấu trúc mạng của IPv6:
1. Các vấn đề cơ bản về giao tiếp trong IPv6: chúng ta sẽ khảo sát cách các
thiết bị giao tiếp với nhau trong một mạng và cách IPv6 tham gia vào đó cũng như
khảo sát việc giao tiếp giữa 2 host/subnet, host với router...
a. Các giao tiếp trong một subnet: IPv6 được thiết kế theo kiểu “plug and play”.
Có hỗ trợ việc tự cấu hình. Để hiểu các giao tiếp trong một subnet, ta cần hiểu
các khái niệm sau: tự cấu hình phi trạng thái (stateless); địa chỉ liên kết cục bộ
(link-local); link-local prefix; Interface ID; Neighbor solicitation message; neighbor
advertisement message; neighbor cache.
· Nếu một mạng không có router, không có kết nối với internet, và không có cả
các server để hỗ trợ cho quá trình tự cấu hình thì các host trong mạng đó phải cấu
hình địa chỉ IPv6 của nó bằng một quá trình gọi là stateless autoconfiguration.
· Khi một máy kết nối với 1 port trên 1 subnet, máy sẽ tự cấu hình một địa chỉ
thử (tentative address) được gọi là địa chỉ liên kết cục bộ (link-local address).
Địa chỉ này có kích thước 128 bit gồm 1 prefix liên kết cục bộ và địa chỉ MAC
của máy; prefix liên kết cục bộ là một định danh toàn số 0 và theo dạng hex là
FE8. Một địa chỉ liên kết cục bộ có dạng sau: FE80:0:0:0:xxxx:xxxx:xxxx:xxxx
· Để đảm bảo địa chỉ đó là duy nhất thì máy sẽ gửi một gói tin đặc biệt là:
neighbor solicitation đến địa chỉ vừa cấu hình và đợi reply trong một giây.
Nếu không thấy thì máy sẽ xem địa chỉ đó là duy nhất trong mạng, nếu có
một gói tin neighbor advertisement message thì địa chỉ đó không duy nhất.
Sau khi xác định địa chỉ liên kết cục bộ là duy nhất, quá trình tiếp theo là
query các router lân cận trong mạng.
· Để giao tiếp với hoat đích trên mạng, máy phải tìm ra interface ID của máy
đích. Do đó, máy sẽ sử dụng chức năng được gọi là IPv6 Neighbor Discovery
protocol. Máy sẽ gửi một gói tin neighbor solicitation cho đích và interface ID
sẽ được gửi trả lại trong gói tin Neighbor advertisement. Interface ID sẽ được
bỏ vào header của IPv6 và truyền trên mạng. Máy sau đó sẽ thêm một entry
vào neighbor cache của nó. Entry đó sẽ chứa địa chỉ IPv6 của đích, interface
ID của nó , một con trỏ vào packet sắp truyền, và một flag để xác định đích
có phải là một router hay không. Cache này sẽ được sử dụng cho những lần
gửi sau mà không cần gửi lại gói tin solicitation.
· Địa chỉ liên kết cục bộ không thể được sử dụng để giao tiếp ra khỏi một
subnet. Với những giao tiếp liên subnet thì cần các địa chỉ site-local và global
address để nối các router.
b. Các giao tiếp liên subnet:
Khi một máy phát hiện thấy có một router tồn tại trên subnet, thì quá trình tự
cấu hình có sự khác biệt, và cần các khái niệm sau: site-local address; subnet ID;
router solicitation message; router advertisement message; default router list cache;
destination cache; prefix list cache; redirect message; path MTU discovery.
· Trong và sau quá trình tự cấu hình thì PC đều phụ thuộc rất nhiều vào quá trình
IPv6 neighbor discovery protocol, để tìm các node trong cùng subnet và tìm các
router cho các đích đến các subnet khác.
· Trong quá trình tự cấu hình, sau khi P4C sinh ra một địa chỉ liên kết cục bộ
duy nhất thì nó sẽ query một router. PC sẽ gửi một gói tin được gọi là router
solicitation và một router sẽ phản hồi lại với một gói itn gọi là router advertisement.
Việc hiện diện của router nghĩa là có thể có các subnet khác kết nối với router.
Mỗi subnet phải có một subnet ID của nó vì việc định tuyến là dựa trên subnet ID.
Địa chỉ của PC bây giờ phải có một subnet ID duy nhất vì địa chỉ liên kết cục bộ
không còn đủ để sử dụng nữa. Để hỗ trợ quá trình stateless autoconfig thì router
advertisement sẽ chứa một subnet ID. Router advertisement của mỗi interface
sẽ chứa một subnet ID khác nhau. ID này sẽ được kết hợp với interface ID
để tạo địa chỉ IPv6. PC sẽ bỏ địa chỉ liên kết cục bộ của nó và cấu hình một địa
chỉ mới được gọi là site-local address, gồm 16 bit subnet ID có dạng:
FEC0:0:0:<subnet ID>:xxxx:xxxx:xxxx:xxxx
· PC sẽ sử dụng thôn tin từ router advertisement để cập nhật các cache của nó
. Subnet ID sẽ được thêm vào prefix list cache của PC. Cache này được sử dụng
để xem một địa chỉ có cùng subnet hay không với PC. Thông tin của router sẽ
được thêm vào neighbor cache và destination cache. Nếu router có thể được sử
dụng là một router mặc định thì một entry sẽ được thêm vào default router list cache.
· Khi PC đã sẵn sàng gửi packet cho đích, nó sẽ query prefix list để xem địa chỉ
đích có chung subnet với nó hay không. Nếu không thì packet sẽ được gửi cho
router trong default router list. PC sau đó sẽ cập nhật destination cache của nó với
một entry cho host đích và next hop của nó. Nếu default router được chọn không
phải là next hop tối ưu đến đích thì router sẽ gửi một Redirect message cho PC
nguồn với một next hop router tốt hơn đến đích. PC sau đó sẽ cập nhật destination
cache của nó với next hop mới cho đích đó. Các cache được duy trì bởi bởi mỗi
IPv6 host và được query trước khi các solicitation message được truyền, các
cache sẽ giúp giảm được số message và các cache này sẽ được cập nhật định kỳ.
· Để hỗ trợ các giao tiếp liên subnet thì IPv6 cung cấp một dích vụ hữu ích khác
là Path MTU discovery. IPv6 không cho phép các router phân mảnh các packet
quá lớn được truyền qua các liên kết của next hop, chỉ có các node nguồn mới
được phép phân mảnh packet. Sử dụng IPv6 Path MTU discovery, một node
nguồn có thể quyết định packet lớn nhất có thể được gửi đến đích. Với thông
tin về các MTU của các liên kết có trên những hop trung gian, node nguồn có
thể định lại kích thước cho các packet của nó một cách phù hợp để truyền.
c. Giao tiếp giữa các mạng:
Trong quá trình tự cấu hình stateless, mỗi node có trách nhiệm cấu hình địa chỉ
của chính nó và cache lại interface ID của nó và thông tin được cung cấp bởi
giao thức neighbor discovery. Trong một mạng nhỏ, quá trình này có ích lợi là
đơn giản và dễ dùng. Bất lợi của nó là quá dựa vào kỹ thuật multicast, sử dụng
không hiệu quả tầm địa chỉ và thiếu bảo mật, thiếu sự kiểm soát chính sách và
việc đăng nhập.
· Để hỗ trợ các giao tiếp giữa các mạng lớn hơn và phức tạp hơn thì ta phải
sử dụng quá trình tự cấu hình stateful. Để hiểu rõ hơn quá trình này, ta phải hiểu
rõ các khái niệm sau: stateful autodiscovery; DHCPv6; DHCPv6 client, relay,
agent, server.
· Stateful autoconfig dựa trên các server để cung cấp các thông tin cấu hình,
những server này được gọi là các DHCPv6 server. Tuy nhiên, với các nhà quản
trị thì stateful phức tạp hơn stateless vì nó yêu cầu các thông tin cấu hình phải
được thêm vào cơ sở dữ liệu của DHCPv6 server. Do đó, stateful có khả
năng mở rộng tốt hơn cho những mạng lớn.
· Stateful có thể được sử dụng đồng thời với stateless. Ví dụ: một node có thể
theo các quá trình stateless trong quá trình khởi động để lấy địa chỉ liên kết cục bộ.
Sau đó, nó có thể sử dụng stateful để lấy thêm các thông tin từ DHCPv6 server.
· Để lấy thông tin cấu hình thì PC phải xác định một DHCPv6 server bằng cách
gửi ra một DHCP solicit message hay bằng cách lắng nghe một DHCP advertisement.
PC sau đó sẽ gửi một unicast DHCPv6 Request. Nếu DHCPv6 server không ở
chung subnet với PC thì một DHCP relay hay agent sẽ forward yêu cầu cho một
server khác. Server sẽ hồi âm bằng một DHCPv6 Reply chứa thông tin cấu hình cho PC.
· Việc sử dụng DHCPv6 có nhiều ích lợi như:
+ Kiểm soát:DHCPv6 kiểm soát việc phân phối và gán các địa chỉ từ một điểm kiểm
soát tập trung.
+ Tóm tắt: do việc phân phối có thứ bậc nên có thể tóm tắt.
+ Renumbering: khi một ISP mới được chọn để thay thế cái cũ thì các địa chỉ mới có
thể dễ dàng được phân phối hơn với dịch vụ DHCPv6.
+ Bảo mật: một hệ thống đăng ký host có thể được sử dụng trong một dịch vụ
DHCPv6. Hệ thống đăng ký này có thể cung cấp một cách có chọn lựa các dịch
vụ mạng cho các host đăng ký và từ chối truy cập cho các host không đăng ký.
Chương II: Cách đặt địa chỉ trong IPv6
I. Các đặc tính:
1.Cấu trúc địa chỉ IPv6: địa chỉ IPv6 dài 128 bit gồm 8 phần ở dạng thập lục
phân được phân cách bởi các dấu hai chấm (:). Mỗi phần của nó sẽ dài 16 bit. IPv6
sử dụng dang thập lục phân, đây là thay đổi cơ bản so với IPv4 sử dụng dạng chấm
(dot). Nguyên nhân là do tầm địa chỉ IPv6 quá lớn nên không thể sử dụng dạng dot
vì sẽ rất dài (gấp 4 chiều dài của IPv4 hiện tại).
Một dạng chuẩn của một địa chỉ IPv6 sẽ có dạng: 2001:0010:3456:6EFD:00AC:0DEC:DDEE:EEDD
· IPv6 cung cấp 2 phương pháp để rút gọn việc ghi địa chỉ. Thứ nhất là việc bỏ
các số 0 đứng đầu và thứ hai là việc thay thế nhiều nhóm số 0 thành một dấu ::
Ví dụ: địa chỉ sau đây trước khi được rút gọn có dạng:
ADBF:0:0:0:0:000A:00AB:0ACD
Sau khi rút gọn theo cách 1:
ADBF:0:0:0:0:A:AB:ACD
Theo cách 2:
ADBF::A:AB:ACD
Chú ý: Dấu :: chỉ xuất hiện duy nhất một lần trong địa chỉ.
Để biểu diễn một địa chỉ IPv4 theo dạng IPv6, ta gán 6 phần đầu của địa chỉ
IPv6 bằng 0, 2 phần còn lại dài 32 bit được ghi theo kiểu IPv4. Ví dụ: IPv4
sẽ có dạng:
0:0:0:0:0:0.A.B.C.D
hay ::A.B.C.D
Ví dụ: ::192.168.1.1
2. Các loại địa chỉ: IPv6 có các loại địa chỉ sau: unicast, multicast và anycast.
a. Unicast: một địa chỉ unicast đại diện cho một host. Các địa chỉ unicast được
chia nhỏ thành những dạng sau: địa chỉ unicast khả tóm tắt toàn cục (AGU); địa
chỉ loopback; địa chỉ không xác định; interface ID; địa chỉ unicast cục bộ;
NSAP; IPX.
· AGU: là một cấu trúc giúp gán và phân phối các địa chỉ IPv6. Cấu trúc này
chia tầm địa chỉ ra làm 5 phần gồm: FP(Format prefix); Top level aggregation
identifier (TLA ID); next level aggregation identifier (NLA ID); site level
aggregation identifier (SLA ID); và interface ID.
+ FP: luôn là 001 để xác định địa chỉ này ở dạng địa chỉ khả định tuyến toàn cục.
Với mỗi loại địa chỉ IPv6 sẽ có một Format Prefix duy nhất để giúp các thiết bị định
tuyến dễ dàng xử lý địa chỉ hơn.
+ TLA-ID: cung cấp 8192 TLA, nghĩa là có thể có 8192 nhà cung cấp ở cấp này.
Các TLA ở cấp cao nhất của bảng phân cấp định tuyến. Các TLA sẽ đuợc gán
một trong 8192 TLA ID và sẽ có trách nhiệm phân phát các địa chỉ của mình
quản lý xuống cho các khách hàng.
+NLA-ID: là các ID cho các nhà cung cấp cấp 2, một NLA có thể là một tổ chức
có một kết nối với một TLA hay là một ISP. NLA sẽ được nhận một NLA-ID từ
TLA, và đến lượt nó, nó phải cung cấp địa chỉ của nó cho các khách hàng.
+ SLA-ID: SLA là mạng của khách hàng.
· Nhà cung cấp cao nhất cho các tầm địa chỉ IPv6 là Internet Assigned Number
Authority (IANA). IANA sẽ phân phối các tầm địa chỉ cho các Internet Registry
(IR) ở từng khu vực. Có 3 IR là: ARIN; RIPE Network Cordination Centre
(NCC); và APNIC. ARIN thuộc khu vực châu Mỹ, Caribê, và một phần châu Phi;
RIPE NCC quản lý châu Âu, Trung Đông, và phần còn lại của châu Phi; APNIC
quản lý khu vực châu Á Thái Bình Dương. Các IR sẽ chia tầm TLA thành những
tầm TLA con, giúp phân phối địa chỉ theo quy luật sau:
+ IR sẽ gán các địa chỉ cho các TLA con (TLA ISP).
+ TLA ISP sẽ gán các địa chỉ NLA cho các NLA ISP.
+ NLA ISP sẽ gán các SLA cho khách hàng.
· Địa chỉ loopback: không phải là một địa chỉ, có dạng: 0:0:0:0:0:0:0:1 hay :
:1. Được sử dụng để kiểm tra.
· Interface ID: để tạo các địa chỉ EUI-64 từ địa chỉ MAC, ta thực hiện
các bước sau:+ Thêm FF-FE vào giữa các byte 3 và 4 của địa chỉ MAC.
+ Lấy bù bit “Universal/Local”(U/L), là bit thứ 7 kể từ trái sang của địa chỉ MAC.
Ví dụ: Ta có địa chỉ MAC: 0008:749B:3CF4
Bước 1: Thêm FF-FE vào giữa byte thứ 3,4 của địa chỉ MAC:
Là thêm vào giữa 74 và 9B:
0008:74FF:FE9B:3CF4
Bước 2: Lấy bù bit U/L của byte đầu tiên:
Byte đầu tiên là 00:
00000000=00000010=02h
Vậy ta có EUI-64 từ MAC trên là:
0208:74FF:FE9B:3CF4
· Địa chỉ sử dụng cục bộ: gồm 2 loại: địa chỉ liên kết cục bộ (được sử dụng
trên 1 liên kết) và địa chỉ site cục bộ (được sử dụng trong một site).
+ Địa chỉ liên kết cục bộ: chỉ có tác dụng trên một liên kết của router. Chỉ những
host và interface của router được kết nối vào cùng một subnet mới có được địa
chỉ liên kết cục bộ của segment đó. Router sẽ không quảng bá địa chỉ này.
Có dạng sau:
1111111010 0.......0 Interface I
10bit 54bit 64 bit
hay :FE80::/64
+ Site-local address: là địa chỉ chỉ có thể định tuyến được trong một site.
Nghĩa là các host được cấu hình với địa chỉ này có thể giao tiếp với các
host khác trong cùng một múi mạng nhưng không được định tuyến ra ngoài.
Site-local giống như địa chỉ private trong IPv4. Có dạng:
1111111011 0......0 subnet ID Interface
10 bit 38bit 16bit 64 bit
Hay: FEC0::/10
b. Subnet trong IPv6: IPv6 được chia nhỏ thành các prefix là TLA, subTLA,
NLA và SLA. Các ARIN, RIPE, APNIC phân phối các sub TLA cho các
nhà cung cấp TLA. Những nhà cung cấp này lại phân phối các tầm địa chỉ NLA
cho các nhà cung cấp nhỏ hơn...
Các tầm địa chỉ sau sẽ được phân phối cho các IR:
2001:0400::/23 cho ARIN
2001:0200::/23 cho APNIC
2001:0600::/23 cho RIPE
Chúng ta sẽ sử dụng ARIN làm ví dụ. Ta sẽ xem quy luật phân phối:
+ARIN sẽ phân phối các địa chỉ /35 cho các subTLA.
+TLA sẽ phân phối các tầm địa chỉ cho các NLA.
+Và các NLA sẽ phân phối một tầm địa chỉ /48 cho các SLA.
+Phân phối /64 cho các SLA chỉ có một subnet.
+Phân phối /128 cho các SLA với chỉ 1 subscriber.
Ví dụ: ARIN có được tầm địa chỉ 2001:0420::/23, sẽ phân phối xuống
cho các subTLA: subTLA1 có tầm 2001:0420::/35; subTLA2 có tầm
2001:0428::/35. Việc phân phối này cho phép các subTLA subnet tầm
địa chỉ được phân để phân phối xuống cho các NLA:
· SubTLA1 sẽ cung cấp các prefix cho các NLA:
2001:0420:0001::/48
2001:0420:0002::/48
· SubTLA2 sẽ cung cấp cho các NLA:
2001:0428:0001::/48
2001:0428:0002::/48
· Mỗi NLA lại subnet và phân phối cho các SLA; với NLA
có tầm địa chỉ 2001:0420:0001::/48 có thể phân phối các địa
chỉ sau:
2001:0420:0001:1::/48
2001:0420:0001:2::/48
èsử dụng cách phân phối này, ta chỉ cần quản l tầm địa chỉ ở mỗi cấp, vì vậy
giảm được kích thước bảng định tuyến.
c. Địa chỉ multicast: Có cấu trúc như sau:
11111111 flag scope groupID
8bit 4bit 4bit 112bit
· Flag: là trường 4 bit, trong đó chỉ sử dụng bit thứ tư (ba bit đầu không
sử dụng) để xác định xem đây là địa chỉ thường được sử dụng (permanent)
hay không. Nếu bit đó bằng 0 thì nghĩa là permanent và 1 nghĩa là
non-permanent. Các địa chỉ permanent là do một tổ chức quốc tế gán.
· Trường scope: được sử dụng để xác định phạm vi của group, gồm các giá trị sau:
1- Node-local scope
2- Linl-local scope
5-site-local scope
8-organization-local scope
E-global scope
GroupID: xác định ID của group.
Các địa chỉ thường dung:
a. Node-local scope: FF01:0:0:0:0:0:0:1(địa chỉ cho tất cả
các node); FF01:0:0:0:0:0:0:2(tất cả router).
b. Link-local scope:
FF02::1-tất cả các node
FF02::2-tất cả router
FF02::4-DVMRP router
FF02::5-tất cả OSPF IGP router
FF02::6-tất cả OSPF IGP DR
FF02::7-ST router
FF02::8-ST host
FF02::9-RIP router
FF02::A-EIGRP router
FF02::B-mobile agent
FF02::D-PIM router
FF02::1:2-DHCP agent
FF02::1:FFxx:xxx-solicited node address
c. Site-local scope:
FF05::2-tất cả router
FF05::1:3-tất cả DHCP server
d. Địa chỉ anycast: bất cứ địa chỉ nào được gán cho nhiều hơn 1
interface thì được xem là địa chỉ anycast. Các packet được gửi
đến một địa chỉ anycast sẽ được định tuyến đến interface gần
nhất có địa chỉ đó. Anycast không khác unicast. Do đó, router
phải được cấu hình để xử l những gói tin anycast. Địa chỉ này
có dạng:
Subnet prefix 0….0
n bit 128-n bit
* Có 2 loại địa chỉ anycast được giành sẵn. Định dạng của những địa chỉ
này phụ thuộc vào lọai địa chỉ IPv6 được cấu hình. Định dạng này được quyết
định bằng cách xét định dạng prefix. Quy luật là nếu các bit đầu tiên của 1 địa
chỉ là 000 thì interface ID có thể có chiều dài không cố định, còn nếu các bit đầu
không phải là 000 thì interface ID phải là 64 bit.
Ví dụ: Lọai địa chỉ anycast có 64 bit interface ID có dạng:
Subnet Prefix 111…111 Anyast ID
n bit 121-n 7 bit
Interface ID của lọai này tùy thuộc vào chiều dài của subnet ID.
· Các địa chỉ anycast này không được sử dụng để gán cho
các interface. Hiện nay chỉ có 3 Anycast ID là: 7E (làm địa chỉ
của home-agent trong mibile IPv6); 7F, và 00.
· Ví dụ: Nếu ta viết interface ID của IPv6 home agent, ta sẽ viết:
1111110111111111 111….111 1…10=111111011…111 1111110
57bit 7bit=FE
Chương 3: IPv6 Header
I. Phân tích:
IPv6 header có kích thước cố định. Trong khi IPv4 header có kích thước
thay đổi. Với kích thước cố định thì một router có thể xử lý gói tin một cách hiệu quả.
IPv6 header lưu các thông tin cần thiết để định tuyến và phân phát gói tin
đến đích. Các header sẽ được xử lý bởi mỗi node trên đường đến đích.
4 bit đầu tiên là version được sử dụng để xác định version của giao thức
IP đang được sử dụng và nó có giá trị là 6 với IPv6. Trường này rất quan
trọng vì nó cho phép cả hai giao thức cùng tồn tại trên một segment mà
không xảy ra đụng độ.
Hai trường tiếp theo là traffic class và flow label được sử dụng để cung
cấp các kiểu chất lượng dịch vụ (QoS) dạng diffServe và cung cấp sự
hỗ trợ các ứng dụng có yêu cầu xử lý đặc biệt theo từng luồng dữ liệu.
Trường traffic class có tác dụng như trường Type of Service (ToS)
của IPv4, được sử dụng để ưu tiên traffic. Trường flow label kết hợp
với địa chỉ nguồn và đích giúp xác định luồng traffic có yêu cầu được
xử lý đặc biệt bởi các router trên đường. Khi một router xác định dòng
traffic lần đầu, nó sẽ nhớ dòng traffic đó, cũng như các xử lý đặc biệt ứng
với traffic này, và khi các traffic khác thuộc dòng này đến, nó sẽ xử lý
nhanh hơn là xử lý từng packet.
Trường payload 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 (không chứa header).
Trường next header được sử dụng để xác định header tiếp theo sau
IPv6 header. Mục đích của trường nay giống với trường protocol bên
IPv4.
Trường hop limit đượ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) bên IPv4.
II.So sánh IPv6 và IPv4 header:
IPv6 header có một vài điểm chung so với IPv4, chúng ta sẽ phân tích lại
IPv4 header để xem xét sự giống và khác nhau giữa chúng cũng như thấy
được sự cải tiến trong nội dung header của IPv6.
- Version: giống ở IPv6
- Header length: xác định kích thước header tùy thuộc vào
trường Option. Trường này không có ở IPv6 vì IPv6 header
có kích thước cố định.
- Type of service (ToS): tương tự như traffic class bên IPv6.
- Total length: giống với payload length bên IPv6.
- Identification, flags, fragment offset: được sử dụng để xử lý
việc phân mảnh và kết hợp các gói tin. Ở IPv4, một hop trung
gian có thể phân mảnh một packet khi kích thước lớn hơn MTU
của hop đó. Không giống với IPv4, việc xử lý phân mảnh trong
IPv6 xảy ra chỉ trên node nguồn bằng việc sử dụng kỹ thuật
gọi là path MTU. Do đó, thông tin liên quan đến việc phân mảnh
sẽ được mã hoá trong header “fragmentation” (là một header mở
rộng của gói tin IPv6).
- TTL: giống như hop limit bên IPv6.
- Protocol: tương tự như next header bên IPv6.
- Header checksum: được sử dụng để đảm bảo sự toàn vẹn
của IPv6 header. Tuy nhiên, ở lớp trên lại tính lại checksum cho
toàn packet nên việc tính header checksum là dư thừa, nên trong
IPv6 header không có trường này.
- Options: trường này được được mã hoá trong các header mở
rộng bên IPv6.
III. Header mở rộng của IPv6:
Các header mở rộng được đặt giữa IPv6 header và header của các giao
thức lớp trên, được sử dụng để mang các thông tin tuỳ chọn ở lớp Internet
trong packet. Một IPv6 packet có thể chứa một hay nhiều header mở rộng.
Mỗi header mở rộng sẽ có giá trị đại diện cho nó. Ví dụ: TCP (6); UDP (7);
Routing header (43); Fragment header (44); ESP (50); AH (51); ICMP (58)...
IPv6 có thể được thực thi đầy đủ với các header mở rộng sau:
hop-by-hop option; routing; fragment; destination option; authentication
và ESP. Khi có nhiều header cùng tồn tại trong một packet thì chúng nên
theo thứ tự sau:
- IPv6 header
- Hop-by-hop option (0)
- Destination option header (60) (được xử lý bởi mọi node
có xuất hiện trong Routing header)
- Routing header (43)
- Fragment header (44)
- Authentication header (51)
- Encapsulating security payload (ESP) header (50)
- Destination option header (60) (chỉ được xử lý bởi đích của gói tin)
- Upper layer header.
Trừ destination option header ra, các header khác đều xuất hiện một
lần trong packet. Destination option header chứa thông tin được xử lý
bởi đích cuối. Khi packet có chứa routing header, thì có thể sẽ có thêm
một Destination option header nữa được sử dụng để xác định rằng
packet này nên được xử lý bởi tất cả các node trung gian được liệt
kê trong routing header.
Khi IPv4 có chứa trường Option thì tất cả các hop trung gian đều phải
xử lý gói tin nên làm tăng độ trễ truyền cho gói tin.
Chỉ trừ header Hop-by-hop option, còn các header còn lại chỉ được xử
lý bởi node đích của packet. Hop-by-hop option header chứa các thông
tin tuỳ chọn mà cần được xử lý bởi tất cả các node trung gian.
Giá trị của trường next header xác định hành động kế tiếp được xử lý,
do đó các header mở rộng phải được xử lý theo thứ tự mà chúng xuất
hiện trong các packet. Khi một node nhận được một giá trị next header
mà nó không biết, nó sẽ bỏ gói tin và gửi một gói tin được gọi là ICMP
parameter problem cho nguồn của gói tin.
Hiện tại, hop-by-hop option header và destination option header sẽ chứa
một số các tùy chọn được mã hoá ở dạng Type-Length-Value (TLV).
Loại tùy chọn được mã hoá sao cho 2 bit cao nhất sẽ xác định hành động
mà node sẽ làm nếu nó không nhận ra loại tuỳ chọn và bit thứ 3 sẽ xác
định dữ liệu tuỳ chọn có thể thay đổi đường đi để đến đích cuối của packet
hay không. Ví dụ: khi một node xác định một giá trị kiểu tuỳ chọn là 130
(10000010), 2 bit cao nhất là 10 (nghĩa là bỏ packet và gửi một ICMP
parameter problem cho nguồn của gói tin). Các giá trị 2 bit đầu như sau:
00-bỏ qua option này và tiếp tục xử lý header
01-bỏ qua packet
10-bỏ qua packet và gửi ICMP parameter problem
11-bỏ qua packet và nếu đích của packet không phải là multicast
thì mới gửi ICMP parameter problem.
Bit thứ 3 bằng 0 là không cho phép dữ liệu tuỳ chọn thay đổi đường
đến đích và bằng 1 là cho phép thay đổi.
1. Hop-by-hop option header:
Là header chứa thông tin tùy chọn được xử lý bởi tất cả các node
trung gian. Nó có dạng:
Loại tuỳ chọn của tùy chọn cảnh báo router (Router Alert option) là 5
(0000 0101) xác định rằng các node nếu không nhận ra tùy chọn này
có thể bỏ qua nó và tiếp tục xử lý header, và dữ liệu tuỳ chọn không
được thay đổi đường đi. Kích thước của tùy chọn là 2. Ví dụ: hình sau
sẽ mô tả một packet gồm một router alert hop-by-hop option
2. Routing header:
Là header cho phép nguồn quyết định những đường để đến đích bằng
cách liệt kê một hay nhiều các node mà nó sẽ đi qua. Nó có dạng:
Khi một node xác định kiểu định tuyến mà nó không biết và giá trị của
segment left bằng 0, nó sẽ bỏ qua routing header và tiếp tục xử lý
header. Tuy nhiên nếu segment left khác 0 thì node sẽ bỏ gói tin và
gửi ICMP parameter problem đến nguồn. Hiện nay, chỉ có kiểu định
tuyến bằng 0 mới được định nghĩa và nó có dạng:
Tác dụng khác của routing header là để giao tiếp với một node di
động ở xa home network của nó mà không cần định tuyến tam giác.
Nếu không cần tối ưu đường thì packet có thể được gửi đến home
network của node di động và sau đó sẽ được home agent truyền đi,
tạo nên định tuyến tam giác. Do đó, nguồn của kết nối có thể xác
định đường đi bằng cách sử dụng routing header lọai 0 và cho phép
nguồn xác định đường mà không cần định tuyến tam giác.
Ví dụ: Với kết nối giữa node nguồn s và node đích d qua 2 router trung
gian r1, r2 thì s có thể tạo IPv6 packet với routing header như sau:
Ta thấy, ở hình (a) trường đích là r1 mà không phải là node d,
nguyên nhân là do, vì chỉ trừ hop-by-hop option header là được
xử l bởi tất cả các node trung gian trên đường đi tới đích, các header
còn lại chỉ được xử l bởi duy nhất node đích của packet, do đó, đích
của gói tin phải là router r1, sau khi xem xét IPv6 header, nó sẽ tiếp tục
xử lý header mở rộng, lúc đó, r1 sẽ xử lý routing header mà node s gửi
cho nó: địa chỉ đầu của routing header là router tiếp theo trên đường đi
(r2) theo sau là node đến cuối cùng. Router r1 sẽ giảm trường segment
left và hóan đổi các giá trị của trường destination trong IPv6 header
với trường first address trong routing header, và gửi cho r2. Hình b
miêu tả packet mà r1 gửi cho r2. Tương tự như vậy, sau khi xem xét
IPv6 header, r2 sẽ tiếp tục xử lý routing header (vì trường đích là r2
nên r2 được phép mở routing header), r2 sẽ giảm segment left và hóan
đổi trường destination với địa chỉ thứ 2 trong routing header.
Khi xử lý routing header, index của địa chỉ để có thể hóan chuyển với
trường đích được tính như sau:
(Header extension length%2)-(Segment left -1)
Header Extension header=2*(số địa chỉ có trong routing header)
Do đó, Hdr Ext length không được lẻ, nếu l3 thì node đang xử
lý sẽ gửi gói tin ICMP parameter problem về node nguồn.
Khi segment left giảm tới 0 thì node đang xử l routing header sẽ được
xem như node đích của gói tin và nó sẽ tiếp tục xử lý các header khác
trong packet mà không gửi gói tin đi nữa.
3. Fragment header:
Ở IPv4 thì trường total length trong header sẽ giới hạn kích thước tối
đa của 1 packet là 64 kB. Tuy nhiên, phụ thuộc vào kỹ thuật được sử
dụng mà kích thước thật của packet có thể được giới hạn lại. Do đó,
nếu packet quá lớn thì IP có nhiệm vụ phân mảnh packet để đảm
bảo kích thước packet không vượt quá MTU. Do đó, dữ liệu của
người dùng được gửi trong một packet từ một nguồn có thể đến đích
trong nhiều packet nếu có 1 liên kết có MTU nhỏ hơn MTU của
node nguồn. Tuy nhiên việc phân mảnh này sẽ không tối ưu.
Ví dụ: giả sử, ta gửi 1 ứng dụng 3000 byte từ nguồn có MTU là
3000 byte, khi gửi đến liên kết tiếp theo có MTU=1500 byte, do
đó, packet phải bị chia đôi, sau đó lại gửi đến liên kết tiếp theo
nữa có MTU là 1000 byte thì gói tin lại phải chia làm 4 phân: 2
phần 1000 và 2 phần 500. Do đó, không tối ưu. Nếu nguồn biết
được MTU thì nó có thể chỉ cần chia gói tin ra làm 3 phần, mỗi
phần 1000byte ngay từ đầu. Ở IPv6 thì node nguồn sẽ tìm ra MTu
nhỏ nhất trên đường đi và thực hiện việc phân mảnh tối ưu. Trước
khi phân mảnh thì gói tin gốc sẽ gồm 2 phần: phần có thể phân mảnh
và phần không thể phân mảnh. Trong đó, IPv6 header và các header
mở rộng (được xử l bởi node đích) là có thể phân mảnh. Hình sau
sẽ mô tả quá trình phân mảnh trong IPv6:
Fragment header có dạng:
4.Authentication header:
Trong một mạng IP, cả trong IPv4 và IPv6 thì header này được sử
dụng để cung cấp sự toàn vẹn dữ liệu và xác minh nguồn gốc của
dữ liệu. Trong mạng IPv6, AH cung cấp sự xác thực cho IPv6 header,
các header của các giao thức lớp trên và dữ liệu người dùng, cũng
như các header mở rộng không được phép thay đổi trên đường đi.
Định dạng của AH được mô tả trong hình sau:
Trường sequence number được sử dụng để cung cấp sự bảo vệ chống lại
sự nghe lén dữ liệu. Khi một Security Association (SA) được thiết lập giữa
nguồn và đích thì các bộ đếm ở bên gửi và bên nhận sẽ được thiết lập là 0.
Do đó, bắt buộc bên gửi phải tăng trường này qua mỗi lần truyền, tuy nhiên,
bên nhận có thể không xử lý việc truyền này. Dịch vụ này chỉ hiệu quả nếu
bên nhận xử lý trường này.
Trường xác thực dữ liệu chứa Integrity Check Value(ICV) cho packet.
Giải thuật xác minh (được lựa chọn khi SA được thiết lập giữa bên gửi và
bên nhận) sẽ xác định kích thước của ICV, các quy tắc so sánh, và các
bước xử lý cần thiết. Giá trị này được tính trên gói tin bởi node nguồn và
được xác minh bởi node đích (bằng cách so sánh giá trị trong packet nhận
được với cái mà nó tính ra).
AH có thể được sử dụng ở trạng thái transport hay tunnel. AH ở transport
mode được thực thi ở các host, cung cấp sự bảo vệ cho các header ở lớp
trên và các trường trong IPv6 header. Còn AH ở tunnel mode được áp vào
gói tin IPv6 gốc, bao đóng gói tin gốc bằng cách xây dựng một gói tin IPv6
mới sử dụng các địa chỉ IPv6 riêng, như một gateway bảo mật.
Ở transport mode, AH được xem như một end-to-end payload và được
đặt sau IPv6 header và các header mở rộng trừ destination option header.
Hình sau mô tả AH hoạt động ở transport mode:
Trong tunnel mode, AH được áp vào gói tin IPv6 ban đầu sử dụng các địa
chỉ IPv6 khác như những điểm giao tiếp và một IPv6 header mới được xây
dựng sử dụng các địa chỉ của các gateway bảo mật cho các địa chỉ nguồn
và đích . Quá trình xử lý phân mảnh có thể được áp vào AH. Hình sau sẽ
mô tả thứ tự của các header khi áp AH ở tunnel mode vào:
5.Encapsulating security payload:
ESP header được sử dụng ở transport mode hay tunnel mode cũng cung
cấp các dịch vụ bảo mật trong các mạng IPv4 và IPv6. Các dịch vụ bảo
mật qua ESP gồm xác thực nguồn gốc dữ liệu, dịch vụ anti-replay...Sự
thực thi và các tuỳ chọn được chọn ở thời điểm thiết lập SA sẽ quyết
định các dịch vụ bảo mật được sử dụng.
Trong trường hợp của AH khi cung cấp dịch vụ anti-replay, nguồn sẽ
tăng sequence number tuy nhiên node đích phải kiểm tra trường nay để
bật dịch vụ anti-replay. Để cung cấp dịch vụ xác thực nguồn traffic thì
thông tin về nguồn và đích thực phải được che đi. Do đó, dịch vụ này
yêu cầu ESP header được sử dụng trong tunnel mode. Hình sau sẽ mô
tả định dạng của ESP header. Giá trị next header của header trước nếu
bằng 50 nghĩa là header tiếp theo được xử lý chính là ESP header.
Trường payload data chứa dử liệu đã được mã hoá được mô tả bởi
trường next header. Giải thuật mã hoá được sử dụng xác định kích
thước và vị trí của cấu trúc dữ liệu trong trường payload data.
Khi hoạt động ở transport mode thì thứ tự của các header trong IPv6
packet sẽ như sau:
Và ở tunnel mode sẽ có thứ tự như sau:
Comment