Tại sao bộ định tuyến này không sử dụng nhiều tuyến đường có chi phí bằng nhau từ OSPF?


16

Một bộ định tuyến thổ cẩm chạy NetIron 5.2 và mô phỏng Động lực chạy iOS 12.4 đều không thể sử dụng một cách đáng tin cậy các đường dẫn chi phí bằng nhau trong một cấu hình rất đơn giản. Tôi nói "đáng tin cậy" bởi vì tôi đã quan sát rất ngắn hành vi dự kiến ​​từ Thổ cẩm, nhưng đó là sau một thời gian dài không hoạt động và biến mất ngay khi tôi làm phiền hệ thống.

Trong trường hợp có liên quan, tôi đang thiết lập một điểm đến bất kỳ cho dịch vụ mạng không trạng thái. Đây sẽ là một cấu hình dành riêng cho trang web, có ít hoặc không có sự đa dạng về độ dài đường dẫn mạng, vì vậy mục đích của khả năng anycast chủ yếu là để dự phòng dự phòng và một phần để chia sẻ tải. Câu hỏi của tôi liên quan đến chức năng chia sẻ tải.

Mạng nguyên mẫu của tôi trông như thế này.

R1 <--N1--> Rcore <--N2--> R2

R1R2quảng cáo điểm đến anycast thông qua OSPF. Nếu Rcorecó chi phí giống hệt nhau trên các giao diện N1N2giao diện của nó và đích anycast có chi phí giống nhau ở mỗi bộ định tuyến khác, tôi sẽ tìm thấy hai đường dẫn chi phí bằng nhau trong Rcorebảng định tuyến. Tôi không, ít nhất là không luôn luôn, và thậm chí không dự đoán được. Tại sao không?

Trong số các chi tiết khác, có khả năng liên quan là sau đây.

  • Rcorelà một kết nối ABR N1N2, nằm trong các khu vực NSSA riêng biệt, đến xương sống (không được hiển thị).
  • Kiểm tra RcoreLSDB xác nhận rằng các LSA dự kiến ​​từ R1R2được cài đặt chính xác và chứa đích anycast với số liệu chính xác.

Tôi đã xem xét ba lời giải thích có thể.

  1. Tôi không hiểu cách định cấu hình và vận hành ECMP trên các nền tảng này. Điều này có khả năng, và tôi hy vọng sẽ tìm thấy sự giác ngộ ở đây mà tôi không thể tìm thấy trong các tài liệu của nhà cung cấp.
  2. Tôi không hiểu sự tương tác giữa các Khu vực OSPF, ECMP, anycast, v.v. Tôi không nghĩ điều này rất có thể, nhưng dù sao tôi cũng sẵn sàng học một cái gì đó.
  3. Hai nhà cung cấp này thực hiện cùng một lỗi, hoặc tính năng sai, hoặc một cái gì đó. Tôi cho rằng nó có thể xảy ra.

Chỉnh sửa Đã thêm cấu hình ví dụ và đầu ra để triển khai Dynamips / Dynagen.

Bánh kẹo

Bộ định tuyến R1

!
version 12.4
!
hostname R1
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
 ip ospf cost 1
!
interface FastEthernet0/0
 ip address 10.1.0.2 255.255.255.252
 ip ospf cost 2
!
router ospf 1
 router-id 10.1.0.2
 log-adjacency-changes
 area 0.0.0.1 nssa no-summary
 passive-interface Loopback0
 network 1.1.1.1 0.0.0.0 area 0.0.0.1
 network 10.1.0.0 0.0.0.3 area 0.0.0.1
!
line console 0
 exec-timeout 0 0
!
end

Bộ định tuyến R2

!
version 12.4
!
hostname R2
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
 ip ospf cost 1
!
interface FastEthernet0/0
 ip address 10.2.0.2 255.255.255.252
 ip ospf cost 2
!
router ospf 1
 router-id 10.2.0.2
 log-adjacency-changes
 area 0.0.0.2 nssa no-summary
 passive-interface Loopback0
 network 1.1.1.1 0.0.0.0 area 0.0.0.2
 network 10.2.0.0 0.0.0.3 area 0.0.0.2
!
line console 0
 exec-timeout 0 0
!
end

Bộ định tuyến Rcore

!
version 12.4
!
hostname Rcore
!
interface Loopback0
 ip address 10.0.0.1 255.255.255.255
 ip ospf cost 4
!
interface FastEthernet0/0
 ip address 10.1.0.1 255.255.255.252
 ip ospf cost 2
!
interface FastEthernet0/1
 ip address 10.2.0.1 255.255.255.252
 ip ospf cost 2
!
router ospf 1
 log-adjacency-changes
 area 0.0.0.1 nssa no-summary
 area 0.0.0.2 nssa no-summary
 passive-interface Loopback0
 network 10.0.0.1 0.0.0.0 area 0.0.0.0
 network 10.1.0.0 0.0.0.3 area 0.0.0.1
 network 10.2.0.0 0.0.0.3 area 0.0.0.2
!
line console 0
 exec-timeout 0 0
!
end

Đầu ra

Bộ định tuyến Rcore

Bộ định tuyến LSA từ R1

Rcore#sh ip ospf database router 10.1.0.2

            OSPF Router with ID (10.0.0.1) (Process ID 1)

        Router Link States (Area 0.0.0.1)

  LS age: 1618
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.1.0.2
  Advertising Router: 10.1.0.2
  LS Seq Number: 80000002
  Checksum: 0x726F
  Length: 48
  Number of Links: 2

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 1.1.1.1
     (Link Data) Network Mask: 255.255.255.255
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.1.0.2
     (Link Data) Router Interface address: 10.1.0.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 2

Bộ định tuyến LSA từ R2

Rcore#sh ip ospf database router 10.2.0.2

            OSPF Router with ID (10.0.0.1) (Process ID 1)

        Router Link States (Area 0.0.0.2)

  LS age: 1766
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.2.0.2
  Advertising Router: 10.2.0.2
  LS Seq Number: 80000002
  Checksum: 0x8A53
  Length: 48
  Number of Links: 2

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 1.1.1.1
     (Link Data) Network Mask: 255.255.255.255
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.2.0.2
     (Link Data) Router Interface address: 10.2.0.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 2

Bảng trích dẫn

Rcore#sh ip route 1.1.1.1
Routing entry for 1.1.1.1/32
  Known via "ospf 1", distance 110, metric 3, type intra area
  Last update from 10.1.0.2 on FastEthernet0/0, 00:30:54 ago
  Routing Descriptor Blocks:
  * 10.1.0.2, from 10.1.0.2, 00:30:54 ago, via FastEthernet0/0
      Route metric is 3, traffic share count is 1

Loại tuyến nào là anycast?
nicotine

@nicotine: Địa chỉ anycast là địa chỉ phụ trên giao diện loopback. Trong hoán vị mới nhất của cấu hình này, nó kết thúc như một mạng sơ khai trong Bộ định tuyến LSA. Cấu hình đoạn mã và thiết bị đầu cuối lấy để làm theo.
neirbowj

Tôi đã cố gắng loại bỏ cấu hình và đầu ra càng nhiều càng tốt nhưng không quá nhiều. Đề xuất cải thiện mật độ thông tin được hoan nghênh.
neirbowj

Điều này nên làm việc. Bạn có thể gửi đầu ra từ các lệnh sau: show ip Protocol show ip ospf rib debug ip định tuyến Hãy thử các lệnh này trên Rcore. Điều này sẽ cung cấp cho chúng tôi một số manh mối về lý do tại sao các tuyến đường kép không được cài đặt. Đầu ra OSPF DB của bạn trông ổn đối với tôi.
Daniel Dib

Nếu bạn thoát liên kết của tuyến đang hoạt động thì nó vẫn thích tuyến ban đầu chứ? Ví dụ: Trong đầu ra CLI của bạn, nó hiển thị tuyến đường hoạt động hướng tới 10.1.0.2. Nếu bạn đóng giao diện thành 10.1.0.2 đủ lâu để tính năng bảo vệ OSPF bị hỏng thì hãy đưa nó trở lại trực tuyến, tuyến đường ban đầu hướng tới 10.1.0.2 có được cài đặt lại không?
đá lớn

Câu trả lời:


7

Suy nghĩ đầu tiên của tôi là OSPF đang nghĩ đó là cùng một LSA thay vì chỉ đơn giản là cùng một tiền tố. Tôi không biết nhiều về thổ cẩm, nhưng với đầu ra LSA từ hộp Cisco, tôi có thể có thể nói với bạn nhiều hơn.

Nói chung, đối với Cisco, nếu các tuyến bằng nhau trong giao thức, cả hai sẽ được trình bày cho bảng định tuyến. Bảng định tuyến, theo mặc định, sẽ cài đặt cả hai đường dẫn và thực hiện ECMP. Nếu số liệu hoặc giao thức khác nhau, chúng sẽ không ECMP. Điều này cũng sẽ áp dụng cho các LSA khác nhau cho cùng một tiền tố.


Đúng - các mục cơ sở dữ liệu sẽ cho chúng tôi biết - chúng có cùng địa chỉ chuyển tiếp và bộ định tuyến quảng cáo không?
nicotine

Tôi sẽ làm việc để có được đầu ra mẫu chiều nay.
neirbowj

6

Tôi đang xem xét liệu ECMP có ý nghĩa cho anycast không. Việc định tuyến sẽ hướng anycast đến đích gần nhất về mặt logic trong đó một máy chủ sẽ được ưu tiên hơn các máy chủ khác. Ngay cả trong trường hợp các máy chủ anycast tương đương nhau, tôi vẫn mong điều này vẫn đúng. Đối với chia sẻ tải ECMP, tôi nghĩ rằng mỗi điểm đến là không thể với a / 32. Có lẽ có các thuật toán chia sẻ tải xem xét nguồn. Mỗi gói có vẻ rủi ro, ngay cả đối với DNS. Tôi tin rằng hầu hết các giải pháp anycast ngoài luồng đều chạy ospf trên máy chủ.

Mất một chút tìm kiếm, nhưng đoạn trích sau từ rfc2178 xác nhận nguyên nhân.

16.8. Đa chi phí bằng nhau

Giao thức OSPF duy trì nhiều tuyến có chi phí bằng nhau đến tất cả các điểm đến. Điều này có thể được nhìn thấy trong các bước được sử dụng ở trên để tính toán bảng định tuyến và trong định nghĩa của cấu trúc bảng định tuyến.

Mỗi một trong nhiều tuyến đường sẽ cùng loại (nội bộ, liên khu vực, loại 1 bên ngoài hoặc loại 2 bên ngoài), chi phí và sẽ có cùng một khu vực liên quan . Tuy nhiên, mỗi tuyến chỉ định một bộ định tuyến hop và Advertising tiếp theo riêng biệt.


1
Hmm, tôi đã thử nghiệm một khu vực duy nhất và ECMP có mặt trên lõi. Mặc dù, tôi vẫn sẽ cho rằng nó vô dụng với a / 32. Có lẽ những điều sau đây có liên quan: morse.colorado.edu/~tlen5710/12s/OSPF.pdf
Dennis Olvany

Điều này nói rằng khu vực đó là một trong những tiêu chí cho ECMP. Có vẻ như các khu vực khác nhau có thể là người giải quyết.
Dennis Olvany

OSPF trên máy chủ - vâng, đây là mục tiêu. / 32 được chỉ định làm địa chỉ phụ trên loopback. Tôi cũng đang xem xét cấu hình chia sẻ tải, nhưng điều đó phụ thuộc vào ECMP ở nơi đầu tiên.
neirbowj

5

Tôi không thể tái tạo điều này trong phòng thí nghiệm của mình, sử dụng 12.4 (24). Cùng cấu trúc liên kết, RCore khu vực 0 loopback, R1 với lo0 và giao diện trong khu vực 1, R2 với lo0 và giao diện trong khu vực 2 (cả NSSA), tuyến đường được phân phối lại được chọn cho ECMP trên Rcore:

Routing entry for 10.20.0.0/16
  Known via "ospf 1", distance 110, metric 20, type NSSA extern 2, forward metric 6477
  Last update from 2.2.2.6 on Serial1/1, 00:02:23 ago
  Routing Descriptor Blocks:
    2.2.2.6, from 2.2.2.21, 00:02:23 ago, via Serial1/1
      Route metric is 20, traffic share count is 1
  * 1.1.2.1, from 1.1.1.1, 00:06:31 ago, via Serial1/0
      Route metric is 20, traffic share count is 1

Các khả năng tôi có thể nghĩ đến: Tùy thuộc vào cách tuyến đường được đưa vào OSPF và loại tuyến đường OSPF nào được sử dụng, chi phí cho bộ định tuyến ASBR có thể / có thể không được tính vào quy trình chọn tuyến đường (để ECMP hoạt động, cả chi phí tuyến và chi phí để ASBR phải phù hợp). Xem số liệu về LSA thực tế cho cả hai có thể giúp đỡ.

Tôi đã có thể tái tạo điều này trên iOS bằng cách bắt chước cấu hình của bạn - đặt anycast trên một giao diện và đặt giao diện vào một khu vực. Nếu bạn cần ECMP, hãy xem xét phân phối lại tuyến đường vào OSPF, vì điều đó dường như hoạt động.


FWIW, hình ảnh trong ví dụ Động lực của tôi là 12,4 (25đ) trên 7200. Kết quả của bạn hiển thị "Được biết qua ... NSSA extern 2" nhưng của tôi hiển thị "vùng bên trong". Đó là một manh mối tốt.
neirbowj

Phân phối lại được kết nối sẽ tạo ra điều đó thay vì sử dụng lệnh mạng hoặc ip ospf trong giao diện.
Daniel Dib

@DanielDib Tôi đang trong quá trình sử dụng các hoán vị bình thường / stub / nssa, nội bộ / bên ngoài và ít nhất là Cisco + Dynamips / Brocade. Tôi cũng sẽ thử Juniper, nếu tôi có thời gian.
neirbowj

3

Tùy thuộc vào phần cứng thổ cẩm nào bạn đang sử dụng (MLX? CER? XMR?), Bạn có thể muốn cập nhật phần mềm. Có một số lỗi được khắc phục trong phần mềm 5.3 (và 5.4 tùy thuộc vào phần cứng của bạn), các triệu chứng liên quan đến chi phí tuyến đường OSPF không được cập nhật đúng. Tôi không biết tất cả các tiêu chí để xem lỗi, nhưng một vài trong số đó là: Nếu chi phí được thay đổi trên cổng 1gig hoặc giao diện loopback trên bộ định tuyến chạy OSPF, thay đổi không được xử lý và chi phí không được cập nhật .

Tôi nhận thấy bạn đang thấy điều này trên nền tảng của hai nhà sản xuất, vì vậy đây có thể là vấn đề về cấu hình. Tôi cũng nhận ra rằng "cập nhật phần mềm" hỗ trợ công nghệ cũ thường có thể không có giá trị gì hơn là một con mắt. Điều đó nói rằng, nó có thể là một cái gì đó để ghi nhớ.


Tôi sẽ ghi nhớ điều này. Tuy nhiên, R1 / R2 đặt chi phí, Rcore thấy chi phí và Rcore biểu hiện các triệu chứng ECMP.
neirbowj
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.