ICMPv6

**Internet Control Message Protocol version 6** (ICMPv6) là phiên bản được biến đổi và nâng cấp của Internet Control Message Protocol (ICMP) cho giao thức liên mạng thế hệ 6 (IPv6). ICMPv6 được định nghĩa trong RFC 4443. ICMPv6 là một phần gắn liền với IPv6 và thực hiện thông báo lỗi mạng và chức năng chẩn đoán (ví dụ, ping), và có một khuôn khổ cho các phần mở rộng để thực hiện những thay đổi trong tương lai.

Một số phần mở rộng đã được công bố, xác định các loại thông điệp ICMPv6 mới cũng như tùy chọn mới với nhiều loại thông điệp có ở ICMPv6. Giao thức Neighbor Discovery (NDP) là một giao thức phát hiện các nút trong IPv6 thay thế và mở rộng các chức năng của ARP.Secure Neighbor Discovery (SEND) là một phần mở rộng của NDP thêm những chức năng an ninh. Multicast Listener Discovery (MLD) được sử dụng bởi các bộ định tuyến IPv6 để khám phá multicast listener trên một đường kết nối trực tiếp, giống như Internet Group Management Protocol (IGMP) được sử dụng trong IPv4. Multicast Router Discovery (ĐBSCL) cho phép phát hiện các multicast router.

## Chi tiết kỹ thuật
Cũng như ICMP, các thông điệp ICMPv6 được chia ra làm hai loại: *thông điệp lỗi* và *thông điệp thông tin*. Các thông điệp ICMPv6 được các gói IPv6 chuyên chở trong đó giá trị của Next Header cho ICMPv6 là 58.

### Gói tin ICMPv6
Gói tin ICMPv6 bao gồm phần header và phần thông điệp. ICMPv6 header bao gồm ba trường: Type (8 bít), Code (8 bít) và Checksum (16 bít). 
* *type* xác định loại thông điệp. Giá trị từ 0 tới 127 (bít đầu tiên là 0) chỉ thông điệp lỗi, từ 128 tới 255 (bít đầu tiên là 1) thông điệp thông tin. 
* *code* phân dạng sâu hơn gói tin ICMPv6, định rõ đây là gói tin dạng gì trong từng loại thông điệp ICMPv6. 
* *checksum* cung cấp giá trị sử dụng để kiểm tra lỗi cho toàn bộ gói tin ICMPv6.

### Loại thông điệp

Chú ý là bản trên không đầy đủ. Danh sách toàn bộ hiện tại có thể xem tại: IANA: ICMPv6 Parameters.

### Thông điệp thông tin
Thông điệp thông tin ICMPv6 chia thành hai nhóm: Thông điệp thông tin cơ bản và Thông điệp thông tin mở rộng.

* Thông điệp thông tin cơ bản: Bao gồm "Echo request" và "Echo reply". Hai dạng thông điệp này được sử dụng trong các chương trình dò tìm như ping, traceroute, thực hiện chức năng chẩn đoán mạng.
* Thông điệp thông tin mở rộng: Là những thông điệp ICMPv6 được sử dụng bởi thủ tục thực hiện chức năng giao tiếp giữa các node lân cận trong một đường kết nối Neighbor Discovery - ND và thủ tục quản lý quan hệ thành viên nhóm multicast Multicast Listener Discovery - MLD, phục vụ cho các quy trình hoạt động cốt yếu của địa chỉ IPv6.

### Xử lý thông điệp
Khi một nút ICMPv6 nhận một gói tin, nó phải thực hiện những hành động tùy thuộc vào loại thông điệp. Giao thức ICMPv6 phải hạn chế số lượng các thông điệp lỗi gửi đến cùng một điểm đến để tránh quá tải mạng. Ví dụ, nếu một nút tiếp tục chuyển các gói tin lỗi, ICMP sẽ báo hiệu lỗi tới gói đầu tiên và sau đó làm như vậy theo định kỳ, với thời gian tối thiểu cố định hoặc với tải trọng mạng tối đa cố định. Một thông điệp lỗi ICMP không bao giờ được gửi để đáp ứng với một thông điệp lỗi ICMP khác.

## Tham khảo

## Liên kết ngoài

* IANA: ICMPv6 Parameters
* RFC 2894, *Router Renumbering for IPv6*