เหตุใดเราเตอร์นี้จึงล้มเหลวในการใช้เส้นทางที่หลากหลายและราคาเท่ากันจาก OSPF


16

เราเตอร์ Brocade ที่ใช้ NetIron 5.2 และการจำลอง Dynamips ที่ใช้ IOS 12.4 นั้นล้มเหลวในการใช้เส้นทางต้นทุนที่เท่าเทียมกันในสิ่งที่ดูเหมือนว่าจะเป็นการกำหนดค่าที่ง่ายมาก ฉันพูดว่า "พึ่งพา" เพราะฉันสังเกตเห็นพฤติกรรมที่คาดหวังจากโบรเคดเป็นระยะเวลาสั้น ๆ แต่มันก็เกิดขึ้นหลังจากที่ไม่มีการใช้งานนานและหายไปทันทีที่ฉันรบกวนระบบ

ในกรณีที่มีความเกี่ยวข้องฉันกำลังตั้งค่าปลายทางปลายทางใด ๆ สำหรับบริการเครือข่ายไร้สัญชาติ นี่จะเป็นการกำหนดค่าเฉพาะของไซต์ที่มีความหลากหลายของความยาวเส้นทางเครือข่ายน้อยหรือไม่มีเลยดังนั้นจุดประสงค์ของความสามารถในการออกอากาศใด ๆ นั้นส่วนใหญ่จะใช้สำหรับการทำซ้ำซ้อนที่ล้มเหลวและส่วนหนึ่งสำหรับการแบ่งปันภาระ คำถามของฉันเกี่ยวข้องกับฟังก์ชั่นการแบ่งปันโหลด

เครือข่ายต้นแบบของฉันมีลักษณะเช่นนี้

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

R1และR2โฆษณาปลายทางใด ๆ ที่ออกอากาศผ่าน OSPF หากRcoreมีค่าใช้จ่ายเท่ากันสำหรับบนN1และN2อินเทอร์เฟซและปลายทาง anycast มีราคาเท่ากันที่แต่ละเราเตอร์อื่น ๆ ฉันคาดว่าจะพบเส้นทางต้นทุนสองเส้นทางที่เท่ากันในRcoreตารางเส้นทาง อย่างน้อยก็ไม่เสมอไปและไม่สามารถคาดเดาได้ ทำไมจะไม่ล่ะ?

รายละเอียดอื่น ๆ ที่เกี่ยวข้องมีดังนี้

  • Rcoreเป็นการเชื่อมต่อ ABR N1และN2ซึ่งอยู่ในพื้นที่ NSSA แยกจากกันไปยังกระดูกสันหลัง (ไม่แสดง)
  • การตรวจสอบRcoreLSDB ยืนยันว่า LSAs ที่คาดหวังมาจากR1และR2ได้รับการติดตั้งอย่างถูกต้องและมีปลายทาง anycast ด้วยตัวชี้วัดที่ถูกต้อง

ฉันได้พิจารณาคำอธิบายที่เป็นไปได้สามข้อ

  1. ฉันไม่เข้าใจวิธีกำหนดค่าและใช้งาน ECMP บนแพลตฟอร์มเหล่านี้ นี่เป็นไปได้และฉันหวังว่าจะพบการรู้แจ้งที่นี่ซึ่งฉันไม่พบในเอกสารของผู้ขาย
  2. ฉันไม่เข้าใจการมีปฏิสัมพันธ์ระหว่างพื้นที่ OSPF, ECMP, anycast, ฯลฯ ฉันไม่คิดว่ามันน่าจะเป็นไปได้มาก แต่ฉันพร้อมที่จะเรียนรู้บางสิ่งอยู่แล้ว
  3. การใช้งานของผู้ขายสองรายนี้ประสบปัญหาข้อผิดพลาดเดียวกันหรือคุณลักษณะที่ผิดหรือบางอย่าง ฉันคิดว่ามันอาจเกิดขึ้น

แก้ไขเพิ่มตัวอย่างการกำหนดค่าและการส่งออกสำหรับการนำ Dynamips / Dynagen

configs

Router 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

Router 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

Router 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

เอาท์พุต

Router Rcore

เราเตอร์ LSA จาก 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

เราเตอร์ LSA จาก 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

ตารางที่ตัดตอนมาตัดตอน

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

anycast คือทางใด?
นิโคติน

@ นิโคติน: ที่อยู่ anycast เป็นที่อยู่สำรองในอินเทอร์เฟซย้อนกลับ ในการเปลี่ยนแปลงล่าสุดของการกำหนดค่านี้มันจะกลายเป็นเครือข่ายต้นขั้วในเราเตอร์ LSA กำหนดค่าตัวอย่างและคว้าเทอร์มินัลที่จะปฏิบัติตาม
neirbowj

ฉันพยายามตัดการกำหนดค่าและเอาท์พุทให้ได้มากที่สุด แต่ไม่มากเกินไป ข้อเสนอแนะเพื่อปรับปรุงความหนาแน่นของข้อมูลยินดีต้อนรับ
neirbowj

สิ่งนี้น่าจะใช้ได้ คุณสามารถโพสต์เอาต์พุตจากคำสั่งต่อไปนี้: show ip protocol แสดง ip ospf rib debug ip routing ลองคำสั่งเหล่านี้บน Rcore สิ่งนี้จะให้เบาะแสบางอย่างแก่เราว่าทำไมไม่ติดตั้งเส้นทางสองทาง เอาต์พุต OSPF DB ของคุณดูดีสำหรับฉัน
Daniel Dib

หากคุณเด้งลิงค์ของเส้นทางที่ใช้งานอยู่มันยังคงต้องการเส้นทางเดิมอยู่หรือไม่? ตัวอย่างเช่น: ในเอาต์พุต CLI ของคุณจะแสดงเส้นทางที่ใช้งานชี้ไปที่ 10.1.0.2 หากคุณปิดอินเทอร์เฟซไปที่ 10.1.0.2 นานพอที่จะทำให้การแยกแยะ OSPF หยุดชะงักให้นำเส้นทางเดิมกลับสู่ออนไลน์ 10.1.0.2 เพื่อติดตั้งใหม่ได้หรือไม่
bigmstone

คำตอบ:


7

ความคิดแรกของฉันคือ OSPF กำลังคิดว่ามันเป็น LSA เดียวกันแทนที่จะเป็นเพียงคำนำหน้าเหมือนกัน ฉันไม่รู้อะไรเกี่ยวกับผ้า แต่ด้วยผลลัพธ์ LSA จากกล่อง Cisco ฉันอาจบอกคุณมากกว่านี้

โดยทั่วไปสำหรับซิสโก้หากเส้นทางมีความเท่าเทียมกันในโปรโตคอลพวกเขาทั้งสองจะถูกนำเสนอในตารางเส้นทาง โดยปกติตารางเส้นทางจะติดตั้งทั้งพา ธ และทำ ECMP หากการวัดหรือโปรโตคอลแตกต่างกันจะไม่ ECMP สิ่งนี้จะนำไปใช้กับ LSAs ที่แตกต่างกันสำหรับคำนำหน้าเดียวกัน


ใช่ - รายการฐานข้อมูลควรบอกเรา - พวกเขามีที่อยู่สำหรับส่งต่อและเราเตอร์โฆษณาเดียวกันหรือไม่
นิโคติน

ฉันจะพยายามหาตัวอย่างผลลัพธ์เมื่อบ่ายนี้
neirbowj

6

ฉันกำลังพิจารณาว่า ECMP เหมาะสมสำหรับการออกอากาศหรือไม่ การกำหนดเส้นทางควรส่ง anycast ไปยังปลายทางที่ใกล้เคียงที่สุดอย่างมีเหตุผลซึ่งโฮสต์หนึ่งจะได้รับการสนับสนุนมากกว่าโฮสต์อื่น แม้ในกรณีที่โฮสต์ที่มีการออกอากาศใด ๆ มีระยะเท่ากันฉันก็ยังคาดหวังว่าสิ่งนี้จะยังคงเป็นจริง สำหรับการแบ่งปัน ECMP ฉันคิดว่าต่อปลายทางไม่สามารถทำได้ด้วย / 32 อาจมีอัลกอริธึมการแบ่งปันโหลดที่พิจารณาแหล่งที่มา แต่ละแพ็กเก็ตมีความเสี่ยงแม้กระทั่ง DNS ฉันเชื่อว่าโซลูชัน anycast แบบนอกกรอบส่วนใหญ่จะใช้ ospf บนโฮสต์

เอาการค้นหาเล็กน้อย แต่ข้อความที่ตัดตอนมาต่อไปนี้จากrfc2178ยืนยันสาเหตุ

16.8 multipath ต้นทุนเท่ากัน

โปรโตคอล OSPF รักษาเส้นทางที่มีค่าใช้จ่ายเท่ากันหลายเส้นทางไปยังปลายทางทั้งหมด สิ่งนี้สามารถเห็นได้ในขั้นตอนที่ใช้ด้านบนเพื่อคำนวณตารางเส้นทางและในคำจำกัดความของโครงสร้างตารางเส้นทาง

หนึ่งในหลายเส้นทางแต่ละคนจะเป็นประเภทเดียวกัน (พื้นที่ภายในพื้นที่ระหว่างกันพิมพ์ 1 ภายนอกหรือพิมพ์ 2 ภายนอก) ค่าใช้จ่ายและจะมีพื้นที่ที่เกี่ยวข้องเดียวกัน อย่างไรก็ตามแต่ละเส้นทางจะระบุเราเตอร์โฆษณาและ hop ถัดไปแยกต่างหาก


1
อืมฉันออกห้องทดลองเพียงจุดเดียวและมี ECMP อยู่บนแกน แม้ว่าฉันจะยังคงยืนยันว่ามันไม่มีประโยชน์กับ / 32 บางทีสิ่งต่อไปนี้อาจเกี่ยวข้อง: morse.colorado.edu/~tlen5710/12s/OSPF.pdf
Dennis Olvany

นี่บอกว่าพื้นที่นั้นเป็นหนึ่งในเกณฑ์ของ ECMP ดูเหมือนว่าพื้นที่ที่แตกต่างกันอาจเป็นผู้ทำลาย
Dennis Olvany

OSPF บนโฮสต์ - ใช่นี่คือเป้าหมาย / 32 กำหนดให้เป็นที่อยู่รองในลูปแบ็ค ฉันกำลังมองหาการกำหนดค่าการแบ่งปันโหลดด้วย แต่ขึ้นอยู่กับ ECMP ตั้งแต่แรก
neirbowj

5

ฉันทำสิ่งนี้ซ้ำในแล็บของฉันไม่ได้โดยใช้ 12.4 (24) โทโพโลยีเดียวกัน, RCore area 0 loopback, R1 ที่มี lo0 และอินเตอร์เฟสในพื้นที่ 1, R2 กับ lo0 และอินเตอร์เฟสในพื้นที่ 2 (ทั้ง NSSA), เส้นทางการแจกจ่ายซ้ำถูกหยิบขึ้นมาสำหรับ ECMP บน 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

ความเป็นไปได้ที่ฉันสามารถนึกได้: ขึ้นอยู่กับว่าเส้นทางนี้นำมาใช้เป็น OSPF อย่างไรและประเภทของเส้นทางที่ใช้ใน OSPF คือต้นทุนเราเตอร์ ASBR อาจ / อาจไม่ได้รับปัจจัยในกระบวนการเลือกเส้นทาง (สำหรับ ECMP ในการทำงาน และค่าใช้จ่ายที่ ASBR ต้องตรงกัน) การดูตัวชี้วัดของ LSA ที่แท้จริงสำหรับทั้งคู่อาจช่วยได้

ฉันสามารถทำซ้ำสิ่งนี้บน IOS โดยเลียนแบบการกำหนดค่าของคุณ - วาง anycast บนอินเทอร์เฟซและวางอินเทอร์เฟซลงในพื้นที่ หากคุณต้องการ ECMP ให้พิจารณาแจกจ่ายเส้นทางไปยัง OSPF อีกครั้งเนื่องจากดูเหมือนว่าใช้งานได้


FWIW รูปภาพในอินสแตนซ์ Dynamips ของฉันคือ 12.4 (25d) ใน 7200 ผลลัพธ์ของคุณแสดง "รู้ผ่าน ... NSSA ภายนอก 2" แต่แสดงเป็น "พื้นที่ภายใน" นั่นเป็นเงื่อนงำที่ดี
neirbowj

การกระจายการเชื่อมต่อจะผลิตแทนการใช้คำสั่งเครือข่ายหรือ ip ospf ภายใต้อินเตอร์เฟส
Daniel Dib

@DanielDib ฉันอยู่ในขั้นตอนการเปลี่ยนรูปแบบการหลบหนีของปกติ / stub / nssa พื้นที่ภายใน / ภายนอกและอย่างน้อย Cisco + Dynamips / Brocade ฉันจะลองจูนิเปอร์ด้วยถ้ามีเวลา
neirbowj

3

ขึ้นอยู่กับฮาร์ดแวร์ของ Brocade ที่คุณใช้ (MLX? CER? XMR?) คุณอาจต้องการอัปเดตซอฟต์แวร์ มีข้อบกพร่องหลายอย่างที่แก้ไขได้ผ่านโครงสร้างซอฟต์แวร์ 5.3 (และ 5.4 ขึ้นอยู่กับฮาร์ดแวร์ของคุณ) ที่มีอาการที่เกี่ยวข้องกับต้นทุนเส้นทางของ OSPF ที่ไม่ได้รับการอัปเดตอย่างถูกต้อง ฉันไม่ทราบเกณฑ์ทั้งหมดสำหรับการดูข้อบกพร่อง แต่มีสองอย่างคือ: หากค่าใช้จ่ายถูกเปลี่ยนแปลงบนพอร์ต 1gig หรืออินเทอร์เฟซแบบย้อนกลับบนเราเตอร์ที่ใช้ OSPF การเปลี่ยนแปลงจะไม่ถูกประมวลผลและไม่มีการอัปเดตต้นทุน .

ฉันรู้ว่าคุณเห็นสิ่งนี้ในแพลตฟอร์มของผู้ผลิตสองรายดังนั้นนี่น่าจะเป็นปัญหาการกำหนดค่ามากกว่า ฉันยังรู้ด้วยว่าเทคโนโลยีที่รองรับการอัปเดตซอฟต์แวร์ของคุณนั้นไม่มีค่าอะไรมากไปกว่าการใช้งาน ที่กล่าวว่าอาจเป็นสิ่งที่ต้องจำไว้


ฉันจะเก็บเรื่องนี้ไว้ในใจ อย่างไรก็ตาม R1 / R2 กำหนดค่าใช้จ่าย Rcore เห็นค่าใช้จ่ายและ Rcore แสดงอาการ ECMP
neirbowj
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.