GIAO\r\nTHỨC INTERNET PHIÊN BẢN 6 (IPV6) - PHẦN 1: QUY ĐỊNH KỸ THUẬT
\r\n\r\nInternet Protocol,\r\nversion 6 (IPv6) - Specification
\r\n\r\nLời nói đầu
\r\n\r\nTCVN 9802-1:2013 hoàn toàn tương đương với\r\ntài liệu RFC 2460:1998 (Giao thức Internet, phiên bản 6 - đặc điểm kỹ thuật)\r\ncủa Nhóm đặc trách về kỹ thuật Internet (IETF).
\r\n\r\nTCVN 9802-1:2013 do Vụ Khoa học và Công nghệ biên\r\nsoạn, Bộ Thông tin và Truyền thông đề nghị, Tổng cục Tiêu chuẩn Đo lường Chất\r\nlượng thẩm định, Bộ Khoa học và Công nghệ công bố.
\r\n\r\n\r\n\r\n
GIAO THỨC INTERNET\r\nPHIÊN BẢN 6 (IPV6) - PHẦN 1: QUY ĐỊNH KỸ THUẬT
\r\n\r\nInternet Protocol,\r\nversion 6 (IPv6) - Specification
\r\n\r\n\r\n\r\nTiêu chuẩn này quy định những đặc điểm kỹ\r\nthuật của giao thức Internet (IP), phiên bản 6.
\r\n\r\nGiao thức Internet phiên bản 6 (IPv6) được\r\nthiết kế để dùng trong các hệ thống liên kết của các mạng truyền thông máy tính\r\nchuyển mạch gói. Giao thức IPv6 giúp cho việc truyền các khối dữ liệu, được gọi\r\nlà các gói tin, từ các nguồn đến các đích, trong đó các nguồn và các đích là\r\ncác máy chủ được nhận dạng bởi các địa chỉ có độ dài 128 bit. Giao thức IPv6\r\ncho phép phân mảnh và tái lắp ráp các gói tin lớn để truyền qua các mạng truyền\r\ngói tin nhỏ, cung cấp các chức năng cần thiết cho việc phân phát một gói các\r\nbit (một gói tin Internet) từ nguồn tới đích trên một hệ thống liên kết đa\r\nmạng.
\r\n\r\n\r\n\r\nCác tài liệu viện dẫn sau là cần thiết cho\r\nviệc áp dụng tiêu chuẩn này. Đối với các tài liệu viện dẫn ghi năm công bố thì\r\náp dụng phiên bản được nêu. Đối với các tài liệu viện dẫn không ghi năm công bố\r\nthì áp dụng phiên bản mới nhất, bao gồm cả các sửa đổi (nếu có).
\r\n\r\nTCVN 8072:2009 Mạng viễn thông - Giao thức\r\nIPv4
\r\n\r\nIETF RFC 2402 Mào đầu xác thực IP (IP Authentication\r\nHeader)
\r\n\r\nIETF RFC 2406 Đóng gói an toàn phần dữ liệu IP\r\n(IP Encapsulating Security Payload)
\r\n\r\n\r\n\r\n3.1. Nút mạng (Node)
\r\n\r\nThiết bị thực thi IPv6.
\r\n\r\n3.2. Bộ định tuyến (Router)
\r\n\r\nNút mạng có khả năng chuyển tiếp các gói tin\r\nIPv6 không được định địa chỉ cho nút mạng đó.
\r\n\r\n3.3. Máy chủ (Host)
\r\n\r\nBất kỳ nút mạng nào mà không phải là Bộ định\r\ntuyến.
\r\n\r\n3.4. Tầng trên (Upper layer)
\r\n\r\nTầng giao thức ngay phía trên IPv6. Ví dụ các\r\ngiao thức giao vận TCP và UDP, các giao thức điều khiển như ICMP, các giao thức\r\nđịnh tuyến như OSPF.
\r\n\r\n3.5. Liên kết (Link)
\r\n\r\nThiết bị hay môi trường truyền thông mà trên\r\nđó các nút mạng có thể kết nối với nhau tại tầng liên kết, tức là tầng ngay bên\r\ndưới IPv6. Ví dụ như mạng Enthernet (kết nối đơn hay kết nối cầu), các liên kết\r\nPPP.
\r\n\r\n3.6. Nút láng giềng (Neighbors)
\r\n\r\nCác nút mạng gắn với cùng một liên kết.
\r\n\r\n3.7. Giao diện (Interface)
\r\n\r\nMặt tiếp giáp của nút mạng và liên kết.
\r\n\r\n3.8. Địa chỉ (Address)
\r\n\r\nPhần định danh tầng IPv6 cho một giao diện\r\nhoặc một tập hợp các giao diện.
\r\n\r\n3.9. Gói tin (packet)
\r\n\r\nPhần mào đầu IPv6 cộng với phần dữ liệu\r\n(payload).
\r\n\r\n3.10. MTU (Maximum Transmission Unit)
\r\n\r\nĐơn vị truyền tải tối đa.
\r\n\r\n3.11. MTU liên kết (Link MTU)
\r\n\r\nĐơn vị truyền tải tối đa của một liên kết,\r\ntức là kích thước lớn nhất của một gói tin (tính bằng octet) có thể truyền tải\r\nđược qua một liên kết.
\r\n\r\n3.12. MTU tuyến (Path MTU)
\r\n\r\nMTU liên kết nhỏ nhất trong tất cả các MTU\r\nliên kết trên một đường truyền giữa Nút nguồn và Nút đích.
\r\n\r\n3.13. Địa chỉ Unicast
\r\n\r\nĐịa chỉ Unicast dùng để xác định một giao\r\ndiện (Interface). Gói tin có đích đến là địa chỉ Unicast sẽ được chuyển đến một\r\ngiao diện duy nhất.
\r\n\r\n3.14. Địa chỉ Anycast
\r\n\r\nĐịa chỉ Anycast dùng để xác định nhiều giao\r\ndiện. Gói tin có đích đến là địa chỉ Anycast sẽ được chuyển đến một giao diện trong\r\nsố các giao diện có cùng địa chỉ Anycast, thông thường là giao diện gần nhất (được\r\nxác định thông qua giao thức định tuyến đang sử dụng).
\r\n\r\n3.15. Địa chỉ Multicast
\r\n\r\nĐịa chỉ Multicast dùng để xác định nhiều giao\r\ndiện. Gói tin có đích đến là địa chỉ Mulicast sẽ được chuyển đến tất cả các\r\ngiao diện có cùng địa chỉ Multicast.
\r\n\r\n3.16. ICMP (Internet Control Message Protocol)
\r\n\r\nGiao thức bản tin điều khiển Internet.
\r\n\r\n\r\n\r\n4.1. Giới thiệu
\r\n\r\nGiao thức Internet phiên bản 6 (IPv6) là một\r\nphiên bản mới của Giao thức Internet, được thiết kế như sự kế thừa Giao thức\r\nInternet phiên bản 4 (IPv4). Những thay đổi từ IPv4 sang IPv6 chủ yếu tập trung\r\nvào:
\r\n\r\nMở rộng không gian địa chỉ: Bằng việc tăng kích\r\ncỡ địa chỉ IP từ 32 bit lên 128 bit, IPv6 hỗ trợ nhiều cấp độ phân cấp địa chỉ,\r\nnhiều nút mạng định địa chỉ và làm cho quá trình cấu hình tự động của địa chỉ đơn\r\ngiản hơn. Khả năng mở rộng của định tuyến Multicast (tìm đường đi cho địa chỉ\r\nMulticast) được cải thiện bằng cách thêm trường Phạm vi vào địa chỉ Multicast.\r\nĐồng thời định nghĩa một kiểu địa chỉ mới là địa chỉ Anycast, được dùng để gửi một\r\ngói tin đến một nhóm rút mạng bất kỳ.
\r\n\r\nĐơn giản hóa khuôn dạng Phần mào đầu: Một số trường trong\r\nPhần mào đầu IPv4 được lược bỏ hoặc chuyển thành Tùy chọn giúp giảm thời gian xử\r\nlý các trường hợp thường gặp của quá trình xử lý gói tin và hạn chế được băng thông\r\nphải sử dụng cho Phần mào đầu IPv6.
\r\n\r\nCải tiến các Phần mở rộng và các Tùy chọn: Các Tùy chọn của Phần\r\nmào đầu IP được mã hóa, cho phép chuyển tiếp hiệu quả hơn, giảm bớt các giới\r\nhạn nghiêm ngặt về độ dài của các Tùy chọn và tăng tính linh hoạt của các tùy\r\nchọn trong tương lai.
\r\n\r\nKhả năng ghi Nhãn luồng: Khả năng mới này của\r\nIPv6 cho phép ghi nhãn các gói tin thuộc các luồng lưu lượng cụ thể mà bên gửi\r\nyêu cầu xử lý đặc biệt, chẳng hạn như yêu cầu "không thiết lập các thông số\r\nmặc định cho chất lượng dịch vụ" hoặc yêu cầu dịch vụ "thời gian\r\nthực".
\r\n\r\nKhả năng xác thực và bảo mật: Các Phần mở rộng của\r\nPhần mào đầu IPv6 giúp hỗ trợ xác thực, bảo đảm tính toàn vẹn dữ liệu và bảo\r\nmật dữ liệu.
\r\n\r\n4.2. Định dạng của Phần mào đầu của IPv6
\r\n\r\nHình 1 - Định dạng Phần\r\nmào đầu IPv6
\r\n\r\nPhiên bản: Sử dụng 4 bit.
\r\n\r\nSố hiệu phiên bản của Giao thức Internet,\r\ntrong trường hợp này giá trị trường Phiên bản = 6.
\r\n\r\nPhân lớp lưu lượng: Sử dụng 8 bit.
\r\n\r\n(Xem 4.6)
\r\n\r\nNhãn luồng: Sử dụng 20 bit.
\r\n\r\n(Xem 4.5)
\r\n\r\nĐộ dài tải: Sử dụng 16 bit.
\r\n\r\nĐộ dài phần dữ liệu của gói tin IPv6, tức là phần\r\ncòn lại của gói tin sau Phần mào đầu IPv6 này, tính bằng đơn vị octet. Các mào\r\nđầu mở rộng [điều 4.3] được coi là một phần của dữ liệu gói tin, do đó nó được\r\ntính toán vào chiều dài gói tin.
\r\n\r\nMào đầu kế tiếp: Sử dụng 8 bit.
\r\n\r\nXác định kiểu của mào đầu liền kề ngay sau\r\nPhần mào đầu IPv6. Giá trị của trường này có cùng giá trị với trường Giao thức\r\ncủa IPv4.
\r\n\r\nGiới hạn số chặng: Sử dụng 8 bit.
\r\n\r\nGiới hạn số chặng chuyển tiếp. Giá trị của\r\ntrường này sẽ giảm đi 1 mỗi khi gói tin bị chuyển tiếp qua một nút mạng. Gói\r\ntin sẽ bị loại nếu trường này giảm xuống 0.
\r\n\r\nĐịa chỉ nguồn: Sử dụng 128 bit.
\r\n\r\nĐịa chỉ của nơi khởi tạo gói tin.
\r\n\r\nĐịa chỉ đích: Sử dụng 128 bit.
\r\n\r\nĐịa chỉ của nơi dự kiến sẽ nhận gói tin (có\r\nthể không phải là nơi nhận cuối cùng nếu có sự hiện diện của Mào đầu định\r\ntuyến).
\r\n\r\n4.3. Các mào đầu mở rộng của IPv6
\r\n\r\nTrong IPv6, thông tin về tầng kết nối mạng\r\ntùy chọn (optional internet-layer) được mã hóa trong các mào đầu riêng biệt đặt\r\ngiữa Phần mào đầu IPv6 và mào đầu của tầng trên (upper layer header) trong một\r\ngói tin IPv6. Các mào đầu này được gọi là mào đầu mở rộng và được xác định bởi\r\ncác giá trị khác nhau trong trường Mào đầu kế tiếp của Phần mào đầu IPv6. Một\r\ngói tin IPv6 có thể không mang hoặc mang một hay nhiều mào đầu mở rộng, mỗi mào\r\nđầu mở rộng cụ thể thì được xác định bởi trường Mào đầu kế tiếp của mào đầu liền\r\nkề trước nó.
\r\n\r\nVí dụ:
\r\n\r\nHình 2 - Một số ví dụ\r\nvề các mào đầu mở rộng của gói tin IPv6
\r\n\r\nTrên đường đi của gói tin, các mào đầu mở\r\nrộng không bị kiểm tra hay xử lý bởi bất kỳ nút mạng nào cho đến khi gói tin đến\r\nđược nút mạng (hoặc bộ các nút mạng trong trường hợp Multicast) đã được xác\r\nđịnh trong trường Địa chỉ đích của Phần mào đầu IPv6. Lúc này, quá trình tách kênh\r\n(demultiplexing) trong trường Mào đầu kế tiếp của Phần mào đầu IPv6 sẽ gọi các\r\nmô đun để xử lý mào đầu mở rộng đầu tiên, hoặc Mào đầu của tầng trên nếu không\r\ncó sự hiện diện của mào đầu mở rộng nào. Nội dung và ngữ nghĩa trong mỗi mào\r\nđầu mở rộng xác định liệu có xử lý hay không xử lý Mào đầu ngay sau nó. Vì vậy,\r\ncác mào đầu mở rộng phải được xử lý theo đúng trình tự chúng xuất hiện trong\r\ngói tin.
\r\n\r\nCó một trường hợp ngoại lệ không giống như đã\r\nnói ở trên đó là Mào đầu tùy chọn từng chặng, sự hiện diện của mào đầu này buộc\r\ngói tin phải được kiểm tra và xử lý bởi tất cả các nút mạng dọc theo đường đi của\r\nmột gói tin, bao gồm cả Nguồn và Đích. Vì vậy, Mào đầu tùy chọn từng chặng nếu có\r\nthì luôn đứng sau Phần mào đầu IPv6. Sự hiện diện của nó được chỉ định bởi các\r\ngiá trị 0 trong trường Mào đầu kế tiếp của Phần mào đầu IPv6.
\r\n\r\nTrong quá trình xử lý một mào đầu, một nút mạng\r\nđược yêu cầu xử lý Mào đầu kế tiếp nhưng nút mạng không nhận diện được giá trị trường\r\nMào đầu kế tiếp trong mào đầu hiện tại, nó sẽ loại bỏ gói tin và gửi một Tin\r\nnhắn sự cố tham số ICMP tới nơi tạo lập gói tin, với giá trị mã ICMP là 1 (gặp\r\nlỗi không nhận diện được Mào đầu kế tiếp) và trường Con trỏ ICMP có chứa phần\r\nlệch của các giá trị không nhận diện được trong các gói tin ban đầu. Hành động tương\r\ntự sẽ được thực hiện nếu một nút mạng gặp phải giá trị 0 trong Mào đầu kế tiếp của\r\nmột mào đầu bất kỳ ngoại trừ Phần mào đầu IPv6.
\r\n\r\nĐộ dài của một mào đầu mở rộng luôn là một\r\nbội số của 8 octet để luôn giữ được 8 octet cho các mào đầu theo sau.
\r\n\r\nMột thực thi IPv6 đầy đủ bao gồm sự thực thi của\r\ncác mào đầu mở rộng sau đây:
\r\n\r\n• Tùy chọn từng chặng
\r\n\r\n• Định tuyến (kiểu 0)
\r\n\r\n• Phân mảnh
\r\n\r\n• Tùy chọn đích
\r\n\r\n• Xác thực
\r\n\r\n• Đóng gói an toàn phần dữ liệu (Encapsulating\r\nSecurity Payload)
\r\n\r\nBốn mào đầu đầu tiên được quy định trong tiêu\r\nchuẩn này, hai mào đầu cuối cùng được quy định tương ứng trong [RFC-2402] và [RFC-2406]
\r\n\r\n4.3.1 Thứ tự của các mào đầu mở rộng
\r\n\r\nKhi gói tin có chứa nhiều mào đầu mở rộng,\r\nchúng được sắp xếp theo thứ tự sau:
\r\n\r\n• Phần mào đầu IPv6.
\r\n\r\n• Mào đầu tùy chọn từng chặng.
\r\n\r\n• Mào đầu tùy chọn đích (Chú thích 1).
\r\n\r\n• Mào đầu định tuyến.
\r\n\r\n• Mào đầu phân mảnh.
\r\n\r\n• Mào đầu xác thực (Chú thích 2).
\r\n\r\n• Mào đầu đóng gói an toàn phần dữ liệu\r\n(Encapsulating Security Payload) (Chú thích 2).
\r\n\r\n• Mào đầu tùy chọn đích (Chú thích 3).
\r\n\r\n• Mào đầu của tầng trên (Upper layer).
\r\n\r\nCHÚ THÍCH 1: Cho các Tùy chọn được xử lý bởi\r\nđích đầu tiên trong trường Địa chỉ đích của Phần mào đầu IPv6 và những nút mạng\r\ncòn lại được liệt kê trong Mào đầu định tuyến.
\r\n\r\nCHÚ THÍCH 2: Các yêu cầu bổ sung liên quan đến\r\nthứ tự tương đối của Mào đầu xác thực và Mào đầu đóng gói an toàn phần tải được\r\nđưa ra trong [RFC-2406].
\r\n\r\nCHÚ THÍCH 3: Cho các Tùy chọn chỉ được xử lý\r\nbởi đích đến cuối cùng của gói tin.
\r\n\r\nMỗi mào đầu mở rộng sẽ xuất hiện nhiều nhất là\r\nmột lần, ngoại trừ Mào đầu tùy chọn đích. Nó có thể xuất hiện tối đa hai lần\r\n(một lần ở trước Mào đầu định tuyến và một lần trước Mào đầu của tầng trên).
\r\n\r\nNếu Mào đầu của tầng trên cũng là Phần mào đầu\r\nIPv6 (trong trường hợp IPv6 được ngầm hóa hoặc đóng gói trong IPv6), nó có thể được\r\ntheo sau bởi mào đầu mở rộng của chính nó.
\r\n\r\nNếu nhận diện được mào đầu mở rộng nào khác,\r\nthứ tự tương đối của chúng cũng phải xác định theo thứ tự của các mào đầu mở\r\nrộng như đã nêu ở trên.
\r\n\r\nCác nút mạng IPv6 phải chấp nhận và cố gắng xử\r\nlý các mào đầu mở rộng theo bất kỳ thứ tự nào và thực hiện với số lần xuất hiện\r\nbất kỳ trong cùng một gói tin, ngoại trừ trường hợp Mào đầu tùy chọn từng chặng\r\nphải xuất hiện ngay sau Phần mào đầu IPv6. Tuy nhiên cần phải nhấn mạnh rằng,\r\ncác gói tin gốc IPv6 (từ nút nguồn đầu tiên) phải tuân theo thứ tự nêu ở trên\r\n[4.3.1] cho đến khi và chỉ khi yêu cầu này được rà soát hoặc sửa đổi.
\r\n\r\n4.3.2. Các Tùy chọn
\r\n\r\nHai mào đầu mở rộng là Mào đầu tùy chọn từng chặng\r\nvà Mào đầu tùy chọn đích đều mang theo một số Tùy chọn được mã hóa kiểu T-L-V\r\n(Type-Length-Value) theo định dạng như sau:
\r\n\r\n\r\n Kiểu tùy chọn \r\n | \r\n \r\n Độ dài Dữ liệu tùy\r\n chọn \r\n | \r\n \r\n Dữ liệu tùy chọn \r\n | \r\n
Kiểu tùy chọn: Sử dụng 8 bit.
\r\n\r\nKý hiệu nhận dạng kiểu của Tùy chọn
\r\n\r\nĐộ dài của Dữ liệu tùy chọn: Sử dụng 8 bit.
\r\n\r\nĐộ dài của trường Dữ liệu tùy chọn của chính\r\nTùy chọn đó (đơn vị là Octet).
\r\n\r\nDữ liệu tùy chọn: Trường có độ dài\r\nthay đổi
\r\n\r\nDữ liệu cụ thể của kiểu Tùy chọn đã xác định\r\nở trên.
\r\n\r\nChuỗi các Tùy chọn bên trong một mào đầu phải\r\nđược xử lý đúng theo thứ tự chúng xuất hiện trong mào đầu, nhưng bên nhận có\r\nthể không làm như vậy, ví dụ bên nhận có thể quét qua Mào đầu, tìm kiếm một tùy\r\nchọn cụ thể và xử lý tùy chọn trước khi xử lý các tùy chọn trước nó.
\r\n\r\nCác bộ nhận dạng Kiểu tùy chọn được mã hóa sao\r\ncho nếu trong quá trình xử lý, nút mạng IPv6 không nhận ra Kiểu tùy chọn thì\r\nhai bit bậc cao nhất sẽ xác định các bước phải thực hiện:
\r\n\r\n• 00: Bỏ qua Tùy chọn này và tiếp tục xử lý Mào\r\nđầu.
\r\n\r\n• 01: Loại bỏ gói tin.
\r\n\r\n• 10: Loại gói tin bất kể Địa chỉ đích của\r\ngói tin có thể là một địa chỉ Multicast, đồng thời gửi một Tin nhắn sự cố tham\r\nsố ICMP, mã 2 tới Địa chỉ nguồn của gói tin và trỏ tới Kiểu tùy chọn chưa nhận\r\nra được.
\r\n\r\n• 11: Loại bỏ gói tin và nếu Địa chỉ đích của\r\ngói tin đó không phải là một địa chỉ Multicast thì gửi một Tin nhắn sự cố tham\r\nsố ICMP, mã 2 tới Địa chỉ nguồn của gói tin, trỏ tới Kiểu tùy chọn chưa xác\r\nđịnh được.
\r\n\r\nBit bậc 3 của Kiểu tùy chọn xác định việc Dữ liệu\r\ntùy chọn của Tùy chọn đó có thay đổi hay không thay đổi trên đường đi đến đích\r\ncuối cùng của gói tin. Khi một Mào đầu xác thực xuất hiện trong gói tin, bất kỳ\r\nTùy chọn nào mang dữ liệu có thể thay đổi trên đường đi của gói tin thì toàn bộ\r\ntrường Dữ liệu tùy chọn của Tùy chọn đó phải được coi như những octet không\r\nmang giá trị khi tính toán hoặc khi đang xác minh giá trị xác thực của gói tin.
\r\n\r\n• Giá trị 0 (Dữ liệu tùy chọn không thay đổi trên\r\ntoàn tuyến)
\r\n\r\n• Giá trị 1 (Dữ liệu tùy chọn có thể thay đổi\r\ntrên toàn tuyến)
\r\n\r\nBa bit bậc cao được mô tả ở trên được coi như\r\nlà một phần không tách rời của Kiểu tùy chọn. Do đó, mỗi Tùy chọn cụ thể được\r\nxác định bởi đầy đủ 8 bit Kiểu tùy chọn, chứ không phải 5 bit còn lại của Kiểu\r\ntùy chọn.
\r\n\r\nMào đầu tùy chọn từng chặng và Mào đầu tùy\r\nchọn đích sử dụng cùng một khoảng cách đánh số Kiểu tùy chọn. Tuy nhiên, các\r\nđặc điểm kỹ thuật của một tùy chọn cụ thể có thể giới hạn việc sử dụng khoảng\r\ncách này cho chỉ một trong hai mào đầu này.
\r\n\r\nCác Tùy chọn đặc biệt có thể có những yêu cầu\r\nliên kết đặc biệt để đảm bảo rằng các giá trị nhiều octet trong các trường Dữ liệu\r\ntùy chọn rơi vào trong những giới hạn quy định. Sự sắp xếp của một Tùy chọn được\r\nxác định bằng cách sử dụng ký hiệu xn + y, có nghĩa là Kiểu tùy chọn phải xuất\r\nhiện tại một số nguyên lần của x octet từ điểm bắt đầu của mào đầu cộng với y octet.\r\nVí dụ:
\r\n\r\n• 2n Được hiểu là lệch đi mỗi khoảng 2 octet\r\nbất kỳ kể từ điểm đầu của Mào đầu.
\r\n\r\n• 8n + 2 Được hiểu là lệch đi mỗi khoảng 8\r\noctet bất kỳ từ điểm bắt đầu của Mào đầu sau đó cộng thêm 2 octet.
\r\n\r\nCó hai Tùy chọn đệm được sử dụng khi cần\r\nthiết để sắp xếp các Tùy chọn theo trật tự liên tiếp nhau và chèn mào đầu đang\r\nmang nó tới một bội số của 8 octet dài. Các Tùy chọn đệm này phải được nhận ra bởi\r\ntất cả các điểm xử lý IPv6:
\r\n\r\n\r\n 0 \r\n | \r\n
Tùy chọn đệm 1
\r\n\r\nCHÚ THÍCH: Định dạng của các Tùy chọn đệm 1\r\nlà định dạng đặc biệt, nó không có trường độ dài và các trường giá trị.
\r\n\r\nTùy chọn đệm 1 được sử dụng để chèn một octet\r\ncủa bộ đệm vào miền Tùy chọn của một mào đầu. Nếu cần đến nhiều hơn một octet của\r\nbộ đệm thì Tùy chọn đệm N (mô tả trong phần tiếp theo) sẽ được sử dụng thay cho\r\nTùy chọn đệm 1.
\r\n\r\nTùy chọn đệm N
\r\n\r\n\r\n 1 \r\n | \r\n \r\n Độ dài dữ liệu tùy\r\n chọn \r\n | \r\n \r\n Dữ liệu tùy chọn \r\n | \r\n
Các Tùy chọn đệm N được sử dụng để chèn hai hoặc\r\nnhiều hơn hai octet của bộ đệm vào miền Tùy chọn của một mào đầu. Đối với N\r\noctet của bộ đệm, trường Độ dài dữ liệu tùy chọn có chứa giá trị N-2, và Dữ\r\nliệu tùy chọn bao gồm N-2 octet chưa có giá trị.
\r\n\r\n4.3.3. Mào đầu tùy chọn từng chặng
\r\n\r\nMào đầu tùy chọn từng chặng được sử dụng để\r\nmang những thông tin tùy chọn bắt buộc bị kiểm tra bởi tất cả các nút mạng trên\r\nđường đi của gói tin. Mào đầu tùy chọn từng chặng được nhận dạng bởi giá trị 0\r\ncủa Mào đầu kế tiếp trong Phần mào đầu IPv6 và có định dạng như sau:
\r\n\r\nMào đầu kế tiếp: Sử dụng 8 bit.
\r\n\r\nXác định kiểu mào đầu ngay sau Mào đầu tùy\r\nchọn từng chặng, sử dụng các giá trị giống như trường Giao thức của IPv4 [TCVN 8072:2009]
\r\n\r\nĐộ dài mào đầu mở rộng: Sử dụng 8 bit.
\r\n\r\nKích thước của Mào đầu tùy chọn từng chặng theo\r\nđơn vị 8 octet (không tính đến 8 octet đầu tiên).
\r\n\r\nCác Tùy chọn: Trường có độ dài\r\nthay đổi.
\r\n\r\nĐộ dài thay đổi sao cho Mào đầu tùy chọn từng\r\nchặng hoàn toàn là một bội số của 8 octet dài. Chứa một hoặc nhiều Tùy chọn (mã\r\nhóa TLV), như mô tả trong 4.3.2.
\r\n\r\nChỉ có các Tùy chọn từng chặng được xác định trong\r\ntiêu chuẩn này là các Tùy chọn đệm 1 và Đệm N quy định trong 4.3.2.
\r\n\r\n4.3.4. Mào đầu định tuyến
\r\n\r\nMào đầu định tuyến được sử dụng bởi một Nút nguồn\r\nIPv6 nhằm liệt kê tất cả các nút mạng trung gian mà gói tin IPv6 phải đi qua trên\r\nđường từ nguồn đến đích của gói tin. Chức năng này rất tương đồng với Nguồn không\r\nnghiêm ngặt và Tùy chọn tuyến ghi của IPv4 [TCVN 8072:2009]. Mào đầu định tuyến\r\nđược nhận dạng bởi giá trị Mào đầu kế tiếp là 43 của mào đầu ngay trước nó và\r\ncó định dạng như sau:
\r\n\r\n\r\n Mào đầu kế tiếp \r\n | \r\n \r\n Độ dài mào đầu mở\r\n rộng \r\n | \r\n \r\n Kiểu định tuyến \r\n | \r\n \r\n Phân đoạn còn lại \r\n | \r\n
\r\n \r\n Dữ liệu kiểu riêng \r\n\r\n | \r\n
Mào đầu kế tiếp: Sử dụng 8 bit.
\r\n\r\nGiúp xác định kiểu mào đầu ngay sau Mào đầu định\r\ntuyến. Sử dụng chung các giá trị như các trường của giao thức IPv4.
\r\n\r\nĐộ dài mào đầu mở rộng: Sử dụng 8 bit.
\r\n\r\nKích thước của Mào đầu định tuyến theo đơn vị\r\n8 octet (không tính đến 8 octet đầu tiên).
\r\n\r\nKiểu định tuyến: Sử dụng 8 bit.
\r\n\r\nGiúp xác định các kiểu Mào đầu định tuyến\r\nkhác nhau.
\r\n\r\nPhân đoạn còn lại: Sử dụng 8 bit.
\r\n\r\nSố phân đoạn tuyến còn lại. Tức là, số lượng các\r\nnút mạng trung gian vẫn còn phải đi qua của gói tin trước khi đến được đích\r\ncuối cùng.
\r\n\r\nDữ liệu kiểu riêng: Trường có độ dài\r\nthay đổi.
\r\n\r\nTrường (có khuôn dạng xác định bởi Kiểu định\r\ntuyến) có độ dài thay đổi sao cho Mào đầu định tuyến là bội của độ dài 8 Octet.
\r\n\r\nNếu trong quá trình xử lý một gói tin đã\r\nnhận, một nút mạng gặp một Mào đầu định tuyến với giá trị Kiểu định tuyến chưa\r\nnhận diện được, hành động tiếp theo của các nút mạng phụ thuộc vào giá trị của\r\ntrường Phân đoạn còn lại, như sau:
\r\n\r\n• Nếu trường Phân đoạn còn lại bằng 0, nút\r\nmạng phải bỏ qua Mào đầu định tuyến và tiến hành xử lý mào đầu tiếp theo trong gói\r\ntin, mào đầu mà đã được xác định bởi trường Mào đầu kế tiếp trong Mào đầu định\r\ntuyến.
\r\n\r\n• Nếu trường Phân đoạn còn lại khác 0, nút\r\nmạng phải loại bỏ gói tin và gửi một tin nhắn sự cố tham số ICMP, Mã 0 tới Địa\r\nchỉ nguồn của gói tin, trỏ tới Kiểu định tuyến chưa nhận diện được.
\r\n\r\nSau khi xử lý một Mào đầu định tuyến của gói\r\ntin đã nhận được, nếu một nút mạng trung gian xác định rằng gói tin được chuyển\r\nvào một liên kết có MTU liên kết nhỏ hơn so với kích thước của gói tin, nút mạng\r\nphải loại bỏ gói tin và gửi một Tin nhắn gói tin ICMP quá lớn đến Địa chỉ nguồn\r\ncủa gói tin.
\r\n\r\nKiểu 0 của Mào đầu định tuyến có định dạng\r\nnhư sau:
\r\n\r\n\r\n Mào đầu kế tiếp \r\n | \r\n \r\n Độ dài mào đầu mở\r\n rộng \r\n | \r\n \r\n Kiểu định tuyến=0 \r\n | \r\n \r\n Phân đoạn còn lại \r\n | \r\n |
\r\n Dự trữ \r\n\r\n | \r\n ||||
\r\n Địa chỉ [1] \r\n\r\n | \r\n ||||
\r\n Địa chỉ [2] \r\n\r\n | \r\n ||||
\r\n \r\n | \r\n \r\n \r\n | \r\n |||
\r\n Địa chỉ [n] \r\n\r\n | \r\n ||||
\r\n | \r\n | \r\n | \r\n | \r\n |
Mào đầu kế tiếp Sử dụng 8 bit.
\r\n\r\nXác định các kiểu của mào đầu ngay sau Mào\r\nđầu định tuyến. Sử dụng cùng một giá trị như các trường trong giao thức IPv4\r\n[TCVN 8072:2009].
\r\n\r\nĐộ dài mào đầu mở rộng Sử dụng 8 bit
\r\n\r\nChiều dài của Mào đầu định tuyến tính bằng\r\nđơn vị 8 octet, không bao gồm 8 octet đầu tiên. Với kiểu 0 của Mào đầu định\r\ntuyến, Chiều dài mào đầu mở rộng bằng hai lần số lượng địa chỉ trong mào đầu.
\r\n\r\nKiểu định tuyến: Trong trường hợp này\r\nlà kiểu 0
\r\n\r\nPhân đoạn còn lại: Sử dụng 8 bit
\r\n\r\nSố lượng các phân đoạn định tuyến còn lại,\r\nnghĩa là số lượng các nút mạng trung gian đã được liệt kê rõ ràng vẫn được truy\r\ncập trước khi đi đến đích cuối cùng.
\r\n\r\nDự trữ Sử dụng 32 bit dự trữ.
\r\n\r\nKhởi tạo về 0 để truyền đi và bỏ qua khi nhận\r\nđược.
\r\n\r\nĐịa chỉ [1 .. n] Vectơ của các địa\r\nchỉ 128 bit, đánh số từ 1 đến n.
\r\n\r\nCác địa chỉ Multicast không được xuất hiện\r\ntrong một Mào đầu định tuyến kiểu 0, hoặc trong trường Địa chỉ đích IPv6 của\r\nmột gói tin mang Mào đầu định tuyến kiểu 0.
\r\n\r\nMột Mào đầu định tuyến không bị kiểm tra hoặc\r\nxử lý cho đến khi nó tới nút mạng đã được xác định trong trường Địa chỉ đích của\r\nPhần mào đầu IPv6. Trong nút mạng, quá trình xử lý trường Mào đầu kế tiếp của\r\nmào đầu liền kề trước nó làm cho mô-đun Mào đầu định tuyến được gọi ra, trong\r\ntrường hợp của Định tuyến kiểu 0, thực hiện các thuật toán sau đây:
\r\n\r\nIf Phân đoạn còn lại = 0 {
\r\n\r\ntiến hành xử lý mào đầu tiếp theo\r\ntrong gói tin, kiểu mào đầu đã được xác định bởi trường Mào đầu kế tiếp trong\r\nMào đầu định tuyến
\r\n\r\n}
\r\n\r\nelse if Độ dài mào đầu mở rộng là lẻ {
\r\n\r\ngửi một tin nhắn sự cố tham số\r\nICMP, Mã 0 đến các Địa chỉ nguồn, trỏ tới đến trường Độ dài mào đầu\r\nmở rộng, và loại bỏ gói tin
\r\n\r\n}
\r\n\r\nelse {
\r\n\r\ntính toán n - số lượng địa chỉ trong\r\nMào đầu định tuyến, bằng cách chia Độ dài mào đầu mở rộng cho 2
\r\n\r\nif Phân đoạn còn lại lớn hơn n {
\r\n\r\ngửi một tin nhắn sự\r\ncố tham số ICMP, Mã 0 đến các địa chỉ nguồn, trỏ vào trường\r\nPhân đoạn còn lại và loại bỏ gói tin
\r\n\r\n}
\r\n\r\nelse {
\r\n\r\nGiảm Phân đoạn còn\r\nlại đi 1; tính i - các chỉ số của địa chỉ tiếp theo sẽ được truy cập\r\ntrong vectơ địa chỉ, bằng cách lấy n trừ đi Phân loại còn lại
\r\n\r\nif Địa chỉ [i] hoặc Địa\r\nchỉ Đích IPv6 là Multicast {
\r\n\r\nloại bỏ gói tin
\r\n\r\n}
\r\n\r\nelse {
\r\n\r\nhoán vị\r\ngiữa Địa chỉ đích IPv6 và Địa chỉ [i]
\r\n\r\nnếu Giới hạn số chặng của IPv6 là nhỏ hơn hoặc\r\nbằng 1 {gửi một tin nhắn ICMP về vượt quá giới hạn về thời gian, số chặng cho\r\nphép ở nút trung gian tới Địa chỉ nguồn và loại bỏ các gói tin
\r\n\r\n}
\r\n\r\nelse {
\r\n\r\ngiảm Giới\r\nhạn số chặng đi, gửi lại gói tin tới mô đun IPv6 để truyền đến đích\r\nmới
\r\n\r\n}
\r\n\r\n}
\r\n\r\n}
\r\n\r\n}
\r\n\r\nVí dụ sau mô tả những tác động của các thuật\r\ntoán trên trong trường hợp của một nút nguồn S gửi một gói tin đến đích nút D,\r\nsử dụng Mào đầu định tuyến để buộc gói tin phải định tuyến thông qua các nút\r\ntrung gian I1, I2, I3. Các giá trị của Phần mào đầu IPv6 có liên quan và các trường\r\nMào đầu định tuyến trên mỗi phân đoạn của đường đi của gói tin sẽ như sau:
\r\n\r\nKhi gói dữ liệu truyền từ S đến I1:
\r\n\r\nĐịa chỉ nguồn = S Độ dài\r\nphân đoạn mở rộng = 6
\r\n\r\nĐịa chỉ đích = I1 Phân\r\nđoạn còn lại = 3
\r\n\r\nĐịa\r\nchỉ [1] = I2
\r\n\r\nĐịa\r\nchỉ [2] = I3
\r\n\r\nĐịa\r\nchỉ [3] = D
\r\n\r\nKhi gói dữ liệu truyền từ I1 đến I2:
\r\n\r\nĐịa chỉ nguồn = S Độ dài\r\nphân đoạn mở rộng = 6
\r\n\r\nĐịa chỉ đích = I2 Phân\r\nđoạn còn lại = 2
\r\n\r\nĐịa\r\nchỉ [1] = I1
\r\n\r\nĐịa\r\nchỉ [2] = I3
\r\n\r\nĐịa\r\nchỉ [3] = D
\r\n\r\nKhi gói dữ liệu truyền từ I2 đến I3:
\r\n\r\nĐịa chỉ nguồn = S Độ dài\r\nphân đoạn mở rộng = 6
\r\n\r\nĐịa chỉ đích = I3 Phân\r\nđoạn còn lại = 1
\r\n\r\nĐịa\r\nchỉ [1] = I1
\r\n\r\nĐịa\r\nchỉ [2] = I2
\r\n\r\nĐịa\r\nchỉ [3] = D
\r\n\r\nKhi gói dữ liệu truyền từ I3 đến D:
\r\n\r\nĐịa chỉ nguồn = S Độ dài\r\nphân đoạn mở rộng = 6
\r\n\r\nĐịa chỉ đích = D Phân\r\nđoạn còn lại = 0
\r\n\r\nĐịa\r\nchỉ [1] = I1
\r\n\r\nĐịa\r\nchỉ [2] = I2
\r\n\r\nĐịa\r\nchỉ [3] = I3
\r\n\r\n4.3.5. Mào đầu phân mảnh
\r\n\r\nMào đầu phân mảnh được sử dụng khi một nguồn IPv6\r\ngửi một gói tin lớn, không vừa MTU tuyến đến đích của nó
\r\n\r\nCHÚ THÍCH: Không giống như IPv4, sự phân mảnh\r\ntrong IPv6 chỉ được thực hiện bởi Nút nguồn, chứ không phải bởi các Bộ định\r\ntuyến dọc theo đường đi của gói tin.
\r\n\r\nMào đầu phân mảnh được xác định bởi giá trị của\r\nMào đầu kế tiếp là 44 trong mào đầu liền kề trước nó, và nó có định dạng sau:
\r\n\r\n\r\n Mào đầu kế tiếp \r\n | \r\n \r\n Dự trữ \r\n | \r\n \r\n Độ lệch phân mảnh \r\n | \r\n \r\n Res \r\n | \r\n \r\n M \r\n | \r\n
\r\n \r\n Bộ nhận dạng \r\n\r\n | \r\n
Mào đầu kế tiếp Sử dụng 8 bit
\r\n\r\nXác định kiểu của mào đầu ban đầu của Phần phân\r\nmảnh của gói tin gốc. Sử dụng các giá trị giống như trường Giao thức của IPv4\r\n[TCVN 8072-2009].
\r\n\r\nDự trữ Sử dụng 8 bit
\r\n\r\nTrường dự trữ. Khởi tạo về 0 để truyền, bỏ\r\nqua khi nhận.
\r\n\r\nĐộ lệch phân mảnh Sử dụng 13 bit.
\r\n\r\nĐộ lệch theo đơn vị 8 octet của các dữ liệu sau\r\nmào đầu này, liên quan đến sự bắt đầu của Phần phân mảnh của gói tin gốc.
\r\n\r\nRes Sử dụng 2 bit trường dự trữ.
\r\n\r\nKhởi tạo về 0 để truyền, bỏ qua khi nhận.
\r\n\r\nCờ M
\r\n\r\nMang giá trị 1 có nghĩa là còn phân mảnh;\r\nMang giá trị 0 có nghĩa đây là phân mảnh cuối cùng.
\r\n\r\nBộ nhận dạng Sử dụng 32 bit. Xem mô\r\ntả dưới đây.
\r\n\r\nĐể có thể gửi một gói tin lớn hơn đơn vị\r\ntruyền tải tối đa - MTU của tuyến từ nguồn đến đích, nút nguồn có thể chia các\r\ngói tin thành các phân mảnh và gửi từng phân mảnh như là một gói tin riêng biệt\r\nsau đó được tổng hợp lại ở nút nhận.
\r\n\r\nĐối với mỗi gói tin phân mảnh, nút nguồn tạo ra\r\nmột giá trị nhận dạng. Với cùng một Địa chỉ nguồn và Địa chỉ đích, giá trị nhận\r\ndạng được tạo ra ở trên phải khác nhau đối với mỗi gói tin bị phân mảnh khác.\r\nNếu có sự xuất hiện của Mào đầu định tuyến thì Địa chỉ đích của phân mảnh này\r\nlà đích cuối cùng.
\r\n\r\nGói tin lớn ban đầu khi chưa phân mảnh được gọi\r\nlà gói tin gốc, bao gồm hai phần, như minh họa:
\r\n\r\nGói tin gốc:
\r\n\r\n\r\n Phần\r\n không phân mảnh \r\n | \r\n \r\n Phần phân mảnh \r\n | \r\n
Phần không phân mảnh là Phần mào đầu IPv6 cộng\r\nvới bất kỳ mào đầu mở rộng nào mà bắt buộc phải xử lý bởi các nút mạng trên đường\r\ntruyền gói tin, có nghĩa là tất cả các mào đầu, bao gồm cả Mào đầu định tuyến\r\nnếu có, Mào đầu tùy chọn từng chặng nếu có, hoặc không có các mào đầu mở rộng nào\r\nkhác.
\r\n\r\nPhần Phân mảnh bao gồm các phần còn lại của\r\ngói tin, có nghĩa là, bất kỳ mào đầu mở rộng nào cần được xử lý chỉ tại Nút đích\r\ncuối cùng cộng với Mào đầu của tầng trên và dữ liệu.
\r\n\r\nPhần phân mảnh của gói tin gốc được chia\r\nthành nhiều đoạn, mỗi đoạn (ngoại trừ đoạn cuối cùng - ngoài cùng bên phải) là một\r\nbội số của độ dài 8 octet. Các phân mảnh được truyền đi như các gói tin phân\r\nmảnh riêng biệt như minh họa:
\r\n\r\nGói tin gốc:
\r\n\r\n\r\n Phần không phân\r\n mảnh \r\n | \r\n \r\n Phân mảnh đầu tiên \r\n | \r\n \r\n Phân mảnh thứ 2 \r\n | \r\n \r\n … \r\n | \r\n \r\n Phân mảnh cuối cùng \r\n | \r\n
Các gói phân mảnh:
\r\n\r\n\r\n Phần không phân\r\n mảnh \r\n | \r\n \r\n Mào đầu phân mảnh \r\n | \r\n \r\n Phân mảnh đầu tiên \r\n | \r\n
\r\n\r\n
\r\n Phần không phân\r\n mảnh \r\n | \r\n \r\n Mào đầu phân mảnh \r\n | \r\n \r\n Phân mảnh thứ 2 \r\n | \r\n
o
\r\n\r\no
\r\n\r\no
\r\n\r\n\r\n Phần không phân\r\n mảnh \r\n | \r\n \r\n Mào đầu phân mảnh \r\n | \r\n \r\n Phân mảnh cuối cùng \r\n | \r\n
Mỗi gói tin phân mảnh gồm có:
\r\n\r\n(1) Phần Không phân mảnh của gói tin gốc với\r\nĐộ dài tải của Phần mào đầu IPv6 ban đầu thay đổi sao cho chỉ chứa độ dài của\r\ngói tin phân mảnh này (không bao gồm chiều dài của bản thân Phần mào đầu IPv6)\r\nvà trường Mào đầu kế tiếp (của mào đầu cuối cùng của Phần không phân mảnh) thay\r\nđổi thành 44.
\r\n\r\n(2) Một Mào đầu phân mảnh có chứa:
\r\n\r\n• Giá trị Mào đầu kế tiếp xác định mào đầu đầu\r\ntiên của Phần phân mảnh của gói tin gốc.
\r\n\r\n• Một Độ lệch phân mảnh chứa phần lệch của\r\nphân mảnh tính theo đơn vị 8 octet, tùy thuộc vào phần bắt đầu của Phần phân\r\nmảnh trong gói tin gốc. Phần độ lệch phân mảnh của đoạn đầu tiên (ngoài cùng\r\nbên trái) là 0.
\r\n\r\n• Một cờ M có giá trị 0 nếu phân mảnh đó là\r\ncuối cùng (ngoài cùng bên phải), các trường hợp khác cờ M có giá trị là 1.
\r\n\r\n• Giá trị nhận diện được tạo từ gói tin gốc.
\r\n\r\n(3) Bản thân mỗi phân mảnh.
\r\n\r\nKích thước của các phân mảnh phải đảm bảo sao\r\ncho phân mảnh đó đi qua được MTU tuyến đến đích của các gói tin (hoặc các đích trong\r\ntrường hợp Multicast).
\r\n\r\nTại điểm đích, các gói tin bị phân mảnh được\r\ntái lập lại thành hình dạng ban đầu của chúng (như lúc chưa phân mảnh), như minh\r\nhọa:
\r\n\r\nTái lập gói tin gốc:
\r\n\r\n\r\n Phần không phân\r\n mảnh \r\n | \r\n \r\n Phần phân mảnh \r\n | \r\n
Sự tái lập tuân theo các quy tắc sau:
\r\n\r\nGói tin gốc được tái hợp lại chỉ từ các gói tin\r\nphân mảnh có cùng một địa chỉ nguồn, địa chỉ đích và mã nhận diện phân mảnh.
\r\n\r\nPhần Không phân mảnh của gói tin đã tái lập bao\r\ngồm tất cả các mào đầu, nhưng không bao gồm Mào đầu phân mảnh của gói phân mảnh\r\nđầu tiên (có nghĩa là các gói tin có Độ lệch phân mảnh là không) với hai sự\r\nthay đổi sau đây:
\r\n\r\n• Trường Mào đầu kế tiếp của mào đầu cuối\r\ncùng trong Phần không phân mảnh được nhập từ trường Mào đầu kế tiếp của Mào đầu\r\nphân mảnh của phân mảnh đầu tiên.
\r\n\r\n• Độ dài tải của gói tin đã tái lập lại được\r\ntính toán từ độ dài của Phần không phân mảnh cộng với độ dài và phần lệch của\r\nphân mảnh cuối cùng. Ví dụ, công thức để tính toán Độ dài tải của gói tin gốc sau\r\nkhi được tái lập:
\r\n\r\nPL.orig = PL.first -\r\nFL.first - 8 + (8 * FO.last) + FL.last
\r\n\r\nTrong đó:
\r\n\r\nPL.orig = Trường Độ dài tải của gói tin sau\r\ntái lập.
\r\n\r\nPL.first = Trường Độ dài tải của gói tin phân\r\nmảnh đầu tiên.
\r\n\r\nFL.first = Độ dài của phân mảnh theo sau Mào đầu\r\nphân mảnh của gói tin phân mảnh đầu tiên.
\r\n\r\nFO.last = Trường Độ lệch phân mảnh của Mào\r\nđầu phân mảnh của gói tin phân mảnh cuối cùng.
\r\n\r\nFL.last = Độ dài của phân mảnh theo sau Mào\r\nđầu phân mảnh của gói tin phân mảnh cuối cùng.
\r\n\r\nPhần phân mảnh của gói tin sau tái lập được\r\nxây dựng từ các phân mảnh theo sau các Mào đầu phân mảnh trong mỗi các gói tin phân\r\nmảnh. Chiều dài của từng phân mảnh được tính toán bằng cách lấy độ dài tải của\r\ngói tin trừ độ dài của các mào đầu nằm giữa Phần mào đầu IPv6 và phân mảnh của chính\r\nnó. Vị trí tương đối của nó trong Phần phân mảnh được tính từ giá trị Độ lệch\r\nphân mảnh của nó.
\r\n\r\nCác Mào đầu phân mảnh không xuất hiện ở gói\r\ntin sau tái lập.
\r\n\r\nCác lỗi sau đây có thể phát sinh trong quá\r\ntrình tái lập các gói tin bị phân mảnh:
\r\n\r\n- Nếu phân mảnh đã được nhận không đủ để hoàn\r\nthiện quá trình tái lập gói tin thì trong vòng 60 giây kể từ khi nhận phân mảnh\r\nđầu tiên, quá trình tái lập các gói tin đó phải được hủy bỏ và tất cả các phân\r\nmảnh đã được nhận được của gói dữ liệu đó phải được loại bỏ. Nếu phân mảnh đầu\r\ntiên (tức là, phân mảnh có phần độ lệch phân mảnh là 0) đã được nhận về thì một\r\ntin nhắn ICMP thông báo quá thời gian tái lập phân mảnh được gửi đến nguồn của\r\ncác phân mảnh đó.
\r\n\r\n- Nếu chiều dài của một phân mảnh (lấy từ trường\r\nĐộ dài tải của gói tin phân mảnh) không phải là bội của 8 octet và cờ M của\r\nphân mảnh đó là 1 thì phân mảnh đó phải bị loại bỏ và gửi một Tin nhắn sự cố\r\ntham số ICMP, Mã 0 đến nguồn của phân mảnh đó, trỏ tới trường Độ dài tải của gói\r\ntin phân mảnh.
\r\n\r\n- Nếu độ dài và phần lệch của một phân mảnh (khiến\r\ncho Độ dài tải của gói tin được tái lập lại từ phân mảnh đó) vượt quá 65.535\r\noctet, thì phân mảnh đó phải được loại bỏ và một tin nhắn sự cố tham số ICMP,\r\nMã 0 được gửi đến nguồn của phân mảnh, trỏ đến trường Độ lệch phân mảnh của gói\r\ntin phân mảnh.
\r\n\r\nCác tình huống sau đây là không mong đợi, tuy\r\nnhiên nếu xuất hiện thì không được coi là lỗi:
\r\n\r\n- Số lượng và nội dung của các mào đầu trước Mào\r\nđầu phân mảnh của các phân mảnh khác nhau của cùng một gói tin ban đầu có thể\r\nkhác nhau. Khi các gói tin đến, bất kỳ mào đầu nào xuất hiện trước Mào đầu phân\r\nmảnh trong mỗi gói tin phân mảnh đều được xử lý trước khi các phân mảnh chuẩn\r\nbị vào quá trình tái lập. Chỉ có những mào đầu trong gói tin phân mảnh có phần\r\nlệch là 0 được giữ lại trong gói tin sau tái lập.
\r\n\r\n- Các giá trị Mào đầu kế tiếp trong các Mào\r\nđầu phân mảnh của các phân mảnh khác nhau trong cùng một gói tin gốc có thể khác\r\nnhau. Chỉ có giá trị từ gói tin không có độ lệch phân mảnh được sử dụng cho quá\r\ntrình tái lập.
\r\n\r\n4.3.6. Mào đầu tùy chọn đích
\r\n\r\nMào đầu tùy chọn đích được sử dụng để mang\r\nthông tin tùy chọn cần được kiểm tra chỉ bởi nút mạng đích của gói tin (hoặc\r\ncác nút mạng đích của gói tin Multicast). Mào đầu tùy chọn đích được xác định bởi\r\ngiá trị Mào đầu kế tiếp là 60 trong mào đầu trước liền kề trước, và có định\r\ndạng sau:
\r\n\r\nMào đầu kế tiếp Sử dụng 8 bit
\r\n\r\nXác định kiểu của mào đầu ngay sau Mào đầu\r\ntùy chọn đích. Sử dụng cùng một giá trị giống như trường Giao thức của IPv4\r\n[TCVN 8072-2009].
\r\n\r\nĐộ dài mào đầu mở rộng Sử dụng 8 bit
\r\n\r\nChiều dài của Mào đầu tùy chọn đích tính theo\r\nđơn vị 8 octet, không bao gồm 8 octet đầu tiên.
\r\n\r\nCác tùy chọn Trường có độ dài thay\r\nđổi.
\r\n\r\nĐộ dài của Mào đầu tùy chọn đích là bội của\r\nđộ dài 8 octet. Chứa một hoặc nhiều tùy chọn mã hóa TLV, như đã mô tả trong\r\n4.3.2.
\r\n\r\nChỉ các tùy chọn đích đã được xác định trong\r\ntiêu chuẩn này là Đệm 1 và Đệm N đã quy định trong 4.3.2.
\r\n\r\nCó thể có hai cách để mã hóa thông tin tùy\r\nchọn đích trong một gói tin IPv6:
\r\n\r\n• Mã hóa như là một Tùy chọn trong Mào đầu tùy\r\nchọn đích
\r\n\r\n• Mã hóa như là một mào đầu mở rộng riêng\r\nbiệt.
\r\n\r\nCác Mào đầu phân mảnh và Mào đầu xác thực\r\nchính là những ví dụ về cách mã hóa như một mào đầu mở rộng riêng biệt. Cách sử\r\ndụng này tùy thuộc vào yêu cầu Nút đích phải làm gì khi không hiểu các thông\r\ntin Tùy chọn:
\r\n\r\n• Nếu yêu cầu là Nút đích loại bỏ gói tin và\r\ntrong trường hợp Địa chỉ đích của gói tin không phải là một địa chỉ Multicast,\r\nnút đích gửi một Tin nhắn ICMP không nhận diện được kiểu đến địa chỉ nguồn của\r\ngói tin, thì thông tin có thể được mã hóa như một Mào đầu riêng biệt hoặc như\r\nmột Tùy chọn trong Mào đầu tùy chọn đích với Kiểu tùy chọn có 2 bit bậc cao\r\nnhất mang giá trị là 11.
\r\n\r\n• Với các yêu cầu khác, thông tin phải được\r\nmã hóa như là một tùy chọn trong Mào đầu tùy chọn đích với Kiểu tùy chọn có giá\r\ntrị 00, 01, hoặc 10 trong hai bit bậc cao nhất, quá trình thực hiện xem 4.3.2.
\r\n\r\n4.3.7. Chỉ thị không có mào đầu kế tiếp
\r\n\r\nGiá trị là 59 trong trường Mào đầu kế tiếp của\r\nPhần mào đầu IPv6 hoặc mào đầu mở rộng bất kỳ sẽ chỉ ra rằng không có gì sau mào\r\nđầu đó. Nếu trường Độ dài tải của Phần mào đầu IPv6 chỉ thị có các octet đi sau\r\nmột mào đầu có trường Mào đầu kế tiếp có giá trị 59 thì những octet đó phải\r\nđược bỏ qua, hoặc cho đi qua mà không bị thay đổi khi chuyển tiếp gói tin.
\r\n\r\n4.4. Các vấn đề về kích thước gói tin
\r\n\r\nIPv6 yêu cầu tất cả liên kết trên Internet phải\r\ncó MTU là 1280 octet hoặc hơn. Trên một liên kết bất kỳ, nếu không thể truyền tải\r\nmột lần một gói gồm 1280 octet thì tầng dưới của IPv6 phải cung cấp phân mảnh\r\nvà tái lập gói tin.
\r\n\r\nCác liên kết có khả năng cấu hình MTU (ví dụ\r\nliên kết PPP [RFC-1661] phải được cấu hình để có một MTU gồm có ít nhất là 1280\r\noctet. Tuy nhiên có thể cấu hình với một MTU gồm 1500 octet hoặc cao hơn để phù\r\nhợp với khả năng đóng gói (tunneling) nhưng vẫn phải đảm bảo không bị phân mảnh\r\nbởi tầng IPv6.
\r\n\r\nTừ mỗi liên kết mà một nút mạng được gắn trực\r\ntiếp vào đó, nút mạng này phải xử lý được các gói tin lớn bằng MTU của liên kết\r\nđó.
\r\n\r\nCần phải nhấn mạnh rằng, các nút mạng IPv6\r\nthực hiện việc tìm kiếm MTU tuyến [RFC-1981] để phát hiện và tận dụng lợi thế của\r\ncác MTU tuyến lớn hơn 1280 octet. Tuy nhiên, một thực thi IPv6 tối thiểu (ví\r\ndụ: trong một khởi động ROM) có thể chỉ đơn giản là tự hạn chế nhằm gửi các gói\r\ntin không lớn hơn 1280 octet và bỏ qua quá trình thực hiện tìm kiếm MTU tuyến.
\r\n\r\nĐể gửi đi một gói tin lớn hơn MTU tuyến, một\r\nnút mạng có thể sử dụng Mào đầu phân mảnh IPv6 để phân mảnh các gói tin tại\r\nnguồn và tái lập lại gói tin tại điểm Đích (hoặc các Đích với trường hợp Multicast).\r\nTuy nhiên, việc sử dụng phương pháp phân mảnh như vậy không được khuyến khích trong\r\ncác ứng dụng cho phép điều chỉnh kích thước gói tin của mình để phù hợp với MTU\r\ntuyến (ví dụ như giảm kích thước các gói tin đến 1280 octet).
\r\n\r\nNút mạng phải có khả năng chấp nhận một gói\r\ntin phân mảnh mà sau khi tái lập có kích thước lớn như 1500 octet. Một nút mạng\r\ncó thể chấp nhận các gói tin bị phân mảnh được lắp ráp lại có kích thước lớn hơn\r\n1500 octet. Một giao thức tầng trên hoặc ứng dụng mà phụ thuộc vào sự phân mảnh\r\nIPv6 để gửi gói tin lớn hơn MTU trong một đường dẫn thì không nên gửi các gói\r\ntin lớn hơn 1500 octet trừ khi nó chắc chắn rằng Nút đích có khả năng lắp ráp lại\r\ncác gói tin có kích thước lớn.
\r\n\r\nTrong quá trình nhận phản hồi khi một gói tin\r\nIPv6 được gửi đến một Đích IPv4 (ví dụ, một gói tin trải qua quá trình biên\r\ndịch từ IPv6 sang IPv4), Nút nguồn IPv6 có thể nhận được một tin nhắn ICMP Gói\r\ntin quá lớn thông báo một MTU của chặng tiếp theo có ít hơn 1280 octet. Trong\r\ntrường hợp này, các nút mạng IPv6 không cần thiết làm giảm kích thước của các\r\ngói tin tiếp theo để ít hơn 1280, nhưng phải mang một Mào đầu phân mảnh trong các\r\ngói tin đó để bộ định tuyến biên dịch IPv6 về IPv4 có thể nhận được một giá trị\r\nnhận dạng phù hợp để có thể sử dụng trong quá trình phân mảnh IPv4. Lưu ý rằng\r\nđiều này có nghĩa là kích thước gói có thể được giảm xuống còn 1232 octet (1280\r\ntrừ đi 40 cho Phần mào đầu IPv6 và 8 cho Mào đầu phân mảnh), và tiếp tục nhỏ\r\nhơn nếu sử dụng thêm các mào đầu mở rộng.
\r\n\r\n4.5. Các Nhãn luồng
\r\n\r\n20 bit của trường Nhãn luồng trong Phần mào\r\nđầu IPv6 có thể được sử dụng bởi một Nút nguồn để ghi nhãn chuỗi các gói tin\r\nđược yêu cầu xử lý đặc biệt bởi các bộ định tuyến IPv6, chẳng hạn như yêu cầu "không\r\ncần thiết lập mặc định về chất lượng dịch vụ" hoặc dịch vụ đòi hỏi "thời\r\ngian thực". Tính năng này của IPv6 hiện vẫn đang thử nghiệm và có thể được\r\nsửa đổi khi yêu cầu về điều khiển luồng trên mạng Internet trở nên rõ ràng hơn.\r\nCác Máy chủ hoặc các bộ định tuyến không hỗ trợ các chức năng của trường Nhãn\r\nluồng được yêu cầu: thiết lập trường này về 0 khi khởi tạo gói tin; bỏ qua trường\r\nnày và không thay đổi thông tin của trường khi chuyển tiếp gói tin; bỏ qua trường\r\nnày khi nhận được gói tin.
\r\n\r\n4.6. Phân lớp lưu lượng
\r\n\r\n8 bit của trường Phân lớp lưu lượng trong Phần\r\nmào đầu IPv6 được sử dụng bởi các nút mạng gốc và các bộ định tuyến để xác định\r\nvà phân biệt các loại hoặc sự ưu tiên khác nhau của các gói tin IPv6.
\r\n\r\nCác yêu cầu chung sau đây áp dụng cho trường\r\nPhân lớp lưu lượng:
\r\n\r\n• Giao diện dịch vụ IPv6 trong một nút mạng phải\r\nđảm bảo giao thức tầng trên hỗ trợ giá trị của các bit phân lớp lưu lượng trong\r\ncác gói tin được khởi nguồn từ giao thức tầng trên đó. Giá trị mặc định là 0\r\ncho cả 8 bit.
\r\n\r\n• Các nút mạng hỗ trợ sử dụng một vài hoặc\r\ntất cả các bit trong Phân lớp lưu lượng được phép thay đổi giá trị của các bit này\r\ntrong các gói tin mà chúng tạo ra, chuyển tiếp hoặc nhận về theo yêu cầu sử\r\ndụng cụ thể. Các nút mạng bỏ qua và không thay đổi bất kỳ bit nào của Phân lớp lưu\r\nlượng mà chúng không hỗ trợ sử dụng cụ thể.
\r\n\r\n• Một Giao thức tầng trên phải không được coi\r\ngiá trị của các bit Phân lớp lưu lượng trong một gói tin nhận được giống như giá\r\ntrị được gửi bởi nguồn của gói tin.
\r\n\r\n4.7. Các vấn đề về giao thức tầng trên
\r\n\r\n4.7.1. Tổng kiểm tra tầng trên
\r\n\r\nGiao thức giao vận hoặc giao thức tầng trên bất\r\nkỳ nào mà có chứa các địa chỉ từ các Mào đầu IP trong tính toán kiểm tra tổng\r\ncủa nó phải được điều chỉnh để sử dụng trên IPv6 để chứa 128 bit địa chỉ thay\r\ncho 32 bit địa chỉ IPv4. Một cách cụ thể, hình sau minh họa "Mào đầu giả"\r\nTCP và UDP cho IPv6:
\r\n\r\n\r\n \r\n Địa chỉ nguồn \r\n\r\n | \r\n |
\r\n \r\n Địa chỉ đích \r\n\r\n | \r\n |
\r\n Độ dài gói tin tầng\r\n trên \r\n\r\n | \r\n |
\r\n Để trống \r\n | \r\n \r\n Mào đầu kế tiếp \r\n | \r\n
• Nếu các gói tin IPv6 chứa một Mào đầu định\r\ntuyến, địa chỉ đích được sử dụng trong Mào đầu giả là địa chỉ đích đến cuối\r\ncùng. Tại nút nguồn, địa chỉ đó sẽ là thành phần cuối cùng của Mào đầu định tuyến,\r\ntại điểm nhận (hoặc nhiều điểm nhận), địa chỉ đó sẽ được đưa vào trường Địa chỉ\r\nĐích của Phần mào đầu IPv6.
\r\n\r\n• Giá trị Mào đầu kế tiếp trong Mào đầu giả\r\nxác định các giao thức tầng trên (ví dụ, giá trị 6 cho TCP, hoặc giá trị 17 cho\r\nUDP). Nó sẽ khác với giá trị Mào đầu kế tiếp trong Phần mào đầu IPv6 nếu có các\r\nmào đầu mở rộng giữa Phần mào đầu IPv6 và mào đầu của tầng trên.
\r\n\r\n• Độ dài gói tin tầng trên trong Mào đầu giả\r\nlà độ dài của Mào đầu của tầng trên và phần dữ liệu (ví dụ, mào đầu TCP cộng\r\nvới phần dữ liệu TCP). Một số giao thức tầng trên mang thông tin chiều dài của\r\nnó (ví dụ, trường Độ dài trong Mào đầu UDP). Với các giao thức như vậy, đó là chiều\r\ndài được sử dụng trong Mào đầu giả. Các giao thức khác (chẳng hạn như TCP)\r\nkhông mang thông tin chiều dài của chúng thì trong trường hợp này độ dài được\r\nsử dụng trong Mào đầu giả là Độ dài tải từ Phần mào đầu IPv6 trừ đi độ dài của\r\nPhần mào đầu mở rộng bất kỳ hiện tại nằm giữa Phần mào đầu IPv6 và Mào đầu của\r\ntầng trên.
\r\n\r\n• Không giống như IPv4, khi các gói tin UDP\r\nđược khởi tạo bởi một nút mạng IPv6, việc kiểm tra tổng UDP là bắt buộc. Có\r\nnghĩa là, bất kỳ khi nào khởi tạo một gói tin UDP, một nút mạng IPv6 phải tính\r\ntoán giá trị kiểm tra tổng UDP trên gói và Mào đầu giả, và nếu kết quả tính\r\ntoán là 0, nó phải được thay đổi sang hệ cơ số 16 về giá trị FFFF để đưa vào Mào\r\nđầu của UDP. Nút nhận IPv6 phải loại bỏ các gói tin UDP có chứa giá trị Kiểm\r\ntra tổng là 0, và ghi nhận lỗi.
\r\n\r\n4.7.2. Vòng đời tối đa của gói tin
\r\n\r\nKhông giống như IPv4, các nút mạng IPv6 không\r\nyêu cầu thực thi "vòng đời tối đa" của gói tin. Đó là lý do trường\r\nThời gian sống trong IPv4 được đổi tên thành Giới hạn số chặng trong IPv6.\r\nTrong thực tế là rất ít thiết bị triển khai IPv4 tuân thủ yêu cầu giới hạn thời\r\ngian sống của gói tin, do đó, thực tế đây không phải là một sự thay đổi. Bất kỳ\r\ngiao thức tầng trên nào phụ thuộc vào tầng internet (cho dù IPv4 hoặc IPv6) để\r\nhạn chế vòng đời gói tin phải được nâng cấp để có thể cung cấp các cơ chế của\r\nchính nó để phát hiện và loại bỏ các gói tin lỗi thời.
\r\n\r\n4.7.3. Kích thước tải tối đa của tầng trên
\r\n\r\nKhi tính toán kích thước tải tối đa cho phép\r\ntruyền của dữ liệu tầng trên, một giao thức tầng trên sẽ phải tính đến kích\r\nthước lớn hơn của Phần mào đầu IPv6 so với Mào đầu IPv4. Ví dụ, trong IPv4 tùy\r\nchọn MSS (Maximum Segment Size - Kích thước phân đoạn tối đa) của TCP được tính\r\nbằng cách lấy kích thước gói tin lớn nhất (giá trị mặc định hoặc giá trị có\r\nđược từ quá trình tìm MTU tuyến) trừ đi 40 octet (20 octet cho độ dài tối thiểu\r\ncủa Mào đầu IPv4 cộng với 20 octet cho độ dài tối thiểu của mào đầu TCP). Khi\r\nsử dụng TCP qua IPv6, MSS phải lấy kích thước gói tin tối đa trừ đi 60 octet, bởi\r\nvì độ dài tối thiểu của Phần mào đầu IPv6 (tức là một Phần mào đầu IPv6 không\r\ncó các mào đầu mở rộng) dài hơn 20 octet so với độ dài tối thiểu của Mào đầu IPv4.
\r\n\r\n4.7.4. Phản hồi từ các gói tin mang Mào đầu\r\nđịnh tuyến
\r\n\r\nKhi giao thức tầng trên gửi một hay nhiều gói\r\ntin để phản hồi lại gói tin đã nhận có chứa Mào đầu định tuyến, các gói tin\r\nphản hồi này phải không bao gồm Mào đầu định tuyến được lấy tự động bằng cách đảo\r\nngược Mào đầu định tuyến đã nhận trừ khi đã xác minh được tính toàn vẹn và tính\r\nxác thực của Địa chỉ nguồn và Mào đầu định tuyến của gói tin đã nhận được (ví như\r\nthông qua việc sử dụng Mào đầu xác thực trong gói tin đã nhận được). Nói cách\r\nkhác, chỉ có các loại gói tin sau đây mới được phép phản hồi lại gói tin đã nhân\r\ncó chứa Mào đầu định tuyến:
\r\n\r\n• Các gói tin phản hồi không mang các Mào đầu\r\nđịnh tuyến.
\r\n\r\n• Các gói tin phản hồi mang các Mào đầu định\r\ntuyến mà không phải lấy được từ đảo ngược Mào đầu định tuyến của gói tin nhận. Ví\r\ndụ như Mào đầu định tuyến sinh ra từ quá trình cấu hình nội bộ.
\r\n\r\n• Các gói tin phản hồi mang các Mào đầu định\r\ntuyến lấy được bằng cách đảo ngược Mào đầu định tuyến của gói tin nhận khi và\r\nchỉ khi đã xác minh được tính toàn vẹn và tính xác thực của Địa chỉ nguồn cùng\r\nvới Mào đầu định tuyến của gói tin đã nhận được.
\r\n\r\n\r\n\r\n
Phụ\r\nlục A\r\n
\r\n\r\n(Quy định)
\r\n\r\nQuy\r\nđịnh và cách sử dụng trường Nhãn luồng
\r\n\r\nMột luồng là một chuỗi thứ tự các gói tin\r\nđược gửi từ một nút nguồn cụ thể đến một nút đích cụ thể (có thể là địa chỉ Unicast\r\nhoặc Multicast) mà phía nguồn muốn xử lý đặc biệt bởi các bộ định tuyến trên\r\nđường đi của các gói tin. Việc xử lý đặc biệt này có thể được truyền tải tới\r\ncác bộ định tuyến bởi một giao thức điều khiển (chẳng hạn như là một giao thức\r\ndành riêng tài nguyên - RSVP) hoặc bởi các thông tin được mang trong chính các\r\ngói tin trong luồng đó, ví dụ như bên trong Tùy chọn từng chặng. Chi tiết về những\r\ngiao thức điều khiển hoặc các Tùy chọn ở trên không thuộc phạm vi của tiêu\r\nchuẩn này.
\r\n\r\nCó thể có nhiều luồng được truyền từ một\r\nnguồn tới một đích, cũng như phần lưu lượng không có sự liên kết với bất kỳ luồng\r\nnào. Một luồng dữ liệu được xác định duy nhất bởi sự kết hợp của một địa chỉ nguồn\r\nvà Nhãn luồng khác 0. Các gói tin không thuộc về một luồng nào thì mang một\r\nNhãn luồng là 0.
\r\n\r\nNhãn luồng được gán vào một luồng dữ liệu bởi\r\nnút nguồn của luồng đó. Các Nhãn luồng mới phải lựa chọn ngẫu nhiên và thống\r\nnhất trong khoảng từ 1 đến FFFFF (hệ cơ số 16). Mục đích của việc phân bổ ngẫu\r\nnhiên là để tạo ra tập hợp các bit bất kỳ bên trong trường Nhãn luồng phù hợp\r\ncho việc sử dụng như một mã băm qua các bộ định tuyến để tìm kiếm tình trạng\r\nliên quan đến luồng đó.
\r\n\r\nTất cả các gói tin thuộc cùng luồng dữ liệu được\r\ngửi đi phải có cùng địa chỉ nguồn, địa chỉ đích và Nhãn luồng. Nếu bất kỳ gói\r\ntin nào trong các gói tin trên có chứa Mào đầu tùy chọn từng chặng thì ngay từ\r\nnguồn gửi, tất cả các gói tin đó phải mang Mào đầu tùy chọn từng chặng có cùng nội\r\ndung (ngoại trừ trường Mào đầu kế tiếp của Mào đầu tùy chọn từng chặng).
\r\n\r\nNếu một trong những gói tin trên mang Mào đầu\r\nđịnh tuyến thì tất cả các gói tin này khi được tạo ra phải mang cùng nội dung\r\ntrong tất cả các mào đầu mở rộng, bao gồm cả Mào đầu định tuyến (ngoài trừ\r\ntrường Mào đầu kế tiếp trong Mào đầu định tuyến). Các bộ định tuyến hoặc các\r\nnút đích được cho phép xác minh (nhưng không bắt buộc) tính thỏa mãn của những\r\nđiều kiện này. Nếu phát hiện vi phạm, nó sẽ báo cáo về nguồn bằng các Tin nhắn\r\nsự cố tham số ICMP, Mã 0, trỏ vào octet có thứ tự cao trong trường Nhãn luồng (tức\r\nlà, độ lệch 1 trong gói tin IPv6).
\r\n\r\nThời gian tồn tại tối đa của bất kỳ trạng\r\nthái xử lý luồng nào được thiết lập dọc theo đường truyền của luồng phải được\r\nxác định như một phần của sự mô tả cơ cấu thiết lập trạng thái. Ví dụ, giao\r\nthức dành riêng tài nguyên hoặc thiết lập luồng của tùy chọn từng chặng. Một\r\nnút nguồn không được tái sử dụng Nhãn luồng cho một luồng mới trong khoảng thời\r\ngian tồn tại tối đa của bất kỳ trạng thái xử lý luồng nào mà có thể đã được thiết\r\nlập cho việc sử dụng Nhãn luồng đó từ trước.
\r\n\r\nKhi một Nút mạng dừng và bắt đầu lại (ví dụ\r\nnhư gặp sự cố), nó không được sử dụng lại Nhãn luồng mà nó có thể đã sử dụng cho\r\ncác luồng trước đó khi thời gian tồn tại chưa hết. Điều này được thực hiện bằng\r\ncách lưu trữ tình trạng sử dụng Nhãn luồng ở một nơi ổn định nhằm tránh xung\r\nđột hoặc tránh sử dụng lặp lại các Nhãn luồng cho đến khi hết thời gian tồn tại\r\ntối đa của bất kỳ luồng nào. Nếu biết thời gian tối thiểu cho việc khởi động\r\nlại nút, khoảng thời gian đó có thể trừ đi trong thời gian đợi cần thiết trước\r\nkhi bắt đầu phân bổ các Nhãn luồng mới.
\r\n\r\nTất cả hoặc phần lớn các gói tin thuộc về\r\nluồng không bắt buộc phải mang các Nhãn luồng khác 0. Điều này được đặt ra để\r\nlưu ý bộ phận thiết kế giao thức và người thực hiện không đưa ra các giả định khác.\r\nVí dụ, sẽ là không thận trọng khi thiết kế một bộ định tuyến mà chức năng của\r\nnó chỉ dùng cho các gói tin thuộc về các luồng hoặc thiết kế một phương án nén\r\nmào đầu mà chỉ thực hiện trên các gói tin thuộc về các luồng.
\r\n\r\n\r\n\r\n\r\n\r\n
(Quy định)
\r\n\r\nQuy định hướng dẫn định dạng cho các Tùy chọn
\r\n\r\nPhụ lục này đưa ra một số khuyến nghị về việc\r\nlàm thế nào để bố trí các trường khi thiết kế các tùy chọn mới để sử dụng trong\r\nMào đầu tùy chọn từng chặng hoặc Mào đầu tùy chọn đích, như đã mô tả trong\r\n4.3.2. Những hướng dẫn này được dựa trên các giả định sau đây:
\r\n\r\n• Một tính năng mong muốn là mọi trường gồm nhiều\r\noctet trong vùng dữ liệu tùy chọn của một tùy chọn được sắp xếp trên giới hạn thông\r\nthường của chúng, nghĩa là, các trường có độ dài n octet được đặt tại một bội số\r\nnguyên của n octet tính từ điểm bắt đầu của Mào đầu tùy chọn từng chặng hoặc\r\nMào đầu tùy chọn đích, với n = 1, 2, 4 hoặc 8.
\r\n\r\n• Một tính năng mong muốn khác là Mào đầu tùy\r\nchọn từng chặng hoặc Mào đầu tùy chọn đích chiếm dụng số lượng bit ít nhất có\r\nthể, đảm bảo yêu cầu các Mào đầu là một bội số nguyên của độ dài 8 octet.
\r\n\r\n• Có thể giả định rằng, khi có sự hiện diện của\r\nmột trong hai Mào đầu trên, chúng mang một số lượng tùy chọn rất nhỏ, thông\r\nthường chỉ có một.
\r\n\r\nNhững giả định này gợi ý một phương pháp để\r\nbố trí, sắp xếp các trường của một tùy chọn như sau: thứ tự của các trường từ\r\nnhỏ nhất đến lớn nhất, không có bộ đệm bên trong, sau đó phân tách yêu cầu sắp\r\nxếp cho toàn bộ tùy chọn dựa trên yêu cầu sắp xếp trường lớn nhất (tối đa lên\r\nđến 8 octet). Cách tiếp cận này được minh họa trong các ví dụ sau đây:
\r\n\r\nVí dụ 1:
\r\n\r\nNếu một tùy chọn X yêu cầu hai trường dữ liệu,\r\nmột có chiều dài 8 octet và một có chiều dài 4 octet, nó sẽ được bố trí như\r\nsau:
\r\n\r\n\r\n \r\n | \r\n \r\n Kiểu tùy chọn = X \r\n | \r\n \r\n Độ dài dữ liệu tùy\r\n chọn = 12 \r\n | \r\n
\r\n Trường 4 octet \r\n | \r\n ||
\r\n \r\n Trường 8 octet \r\n\r\n | \r\n
Yêu cầu sắp xếp của nó là 8n + 2, để đảm bảo\r\nrằng các trường 8 octet bắt đầu tại bội số của độ lệch 8 octet từ vị trí khởi\r\nđầu của mào đầu xung quanh nó. Mào đầu tùy chọn từng chặng hoặc Mào đầu tùy chọn\r\nđích hoàn chỉnh có chứa một tùy chọn này sẽ trông như sau:
\r\n\r\n\r\n Mào đầu kế tiếp \r\n | \r\n \r\n Độ dài mào đầu mở\r\n rộng = 1 \r\n | \r\n \r\n Kiểu tùy chọn = X \r\n | \r\n \r\n Độ dài dữ liệu tùy\r\n chọn = 12 \r\n | \r\n
\r\n Trường 4 octet \r\n | \r\n |||
\r\n \r\n Trường 8 octet \r\n\r\n | \r\n
Ví dụ 2:
\r\n\r\nNếu một tùy chọn Y yêu cầu ba trường dữ liệu,\r\nmột có chiều dài 4 octet, một có chiều dài 2 octet, và một có chiều dài 1 octet,\r\nnó sẽ được bố trí như sau:
\r\n\r\n\r\n \r\n | \r\n \r\n Kiểu tùy chọn = Y \r\n | \r\n |
\r\n Độ dài dữ liệu tùy\r\n chọn = 7 \r\n | \r\n \r\n Trường 1 octet \r\n | \r\n \r\n Trường 2 octet \r\n | \r\n
\r\n Trường 4 octet \r\n | \r\n ||
\r\n | \r\n | \r\n |
Yêu cầu sắp xếp nó là 4n + 3, đảm bảo rằng trường\r\n4 octet bắt đầu tại bội số của độ lệch 4 octet từ vị trí khởi đầu của Mào đầu\r\nxung quanh nó. Mào đầu tùy chọn từng chặng hoặc Mào đầu tùy chọn đích hoàn\r\nchỉnh có chứa một tùy chọn này sẽ như sau:
\r\n\r\n\r\n Mào đầu kế tiếp \r\n | \r\n \r\n Độ dài mào đầu mở\r\n rộng = 1 \r\n | \r\n \r\n Tùy chọn Đệm1 = 0 \r\n | \r\n \r\n Kiểu tùy chọn = Y \r\n | \r\n
\r\n Độ dài dữ liệu tùy\r\n chọn = 7 \r\n | \r\n \r\n Trường 1 octet \r\n | \r\n \r\n Trường 2 octet \r\n | \r\n |
\r\n Trường 4 octet \r\n | \r\n |||
\r\n Tùy chọn Đệm N = 1 \r\n | \r\n \r\n Độ dài dữ liệu tùy\r\n chọn = 2 \r\n | \r\n \r\n 0 \r\n | \r\n \r\n 0 \r\n | \r\n
Ví dụ 3:
\r\n\r\nMột Mào đầu tùy chọn từng chặng hoặc Mào đầu tùy\r\nchọn đích chứa cả 2 tùy chọn X và Y từ ví dụ 1 và 2 sẽ có một trong 2 định dạng\r\nsau, phụ thuộc vào tùy chọn nào xuất hiện trước:
\r\n\r\n\r\n Mào đầu kế tiếp \r\n | \r\n \r\n Độ dài mào đầu mở\r\n rộng = 3 \r\n | \r\n \r\n Kiểu tùy chọn = X \r\n | \r\n \r\n Độ dài dữ liệu tùy\r\n chọn = 12 \r\n | \r\n
\r\n Trường 4 octet \r\n | \r\n |||
\r\n \r\n Trường 8 octet \r\n\r\n | \r\n |||
\r\n Tùy chọn Đệm N = 1 \r\n | \r\n \r\n Độ dài dữ liệu tùy\r\n chọn = 1 \r\n | \r\n \r\n 0 \r\n | \r\n \r\n Kiểu tùy chọn = Y \r\n | \r\n
\r\n Độ dài dữ liệu tùy\r\n chọn = 7 \r\n | \r\n \r\n Trường 1 octet \r\n | \r\n \r\n Trường 2 octet \r\n | \r\n |
\r\n Trường 4 octet \r\n | \r\n |||
\r\n Tùy chọn Đệm N = 1 \r\n | \r\n \r\n Độ dài dữ liệu tùy\r\n chọn = 2 \r\n | \r\n \r\n 0 \r\n | \r\n \r\n 0 \r\n | \r\n
\r\n\r\n
\r\n Mào đầu kế tiếp \r\n | \r\n \r\n Độ dài mào đầu mở\r\n rộng = 3 \r\n | \r\n \r\n Tùy chọn Đệm1=0 \r\n | \r\n \r\n Kiểu tùy chọn = Y \r\n | \r\n
\r\n Độ dài dữ liệu tùy\r\n chọn = 7 \r\n | \r\n \r\n Trường 1 octet \r\n | \r\n \r\n Trường 2 octet \r\n | \r\n |
\r\n Trường 4 octet \r\n | \r\n \r\n \r\n | \r\n \r\n \r\n | \r\n \r\n \r\n | \r\n
\r\n Tùy chọn Đệm N = 1 \r\n | \r\n \r\n Độ dài dữ liệu tùy\r\n chọn = 4 \r\n | \r\n \r\n 0 \r\n | \r\n \r\n 0 \r\n | \r\n
\r\n 0 \r\n | \r\n \r\n 0 \r\n | \r\n \r\n Kiểu tùy chọn = X \r\n | \r\n \r\n Độ dài dữ liệu tùy\r\n chọn = 12 \r\n | \r\n
\r\n Trường 4 octet \r\n | \r\n |||
\r\n Trường 8 octet \r\n | \r\n
\r\n\r\n
MỤC LỤC
\r\n\r\n1 Phạm vi áp dụng
\r\n\r\n2 Tài liệu viện dẫn
\r\n\r\n3 Thuật ngữ và định nghĩa
\r\n\r\n4 Quy định kỹ thuật
\r\n\r\n4.1 Giới thiệu
\r\n\r\n4.2 Định dạng của Phần mào đầu của IPv6
\r\n\r\n4.3 Các mào đầu mở rộng của IPv6
\r\n\r\n4.3.1 Thứ tự của các mào đầu mở rộng
\r\n\r\n4.3.2 Các Tùy chọn
\r\n\r\n4.3.3 Mào đầu tùy chọn từng chặng
\r\n\r\n4.3.4 Mào đầu định tuyến
\r\n\r\n4.3.5 Mào đầu phân mảnh
\r\n\r\n4.3.6 Mào đầu tùy chọn đích
\r\n\r\n4.3.7 Chỉ thị không có mào đầu kế tiếp
\r\n\r\n4.4 Các vấn đề về kích thước gói tin
\r\n\r\n4.5 Các Nhãn luồng
\r\n\r\n4.6 Phân lớp lưu lượng
\r\n\r\n4.7 Các vấn đề về giao thức tầng trên
\r\n\r\n4.7.1 Tổng kiểm tra tầng trên
\r\n\r\n4.7.2 Vòng đời tối đa của gói tin
\r\n\r\n4.7.3 Kích thước tối đa của tầng trên
\r\n\r\n4.7.4 Phản hồi từ các gói tin mang Mào đầu\r\nđịnh tuyến
\r\n\r\nPhụ lục A (Quy định) Quy định và cách sử dụng\r\ntrường Nhãn luồng
\r\n\r\nPhụ lục B (Quy định) Quy định hướng dẫn định\r\ndạng cho các Tùy chọn
\r\n\r\nFile gốc của Tiêu chuẩn quốc gia TCVN 9802-1:2013 (RFC 2460:1998) về Giao thức internet phiên bản 6 (IPV6)- Phần 1: Quy định kỹ thuật đang được cập nhật.
Tiêu chuẩn quốc gia TCVN 9802-1:2013 (RFC 2460:1998) về Giao thức internet phiên bản 6 (IPV6)- Phần 1: Quy định kỹ thuật
Tóm tắt
Cơ quan ban hành | Đã xác định |
Số hiệu | TCVN9802-1:2013 |
Loại văn bản | Tiêu chuẩn Việt Nam |
Người ký | Đã xác định |
Ngày ban hành | 2013-01-01 |
Ngày hiệu lực | |
Lĩnh vực | Xây dựng - Đô thị |
Tình trạng | Còn hiệu lực |