CHƯƠNG 2: ĐỊNH TUYẾN VÀ BÁO HIỆU TRONG MPLS
2.3. Giao thức LDP (Label Distribution Protocol)
LDP được chuẩn hóa trong RFC 3036, nó được thiết kế để thiết lập và duy trì các LSP định tuyến không cưỡng bức (unconstraint routing). Vùng hoạt động của LDP có thể là giữa các LSR láng giềng (neighbor) trực tiếp hoặc gián tiếp.
Hình 2.11 : Vùng hoạt động của LDP 2.3.1. Hoạt động của LDP
LDP có 4 chức năng chính là phát hiện LSR láng giềng (Neighbor discovery), thiết lập và duy trì phiên, quảng bá nhãn (label advertisement) và thông báo (Notification).
Tương ứng với các chức năng trên, có 4 lớp thông điệp LDP sau đây:
- Discovery: Để trao đổi định kỳ bản tin Hello nhằm loan báo và kiểm tra một LSR kết nối gián tiếp hoặc trực tiếp.
- Session: Để thiết lập, thương lượng các thông số cho việc khởi tạo, duy trì và chấm dứt các phiên ngang hàng LDP. Nhóm này bao gồm bản tin Initialization, KeepAlive.
- Advertisement: Để tạo ra, thay đổi hoặc xóa các ánh xạ FEC tới nhãn.
Nhóm này bao gồm bản tin Label Mapping, Label Withdrawal, Label Release, Label Request, Label Request Abort.
- Notification: Để truyền đạt các thông tin trạng thái, lỗi hoặc cảnh báo.
Các thông điệp Discovery được trao đổi trên UDP. Các kiểu thông điệp còn lại đòi hỏi phân phát tin cậy nên dùng TCP.
SVTH: Phạm Thanh Hải Trang 48 GVHD: ThS. Đào Minh Hưng
Hình 2.12 : Trao đổi thông điệp LDP
Trường hợp hai LSR có kết nối lớp 2 trực tiếp thì thủ tục phát hiện neighbor trực tiếp như sau:
- Một LSR định kỳ gửi đi bản tin Hello tới các cổng UDP 646 địa chỉ multicast (tất cả các router trong subnet).
- Tất cả các LSR tiếp nhận bản tin Hello này trên cổng UDP. Đến một thời điểm nào đó LSR sẽ biết được tất cả các LSR khác mà nó có kết nối trực tiếp.
- Khi LSR nhận biết được địa chỉ của LSR khác bằng cơ chế này thì nó sẽ thiết lập kết nối TCP đến LSR đó. Khi đó phiên LDP được thiết lập giữa 2 LSR.
Trong trường hợp các LSR không kết nối trực tiếp trong một mạng con người ta sử dụng một cơ chế bổ sung như sau: “LSR định kỳ gửi bản tin HELLO đến cổng UDP đã biết tại điạ chỉ IP xác định được khai báo khi lập cấu hình. Đầu nhận bản tin này có thể trả lời lại bằng bản tin HELLO khác truyền một chiều ngược lại đến LSR gửi và việc thiết lập các phiên LDP đuợc thực hiện như trên.”
Phiên LDP là phiên song hướng nên mỗi LSR ở hai đầu kết nối đều có thể yêu cầu và gửi liên kết nhãn.
Trong trường hợp hai LSR không có kết nối lớp 2 trực tiếp (neighbor gián tiếp) thì LSR định kỳ gửi bản tin Hello đến cổng UDP đã biết tại địa chỉ IP xác định được khai báo khi lập cấu hình. Đầu nhận bản tin này có thể trả lời lại bằng bản tin Hello khác và việc thiết lập các phiên LDP được thực hiện như trên.
2.3.2. Cấu trúc thông điệp LDP
Trao đổi thông điệp LDP được thực hiện bằng cách gởi các LDP-PDU (Protocol Data Unit) thông qua các phiên LDP trên kết nối TCP. Mỗi LDP-PDU có thể mang một hoặc nhiều thông điệp, và các thông điệp này không nhất thiết phải có liên quan với nhau.
2.3.2.1. LDP PDU
Mỗi PDU của LDP bao gồm một header LDP và theo sau là một hoặc nhiều thông điệp LDP. Phần header LDP có dạng như sau:
Hình 2.13 : LDP header
- PDU Length (2 octet): số nguyên chỉ chiều dài của PDU theo octet, không tính trường Version và PDU Length.
- LDP Identifier (6 octet): xác định không gian nhãn được cấp phát. Bốn octet đầu là giá trị duy nhất toàn cục nhận dạng LSR, như địa chỉ IP (router ID) được gán cho LSR. Hai octet sau xác định một không gian nhãn bên trong LSR. Hai octet này được set về 0 cho không gian nhãn “per-platform”.
2.3.2.2. Định dạng thông điệp LDP Tất cả các thông điệp LDP có cùng format như sau:
- Bit U: Bit “Unknown”, luôn là 0 vì đặc tả LDP không có kiểu bản tin Unknown.
- Message Length : Chiều dài của các trường sau Message Length tính theo octet (gồm Message ID, các tham số bắt buộc và các tham số tùy chọn).
Hình 2.14 : Format thông điệp LDP Bảng sau là các giá trị định nghĩa trường Message Type:
Bảng 2. 1 : Các loại bản tin LDP
Tên bản tin Giá trị Message Type
Notification 0x0001
Hello 0x0100
Initialization 0x0200
KeepAlive 0x0201
SVTH: Phạm Thanh Hải Trang 50 GVHD: ThS. Đào Minh Hưng
Address 0x0300 Address Withdraw 0x0301
Label Mapping 0x0400
Label Request 0x0401
Label Withdrawal 0x0402
Label Release 0x0403
Label Request Abort 0x0404
- Message ID đôi khi được dùng để liên kết một số bản tin với các bản tin khác, ví dụ một bản tin đáp ứng sẽ có cùng Message ID với bản tin yêu cầu tương ứng.
- Các tham số bắt buộc và tùy chọn phụ thuộc vào các loại bản tin được gởi, chúng thường dùng kiểu mã hóa TLV (Type-Length-Value) . Nói chung, mọi thứ xuất hiện trong một thông điệp LDP có thể được mã hóa kiểu TLV, tuy nhiên đặc tả LDP không phải lúc nào cũng sử dụng lược đồ TLV.
2.3.3. Các bản tin LDP
- Hello : Được trao đổi trong suốt quá trình hoạt động LDP như trình bày ở trên.
- Initialization : Được gửi khi bắt đầu một phiên LDP giữa 2 LSR để trao đổi các tham số, các tùy chọn cho phiên. Các tham số này bao gồm:
+ Chế độ phân bổ nhãn.
+ Các giá trị bộ định thời.
+ Phạm vi các nhãn sử dụng trong kênh giữa 2 LSR đó.
Cả 2 LSR đều có thể gửi các bản tin Initialization và LSR nhận sẽ trả lời bằng KeepAlive nếu các tham số được chấp nhận. Nếu có một tham số nào đó không được chấp nhận thì LSR trả lời thông báo có lỗi và phiên kết thúc.
- KeepAlive : Được gửi định kỳ khi không còn bản tin nào cần gửi để đảm bảo cho mỗi thành phần LDP biết rằng thành phần LDP khác đang hoạt động tốt.
Trường hợp không xuất hiện bản tin KeepAlive hay một số bản tin LDP khác trong khoảng thời gian nhất định thì LSR sẽ xác định đối tác LDP hỏng hoặc kết nối có sự cố và phiên LDP chấm dứt.
- Label Mapping : Được sử dụng để quảng bá gán kết giữa FEC và nhãn.
- Label Withdrawal : Thực hiện quá trình ngược lại với bản tin Label Mapping. Nó được sử dụng để xóa bỏ gán kết đã thực hiện trong Label Mapping.
Bản tin này được sử dụng trong trường hợp:
+ Khi có sự thay đổi trong bảng định tuyến (thay đổi prefix địa chỉ), lúc đó LSR không còn nhận ra FEC này nữa.
+ Thay đổi trong cấu hình LSR làm tạm dừng việc chuyển nhãn các gói trong FEC đó.
- Label Release : Được sử dụng bởi LSR khi nhận được chuyển đổi nhãn mà nó không cần thiết nữa. Điều đó thường xảy ra khi LSR giải phóng nhận thấy nút tiếp theo cho FEC không phải là LSR quảng bá liên kết nhãn/FEC đó.
- Label Request : Sử dụng trong chế độ hoạt động gán nhãn theo yêu cầu, LSR sẽ yêu cầu gán nhãn từ LSR kế cận phía downstream bằng bản tin này.
- Label Request Abort : Nếu bản tin Label Request cần phải hủy bỏ trước khi được chấp nhận (do nút kế tiếp trong FEC yêu cầu đã thay đổi), thì LSR yêu cầu sẽ loại bỏ yêu cầu trước đó bằng bản tin Label Request Abort.
2.3.4. LDP điều khiển độc lập và phân phối theo yêu cầu
Ví dụ dưới đây minh họa việc sử dụng bản tin Label Request và Label Mapping trong chế độ công bố nhãn theo yêu cầu và điều khiển LSP độc lập. Trình tự thời gian trao đổi các bản tin LDP giữa các đối tác (peer) thiết lập một LSP từ router lối vào R1 qua R2 rồi đến router lối ra R3 cho một FEC có prefix “a.b/16” . R1 khởi tạo tiến trình bằng cách yêu cầu một nhãn cho FEC “a.b/16” từ hop kế của nó là R2. Vì sử dụng điều khiển độc lập nên R2 trả ngay một ánh xạ nhãn về cho R1 trước khi R2 nhận được ánh xạ nhãn từ phía downstream là R3. Cả R2 và R3 đáp ứng bằng bản tin Label Mapping, kết quả là trong FIB của R1 và LFIB của R2, R3 có các entry gán kết nhãn hình thành nên đường chuyển mạch nhãn LSP.
Hình 2.15 : Ví dụ LDP chế độ điều khiển độc lập theo yêu cầu
SVTH: Phạm Thanh Hải Trang 52 GVHD: ThS. Đào Minh Hưng
LDP còn hỗ trợ các chế độ phân phối nhãn khác. Khi cấu hình ở chế độ công bố không cần yêu cầu (downstream unsolicited), các router sẽ không dùng bản tin Label Request. Nếu điều khiển tuần tự (ordered control) được cấu hình trên mỗi giao diện, các yêu cầu nhãn sẽ làm cho các bản tin Label Mapping được trả về theo thứ tự từ R3 đến R2, rồi mới từ R2 về R1. Tổng quát, trong chế độ phân phối theo yêu cầu điều khiển tuần tự, ánh xạ nhãn diễn ra đầu tiên ở router lối ra, rồi sau đó lần lượt ngược về đến router lối vào.