Bài viết chuyên đề
IPv6 - Neighbor Discovery Protocol
15/11/2017 10:15:16
Trong bài viết trước, chúng ta đã cùng nhau trao đổi về những đặc điểm khái quát của địa chỉ IPv6, cấu trúc địa chỉ IPv6 cũng như cách cấu hình địa chỉ IPv6 trên các interface của thiết bị mạng Cisco. Trong bài này, chúng ta sẽ cùng nhau trao đổi một vài nét về một giao thức nền tảng rất quan trọng được sử dụng cho IPv6 là giao thức NDP – Neighbor Discovery Protocol.
NDP, được định nghĩa trong RFC – 2461, là một giao thức chủ chốt của công nghệ IPv6, NDP sử dụng một số thông điệp ICMPv6 đặc thù để thực hiện những công việc như sau:
- Thay thế chức năng của ARP:
Nhắc lại rằng ARP là giao thức phân giải địa chỉ được sử dụng để tương quan giữa một địa chỉ IP và một địa chỉ MAC từ đó thực hiện đóng gói gói tin IP vào frame Ethernet để các host IP có thể trao đổi được dữ liệu qua các link Ethernet. Với IPv6, ARP không còn được sử dụng, công việc của giao thức ARP sẽ được đảm nhận bởi giao thức NDP.
- Cấp phát IP tự động Stateless:
Trong bài viết trước, chúng ta đã trao đổi với nhau về cách cấp phát địa chỉ IPv6 một cách tự động mà không cần phải có một DHCP server được dựng sẵn trước đó. Cơ chế này được gọi là Stateless Autoconfiguration. Stateless Autoconfiguration được thực hiện bởi giao thức NDP.
- Router redirection:
Tương tự như với IPv4, router chạy trên nền IPv6 gửi các gói tin ICMPv6 Redirect để hướng dẫn các host đầu cuối chọn gateway tối ưu hơn để gửi dữ liệu đến đích. Đây cũng là một chức năng của giao thức NDP.
Như đã đề cập ở trên, NDP sử dụng các thông điệp ICMPv6 để phục vụ cho hoạt động của mình. ICMPv6, tương tự như ICMPv4, là một giao thức cung cấp các thông điệp chuyên dùng cho mục đích kiểm tra, trao đổi thông tin và quản lý các liên kết lớp 3 cho một mạng chạy IPv6. Một số loại thông điệp ICMPv6 được sử dụng cho NDP gồm:
+ ICMPv6 type 133, có tên gọi là RS – Router Solicitation.
+ ICMPv6 type 134, có tên gọi là RA – Router Advertisement.
+ ICMPv6 type 135, có tên gọi là NS – Neighbor Solicitation.
+ ICMPv6 type 136, có tên gọi là NA – Neighbor Advertisement.
+ ICMPv6 type 137, có tên gọi là Redirect Message.
Tiếp theo chúng ta cùng khảo sát những tác vụ mà giao thức NDP đảm nhận như đã đề cập ở trên.
1. Thay thế cho ARP
Để thay thế cho hoạt động của giao thức ARP, NDP sử dụng hai thông điệp ICMPv6 type 135 – NS (Neighbor Solicitation) và ICMPv6 type 136 – NA (Neighbor Advertisement) cùng với dải địa chỉ đặc biệt có tên gọi là Solicited Multicast FF02::1:FFxx:xxxx.
Chúng ta cùng quan sát một ví dụ để tìm hiểu về cơ chế này (hình 1):
Trên hình 1 là hai host IPv6 thực hiện trao đổi dữ liệu với nhau qua một môi trường Ethernet. Host 1 có địa chỉ IPv6 là FC00::12:1/64 và Host 2 có địa chỉ IPv6 là FC00::12:2/64. Như chúng ta đã biết, nếu sử dụng IPv4, hai host này cần phải thực hiện cơ chế phân giải địa chỉ ARP để tìm ra địa chỉ MAC của nhau trước khi thực hiện trao đổi dữ liệu trên nền IP. Với IPv6, ARP không còn được sử dụng, giao thức NDP trên hai host sẽ thực hiện các bước như sau để phân giải giữa địa chỉ IPv6 và địa chỉ MAC trên cho các host (không mất tính tổng quát, ta chỉ cần xem xét tiến trình Host 1 truy vấn địa chỉ MAC của Host 2):
- Bước 1:
Host 1 gửi vào môi trường Ethernet một gói tin ICMPv6 type 135 với đặc điểm:
+ Source IP của gói tin chính là địa chỉ IPv6 của Host 1: FC00::12:1.
+ Destination IP của gói tin sẽ được thiết lập bằng cách sử dụng prefix Solicited Multicast FF02::1:FF ghép thêm 24 bit cuối cùng của địa chỉ IPv6 mà ta muốn tìm địa chỉ MAC tương ứng (trong ví dụ này, chính là địa chỉ IPv6 của Host 2 – FC00::12:2). Ta có Destination IP được thiết lập sẽ là FF02::1:FF12:2
Phần data của gói tin ICMPv6 sẽ chứa địa chỉ MAC của Host 1: 0010.5A0C.FD86.
Vì gói tin IP chứa gói ICMP phải được vận chuyển trên data link Ethernet nên nó cần phải được đóng gói vào một Ethernet frame. Frame này sẽ có địa chỉ Source MAC và Destination MAC được thiết lập như sau:
+ Source MAC của frame chính là địa chỉ MAC của Host 1: 0010.5A0C.FD86.
+ Destination MAC sẽ là một địa chỉ MAC Multicast tương ứng với địa chỉ IP Multicast của gói tin ICMP sẽ gửi đi.
Với IPv6, hoạt động map một địa chỉ multicast IP vào địa chỉ multicast MAC được thực hiện bằng cách:
- Sử dụng các địa chỉ MAC có 16 bit đầu là 3333.
- Thực hiện map bằng cách lấy 32 bit cuối của địa chỉ IPv6 multicast ghép vào prefix 3333.
Ví dụ: địa chỉ multicast FF02::1 sẽ có MAC tương ứng là 3333.0000.0001.
Trong ví dụ đang xét, chúng ta có địa chỉ multicast của gói tin là FF02::FF12:2 nên địa chỉ Destination MAC của frame sẽ là 3333.FF12.0002.
Vậy, ta có Frame Ethernet chứa gói tin ICMPv6 type 135 sẽ có Source MAC là 0010.5A0C.FD86 và Destination MAC là 3333.FF12.0002.
Frame này lại chứa gói tin IP có Source IP là FC00::12:1, Destination IP là FF02::FF12:2.
Gói tin IP này lại chứa gói ICMPv6 type 135 có data là địa chỉ MAC của Host 1: 0010.5A0C.FD86.
- Bước 2:
Host 2 lắng nghe các địa chỉ multicast trên đường link. Khi Host 2 nhận được gói tin multicast, thực hiện phân tích địa chỉ IP đích FF02::FF12:2 và thấy rằng 24 bit cuối của địa chỉ này tham chiếu đến IP của nó, Host 2 tiến hành tiếp nhận và xử lý gói tin này.
- Bước 3:
Host 2 hồi đáp về cho Host 1 một gói tin ICMPv6 type 136 chứa địa chỉ MAC của nó (0010.5A0C.FD87).
Gói tin ICMPv6 này được đóng gói vào gói tin IP có địa chỉ Source là IP của Host 2 (FC00::12:2), địa chỉ Destination là IP của Host 1 (FC00::12:1).
Đến lượt nó, gói tin IP lại được đóng vào trong một frame Ethernet với Source MAC là MAC của Host 2(FC00.5A0C.FD87) và Destination MAC là MAC của Host 1 (FC00.5A0C.FD86).
- Bước 4:
Host 1 sau khi nhận được hồi đáp từ Host 2 sẽ biết được địa chỉ MAC của Host 2, từ đó thực hiện đóng frame cho các gói tin gửi đi Host 2 với địa chỉ MAC nhận được. Tiến trình phân giải địa chỉ được hoàn tất.
Tóm lại, ARP không còn được sử dụng với IPv6, giao thức NDP được tích hợp trên các host IPv6 sẽ thực hiện công việc phân giải địa chỉ thay cho ARP. Tác vụ phân giải địa chỉ của NDP sử dụng hai thông điệp ICMPv6 type 135 – NS và type 136 – NA cùng với dải địa chỉ Solicited Multicast FF02::1:FFxx:xxxx.
2. Cấp phát IP tự động theo kiểu Stateless
Như đã đề cập trong bài viết trước, các host khi kết nối vào LAN sẽ tự động nhận được một địa chỉ IPv6 để sử dụng. Phương pháp cấp phát động này không đòi hỏi phải có một DHCP server được dựng sẵn trước đó mà hoàn toàn nhờ vào hoạt động của giao thức NDP của IPv6.
Hoạt động cấp phát IP động Stateless của NDP sử dụng các thông điệp ICMPv6 type 133 – RS (Router Solicitation) và type 134 – RA (Router Advertisement) cùng với các địa chỉ Multicast FF02::1 (gửi đến tất cả các host trên link) và FF02::2 (gửi đến tất cả các router trên link).
Tương tự như trên, để nắm được hoạt động, chúng ta cùng quan sát một ví dụ (hình 2):
- Khi host tham gia vào mạng mà chưa có địa chỉ IP, nó sẽ gửi ra một gói tin ICMPv6 type 133 – RS – Router Solicitation, gói tin này sử dụng Source IP là địa chỉ IPv6 link – local trên card mạng của host, Destination IP là địa chỉ FF02::2.
- Khi router nhận được gói tin RS, nó sẽ hồi đáp về gói tin ICMPv6 type 134 – RA (Router Advertisement) với source IP là địa chỉ link – local trên cổng của router và destination IP là FF02::1 (địa chỉ multicast cho tất cả các host trên link). Gói tin RA chứa nhiều thông tin sẽ được host sử dụng cho tiến trình cấu hình IP tự động:
- IPv6 prefix: Prefix của subnet được sử dụng trên link; host sẽ sử dụng prefix nhận được để cấu hình địa chỉ IP cho mình theo luật EUI – 64.
- Lifetime: Router cũng thực hiện quảng bá các giá trị lifetime xuống cho PC. Có hai giá trị lifetime được sử dụng cho mỗi địa chỉ IP cấu hình tự động:
- Valid – lifetime: Khoảng thời gian mà địa chỉ còn được phép sử dụng. Hết khoảng thời gian này, địa chỉ không còn được sử dụng trên host nữa.
- Preferred – lifetime: Khoảng thời gian mà địa chỉ còn hợp lệ. Hết khoảng thời gian này, host sẽ không sử dụng địa chỉ để thiết lập kết nối mới nữa nhưng vẫn duy trì các kết nối cũ đã được thiết lập trước đó bởi địa chỉ này cũng như chấp nhận kết nối đi đến địa chỉ này. Các kết nối cũ được thiết lập bởi địa chỉ mà đã quá hạn Preferred – lifetime sẽ vẫn được duy trì cho đến khi Valid – lifetime hết hạn rồi mới bị xóa bỏ. Như vậy, giá trị Preferred – lifetime sẽ phải được chọn nhỏ hơn hoặc bằng Valid – lifetime.
- Các giá trị lifetime này được sử dụng cho kỹ thuật Renumbering – cấp phát lại địa chỉ IP, đảm bảo rằng hoạt động thay thế địa chỉ IP diễn ra hoàn toàn trong suốt với người dùng.
- Thông tin gateway: Cung cấp thông tin về địa chỉ của các router hiện có trên link để các host end – user có thể sử dụng các gateway này đi ra mạng bên ngoài. Địa chỉ gateway được sử dụng bởi host trên link là địa chỉ link – local của cổng giao tiếp trên router. Như vậy, ngay cả khi có sự thay đổi subnet được sử dụng trên link, các router vẫn có thể đi đến được để từ đó lưu lượng từ bên trong vẫn có thể đi ra được bên ngoài link.
- Một số cờ và tùy chọn: Các cờ và tùy chọn này có thể được cấu hình trên router để điều khiển các host thực hiện tiến trình cấu hình tự động theo những yêu cầu cho trước.
- Host khi nhận được gói tin RA sẽ sử dụng prefix nhận được (trong ví dụ này là 2001:1::/64) ghép thêm phần interface – id được phát sinh bởi luật EUI – 64 để có một địa chỉ IPv6 cho card mạng. Như vậy, host đã có được một địa chỉ IPv6 cho hoạt động của mình.
- Bên cạnh việc gửi gói tin RA để đáp ứng cho các gói tin RS của các host, router còn đều đặn gửi gói này ra khỏi cổng mạng của nó theo định kỳ mặc định là 200s/lần (ta có thể cấu hình hiệu chỉnh được giá trị này).
- Trong phương pháp cấp phát động nêu trên, Router không quản lý hay theo dõi các địa chỉ IP mà các host nhận được nên ta gọi kiểu cấp phát động này là Stateless Auto – configuration.
Kiểm tra địa chỉ trùng lặp
Một thao tác được host sử dụng khi được cấu hình một địa chỉ IP là nó kiểm tra xem trên link có địa chỉ nào trùng với IP mà nó được cấu hình hay không.
Với IPv4, thao tác này được thực hiện nhờ cơ chế Gratuitous ARP: host sẽ gửi broadcast gói tin ARP Request truy vấn địa chỉ MAC cho địa chỉ IP mà nó được cấu hình; nếu có hồi đáp ARP Reply: đã có một host nào đó trên link sử dụng IP này; nếu không có hồi đáp ARP Reply: không có host nào sử dụng trùng IP trên link.
Với IPv6, host sẽ sử dụng NDP để thực hiện kiểm tra IP: một gói tin NS – Neighbor Solicitation (ICMPv6 type 135) sẽ được host gửi multicast lên link. Gói tin này có các thông số:
- Source IP: là địa chỉ “::” – unspecified address (tương đương với địa chỉ 0.0.0.0/32 của IPv4).
- Destination IP: là địa chỉ Solicited Multicast FF02::1:FFxx:xxxx tham chiếu đến 24 bit cuối của địa chỉ IP được cấu hình trên host.
Tương tự như với Gratuitous ARP của IPv4, host IPv6 đã thực hiện truy vấn địa chỉ MAC cho địa chỉ của chính nó. Nếu host nhận được hồi đáp bằng gói tin ICMPv6 type 136 trả về một địa chỉ MAC, địa chỉ đã được sử dụng; nếu host không nhận được hồi đáp, địa chỉ của nó chưa có host nào khác sử dụng và nó có thể sử dụng địa chỉ này.
3. Router redirection
Router redirection là một trong những công việc mà giao thức NDP đảm nhận. Các router trên một Ethernet link sử dụng các gói tin ICMPv6 redirect để thông báo cho các host trên link biết gateway tối ưu nên được sử dụng để chuyển dữ liệu đi ra khỏi link nhằm đi đến một đích đến ở bên ngoài. Khi các host nhận được thông điệp ICMPv6 redirect, chúng có thể hiệu chỉnh bảng định tuyến theo gateway mới được chỉ ra trong thông điệp ICMPv6 redirect. Cơ chế này tương tự như với cơ chế ICMP redirect của IPv4. Thông điệp ICMPv6 được sử dụng trong trường hợp này là ICMPv6 type 137 – Router redirection.
Chúng ta cùng quan sát ví dụ trong hình 3:
Trong ví dụ trên hình 3, Host muốn gửi gói tin đến mạng A. Đầu tiên, nó gửi gói tin đến default router là R2. Tuy nhiên, sau khi chuyển gói tin đến mạng A, router R2 thấy rằng để đi đến mạng A từ mạng LAN mà host đang kết nối, router R1 là đường ra tốt hơn. Do đó, trong bước tiếp theo, R2 gửi đến Host một thông điệp ICMPv6 redirect chứa địa chỉ của router R1. Host sau khi nhận được thông tin sẽ sử dụng R1 để chuyển gói tin đi đến mạng A.
Trên đây chúng ta đã cùng nhau trao đổi về các hoạt động của giao thức NDP – Neighbor Discovery Protocol, một giao thức nền tảng của công nghệ IPv6. Chúng ta sẽ cùng nhau trao đổi về các chủ đề khác của chuyên đề IPv6 trong các bài viết tiếp theo.
TRUNG TÂM WAREN