Kỹ thuật lưu lượng với MPLS

**Kỹ thuật lưu lượng** (TE - Traffic Engineering) là kỹ thuật điều khiển đường truyền chứa lưu lượng qua mạng. Mục đích để cải thiện việc sử dụng tài nguyên mạng, tránh trường hợp một phần tử mạng bị nghẽn trong khi các phần tử khác chưa được dùng hết. Ngoài ra, còn để đảm bảo đường truyền có các thuộc tính nhất định, tài nguyên truyền dẫn có sẵn trên một đường truyền cụ thể hay xác định luồng lưu lượng nào được ưu tiên lúc xảy ra tranh chấp tài nguyên.

Mạng chuyển mạch nhãn đa giao thức (MPLS - MultiProtocol Label Switching) xây dựng đường truyền chuyển nhãn (LSP - Label Switched Path) trong mạng nhằm giảm lưu lượng chuyển tiếp. MPLS-TE dùng đường hầm TE (TE tunnel) hay đường hầm điều khiển lưu lượng để kiểm soát lưu lượng trên đường truyền đến một đích cụ thể. MPLS-TE dùng cơ chế định tuyến động (autoroute / dynamic route) để tạo bảng định tuyến bằng LSP mà không cần thông tin đầy đủ của các tuyến lân cận (neighbor). MPLS-TE còn có khả năng dự trữ băng thông khi xây dựng các LSP này. Nói chung, phương pháp này linh hoạt hơn kỹ thuật lưu lượng chuyển tiếp chỉ dựa vào địa chỉ đích.

Khi tìm hiểu về kỹ thuật lưu lượng với MPLS, ta cần làm rõ các vấn đề sau:
*Sự phân phối thông tin (Information distribution): cách các bộ định tuyến nhận ra mạng và các tài nguyên nào sẵn có.
*Tính toán và thiết lập đường truyền (Path calculation and setup): cách các bộ định tuyến quyết định tạo các đường hầm LSP (TE tunnel), cách xây dựng và duy trì các đường hầm này một cách tốt nhất.
*Chuyển tiếp lưu lượng vào một đường hầm (Forwarding traffic down a tunnel): sau khi được xây dựng thì nó được sử dụng như thế nào?
## 1. Trường hợp minh họa
Trong phần này, ta dùng một trường hợp để minh họa cho các yêu cầu về TE. Giả sử dụng mô hình mạng như ở Hình 2.1, hai nút nguồn A và B sẽ gửi lưu lượng đến nút đích D qua nút C. Phí tổn (cost) của tuyến được tính dựa vào metric của liên kết. Khi các metric bằng nhau thì phí tổn chính là số chặng (hop/router) trong tuyến. Giữa C và D là hai đường truyền có phí tổn khác nhau và tất cả các liên kết sẽ có cùng một dung lượng và tốc độ.

Trường hợp này đưa ra yêu cầu về vấn đề cải thiện việc sử dụng tài nguyên. Trong mạng ở Hình 2.1, giả sử lưu lượng của tất cả các liên kết là 150 Mbps, nút A gửi đi 120 Mbps và nút B gửi đi 40 Mbps đến nút D. Nếu lưu lượng đi theo đường truyền ngắn nhất thì luồng 160 Mbps sẽ qua đường truyền C-G-D, vượt quá lưu lượng trên liên kết, gây ra nghẽn và mất dữ liệu. Nhưng bằng cách chia lưu lượng giữa đường ngắn nhất (C-G-D) và đường dài nhất (C-E-F-D) thì sẽ không xảy ra tắc nghẽn và luồng 80 Mbps được chuyển tiếp trên mỗi đường liên kết. Điều này được thực hiện bằng cách kiểm soát các phí tổn trên các liên kết để nó làm việc với phí tổn bằng nhau. Lúc đó, lưu lượng sẽ được chia ra (hay tải cân bằng - load balanced) giữa chúng.

Từ trường hợp trên ta có hai yêu cầu sau: tính toán đường truyền giữa nguồn và đích sao cho phù hợp với các điều kiện ràng buộc và chuyển tiếp lưu lượng theo đường truyền này.

## 2. Thiết lập đường truyền thiết kế lưu lượng sử dụng [[MPLS]]-TE
### 2.1. Thuộc tính ưu tiên (priority) và sự chiếm trước (preemption) LSP
MPLS-TE dùng độ ưu tiên của LSP để đánh dấu các LSP quan trọng hơn và cho phép chúng giành tài nguyên từ các LSP khác (hay chiếm trước LSP khác). MPLS-TE đưa ra tám mức độ ưu tiên, 0 là tốt nhất và 7 là xấu nhất. Ví dụ, LSP có độ ưu tiên 2 sẽ quan trọng hơn LSP có độ ưu tiên 6. Một LSP sẽ gồm hai độ ưu tiên: độ ưu tiên thiết lập (setup priority) và độ ưu tiên lưu giữ (hold priority). Độ ưu tiên thiết lập kiểm soát truy xuất tài nguyên khi LSP được tạo hay quyết định lúc nào chấp nhận một LSP và độ ưu tiên lưu giữ kiểm soát truy xuất tài nguyên cho LSP mới tạo.

Khi một LSP mới được thiết lập, nếu không có đủ tài nguyên cho nó thì độ ưu tiên cài đặt của nó sẽ được so sánh với độ ưu tiên lưu giữ của LSP cũ để quyết định xem có thể chiếm được tài nguyên của LSP cũ không. Vì vậy, các LSP cũ sẽ bị hủy. Tóm lại, các mức độ ưu tiên sẽ quyết định cách xử lý của một LSP khi xảy ra tranh chấp tài nguyên trong mạng.
### 2.2. Phân phối thông tin – [[IGP]] mở rộng (extensions)
Như trong trường hợp minh họa trên, yêu cầu cần thiết ở đây là tìm được một đường truyền trong mạng đáp ứng được các điều kiện (thông tin) ràng buộc. Các điều kiện đó sẽ được đưa vào để tính toán các đường truyền khả thi đến đích. Các điều kiện ràng buộc như:
*Băng thông yêu cầu cho một LSP cụ thể (như 10 Mbps từ nguồn x đến đích y).
*Các thuộc ính (như màu sắc) của liên kết cho phép lưu lượng qua.
*Giá trị metic được gán cho liên kết.
*Số chặng mà lưu lượng được phép truyền qua.
*Độ ưu tiên thiết lập của LSP.

Các điều kiện trên được phân làm hai loại: (a) thuộc tính liên kết như băng thông sẵn có, màu liên kết hay giá trị metric và (b) thuộc tính LSP như số chặng hay độ ưu tiên.

Việc tính toán đường truyền thỏa mãn các điều kiện ràng buộc đòi hỏi thông tin về việc mỗi liên kết có đáp ứng được các điều kiện đó hay không và thông tin này sẽ được cấp đến tất cả các nút để tính toán. Vì vậy, các thuộc tính liên kết thích hợp phải được quảng bá qua mạng. Điều này được thực hiện bằng cách bổ sung thêm sự mở rộng đặc trưng về TE vào các giao thức link-state như IS-IS (Intermediate System-to-Intermediate System) và giao thức tìm đường đi ngắn nhất (OSPF - Open Shortest Path First), cho phép chúng quảng bá không chỉ trạng thái (up/down) mà còn các thuộc tính quản lý của liên kết và băng thông sẵn có được dùng bởi các LSP tại mỗi độ ưu tiên. Vậy, mỗi nút sẽ biết được các thuộc tính của tất cả các liên kết trong mạng. Thông tin này sẽ được lưu trong cơ sở dữ liệu TE (TED - TE Database) trên mỗi router để dùng tính toán đường truyền.

Nói chung, việc mở rộng giao thức cổng nội bộ (IGP - Interior Gateway Protocol) trong kỹ thuật lưu lượng đảm bảo các thuộc tính liên kết liên quan đến TE có sẵn tại tất cả các nút trong mạng.
### 2.3.Tính toán đường truyền – [[CSPF]]
Như thuật toán đường đi ngắn nhất (SPF - Shortest Path First), SPF ràng buộc (CSPF - Constrained SPF) tính đường đi ngắn nhất dựa vào việc quản lý metric. CSPF chỉ tính các đường mà thỏa mãn một trong các điền kiện ràng buộc (như băng thông sẵn có) bằng cách loại bớt các liên kết không thỏa. Ví dụ nếu điều kiện về băng thông, CSPF sẽ bỏ bớt các liên kết không có đủ băng thông để dùng. Như trường hợp minh họa, khi LSP A-D được thiết lập là 120Mbps thì chỉ có 30 Mbps là sẵn có trên tuyến A-C-G-D. Vì vậy, khi tính toán đường đi cho LSP B-D với yêu cầu 40 Mbps, thì các liên kết C-G và G-D phải bị loại đi khỏi mô hình mạng và CSPF sẽ chọn tuyến thay thế tốt nhất có sẵn.

Khi điều kiện ràng buộc về "màu liên kết" (còn gọi là một thuộc tính quản lý, thường mang tính trực giác), các liên kết sẽ được cấu hình với màu khác nhau và một liên kết có thể có nhiều màu hay không có màu nào hết, tối đa có 32 màu được dùng. Như mạng ở Hình 2.2, liên kết E-F và F-D được gán màu "đỏ", C-D là "xanh lam", C-G không có màu trong khi C-E được gán vừa "đỏ" vừa "xanh lục". Việc quy định màu cho liên kết thường dựa trên các thuộc tính như độ trễ, độ mất gói, giá trị phí tổn hay vị trí địa lý.

Các màu ở đây cho biết được LSP sẽ chứa hay không chứa liên kết nào của một tuyến cụ thể. Ví dụ, nếu gán các liên kết có độ trễ cao với màu "xanh lam", ta có thể tính được đường truyền mà không qua liên kết đó bằng cách loại bỏ các liên kết "xanh lam" khỏi đường truyền đó. Như ở Hình 2.2, giả sử C-D là liên kết độ trễ cao. LSP1 được thiết lập giữa C và D với điều kiện "bỏ liên kết xanh lam", tức là không có liên kết nào trong tuyến được gán "xanh lam". Dù cho C-D là đường đi ngắn nhất nhưng nó vẫn bị loại khỏi sự tính toán do có màu "xanh lam" và LSP sẽ thành lập một tuyến khác mà không chứa C-D, như C-G-D chẳng hạn. Tương tự, LSP2 cũng được thiết lập giữa C và D với điều kiện "chứa liên kết đỏ", và tất cả liên kết trong tuyến sẽ được gán màu "đỏ", kể cả C-E được gán hai màu "đỏ" và "xanh lam". Theo thuật toán CSPF, các liên kết có màu không thích hợp với các điều kiện ràng buộc sẽ bị loại khỏi mô hình.

Giống như SPF, kết quả thu được của thuật toán CSPF là một đường truyền đơn. Nếu tại cùng một thời điểm có các đường đi đều tốt như nhau thì chỉ có một đường là được chọn. Các phương pháp quyết định chọn đường đi trong CSPF gồm có: chọn ngẫu nhiên, chọn theo least-fill (liên kết còn trống) hay most-fill (liên kết đã đầy).

Dù sự tính toán đường truyền diễn ra như thế nào thì một bộ chuyển mạch nhãn chuyển tiếp trạng thái cũng phải được thiết lập dọc theo đường truyền để bảo đảm rằng lưu lượng không bị phân tán khỏi đường truyền mong muốn.
### 2.4. Thiết lập đường truyền - RSVP mở rộng và điều khiển chấp nhận (admission control)
Sau khi đường truyền được tính toán xong, nó sẽ được thiết lập dùng giao thức dành riêng tài nguyên với kỹ thuật lưu lượng (RSVP-TE - Resource reSerVation Protocol with TE). Khi đó, đường truyền sẽ được định rõ ở đầu LSP trong đối tượng tuyến tường minh (ERO - Explicit Route Object). Tuy nhiên, ERO không chỉ mang thông tin liên quan đến TE chứa trong bản tin RSVP mà nó còn mang: (a) thông tin TE mà một nút trung gian biết được như băng thông cho LSP và (b) thông tin để thiết lập đường truyền như độ ưu tiên thiết lập và lưu giữ của LSP.

Khi bản tin RSVP được truyền từ cuối LSP đến đầu LSP, mỗi nút trong mạng phải thực hiện điều khiển chấp nhận với các lý do sau:
*LSP có thể không cần thiết được tính toán với CSPF.
*Nếu được tính với CSPF, trạng thái về tài nguyên có thể thay đổi giữa thời gian tính toán và báo hiệu tuyến (như khi LSP được thiết lập nó sẽ bắt đầu tại một nút khác).
*Kết quả của CSPF chỉ chính xác như thông tin trong TED (không phải luôn đúng do có sự điều chỉnh quảng bá liên kết).

Nếu một nút có đủ tài nguyên để dùng thì việc điều khiển chấp nhận sẽ thành công và đường truyền được thiết lập qua các nút rồi cập nhật tài nguyên sẵn có. Thông tin này sẽ được gửi lại cho IGP để các nút khác có thể biết được trạng thái mới này và việc phân phối nó nhanh hay chậm còn tùy vào sự điều chỉnh quảng bá link-state. Nếu không có đủ tài nguyên sẵn có thì cần thực hiện việc chiếm giữ LSP khác thông qua độ ưu tiên của LSP. Nếu việc chiếm giữ không giải quyết được vấn đề tài nguyên thì sự dành riêng sẽ thất bại và một bản tin lỗi sẽ được gửi tới đầu LSP. Khi nhận được bản tin này, đầu LSP sẽ tính toán lại đường truyền.

Vậy khi một LSP được thiết lập, lưu lượng có thể được chuyển tiếp theo LSP đó từ nguồn đến đích. Trong phần sau ta sẽ thấy cách lưu lượng thực sự được chuyển vào LSP như thế nào.
## 3. Sử dụng đường truyền thiết kế lưu lượng
Cách đơn giản nhất để chuyển tiếp lưu lượng đến các LSP là dùng định tuyến tĩnh (static routing). Nó hoạt động giống như định tuyến IP thông thường. Bộ định tuyến chuyển nhãn (LSR - Label Switching Router) được cấu hình để chuyển lưu lượng đến đích bằng cách gửi nó trên LSP. Tuy nhiên, thực sự là đường truyền mà được cấu hình thủ công để dùng LSP sẽ bị giới hạn và không thể thay đổi khỏi một cách hoạt động nên sẽ làm giới hạn việc dùng mở rộng.

Để thấy được hiệu quả của các đường truyền thiết kế lưu lượng, giao thức định tuyến cần nhận biết được các LSP. Theo cách xử lý của giao thức định tuyến, một LSP được coi như một giao tiếp (a tunnel) có giá trị metric phù hợp với nó. Giá trị metric có thể giống như của đường truyền IP cơ bản hoặc được cấu hình với một giá trị khác để tác động vào sự định tuyến. Các giao thức định tuyến khác nhau sẽ có các tính chất khác nhau và cách dùng LSP cũng khác nhau.

Các LSP sử dụng các giao thức IGP để có thể kết hợp được các đường truyền định tuyến ràng buộc với đường truyền định tuyến IP. Vì vậy, khi mà kỹ thuật lưu lượng chỉ được áp dụng cho một phần tử nào đó của mạng thì các LSP vẫn được tính toán cho toàn bộ mạng. Trong giao thức IGP, có hai cách xử lý khác nhau:
*Cho phép IGP ở đầu LSP dùng LSP để tính toán SPF.
*Quảng bá LSP trong gói quảng bá link-state để các router khác có thể tính toán nó trong giao thức SPF của chúng.

Thật sự hai cách xử lý trên được cấu hình riêng lẻ và nhà cung cấp sẽ đặt tên cụ thể cho hai chức năng đó. Hình 2.3 sẽ mô tả sự khác nhau giữa chúng bằng cách đưa ra một mô hình mạng đơn giản, với một LSP được thiết lập giữa E và D theo đường truyền E-F-D có giá trị metric bằng 15. Trong trường hợp này, giá trị metric của LSP sẽ nhỏ hơn nhưng tốt hơn metric của IGP của đường truyền E-F-D mà có giá trị metric là 50.

Lưu lượng được chuyển tiếp đến nút W từ hai nguồn, E và A. Mục đích ở đây là chuyển tiếp lưu lượng theo con đường ngắn nhất. Đối với nguồn E, đường truyền ngắn nhất sẽ chứa LSP E-D rồi đến liên kết D-W, có tổng giá trị metric là 25 (15+10). Khi thuật toán SPF được thực hiện ở nút E, để tìm đường truyền này thì E phải đưa LSP E-D vào để tính toán SPF. Đây là cách xử lý thứ nhất được đưa ra ở trên và được gọi là định tuyến tự động (autoroute). Nói cách khác là dùng các LSP xuất phát tại một nút cụ thể để tính toán SPF của nó.

Khi nút nguồn A gửi lưu lượng đến nút đích W, đường truyền có giá trị metric nhỏ nhất sẽ qua E và LSP E-D, với tổng giá trị metric là 35 (10+15+10). Tuy nhiên, A không biết được sự tồn tại của LSP E-D vì nó xuất phát từ nút E. Để A có thể đưa LSP đó vào khi tính toán SPF thì nút E phải quảng bá nó như một liên kết trong gói quảng bá link-state. Đây là cách xử lý thứ hai được gọi là chuyển tiếp kế cận (forwarding adjacency). Tóm lại là phân phối thông tin về sự tồn tại của LSP đến các nút khác trong mạng để chúng có thể dùng nó cho việc tính toán SPF.

Việc dựa vào thông tin LSP được phân phối bởi các nút khác có thể dẫn đến việc xử lý ngẫu nhiên (không mong muốn). Điều này xảy ra do quyết định định tuyến được tạo ra dựa trên sự tính toán đường ngắn nhất của một router khác. Ta sẽ tiếp tục ví dụ trên nhưng với giá trị metric của liên kết E-F là 10 thay vì 20 như minh họa ở Hình 2.4. Vì E quảng bá LSP trong gói quảng bá link-state của nó nên nút F cũng sẽ nhận quảng bá này. Như vậy, F sẽ quyết định đường đi ngắn nhất đến đích W qua E và theo tuyến F-E-LSP-D-W với tổng giá trị metric là 35 (10+15+10), sẽ tốt hơn là qua tuyến F-D-W với tổng giá trị metric tới 40. Ở đây ta thấy lưu lượng từ F đến E rồi lại trở về F, theo cùng liên kết như đường truyền IGP thuần túy. Sở dĩ có điều này là do F không tự nhận biết được nó trong đường đi của LSP và chỉ dựa vào sự quảng bá của E để chuyển lưu lượng đến W thông qua nó.

Dù giao thức được dùng là giao thức cổng nối biên (BGP - Border Gateway Protocol) hay một trong các giao thức IGP thì một vài LSP vẫn sẵn có để đến cùng một đích. Hầu hết các nhà cung cấp cho phép người dùng chọn ra một trong các LSP để truyền đi, dựa trên các chính sách nội bộ khác nhau. Một chính sách như vậy có thể dùng để phân loại lớp dịch vụ (class-of-service) của luồng lưu lượng IP đến để chọn ra LSP. Ví dụ như luồng lưu lượng tối ưu (best-effort) được đưa vào một LSP trong khi luồng lưu lượng đã truyền được hướng đến một LSP khác. Bằng cách tính toán các tính chất của LSP này người điều khiển có thể tăng thêm sự đảm bảo đối với các luồng lưu lượng quan trọng hơn.

Tóm lại, chức năng của các giao thức định tuyến nhằm làm cho việc sử dụng các đường truyền thiết kế lưu lượng được thiết lập trong mạng đạt được hiệu quả trong việc kiểm soát con đường chuyển tiếp lưu lượng trong một khu vực và cho phép triển khai MPLS-TE trong các phần tử của một hệ thống mạng.

## Tham khảo
*Ina Minei và Julian Lucek, MPLS Enabled Applications Emerging Developments and New Technologies, Copyright © 2005, John Wiley & Sons Ltd, The Atrium, Southern Gate, Chichester, West Sussex PO19 8SQ, England.

## Tham khảo