Khi cấu hình OSPF ở môi trường broadcast việc đầu tiên Router cần làm là bầu chọn DR/BDR để đồng bộ hóa database của tất cả các Router chạy OSPF khác trong area.
Như các bạn đã biết, quá trình 2 Router khởi chạy OSPF trải qua các bước sau:
1. Down State: Router chưa thiết lập được bất kì mối quan hệ nào với các Router khác. Lúc này Router mới chỉ gửi các gói hello ra địa chỉ multicast 224.0.0.5 (chú ý:sau khi có DR/BDR thì DR/BDR thông báo các thay đổi với DROTHERS qua 224.0.0.5, DROTHERS thông báo với DR/BDR qua 224.0.0.6).
2. Init: Các Router kết nối trực tiếp với Router gửi gói tin hello và add Router đó vào danh sách neighbor. Sau đó chúng sẽ gửi gói tin multicast reply cho router đã gửi gói tin hello. Trong trường Neighbor chứa tất cả các Router đã gửi gói tin hello (hình)
3. 2-way: tất cả các router đã có danh sách các neighbor và thiết lập mối quan hệ 2 chiều
Và quá trình bầu chọn DR/BDR xảy ra ở bước 2-way
4. Exstart: ở quá trình này, DR/BDR đã thiết lập tất adjacency với tất cả các Router khác. Sau đó thiết lập mối quan hệ master-slave (giữa từng DROTHERS với DR/BDR) để trao đổi các gói tin LSA khác
5. Exchange: trao đổi các gói tin DBD (database description) – để kiểm tra sự đồng bộ hóa LSDB giữa các Router.
6. Loading: gửi các gói tin LSAck để đồng bộ hóa database
7. Full: tất cả các Router có LSDB giống hệt nhau
Câu hỏi đặt ra là Router sẽ bầu chọn DR trước hay BDR trước?
Câu trả lời là các Router sẽ bầu chọn BDR trước. Mình sẽ giải thích quá trình đó chi tiết dưới đây, ngoài ra nếu có thời gian mình xin nêu 1 bài Lab cấu hình để kiểm tra điều này:
Xin nhắc lại là quá trình bầu chọn này thực hiện ở trạng thái 2-way khi các router đã trao đổi gói tin hello với nhau (tức là tất cả các router có danh sách neighbor giống hệt nhau)
1. OSPF chọn bất kì 1 router và kiểm tra danh sách neighbor của nó
2. Kiểm tra có router nào có priority = 0 hay không? Nếu có thì loại bỏ các router đó ra khỏi danh sách có thể bầu chọn
3. Sau khi có danh sách các router có priority # 0 sẽ thực hiện công việc chọn BDR theo thứ tự:
Priority cao nhất --> Router_ID cao nhất --> địa chỉ IP loopback cao nhất --> địa chỉ IP vật lý cao nhất
4. Kiểm tra xem OSPF đã bầu chọn DR chưa? Nếu đã có bầu chọn thì quá trình kết thúc; còn nếu ngược lại BDR sẽ trở thành DR và quay ngược lại thực hiện quá trình từ 1 --> 3 để tìm ra BDR
Như vậy là kết thúc quá trình bầu chọn DR/BDR cho OSPF rồi.
1.Tất cả các router tự xem nó là DR và BDR của mạng đó [thỏa dk priority > 0 và twoway]
2.Vì DR sẽ không thể là BDR được nên lựa ra những con nào không yêu cầu nó là DR [trong cùng subnet]
3.Nếu có một hoặc nhiều neighbor trong subnet mà có interface chúng nằm trong trường BDR, con có priority cao nhất sẽ được bầu.
Nếu bị trùng priority thì xét tiếp đến router ID cao nhất sẽ là BDR.
4
Nếu không có một hoặc nhiều neighbor trong subnet đó đòi làm BDR, con có priority cao nhất sẽ được bầu.
Nếu bị trùng priority thì xét tiếp đến router ID cao nhất.
5.Nếu có một hoặc nhiều neighbor trong sub mà có int chúng nằm trong trường DR, con có priority cao nhất sẽ được bầu.
Nếu bị trùng priority thì xét tiếp đến router ID cao nhất sẽ là DR.
6.
Nếu không có router nào là DR thì còn BDR được chọn gần đây nhất sẽ là DR [nguyên đám hồi nãy đã nằm hết trong subnet bầu chọn BDR nên bước 4 bầu chọn DR sẽ không thể có được]
Kế tiếp nó lại lặp lại bước 1 đến bước 2 đến bước 4 để chọn lại tiếp BDR.
Thêm 1 câu hỏi nữa: Tại sao trong 1 số trường hợp, Router có địa chỉ IP nhỏ nhất vẫn trở thành DR? (mặc định priority là 1)
Distance vector và link state
Khi ta học về giao thức distance vector thì router học đường đi nhờ neighbors [định tuyến theo tin đồn, neighbors bảo gì nghe nấy như RIP]. Giao thức distance chỉ tin cậy thông tin route của neighbor.
Học qua EIGRP thì có tiến bộ hơn tí là nó nghe tin đồn nhưng nó còn xác nhận lại để xem có đúng hay không [ở đây là xem đường nào tốt hơn]. EIGRP thì nhanh hơn nhưng chỉ hỗ trợ sản phẩm cisco.
Có một giao thức khác khá hơn 2 cái kia nhưng hơi tốn performance một chút, hỗ trợ đa chủng loại sản phẩm là OSPF. OSPF thì không nghe tin đồn như những giao thức kia mà nó lấy toàn bộ thông tin về state [trạng thái: links của router đó, interfaces, những neighbor của router đó, và trạng thái up/down,ip, subnet,…] của thằng gốc copy vào link state database của nó rồi tự tìm ra đường đi tốt nhất cho mình bằng thuật toán shortest-path-frist [hay còn gọi là Dijkstra].
Những con biên [ABR: area border router] nằm giữa nhiều biên có bản topology cho nhiều vùng khác nhau. Nó chỉ gửi tuyến route summary từ area khác ra cho area0 [backbone].
Nhưng trước khi trao đổi thông tin thì nó cần phải thiết lập một mối qua hệ gọi là neighbor. Quan hệ neighbor sẽ được thiết lập nhờ vào gói những gói hellos.
Khi router nhận gói hello từ neighbor thì nó kiểm tra:
Khi trở thành neighbor thì các router có thể trao đổi các gói update cho nhau. Nhưng nếu như vậy thì sẽ tốn một lượng băng thông rất lớn vì một con sẽ cần trao đổi với tất cả các con còn lại.
=> Có n(n-1)/2 các quan hệ gần [adjacencies] với nhau.
Vì vậy cần tồn tại một quá trình để bầu chọn con chính [DR], chỉ có con chính là quan hệ được với các con khác, và một con phụ là BDR để backup con chính khi nó chết.
Quá trình bầu chọn DR, BDR có thể xảy ra trên môi trường Broadcast và NBMA networks.
Quá trình hình thành full adjacency có thể diễn ra qua 7 quá trình cơ bản sau.
Có 2 router A và B với Router ID tương ứng là a và b.
1.Down state
Hai router mới gắn vào và cấu hình thì ở trạng thài Down state
[router không nhận được thông tin từ router cận kề]
2. Init State
Chỉ có 1 router gửi gói tin hello và router kia nhận được nhưng chưa biết router ID của chính nó nên chỉ là 1 chiều. [one way]
3. Two-way state
1 router gửi có router ID của nó, router kia nhận được và hồi đáp lại với router ID của nó. Ở trong trạng thái này nếu ở môi trường Ethernet [hay còn gọi là multiaccess, hoặc broadcast] cũng bầu chọn luôn DR và BDR.
**Router có ưu tiên lớn nhất là DR, lớn nhì là BDR.
Ưu tiên theo thứ tự sau:
Router có priotity là 0 thì không tham gia vào quá trình bầu chọn DR/BDR.
Như các bạn đã biết, quá trình 2 Router khởi chạy OSPF trải qua các bước sau:
Down State --> Init --> 2-way --> Exstart --> Exchange --> Loading --> Full.
1. Down State: Router chưa thiết lập được bất kì mối quan hệ nào với các Router khác. Lúc này Router mới chỉ gửi các gói hello ra địa chỉ multicast 224.0.0.5 (chú ý:sau khi có DR/BDR thì DR/BDR thông báo các thay đổi với DROTHERS qua 224.0.0.5, DROTHERS thông báo với DR/BDR qua 224.0.0.6).
2. Init: Các Router kết nối trực tiếp với Router gửi gói tin hello và add Router đó vào danh sách neighbor. Sau đó chúng sẽ gửi gói tin multicast reply cho router đã gửi gói tin hello. Trong trường Neighbor chứa tất cả các Router đã gửi gói tin hello (hình)
3. 2-way: tất cả các router đã có danh sách các neighbor và thiết lập mối quan hệ 2 chiều
Và quá trình bầu chọn DR/BDR xảy ra ở bước 2-way
4. Exstart: ở quá trình này, DR/BDR đã thiết lập tất adjacency với tất cả các Router khác. Sau đó thiết lập mối quan hệ master-slave (giữa từng DROTHERS với DR/BDR) để trao đổi các gói tin LSA khác
5. Exchange: trao đổi các gói tin DBD (database description) – để kiểm tra sự đồng bộ hóa LSDB giữa các Router.
6. Loading: gửi các gói tin LSAck để đồng bộ hóa database
7. Full: tất cả các Router có LSDB giống hệt nhau
Câu hỏi đặt ra là Router sẽ bầu chọn DR trước hay BDR trước?
Câu trả lời là các Router sẽ bầu chọn BDR trước. Mình sẽ giải thích quá trình đó chi tiết dưới đây, ngoài ra nếu có thời gian mình xin nêu 1 bài Lab cấu hình để kiểm tra điều này:
Xin nhắc lại là quá trình bầu chọn này thực hiện ở trạng thái 2-way khi các router đã trao đổi gói tin hello với nhau (tức là tất cả các router có danh sách neighbor giống hệt nhau)
1. OSPF chọn bất kì 1 router và kiểm tra danh sách neighbor của nó
2. Kiểm tra có router nào có priority = 0 hay không? Nếu có thì loại bỏ các router đó ra khỏi danh sách có thể bầu chọn
3. Sau khi có danh sách các router có priority # 0 sẽ thực hiện công việc chọn BDR theo thứ tự:
Priority cao nhất --> Router_ID cao nhất --> địa chỉ IP loopback cao nhất --> địa chỉ IP vật lý cao nhất
4. Kiểm tra xem OSPF đã bầu chọn DR chưa? Nếu đã có bầu chọn thì quá trình kết thúc; còn nếu ngược lại BDR sẽ trở thành DR và quay ngược lại thực hiện quá trình từ 1 --> 3 để tìm ra BDR
Như vậy là kết thúc quá trình bầu chọn DR/BDR cho OSPF rồi.
1.Tất cả các router tự xem nó là DR và BDR của mạng đó [thỏa dk priority > 0 và twoway]
2.Vì DR sẽ không thể là BDR được nên lựa ra những con nào không yêu cầu nó là DR [trong cùng subnet]
3.Nếu có một hoặc nhiều neighbor trong subnet mà có interface chúng nằm trong trường BDR, con có priority cao nhất sẽ được bầu.
Nếu bị trùng priority thì xét tiếp đến router ID cao nhất sẽ là BDR.
4
Nếu không có một hoặc nhiều neighbor trong subnet đó đòi làm BDR, con có priority cao nhất sẽ được bầu.
Nếu bị trùng priority thì xét tiếp đến router ID cao nhất.
5.Nếu có một hoặc nhiều neighbor trong sub mà có int chúng nằm trong trường DR, con có priority cao nhất sẽ được bầu.
Nếu bị trùng priority thì xét tiếp đến router ID cao nhất sẽ là DR.
6.
Nếu không có router nào là DR thì còn BDR được chọn gần đây nhất sẽ là DR [nguyên đám hồi nãy đã nằm hết trong subnet bầu chọn BDR nên bước 4 bầu chọn DR sẽ không thể có được]
Kế tiếp nó lại lặp lại bước 1 đến bước 2 đến bước 4 để chọn lại tiếp BDR.
Thêm 1 câu hỏi nữa: Tại sao trong 1 số trường hợp, Router có địa chỉ IP nhỏ nhất vẫn trở thành DR? (mặc định priority là 1)
OSPF củng cố kiến thức lại nào.
Distance vector và link state
Khi ta học về giao thức distance vector thì router học đường đi nhờ neighbors [định tuyến theo tin đồn, neighbors bảo gì nghe nấy như RIP]. Giao thức distance chỉ tin cậy thông tin route của neighbor.
Học qua EIGRP thì có tiến bộ hơn tí là nó nghe tin đồn nhưng nó còn xác nhận lại để xem có đúng hay không [ở đây là xem đường nào tốt hơn]. EIGRP thì nhanh hơn nhưng chỉ hỗ trợ sản phẩm cisco.
Có một giao thức khác khá hơn 2 cái kia nhưng hơi tốn performance một chút, hỗ trợ đa chủng loại sản phẩm là OSPF. OSPF thì không nghe tin đồn như những giao thức kia mà nó lấy toàn bộ thông tin về state [trạng thái: links của router đó, interfaces, những neighbor của router đó, và trạng thái up/down,ip, subnet,…] của thằng gốc copy vào link state database của nó rồi tự tìm ra đường đi tốt nhất cho mình bằng thuật toán shortest-path-frist [hay còn gọi là Dijkstra].
Những con biên [ABR: area border router] nằm giữa nhiều biên có bản topology cho nhiều vùng khác nhau. Nó chỉ gửi tuyến route summary từ area khác ra cho area0 [backbone].
Nhưng trước khi trao đổi thông tin thì nó cần phải thiết lập một mối qua hệ gọi là neighbor. Quan hệ neighbor sẽ được thiết lập nhờ vào gói những gói hellos.
Khi router nhận gói hello từ neighbor thì nó kiểm tra:
- Area ID
- Authentication
- Networkmask [subnet mask phải giống nhau]
- HelloInterval, DeadInterval timer [trong môi trường broadcast là hello 10’, và Nonbroadcast là 40’. DeadInterval gấp 4 lần hello]. Sau thời gian dead mà không nhận được hello thì bỏ neighbors.
- Cờ stub
- Và một số option cấu hình trên interface nhận vào gói hello.
Khi trở thành neighbor thì các router có thể trao đổi các gói update cho nhau. Nhưng nếu như vậy thì sẽ tốn một lượng băng thông rất lớn vì một con sẽ cần trao đổi với tất cả các con còn lại.
=> Có n(n-1)/2 các quan hệ gần [adjacencies] với nhau.
Vì vậy cần tồn tại một quá trình để bầu chọn con chính [DR], chỉ có con chính là quan hệ được với các con khác, và một con phụ là BDR để backup con chính khi nó chết.
Quá trình bầu chọn DR, BDR có thể xảy ra trên môi trường Broadcast và NBMA networks.
Quá trình hình thành full adjacency có thể diễn ra qua 7 quá trình cơ bản sau.
Có 2 router A và B với Router ID tương ứng là a và b.
1.Down state
Hai router mới gắn vào và cấu hình thì ở trạng thài Down state
[router không nhận được thông tin từ router cận kề]
2. Init State
Chỉ có 1 router gửi gói tin hello và router kia nhận được nhưng chưa biết router ID của chính nó nên chỉ là 1 chiều. [one way]
3. Two-way state
1 router gửi có router ID của nó, router kia nhận được và hồi đáp lại với router ID của nó. Ở trong trạng thái này nếu ở môi trường Ethernet [hay còn gọi là multiaccess, hoặc broadcast] cũng bầu chọn luôn DR và BDR.
**Router có ưu tiên lớn nhất là DR, lớn nhì là BDR.
Ưu tiên theo thứ tự sau:
- cấu hình priority [ip ospf priority]
- cấu hình router ID bằng lệnh [router ID]
- Loopback có IP cao nhất
- interface vật lí có IP cao nhất
Router có priotity là 0 thì không tham gia vào quá trình bầu chọn DR/BDR.
Đăng nhận xét