Thuật toán sử dụng các định nghĩa sau:
• Mô hình vật lí của một mạng quang WDM được biểu thị bởi <N, F>, trong đó N là tập các node trong mạng còn F là tập các kết nối sợi quang. Một kết nối sợi quang là một cặp các tuyến nối hai hướng giữa hai node trong mạng.
• Mô hình đường đi ngắn nhất P nằm trên mô hình vật lí được biểu thị bởi <N, L> trong đó L là tập các đường đi ngắn nhất. Một đường đi ngắn nhất là một kênh quang có hướng bắt đầu từ node mạng đầu cuối không đi qua hoặc đi qua một số các node mạng khác và kết thúc tại node mạng đích của nó. Do vậy, đường đi của một đường đi ngắn nhất có thể được biểu diễn dưới dạng một chuỗi các tuyến nối sợi quang và/hoặc một danh sách các node mạng.
• Việc ghép một mô hình đường đi ngắn nhất lên một mô hình vật lí được gọi là hoạt động ánh xạ của mô hình đường đi ngắn nhất. Hoạt động ánh xạ kết hợp mỗi đường đi ngắn nhất trong mô hình đường đi ngắn nhất với một danh sách các node mạng mà đường đi ngắn nhất đó đi qua trong mô hình vật lí.
Thuật toán sử dụng các kí hiệu sau:
• Mô hình đường đi ngắn nhất dư thừa (hay đơn giản hơn là mô hình dư thừa) R(A,Z). Trong đó tập các nguồn còn dư thừa A⊂N,và để thiết lập LSP với đích Z ⊂N sẽ được biểu thị bởi <N, R> trong đó R⊂ N. A không thể thiết lập LSP đó nếu như R(A, Z) là một lược đồ không kết nối (không luôn luôn có một đường từ một node bất kì tới tất cả các node khác).
• Một R không kết nối ít nhất hai phần. Phần C của lược đồ G là phần con kết nối lớn nhất trong G, nghĩa là luôn luôn có một đường nối từ v1 tới v2
với mọi (v1,v2)⊂C. Một phần có thể chỉ là một node duy nhất. Qua sự định nghĩa mô hình đường đi ngắn nhất dư thừa, R(A,Z) luôn thoả mãn rằng đầu cuối mong muốn A, thuộc một trong các phần và được gọi là phần đầu, biểu thị bởi C_A, và đầu cuối mong muốn Z thuộc một phần khác gọi là phần cuối và biểu thị bởi C_Z.
• Phần đáp ứng Q là một phần đáp ứng đường đi ngắn nhất cụ thể LSP. Nó chỉ định những điều kiện ràng buộc khi định tuyến LSP đó thông qua mô hình đường đi ngắn nhất hiện có. Khi thiết lập một LSP cho Z, A sử dụng Q trên P để đạt được R(A,Z), nghĩa là R(A,Z) là một lược đồ con của P đạt được bởi R(A,Z)=Q*P.
Thuật toán dựa trên kinh nghiệm có một phiên bản cơ sở được dùng khi một node mạng duy nhất thất bại trong việc xác định tài nguyên để đáp ứng một LSP mới và một phiên bản mở rộng có khả năng giải quyết cùng một vấn đề cho nhiều node mạng khi một số điều kiện nhất định được đáp ứng.
Thuật toán dựa trên kinh nghiệm sẽ dựa trên bổ đề sau:
Cho một mô hình vật lí G, một mô hình đường đi ngắn nhất P, một cặp node A và Z của một LSP, mô hình đường đi ngắn nhất dư thừa R(A,Z) với A và Z thuộc hai phần lược đồ không liên kết thì một giải pháp tái cấu hình đường đi ngắn nhất tồn tại nếu và chỉ nếu có một đường đi ngắn nhất đi từ phần đầu tới phần cuối theo mô hình dư thừa.
Một đường đi ngắn nhất được chấp nhận cho một giải pháp tái cấu hình đường đi ngắn nhất được gọi là đường đi ngắn nhất hiện thực. Thuật toán này không cần thiết phải lần lượt tìm kiếm tất cả các đường đi ngắn nhất trong mô hình dư thừa để tìm thấy một đường đi ngắn nhất hiện thực. Thay vì thế nó có thể chỉ tìm kiếm trong một phạm vi nhỏ hơn vì một đường đi ngắn nhất hiện thực giữa hai điểm cuối phải đi qua ít nhất một sợi quang trong tập giao nhỏ nhất trong hai điểm cuối đó. Do đó, tìm kiếm đường đi ngắn nhất trong ví dụ của tập giao nhỏ nhất giữa phần đầu và phần cuối là đủ chấp nhận được. Khi mà một đường đi ngắn nhất hiện thực đã được tìm ra, sẽ có nhiều cách để tái cấu hình nó. Cách cụ thể được chấp nhận thường tuỳ thuộc theo các điều kiện xem xét bổ sung. Một giải pháp tái cấu hình được nói là có thể dùng nếu một đường đi ngắn nhất hiện thực có thể được xác định. Khi có nhiều đường đi ngắn nhất hiện thực, sự lựa chọn tuyến hiện thực tái cấu hình sẽ tuân theo trật tự sau:
• Đường đi ngắn nhất được ưa thích nhất chia sẻ cùng node đầu
• Đường đi ngắn nhất ưa thích thứ hai nằm trong phần đầu hoặc phần cuối.
Các kinh nghiệm sẽ được sử dụng khi một node cần thiết lập một LSP tới một node khác nhưng lại không tìm đủ tài nguyên trong mô hình đường đi ngắn nhất hiện tại. Cần chú ý rằng các kinh nghiệm này có thể được tổng quát hoá trong một số trường hợp, trong đó các tài nguyên bổ sung là cần thiết giữa hai node cụ thể. Đầu vào của thuật toán dựa trên kinh nghiệm là mô hình dư thừa. Hơn thế, thuật toán dựa trên kinh nghiệm phải có thông tin đầy đủ về mô hình đường đi ngắn nhất và ánh xạ của nó sang mô hình vật lí cũng như chính bản thân mô hình vật lí đó. Thuật toán trước tiên xác định tập giao nhỏ nhất các sợi giữa phần đầu và phần cuối, và sau đó xác định tất cả các đường đi ngắn nhất nằm trên tập các sợi quang đó. Kế đến, thuật toán sẽ tìm kiếm trong mô hình đường đi ngắn nhất một đường đi mà đi qua phần đầu, một sợi trong tập giao nhỏ nhất và phần cuối. Một giải pháp tái cấu hình sẽ tồn tại nếu một đường đi ngắn nhất như vậy được tìm thấy. Sự miêu tả giả mã hoá của thuật toán dựa trên kinh nghiệm tái cấu hình đường đi ngắn nhất được cho dưới đây:
/* algorithm inputs */ G; // physical topology P; // lightpath topology
M; // lightpath to fibre mapping A; // head end node
Z; // tail end node
R (A,Z); // residual lightpath topology per A and Z /* find the set of all nodes in the head component */ H: = getComoponentSet (A, R (A,Z));
/* find the min cut set of fibres between H and T */ fibreMinCut = minCut (H, T, G);
/* find all candidate paths */
candidateLightpath: = getLightpathId (fibreMinCut, M); /* sort the candidate lightpaths according to the preference */ candidateLeightpath: = sortCandidateLightpath ();
/* retrieve the feasibleLightpath details for configuration */ for each lightpath p in candidateLightpath {
/* find the set of nodes that p traverses */ L: = nodeList (p); if intersection (L, H, T)! = 0 { feasibleLightpath: = p; return feasibleLightpath; } } X C_Ae C_Ze Z1 C_A1 C_Z2 Z2 C_A2 R(Ae,Ze) R(A2,Z2) R(A1,Z1) A2 A1 C_Z1
Hình 3.4 Một ví dụ khi áp dụng một thuật toán dựa trên kinh nghiệm mở rộng
Thuật toán tái cấu hình trên có thể được mở rộng để giải quyết với mạng LSP trong đó n<m tái cấu hình. Nhu cầu m tái cấu hình có thể đạt được bằng cách lần lượt áp dụng thuật toán dựa trên kinh nghiệm cơ sở cho mỗi trường hợp. Tuy nhiên, một giải pháp được tối ưu hoá và tốt hơn có thể có cho các yêu cầu nhiều LSP. Ý tưởng này được giải thích nhờ sử dụng hình vẽ 3.4. Giả thiết rằng điểm đầu A1 của LSP mong muốn có điểm cuối Z1, nhìn thấy một mô hình không kết nối dư thừa R (A1, Z1) và điểm đầu A2 của LSP mong muốn với điểm cuối Z2, nhìn thấy mô hình dư thừa không kết nối R (A2, Z2). Thuật toán tái cấu hình đường đi ngắn nhất mở rộng có thể giải quyết một vấn đề tương tự, trong đó giải pháp mục tiêu thoả mãn nhu cầu của cả A1 và A2 (tuỳ thuộc vào các điều kiện cụ thể).
Vấn đề tái cấu hình tương đương có thể được biểu diễn theo các bước sau đây. Mỗi bước chỉ được xử lí nếu các bước trước đó đã thành công. Việc thất bại trong bất kì bước nào cũng có nghĩa là vấn đề tái cấu hình tương đương là không thể xác định được, và do đó, một giải pháp tái cấu hình duy nhất sẽ không tồn tại cho tập các nhu cầu tái cấu hình riêng rẽ. Trong các trường hợp như vậy, mỗi vấn đề tái cấu hình phải được giải quyết một cách riêng rẽ. Các bước như vậy bao gồm:
• Bước 1: Kết hợp lựa chọn của vấn đề tái cấu hình đầu tiên Q1 và của vấn đề tái cấu hình thứ hai Q2. ∃Qe = Q1∨ Q2. Điều này đảm bảo rằng Q1 và
Q2 không chỉ định một mâu thuẫn nào với cái kia.
• Bước 2: Ứng dụng Qe đối với giao của mô hình đường đi ngắn nhất dư thừa của vấn đề tái cấu hình đầu tiên, R(A1,Z1) và của vấn đề tái cấu hình thứ hai R(A2,Z2). Mô hình đường đi ngắn nhất kết quả sẽ không là tập rỗng, nghĩa là: R(Ae,Ze) = Qe* R(A1,Z1) ∩ R(A2,Z2) ≠Ø.
• Bước 3: Trong R(Ae,Ze), phần đầu tương ứng C_Ae là không rỗng nghĩa là ta có: C_Ae = Qe* (C_A1 ∩ C_A2) ≠Ø.
và phần đuôi tương ứng là C_Ze cũng không rỗng, nghĩa là C_Ze = Qe* (C_Z1 ∩ C_Z2) ≠Ø.
• Bước 4: Loại bỏ tất cả các thành phần con mà không thể tiếp cận được Trong bước 3, phần đầu và phần đuôi tương ứng có thể trở thành không kết nối được. Bước 4 được thiết kế đặc biệt cho tình huống này, theo đó một thành phần con sẽ phải bị loại bỏ từ thành phần đầu/cuối nếu không tồn tại đường liền nào từ nó tới tất cả các node cuối/đầu mong muốn. Một ví dụ như vậy là node X trong hình 3.4. Mặc dù nằm trong giao của C_Z1 và C_Z2, nhưng node X trở thành một thành phần không kết nối được sau khi Qe được ứng dụng cho tập giao đó. Như vậy cần loại bỏ nó khỏi C_Ze vì trong sự liên kết của R(A1,Z1) và R(A2,Z2), không có một đường liền nào từ một thành phần này (node X) tới Z1 và Z2. Khi điểm này đã được tiếp cận, một giải pháp tái cấu hình duy nhất có thể có bằng cách áp dụng phiên bản cơ sở của thuật toán tái cấu hình đường đi ngắn nhất cho vấn đề tương đương. Trong ví dụ này, chỉ có hai yêu cầu tái cấu hình. Xu hướng này làm việc tốt khi số lượng vấn đề tái cấu hình là nhỏ (ví dụ như 3 hoặc 4). Để hiệu quả hơn, trật tự của các bước tính toán nên được thay đổi. Một điều kiện cần thiết để một vấn đề tương đương tồn tại là sự tồn tại của các thành phần đầu và cuối tương đương. Khi số lượng vấn đề tái cấu hình lớn hơn hoặc bằng 3, các tập giao này có thể không tồn tại cho tất cả các phần tử của một tập vấn đề. Tuy nhiên, chúng vẫn có thể được áp dụng cho một vấn đề/yêu cầu con. Do vậy, thuật toán mở rộng trước tiên nên kiểm tra khi nào có nhiều tái cấu hình đồng thời. Sau đó, kết hợp các chấp nhận được nên được thực hiện sau khi một tập các vấn đề ghép lại được đã được biết. Giả mã hoá của phiên bản tăng cường được trình bày dưới đây, đã xem xét tới vấn đề đó.
/* algorithm inputs */ G; // physical topology
P; // lightpath topology
M; // lightpath to fibre mapping {Q}; // qualifier set
{A}; // head end node set {Z}; // tail end node set
{R ({A},{Z})}; // residual lightpath topology set per corresponding pairs in {A} and {Z}
/* compute intersection of head/tail components of {R({A}, {Z})}, note xinstanceList contains IDs of problem with which x instances asscociate */
assign two empty lists, headInstanceList and tailInstanceList, to every node in P for each R(i) in {R ({A},{Z})} {
for each node in P {
if node is in the head component of R(i) headInstanceList (node) + = i;
if node is in the tail component of R(i) tailInstanceList (node) + = i;
} }
/* identify the set of mergeable problems NP-complete, use a heuristic. So solution may not be unique
sort headInstanceList by length in descending order; */ sortedHead: = sort (headInstanceList);
m = 1; // number of possible mergings for each headList in sortedHead { if length (headList) > = 2 {
for each tailList in tailInstanceList {
mergeable (m): = searchLongestMatch (headList, tailList); }
} }
e = 1; // number of equivalent problems for each list in mergeable {
Qe: = combine (Q(mergeable));
/* compute equivalent head component and tail component */ mergedA: = Qe * intersection (A(list));
mergedZ: = Qe * intersection (Z(list));
/* merged A and/or merged Z can be disconectd */ for each subcomponent in merged A {
if disjointPath (subcomponent, {relatedHead}} exit Ae (e) + = subcomponent;
}
for each subcomponent in merged Z {
if disjointPath (subcomponent, {relatedTail}} exit Ze (e) + = subcomponent;
}
if (Ae ! = empty) AND (Ze ! = empty) {
Re (Ae (e), Ze (e)): = Qe * intersection (R(A(list), Z(list))); E + +;
} }
Trong trường hợp tái cấu hình đơn, các node đầu và node cuối nhiều khả năng là đã được biết nhưng các cần phải tính toán các thành phần đầu và cuối. Sau đó, tái cấu hình được tìm kiếm giữa thành phần đầu và cuối này. Trong trường hợp tái cấu hình đa, cả thành phần đầu (tương đương) Ae và thành phần cuối Ze đều đã biết. Do đó, thuật toán không cần tính toán các thành phần đầu và cuối.