Bài viết chuyên đề

Multicast Listener Discovery (MLD) (Chuyên Đề Đào Tạo IPv6 – Phần 9)

25/03/2019 02:30:50

Thủ tục Multicast Listener Discovery (MLD) (Chuyên Đề Đào Tạo IPv6 – Phần 9)

1. Tổng quát về MLD

Multicast là một trong những hoạt động đặc trưng của thế hệ địa chỉ IPv6. Việc quản lý quan hệ multicast, hỗ trợ cho định tuyến multicast là vô cùng cần thiết và quan trọng.

Trong IPv6, việc quản lý quan hệ multicast được thực thi bởi một thủ tục, hoạt động trên nền các thông điệp ICMPv6, là Multicast Listener Discovery-MLD. Thủ tục này thay thế cho Internet Group Management Protocol phiên bản 2 (IGMPv2) trong IPv4. MLD có một điểm khác biệt cơ bản với IGMPv2 là nó sử dụng chính thông điệp ICMPv6 (IP Protocol 58), chứ không định nghĩa tập hợp thông điệp riêng. 

Multicast Listener Discovery sử dụng một nhóm ba thông điệp ICMPv6. Các thông điệp này được trao đổi giữa router và node, cho phép một router khám phá ra trên mỗi giao diện gắn trực tiếp với nó những node là thành viên của nhóm multicast, sẵn sàng nhận gói tin được gửi tới địa chỉ multicast đó (node đang "nghe" lưu lượng), cũng như những địa chỉ multicast đang được các node này quan tâm. 

Thông tin này được cung cấp bất cứ khi nào thủ tục định tuyến multicast được kích hoạt trên các router, để đảm bảo rằng các gói tin multicast được truyền tải đến mọi đường link nơi có những node muốn nhận lưu lượng này.

MLD phân định cách thức cư xử khác nhau cho router và cho node nghe lưu lượng multicast. Nếu tại một địa chỉ multicast, router vừa đóng vai trò router, bản thân cũng nghe và muốn nhận lưu lượng tại địa chỉ này, thì router cần thực hiện cả hai phần của thủ tục: cho router và cho node nghe lưu lượng multicast. 

Router sử dụng MLD để tìm ra xem địa chỉ multicast nào có node đang chờ nghe lưu lượng trên mỗi đường link trực tiếp của nó. Mỗi router duy trì một danh sách, cho mỗi đường link, chứa thông tin địa chỉ multicast nào có node muốn nhận lưu lượng trên đường link đó. Tuy nhiên, MLD chỉ tìm ra danh sách những địa chỉ multicast mà ít nhất có một node đang "nghe", chứ không phải là danh sách những node đang nghe lưu lượng tương ứng với mỗi địa chỉ multicast.

2. Trạng thái và cách cư xử của các router

 

Router trên một đường link có thể có hai trạng thái:

  • "Truy vấn" - Khi router được xác định để gửi các truy vấn MLD (MLD Query) trên đường link đó.
  • "Không truy vấn", Khi có một router khác trên đường link đã thực hiện chức năng gửi truy vấn trên.

Có ba sự kiện có thể dẫn tới sự thay đổi trạng thái của một router:

  • "Hết hạn thời gian truy vấn": diễn ra khi thời gian đặt cho truyền dẫn truy vấn hết hạn. Sự kiện này sẽ diễn ra khi router đang ở trong trạng thái "Truy vấn". 
  • "Truy vấn nhận được từ một router có địa chỉ IP nhỏ hơn" diễn ra khi một thông điệp MLD Query hợp lệ nhận được từ một router khác trên cùng đường link với địa chỉ nguồn IPv6 thấp hơn. Một truy vấn MLD là hợp lệ khi gói tin phải tới từ một địa chỉ nguồn link-local, có ít nhất 24 octet chiều dài và có MLD checksum chính xác. 
  • "Các thời gian truy vấn khác hết hạn" diễn ra khi thời gian đặt cho truy vấn khác có địa chỉ IP thấp hơn đã hết. Sự kiện này chỉ diễn ra khi router đang ở trong trạng thái "Không truy vấn".

3. Thông điệp ICMPv6 sử dụng trong thủ tục MLD

Cấu trúc gói tin MLD:

Một gói tin MLD bao gồm một IPV6 header, một header mở rộng Hop-by-Hop và thông điệp MLD. Gói tin MLD luôn luôn có header mở rộng Hop-by-Hop để đảm bảo rằng router sẽ xử lý cả những thông điệp MLD gửi tới những địa chỉ multicast mà bản thân router không nghe lưu lượng.

Ba thông điệp ICMPv6 sử dụng trong thủ tục MLD:  

Type 130: Multicast Listener Query

Multicast Listener Query được sử dụng bởi router để truy vấn về những node đang nghe lưu lượng multicast trên một đường link. Có hai dạng thông điệp Multicast Listener Query: Truy vấn thông thường (General query) và Truy vấn gắn với địa chỉ multicast cụ thể (Multicast-Address-Specific Query). Truy vấn thông thường được sử dụng để truy vấn mọi node của mọi địa chỉ multicast. Truy vấn gắn với địa chỉ multicast cụ thể được sử dụng để truy vấn những node đang nghe một địa chỉ multicast nhất định.  

Type 131: Multicast Listener Report

Multicast Listener Report được node đang nghe lưu lượng multicast sử dụng để hoặc báo cáo mình đang sẵn sàng nhận lưu lượng multicast nào đó hoặc để đáp trả lại thông điệp Multicast Listener Query.

Thông điệp này có dạng ICMPv6 type = 131 và giá trị trường Code được đặt = 0.

Trong IPv6 header của gói tin, địa chỉ nguồn là địa chỉ link-local của giao diện gửi gói tin. Giá trị trường Hop Limit được đặt là 1 và địa chỉ đích là địa chỉ multicast đang được thông báo muốn nghe lưu lượng. 

Type 132: Multicast Listener Done

Multicast Listener Done được node đang nghe lưu lượng multicast sử dụng để thông báo rằng nó không còn muốn nhận lưu lượng của một địa chỉ multicast cụ thể nào đó nữa.

Thông điệp có giá trị ICMPv6 type = 132 và giá trị trường Code đặt = 0. 

Khi một node từ bỏ không còn nhận lưu lượng của một địa chỉ multicast nhất định nào đó nữa, nó cần gửi một thông điệp Multicast Listener Done tới địa chỉ multicast mọi router phạm vi link (FF02::2), mang trong gói tin, trong trường Multicast Address là địa chỉ mà nó không nghe lưu lượng nữa.

 Xem tiếp Phần 10: http://www.waren.vn/chuyen-de/neighbor-discovery-nd-chuyen-de-dao-tao-ipv6-phan-10.html