Ipv6 – lý thuyết và mô hình thử nghiệm ipv6
+ TLA ID (top level aggregation indentifier) mang thông tin định tuyến mức cao nhất về điạ chỉ. Nó được cấp cho ARIN, RIPE và APNIC
+ RES (Reserved) dự trữ cho sử dụng trong tương lai
+ NLA (Next level aggregation indentifier) là không gian địa chỉ được gán cho các provider và exchange.
+ SLA (Site level aggregation indentifier) là không gian địa chỉ được gán cho các tổ chức, được sử dụng cho cấu trúc mạng nội bộ và có thể chia nhỏ hơn trong tổ chức đó.
+ Interface ID: định danh giao tiếp các host trên mạng trong site của khách hàng cuối. Định danh này xác định theo chuẩn EUI-64
Chú ý: Để chuyển một địa chỉ MAC 48 bit sag EUI-64 thì thực hiện theo các bước
sau:
27 trang |
Chia sẻ: Dung Lona | Lượt xem: 1130 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Ipv6 – lý thuyết và mô hình thử nghiệm ipv6, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG I:TỔNG QUAN VỀ IPV6
I.1. MỞ ĐẦU
I.1.1. Nguyên nhân ra đời của giao thức IPv6
Internet đã và đang phát triển với tốc độ khủng khiếp, theo tính toán của giới chuyên môn, mạng Internet hiện nay đang kết nối hàng trăm ngàn site với nhau, với hàng trăm triệu host. Trong tương lai không xa, những con số này không chỉ dừng lại ở đó. Sự phát triển nhanh chóng này đòi hỏi phải kèm theo sự mở rộng, nâng cấp không ngừng của cơ sở hạ tầng mạng cũng như công nghệ sử dụng.
Bước sang những năm đầu của thế kỷ XXI, ứng dụng của Internet phát triển nhằm cung cấp dịch vụ cho người dùng notebook, cellualar modem và thậm chí nó còn thâm nhập vào nhiều ứng dụng dân dụng khác như TV Để có thể đưa những khái niệm mới dựa trên cơ sở TCP/IP này thành hiện thực, TCP/IP phải mở rộng. Nhưng một thực tế mà không chỉ giới chuyên môn, mà ngay cả các ISP cũng nhận thức được đó là tài nguyên mạng ngày càng hạn hẹp. Việc phát triển về thiết bị, cơ sở hạ tầng, nhân lực không phải là một khó khăn lớn. Vấn đề ở đây là địa chỉ IP, không gian địa chỉ IP ngày càng cạn kiệt, càng về sau địa chỉ IP (IPv4) không thể đáp ứng nhu cầu mở rộng mạng đó. Bước tiến quan trọng mang tính chiến lược đối với kế hoạch mở rộng này là việc nghiên cứu cho ra đời một thế hệ sau của giao thức IP, đó chính là IPv6.
Xuất phát điểm của IPv6 có tên gọi là IPng (Internet Protocol Next Generation) là một phiên bản mới của IP, được thiết kế để thay thế cho giao thức IP đang được sử dụng rộng rãi hiện nay là IPv4. Quan điểm chính khi thiết kế IPv6 là từng bước thay thế IPv4, không tạo ra sự biến động lớn đối với hoạt động của mạng Internet nói chung và của từng dịch vụ trên Internet nói riêng, đảm bảo tính tương thích tuyệt đối với mạng Internet hiện nay. Những chức năng đã được kiểm nghiệm trong IPv4 sẽ vẫn được duy trì trong IPv6. Những chức năng không sử dụng trong Ipv4 sẽ bị loại bỏ và đồng thời triển khai một số chức năng mới liên quan đến địa chỉ, bảo mật và triển khai các dịch vụ mới.
I.1.2. Ưu điểm của IPv6 so với IPv4
IPv4 hỗ trợ trường địa chỉ 32 bit do đó IPv4 ngày nay hầu như không còn đáp ứng được nhu cầu sử dụng của mạng Internet. Hai vấn đề lớn mà IPv4 đang phải đối mặt là việc thiếu hụt các địa chỉ, đặc biệt là các không gian địa chỉ tầm trung (lớp B) và việc phát triển về kích thước rất nguy hiểm của các bảng định tuyến trong Internet. Thêm vào đó, nhu cầu tự động cấu hình (Auto-config) ngày càng trở nên cần thiết
Ngày càng có nhiều thiết bị tế bào và những dịch vụ mới, “liên tục kết nối, liên tục xuất hiện”, và điện thoại thời gian thực là những lý do để 3GPP và 3GPP2 lựa chọn phiên bản IPv6 cho mạng vô tuyến, trong đó có mạng truy nhập vô tuyến (RAN), mạng lõi (CN), do Ipv6 có những ưu điểm có thế giải quyết được sự hạn chế khi triển khai IPv4:
- Mở rộng không gian địa chỉ: Ipv6 mở rộng không gian địa chỉ từ 32 bit lên 128 bit, cho phép phân chia địa chỉ theo cấu trúc phân cấp để đơn giản hóa việc cấp địa chỉ và định tuyến. Nó đưa ra phương thức mới tự động cấu hình địa chỉ và xây dựng một phép kiểm tra tính duy nhất của địa chỉ IP. Ngoài ra IPv6 còn đưa ra khái niệm “phạm vi” trong địa chỉ unicast và khái niệm địa chỉ anycast dung để gửi các gói tin đến một tập hợp các node mạng.
- Đơn giản hóa định dạng mào đầu địa chỉ: Một vài trường trong định dạng mào đầu địa chỉ của các gói tin IPv4 sẽ bị loại bỏ hoặc đưa vào mào đầu mở rộng nhằm mục đích giảm thiểu các chi phí cũng như băng thông trong việc xử lý các định dạng mào đầu địa chỉ IPv6 trong các trường hợp chung.
- Cải thiện việc hỗ trợ cho các định dạng mở rộng: Bổ sung nhiều định dạng mào đầu địa chỉ mở rộng tùy chọn, điều này cho phép thêm vào các chức năng mạng mới.
- Khả năng đánh nhãn luồng dữ liệu: hỗ trợ nhiều dạng truyền dẫn theo yêu cầu như video thời gian thực.
- Hỗ trợ khả năng xác thực, tính bảo mật, tính toàn vẹn dữ liệu tại mức mạng
- IPv6 còn hỗ trợ tính di động: với tính năng này, mạng IPv6 dễ dàng cho phép người sử dụng truy cập mạng từ bất kì đâu mà không cần thay đổi địa chỉ IP của mình
I.2. KIẾN TRÚC ĐỊA CHỈ IPV6
I.2.1. Không gian địa chỉ IPv6
IPv6 sử dụng địa chỉ có độ dài lớn hơn IPv4 do đó cung cấp không gian địa chỉ lớn hơn rất nhiều. Trong khi không gian địa chỉ 32 bit của IPv4 cho phép khoảng 4 tỷ địa chỉ thì không gian địa chỉ 128 bit của IPv6 cung cấp một không gian địa chỉ vô cùng lớn với 2128 ≈ 3.4x1038 địa chỉ. Số lượng địa chỉ này rất lớn, có thể hỗ trợ khoảng 6.6x1023 địa chỉ trên mỗi mét vuông bề mặt trái đất. Địa chỉ IPv6 128 bit được chia thành các miền phân cấp theo trật tự trên Internet. Nó tạo ra nhiều mức phân cấp và linh hoạt trong địa chỉ hóa và định tuyến hiện không có trong IPv4
Không gian địa chỉ IPv6 được chia trên cơ sở các bit đầu trong địa chỉ, được gọi là tiền tố định dạng. Cơ chế phân bổ địa chỉ như sau:
Bảng 1.1. Cơ chế phân bổ địa chỉ IPv6
Phân bổ
Tiền tố định dạng
Tỷ lệ trong không gian địa chỉ
Dự phòng
0000 0000
1/256
Dự phòng
0000 0001
1/256
Dự phòng cho địa chỉ NSAP
0000 001
1/128
Dự phòng cho địa chỉ IPX
0000 010
1/128
Chưa cấp phát
0000 011
1/128
Chưa cấp phát
0000 1
1/32
Chưa cấp phát
0001
1/16
Địa chỉ global Unicast có thể tích hợp
001
1/8
Chưa cấp phát
010
1/8
Chưa cấp phát
011
1/8
Địa chỉ dựa trên vị trí địa lý (Hiện đã loại bỏ)
100
1/8
Chưa cấp phát
101
1/8
Chưa cấp phát
110
1/8
Chưa cấp phát
1110
1/16
Chưa cấp phát
1111 0
1/32
Chưa cấp phát
1111 10
1/64
Chưa cấp phát
1111 110
1/128
Chưa cấp phát
1111 1110 0
1/512
Địa chỉ link local
1111 1110 10
1/1024
Địa chỉ site local
1111 1110 11
1/1024
Địa chỉ multicast
1111 1111
1/256
I.2.2. Cách viết địa chỉ IPv6
Địa chỉ IPv6 dài 128 bit (16 octet), khi viết, mỗi nhóm 2 octet (16 bit) được biểu diễn thành một số nguyên không dấu, mỗi số được viết dưới dạng hệ số hexa và được phân tách bằng dấu hai chấm (:)
VD: fec0:ba23:ca38:3214:5345:abcd:fe45:4256
Với sự phức tạp của địa chỉ IPv6, người dùng sẽ khó khăn trong việc viết và nhớ chúng. Do vậy việc sử dụng tên miền sẽ được đẩy mạnh và các địa chỉ sẽ chỉ được sử dụng trong các giao thức mạng và định tuyến.
Trên thực tế các địa chỉ IPv6 thường có nhiều chữ số 0 trong một địa chỉ, ví dụ như: 1080:0000:0000:0000:0008:0800:200c:423a. Do đó cơ chế nén địa chỉ được dùng để biểu diễn dễ dàng hơn các loại địa chỉ dạng này. Ta không cần viết các số không ở đầu mỗi nhóm, ví dụ 0 thay cho 0000, 8 thay cho 0008. Địa chỉ trên sẽ trở thành 1080:0:0:0:8:800:200c:423a.
Hơn nữa ta có thể sử dụng ký hiệu :: để chỉ một chuỗi số 0. Địa chỉ trên sẽ trở thành 1080::8:800:200c:423a. Tuy nhiên ký hiệu trên chỉ được sử dụng một lần trong một địa chỉ. Do địa chỉ IPv6 có độ dài cố định, ta có thể tính được số các bit 0 mà ký hiệu đó biểu diễn. Ta có thể áp dụng ở đầu, hay giữa hay ở cuối các địa chỉ
Cách viết này đặc biệt có lợi khi biểu diễn các địa chỉ multicast, loopback, hay các địa chỉ chưa chỉ định
VD: Địa chỉ multicast ff01:0:0:0:0:0:0:43 ff01::43
Địa chỉ loopback 0:0:0:0:0:0:0:1 ::1
Địa chỉ chưa chỉ định 0:0:0:0:0:0:0:0 ::
Một kiểu địa chỉ khác là kiểu địa chỉ IPv6 nhúng địa chỉ IPv4, như ::10.0.0.1
Tiền tố địa chỉ IPv6 được biểu diễn theo cú pháp CIDR như IPv4 như sau: ipv6-address/prefix length. Trong đó, ipv6-address là bất kỳ biểu diễn địa chỉ nào, còn prefix length là độ dài tiền tố theo bit.
VD: biểu diễn mạng con có tiền tố 64 bit: fe80::36/64
I.3. CẤU TRÚC VÀ ĐẶC ĐIỂM CÁC DẠNG ĐỊA CHỈ IPV6
IPv6 có 3 dạng địa chỉ: unicast, multicast và anycast
Địa chỉ unicast nhận dạng duy nhất một giao diện của một node, một gói được gửi tới địa chỉ unicast sẽ được phân phát đến giao diện được nhận dạng bởi địa chỉ đó
Địa chỉ multicast nhận dạng một nhóm giao diện, một gói được gửi tới địa chỉ multicast sẽ được xử lý bởi tất các các thành viên của nhóm multicast
Địa chỉ anycast nhận dạng một nhóm giao diện (thường trên nhiều node), một gói được gửi tới địa chỉ anycast sẽ được phân phát tới giao diện gần nhất
Các địa chỉ IPv6 được gán cho giao diện vì vậy mỗi giao diện của một node cần có ít nhất một địa chỉ unicast. Một giao diện có thể được gán nhiều địa chỉ thuộc bất cứ loại nào do đó một node có thể được nhận dạng bởi địa chỉ của bất cứ giao diện nào của nó. Một địa chỉ IPv6 gồm 3 phần:
Hình 1.1. Định dạng chung địa chỉ IPv6
Global routing prefix: được sử dụng để nhận dạng các địa chỉ đặc biệt hoặc là phạm vi địa chỉ được gán cho site.
Subnet ID: Được sử dụng để nhận dạng một link trong site
Interface ID: Được sử dụng để nhận diện giao diện trên link
I.3.1. Địa chỉ Unicast
Địa chỉ unicast được phân chia theo phạm vi: global và local
Link local address & site local address
Hình 1.2. Định dạng địa chỉ local unicast
Địa chỉ link local sử dụng trên một link và không bao giờ được định tuyến. Nó có thể được dùng trong kĩ thuật tự động cấu hình và tìm kiếm neighbor và trên mạng không có router nên còn được dùng để tạo ra một mạng tạm thời.
Địa chỉ site local mang thông tin về subnet, nó có thể được định tuyến trong site nhưng các router không chuyển tiếp chúng ra ngoài site
Aggregatable global unicast address
Hình 1.3. Định dạng địa chỉ global unicast
TLA ID (top level aggregation indentifier) mang thông tin định tuyến mức cao nhất về điạ chỉ. Nó được cấp cho ARIN, RIPE và APNIC
RES (Reserved) dự trữ cho sử dụng trong tương lai
NLA (Next level aggregation indentifier) là không gian địa chỉ được gán cho các provider và exchange.
SLA (Site level aggregation indentifier) là không gian địa chỉ được gán cho các tổ chức, được sử dụng cho cấu trúc mạng nội bộ và có thể chia nhỏ hơn trong tổ chức đó.
Interface ID: định danh giao tiếp các host trên mạng trong site của khách hàng cuối. Định danh này xác định theo chuẩn EUI-64
Chú ý: Để chuyển một địa chỉ MAC 48 bit sag EUI-64 thì thực hiện theo các bước
sau:
1.Chèn ff-fe vào giữa byte thứ 3 và byte thứ 4 trong địa chỉ MAC
2.Thực hiện đảo bit đối với bit thứ 2 trong byte thứ nhất của địa chỉ MAC
VD: Địa chỉ MAC của một giao diện như sau:00-60-00-52-f9-d8
Chèn ff-fe vào địa chỉ MAC: 00-60-00-ff-fe-52-f9-d8
Thực hiện đảo bit ta có 02-60-00-ff-fe-52-f9-d8 là phần định dạng EUI-64
I.3.2. Địa chỉ Anycast
Địa chỉ anycast nằm trong cùng một phạm vi địa chỉ với điạ chỉ aggregation global unicast nên không thể nhận dạng địa chỉ anycast từ việc xem xét tiền tố. Khi bạn gán một địa chỉ unicast cho một nhóm giao diện thì nó sẽ trở thành địa chỉ anycast và đồng thời bạn phải cấu hình cho các giao diện này để nó nhận biết địa chỉ này là địa chỉ anycast.
Địa chỉ anycast không được sử dụng như một địa chỉ nguồn của các gói IPv6 và nó chỉ có thể gán cho router IPv6 mà không phải là host
Subnet router anycast address
Hình 1.4. Định dạng địa chỉ subnet router anycast
Định dạng chung của địa chỉ anycast
Hình 1.5. Định dạng chung của địa chỉ anycast
I.3.3. Địa chỉ multicast
Hình 1.6. Định dạng địa chỉ multicast
Flags: bit 0-3 được dự trữ và thiết lập về “0”
bit 4 = 0 là địa chỉ multicast well-known
bit 4 =1 là địa chỉ multicast temporary
Bảng 1.2.Giá trị trường scope
Giá trị
Mô tả
0
Dự phòng
1
Phạm vi link local
2
Phạm vi node local
3,4
Không được gán
5
Phạm vi site local
6,7
Không được gán
8
Phạm vi organization local
9,A,B,C,D
Không được gán
E
Phạm vi global
F
Dự phòng
Các giá trị này cho phép xác định phạm vi vùng của địa chỉ multicast. Qua đó router sẽ định tuyến các gói tin trong phạm vi giới hạn. Thông thường các phạm vi tổ chức và vị trí chỉ có thể được thực hiện nếu các router biết các liên kết nào thuộc về tổ chức nào.
Trường Group ID nhận dạng nhóm multicast, hoặc vĩnh cửu hoặc tạm thời trong một phạm vi, nghĩa là các nhóm có ID giống nhau có thể được sử dụng đồng thời trong các phần khác nhau của mạng mà không gây trở ngại nếu các phạm vi là riêng rẽ
VD: Một server có group ID là 43 được gán bởi IPv6, tất cả 4 địa chỉ sau đều thuộc về group 43 nhưng có ý nghĩa khác nhau:
- ff01::43: Tất cả các server trên cùng node với sender
- ff02::43: Tất cả các server trên cùng link với sender
- ff05::43: Tất cả các server trên cùng site với sender
- ff0e::43: Tất cả các server có mặt trên mạng global
Chú ý: Địa chỉ multicast không được dung như địa chỉ nguồn và không xuất hiện trong mào đầu định tuyến
I.3.4. Các loại địa chỉ đặc biệt
Địa chỉ unspecify: viết tắt “::” (là địa chỉ toàn không giống như địa chỉ 0.0.0.0 trong IPv4). Nó có thể được sử dụng như một địa chỉ nguồn bởi host khi nó gửi yêu cầu thông tin cấu hình địa chỉ. Địa chỉ này không được cấu hình tĩnh hay động cho giao diện và không bao giờ được dùng làm địa chỉ đích hay trong mào đầu định tuyến IPv6
Địa chỉ loopback: viết tắt “::1” có chức năng (giống địa chỉ 127.0.0.1 trong IPv4) gỡ rối và kiểm tra các stack IP. Địa chỉ này không bao giờ được gán tĩnh hay động cho một giao diện.
Địa chỉ IPv6 với địa chỉ IPv4 được nhúng:
Địa chỉ IPv6 tương thích IPv4: Loại địa chỉ này để tunnel các gói IPv6 tự động qua cơ sở hạ tầng định tuyến IPv4. Các node sử dụng kĩ thuật này sẽ được cấp cho một địa chỉ unicast IPV6 đặc biệt trong đó mang địa chỉ IPv4 ở 32 bits có trọng số thấp
Địa chỉ IPv6 được ánh xạ IPv4: Loại địa chỉ này được sử dụng để đại diện cho các địa chỉ của các node IPv4. Các node IPv6 sử dụng địa chỉ này để gửi các gói tới node IPv4. Địa chỉ này mang địa chỉ IPv4 ở 32 bits có trọng số thấp
Hình 1.7. Định dạng địa chỉ IPv6 với địa chỉ IPv4 được nhúng:
Địa chỉ 6to4:
6to4 là một trong các kĩ thuật được định nghĩa để cho phép các mạng hay các host IPv6 trao đổi thông tin qua nền IPv4 không cần thiết lập một tunnel rõ ràng.
Hình 1.8.Định dạng địa chỉ 6to4
TLA = 0x0002
Địa chỉ ISATAP:
Đây là kĩ thuật tunnel tự động (Intra – Site Automatic Tunneling Addressing Protocol), nó được thiết kế cho phép các host IPv6 trao đổi thông tin dễ dàng trong nền IPv4.
Hình 1.9. Định dạng địa chỉ ISATAP
I.4. CẤU TRÚC CỦA GÓI TIN IPV6
Gói tin IPv6 bao gồm các thành phần như trong hình vẽ sau:
Hình 1.10. Cấu trúc gói tin Ipv6
IPv6 header: Trong gói tin IPv6 thì phần IPv6 header luôn tồn tại và có chiều dài cố định là 40 byte.
Mào đầu mở rộng: Trong gói tin IPv6 thì phần mào đầu mở rộng này có thể không tồn tại hoặc có một hay nhiều phần với độ dài khác nhau. Trường Next header trong mào đầu IPv6 chỉ ra sự tồn tại có hay không của mào đầu mở rộng. Tương tự như vậy, trường Next header trong mào đầu mở rộng này sẽ chỉ ra sự tồn tại của trường mào đầu mở rộng tiếp đó. Trường Next header trong mào đầu mở rộng cuối cùng sẽ xác định giao thức lớp trên như TCP, UDP, ICMPv6được chứa trong phần đơn vị dữ liệu giao thức lớp trên. Phần mào đầu mở rộng trong IPv6 thay thế các trường lựa chọn trong phần mào đầu của gói tin IPv4 hiện nay. Không giống như các trường lựa chọn trong mào đầu IPv4, phần mào đầu mở rộng của IPv6 không bị giới hạn bởi kích thước mà nó có thể mở rộng để có thể mang đầy đủ các dữ liệu cần thiết cho một gói tin IPv6
Đơn vị dữ liệu giao thức lớp trên: Đơn vị dữ liệu này thường chứa đựng phần mào đầu và phần tải trọng của các giao thức lớp trên như là UDP, TCP, ICMPv6
Payload của gói tin IPv6 bao gồm phần mào đầu mở rộng và đơn vị dữ liệu giao thức lớp trên.
I.4.1. IPv6 header
Cấu trúc mào đầu của gói IPv6 được chỉ ra trong RFC 2460. Chiều dài của mào đầu cố định là 40 bytes trong đó có 32 bytes dành cho trường địa chỉ nguồn và đích nên thực tế chỉ còn 8 bytes cho thông tin mào đầu chung.
I.4.1.1. Cấu trúc mào đầu chung
Trong IPv6, có 5 trường trong mào đầu của IPv4 được gỡ bỏ:
header length
identification
flag
fragment offset
header checksum
1. Header length: được gỡ bỏ vì mào đầu của IPv6 có chiều dài cố định là 40 bytes. Với IPv4, chiều dài tối thiểu của mào đầu là 20 bytes nhưng khi các option được thêm vào thì chiều dài của mào đầu có thể tăng tới 60 bytes nên thông tin chiều dài của mào đầu là rất quan trọng
2. Identification, flag, fragment offset: các trường này điều khiển việc phân đoạn các packet trong mào đầu của IPv4. Việc phân đoạn xảy ra khi muốn gửi đi các gói có kích thước lớn qua mạng mà chỉ hỗ trợ kích thước gói nhỏ hơn. Trong trường hợp này các router IPv4 sẽ chia packet thành các slice nhỏ hơn và chuyển tiếp nhiều gói. Host đích sẽ tập hợp và sắp xếp chúng lại. Nếu một gói bị lỗi hoặc mất thì toàn bộ quá trình truyền dẫn sẽ thực hiện lại, đây chính là điểm không hiệu quả. IPv6, các host sẽ học kích thước của path MTU (maximum transmission unit) thông qua thủ tục gọi là Path MTU Discovery. Nếu các host gửi muốn phân đoạn packet thì nó sẽ sử dụng mào đầu mở rộng để thực hiện việc đó chứ không phải là các router IPv6. Do đó các trường này được gỡ bỏ khỏi mào đầu IPv6 mà chèn vào mào đầu mở rộng nếu cần
3. Header checksum: được gỡ bỏ để cải thiện tốc độ xử lý.
Trường type of service được thay thế bằng trường TrafficClass. Các trường time to live (TTL), protocol type được đổi tên. Còn trường Flow label được thêm vào
I.4.1.2. Các trường trong IPv6 header
Hình 1.11. Các trường trong IPv6 header
Version: chỉ ra version của giao thức, với IPv6 có giá trị là 6
Trafic class: thay thế trường ToS (Type of service) trong IPv4. Trường này tạo điều kiện thuận lợi để điều khiển các lưu lượng thời gian thực cũng như các data yêu cầu điều khiển đặc biệt. Các node gửi data và các router chuyển tiếp sử dụng trường này để nhận dạng và phân biệt độ ưu tiên hay các lớp khác nhau của các packet IPv6.
Flow label: trường này được sử dụng để phân biệt các gói yêu cầu được đối xử như nhau, nó hữu ích với việc điền khiển lưu lượng thời gian thực. Các host gửi có thể dán nhãn số thứ tự các gói. Các router sẽ giữ vết của luồng và việc xử lý các gói thuộc về cùng một luồng sẽ hiệu quả hơn vì nó không phải xử lý lại mào đầu của mỗi gói. Một luồng được nhận dạng duy nhất bởi nhãn luồng và địa chỉ của node nguồn. Các gói thuộc về cùng một luồng phải có cùng địa chỉ IP nguồn và địa chỉ IP đích. Nếu các node không hỗ trợ chức năng của trường Flow label thì nó sẽ không thay đổi trường này khi chuyển tiếp các gói và bỏ qua trường này khi nhận các gói.
Payload length: chiều dài của data sau mào đầu IP.
Next header: Trường này chính là trường protocol type trong IPv4, nó mang thông tin về loại giao thức cũng như loại mào đầu mở rộng được sử dụng.
Bảng 1.3. Giá trị của trường Next header
Giá trị
Mô tả
0
Trong Ipv4 header: dự phòng và không được sử dụng
Trong IPv6 header: mào đầu hop-by-hop option
1
ICMPv4 (Internet Control Message Protocol)
2
IGMPv4 (Internet Group Management Protocol)
4
IP in IP (đóng gói)
6
TCP
8
EGP (Exterior Gateway Protocol)
9
IGP
17
UDP
41
IPv6
43
Routing header
44
Fragmentation header
45
IDRP (Interdomain Routing Protoccol)
46
RSVP (Resource Reservation Protocol)
50
Encrypted Security Payload header
51
Authentication header
58
ICMPv6
59
No Next header for IPv6
60
Destination option header
88
EIGRP
89
OSPF
108
IP Payload Compression Protocol
115
Layer 2 Tunneling Protocol
132
Stream Control Transmission Protocol
134-254
Không được gán
255
Dự phòng
Hop limit: trường này tương tự như trường TTL trong IPv4, giá trị của trường này là số hop và sẽ bị giảm đi một khi đi qua mỗi node chuyển tiếp.
Source address: Địa chỉ IP của node mạng nguồn
Destination address: Địa chỉ IP của node mạng đích
I.4.1.3. So sánh các trường trong mào đầu của 2 gói tin IPv6 và IPv4
Hình 1.12. IPv4 header
Hình 1.13. IPv6 header
Bảng 1.4. So sánh các trường trong mào đầu của 2 gói tin IPv6 và IPv4
IPv4 header
IPv6 header
Version
Cũng sử dụng trường này nhưng có giá trị là 6
Internet Header Length
Không tồn tại bởi phần header trong IPv6 có chiều dài cố định là 40 byte
Type of service
Được thay thế bởi trường Traffic class
Total length
Thay thế bởi trường Payload length
Identification
Flag
Fragment offset
Các trường này không tồn tại trong Ipv6. Các thông tin về phân đoạn gói tin không nằm trong phần mào đầu IPv6 mà trong trường fragment của mào đầu mở rộng
Time to live
Thay thế bởi trường Hop limit
Protocol
Thay thế bởi trường Next header
Header checksum
Không tồn tại trong IPv6, việc kiểm tra lỗi bit cho toàn bộ gói tin IPv6 được thực hiện ở lớp 2
Source address
Chỉ khác ở kích thước 128 bit
Destination address
Chỉ khác ở kích thước 128 bit
Option
Không tồn tại trong IPv6, các lựa chọn trong IPv6 chính là các phần trong mào đầu mở rộng
Trường Flow label được thêm vào
I.4.2. Mào đầu mở rộng
Header mở rộng (extension header) 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 Options của header. Vì vậy, chiều dài header thay đổi tuỳ theo tình trạng.
Khác thế, đị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. Nó sẽ không được gắn thêm vào nếu các dịch vụ thêm vào không được sử dụng. 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, song ngoại trừ một số trường hợp đặc biệt, chúng không phải xử lý header mở rộng. 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ức năng chúng phục vụ. Khi nhiều dịch vụ thêm vào được sử dụng, phần header mở rộng tương ứng với từng loại dịch vụ khác nhau được đặt tiếp nối theo nhau.
Trong cấu trúc header IPv6, có thể thấy 8 bít của trường Next Header. 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ông tin 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 Next Header và xác định header mở rộng nào sẽ theo sau nó. Node đầu cuối khi nhận được gói tin chứa0 extension header sẽ xử lý các extension header này theo thứ tự được sắp xếp của chúng.
Có 6 loại của extension header:
Hop-by-Hop Options header
Destination Options header
Routing header
Fragment header
Authentication header
ESP (Encrypted Security Payload) header
Nếu có nhiều hơn một mào đầu được sử dụng trong một gói thì thứ tự các mào đầu như sau:
IPv6 header
Hop-by-Hop Options header
Destination Options header ( được xử lý bởi đích đầu tiên xuất hiện trong trường địa chỉ đích)
Routing header
Fragment header
Authentication header
ESP (Encrypted Security Payload) header
Destination Options header (được xử lý bởi đích cuối cùng)
Upper layer header
1. Hop by hop option:
Mang thông tin lựa chọn được kiểm tra bởi tất cả các node trên đường truyền của gói. Nếu không có mào đầu mở rộng hop by hop thì router biết rằng không cần phải xử lý thông tin định tuyến riêng mà chỉ cần định tuyến gói trực tiếp tới đích cuối cùng. Ngược lại, router chỉ cần kiểm tra trong mào đầu này và không cần tìm kiếm thêm trong gói.
Hình 1.14. Định dạng mào đầu hop-by-hop option
Byte đầu tiên của trường option là trường option type, nó mang thông tin trong trường hợp các node xử lý không nhận ra option thì option này phải được đối xử như thế nào.
Giá trị của 2 bits đầu tiên chỉ ra hành động cần thực hiện:
00: bỏ qua và tiếp tục xử lý
01: loại bỏ packet
10: loại bỏ packet và gửi bản tin ICMP lỗi tham số, code 2 tới địa chỉ nguồn của gói, chỉ ra loại option không được nhận ra.
11: khi đích không phải là muticast thì loại bỏ packet và gửi bản tin ICMP lỗi tham số, code 2.
Bit thứ 3 chỉ ra thông tin lựa chọn thay đổi (giá trị 01) hoặc không thay đổi (giá trị 00) en tuyến hay không.
2. Routing header:
Routing header xác định đường dẫn định tuyến, node nguồn sử dụng routing header để liệt kê địa chỉ các router mà gói tin sẽ đi qua trên đường truyền tới đích.
Hình 1.15. Định dạng mào đầu Routing
Nếu node đang xử lý không nhận dạng được giá trị của routing type, hành động của nó phụ thuộc vào nội dung của trường segment left.
Nếu trường segment left không chứa node nào thì node bỏ qua mào đầu routing và xử lý mào đầu tiếp theo trong packet, được xác định bởi giá trị của trường Next header. Nếu trường segment left khác không, node loại bỏ packet và gửi bản tin ICMP lỗi tham số, code 0 tới địa chỉ nguồn của packet, chỉ ra loại routing không được nhận ra. Nếu node chuuyển tiếp không xử lý packet do kích thước MTU của link tiếp theo quá nhỏ, nó sẽ loại bỏ packet và gửi bản tin ICMP gói quá lớn trở lại nguồn của packet.
Loại định tuyến duy nhất được mô tả trong RFC 2460 là mào đầu định tuyến loại Zero. Node đầu tiên xử lý mào đầu định tuyến là node được đánh địa chỉ bởi trường địa chỉ đích trong mào đầu IPv6. Node này giảm trường segment left đi một và chèn trường địa chỉ tiếp theo từ trong mào đầu định tuyến vào trong trường địa chỉ đích của mào đầu IPv6. Sau đó packet được chuyển tiếp tới hop tiếp theo và quá trình xử lý giống như trên cho tới khi đạt tới đích cuối cùng. Đích cuối cùng là địa chỉ cuối cùng trong trường dữ liệu mào đầu định tuyến.
3. Fragment header:
Khi một host muốn gửi một packet tới host đích thì nó sẽ sử dụng thuật toán path MTU discovery để xác định kích thước lớn nhất của các gói mà có thể được truyền trên đường truyền tới đích. Nếu gói có kích thước lớn hơn MTU được hỗ trợ trên mạng thì host nguồn sẽ phân đoạn gói đó thành các gói nhỏ hơn, đích sẽ tập hợp các segment và sắp xếp chúng lại. Khi đó mào đầu fragment được sử dụng. Các segment phải có địa chỉ nguồn và đích nhận dạng và có cùng giá trị nhận dạng để được sắp xếp hợp lý.
Hình 1.16. Định dạng mào đầu Fragment
M-flag = 0: chỉ ra fragment cuối cùng
M-flag = 1: chỉ ra còn nhiều fragment
Trường identification hoạt động như một bộ đếm, tăng lên 1 cho mỗi packet cần được phân đoạn bởi node nguồn
4. Destination option header:
Mang thông tin lựa chọn chỉ được xác định bởi node đích
Hình 1.17. Định dạng mào đầu Destination option
5. Authentication và 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 giao tiế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ảo mật tính đồng nhất của dữ liệu, ESP header sử dụng để xác định những thông tin liên quan đến mã hoá dữ liệu, được tổ hợp lại thành extension header. Trong IPV4, khi có sử dụng đến Ipsec, thông tin được đặt trong trường Options.
I.5. ICMPv6
ICMPv6 vẫn giữ khá nhiều chức năng của ICMPv4, ngoài ra nó còn có một số thay đổi sau:
Các bản tin ICMP6 hỗ trợ thêm cho hoạt động tự động cấu hình địa chỉ
Các thủ tục và bản tin ICMPv6 mới thay thế cho giao thức phân giải địa chỉ ARP (Address Resolution Protocol)
Tự động xác định MTU (Maximum Transmission Unit) và báo lỗi nếu có phân mảnh
ICMPv6 không gửi bản tin Source Quench để giảm tốc độ phát tin của nguồn phát khi có nghẽn mạch
ICMPv6 thực hiện luôn chức năng quảng bá quan hệ thành viên của IGMP (Internet Group Management Protocol)
ICMPv6 phát hiện và báo lỗi nếu thấy router hay nút thông tin nào đó không hoạt động
ICMPv6 được gán giá trị 58 trong Next header
ICMPv6 được sử dụng bởi node IPv6 để gửi các thông báo lỗi trong quá trình xử lý gói tin và thực hiện các chức năng chẩn đoán của tầng Internet, chẳng hạn như lệnh ping sử dụng bản tin ICMP Echo Request và Echo Reply để xác định sự sẵn sàng của một node trên mạng. ICMPv6 là một phần không thể tách rời của giao thức IPv6
I.5.1. Khuôn dạng cơ bản của bản tin ICMPv6
Có 2 loại bản tin ICMP:
Bản tin ICMP thông báo lỗi: Bit cao nhất trong trường Type của bản tin có giá trị bằng “0”, do đó bản tin lỗi ICMP nằm trong phạm vi từ 0 đến 127. Các dạng của bản tin thông báo lỗi ICMPv6:
Đích không đến được (bản tin loại 1)
Gói tin quá lớn (bản tin loại 2)
Quá thời gian (bản tin loại 3)
Lỗi tham số (bản tin loại 4)
Bản tin thông báo thông tin: Bit cao nhất trong trường Type của bản tin có giá trị bằng “1”, do đó bản tin thông tin ICMP nằm trong phạm vi từ 128 đến 255. Các dạng của bản tin thông báo thông tin ICMPv6:
Echo request (bản tin loại 128)
Echo reply (bản tin loại 129)
Tất cả các bản tin ICMPv6 có cùng một cấu trúc mào đầu chung:
Hình 1.18. Cấu trúc mào đầu chung của ICMPv6
Trong đó:
Trường Type: Trường này chỉ ra loại của bản tin, bản tin thông báo lỗi có giá trị từ 0 đến 127 còn bản tin thông báo thông tin có giá trị từ 128 đến 255
Trường Code: Trường này tùy thuộc vào từng loại bản tin, nó tạo ra một mức phân biệt nữa của bản tin
Trường Checksum: Kiểm tra tính toàn vẹn của dữ liệu
Thân bản tin: Chứa dữ liệu của bản tin ICMP
I.5.2. Bản tin ICMP thông báo lỗi:
I.5.2.1. Thông báo lỗi “đích không đến được”
Hình 1.19. Cấu trúc của bản tin thông báo lỗi “đích không đến được”
Router gửi bản tin thông báo lỗi “đích không đến được” khi một gói tin IP không được chuyển tiếp tới node đích mong muốn do bất kỳ một lý do nào đó không phải do nghẽn mạch
Các trường ICMPv6:
Type: 1
Code: 0: Không có tuyến đến đích
1: Thông tin với đích bị cấm
2: Ngoài phạm vi của địa chỉ nguồn
3: Không đến được địa chỉ
4: Không đến được cổng
Không sử dụng: Đặt về “0” bởi node gửi và lờ đi bởi node nhận
Code = 0 (Không có tuyến đến đích): Bản tin này được phát ra nếu như một router không thể chuyển tiếp gói tin bởi router không có tuyến tới mạng đích trong bảng định tuyến của nó
Code =1 (Thông tin với đích bị cấm): Bản tin này được gửi bởi firewall
Code = 2 (Ngoài phạm vi địa chỉ nguồn): Bản tin này được gửi đi khi phạm vi multicast của địa chỉ nhỏ hơn phạm vi của địa chỉ đích
Code =3 (Không đến được địa chỉ): Bản tin này được gửi nếu địa chỉ đích không được phân giải vào trong địa chỉ mạng phù hợp hoặc lỗi lớp liên kết dữ liệu
Code = 4 (Không đến được cổng): Bản tin này được gửi khi gói tin IPv6 chứa bản tin UDP đã đến đích nhưng không có một ứng dụng nào lắng nghe trên cổng UDP đích
Node nhận thông báo lỗi ICMPv6 “đích không đến được” phải báo cho giao thức lớp trên
I.5.2.2. Thông báo lỗi “Gói tin quá lớn”
Hình 1.20. Định dạng của bản tin thông báo lỗi “gói tin quá lớn”
Thông báo lỗi “gói tin quá lớn” phải được tạo ra do router để thông báo gói tin không chuyển tiếp được do kích thước của gói tin lớn hơn MTU của kết nối.Thông báo này ứng dụng trong cơ chế khám phá đường dẫn MTU.
Các trường ICMPv6:
- Type: 2
- Code: Đặt về “0” bởi node gửi và lờ đi bởi node nhận
- MTU: MTU của kết nối hop tiếp theo
Thông báo lỗi “gói tin quá lớn” có một ngoại lệ so với các thông báo lỗi ICMPv6 khác là nó có thể gửi cho địa chỉ multicast, hay địa chỉ multicast lớp liên kết, hay địa chỉ quảng bá lớp liên kết
Node nhận bản tin ICMP thông báo lỗi “gói tin quá lớn” phải báo cho giao thức lớp trên
I.5.2.3. Thông báo lỗi “quá thời gian”
Nếu một router nhận một gói tin với giới hạn hop là “0”, hay router giảm giá trị của giới hạn hop xuống “0” thì nó phải loại bỏ gói tin đó và gửi một thông báo lỗi “quá thời gian” với mã bằng “0” đến nguồn của gói tin. Nó chỉ ra định tuyến bị lặp hay giới hạn hop quá nhỏ
Hình 1.21. Định dạng của bản tin thông báo lỗi “quá thời gian”
Các trường ICMPv6:
Type: 3
Code: 0: Vượt quá giới hạn hop trong quá trình chuyển giao
1: Vượt quá thời gian lắp ráp các phân đoạn
Không sử dụng: Đặt về “0” bởi node nguồn và lờ đi bởi node nhận
Code = 0 (Vượt quá giới hạn hop trong quá trình chuyển giao): Bản tin này được gửi đi khi có lặp định tuyến hay giới hạn hop quá nhỏ. Bản tin loại này được sử dụng rất phổ biến để thực hiện chức năng traceroute. Traceroute rất hữu ích để xác định đường dẫn mà các gói đi qua trên mạng. Thứ tựn để thực hiện điều này, gói tin đầu tiên được gửi ra ngoài với giới hạn hop bằng 1. Router đầu tiên trên đường dẫn sẽ giảm giới hạn hop về 0, loại bỏ gói tin và gửi trở lại bản tin ICMP loại 3, code 0. Bây giờ host nguồn sẽ biết địa chỉ của router hop đầu tiên. Tiếp theo nó gửi ra ngoài gói tin thứ hai với giới hạn hop bằng 2. Gói tin này sẽ được chuyển tiếp bởi router đầu tiên, đồng thời router này sẽ giảm giới hạn hop xuống còn 1. Router thứ hai trên đường dẫn sẽ giảm giới hạn hop về 0, loại bỏ gói tin và gửi trở lại bản tin ICMP loại 3, code 0. Bây giờ host nguồn sẽ biết về router thứ hai trên đường dẫn. Tăng giới hạn hop lên 1 (với mỗi gói tin được gửi đi cho tới khi gói tin đạt đến đích cuối cùng) tiếp tục xử lý như vậy. Mỗi router trên đường dẫn tới đích cuối cùng sẽ gửi bản tin ICMP trở lại host nguồn vì vậy, nó cung cấp địa chỉ IP của nó cho host nguồn.
Code = 1 (Vượt quá thời gian lắp ráp các phân đoạn): Bản tin này được gửi đi khi host nhận không thể lắp ráp các phân đoạn trong thời gian xác định
Node nhận thông báo lối ICMPv6 “vượt quá thời gian” phải báo cho giao thức lớp trên .
I.5.2.4. Thông báo lỗi “lỗi tham số”
Hình 1.22. Định dạng bản tin thông báo lỗi “lỗi tham số”
Một node xử lý gói tin và nó thấy có vấn đề trong các trường của header IPV6 hay trong mào đầu mở rộng làm cho nó không thể hoàn thành việc xử lý gói tin thì nó phải loại bỏ gói tin đó và gửi một thông báo lỗi “lỗi tham số” đến nguồn của gói tin
Các trường ICMPv6:
Type 4
Code: 0: Trường trong header bị sai
1: Không nhận dạng được trường mào đầu tiếp theo
2: Không nhận dạng được lựa chọn IPv6
Con trỏ: Chỉ ra offset của lỗi trong gói tin có lỗi.
Con trỏ sẽ chỉ đến vị trí trong gói tin gốc mà nó phát hiện ra lỗi. Ví dụ một bản tin ICMP thông báo lỗi với loại bằng 4, code = 1, con trỏ bằng 40 sẽ chỉ ra rằng loại mào đầu mở rộng không được nhận dạng
Node nhận bản tin thông báo lỗi “lỗi tham số” phải thông báo cho giao thức lớp trên.
I.5.3. Bản tin ICMP thông báo thông tin
Bản tin Echo Request và Echo Reply được sử dụng cho một trong những hữu ích phổ biến nhất của bộ giao thức TCP/IP đó là lệnh ping (Packet INternet Groper).
I.5.3.1. Bản tin Echo Request
Hình 1.23. Định dạng của bản tin Echo Request
Các trường ICMPv6:
Type: 128
Code: 0
Định danh: Được sử dụng để phối hợp với bản tin trả lời phản hồi
Số thứ tự: Được sử dụng để phối hợp với bản tin trả lời phản hồi
Dữ liệu: Không có hay một vài byte dữ liệu tùy ý
I.5.3.2. Bản tin Echo Reply
Hình 1.24. Định dạng của bản tin Echo Reply
Các trường ICMPv6:
- Type: 129
- Code: 0
- Nhận dạng: Nhận dạng từ Echo Request
- Số thứ tự: Số thứ tự từ Echo Request
Dữ liệu: Dữ liệu từ Echo Request
* Nếu bản tin Echo Request được gửi tới địa chỉ unicast, địa chỉ nguồn của bản tin Echo Reply phải giống với địa chỉ đích của bản tin Echo Request. Nếu Echo Request được gửi tới địa chỉ multicast IPv6 thì địa chỉ nguồn của Echo Reply phải là địa chỉ unicast của giao diện trên đó đã nhận Echo Request multicast
Kết quả thu được khi bắt gói tin
I.5.4. Luật xử lý:
Chúng ta có các luật sau khi xử lý một bản tin ICMP:
1. Nếu một node nhận được bản tin lỗi ICMPv6 không rõ hiểu thì nó phải gửi bản tin này lên lớp trên
2. Nếu một node nhận được bản tin thông tin ICMPv6 không rõ hiểu nó sẽ tự động loại bỏ
3. Độ lớn của các bản tin lỗi ICMPv6 bao gồm cả phần gói tin gây ra lỗi không được vượt quá MTU IPv6 nhỏ nhất
4. Nếu bản tin lỗi phải được đưa qua giao thức lớp trên thì loại giao thức sẽ được lấy ra từ gói tin gốc (chứa trong phần thân của bản tin lỗi ICMPv6). Trong trường hợp loại giao thức không được tìm thấy trong phần thân của bản tin ICMPv6 (bởi có quá nhiều mào đầu mở rộng trong gói tin gốc và phần mào đầu chứa loại giao thức lớp trên bị cắt) khi đó bản tin ICMPv6 sẽ bị hủy bỏ
5. Một bản tin thông báo lỗi ICMPv6 không thể được gửi nếu nó là kết quả của việc nhận:
5.1. Một bản tin thông báo lỗi ICMPv6
5.2. Một gói tin đã gửi tới địa chỉ multicast. Có 2 trường hợp có thể chấp nhận trong luật này: thông báo lỗi “gói tin quá lớn” được sử dụng cho khám phá MTU của đường dẫn và thông báo lỗi “lỗi tham số”- thông báo lựa chọn IPv6 không nhận diện được
5.3. Một gói tin được gửi đi như một multicast tầng liên kết (các ngoại lệ của 5.2 cũng được áp dụng ở đây)
5.4. Một gói tin được gửi đi như một broadcast tầng liên kết (các ngoại lệ của 5.2 cũng được áp dụng ở đây)
5.5. Gói tin mà địa chỉ nguồn của nó không chỉ ra một node đơn duy nhất nào. Nó có thể là địa chỉ không các định IPv6, địa chỉ IPv6 multicast hay một địa chỉ mà node gửi ICMP biết đến là địa chỉ anycast.
6. Mỗi node phải hạn chế tỷ lệ phát thông báo lỗi ICMPv6 mà nó gửi, có thể dựa trên thời gian hay băng thông