Bài viết chuyên đề

Tìm hiểu IPv6 header (Chuyên Đề Đào Tạo IPv6 – Phần 6)

21/03/2019 10:55:39

Tìm hiểu IPv6 header (Chuyên Đề Đào Tạo IPv6 – Phần 6)

 

1. Nhắc Lại về IPv4 Header

 

Hoạt động của Internet dựa trên các thủ tục, là tập các quy trình phục vụ cho giao tiếp. Trong thủ tục Internet, những thông tin như địa chỉ IP của nơi gửi và nơi nhận gói tin, và những thông tin cần thiết khác được đặt phía trước dữ liệu. Phần thông tin đó được gọi là phần mào đầu (header).

Để thấy những thay đổi và nâng cấp trong ipv6 header, chúng ta sẽ nhắc lại về các trường trong ipv4 header và chức năng của chúng, sau đó sẽ so sánh với header ipv6.

IPV4 header có các trường sau đây:

Version – Chỉ định phiên bản của IP, có giá trị 4.

Internet Header Length – Chỉ định chiều dài ipv4 header (đơn vị đo là khối 4 byte). 

Service Type  – Chỉ định dịch vụ mong muốn khi truyền các gói tin qua router. Trường này có 8 bít, xác định quyền ưu tiên, độ trễ, thông lượng, các đặc tính chỉ định độ tin cậy khác. Trường Service Type gồm TOS (Type of Service) và Precedence. TOS xác định loại dịch vụ, bao gồm: giá trị, độ tin cậy, thông lượng, độ trễ hoặc bảo mật. Precedence xác định mức ưu tiên, sử dụng 8 mức từ 0-7. 

Total Length – Chỉ định tổng chiều dài gói tin ipv4 (IPv4 header + IPv4 payload). Kích thước 16 bít, chỉ định rằng gói tin ipv4 có thể dài tới 65,535 byte.

Identification – Định danh gói tin. Kích thước 16 bít. Định danh cho gói tin được lựa chọn bởi nguồn gửi gói tin. Nếu gói tin ipv4 bị phân mảnh, mọi phân mảnh sẽ giữ lại giá trị trường định danh này, mục đích để node đích có thể nhóm lại các mảnh, phục vụ cho việc phục hồi lại gói tin. 

Flags – Xác định cờ cho quá trình phân mảnh. Kích thước 3 bít. Có hai cờ: một xác định gói tin bị phân mảnh và cờ kia chỉ định xem có thêm phân mảnh khác nữa tiếp theo phân mảnh hiện thời hay không. 

Fragment Offset – Chỉ định vị trí của phân mảnh trong phần payload của gói tin ban đầu. Trường này có kích thước 13 bít. 

Time to Live – Chỉ định số lượng link tối đa mà một gói tin ipv4 có thể đi qua trước khi bị hủy bỏ. Trường này dài 8 bít. TTL được sử dụng như một bộ đếm thời gian mà router ipv4 dùng để quyết định độ dài thời gian cần thiết (bằng giây) để chuyển tiếp gói tin ipv4. Router hiện đại chuyển tiếp gói tin chưa đến một giây song luôn phải giảm giá trị trường này ít nhất 1 đơn vị. Khi giá trị TTL trở về 0, gói tin sẽ được hủy đi và thông điệp lỗi được gửi trả lại địa chỉ ipv4 nguồn. 

Protocol – Xác định thủ tục lớp cao hơn gói tin sẽ được chuyển tiếp. Trường này gồm 8 bít. Ví dụ một số giá trị: 6 là TCP, 17 là UDP, 1 là ICMP.

Header Checksum – Cung cấp kiểm tra checksum cho ipv4 header. Có kích thước 16 bít. IPV4 payload không bao gồm trong checksum này mà thường chứa checksum riêng của nó. Các ipv4 node nhận gói tin sẽ kiểm tra ipv4 header checksum và loại bỏ gói tin nếu không trùng khớp thông tin. Khi router forward một gói tin ipv4, nó phải giảm giá trị trường TTL, do vậy trường Header Checksum được tính toán lại tại mỗi router giữa nguồn và đích. 

Source Address – Chứa địa chỉ nguồn gửi gói tin ipv4. Kích thước 32 bit.

Destination Address – Chứa địa chỉ ipv4 đích. Kích thước 32 bit. 

Options – Chứa một hoặc nhiều hơn tùy chọn trong ipv4. Kích thước trường này là một số nguyên lần của 32 bít (4 byte) . Nếu các option không dùng hết và làm lẻ khối 32 bít, các giá trị 0 sẽ được thêm vào để đảm bảo ipv4 header là một số nguyên của khối 4 byte, như vậy chiều dài ipv4 header mới có thể chỉ định được bằng giá trị cuả trường Internet Header Length.

2. IPv6 header - Thay đổi, cải tiến so với IPv4

IPV6 header là phiên bản cải tiến, được tổ chức hợp lý hơn so với ipv4 header. Trong đó loại bỏ đi một số trường không cần thiết hoặc ít khi sử dụng và thêm vào những trường hỗ trợ tốt hơn cho lưu lượng thời gian thực. 

Thực hiện so sánh hai dạng thức header IPv4 và IPv6, sẽ thấy một số trường được giữ nguyên, một số trường trong IPv6 header thực hiện chức năng tương tự trường của IPv4 header, có trường được thêm vào và một số trường được bỏ đi.

Vậy IPv6 header có những thay đổi gì so với thế hệ địa chỉ IPv4?

2.1 Chiều dài của IPv6 header

Như trên mô tả, ipv4 header có một trường chiều dài không cố định, đó là Options. Trường Options được sử dụng để thêm các thông tin về các dịch vụ tuỳ chọn khác nhau trong IPv4, ví dụ thông tin liên quan đến mã hoá. Do đó, chiều dài của IPV4 header thay đổi tuỳ theo tình trạng. Do sự thay đổi đó, các router điều khiển giao tiếp dựa trên những thông tin trong IP header không thể biết trước chiều dài của phần header. Điều này cản trở việc tăng tốc xử lý gói tin.

Gói tin IPv6 có hai dạng header: header cơ bản và header mở rộng (extension header). Phần Header cơ bản có chiều dài cố định 40 byte, thuận tiện hơn cho việc tăng tốc xử lý gói tin. Những thông tin liên quan đến dịch vụ kèm theo được chuyển hẳn tới một phân đoạn khác gọi là header mở rộng (extension header).  

Mặc dù trường địa chỉ nguồn và địa chỉ đích trong ipv6 header có chiều dài mở rộng tới 128 bít, gấp 4 lần số bít của ipv4, song chiều dài header của IPV6 chỉ gấp hai lần header IPV4. Đó là nhờ dạng thức của header đã được đơn giản hoá đi trong IPV6 bằng cách bỏ bớt đi những trường không cần thiết và ít được sử dụng.

2.2 Những trường bỏ đi trong IPv6 header

So với header IPv4, IPv6 header đã bỏ đi những trường sau đây:

Options: Một trong những thay đổi quan trọng là không còn tồn tại trường options trong IPV6 header. Vì vậy, chiều dài header cơ bản của ipv6  là cố định. 

Header Checksum: Header Checksum là 1 số sử dụng để kiểm tra lỗi trong thông tin header, được tính toán ra dựa trên những con số của header. Do giá trị của trường TTL (Time to Live) trong header thay đổi mỗi khi gói tin được truyền qua 1 router, header checksum cần phải được tính toán lại mỗi khi gói tin đi qua 1 router. Địa chỉ IPv6 đã giải phóng router khỏi công việc này, nhờ đó giảm được trễ. Hơn nữa, lớp TCP ngay phía trên lớp IP có kiểm tra lỗi thông tin, bao gồm cả địa chỉ nguồn và địa chỉ đích. Việc thực hiện phép tính tương tự tại tầng IP là không cần thiết và dư thừa, do vậy Header Checksum được loại bỏ khỏi ipv6 header. 

Internet Header Length: Chiều dài phần header cơ bản của gói tin IPv6 cố định là 40 byte, do vậy không cần thiết có trường này. 

Identification – Flags - Fragment Offset:  Thông tin về phân mảnh không bao gồm trong Ipv6 header mà chứa hẳn trong một header mở rộng riêng (Fragment extension header). Trong hoạt động của địa chỉ ipv6, ipv6 router không tiến hành phân mảnh gói tin. Việc thực hiện phân mảnh do ứng dụng thực hiện ngay tại host nguồn. Do vậy, các thông tin hỗ trợ phân mảnh được bỏ đi khỏi phần header cơ bản là phần được xử lý tại các router và được chuyển sang phần header mở rộng, là phần được xử lý tại đầu cuối.

2.3 Những trường trong IPv6 header thực hiện chức năng tương tự IPv4 header

 

Version – 4 bit: Cùng tên với trường trong địa chỉ ipv4. Chỉ khác giá trị thể hiện địa chỉ phiên bản 6.

Traffic Class – 8 bit: Thực hiện chức năng tương tự trường “Service Type” của địa chỉ ipv4. Trường này được sử dụng để biểu diễn mức ưu tiên của gói tin, ví dụ gói tin nên được truyền với tốc độ nhanh hay thông thường, hướng dẫn thiết bị thông tin xử lý gói một cách tương ứng.

Payload Length – 16 bit: Trường này thay thế cho trường Total length của địa chỉ ipv4. Tuy nhiên, nó chỉ xác định chiều dài phần payload. Trường Payload Length bao gồm cả header mở rộng. Bằng 16 bit, có thể chỉ định IPv6 payload tới 65,535 byte.

Hop Limit - 8 bit: Thay thế trường Time to live của địa chỉ ipv4.  

Next Header – 8 bit: Thay thế trường Protocol. Nó chỉ định đến header mở rộng đầu tiên (nếu có) hoặc thủ tục lớp trên như TCP, UDP, ICMPv6. Nếu sử dụng để chỉ định thủ tục lớp trên, trường này sẽ có giá trị tương tự như trường Protocol của địa chỉ ipv4. 

Source Address: Địa chỉ nguồn, chiều dài là 128 bit.

Destination Address: Địa chỉ đích, chiều dài là 128 bit.

2.4 Trường thêm mới của IPv6 header

 

So với IPv4, IPv6 header có một trường mới như sau:

Flow Label: Trường Flow Label có chiều dài 20 bít, là trường mới được thiết lập trong IPV6. Trường này được sử dụng để chỉ định rằng gói tin thuộc một dòng (flow) nhất định giữa nguồn và đích, yêu cầu IPv6 router phải có cách xử lý đặc biệt. Flow Label được dùng khi muốn áp dụng chất lượng dịch vụ (quality of service) không mặc định, ví dụ QoS cho dữ liệu thời gian thực (voice, video). Bằng cách sử dụng trường này, nơi gửi gói tin có thể xác định một chuỗi các gói tin, ví dụ Voice over IP, thành 1 dòng, và yêu cầu chất lượng dịch vụ cụ thể cho dòng đó. Theo mặc định, Flow Label được đặt giá trị 0. Có thể có nhiều dòng giữa nguồn và đích, sẽ được xác định bởi những giá trị tách biệt của Flow Label.

3. Header mở rộng (extension header) trong IPv6

 

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 đặc tính mở rộng (ví dụ xác thực, mã hoá) được để trong phần Options của IPv4 header. Địa chỉ IPv6 đưa những đặc tính mở rộng và các dịch vụ thêm vào thành một phần riêng, gọi là header mở rộng. Gói tin IPv6 có thể có một hay nhiều header mở rộng, được đặt sau header chính, trước phần dữ liệu. Các header mở rộng được đặt nối tiếp nhau theo thứ tự quy định, mỗi dạng có cấu trúc trường riêng.

Nhờ tách biệt các dịch vụ gia tăng khỏi các dịch vụ cơ bản và đặt chúng trong header mở rộng, phân loại header mở rộng theo chức năng, địa chỉ IPv6 đã giảm tải nhiều cho router, và thiết lập nên được một hệ thống cho phép bổ sung một cách linh động các chức năng, kể cả các chức năng hiện nay chưa thấy rõ ràng.

Thông thường các header mở rộng được xử lý tại đích. Header mở rộng Hop-by-Hop được xử lý tại mọi router mà gói tin đi qua. 

Các dạng header mở rộng:

Hiện nay, có sáu dạng header mở rộng tương ứng sáu dịch vụ đang được định nghĩa: Hop-by-Hop, Destination, Routing, Fragment, Authentication, và ESP (Encapsulating Security Payload). Thứ tự đặt header mở rộng trong gói tin là cần thiết.

Hop-by-Hop

Hop-by-Hop là header mở rộng được đặt đầu tiên ngay sau header cơ bản. Header này được sử dụng để xác định những tham số nhất định tại mỗi hop trên đường truyền dẫn gói tin từ nguồn tới đích. Do vậy sẽ được xử lý tại mọi router trên đường truyền dẫn gói tin.

Destination

Destination header được sử dụng để xác định các tham số truyền tải gói tại đích liền kề hoặc đích cuối cùng. 

  • Nếu có routing header, thì sẽ mang thông tin tham số xử lý tại mỗi đích tới.
  • Nếu không có routing header, thông tin là tham số xử lý tại đích cuối cùng. 

Routing

Routing header đảm nhiệm xác định đường dẫn định tuyến. Node IPv6 nguồn có thể sử dụng routing header để xác định tuyến, liệt kê địa chỉ của các router mà gói tin phải đi qua. Địa chỉ thuộc danh sách sẽ được dùng làm địa chỉ đích của gói tin IPV6 theo thứ tự được liệt kê và gói tin sẽ được gửi từ router này đến router khác.

Fragment

Header mở rộng Fragment mang thông tin hỗ trợ cho quá trình phân mảnh và tái tạo gói tin IPv6. Fragment header được sử dụng khi nguồn IPV6 gửi đi gói tin lớn hơn Path MTU. Trong IPV4, mọi router trên đường dẫn cần tiến hành phân mảnh gói tin theo giá trị của MTU đặt cho mỗi giao diện. Tuy nhiên, chu trình này áp đặt một gánh nặng lên router. Bởi vậy trong địa chỉ IPV6, router không thực hiện phân mảnh gói tin. Việc này được thực hiện tại đầu cuối.  

Node nguồn IPV6 sẽ thực hiện thuật toán tìm kiếm Path MTU, là giá trị MTU nhỏ nhất trên toàn bộ một đường dẫn nhất định, và điều chỉnh kích thước gói tin tuỳ theo đó trước khi gửi chúng. Nếu ứng dụng tại nguồn áp dụng phương thức này, nó sẽ gửi dữ liệu có kích thước tối ưu, và sẽ không cần thiết xử lý tại tầng IP. Tuy nhiên, nếu ứng dụng không sử dụng phương thức này, nó phải chia nhỏ gói tin có kích thước lớn hơn Path MTU. Trong trường hợp đó, những gói tin này phải được chia tại tầng IP của node nguồn và Fragment header được sử dụng. 

Authentication and ESP

IPSec là phương thức mã hóa bảo mật dữ liệu tại tầng IP. Trong thế hệ địa chỉ IPv4, khi có sử dụng IPsec, thông tin hỗ trợ bảo mật và mã hóa được đặt trong trường Option. 

Trong địa chỉ IPv6, thực thi IPsec được coi là một đặc tính bắt buộc. Tuy nhiên, IPsec có thực sự được sử dụng trong giao tiếp hay không tùy thuộc vào từng trường hợp. Khi IPsec được sử dụng, trong gói tin IPv6 sẽ cần các header mở rộng Authentication và ESP. Authentication header dùng để xác thực và bảo mật tính đồng nhất của dữ liệu, ESP header dùng để xác định những thông tin liên quan đến mã hoá dữ liệu.  

Trường Next Header trong các header IPv6:

Header cơ bản và mọi header mở rộng IPv6 đều có trường Next Header. 

Trong Header cơ bản, trường Next Header 8 bít sẽ xác định gói tin có tồn tại header mở rộng hay không. Nếu không có, trường này sẽ có giá trị xác định header của tầng cao hơn (TCP hay UDP). Nếu có, giá trị trường Next Header chỉ ra loại header mở rộng đầu tiên theo sau header cơ bản. Trường Next Header của Header mở rộng sẽ trỏ tới header đằng sau nó. Next Header của header mở rộng cuối cùng sẽ có giá trị xác định header tầng cao hơn. Các giá trị Next Header hiện nay cho trong bảng sau:

Giá trị Next Header

Dạng Extension Header tương ứng

0

Hop-By-Hop

43

Routing

44

Fragment

50

Encapsulating Security Payload (ESP)

51

Authentication Header (AH)

60

Destination

 

 

 

 

 

 

 

 

 

Xem tiếp phần 7: http://www.waren.vn/chuyen-de/cau-hinh-ket-noi-bang-dia-chi-ipv6-tren-window-linux-chuyen-de-dao-tao-ipv6-phan-7.html