Quá trình thiết lập mối quan hệ giữa các neighbor (adjacency)

Một phần của tài liệu Giao thức định tuyến OSPF cho IPv6 (Trang 27 - 30)

CHƯƠNG I : TỔNG QUAN VỀ GIAO THỨC ĐỊNH TUYẾN OSPF

1.3 Giao thức định tuyến OSPF cho IPv4 (OSPFv2)

1.3.9 Quá trình thiết lập mối quan hệ giữa các neighbor (adjacency)

OSPF thiết lập quan hệ thân mật adjacency giữa các neighbor nhằm mục đích trao đổi thơng tin định tuyến. Các neighbor trong các mạng Point to Point, Point to Multipoint, và liên kết ảo luôn thiết lập adjacency với nhau trừ khi tham số trong các gói hello của chúng khơng phù hợp.

Trong các mạng broadcast và NBMA, DR và BDR sẽ thiết lập adjacency với tất cả các neighbor cịn các DRother sẽ khơng thiết lập adjacency với các DRother khác.

Gói DD đặc biệt quan trọng trong q trình xây dựng adjacency. Các gói DD sẽ chứa header của các LSA trong cơ sở dữ liệu trạng thái liên kết của router gốc. Router nhận sẽ nhận các gói DD và kiểm tra các header này xem nó đã có bản copy mới nhất của LSA trong cơ sở dữ liệu của nó chưa. Gói DD cịn chứa ba cờ dùng để quản lý q trình xây dựng adjacency, đó là:

• Bit I: I=1 chỉ ra đây là gói DD đầu tiên gửi tới.

• Bit M: M=1 chỉ ra đây khơng phải là gói DD cuối cùng được gửi.

• Bit MS: MS=1 chỉ ra gói DD được gửi từ router là master.

Khi cuộc đàm phán Master/Slave bắt đầu ở trạng thái Exstart, cả hai neighbor sẽ cùng yêu cầu trở thành Master bằng cách gửi một gói DD rỗng với bit MS=1. Neighbor có Router ID thấp hơn sẽ là Slave và truyền trở lại gói DD có MS=0, số trình tự DD được thiết lập theo số trình tự của Master. Gói DD này sẽ là gói DD đầu tiên chứa bản tóm tắt các LSA. Khi cuộc đàm phàn Master/Slave hoàn thành, neighbor sẽ chuyển sang trạng thái Exchange.

Ở trạng thái Exchange, các neighbor sẽ tiến hành đồng bộ cơ sở dữ liệu. Danh sách tóm tắt cơ sở dữ liệu cùng với các header của tất cả các LSA được ghi vào trong cơ sở dữ liệu của router. Các gói DD chứa danh sách các header của các LSA được gửi tới neighbor.

Nếu một router thấy neighbor của nó có LSA khơng có trong cơ sở dữ liệu của nó, hoặc có bản copy của một LSA nào đó mới hơn, nó sẽ đặt LSA này vào danh sách yêu cầu trạng thái liên kết. Sau đó nó gửi gói yêu cầu trạng thái liên kết để yêu cầu bản copy của LSA này. Các gói cập nhật trạng thái liên kết sẽ vận chuyển các LSA này tới router. Khi nhận được các LSA yêu cầu, router sẽ xóa các header của các LSA nhận được khỏi danh sách yêu cầu trạng thái liên kết.

Tất cả các LSA được gửi đi trong gói cập nhật trạng thái liên kết phải được xác nhận. Do vậy, các LSA đã gửi đi sẽ được ghi vào danh sách gửi lại trạng thái liên kết. Khi một LSA được xác nhận, nó sẽ được xóa khỏi danh sách này. LSA có thể được xác nhận theo 2 cách:

• Khi nhận được gói xác nhận trạng thái liên kết chứa LSA header

• Khi nhận được gói cập nhật trạng thái liên kết chứa phiên bản LSA giống hệt với phiên bản đã gửi

Master sẽ điều khiển quá trình đồng bộ cơ sở dữ liệu trạng thái liên kết và đảm bảo chỉ có gói DD được gửi đi vào thời điểm đó. Khi Slave nhận một gói DD từ Master, Slave xác nhận việc nhận gói DD bằng cách gửi một gói DD có cùng số trình tự tới Master. Nếu Master không nhận được xác nhận trong khoảng thời gian RxmtInterval, nó sẽ gửi tiếp bản copy của gói đó đến Slave. Slave gửi các gói DD chỉ để xác nhận các gói DD mà nó nhận từ Master. Nếu gói DD nhận được có số trình tự mới, Slave sẽ gửi gói DD xác nhận có cùng số trình tự với gói này. Nếu số trình tự của gói nhận được giống với gói xác nhận trước đó thì gói xác nhận được truyền lại.

Khi q trình đồng bộ hồn tất, sẽ xảy ra một trong hai sự chuyển đổi trạng thái sau:

• Nếu trong danh sách yêu cầu trạng thái liên kết vẫn còn các LSA theo yêu cầu, router sẽ chuyển trạng thái của neighbor sang trạng thái loading.

• Nếu danh sách yêu cầu trạng thái liên kết rỗng, router sẽ chuyển trạng thái của neighbor sang trạng thái Full.

Đồng thời, Master sẽ gửi tất cả các gói DD cần thiết để mơ tả cơ sở dữ liệu trạng thái liên kết của nó tới Slave và nhận được gói DD với bit M=0. Và Slave biết rằng quá trình đồng bộ đã hồn tất khi nó nhận được gói DD có bit M=0 và gửi một gói DD xác nhận có bit M cũng bằng 0.

R 1 R 2 H e l l o p a c k e t , k h o ân g c h o ïn D R D o w n D o w n I n it H e l l o p a c k e t , b a àu c h o ïn D R I n it R 1 R 2 D a t a b a s e D e s c r i p t io n P a c k e t c h ö a c h o ïn M a s t e r E x S t a r t D a t a b a s e D e s c r i p t i o n P a c k e t c h ö a c h o ïn M a s t e r E x S t a r t R 1 R 2 C h o ïn M a s t e r g ô ûi D a t a b a s e D e s c r i p t i o n E x c h a n g e G ô ûi D a t a b a s e D e s c r i p t i o n E x c h a n g e R 1 R 2 G ô ûi L in k S t a t e r e q u e s t v a ø L i n k S t a t e U p d a t e L o a d in g L o a d in g G ô ûi L in k S t a t e r e q u e s t v a ø L i n k S t a t e U p d a t e R 1 R 2 C a äp n h a ät D a t a b a s e F u ll F u ll C a äp n h a ät D a t a b a s e

Hình 1.10 Quá trình thiết lập Adjacency

Cụ thể, quá trình đồng bộ cơ sở dữ liệu giữa router R1 và R2 theo hình 1.10 bao gồm những bước sau:

• Router R1 được kích hoạt trong mạng đa truy nhập và gửi một gói Hello. Do nó chưa có thơng tin về neighbor nào, nên trường neighbor của gói hello là rỗng, trường DR và BDR được thiết lập bằng 0.

• R2 nhận được gói Hello từ R1, nó tạo một cấu trúc dữ liệu neighbor cho R1 và chuyển trạng thái của R1 sang Init. Sau đó, R2 sẽ gửi một gói Hello chứa Router ID của R1 trong trường neighbor và địa chỉ giao diện của nó trong trường DR.

• Khi nhận được gói hello từ R2, R1 sẽ tạo một cấu trúc dữ liệu neighbor cho R2 và chuyển trạng thái của R2 sang Exstart để chuẩn bị cho việc đàm phán Master/Slaver. Sau đó nó tạo một gói DD rỗng với số trình tự giả sử là x, bit I = 1 (chỉ ra rằng đây là gói DD đầu tiên của R1), bit M = 1 (chỉ ra đây khơng phải là gói DD cuối cùng), bit MS = 1 (chỉ ra rằng R1 muốn là Master).

• Trong q trình nhận gói DD, R2 chuyển trạng thái của R1 sang Exstart. Sau đó, nó gửi một gói DD phản hồi có số trình tự giả sử là y. Giả sử R2 có Router ID cao hơn R1, nó đặt bit MS = 1. Gói DD này cũng rỗng như gói DD đầu tiên.

• R1 chấp nhận R2 là Master và chuyển trạng thái của R2 sang Exchange. Đồng thời nó tạo ra một gói DD có số trình tự bằng y, bit MS = 0 (chỉ ra nó là Slave). Gói này sẽ chứa các LSA header có trong danh sách tóm tắt trạng thái liên kết của R1.

• R2 chuyển trạng thái của R1 sang trạng thái Exchange trong khi nhận gói DD của R1. Sau đó, nó sẽ gửi một gói DD có chứa các LSA header có trong danh sách trạng thái liên kết của nó và tăng số trình tự gói DD lên một đơn vị: y + 1.

• R1 gửi một gói xác nhận với số trình tự là y + 1 tới R2. Quá trình cứ tiếp tục như vậy. Khi R2 gửi gói DD với các LSA header cuối cùng trong danh sách tóm tắt trạng thái liên kết của nó, nó sẽ đặt bit M = 0 (chỉ ra đây là gói DD cuối cùng được gửi).

• R1 nhận được gói cuối cùng này và biết rằng q trình Exchange đã hồn tất. Lúc này, R1 đã có các LSA cần thiết trong danh sách yêu cầu trạng thái liên kết của nó. Nó chuyển R2 sang trạng thái Loading và gửi gói xác nhận chứa các LSA header cuối cùng của nó.

• Khi nhận được gói DD cuối cùng của R1, R2 chuyển trạng thái của R1 sang Full vì nó khơng cịn LSA nào trong danh sách yêu cầu trạng thái liên kết.

• R1 gửi các gói yêu cầu trạng thái liên kết đến R2. R2 sẽ gửi các gói cập nhật trạng thái liên kết có chứa các LSA theo yêu cầu của R1 cho đến khi danh sách yêu cầu trạng thái liên kết của R1 rỗng. Sau đó, R1 sẽ chuyển trạng thái của R2 sang Full.

Một phần của tài liệu Giao thức định tuyến OSPF cho IPv6 (Trang 27 - 30)