TORA là giao thức định tuyến phân phối. Có 3 chức năng là :Tạo tuyến, duy trì tuyến, giải phóng tuyến. Giống nhƣ các giao thức đảo ngƣợc liên kết khác, một đồ thị không vòng lặp có hƣớng DAG (Directed acyclic graph) đƣợc xây dựng và duy trì qua các nút liên kết và đi sâu đến tận nút đích khi thực hiện định tuyến [16].
1. Độ cao của nút:
- Một liên kết trong DAG đƣợc thiết lập theo quan hệ về độ cao giữa hai nút tạo lập liên kết. Gồm hai hƣớng :
o Liên kết xuôi dòng (downstream) : liên kết theo hƣớng cao xuống thấp.
o Liên kết ngƣợc dòng (upstream) : liên kết theo hƣớng từ thấp đến cao. - Các liên kết giữa các nút lân cận mà không xác định đƣợc hƣớng hay không có độ cao đƣợc xem nhƣ liên kết vô hƣớng và không sử dụng cho việc định tuyến.
- Nhƣ vậy, bằng cách đặt độ cao cho các nút của mạng. Tuyến đƣợc xây dựng dựa trên biểu đồ có hƣớng không quay vòng.
2. Tạo, duy trì và xoá bỏ tuyến.
- Tạo tuyến (route creation): Chuyển đổi một mạng các liên kết vô hƣớng giữa các nút thành một DAG đi sâu đến tận đích (bằng cách gán các hƣớng đi cho các liên kết).
- Duy trì tuyến (route maintenance): Mục tiêu của việc duy trì tuyến là để đảo ngƣợc lại vài liên kết tại các nút bị mất tất cả các đƣờng đi đến đích (do liên kết bị hỏng). Do vậy, mạng sẽ tự định hƣớng lại để duy trì một đƣờng đi đến đích.
- Giải phóng tuyến (route erase): Nếu mạng máy tính bị chia cắt ra các phần, kỹ thuật xoá tuyến sẽ xoá toàn bộ các phần không chứa các đích đến
3. Ghi nhớ:
TORA sử dụng cả 2 kỹ thuật đảo ngƣợc : đầy đủ (full), hay từng phần (partial) dựa theo kỹ thuật của giải thuật GB. Chiến lƣợc cơ bản là mỗi nút tự tìm ra một tuyến đi đến một trạm lân cận bất kỳ có tuyến hợp lệ đi đến đích. Các nút sẽ định nghĩa độ cao mới nếu chỉ khi không có trạm lận cận nào có tuyến hợp lệ.
- Tại một thời điểm bất kỳ và với mỗi tuyến đích đến, một bộ có thứ tự năm phần Hi đƣợc gắn với nút i trong tuyến : Hi = (i, oidi, ri, i, i). Trong đó:
o (i, oidi, ri): Xác định mức tham chiếu.
o (i, i) : xác định độ lệch (offset) quan hệ với mức tham chiếu.
- Một nút i sẽ định nghĩa lại mức tham chiếu mới (i, oidi, ri) mỗi khi mất
downstream cuối cùng của nó do liên kết hỏng. - Các thành phần của Hi bao gồm :
i : là thẻ thời gian đặt cho thời điểm nút i mất các liên kết. oidi : là định danh ID của nút định nghĩa mức tham chiếu mới.
ri : chỉ có một bít , ri = 0 chỉ định mức khởi đầu, ri = 1 chỉ định một mức phản hồi.
i : là số nguyên sử dụng để sắp trật tự các nút theo các mức tham chiếu. i : là tham số định danh ID của nút đích.
- Định nghĩa độ cao : Là một bộ năm thành phấn gắn với mỗi nút trong mạng, khi mạng giá trị sẽ làm cho tất cả các nút đƣợc sắp xếp theo trật tự từ cao đến thấp theo hƣớng đích đến của tuyến trong mọi thời điểm.
Ta cần bộ nămnày để quyết định nút nào là cao hơn trong trƣờng hợp mà độ cao của hai nút có thể giống nhau theo mức qui chiếu của chúng.
5. Khởi tạo độ cao :
Mỗi nút i (khác đích) lƣu giữ độ cao Hi của nó về đích đến. Quá trình khởi tạo đƣợc đặt nhƣ sau :
o Khởi tạo các tham số xác định độ cao của nút nguồn đƣợc đặt rỗng: Hi = ( - , - , - , - , i). i là địa chỉ nút nguồn
o Các tham số xác định độ cao của đích đến luôn đặt là 0: Hi = ( 0 , 0 , 0 , 0 , dest). dest là địa chỉ nút đích.
o Nút i lƣu giữ một mảng các độ cao HNi,jcho mỗi trạm lân cận j Ni .
6. Mảng các trạng thái liên kết:
o Khởi tạo độ cao của mỗi trạm lân cận đƣợc đặt là rỗng (null): HNi,j = ( - , - , - , - , j).
o Nếu đích đến là một trạm lân cận của nút i thì gán nhƣ sau : HNi, dest = (0, 0, 0, 0, dest).
o Trạng thái liên kết giữa nút i và nút lân cận j đƣợc mô tả bằng độ cao Hi và HNi, j theo hƣớng từ nút cao đến nút thấp hơn của độ cao. Có các trƣờng hợp sau:
Nếu độ cao của j cao hơn i thì liên kết từ i đến j là upstream (UP)
Nếu độ cao của j thấp hơn i thì liên kết từ i đến j là downstream (DN).
Nếu độ cao của các nút lân cận là trống, tức HNi, j là rỗng, thì liên kết là vô hƣớng undirect (UN).
Nếu độ cao của nút i là rỗng, và độ cao của một nút lân cận bất kỳ không rỗng thì nút độ cao của nút i đƣợc xem là thấp hơn và liên kết phù hợp là
downstream (DN)
Khi nút i có một nút lân cận j mới thì nút i xây dựng danh mục của j vào trong độ cao H và mảng cao độ HN của nó.
Các nút phải không trao đổi bất kỳ thông tin về độ cao trong khi hoạt động. 7.Quá trình tạo tuyến:
Giống nhƣ giải thuật LMR, việc tạo ra các tuyến yêu cầu 2 gói dữ liệu sử dụng là: QRY và UPD.
o Gói QRY có chứa trƣờng đích dest định danh cho các đích đến.
o Gói UPD có chứa trƣờng đích đến và và độ cao của nút i (Hi), i ở đây đang loan truyền (broadcasting) gói UPD.
o Mỗi nút i duy trì một cờ yêu cầu định tuyến RRi (khởi tạo là 0) vào thời gian nó loan truyền gói dữ liệu UPD cuối cùng.
o Khi một nút i với liên kết vô hƣớng và giá trị RRi = 0 có yêu cầu một tuyến đến đích, nó loan truyền một gói dữ liệu QRY và đặt RRi = 1. Có 4 trƣờng hợp nút i
Trƣờng hợp 1: nếu RRi = 1, i loại bỏ gói QRY, có nghĩa là i đã có gói dữ liệu QRY loan truyền đến đích rồi (i nhận lại chính gói dữ liệu nó loan truyền).
Trƣờng hợp 2: Nếu RRi = 0 và Hi là không rỗng với ri = 0 thì nút i phải gửi gói dữ liệu UPD nếu nó không thực hiện trƣớc đó. Nút i so sánh trực tiếp thời điểm khi nó loan truyền gói UPD cuối cùng với thời gian khi liên kết đƣợc kích hoạt dựa trên các gói QRY đƣợc nhận. Nếu gói dữ liệu UPD đƣợc gửi sau khi liên kết đƣợc kích hoạt thì không có hành động nào là cần thiết. Trƣờng hợp ngƣợc lại, i sẽ loan truyền gói dữ liệu UPD bao gồm cả độ cao hiện tại Hi của nó.
Trƣờng hợp 3: Nếu RRi = 0 và Hi của i là rỗng hoặc không rỗng với ri = 1, nhƣng lại có một trạm lân cận j có độ cao khác rỗng với rj = 0, nút i sẽ thực hiện nhƣ sau:
· Đặt độ cao của nó Hi = (i, oidi, ri, i + 1, i)
tại HNi,j = (j , oidj , rj, j, j) có độ cao nhỏ nhất của các trạm không rỗng của nó với rj = 0.
· Cập nhật tất cả các danh mục trong mảng trạng thái liên kết LS.
· Loan truyền một gói dữ liệu UPD có chứa cao độ mới Hi
Mục tiêu của trƣờng hợp 3 là:
· Nếu một nút i có độ cao là rỗng (null) hoặc nếu ri = 1, thì nút i đang giữ một độ cao không hợp lệ. Do đó, độ cao không hợp lệ của nút đƣợc cập nhật lại bằng cách lấy các độ cao hợp lệ Hjtừ các trạm lân cận và loan truyền các gói dữ liệu UPD.
· Ý tƣởng chính đƣợc thực hiện sau đây. nếu một trạm lân cận nào đó có độ cao hợp lệ thì nút i sẽ mƣợn độ cao này và tăng lên giá trị của
, hiệu quả thực tế là việc tạo ra một độ cao chênh lệch và liên kết xuôi downstream từ chính bản thân nút đó đến nút lân cận.
Trƣờng hợp 4: Nếu không có trường hợp nào trên xảy ra, RRi = 0 và không có trạm lân cận nào có độ cao hợp lệ thì nút i sẽ lại loan truyền gói dữ liệu QRY và đặt RRi = 1.
Trong trƣờng hợp này, không có trạm lân cận nào có một đƣờng đi hợp lên đến đích và đo đó gói dữ liệu QRY đƣợc loan truyền để tìm đƣờng đi. 8. Các hoạt động khi tuyến mới đƣợc thiết lập:
o Hoạt động khi thiết lập tuyến mới:
Mỗi khi nút i có một trạm lân cận j lập ra một liên kết mới, i loan truyền gói dữ liệu QRY trên liên kết i-j này với RRi = 1 để thực hiện tìm tuyến đến đích.
Việc này đảm bảo rằng quá trình tìm kiếm một tuyến mới đến đích tiếp tục thực hiện khi kiến trúc mạng thay đổi. Trƣớc đó, có thể nút nguồn phổ biến gói dữ liệu QRY (yêu cầu tuyến) nhƣng chƣa tìm thấy đích. Tuy nhiên, với liên kết mới đến j thì i có thể tìm thấy đích sớm hơn.
o Hoạt động khi nhận gói dữ liệu UPD: Khi nút i nhận đƣợc một gói dữ liệu UPD
từ một trạm lân cận j, nó cập nhật trực tiếp vào bảng danh mục HNi,j với Hj chứa trong gói dữ liệu UPD nhận đƣợc. Rồi sau đó nó thực hiện tiếp các việc sau đây, nếu RRi = 1,
HNi,j là rỗng, rj= 0 có nghĩa rằng trạm lân cận có một tuyến hợp lệ.
oCác hoạt động thực hiện bao gồm:
Đặt Hi= (i, oidi, ri, i + 1, i) tại nơi có Hj = (j, oidj, rj, j + 1, j) đó là đảo ngƣợc bộ phận.
Cập nhật tất cả các danh mục trong mảng trạng thái liên kết LS của nó.
Đặt RRi = 0
Loan truyền gói dữ liệu UPD có chứa độ cao mới Hi.
oMục tiêu của hoạt động:
Nếu nút i trƣớc đây không có tuyến thì khi nó nhận đƣợc một gói dữ liệu từ một trạm lân cận có chứa một tuyến hợp lệ (r = 0 chỉ định một tuyến hợp lệ) . Vì thế nút i
thiết lập một liên kết xuôi downstream với nút lân cận này khi giá trị là + 1.
Nút i cũng loan truyền gói dữ liệu UPD trong trƣờng hợp các nút lân cận khác của nó muốn có tuyến hợp lệ thông qua nó.
Nếu không có tình huống nào trên cần thực hiện, hoặc là tuyến không đƣợc yêu cầu, hoặc là các trạm lận cận không đề nghị tuyến hợp lệ thì nút i sẽ cập nhật danh mục LSi,j vào trong mảng trạng thái liên kết của nó. Đối với tình huống thứ hai có thể dẫn đến kết quả là mất đi các trạng thái liên kết xuối downstream của nó.
ví dụ minh hoạ:
Giả sử một hệ thống mạng bao gồm các nút di động A, B, C, D, E, G nhƣ hình 3.6a . Khi nút C yêu cầu tuyến đến nút đích là F, đầu tiên nó khởi tạo các thông số trong bộ năm của nó là H = ( - , - , - , - , C) trong khi bộ năm của nút đích Hf = ( 0 , 0 , 0 , 0 , F ) [16]. Hoạt động xảy ra là:
Nút có thông báoQRY( ) Nút thông báo UPD
0
i RR
Nút có thông báoQRY( ) Nút thông báo UPD
0 i RR (-,-,-,-,C) (-,-,-,-,A) (-,-,-,-,B) (-,-,-,-,D) (-,-,-,-,E) (0,0,0,0,F) (-,-,-,-,G) (-,-,-,-,H)
Nút có thông báoQRY( ) Nút thông báo UPD
0
i RR
Nút có thông báoQRY( ) Nút thông báo UPD
0 i RR (-,-,-,-,C) (-,-,-,-,A) (-,-,-,-,B) (-,-,-,-,D) (-,-,-,-,E) (0,0,0,0,F) (-,-,-,-,G) (-,-,-,-,H)
Nút có thông báoQRY( ) Nút thông báo UPD
0
i
RR
Nút có thông báoQRY( ) Nút thông báo UPD
0 i RR (-,-,-,-,C) (-,-,-,-,A) (-,-,-,-,B) (-,-,-,-,D) (-,-,-,-,E) (-,-,-,-,G) (-,-,-,-,H)
Nút có thông báoQRY( ) Nút thông báo UPD
0
i
RR
Nút có thông báoQRY( ) Nút thông báo UPD
0 i RR (-,-,-,-,C) (-,-,-,-,A) (-,-,-,-,B) (-,-,-,-,D) (-,-,-,-,E) (-,-,-,-,G) (-,-,-,-,H)
Hình 3.6.a: C phát yêu cầu tuyến Hình 3.6.b: Yêu cầu tuyến loan truyền
- C gửi yêu cầu tuyến đến F cho các nút lân cận A và G, khi đó A và G đều có thông báo QRY của C. Hình b mô tả trạng thái đó
- Các nút A, G tiếp tục loan truyền thông báo yêu cầu tuyến đến các nút lân cận B, D và H. H có chứa thông tin về tuyến đến F với các giá trị cập nhật về tuyến là ( 0, 0 , 0 , 1 , F), H sẽ gửi thông báo UPD đến các lân cận là B và G, trong khi thông báo QRY vẫn tiếp tục loan truyền đến nút E.
Nút có thông báoQRY( ) Nút thông báo UPD
0
i RR
Nút có thông báoQRY( ) Nút thông báo UPD
0 i RR (-,-,-,-,C) (-,-,-,-,A) (-,-,-,-,B) (-,-,-,-,D) (-,-,-,-,E) (0,0,0,0,F) (-,-,-,-,G) (0,0,0,1,H)
Nút có thông báoQRY( ) Nút thông báo UPD
0
i RR
Nút có thông báoQRY( ) Nút thông báo UPD
0 i RR (-,-,-,-,C) (-,-,-,-,A) (-,-,-,-,B) (-,-,-,-,D) (-,-,-,-,E) (0,0,0,0,F) (-,-,-,-,G) (0,0,0,1,H)
Nút có thông báoQRY( ) Nút thông báo UPD
0
i
RR
Nút có thông báoQRY( ) Nút thông báo UPD
0 i RR (-,-,-,-,C) (-,-,-,-,A) (0,0,0,2,B) (-,-,-,-,D) (0,0,0,1,E) (0,0,0,0,F) (0,0,0,2,G) (0,0,0,1,H)
Nút có thông báoQRY( ) Nút thông báo UPD
0
i
RR
Nút có thông báoQRY( ) Nút thông báo UPD
0 i RR (-,-,-,-,C) (-,-,-,-,A) (0,0,0,2,B) (-,-,-,-,D) (0,0,0,1,E) (0,0,0,0,F) (0,0,0,2,G) (0,0,0,1,H)
Hình 3.7.a: Xây dựng tuyến Hình 3. 7.b: Xây dựng tuyến
- Thông tin UPD của H truyền tiếp về C từ G, về A từ B, trong khi E chứa thông tin về tuyến đến F sẽ tạo tuyến (0,0,0,1, E) và truyền cho D.
- Kết quả C nhận thông tin về các tuyến đến F là ( 0 , 0 , 0 , 3 , C ) theo hình sau.
Nút có thông báoQRY( ) Nút thông báo UPD
0
i RR
Nút có thông báoQRY( ) Nút thông báo UPD
0 i RR (0,0,0,3,C) (0,0,0,0,A) (0,0,0,2,B) (0,0,0,2,D) (0,0,0,1,E) (0,0,0,0,F) (0,0,0,2,G) (0,0,0,1,H)
Nút có thông báoQRY( ) Nút thông báo UPD
0
i RR
Nút có thông báoQRY( ) Nút thông báo UPD
0 i RR (0,0,0,3,C) (0,0,0,0,A) (0,0,0,2,B) (0,0,0,2,D) (0,0,0,1,E) (0,0,0,0,F) (0,0,0,2,G) (0,0,0,1,H)
Hình 3.8: C nhận được tuyến xuôi dòng đến F