Bài viết chuyên đề

Cấu trúc đánh địa chỉ, các dạng địa chỉ IPv6 (Chuyên Đề Đào Tạo IPv6 – Phần 3)

20/03/2019 02:40:04

Cấu trúc đánh địa chỉ, các dạng địa chỉ IPv6 (Chuyên Đề Đào Tạo IPv6 – Phần 3)

ĐỊA CHỈ MULTICAST

1. Multicast và broadcast trong địa chỉ IPv4

Như chúng ta đã biết, IPv4, địa chỉ broadcast được sử dụng trong các thủ tục ARP, DHCP và các thủ tục khác thực hiện chức năng tìm kiếm (discovery). Địa chỉ broadcast Ethernet (ff:ff:ff:ff:ff:ff) dành cho mọi mạng 802.x. Tại lớp mạng, địa chỉ 255.255.255.255 sử dụng cho các lưu lượng broadcast. Nếu các bít trong phần host của một subnet IPv4 đều là 1 thì đó cũng là địa chỉ broadcast (ví dụ địa chỉ 192.168.0.255 với netmask 255.255.255.0)

Địa chỉ multicast giống địa chỉ broadcast ở chỗ điểm đích của gói tin là một nhóm các máy trong một mạng, song không phải tất cả các máy. Trong khi broadcast gửi trực tiếp tới mọi host trong một subnet thì multicast chỉ gửi trực tiếp cho một nhóm xác định các host, các host này lại có thể thuộc các subnet khác nhau. Host có thể lựa chọn có tham gia vào một nhóm multicast cụ thể nào đó hay không (thường được thực hiện với thủ tục quản lý nhóm internet - Internet Group Management Protocol), trong khi đó với broadcast, mọi host là thành viên của nhóm broadcast bất kể nó có muốn hay không.

2. Địa chỉ IPv6 Multicast

Địa chỉ Multicast IPv6 thực hiện cả chức năng broadcast và multicast của IPv4. Có nhiều loại địa chỉ multicast IPv6, mỗi loại địa chỉ multicast IPv6 có phạm vi hoạt động tương ứng. Lưu lượng của địa chỉ IPv6 multicast sẽ được chuyển tới toàn bộ các host trong một phạm vi hay chỉ được chuyển tới nhóm các host nào đó trong phạm vi là tùy thuộc vào loại địa chỉ multicast. 

Cấu trúc của địa chỉ IPv6 cho trên hình:

Địa chỉ ipv6 multicast luôn được bắt đầu bởi 8 bít prefix 1111 1111. Dạng địa chỉ này rất dễ phân biệt vì nó luôn được bắt đầu bằng "FF". Địa chỉ multicast không bao giờ được sử dụng làm địa chỉ nguồn của một gói tin IPv6 . 

Để phân biệt dạng địa chỉ multicast, nhóm địa chỉ multicast và phạm vi của chúng, trong cấu trúc địa chỉ multicast sử dụng những nhóm bít tạo thành các trường sau đây: Cờ - flag (4 bit), phạm vi - Scope (4 bít) và Định danh nhóm-Group ID (32 bít)

Cờ (Flag) : Trường này có bốn bít "0T00", trong đó 3 bít hiện chưa sử dụng được đặt giá trị 0, bít T sẽ xác định đây là dạng địa chỉ IPv6 multicast được IANA gắn vĩnh viễn (permanent-assigned) hay được gắn không vĩnh viễn do người sử dụng tự quy định (non permanent-assigned). Khái niệm này cũng tương tự như khái niệm well-known port trong thủ tục TCP/IP.

  • Bít T=0, có nghĩa đây là địa chỉ multicast IPv6 vĩnh viễn (well known) được IANA quy định. RFC2375 - IPv6 Multicast Address Assignments cung cấp danh sách các loại địa chỉ well-known multicast hiện đang được quy định bởi IANA.  
  • Bít T=1, đây là dạng địa chỉ multicast không vĩnh viễn

Phạm vi (Scope): Trường này gồm 4 bít xác định phạm vi của nhóm địa chỉ multicast. Hiện nay đang định nghĩa các giá trị như sau:

  • 1: Phạm vi Node
  • 2: Phạm vi Link
  • 5: Phạm vi Site
  • 8: Phạm vi tổ chức Organisation
  • E: Phạm vi toàn cầu Global 

Giải thích một cách rõ ràng hơn, nếu ta thấy 4 bít trường scope là "0001" (Scope có giá trị 1) khi đó phạm vi của địa chỉ multicast này là phạm vi node. Gói tin multicast sẽ chỉ được gửi trong phạm vi các giao diện trong một node mà thôi.

Nếu 4 bít này là "0010", giá trị trường Scope là 2, phạm vi của địa chỉ multicast là  phạm vi link. Gói tin multicast được gửi trên phạm vi toàn bộ đường local link.

Router sử dụng giá trị trường Scope của địa chỉ multicast để quyết định có forward lưu lượng multicast hay không. Ví dụ địa chỉ multicast FF02::2 có phạm vi link-local, router sẽ không bao giờ forward gói tin này ra khỏi phạm vi local link.

Nhóm (Group ID) – Thực hiện chức năng định danh các nhóm multicast. Trong một phạm vi scope, có nhiều nhóm multicast (ví dụ nhóm multicast các router, nhóm multicast mọi node, nhóm multicast mọi máy chủ DHCP…). Giá trị các bít Group ID sẽ định danh các nhóm multicast. Trong một phạm vi, số định danh này là duy nhất. Lưu lượng có địa chỉ đích multicast sẽ được chuyển tới các máy thuộc nhóm multicast xác định bởi Group ID, trong phạm vi xác định bởi Scope.

Theo thiết kế ban đầu, Group ID gồm 112 bít. Với 112 bít, có thể định danh 2112 group. Tuy nhiên, để có thể truyền đi trên mạng tới đích, datagram dữ liệu phải chứa thông tin địa chỉ IP (lớp network) và địa chỉ lớp link-layer (địa chỉ MAC trong trường hợp kết nối Ethernet) tương ứng. Để có được ánh xạ 1-1 từ một địa chỉ IPv6 multicast tới một địa chỉ Ethernet multicast MAC duy nhất, số lượng bít của Group ID được khuyến nghị là 32 bít. Chúng ta sẽ tìm hiểu quy tắc ánh xạ địa chỉ IPv6 multicast tới địa chỉ Ethernet multicast MAC trong mục sau.

3. Một số địa chỉ multicast IPv6 vĩnh viễn

Multicast tới mọi node: Nhóm multicast mọi node hiện nay được gắn giá trị Group ID 1

FF01::1 - Địa chỉ multicast mọi node phạm vi node

-   Giá trị Scope = 1 Xác định phạm vi node

-   Giá trị Group ID = 1 Xác định nhóm multicast mọi node

FF02::1 - Địa chỉ multicast mọi node phạm vi link. Địa chỉ này xác định mọi node IPv6 trong phạm vi một đường kết nối.

-   Giá trị Scope = 2 Xác định phạm vi link

-   Giá trị Group ID = 1 Xác định nhóm multicast mọi node

Multicast tới mọi router: Nhóm multicast mọi router hiện nay được gắn giá trị Group ID 2 

FF01::2 - Địa chỉ multicast mọi router phạm vi node

-   Giá trị Scope = 1 Xác định phạm vi node

-   Giá trị Group ID = 2 Xác định nhóm multicast mọi router

FF02::2 - Địa chỉ multicast mọi router phạm vi link. Địa chỉ này xác định mọi router IPv6 trong phạm vi một đường kết nối.

-   Giá trị Scope = 2 Xác định phạm vi link

-   Giá trị Group ID = 2 Xác định nhóm multicast mọi router

FF05::2 - Địa chỉ multicast mọi router phạm vi site. Địa chỉ này xác định mọi router IPv6 trong phạm vi một site.

-   Giá trị Scope = 5 Xác định phạm vi site

-   Giá trị Group ID = 2 Xác định nhóm multicast mọi router

Những giá trị IPv6 multicast vĩnh viễn khác, có thể tìm hiểu trong RFC2375 - IPv6 Multicast Address Assignments.

4. Địa chỉ Multicast Solicited-node

Chức năng phân giải giữa địa chỉ lớp 3 (network layer) 32 bít và địa chỉ vật lý Ethernet (datalink layer) 48 bít của IPv4 được thực hiện bằng thủ tục ARP (Address Resolution Protocol). 

Nguyên lý hoạt động cơ bản của thủ tục này là giao tiếp yêu cầu/đáp ứng trong đó một node khi không biết địa chỉ lớp vật lý của một node khác trên đường link sẽ gửi gói tin ARP broadcast tới toàn bộ host gắn trên một Ethernet. Gói tin này có chứa địa chỉ IP của node mà nó muốn giao tiếp. Các node trên Ethernet đều nhận gói tin này, node có địa chỉ IP trùng khớp với địa chỉ IP chứa trong gói tin sẽ gửi thông tin đáp trả. Trong địa chỉ IPv4, một node khi thực hiện thủ tục phân giải địa chỉ đã “làm phiền” tới mọi node trên mạng LAN.

Trong địa chỉ IPv6, chức năng phân giải địa chỉ được đảm nhiệm bằng một thủ tục mới, phụ trách giao tiếp của các node trên một đường link, thủ tục Neighbor Discovery, qua việc trao đổi các thông điệp ICMPv6. Hạn chế trên của thủ tục ARP ipv4 được khắc phục trong địa chỉ ipv6 bằng cách không sử dụng dạng địa chỉ multicast mọi node phạm vi link FF02::1 (local-link scope all-node) là dạng địa chỉ thực hiện chức năng tương tự như địa chỉ broadcast trong mạng LAN của ipv4 làm địa chỉ đích, mà sử dụng một dạng địa chỉ multicast đặc biệt của ipv6. Đó là địa chỉ multicast solicited-node.

Mỗi một địa chỉ unicast được gắn cho node, sẽ có một địa chỉ multicast solicited node tương ứng.

Cấu thành địa chỉ Solicited node từ địa chỉ unicast:

Địa chỉ solicited-node được cấu thành từ địa chỉ unicast tương ứng bằng cách gắn 104 bít prefix FF02::1:FF/104 với 24 bít cuối cùng chính là 24 bít cuối của địa chỉ unicast.

Do trường Scope trong địa chỉ solicited-node có giá trị 2, đây là địa chỉ multicast có phạm vi link. 

Để có thể giao tiếp, node cần phải phân giải được các địa chỉ IPv6 unicast thành địa chỉ MAC tương ứng, do vậy tương ứng với mỗi một địa chỉ unicast được gắn cho node sẽ có một địa chỉ multicast solicited node. IPv6 node sẽ vừa nghe lưu lượng tại địa chỉ unicast, vừa nghe lưu lượng tại địa chỉ multicast solicited-node tương ứng địa chỉ unicast đó.

5. Ánh xạ địa chỉ IPv6 multicast thành địa chỉ Ethernet multicast MAC

Để có thể tới đích thành công, đơn vị thông tin gửi đi trên mạng Ethernet (datagram) cần có thông tin địa chỉ IP nguồn và đích (lớp IP), cùng địa chỉ MAC nguồn và địa chỉ MAC đích (lớp link-layer).  

Địa chỉ broadcast IPv4 tương ứng địa chỉ broadcast mức MAC ff-ff-ff-ff-ff-ff. IPv6 có nhiều dạng địa chỉ multicast. Mỗi một host trên mạng Ethernet với một card mạng sẽ có một địa chỉ MAC duy nhất, như vậy tồn tại rất nhiều câu hỏi: Làm thế nào để có thể nói chuyện được với một nhóm các host (nhóm multicast), trong khi mỗi host có một địa chỉ MAC khác nhau, và tại một thời điểm đảm bảo được rằng, mọi host khác, vốn không phải là thành viên của nhóm multicast, sẽ không xử lý thông tin. 

Để thực hiện được multicast trên mạng Ethernet, sử dụng thủ tục TCP/IP, cần có hai phần: Multicast mức Hardware/Ethernet (lớp link-layer) và IP Multicast. Cần phải ánh xạ được giữa một địa chỉ IPv6 multicast (1 nhóm các host) tới một địa chỉ duy nhất Ethernet Multicast. Chính vì mục đích này, RFC 3513 khuyến nghị chỉ lấy 32 bít cuối trong số 112 bít dành cho Group ID trong cấu trúc địa chỉ IPv6 multicast làm group ID, các bít khác đều thiết lập giá trị bằng 0. Như vậy, mỗi một dạng địa chỉ multicast sẽ ánh xạ tới một địa chỉ Ethernet multicast duy nhất.

Quy tắc ánh xạ địa chỉ ipv6 multicast thành địa chỉ Etherner multicast:

48 bít của địa chỉ Ethernet multicast tương ứng với một loại địa chỉ ipv6 multicast sẽ được hình thành như sau: gắn 16 bít prefix 33-33 (giá trị hexa) với 32 bít cuối của địa chỉ ipv6 multicast tương ứng. Quy tắc này tương tự như cách thức tạo một địa chỉ ipv6 Solicited-node từ một địa chỉ ipv6 unicast. Từ đó hình thành nên địa chỉ Ethernet MAC multicast có dạng 33-33-mm-mm-mm-mm. Trong đó mm-mm-mm-mm là 32 bít cuối cùng của địa chỉ ipv6 multicast.

Nếu chỉ sử dụng 32 bít trong cấu trúc địa chỉ IPv6 multicast làm Group ID thì tương ứng với mỗi nhóm, sẽ có một địa chỉ Ethernet MAC multicast.

Để nhận được các gói tin ipv6 multicast trên một đường link Ethernet, card mạng Ethernet cần phải lưu trữ thêm các địa chỉ MAC multicast cần thiết trong một bảng lưu trữ tại card mạng. Khi nhận được một khung Ethernet có địa chỉ MAC cần thiết, nó sẽ chuyển tiếp tới lớp cao hơn để tiếp tục xử lý. Mỗi một dòng trong bảng lưu trữ chứa một địa chỉ Ipv6 multicast đang được host nghe lưu lượng và địa chỉ MAC multicast tương ứng.  

Ví dụ cụ thể:

Host A với địa chỉ Ethernet MAC 00-AA-00-3F-2A-1C (địa chỉ link-local tương ứng là FE80::2AA:FF:FE3F:2A1C) sẽ đăng ký lưu trữ thêm những địa chỉ MAC multicast sau đây với card mạng Ethernet: 

  • Địa chỉ 33-33-00-00-00-01, là địa chỉ Ethernet MAC multicast tương ứng với địa chỉ ipv6 multicast mọi node phạm vi link FF02::1.
  • Địa chỉ 33-33-FF-3F-2A-1C, tương ứng với địa chỉ ipv6 multicast solicited-node FF02::1:FF3F:2A1C. Hẳn các bạn còn nhớ, địa chỉ multicast solicited node được hình thành từ 104 bít prefix FF02::1:FF00:0/104 và 24 bít cuối của địa chỉ IPv6 unicast. 

Nếu host tham gia vào những nhóm multicast khác, sẽ có thêm những địa chỉ Ethernet multicast khác được thêm vào hoặc bỏ đi khi cần thiết trong bảng lưu trữ địa chỉ MAC trên card mạng.

Xem tiếp phần 4: http://www.waren.vn/chuyen-de/cau-truc-danh-dia-chi-cac-dang-dia-chi-ipv6-chuyen-de-dao-tao-ipv6-phan-4.html