PDA

View Full Version : Neighbor Discovery Protocol và truyền gói IP qua mạng trong IPv6



admin
10-02-2006, 09:22 AM
4.1 Neighbor Discovery Protocol

4.1.1 Adress Resolution & Neighbor Discovery Protocol

Neighbor Discovery Protocol là giao thức được định nghĩa cho IPv6. Các Node
mạng dùng giao thức này để phát hiện ra Link-layer Address của các Node lân cận. Giao thức này còn giúp kiểm soát được tình trạng các Node trên mạng (các Node này ở trạng thái Reachable hay Unreachable), nhận biết sự thay đổi của Link-layer Address. Giao thức này hoạt động dựa vào các bản tin ICMPv6.
Bên cạnh các vấn đề liên quan đến tương tác giữa các Node trong một kết nối,
Giao thức này còn được thiết kế để giải quyết các vấn đề sau:

- Router Discovery: Giúp cho các Node xác định Router lân cận trên cùng một
kết nối.
- Prefix Discovery: Giúp cho Node phát hiện ra các IPv6 prefix, để có thể chuyển gói tin đến đích.
- Parameter Discovery: Giúp các Node học được các thông số cần thiết của mạng
(Ví dụ giá trị MTU, Hop limits…).
- Address Autoconfiguration: Giúp tự động cấu hình địa chỉ cho một Interface.
- Address Resolution: Tính năng này tương tự ARP và RARP dùng trong IPv4.
Tính năng này giúp các Node phân giải qua lại giữa Link-layer Address và
Network Layer Address (IPv6).
- Next-hop Detemination: Đây là thuật toán dùng để ánh xạ một IPv6
Destination Address vào IPv6 Address của một Node lân cận, Node mà các gói
tin phải đi qua để đến được đích. Next-hop trong trường hợp này có thể là một
Router trung gian hoặc cũng có thể là một trạm đầu cuối.
- Neighbor Unreachable Detection: Tính năng này giúp các Node phát hiện ra
tình trạng Unreachable của Node lân cận. Trong trường hợp Node lân cận rơi
vào trạng thái này, Node dự phòng có thể được dùng để chuyển các gói tin qua
mạng. Nếu không có Node dự phòng, hệ thống sẽ kích hoạt tính năng Address
Resolution Protocol.
- Duplication Address Detection: Tính năng này giúp nhận biết địa chỉ IP mà
Node sử dụng có trùng với Node nào khác hay không.
- Redirect: Giúp tái định tuyến các gói tin để có thể đạt được một Route ưu thế
hơn. (Tính năng này thường được dùng nhất trong giai đoạn mạng đang hội tụ,
khi mạng đã hoạt động ổn định, ít khi xảy ra hiện tượng này vì route tối ưu đã
được lưu vào cache).
Neighbor Discovery Protocol định nghĩa 5 loại bản tin ICMP sau:
- Router Solicitation message và Router Advertisement message.
- Neighbor Solicitation message và Neighbor Advertisement message.
- Redirect message.
Mục đích sử dụng của mỗi loại bản tin được mô tả như sau:
- Router Solicitation: Khi một Interface của Node (Router hoặc Host) được
kích hoạt, Node tạo ra Router Solicitation message yêu cầu các Router phát
Router Advertisment message để nó có thể cập nhật thông tin ngay mà
không cần chờ hết thời gian được định sẵn.
- Router Advertisement: Bản tin này được các Router gửi đi nhằm thông báo
cho nhau sự hiện diện của nó trên mạng. Bản tin này mang thông tin về các
thông số của kết nối, thông tin về các Prefix kết nối đến nó cũng như các
địa chỉ được gán cho các Interface. Nó còn mang các thông số của mạng
như: Hop limits, MTU... Bản tin này được gửi định kỳ sau một khoảng thời
gian định sẵn. Trong trường hợp nhận được bản tin Router Solicitation, bản
tin Router Advertisement cũng được gửi đi ngay mà không cần đến thời gian
định sẵn.
- Neighbor Solicitation: Node dùng bản tin này để xác định Link-layer
Address của các Node lân cận, còn dùng để kiểm tra trạng thái Reachable
của các Node lân cận mà Link-layer Address của các Node đó đã được lưu
trong Cáche.
- Neighbor Advertisement: Khi một Node nhận được bản tin Neighbor
Solicitation. Node đáp ứng lại bằng bản tin Neighbor Advertisement. Trong
trường hợp một Node phát đi bản tin Unsolocitation Neighbor Advertisement
để thông báo về sự thay đổi Link-layer Address, bản tin Neighbor
Advertisement cũng được dùng để đáp lại.
- Redirect: Router dùng bản tin này để thông báo cho Host một ứng cử viên
tốt hơn mà Host có thể chọn làm Next-hop, từ đó có được một route tốt hơn
để truyền các gói tin.

4.1.2 Hoạt động của Neighbor Discovery Protocol

Trong môi trường mạng hỗ trợ Multicast, mỗi Router multicast đi gói tin mang
bản tin Router Advertisement để thông báo trạng thái sẵn sàng của nó. Một Host nhận được Router Advertisement từ tất cả các Router, nó xây dựng một danh sách các Default Router. Tần suất phát bản tin Router Advertisement của các Router cho phép Host nhận biết sự hiện diện của nó trong vài phút, nhưng không đủ nhạy để Host có thể phát hiện ra sự hỏng hóc hoặc lỗi của các Router. Do đó, có một cách riêng để nhận biết những sự cố đó (Neighbor Unreachability Detection).
Router Advertisement chứa danh sách các Prefix dùng cho các kết nối, hoặc
(và) các Autonomous Address Configuration. Nodes phân giải qua lại giữa Networklayer Address và Link-layer Address bằng cách multicast bản tin Neighbor Solicitation yêu cầu các Node cung cấp thông tin về Link-layer Address của nó. Bản tin Neighbor Solicitation được multicast đến địa chỉ Solicitate-Node multicast của các Router, các Router khi nhận được bản tin này sẽ trả về Node nguồn những thông tin về Link-layer Address bằng cách gửi bản tin Neighbor Advertisement đến địa chỉ Unicast của Node nguồn đó. Trong bản tin Neighbor Solicitation cũng có chứa thông tin về Link-layer Address của Node nguồn. Do đó, với một cặp bản tin Neighbor Solicitation và Neighbor Advertisement, các Node gửi và nhận biết được Link-layer Address của nhau.

http://www.vnpro.org/forum/upload_pic/ipv6_t.JPG

Hình 4.1.2 Mô tả quá trình tái định hướng (Redirection Proccess).

Host thiết lập Default route tới Router B. Trong khi đó, nếu Host muốn gửi các
gói tin đến subnet 3ffe::1, route tối ưu trong trường hợp này là thông qua Router A. Do Default route chỉ đến Router B, Host muốn gửi các gói tin đến Subnet
3ffe::1, Host đẩy các gói tin đến Next-hop router là Router B (bước 1), Router B dùng thông tin trong bảng định tuyến của mình để chuyển các gói tin đến Subnet 3ffe::1 (bước 2). Nhưng muốn có route tối ưu, Host phải đẩy các gói tin sang Router A. Router B gửi ICMPv6 Redirect message đến Host (bước 3), thông báo Host phải chuyển các gói tin sang Router A thay vì chuyển sang Router B (default Next-hop). Khi nhận được bản tin này, Host lưu thông tin này vào Cáche. Sau này các gói tin cần chuyển sang Subnet 3ffe::1, Host đẩy các gói tin sang Router A.

admin
10-02-2006, 09:32 AM
4.3.1 Truyền gói IPv6 qua Ethernet Maximum Transmission Unit:

Giá trị MTU mặc định dùng cho IPv6 trong môi trường Ethernet là 1500 octet.
Kích thước này có thể bị giảm đi nếu trạm nguồn nhận được Router Advertisment với thông số MTU thấp hơn. Trong trường hợp nhận được giá trị MTU lớn hơn 1500 octet, giá trị này được log lại System Management, thường thì hệ thống bỏ qua các giá trị này (vẫn giữ giá trị MTU là 1500 octet).

Đóng gói IPv6 vào Frame

IPv6 cùng hoạt động trên LAN với những giao thức khác. Một trong những giao
thức khác chính là IPv4. Có hai hướng để nhìn nhận vấn đề này:

1. Xem IPv6 như là một cải tiến của giao thức IPv4, do đó, khi đóng gói IPv6 vào
layer 2 Frame, giá trị trường Protocol Type vẫn được giữ nguyên là 0800
(Hexadecimal) giống với IPv4. Khi tiến hàng bóc các gói IP ra khỏi Layer 2
Frame, các gói IPv4 và IPv6 phân biệt nhau bởi trường Version (4 bit đầu tiên
của gói IP).
2. Hướng thứ hai là: xem IPv6 như một giao thức hoàn toàn độc lập với IPv4. Do
đó, khi đóng gói IPv6 vào Layer 2 Frame, một định dạng Frame mới được định
nghĩa với giá trị trường Protocol Type khác với Layer 2 Frame chứa gói IPv4.
Tuy nhiên, cách thứ hai được sử dụng nhằm đảm bảo tính ổn định trong quá trình
chuyển đổi từ IPv4 lên IPv6. Sau đây là định dạng Frame dùng để truyền gói tin IPv6:

http://www.vnpro.org/forum/upload_pic/ipv6u.JPG

Hình 4.3.1 Đóng gói IPv6 vào Layer 2 Frame.

Ethernet Header bao gồm Destination Ethernet Address và Source Ethernet
Address, Ethernet Type code. Giá trị của Ethernet Type Code dùng để truyền IPv6 có giá trị cố định là 86DD (Hexadecimal). Trường dữ liệu (Frame Payload) bao gồm IPv6 Header, IPv6 Packet Payload và có thể có một số octet đệm nhằm tạo ra kích thước tối thiểu của Frame.

4.3.2 Truyền IPv6 qua mạng WAN

Theo mô hình tham chiếu ISO/OSI IPv6 (cũng như IPv4) hoạt động ở lớp mạng
(Network Layer). Khi chuyển một gói tin IPv6 trong phạm vi một subnet, hệ thống
phải sử dụng địa chỉ lớp liên kết dữ liệu (Data-Link-layer). Trong trường hợp mạng LAN, địa chỉ này chính là 48 bit của MAC Address. Trong trường hợp mạng ATM, địa chỉ này chính là 20-octet ATM Address., còn nếu là Poin-to-point, địa chỉ này không sử dụng.

Khi gói tin IPv6 được chuyển ra khỏi phạm vi một subnet (liên mạng) bên cạnh
địa chỉ lớp liên kết dữ liệu (Data-Link-layer), hệ thống sử dụng IPv6 Address.
Nói tóm lại để chuyển được gói tin, cần có hai loại địa chỉ:
- Link-layer Address: Giúp xác định đích đến của gói tin trong một subnet. Trong
trường hợp này, còn được gọi là địa chỉ vật lý.
- Layer 3 Address : Xác định đích đến của gói tin trong liên mạng.
Có nhiều cách khác nhau để duy trì ánh xạ qua lại giữa Link-layer Address và
Layer 3 Address. Phương pháp phổ biến nhất là ARP (Address Resolution Protocol), giao thức dùng để phân giải địa chỉ dùng cho IPv4, nhưng IPv6 không dùng phương pháp này. IPv6 dùng phương pháp mới hơn, dựa vào giao thức Neighbor Discovery. Sau đây là ví dụ mô tả quá trình truyền một gói tin qua liên mạng:

http://www.vnpro.org/forum/upload_pic/ipv6v.JPG

Hình 4.3.2 Truyền gói IPv6 qua WAN.

Giả sử cần truyền một gói từ Host B sang Host A. Quá trình đó diễn ra như sau:
1. Host B tạo IPv6 Packet với IPv6 Destination Address là địa chỉ IPv6 của Host A
và IPv6 Source Address là địa chỉ IPv6 của Host B. Gói tin này không đổi đến
khi đến đích. Host B tiến hành kiểm tra xem Host A có trên cùng một đoạn mạng với mình hay không. Nếu cùng, IPv6 Packet được đóng vào Frame với Link-layer Address nguồn và đích tương ứng với Link-layer Address của Host B và A. Trong trường hợp Host A không cùng đoạn mạng với B, Host B gửi bản tin đến Router 2 yêu cầu Router 2 chèn Link-layer Address của nó vào Frame (Packet (a)).
2. Router 2 nhận được Packet (a), nó dùng bảng định tuyến để chuyển gói tin dựa
vào địa chỉ IPv6. Gói tin được chuyển đến Router 1 nhờ các giao thức định
tuyến. Giả sử gọi gói tin do Router 2 chuyển đến Router 1 là Packet(b)
3. Router 1 nhận được Packet (b) và chuyển nó tới Host A thông qua mạng LAN.
Router 1 phát hiện được Link-layer Address của Host A nhờ vào giao thức
Neighbor Discovery.
4. Host A nhận được gói tin, kiểm tra địa chỉ IPv6 đích, thấy trùng với địa chỉ IPv6 của mình, Host A tiếp tục chuyển gói lên các lớp cao hơn để tiếp tục xử lý.