Xem mẫu

  1. TIÊU CHUẨN VIỆT NAM TCVN 9802-5:2017 GIAO THỨC INTERNET PHIÊN BẢN 6 (IPV6) - PHẦN 5: GIAO THỨC PHÁT HIỆN ĐỐI TƯỢNG NGHE MULTICAST Internet protocol version 6 (IPv6) - Part 5: Multicast listener discovery protocol Lời nói đầu TCVN 9802-5:2017 được xây dựng trên cơ sở RFC 3810 (2004) “Multicast Listener Discovery Version 2 (MLDv2) for IPv6” của Nhóm đặc trách về kỹ thuật Internet (IETF). TCVN 9802-5:2017 do Viện Khoa học Kỹ thuật Bưu điện, Học viện Công nghệ Bưu chính Viễn thông biên soạn, Bộ Thông tin và Truyền thông đề nghị, Tổng cục Tiêu chuẩn Đo lường Chất lượng thẩm định, Bộ Khoa học và Công nghệ công bố. GIAO THỨC INTERNET PHIÊN BẢN 6 (IPV6) - PHẦN 5: GIAO THỨC PHÁT HIỆN ĐỐI TƯỢNG NGHE MULTICAST Internet protocol version 6 (IPv6) - Part 5: Multicast listener discovery protocol 1 Phạm vi áp dụng Tiêu chuẩn này quy định những đặc tả kỹ thuật của giao thức phát hiện đối tượng nghe multicast phiên bản 2 (MLDv2) cho IPv6. Tiêu chuẩn này áp dụng cho các thiết bị nút IPv6 (gọi tắt là nút hoặc nút IPv6) yêu cầu hỗ trợ multicast theo chính sách lọc nguồn, tức là các nút có nhu cầu nghe các gói tin theo một địa chỉ multicast chỉ từ những địa chỉ nguồn cụ thể hay từ tất cả các nguồn khác trừ những địa chỉ nguồn cụ thể. 2 Tài liệu viện dẫn Các tài liệu viện dẫn sau là cần thiết cho việ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ì áp dụng 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ố thì áp dụng phiên bản mới nhất, bao gồm cả các sửa đổi (nếu có). TCVN 9802-1:2013, Giao thức Internet phiên bản 6 (IPv6) - Phần 1: Quy định kỹ thuật. TCVN 9802-2:2015, Giao thức Internet phiên bản 6 (IPv6) - Phần 2: Kiến trúc địa chỉ IPv6. TCVN 9802-3:2015, Giao thức Internet phiên bản 6 (IPv6) - Phần 3: Giao thức phát hiện nút mạng lân cận. RFC 4443, Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) specification, March 2006 (Giao thức bản tin điều khiển Internet cho IPv6).
  2. RFC 2711, IPv6 Router Alert Option, October 1999 (Tùy chọn cảnh báo Router lPv6). RFC 2462, IPv6 Stateless Address Autoconfiguration, December 1998 (Tự động cấu hình địa chỉ IPv6 phi trạng thái). RFC 2464, Transmission of IPv6 Packets over Ethernet Networks, December 1998 (Truyền các gói tin IPv6 qua mọng Ethernet). 3 Thuật ngữ và định nghĩa Tiêu chuẩn này sử dụng các thuật ngữ sau đây. 3.1 Nút (node) Thiết bị thực thi IPv6. 3.2 Bộ định tuyến (router) Nút có khả năng chuyển tiếp các gói tin IPv6 không được định địa chỉ trực tiếp cho nút mạng đó. 3.3 Host Bất kỳ nút nào mà không phải là router. 3.4 Tầng trên (upper layer) Tầng giao thức ngay phía trên IPv6. Ví dụ, các giao thức truyền tải như TCP và UDP, giao thức điều khiển ICMP, giao thức định tuyến như OSPF và các giao thức Internet hoặc giao thức tầng thấp hơn thực thi kết nối kiểu đường hầm thông qua IPv6 như IPX, AppleTalk, hoặc chính IPv6. 3.5 Liên kết (link) Một phương tiện hoặc môi trường kết nối mà qua đó các nút mạng có thể kết nối với nhau tại tầng liên kết, nghĩa là tầng ngay bên dưới IPv6 như Ethernet; các liên kết PPP; X.25, Frame Relay hoặc các mạng ATM; và tầng Internet (hoặc tầng cao hơn) thực thi kết nối “đường hầm” như các đường hầm qua IPv4 hoặc IPv6. 3.6 Giao diện (interface) Một giao tiếp của nút để gắn vào liên kết. 3.7 Địa chỉ (address) Một định danh tầng IPv6 cho một giao diện hoặc một nhóm giao diện. 3.8 Gói tin (packet) Phần mào đầu IPv6 cộng với phần dữ liệu của gói tin. 3.9 Thiết bị truy vấn (Querier) Các router có thể gửi đi các bản tin Query. 3.10 Thiết bị không truy vấn (Non-Querier)
  3. Rouler không có chức năng gửi đi các bản tin Query. 3.11 Socket Tham số cụ thể được sử dụng để phân biệt giữa các thực thể gửi yêu cầu IP multicast khác nhau (ví dụ, các chương trình, các ứng dụng) trong các nút. 3.12 Địa chỉ link-layer (link-layer address) Định danh tầng liên kết cho một giao diện. Ví dụ, bao gồm những địa chỉ IEEE 802 cho các liên kết Ethernet. 3.13 Địa chỉ link-local (link-local address) Một địa chỉ unicast chỉ ở trong phạm vi liên kết mới có thể được sử dụng để hướng tới những nút mạng lân cận. Tất cả giao diện trên router phải có một địa chỉ link-local. Và giao diện trên các host phải có một địa chỉ link-local. 3.14 Địa chỉ on-link (on-link) Một địa chỉ được gán cho một giao diện trên một liên kết cụ thể. Một nút mạng xem một địa chỉ là địa chỉ on-link nếu: - Địa chỉ đó được bao hàm bởi một trong các tiền tố cửa liên kết (chẳng hạn đã được chỉ thị bởi cờ on- link trong tùy chọn Prefix Information), hoặc - Một router lân cận xác định địa chỉ đó là đích đến của bản tin Redirect, hoặc - Nhận được một bản tin Neighbor Advertisement cho địa chỉ (mục tiêu) đó, hoặc - Nhận được bất kỳ một bản tin Neighbor Discovery từ địa chỉ đó. 3.15 Địa chỉ off-link (off-link) Ngược lại với địa chỉ “on-link”; là địa chỉ mà không được gán cho bất kỳ giao diện nào trên một liên kết cụ thể. 4 Chữ viết tắt DAD Phát hiện địa chỉ trùng lặp Duplicate Address Detection ICMPv6 Giao thức bản tin điều khiển cho IPv6 Internet Control Message Protocol version 6 IPv6 Giao thức Internet phiên bản 6 Internet Protocol version 6 LLQC Số lượng truy vấn đối tượng nghe cuối cùng Last Listener Query Count LLQI Khoảng thời gian truy vấn đối tượng Last Listener Query Interval LLQT nghe cuối cùng Last Listener Query Time MLD Thời gian truy vấn đối tượng nghe cuối cùng Multicast Listener Discovery
  4. MLDv1 Phát hiện đối tượng nghe multicast Multicast Listener Discovery version 1 MLDv2 Phát hiện đối tượng nghe multicast phiên bản 1 Multicast Listener Discovery version MALI 2 Phát hiện đối tượng nghe multicast QQI phiên bản 2 Multicast Address Listening Interval QQIC Khoảng thời gian nghe địa chỉ Querier Query Interval multicast OSPF Querier Query Interval Code Khoảng thời gian truy vấn của Querier TCP Open Shortest Path First Mã khoảng thời gian truy vấn của Querier Querier Transmission Control Protocol UDP Giao thức định tuyến tìm đường ngắn User Datagram Protocol nhất Giao thức điều khiển truyền dẫn Giao thức dữ liệu người dùng 5 Tổng quan Giao thức MLD nói chung (bao gồm cả MLDv1 và MLDv2) là giao thức bất đối xứng, vì giao thức này quy định cách xử lý riêng biệt cho các đối tượng nghe địa chỉ multicast (tức là các host và router nghe các gói tin multicast) và các router multicast. Mục đích của MLD là cho phép router multicast xác định những địa chỉ multicast và những ngưồn có đối tượng nghe quan tâm đến các địa chỉ và nguồn này trên mỗi liên kết trực tiếp của router. Thông tin thu thập bởi MLD được cung cấp cho giao thức định tuyến multicast của router, để đảm bảo rằng các gói tin multicast được phân phối đến tất cả các liên kết có đối tượng nghe quan tâm đến những gói tin này. Các router multicast chỉ cần biết tối thiểu một nút trên liên kết kết nối vào nó đang nghe các gói tin theo một địa chỉ multicast cụ thể, từ một nguồn cụ thể; một router multicast không yêu cầu phải theo dõi các nhu cầu của từng nút lân cận một cách riêng lẻ. Với giao thức MLDv2, router multicast thực hiện vai trò router trên mỗi liên kết trực tiếp. Nếu một router multicast có nhiều giao diện được kết nối vào cùng một liên kết, router đó chỉ cần thực hiện giao thức MLDv2 trên một trong các giao diện đó. Cách xử lý của router phụ thuộc vào việc có hay không những router multicast khác trên cùng mạng con. Nếu có nhiều router multicast trên mạng con thì sử dụng cơ chế bầu chọn Querier để lựa chọn một router multicast duy nhất đóng vai trò là Querier. Tất cả các router multicast trong mạng con lắng nghe các bản tin được gửi từ đối tượng nghe địa chỉ multicast và duy trì cùng trạng thái về thông tin nghe multicast. Điều này để các router này có thể đảm nhiệm vai trò Querier trong trường hợp Querier hiện tại xảy ra lỗi. Tuy nhiên, chỉ duy nhất một Querier gửi định kỳ hoặc kích hoạt các bản tin Query trong mạng con, như được mô tả trong điều 10.1. Một đối tượng nghe địa chỉ multicast thực hiện vai trò đối tượng nghe trong giao thức MLDv2 trên tất cả các giao diện hỗ trợ multicast, ngay cả khi có nhiều giao diện trong số các giao diện này được kết nối vào cùng một liên kết. 5.1 Thiết lập trạng thái nghe multicast trên các đối tượng nghe địa chỉ multicast Các giao thức tầng trên và các ứng dụng chạy trên nút nghe địa chỉ multicast sử dụng các lời gọi giao diện dịch vụ xác định để yêu cầu tầng IP cho phép hoặc vô hiệu hóa chức năng tiếp nhận các gói tin được gửi đến các địa chỉ multicast cụ thể. Nút giữ trạng thái nghe địa chỉ multicast cho từng socket mà
  5. tại đó có các lời gọi giao diện dịch vụ. Ngoài trạng thái nghe multicast theo từng socket này, một nút cũng phải duy trì và tính toán trạng thái nghe multicast cho từng giao diện của nó. Trạng thái này bao gồm tập hợp các bản ghi, với mỗi bản ghi chứa một địa chỉ multicast IPv6, một chế độ lọc và một danh sách nguồn. Chế độ lọc có thể là INCLUDE hoặc EXCLUDE. Trong chế độ INCLUDE, nút chỉ có thể nhận các gói tin có địa chỉ nguồn nằm trong danh sách nguồn gửi tới một địa chỉ multicast cụ thể. Trong chế độ EXCLUDE, thì nút chỉ nhận được, các gói tin có địa chỉ nguồn nằm ngoài danh sách nguồn gửi tới địa chỉ multicast cụ thể. Đối với một giao diện cho trước, tồn tại nhiều nhất một bản ghi cho mỗi địa chỉ multicast. Trạng thái từng giao diện này nhận được từ trạng thái từng socket, nhưng có thể khác với trạng thái từng socket vì các socket khác nhau có sự khác biệt về các chế độ lọc và/hoặc các danh sách nguồn cho cùng địa chỉ multicast và giao diện. Sau khi gói tin multicast được chấp nhận, việc phân phối gói tin này tới ứng dụng phụ thuộc vào trạng thái nghe multicast của socket mà ứng dụng đó đã kết nối (và có thể cũng phụ thuộc vào các điều kiện khác như cổng nào của tầng truyền tải mà socket sử dụng). Chú ý rằng các bản tin MLDv2 không phụ thuộc vào việc lọc nguồn và phải luôn được xử lý bởi các host và router. 5.2 Trao đổi các bản tin giữa Querier và các nút nghe Có ba loại bản tin Query MLDv2: bản tin General Query (truy vấn thông thường), bản tin Multicast Address Specific Query (truy vấn địa chỉ multicast cụ thể) và bản tin Multicast Address and Source Specific Query (truy vấn địa chỉ multicast và nguồn cụ thể). Các Querier định kỳ gửi đi các bản tin General Query để nắm bắt các thông tin về đối tượng nghe địa chỉ multicast từ một liên kết được kết nối. Các bản tin General Query này được sử dụng để xây dựng và làm mới trạng thái của đối tượng nghe địa chỉ multicast bên trong tất cả các router multicast trên liên kết. Các nút phản hồi các bản tin General Query này bằng cách báo cáo lại trạng thái nghe địa chỉ multicast từng giao diện của chúng, thông qua các bản tin Current State Report (báo cáo trạng thái hiện tại) được gửi đến một địa chỉ multicast cụ thể mà tất cả các router trên liên kết đều lắng nghe. Mặt khác, nếu trạng thái nghe của một nút thay đổi, nút này ngay lập tức thông báo những thay đổi này thông qua một bản tin State Change Report (báo cáo thay đổi trạng thái). Bản tin State Change Report chứa các Filter Mode Change Record (bản ghi thay đổi chế độ lọc) hoặc các Source List Change Record (bản ghi thay đổi danh sách nguồn) hay các bản ghi của cả loại loại trên. Mô tả chi tiết của các bản tin Report được trình bày ở điều 8.2.12. Những thay đổi trạng thái của cả router và đối tượng nghe đều được thiết lập khi một bộ đếm thời gian cụ thể kết thúc, hoặc khi nhận được một bản tin MLD (sự thay đổi trạng thái đối tượng nghe có thể được kích hoạt bằng việc yêu cầu một lời gọi giao diện dịch vụ). Do đó, để nâng cao tính ổn định của giao thức, để tránh sự không đáng tin cậy có thể có của việc trao đổi gói tin, các bản tin sẽ được truyền lại nhiều lần, Hơn nữa, các bộ đếm thời gian được thiết lập để kiểm tra việc mất mát bản tin có thể có, và để đợi việc truyền lại. Để tránh quá tải liên kết, các bản tin General Query và Current State Report theo định kỳ không áp dụng quy tắc này, giả định rằng thông thường các bản tin này không tạo ra sự thay đổi trạng thái và mục đích chính của chúng là làm mới trạng thái đang tồn tại. Do đó, ngay cả khi một bản tin như vậy bị mất, trạng thái tương ứng sẽ được làm mới trong chu kỳ báo cáo tiếp theo. Trái với các bản tin Current State Report, các bản tin State Change Report được truyền lại vài lần, để tránh chúng bị mất tại một hoặc nhiều router multicast. Số lượng của bản tin truyền lại phụ thuộc vào biến Robustness. Biến này cho phép điều chỉnh giao thức theo sự mất mát gói tin dự kiến trên một liên kết. Nếu một liên kết được dự kiến là mất gói (ví dụ như kết nối không dây), giá trị của biến Robustness sẽ được tăng lên. MLD là ổn định với [biến Robustness] -1 gói tin bị mất. Tiêu chuẩn này khuyến nghị giá trị mặc định của biến Robustness là 2 (chi tiết được trình bày trong điều 12). CHÚ THÍCH: Tên các bộ đếm/biến nằm trong dấu ngoặc vuông thể hiện giá trị của các bộ đếm/biến này. Nếu xảy ra nhiều sự thay đổi tới cùng một bảng lưu trữ trạng thái từng giao diện trước khi hoàn thành việc truyền lại tất cả các bản tin State Change Report cho thay đổi đầu tiên, thì mỗi sự thay đổi bổ sung
  6. sẽ kích hoạt việc truyền lại một bản tin State Change Report mới ngay lập tức. Điều 9.1 trình bày phương pháp tính toán nội dung của bản tin mới này. Những bản tin State Change Report truyền lại mới sẽ được lập lịch, để đảm bảo rằng mỗi một sự thay đổi trạng thái sẽ được truyền tối thiểu [biến Robustness] lần. Nếu qua bản tin State Change Report, một nút trên một liên kết thể hiện việc không còn muốn lắng nghe một địa chỉ multicast (hoặc một nguồn) cụ thể nữa, Querier phải truy vấn các đối tượng nghe khác của địa chỉ multicast (hoặc nguồn) này trước khi xóa địa chỉ multicast (hoặc nguồn) ra khỏi mục lưu trữ trạng thái đối tượng nghe địa chỉ multicast và dừng truyền lưu tượng tương ứng. Như vậy, Querier gửi một bản tin Multicast Address Specific Query để xác minh rằng các nút vẫn đang lắng nghe địa chỉ multicast cụ thể này hay không. Tương tự, Querier gửi một bản tin Multicast Address and Source Specific Query để xác minh rằng, với một địa chỉ multicast cụ thể, có nút nào vẫn đang nghe theo một bộ các nguồn cụ thể hay không. Điều 8.1.13 mô tả chi tiết từng loại bản tin Query này. Cả hai bản tin “Multicast Address Specific Query” và “Multicast Address and Source Specific Query” chỉ được gửi để đáp lại các bản tin State Change Report mà không đáp lại các bản tin Current State Report. Sự khác biệt giữa hai loại bản tin Report này nhằm tránh cho router đối xử với tất cả các bản tin Multicast Listener Report như những thay đổi trạng thái có khả năng xảy ra. Bằng cách này, cơ chế rời đi nhanh của MLDv2 có thể không hiệu quả nếu bản tin State Change Report bị mất, và router chỉnhận được bản tin Current State Report. Tuy nhiên, nó tránh được việc xử lý gia tăng ở router và giảm lưu lượng MLD trên liên kết. Các nút phản hồi các bản tin Query ở trên qua bản tin Current State Report, chứa trạng thái Nghe ĐịaChỉ Multicast (Multicast Address Listening) cho từng giao diện của chúng chỉ với các địa chỉ multicast (hoặc nguồn) được truy vấn. Để đảm bảo tính ổn định của giao thức, tất cả các bản tin Query ngoại trừ các bản tin General Query theo định kỳ, đều được gửi lại vài lần trong một khoảng thời gian nhất định, số lượng bản tin truyền lại phụ thuộc vào biến Robustness. Nếu trong khi lập lịch cho bản tin Query mới, tồn tại các bản tin Query đang ở trạng thái chờ được truyền lại cho cùng địa chỉ multicast, thì các bản tin Query mới và các bản tin Query đang ở trạng thái chờ phải được sáp nhập. Ngoài ra, các bản tin Report về host nhận được đối với một địa chỉ multicast có các bản tin Query đang ở trạng thái chờ có thể ảnh hưởng tới nội dung của các bản tin Query đó. Tính ổn định của giao thức cũng được nâng cao bằng việc sử dụng cờ S (Ngăn chặn xử lý phía router). Như đã mô tả ở trên, khi Querier gửi đi một bản tin Multicast Address Specific Query hoặc bản tin Multicast Address and Source Specific Query, sẽ có những bản tin Query được lập lịch để truyền lại. Trong bản tin Query đầu tiên, cờ S được xóa. Khi Querier gửi bản tin Query này, nó làm giảm bộ đếm thời gian cho địa chỉ multicast (hoặc nguồn) có liên quan thành một giá trị cho trước; tương tự, bất kỳ router multicast non-querier nào nhận được truy vấn cũng tự hạ thấp bộ đếm thời gian của mình thành giá trị trên. Tuy nhiên, trong khi đợi các bản tin Query được lập lịch tiếp theo được gửi, router có thể nhận được một bản tin Report cập nhật bộ đếm thời gian. Các bản tin Query được lập lịch vẫn phải được gửi để đảm bảo rằng router non-querier vẫn giữ trạng thái của nó đồng bộ với Querier hiện tại (do router non-querier có thể không nhận được truy vấn đầu tiên). Tuy nhiên, bộ đếm thời gian không nên được hạ thấp lần nữa. Do đó, Querier thiết lập giá trị cờ S trong các bản tin Query tiếp theo. 5.3 Thiết lập trạng thái đối tượng nghe địa chỉ multicast trên router multicast Các router multicast thực thi MLDv2 (có thể là Querier hoặc không) giữ trạng thái đối tượng nghe cho từng địa chỉ multicast đối với mỗi liên kết. Trạng thái đối tượng nghe địa chỉ multicast này bao gồm một chế độ lọc, một bộ đếm thời gian cho chế độ lọc, và một danh sách nguồn, với bộ đếm thời gian cho từng nguồn trong danh sách. Chế độ lọc được sử dụng để thu gọn trạng thái lắng nghe toàn diện cho một địa multicast thành một tập bé nhất, tất cả các nút đang ở trạng thái lắng nghe đều được chú ý. Chế độ lọc có thể thay đổi để phù hợp với việc nhận từng loại bản tin Report cụ thể, hoặc khi điều kiện bộ đếm thời gian nào đó xuất hiện. Một router có chế độ lọc là “INCLUDE” (chế độ bao gồm) đối với một địa chỉ multicast cụ thể trên một giao diện nhất định nếu tất cả các đối tượng nghe trên liên kết đang theo dõi địa chỉ đó ở trong chế độ
  7. INCLUDE. Trạng thái router được thể hiện bằng INCLUDE (A), trong đó A là danh sách các nguồn, được gọi là “Danh sách INCLUDE” (danh sách bao gồm). Danh sách INCLUDE là một tập hợp các nguồn mà một hay nhiều đối tượng nghe trên liên kết có yêu cầu nhận. Tất cả các nguồn từ danh sách INCLUDE sẽ được router chuyển tiếp. Bất kỳ nguồn nào khác không nằm trong danh sách INCLUDE sẽ bị router chặn lại. Một nguồn có thể được thêm vào danh sách INCLUDE hiện tại nếu một đối tượng nghe có chế độ INCLUDE gửi một bản tin Current State Report hoặc bản tin State Change Report chứa nguồn đó. Mộtnguồn trong danh sách INCLUDE được liên kết với một bộ đếm thời gian cho nguồn, bộ đếm này được cập nhật bất cứ khi nào một đối tượng nghe trong chế độ INCLUDE gửi đi bản tin Report xác nhận đối tượng nghe này vẫn đang quan tâm đến nguồn cụ thể đó. Nếu bộ đếm thời gian cho một nguồn trong danh sách INCLUDE kết thúc, nguồn này sẽ bị xóa khỏi danh sách INCLUDE. Bên cạnh cơ chế “rời nhóm mềm” ở trên, cũng còn một cơ chế “rời nhóm nhanh” trong MLDv2; cơ chế này cũng dựa trên việc sử dụng các bộ đếm thời gian cho nguồn. Khi một nút trong chế độ INCLUDE không còn nhu cầu theo dõi một nguồn cụ thể, các router multicast trên liên kết hạ thấp bộ đếm thời gian của chúng cho nguồn đó xuống một giá trị nhất định. Querier sau đó gửi một bản tin Multicast Address and Source Specific Query, để xác minh rằng có đối tượng nghe nào khác đang theo dõi nguồn đó hay không. Nếu nhận được một bản tin Report cho nguồn này trước khi bộ đếm thời gian kết thúc, thì tất cả các router trên liên kết số cập nhật bộ đếm thời gian cho nguồn. Nếu không, nguồn sẽ bị xóa khỏi danh sách INCLUDE. Việc xử lý danh sách INCLUDE theo các bản tin Report nhận được, được chi tiết trong điều 10.4.1 và 10.4.2. Một router sẽ có chế độ EXCLUDE (chế độ ngoại trừ) đối với một địa chỉ multicast cụ thể trên một giao diện nhất định nếu có tối thiểu một đối tượng nghe trong chế độ EXCLUDE cho địa chỉ đó trên liên kết. Khi nhận được bản tin Report đầu tiên từ đối tượng nghe này, router sẽ thiết lập bộ đếm thời gian cho chế độ lọc tương ứng với địa chỉ đó. Bộ đếm thời gian này được thiết lập lại mỗi khi đối tượng nghe trong chế độ EXCLUDE xác nhận trạng thái nghe của nó qua bản tin Current State Report. Bộ đếm thời gian này cũng được cập nhật khi một đối tượng nghe ở trong chế độ INCLUDE, thông báo thay đổi chế độ lọc của nó qua bản tin State Change Report. Bộ đếm thời gian cho chế độ lọc kết thúc đồng nghĩa với việc không còn đối tượng nghe nào nữa ở trong chế độ EXCLUDE trên liên kết. Trong trường hợp này, router chuyển về chế độ INCLUDE cho địa chỉ multicast trên. Khi router ở trong chế độ EXCLUDE, trạng thái của router được thể hiện bằng EXCLUDE (X, Y), trong đó X được gọi là “Danh sách được yêu cầu” và Y được gọi là “Danh sách EXCLUDE” (danh sách ngoại trừ). Tất cả các gói tin từ các nguồn nằm ngoài danh sách EXCLUDE, sẽ được chuyển tiếp bởi router. Danh sách được yêu cầu không gây ảnh hưởng gì đến việc chuyển tiếp. Tuy nhiên, router phải duy trìdanh sách được yêu cầu vì hai lý do sau đây: - Để theo dõi các nguồn mà đối tượng nghe trong chế độ INCLUDE đang lắng nghe. Điều này nhằm đảm bảo một sự chuyển đổi liền mạch của router sang chế độ INCLUDE, khi không còn đối tượng nghe nào trong chế độ EXCLUDE nữa. Sự chuyển đổi này sẽ không làm ngắt quãng lưu lượng tới các đối tượng nghe trong chế độ INCLUDE cho địa chỉ multicast đó. Do đó, ở thời điểm chuyển đổi, danh sách được yêu cầu nên chứa tập hợp các nguồn mà các nút trong chế độ INCLUDE yêu cầu rõ ràng, Khi router chuyển sang chế độ INCLUDE, các nguồn trong danh sách được yêu cầu sẽ chuyển sang danh sách INCLUDE, và danh sách EXCLUDE được xóa bỏ. Trước khi thực hiện việc chuyển tiếp này, danh sách được yêu cầu có thể chứa một dự đoán không chính xác về những nguồn mà các đối tượng nghe trong chế độ INCLUDE đang lắng nghe - có thể quá lớn hoặc quá nhỏ. Sự không chính xác này là do danh sách được yêu cầu có thể được sử dụng cho mục đích khóa nhanh sẽ được mô tả dưới đây. Nếu chức năng khóa nhanh được thực hiện, vài nguồn có thể bị xóa khỏi danh sách được yêu cầu để giảm trạng thái router. Tuy nhiên, trong trường hợp đó bộ đếm thời gian cho chế độ lọc cũng được cập nhật. Do đó, trước khi thực hiện chuyển đổi, các đối tượng nghe trong chế độ INCLUDE sẽ có đủ thời gian để xác nhận lại sự quan tâm của chúng với nguồn bị loại bỏ, và xây dựng lại danh sách được yêu cầu cho phù hợp. Giao thức đảm bảo rằng khi xảy ra chuyển đổi sang chế độ INCLUDE thìdanh sách được yêu cầu là chính xác. Chi tiết về việc chuyển đổi của router sang chế độ INCLUDE được mô tả trong điều A.3, Phụ lục A.
  8. - Để cho phép chế độ khóa nhanh các nguồn không được khóa trước đây. Nếu router nhận được bản tin Report chứa một yêu cầu như vậy, các nguồn có liên quan sẽ được thêm vào danh sách được yêu cầu. Bộ đếm thời gian của chúng sẽ được thiết lập về một giá trị nhỏ nhất định, và một bản tin Multicast Address and Source Specific Query được gửi bởi Querier để kiểm tra có nút nào trên liên kết vẫn còn quan tâm đến những nguồn đó nữa không. Nếu không nút nào thông báo mối quan tâm của chúng đến những nguồn cụ thể đó, bộ đếm thời gian của những nguồn này sẽ kết thúc. Sau đó, các nguồn này được chuyển từ danh sách được yêu cầu sang danh sách EXCLUDE. Từ thời điểm này, các nguồn trên sẽ bị router chặn lại. Việc xử lý trạng thái router trong chế độ EXCLUDE theo các bản tin Report nhận được, được chi tiết trong Bảng 10.4.1 và 10.4.2. Các xử lý của cả router và đối tượng nghe MLDv2 được mô tả trong tiêu chuẩn này đều đảm bảo tínhtương thích ngược với các host và router MLDv1. Tính tương thích này được chi tiết trong điều 11. 6 Giao diện dịch vụ cho việc yêu cầu nhận IP Multicast Trong hệ thống IP, một giao diện dịch vụ được sử dụng bởi các giao thức tầng trên hoặc các chương trình ứng dụng để yêu cầu tầng IP cho phép hoặc vô hiệu hóa khả năng tiếp nhận các gói tin được gửi tới những địa chỉ IP multicast cụ thể. Để tận dụng đầy đủ những tính năng của MLDv2, giao diện dịch vụ IP của nút phải hỗ trợ hoạt động sau đây: IPv6MulticastListen (socket, giao diện, địa chỉ multicast IPv6, chế độ lọc, danh sách nguồn) Trong đó: - “Socket” là một tham số cụ thể được sử dụng để phân biệt giữa các thực thể gửi yêu cầu khác nhau (ví dụ, các chương trình, các quy trình) trong các nút; tham số socket của các cuộc gọi hệ thống Unix BSD là một ví dụ cụ thể. - “Giao diện” là một bộ định danh cục bộ của giao diện mạng trên đó việc nhận địa chỉ multicast cụ thể được cho phép hoặc vô hiệu hóa. Các giao diện có thể là vật lý (ví dụ giao diện Ethernet) hoặc ảo (ví dụ điểm kết thúc của chuyển mạch kênh ảo Frame Relay hoặc một đường hầm IP- trong-IP). Trong trường hợp việc triển khai được cho phép thông qua một tham số giao diện “không rõ ràng” đặc biệt, yêu cầu sẽ được áp dụng trên giao diện “chính” hoặc “giao diện mặc định” của nút (có thể được xác định bởi cấu hình hệ thống). Nếu thực hiện việc tiếp nhận cùng một địa chỉ multicast trên nhiều giao diện, IPv6MultlcastListen sẽ được yêu cầu một cách riêng biệt cho từng giao diện mong muốn. - “Địa chỉ multicast IPv6” là một địa chỉ multicast gắn với các yêu cầu. Nếu có yêu cầu tiếp nhận nhiều địa chỉ multicast trên một giao diện cụ thể, thì IPv6MulticastLinten sẽ được thực hiện một cách riêng biệt cho từng địa chỉ mong muốn. - “Chế độ lọc” có thể là INCLUDE hoặc EXCLUDE. Trong chế độ INCLUDE, chỉ các gói tin có địa chỉ nguồn được liệt kê trong danh sách địa chỉ nguồn mới có thể gửi đến một địa chỉ multicast cụ thể. Trong chế độ EXCLUDE, chỉ các gói tin có địa chỉ nguồn nằm ngoài danh sách địa chỉ nguồn mới có thể gửi đến một địa chỉ multicast cụ thể. - “Danh sách nguồn” là một danh sách không theo thứ tự (danh sách này có thể không chứa nguồn nào) chứa những địa chỉ mà từ đó việc tiếp nhận multicast được yêu cầu hoặc từ chối, phụ thuộc vào chế độ lọc. Việc thực thi có thể gặp phải một số hạn chế về kích thước của danh sách nguồn. Khi giới hạn danh sách nguồn bị vượt quá, giao diện dịch vụ có thể gặp lỗi. Với một tập hợp socket, giao diện, và địa chỉ multicast IPv6 nhất định, chỉ duy nhất một chế độ lọc và danh sách nguồn có thể có hiệu lực tại một thời điểm. Tuy nhiên, hoặc chế độ lọc hoặc danh sách nguồn hoặc cả hai có thể được thay đổi bởi các yêu cầu IPv6MulticastListen tiếp theo cho cùngsocket, giao diện, và địa chỉ Multicast IPv6. Mỗi yêu cầu đến sau thay thế hoàn toàn bất kỳ yêu cầu nào trước đó đối với từng socket, giao diện, và địa chỉ multicast cụ thể.
  9. Giao thức MLDv1 không hỗ trợ các bộ lọc nguồn, và có giao diện dịch vụ đơn giản hơn, MLDv1 bao gồm các chức năng bắt đầu lắng nghe và dừng lắng nghe để cho phép hoặc vô hiệu hóa việc nghe một địa chỉ multicast cụ thể (từ tất cả các nguồn) trên một giao diện nhất định. Các hoạt động tương ứng của MLDv1 trong giao diện dịch vụ mới như sau: Hoạt động bắt đầu nghe tương đương với: IPv6MulticastListen (socket, giao diện, địa chỉ multicast IPv6, EXCLUDE, { }) Và hoạt động dừng lắng nghe tương đương với: IPv6MulticastListen (socket, giao diện, địa chỉ multicast IPv6, INCLUDE, { }) Trong đó { } là một danh sách nguồn trống. 7 Trạng thái nghe multicast được duy trì bởi các nút 7.1 Trạng thái từng socket Với mỗi socket mà trên đó IPv6MulticastListen được yêu cầu, nút ghi lại trạng thái nghe multicast được mong muốn cho socket đó. Trạng thái đó bao gồm một tập hợp các bản ghi có dạng: (giao diện, địa chỉ multicast lPv6, chế độ lọc, địa chỉ nguồn) Trạng thái cho từng socket đưa ra để phản hồi lại từng yêu cầu của IPv6MulticastListen trên từng socket như sau: - Nếu chế độ lọc được yêu cầu là INCLUDE và danh sách nguồn được yêu cầu không chứa nguồn nào, thì mục tương ứng với giao diện và địa chỉ multicast được yêu cầu sẽ bị xóa nếu nó hiển thị. Nếu không có mục nào được hiển thị, yêu cầu sẽ không có tác dụng. - Nếu chế độ lọc được yêu cầu là EXCLUDE hoặc danh sách nguồn được yêu cầu không phải là trống, mục tương ứng với giao diện và địa chỉ multicast được yêu cầu, nếu xuất hiện sẽ được thay đổi đểchứa chế độ lọc và danh sách nguồn được yêu cầu. Nếu không có mục nào xuất hiện, một mục mới sẽ được tạo ra, sử dụng các tham số được chỉ thị trong yêu cầu. 7.2 Trạng thái từng giao diện Ngoài trạng thái nghe multicast từng socket, một nút cũng phải duy trì hoặc tính toán trạng thái lắng nghe multicast cho từng giao diện của nó. Trạng thái này chứa một tập hợp các bản ghi theo dạng: (Địa chỉ multicast IPv6, chế độ lọc, danh sách nguồn) Chỉ duy nhất một bản ghi cho từng địa chỉ multicast tồn tại cho một giao diện nhất định. Trạng thái từng giao diện này nhận được từ trạng thái từng socket, nhưng có thể có sự khác biệt vì các socket khác nhau có những chế độ lọc và/hoặc các danh sách nguồn khác nhau cho cùng địa chỉ multicast và giao diện. Ví dụ, giả sử một ứng dụng hay chương trình yêu cầu hoạt động trên socket s1 như sau: IPv6MulticastListen (s1, i, m, INCLUDE, {a, b, c}) yêu cầu việc đón nhận các gói tin được gửi tới địa chỉ multicast m trên giao diện i, chỉ khi chúng đến từ nguồn a, b hoặc c. Giả sử một ứng dụng hay chương trình khác yêu cầu hoạt động trên socket s2 như sau: IPv6MulticastListen (s2, i, m, INCLUDE, {b, c, d})
  10. yêu cầu việc đón nhận những gói tin được gửi tới cùng địa chỉ multicast m trên cùng giao diện i, chỉ khi chúng đến từ nguồn b, c hoặc d. Để thỏa mãn việc đón nhận các yêu cầu của cả hai socket thì giao diện i cần nhận được các gói tin được gửi tới địa chỉ m từ bất kỳ nguồn nào trong a, b, c hay d. Do đó, trong ví dụ này, trạng thái lắng nghe của giao diện i cho địa chỉ multicast m có chế độ lọc INCLUDE và danh sách nguồn {a, b, c, d}. Sau khi một gói tin multicast được chấp nhận tại tầng IP của giao diện, việc phân phối tiếp theo của gói tin này tới ứng dụng hay tiến trình đang lắng nghe trên một socket cụ thể phụ thuộc vào trạng thái nghe multicast của socket (và cũng phải phù hợp với những điều kiện khác, như cổng của tầng giao vận nào mà socket đang sử dụng). Do đó nếu gói tin đến trên giao diện i, có đích là địa chỉ multicast m, với địa chỉ nguồn a, nó có thể được phân phối vào socket s1 mà không phải là socket s2. Chú ý rằng, bản tin MLDv2 không phụ thuộc vào việc lọc nguồn và phải được xử lý bởi các host và router. Việc yêu cầu lọc các gói tin dựa vào trạng thái đón nhận multicast của socket là một tính năng mới của giao diện dịch vụ này. Giao diện dịch vụ trước đó không mô tả việc lọc dựa trên trạng thái nghe multicast; hơn nữa, hoạt động bắt đầu nghe multicast trên mỗi socket chỉ đơn giản làm cho nút bắt đầu nghe địa chỉ multicast trên một giao diện cụ thể; các gói tin được gửi tới địa chỉ multicast đó cóthể được phân phối cho tất cả các socket, dù chúng đã bắt đầu nghe hay chưa. Quy tắc thông thường để trạng thái từng giao diện nhận được từ trạng thái từng socket như sau: với từng cặp (giao diện, địa chỉ multicast) riêng biệt xuất hiện trong trạng thái từng socket, một bản ghi từng giao diện được tạo ra cho địa chỉ multicast này trên giao diện đó. Tất cả các bản ghi socket chứa cùng cặp (giao diện, địa chỉ multicast) được xem xét như sau: - Nếu bất kỳ bản ghi socket nào có chế độ lọc là EXCLUDE thì chế độ lọc của bản ghi giao diện là EXCLUDE, và danh sách nguồn của bản ghi giao diện là phần giao cắt của các danh sách địa chỉ nguồn cho tất cả các bản ghi socket trong chế độ lọc EXCLUDE, trừ đi các địa chỉ nguồn xuất hiện trong bất kỳ bản ghi socket nào có chế độ lọc INCLUDE. Ví dụ, nếu các bản ghi socket cho địa chỉ multicast m trên giao diện i là: từ socket s1: (i, m, EXCLUDE, {a, b, c, d}) từ socket s2: (i, m, EXCLUDE, {b, c, d, e}) từ socket s3: (i, m, INCLUDE, {d, e, f}) bản ghi giao diện tương ứng trên giao diện i là: (m, EXCLUDE, {b, c}) Nếu socket thứ tư được thêm vào như sau: Từ socket s4: ((i, m, EXCLUDE, { }) bản ghi giao diện sẽ trở thành: (m, EXCLUDE, { }) - Nếu tất cả các bản ghi socket có một chế độ lọc là INCLUDE thì chế độ lọc của bản ghi giao diện là INCLUDE, và danh sách nguồn của bản ghi giao diện là kết hợp của các danh sách nguồn của tất cả các bản ghi socket. Ví dụ, nếu các bản ghi socket cho địa chỉ multicast m trên giao diện i là: từ socket s1: (i, m, INCLUDE, {a, b, c}) từ socket s2: (i, m, INCLUDE, {b, c, d})
  11. từ socket s3: (i, m, INCLUDE, {e, f}) thì bản ghi giao diện tương ứng trên giao diện i là: (m, INCLUDE, {a, b, c, d, e, f}) Việc thực hiện KHÔNG ĐƯỢC sử dụng bản ghi giao diện EXCLUDE cho một địa chỉ multicast nếu tất cả các socket cho địa chỉ multicast này ở trong trạng thái INCLUDE. Nếu tài nguyên hệ thống bị giới hạn khi tính toán danh sách nguồn cho trạng thái từng giao diện, một lỗi PHẢI được trả về giao diện đã yêu cầu. Các quy luật ở trên cho việc nhận biết trạng thái từng giao diện được đánh giá lại bất cứ khi nào một yêu cầu IPv6MulticastListen làm thay đổi trạng thát từng socket bằng cách thêm vào, xóa bỏ hay chỉnh sửa bản ghi trạng thái từng socket. Chú ý rằng một thay đổi của trạng thái từng socket không nhất thiết dẫn đến một sự thay đổi trong trạng thái từng giao diện. 8 Các định dạng bản tin MLDv2 là một giao thức con của ICMPv6, đo đó, các dạng bản tin của MLDv2 là một tập con của các bản tin ICMPv6, và các bản tin MLDv2 được định nghĩa trong các gói IPv6 bởi giá trị trường Next Header bằng 58. Tất cả các bồn tin MLDv2 được mô tả trong tiêu chuẩn này PHẢI được gửi với địa chỉ nguồn link-local, trường Hop Limit có giá trị bằng 1, và tùy chọn Router Alert IPv6 [RFC2711] trong mào đầu Hop-by-Hop Options (tùy chọn Router Alert nhằm mục đích để các router kiểm tra các bản tin MLDv2 được gửi tới các địa chỉ multicast IPv6 mà router không có nhu cầu). Các bản tin Report MLDv2 có thể được gửi với địa chỉ nguồn được thiết lập thành địa chỉ không xác định [TCVN 9802- 2:2015], nếu giao diện gửi không có một địa chỉ nguồn IPv6 link-local hợp lệ. Hai loại bản tin MLD liên quan đến giao thức MLDv2 được mô tả trong tiêu chuẩn này: - Bản tin Multicast Listener Query (trường Type có giá trị bằng 130 theo hệ thập phân), - Bản tin Multicast Listener Report phiên bản 2 (Trường Type có giá trị bằng 143 theo hệ thập phân). Để đảm bảo tính tương tác với các nút triển khai MLDv1 (điều 11), việc triển khai MLDv2 cũng phải hỗ trợ hai loại bản tin sau: - Bản tin Multicast Listener Report phiên bản 1 (Trường Type có giá trị bằng 131 theo hệ thập phân) [RFC2710], - Bản tin Multicast Listener Done (hoàn thành nghe multicast) phiên bản 1 (Trường Type có giá trịbằng 132 theo hệ thập phân) [RFC2710]. Các loại bản tin không được nhận biết PHẢI được tự động bỏ qua. Các loại bản tin khác có thể đượcsử dụng bởi các phiên bản hoặc các phần mở rộng MLD mới hơn, bởi các giao thức định tuyếnmulticast hoặc một số phương pháp khác. Trong phần còn lại của tiêu chuẩn này, bản tin Multicast Listener Query, bản tin Multicast Listener Report, bản tin Multicast Listener Done được gọi tắt là bản tin Query, bản tin Report, và bản tin Done một cách tương ứng. 8.1 Bản tin Multicast Listener Query Các bản tin Multicast Listener Query được gửi bởi các Querier để truy vấn trạng thái nghe multicast của các giao diện lân cận. Các bản tin Query có định dạng bản tin như sau:
  12. Hình 1 - Định dạng bản tin Query 8.1.1 Trường Code (Mã) Được khởi tạo bằng 0 bởi bên gửi; được bên nhận bỏ qua. 8.1.2 Trường Checksum (kiểm tra tổng) Trường Checksum ICMPv6 chuẩn thực hiện kiểm tra toàn bộ bản tin MLDv2, cộng thêm “mào đầu ảo” của các trường mào đầu IPv6 [RFC 4443]. Để tính toán lỗi, trường Checksum được thiết lập bằng 0. Khi một gói tin được gửi, trường Checksum PHẢI được xác minh trước khi xử lý gói tin đó. 8.1.3 Trường Maximum Respond Code (Mã phản hồi tối đa) Trường Maximum Respond Code quy định thời gian cho phép tối đa trước khi gửi một bản tin Report phản hồi. Thời gian thực tế cho phép, được gọi là trễ phản hồi tối đa, thể hiện theo đơn vị mili-giây, và được nhận từ mã phản hồi tối đa như sau:
  13. Nếu giá trị trường Maximum Respond Code nhỏ hơn 32768 thì trễ phản hồi tối đa bằng giá trị của trường Maximum Respond Code. Nếu giá trị trường Maximum Respond Code lớn hơn hoặc bằng 32768 thì trễ phản hồi tối đa bằng [(mant | 0x1000)(exp+3)]. Trong đó, ký hiệu mant và exp được quy định như sau: Các giá trị nhỏ của trễ phản hồi tối đa cho phép các router MLDv2 điều chỉnh “trễ rời nhóm” (thời gian giữa thời điểm nút cuối cùng trên liên kết dừng nghe một địa chỉ multicast cụ thể và thời điểm giao thức định tuyến được thông báo rằng không còn một đối tượng nghe nào nữa cho địa chỉ đó). Các giá trị lớn hơn, đặc biệt theo bậc lũy thừa, cho phép điều chỉnh sự bùng nổ của lưu lượng MLD trên một liên kết. 8.1.4 Trường Reserve (Dự phòng) Được khởi tạo bằng 0 bởi bên gửi, được bên nhận bỏ qua. 8.1.5 Trường Multicast Address (Địa chỉ Multicast) Trong bản tin General Query, trường Multicast Address được thiết lập về 0. Trong bản tin Multicast Address Specific Query hoặc bản tin Multicast Address and Source Specific Query, trường này được thiết lập thành địa chỉ multicast được truy vấn. 8.1.6 Trường Resv Được khởi tạo bằng 0 bởi bên gửi, được bên nhận bỏ qua. 8.1.7 Trường S Flag (Cờ S) - Ngăn chặn xử lý phía router Khi được thiết lập bằng 1, cờ S yêu cầu bất cứ router multicast nào đang nhận bản tin ngừng cập nhật các bộ đếm thời gian như chúng vẫn thực hiện ngay sau khi nhận được một bản tin Query. Tuy nhiên cờ S không ngăn chặn việc bầu chọn Querier hoặc xử lý bản tin Query phía host thông thường mà router có thể được yêu cầu thực hiện (khi router trở thành đối tượng nghe multicast). 8.1.8 Trường QRV (biến Robustness của Querier) Nếu khác 0, trường QRV chứa giá trị [biến Robustness] được sử dụng bởi Querier. Nếu [biến Robustness] của Querier vượt quá 7 (giá trị tối đa của trường QRV), trường QRV được đặt bằng 0. Các router nhận giá trị QRV từ bản tin Query vừa nhận được gần nhất như là giá trị [biến Robustness] của chính nó. Nếu trường QRV vừa nhận được gần nhất bằng 0 thì router sẽ sử dụng giá trị [biến Robustness] mặc định được quy định trong điều 12.1, hoặc một giá trị đã được cấu hình cố định. 8.1.9 Trường QQIC (Mã khoảng thời gian truy vấn của querier) Trường QQIC quy định [khoảng thời gian truy vấn] được sử dụng bởi Querier. Khoảng thời gian thực tế, được gọi là khoảng thời gian truy vấn của Querier (viết tắt là QQI), được thể hiện theo đơn vị giây, và được nhận từ QQIC như sau:
  14. Nếu QQIC < 128,="" giá="" trị="" khoảng="" thời="" gian="" truy="" vấn="" của="" querier="" bằng="" giá="" trị="" của="" trường="" qqic="" nếu="" qqic="">= 128, giá trị khoảng thời gian truy vấn của Querier bằng: (mant | 0x10)(exp + 3) Trong đó, ký hiệu exp và mant được quy định như sau: Các router multicast không phải là Querier hiện tại sẽ nhận giá trị QQI từ bản tin Query nhận được gần nhất như là giá trị [khoảng thời gian truy vấn] của chính nó. Nếu giá trị QQI vừa nhận được bằng 0 thì các router sẽ sử dụng giá trị [khoảng thời gian truy vấn] mặc định được quy định trong điều 12.2. 8.1.10 Number of Sources [N] (Số lượng nguồn) Trường Number of Sources (N) quy định số lượng địa chỉ nguồn đang có mặt trong bản tin Query. Số lượng này bằng 0 trong một bản tin General Query hoặc bản tin Multicast Address Specific Query và khác không trong một bản tin Multicast Address and Source Specific Query. Số lượng này được giới hạn bởi MTU của liên kết mà bản tin Query được gửi. Ví dụ, trên một liên kết Ethernet với MTU bằng 1500 octet, mào đầu IPv6 (40 octet) cùng với tùy chọn Router Alert thành 48 octet; do đó, còn lại 1424 octet cho các địa chỉ nguồn sẽ giới hạn số lượng địa chỉ nguồn bằng 89 (1424/16). 8.1.11 Source Address [i] (Địa chỉ nguồn) Các trường Source Address[i] là một véc tơ của n địa chỉ unicast, trong đó n là giá trị của trường Number of Sources [N]. 8.1.12 Dữ liệu bổ sung Nếu trường Payload Length trong mào đầu IPv6 của một bản tin Query nhận được quy định rằng sau các trường được mô tả ở trên có xuất hiện các octet dữ liệu bổ sung, thì việc triển khai MLDv2 PHẢI sử dụng các octet này để tính toán xác minh Checksum MLD nhận được nhưng mặt khác PHẢI bỏ qua các octet bổ sung đó. Khi gửi một bản tin Query, việc thực thi MLDv2 KHÔNG ĐƯỢC bao gồm những octet bổ sung sau các trường, được mô tả ở trên. 8.1.13 Các loại của bản tin Query Bản tin Query có ba loại như sau: - “Bản tin General Query” được gửi bởi Querier để biết được những địa chỉ multicast nào có đối tượng nghe trên một liên kết được kết nối. Trong bản tin General Query, cả trường Multicast Address và trường Number of Sources (N) đều bằng 0. - “Bản tin Multicast Address Specific Query” được gửi bởi Querier để biết được rằng một địa chỉ multicast cụ thể có đối tượng nghe nào trên một liên kết được kết nối hay không. Trong bản tin Multicast Address Specific Query, trường Multicast Address chứa địa chỉ multicast đang được theo dõi, trong khi trường Number of Sources (N) được đặt bằng 0. - “Bản tin Multicast Address and Source Specific Query” được gửi bởi bộ Querier để biết được rằng các nguồn từ danh sách xác định cho một địa chỉ multicast cụ thể có đối tượng nghe nào trên một liên kết được kết nối hay không. Trong bản tin Multicast Address and Source Specific Query, trường Multicast Address chứa địa chỉ multicast đang được theo dõi, trong khi các trường Source Address [i] chứa các địa chỉ nguồn được theo dõi.
  15. 8.1.14 Những địa chỉ nguồn cho các bản tin Query Tất cả các bản tin Query MLDv2 PHẢI được gửi với địa chỉ nguồn IPv6 link-local hợp lệ. Nếu một nút nhận được bản tin Query có địa chỉ nguồn IPv6 là địa chỉ không xác định (::), hoặc các địa chỉ khác không phải địa chỉ IPv6 hợp lệ, nút PHẢI loại bỏ tự động bản tin này và NÊN ghi lại cảnh báo. 8.1.15 Những địa chỉ đích cho các bản tin Query Trong MLDv2, các bản tin General Query được gửi tới địa chỉ multicast tất cả các nút trong phạm viliên kết (FF02::1). Các bản tin Multicast Address Specific Query và bản tin Multicast Address and Source Specific Query được gửi có địa chỉ đích là địa chỉ multicast được theo dõi. Tuy nhiên, một nút PHẢI chấp nhận và xử lý bất kỳ bản tin Query nào có trường Destination Address chứa những địa chỉ (unicast hoặc multicast) được gán cho giao diện mà bản tin Query tới. Điều này có thể hữu ích trong một số trường hợp, chẳng hạn cho mục đích tìm và sửa lỗi. 8.2 Bản tin Multicast Listener Report phiên bản 2 Các bản tỉn Multicast Listener Report phiên bản 2 được gửi bởi các nút IP để thông báo (tới các router lân cận) trạng thái nghe multicast hiện tại hoặc để thay đổi trạng thái nghe multicast của các giao diện của chúng. Hình 2 trình bày định dạng của bản tin Report.
  16. Hlnh 2 - Định dạng bản tin Report Mỗi Multicast Address Record (bản ghi địa chỉ multicast) trong bản tin Report có định dạng như Hình 3. Hình 3 - Định dạng Multicast Address Record (bản ghi địa chỉ multicast) 8.2.1 Trường Reserved (Dự phòng) Trường Reserved được đặt bằng 0 khi truyền và được bên nhận bỏ qua. 8.2.2 Trường Checksum (Kiểm tra tổng) Trường Checksum ICMPv6 chuẩn thực hiện kiểm tra toàn bộ bản tin MLDv2, cộng thêm “mào đầu ảo” của trường mào đầu IPv6 [TCVN 9802-1:2013, RFC 4443]. Để tính toán kiểm tra tổng, trường Checksum được đặt bằng 0. Khi một gói tin được nhận, trường Checksum PHẢI được xác minh trước khi xử lý nó. 8.2.3 Trường Nr of Mcast Address Records (Số lượng các bản ghi địa chỉ Multicast M) Trường Nr of Mcast Address Records (M) quy định số lượng các Multicast Address Record được hiển thị trong một bản tin Report. 8.2.4 Trường Multicast Address Record (Bản ghi địa chỉ Multicast)
  17. Mỗi Multicast Address Record là một khối các trường chứa thông tin ở máy gửi đang nghe một địa chỉ multicast đơn lẻ trên giao diện mà từ đó bản tin Report được gửi. 8.2.5 Trường Record Type (Loại bản ghi) Trường này quy định loại Multicast Address Record. Xem điều 8.2.12 về các mô tả chi tiết cho các loại bản ghi khả dụng khác nhau. 8.2.6 Trường Aux Data Len (Chiều dài dữ liệu bổ trợ) Trường Aux Data Len chứa chiều dài của trường dữ liệu bổ trợ trong Multicast Address Record, theo đơn vị từ 32-bit. Nó có thể bằng 0 nhằm thể hiện không có dữ liệu bổ trợ nào. 8.2.7 Trường Number of Sources [N] (Số lượng Nguồn) Trường Number of Sources quy định số lượng địa chỉ nguồn được hiển thị trong Multicast Address Record. 8.2.8 Trường Multicast Address (Địa chỉ multicast) Trường Multicast Address chứa địa chỉ multicast của Multicast Address Record. 8.2.9 Trường Source Address [i] (Địa chỉ Nguồn) Các trường Source Address là một véc tơ của n các địa chỉ unicast, trong đó n là giá trị của trường Number of Sources (N) trong bản ghi. 8.2.10 Trường Auxiliary Data (Dữ liệu bổ trợ) Nếu xuất hiện, trường Auxiliary Data chứa các thông tin bổ sung liên quan đến Multicast Address Record này. Giao thức MLDv2 quy định tại tiêu chuẩn này không định nghĩa bất kỳ dữ liệu bổ trợ nào. Do đó, các thực thi MLDv2 KHÔNG ĐƯỢC bao gồm bất kỳ dữ liệu bổ trợ (tức là, PHẢI thiết lập trường Aux Data Len bằng 0) trong bất kỳ Multicast Address Record được truyền nào, và PHẢI bỏ qua những dữ liệu như vậy nếu chúng xuất hiện trong Multicast Address Record nhận được. Nội dung và mã hóa nội bộ của trường Auxiliary Data được định nghĩa bởi các phiên bản hoặc phần mở rộng của MLD trong tương lai sẽ sử dụng trường này. 8.2.11 Dữ liệu bổ sung Nếu trường Paytoad Length trong mào đầu IPv6 của bản tin Report nhận được chỉ thị rằng sau Multicast Address Record cuối cùng có những octet dữ liệu bổ sung thì các thực thi MLDv2 PHẢI sử dụng các octet đó trong việc tính toán xác minh trường Checksum MLD nhận được nhưng mặt khác PHẢI bỏ qua các octet bổ sung đó. Khi gửi một bản tin Report, thực thi MLD KHÔNG ĐƯỢC chứa các octet bổ sung sau Multicast Address Record cuối cùng. 8.2.12 Các loại Multicast Address Record Bản tin Report có thể có một số loại Multicast Address Record khác nhau như sau: - Current State Record (bản ghi trạng thái hiện tại) được một nút gửi đi để phản hồi lại bản tin Query nhận được trên một giao diện. Bản tin Report chứa bản ghi này thông báo trạng thái lắng nghe hiện tại của giao diện đã nhận bản tin Query, đối với một địa chỉ multicast. Trường Record Type của Current State Record có thể là một trong hai giá trị sau: Giá trị Tên và ý nghĩa
  18. 1 MODE_IS_INCLUDE - quy định rằng giao diện có chế độ lọc là INCLUDE cho một địa chỉ multicast cụ thể. Các trường Source Address [i] trong Multicast Address Recordlà danh sách nguồn của giao diện cho một địa chỉ multicast cụ thể. Bản ghiMODE_IS_INCLUDE không bao giờ được gửi với một danh sách nguồn trống. 2 MODE_IS_EXCLUDE - quy định rằng giao diện có chế độ lọc là EXCLUDE cho một địa chỉ multicast cụ thể. Các trường Source Address [i] trong Multicast Address Record nếu có sẽ là danh sách nguồn của giao diện cho địa chỉ multicast cụ thể. - Filter Mode Change Record (bản ghi thay đổi chế độ lọc) được gửi bởi một nút bất cứ khi nào một yêu cầu cục bộ IPv6MulticastListen gây ra một thay đổi về chế độ lọc của bản ghi trạng thái giao diện cho một địa chỉ multicast cụ thể (tức là thay đổi từ INCLUDE sang EXCLUDE, hoặc từ EXCLUDE sang INCLUDE), để xác minh danh sách nguồn có thay đổi cùng thời điểm hay không. Bản tin Report chứa bản ghi này được gửi đi từ giao diện mà thay đổi xảy ra. Trường Record Type của Filter Mode Change Record có thể là một trong hai giá trị sau: Giá trị Tên và ý nghĩa 3 CHANGE_TO_INCLUDE MODE - quy định rằng giao diện được thay đổi sang chế độ lọc INCLUDE cho một địa chỉ multicast cụ thể. Các trường Source Address [i] trong Multicast Address Record nếu có sẽ là danh sách nguồn mới của giao diện đối với một địa chỉ multicast cụ thể. 4 CHANGE_TO_EXCLUDE_MODE - quy định rằng giao diện được thay đổi sang chế độ lọc EXCLUDE cho một địa chỉ multicast cụ thể. Trường Source Address [i] trong Multicast Address Record nếu có sẽ là danh sách nguồn mới của giao diện đối vớiđịa chỉ multicast cụ thể. - Source List Change Record (bản ghi thay đổi danh sách nguồn) được gửi bởi một nút bất cứ khi nào một yêu cầu IPv6MulticastListen cục bộ gây ra một sự thay đổi danh sách nguồn, điều đó không có nghĩa là thay đổi chế độ lọc của một bản ghi trạng thái giao diện cho một địa chỉ multicast cụ thể. Bản ghi này chứa trong bản tin Report được gửi từ giao diện đã xảy ra thay đổi. Trường Record Type của Source List Change Record có thể là một trong hai giá trị sau: Giá trị Tên và ý nghĩa 5 ALLOW_NEW_SOURCE - quy định rằng các trường Source Address [i] trong Multicast Address Record này chứa một danh sách nguồn bổ sung mà nút mong muốn lắng nghe các gói tin cho một địa chỉ multicast cụ thể. Nếu thay đổi xảy ra tại danh sách nguồn INCLUDE, đây là những địa chỉ được thêm vào danh sách, nếu thay đổi xảy ra tại danh sách nguồn EXCLUDE, đây là những địa chỉ được xóa khỏi danh sách. 6 BLOCK_OLD_SOURCE - quy định rằng các trường Source Address [i] trong Multicast Address Record này chứa một danh sách các nguồn mà nút không còn mong muốnlắng nghe các gói tin cho một địa chỉ multicast cụ thể. Nếu thay đổi sang danh sách nguồn INCLUDE, đây là những địa chỉ đã được xóa khỏi danh sách, nếu thay đổisang danh sách nguồn EXCLUDE, đây là những địa chỉ được thêm vào danh sách. Nếu sự thay đổi danh sách nguồn dẫn đến cả việc cho phép các nguồn mới và xóa các nguồn cũ, thìhai bản ghi địa chỉ nguồn multicast sẽ được gửi với cùng địa chỉ multicast, một bản cho loại ALLOW_NEW_SOURCES, một cho loại BLOCK_OLD_SOURCES. Khái niệm State Change Record được sử dụng để tham chiếu đến hoặc Filter Mode Change Record hoặc Source List Change Record. Những biểu diễn sau được sử dụng để mô tả nội dung của Multicast Address Record liên quan đến một địa chỉ multicast cụ thể:
  19. IS_IN ( x ) - Loại bản ghi là MODE_IS INCLUDE, các địa chỉ nguồn x IS_EX (x) - Loại bản ghi là MODE_IS_EXCLUDE, các địa chỉ nguồn x TO_IN (x) - Loại bản ghi là CHANGE_TO_NCLUDE_MODE, các địa chỉ nguồn x TO_EX (x) - Loại bản ghi là CHANGE_TO_EXCLUDE_MODE, các địa chỉ nguồn x ALLOW (x) - Loại bản ghi là ALLOW_NEW_SOURCES, các địa chỉ nguồn x BLOCK (x) - Loại bản ghi là BLOCK_OLD_SOURCES, các địa chỉ nguồn x Trong đó x là: - Chữ viết hoa (ví dụ “A”) đại diện cho một tập các địa chỉ nguồn hoặc - Biểu diễn nhiều tập hợp các địa chỉ nguồn (ví dụ “A+B”) trong đó, “A+B” có nghĩa là tập hợp kết hợp giữa A và B, “A*B” có nghĩa là phần giao giữa A và B, “A-B” có nghĩa là loại bỏ tất cả các thành phần của tập B từ tập A. 8.2.13 Các địa chỉ nguồn cho bản tin Report Một bản tin Report MLDv2 PHẢI được gửi với một địa chỉ IPv6 link-local hợp lệ, hoặc địa chỉ không xác định (::) nếu giao diện gửi không yêu cầu địa chỉ link-local hợp lệ. Các bản tin Report gửi đi với địa chỉ không xác định để hỗ trợ việc sử dụng IP multicast trong giao thức phát hiện nút mạng lân cận [TCVN 9802-3:2015]. Với giao thức tự động cấu hình địa chỉ phi trạng thái [được định nghĩa trong RFC 2462], một nút được yêu cầu tham gia nhiều nhóm multicast IPv6 khác nhau để thực hiện chức năng phát hiện địa chỉ trùng (DAD). Trước khi thực hiện DAD, địa chỉ duy nhất mà nút báo cáo sử dụng cho việc gửi là một địa chỉ thăm dò, không thể được sử dụng cho truyền thông. Do đó, địa chỉ không xác định phải được sử dụng. Mặt khác, router PHẢI tự động bỏ qua những gói tin không có địa chỉ link-local hợp lệ, mà không tác động đến nội dung của các gói tin đó. Do đó, một bản tin Report sẽ bị bỏ qua nếu router không xác định được địa chỉ nguồn của gói tin thuộc về liên kết được kết nối với giao diện nhận gói tin đó. Bản tin Report được gửi với địa chỉ không xác định cũng bị router loại bỏ. Điều này giúp tăng cường bảomật, vì các nút báo cáo không xác định sẽ không thể làm ảnh hưởng đến trạng thái các router MLDv2. Tuy nhiên, nút báo cáo đã thay đổi trạng thái nghe của mình đối với các địa chỉ multicast được chứa trong Multicast Address Record của bản tin Report. Từ thời điểm này, nút báo cáo sẽ xử lý các gói tin được gửi tới các địa chỉ multicast đó theo trạng thái nghe mới này. Khi địa chỉ link-local là hợp lệ, nút NÊN phát đi các bản tin Report MLDv2 mới cho tất cả các địa chỉ multicast đã tham gia trên giao diện. 8.2.14 Địa chỉ đích của các bản tin Report Các bản tin Multicast Listener Report phiên bản 2 được gửi với địa chỉ IP đích là FF02:0:0:0:0:0:0:16 (địa chỉ mà tất cả các router multicast MLDv2 có khả năng nghe). Một nút hoạt động trong chế độ tương thích với phiên bản 1 gửi các bản tin Report phiên bản 1 tới địa chỉ multicast được xác địnhtrong trường Muiticast Address của bản tin Report. Ngoài ra, một nút PHẢI chấp nhận và xử lý bất kỳ bản tin Report phiên bản 1 nào có trường Destination Address chứa bất kỳ địa chỉ IPv6 (unicast hoặc multicast) được gán cho giao diện mà bản tin Report đó đến. Điều này là hữu ích cho một số mục đích như tìm và sửa lỗi. 8.2.15 Kích thước bản tin Report
  20. Nếu tập hợp các Multicast Address Record được yêu cầu trong bản tin Report không phù hợp với giới hạn kích thước của bản tin Report (được xác định theo MTU của liên kết mà nó sẽ được gửi) thì các Multicast Address Record cần được gửi trong nhiều bản tin Report để báo cáo toàn bộ các bản ghi. Nếu một Multicast Address Record chứa quá nhiều địa chỉ nguồn do đó bản ghi này không phù hợp với giới hạn kích thước của bản tin Report thì: - Nếu loại bản ghi không phải là IS_EX hoặc là TO_EX, bản ghi đó sẽ được chia thành nhiều Multicast Address Record; mỗi bản ghi như vậy chứa một tập con khác nhau của các địa chỉ nguồn và sẽ được gửi trong các bản tin Report riêng biệt. - Nếu loại bản ghi là IS_EX hoặc là TO_EX, một Multicast Address Record đơn lẻ được gửi với nhiều địa chỉ nguồn nhất có thể; các địa chỉ nguồn còn lại sẽ không được báo cáo. Mặc dù lựa chọn địa chỉ nguồn nào để báo cáo là tùy ý, tiêu chuẩn này khuyến nghị báo cáo một tập hợp giống nhau các nguồn trong mỗi bản tin Report tiếp theo. 9 Mô tả giao thức đối với các đối tượng nghe địa chỉ multicast MLDv2 là giao thức bất đối xứng, vì giao thức này quy định rõ ràng các cách xử lý riêng biệt cho các đối tượng nghe địa chỉ multicast (các host và router lắng nghe các gói tin multicast) và các router multicast. Phần này mô tả chức năng của MLDv2 áp dụng cho tất cả các đối tượng nghe địa chỉ multicast. (Chú ý rằng một router multicast cũng là một đối tượng nghe multicast thực hiện cả hai chức năng của MLDv2; nó nhận và phản hồi lại các bản tin MLD của chính mình, cũng như các bản tin MLD của các nút mạng lân cận nó.) Chức năng router của MLDv2 được mô tả trong điều 10. Trong phần này, một nút thực hiện giao thức trên tất cả các giao diện hỗ trợ việc tiếp nhận multicast, ngay cả khi có nhiều giao diện kết nối trên cùng liên kết. Để hoạt động tương tác với các router multicast đang chạy giao thức MLDv1, các nút duy trì biến Host Compatibility Mode (biến chế độ tương thích host) cho mỗi giao diện mà việc tiếp nhận multicast được hỗ trợ. Phần này mô tả việc xử lý của các nút nghe địa chỉ multicast trên các giao diện mà Host Compatibility Mode = MLDv2. Giải thuật để xác định biến Host Compatibiltty Mode và cách xử lý nếu giá trị của biến này được thiết lập là MLDv1, được mô tả trong điều 11. Địa chỉ multicast tất cả các nút trong phạm vi liên kết (FF02::1) được xử lý như một trường hợp đặc biệt, Trên tất cả các nút - tức là tất cả các host và router bao gồm cả các router multicast - việc lắng nghe các gói tin có đích là địa chỉ multicast tất cả các nút từ tất cả các nguồn, được cho phép trên tất cả các giao diện mà việc nghe multicast được hỗ trợ. Không có bản tin MLD nào được gửi mà không liên quan đến địa chỉ multicast tất cả các nút trong phạm vi liên kết hoặc cũng không phải là địa chỉ multicast có giới hạn bằng 0 (dự phòng) hoặc 1 (node-local). Có 3 loại sự kiện có thể kích hoạt các hoạt động của giao thức MLDv2 trên 1 liên kết: - Thay đổi của trạng thái nghe từng giao diện, được gây ra bởi yêu cầu cục bộ IPv6MulticastListen - Bắt đầu một bộ đếm thời gian cụ thể - Tiếp nhận một bản tin Query (Các bản tin MLD nhận được không phải là bản tin Query sẽ được tự động bỏ qua, trừ khi chúng được sử dụng cho việc tương tác với các nút thực thi MLDv1). Các phần tiếp theo mô tả các hoạt động được thực hiện cho từng trường hợp. Tên các bộ đếm thời gian và bộ đếm, cùng giá trị mặc định của chúng được quy định trong điều 12. 9.1 Xử lý theo sự thay đổi của trạng thái từng giao diện
nguon tai.lieu . vn