BGP ทำงานอย่างไร

วันนี้เราจะมาดูโปรโตคอล BGP เราจะไม่พูดคุยกันเป็นเวลานานว่าทำไมจึงเป็นเช่นนี้และเหตุใดจึงถูกใช้เป็นโปรโตคอลเดียว มีข้อมูลค่อนข้างมากเกี่ยวกับเรื่องนี้เช่น ที่นี่.

แล้ว BGP คืออะไร? BGP เป็นโปรโตคอลการกำหนดเส้นทางแบบไดนามิกและเป็นโปรโตคอล EGP (External Gateway Protocol) เพียงรายการเดียว โปรโตคอลนี้ใช้เพื่อสร้างเส้นทางบนอินเทอร์เน็ต มาดูกันว่าพื้นที่ใกล้เคียงถูกสร้างขึ้นระหว่างเราเตอร์ BGP สองตัวอย่างไร

BGP ทำงานอย่างไร
พิจารณาพื้นที่ใกล้เคียงระหว่างเราเตอร์ 1 และเราเตอร์ 3 มากำหนดค่าโดยใช้คำสั่งต่อไปนี้:

router bgp 10
  network 192.168.12.0
  network 192.168.13.0
  neighbor 192.168.13.3 remote-as 10

router bgp 10
  network 192.168.13.0
  network 192.168.24.0
  neighbor 192.168.13.1 remote-as 10

บริเวณใกล้เคียงภายในระบบอัตโนมัติเดียวคือ AS 10 หลังจากป้อนข้อมูลบนเราเตอร์ เช่น เราเตอร์ 1 แล้ว เราเตอร์นั้นจะพยายามตั้งค่าความสัมพันธ์ที่อยู่ติดกันกับเราเตอร์ 3 สถานะเริ่มต้นเมื่อไม่มีอะไรเกิดขึ้นเรียกว่า Idle. ทันทีที่มีการกำหนดค่า bgp บนเราเตอร์ 1 มันจะเริ่มฟังพอร์ต TCP 179 - มันจะเข้าสู่สถานะ เชื่อมต่อและเมื่อพยายามเปิดเซสชันด้วย Router3 ก็จะเข้าสู่สถานะ ใช้งาน.

หลังจากสร้างเซสชันระหว่างเราเตอร์ 1 และเราเตอร์ 3 แล้ว ข้อความที่เปิดจะถูกแลกเปลี่ยน เมื่อข้อความนี้ถูกส่งโดย Router1 สถานะนี้จะถูกเรียก เปิดส่งแล้ว. และเมื่อได้รับข้อความ Open จาก Router3 ก็จะเข้าสู่สถานะ เปิด ยืนยัน. มาดูข้อความเปิดกันดีกว่า:

BGP ทำงานอย่างไร
ข้อความนี้สื่อถึงข้อมูลเกี่ยวกับโปรโตคอล BGP ซึ่งเราเตอร์ใช้ ด้วยการแลกเปลี่ยนข้อความเปิด Router1 และ Router3 จะสื่อสารข้อมูลเกี่ยวกับการตั้งค่าระหว่างกัน พารามิเตอร์ต่อไปนี้ถูกส่งผ่าน:

  • เวอร์ชั่น: รวมถึงเวอร์ชัน BGP ที่เราเตอร์ใช้ด้วย เวอร์ชันปัจจุบันของ BGP คือเวอร์ชัน 4 ซึ่งอธิบายไว้ใน RFC 4271 เราเตอร์ BGP สองตัวจะพยายามเจรจาเวอร์ชันที่เข้ากันได้ เมื่อข้อมูลไม่ตรงกัน จะไม่มีเซสชัน BGP
  • AS ของฉัน: รวมถึงหมายเลข AS ของเราเตอร์ BGP เราเตอร์จะต้องยอมรับหมายเลข AS และยังกำหนดด้วยว่าจะใช้ iBGP หรือ eBGP
  • ถือเวลา: หาก BGP ไม่ได้รับข้อความ Keepalive หรืออัปเดตจากอีกฝั่งหนึ่งในช่วงเวลาพักไว้ ก็จะประกาศว่าอีกฝั่ง 'ตาย' และจะทำลายเซสชัน BGP ตามค่าเริ่มต้น เวลาพักจะถูกตั้งไว้ที่ 180 วินาทีบนเราเตอร์ Cisco IOS ข้อความ Keepalive จะถูกส่งทุกๆ 60 วินาที เราเตอร์ทั้งสองต้องตกลงเรื่องเวลาพัก ไม่เช่นนั้นจะไม่มีเซสชัน BGP
  • ตัวระบุ BGP: นี่คือ ID เราเตอร์ BGP ในเครื่องซึ่งได้รับการเลือกเหมือนกับที่ OSPF ทำ:
    • ใช้ router-ID ที่กำหนดค่าด้วยตนเองด้วยคำสั่ง bgp router-id
    • ใช้ที่อยู่ IP สูงสุดบนอินเทอร์เฟซแบบย้อนกลับ
    • ใช้ที่อยู่ IP สูงสุดบนอินเทอร์เฟซทางกายภาพ
  • พารามิเตอร์เสริม: ที่นี่คุณจะพบกับความสามารถเสริมบางอย่างของเราเตอร์ BGP เพิ่มฟิลด์นี้แล้วเพื่อให้สามารถเพิ่มฟีเจอร์ใหม่ลงใน BGP ได้โดยไม่ต้องสร้างเวอร์ชันใหม่ สิ่งที่คุณอาจพบได้ที่นี่คือ:
    • รองรับ MP-BGP (หลายโปรโตคอล BGP)
    • รองรับการรีเฟรชเส้นทาง
    • รองรับหมายเลข AS 4 ออคเต็ต

หากต้องการสร้างพื้นที่ใกล้เคียงต้องปฏิบัติตามเงื่อนไขต่อไปนี้:

  • หมายเลขเวอร์ชัน เวอร์ชันปัจจุบันคือ 4
  • หมายเลข AS ต้องตรงกับที่คุณกำหนดค่าไว้ เพื่อนบ้าน 192.168.13.3 ระยะไกลเป็น 10.
  • รหัสเราเตอร์จะต้องแตกต่างจากเพื่อนบ้าน

หากพารามิเตอร์ใดไม่ตรงตามเงื่อนไขเหล่านี้ เราเตอร์จะส่ง การประกาศ ข้อความระบุข้อผิดพลาด หลังจากส่งและรับข้อความเปิดแล้ว ความสัมพันธ์ในละแวกใกล้เคียงจะเข้าสู่สถานะ ที่จัดตั้งขึ้น. หลังจากนี้เราเตอร์สามารถแลกเปลี่ยนข้อมูลเกี่ยวกับเส้นทางและทำสิ่งนี้ได้ บันทึก ข้อความ นี่คือข้อความอัปเดตที่ส่งโดย Router1 ไปยัง Router3:

BGP ทำงานอย่างไร

ที่นี่คุณสามารถดูเครือข่ายที่รายงานโดยแอตทริบิวต์ Router1 และ Path ซึ่งคล้ายคลึงกับเมตริก เราจะพูดถึงคุณลักษณะ Path โดยละเอียด ข้อความ Keepalive จะถูกส่งภายในเซสชัน TCP ด้วย โดยค่าเริ่มต้นจะมีการส่งข้อมูลทุกๆ 60 วินาที นี่คือตัวจับเวลา Keepalive หากไม่ได้รับข้อความ Keepalive ในระหว่าง Hold Timer จะทำให้การสื่อสารกับเพื่อนบ้านขาดหายไป โดยค่าเริ่มต้นจะเท่ากับ 180 วินาที

สัญญาณที่เป็นประโยชน์:

BGP ทำงานอย่างไร

ดูเหมือนว่าเราได้ทราบว่าเราเตอร์ส่งข้อมูลถึงกันอย่างไร ตอนนี้เรามาลองทำความเข้าใจตรรกะของโปรโตคอล BGP กันดีกว่า

ในการโฆษณาเส้นทางไปยังตาราง BGP เช่นเดียวกับในโปรโตคอล IGP จะใช้คำสั่งเครือข่าย แต่ตรรกะการทำงานจะแตกต่างออกไป หากใน IGP หลังจากระบุเส้นทางในคำสั่งเครือข่ายแล้ว IGP จะดูว่าอินเทอร์เฟซใดที่เป็นของซับเน็ตนี้และรวมไว้ในตาราง จากนั้นคำสั่งเครือข่ายใน BGP จะดูตารางเส้นทางและค้นหา точное ตรงกับเส้นทางในคำสั่งเครือข่าย หากพบเส้นทางเหล่านี้จะปรากฏในตาราง BGP

ค้นหาเส้นทางในตารางเส้นทาง IP ปัจจุบันของเราเตอร์ที่ตรงกับพารามิเตอร์ของคำสั่งเครือข่ายทุกประการ หากมีเส้นทาง IP ให้ใส่ NLRI ที่เทียบเท่าลงในตาราง BGP ในเครื่อง

ตอนนี้เรามาเพิ่ม BGP ให้กับเส้นทางที่เหลือทั้งหมดและดูวิธีการเลือกเส้นทางภายใน AS เดียว หลังจากที่เราเตอร์ BGP ได้รับเส้นทางจากเพื่อนบ้านแล้ว เราเตอร์จะเริ่มเลือกเส้นทางที่เหมาะสมที่สุด ที่นี่คุณต้องเข้าใจว่าเพื่อนบ้านประเภทใดที่สามารถเป็นได้ทั้งภายในและภายนอก เราเตอร์เข้าใจโดยการกำหนดค่าว่าเพื่อนบ้านที่กำหนดค่านั้นเป็นภายในหรือภายนอกหรือไม่ หากอยู่ในทีม:

neighbor 192.168.13.3 remote-as 10 

พารามิเตอร์รีโมทเป็นระบุ AS ซึ่งกำหนดค่าไว้บนเราเตอร์ในคำสั่งเราเตอร์ bgp 10 เส้นทางที่มาจาก AS ภายในถือเป็นเส้นทางภายในและเส้นทางจาก AS ภายนอกถือเป็นเส้นทางภายนอก และสำหรับแต่ละคนก็มีตรรกะในการรับและส่งงานที่แตกต่างกัน พิจารณาโทโพโลยีนี้:

BGP ทำงานอย่างไร

เราเตอร์แต่ละตัวมีอินเทอร์เฟซแบบย้อนกลับที่กำหนดค่าด้วย ip: xxxx 255.255.255.0 - โดยที่ x คือหมายเลขเราเตอร์ บน Router9 เรามีอินเทอร์เฟซแบบย้อนกลับพร้อมที่อยู่ - 9.9.9.9 255.255.255.0 เราจะประกาศผ่าน BGP และดูว่ามันจะแพร่กระจายอย่างไร เส้นทางนี้จะถูกส่งไปยัง Router8 และ Router12 จาก Router8 เส้นทางนี้จะไปที่ Router6 แต่สำหรับ Router5 จะไม่อยู่ในตารางเส้นทาง นอกจากนี้บน Router12 เส้นทางนี้จะปรากฏในตารางด้วย แต่บน Router11 ก็จะไม่อยู่ที่นั่นเช่นกัน ลองคิดดูสิ พิจารณาว่าข้อมูลและพารามิเตอร์ใดที่ Router9 ส่งไปยังเพื่อนบ้านโดยรายงานเส้นทางนี้ แพ็กเก็ตด้านล่างจะถูกส่งจาก Router9 ไปยัง Router8

BGP ทำงานอย่างไร
ข้อมูลเส้นทางประกอบด้วยคุณลักษณะเส้นทาง

คุณลักษณะเส้นทางแบ่งออกเป็น 4 ประเภท:

  1. บังคับที่รู้จักกันดี - เราเตอร์ทั้งหมดที่ใช้ BGP ต้องรู้จักคุณลักษณะเหล่านี้ จะต้องปรากฏในการอัปเดตทั้งหมด
  2. ดุลยพินิจที่รู้จักกันดี - เราเตอร์ทั้งหมดที่ใช้ BGP ต้องรู้จักคุณลักษณะเหล่านี้ อาจมีอยู่ในการอัปเดต แต่ไม่จำเป็นต้องมีอยู่
  3. สกรรมกริยาทางเลือก - อาจไม่ได้รับการยอมรับจากการใช้งาน BGP ทั้งหมด หากเราเตอร์ไม่รู้จักแอตทริบิวต์ จะทำเครื่องหมายการอัปเดตเป็นบางส่วนและส่งต่อไปยังเพื่อนบ้าน โดยจัดเก็บแอตทริบิวต์ที่ไม่รู้จัก
  4. ตัวเลือกที่ไม่ใช่สกรรมกริยา - อาจไม่ได้รับการยอมรับจากการใช้งาน BGP ทั้งหมด หากเราเตอร์ไม่รู้จักแอตทริบิวต์ คุณลักษณะดังกล่าวจะถูกละเว้นและละทิ้งเมื่อส่งต่อไปยังเพื่อนบ้าน

ตัวอย่างของแอตทริบิวต์ BGP:

  • บังคับที่รู้จักกันดี:
    • เส้นทางของระบบอัตโนมัติ
    • ถัดไปกระโดด
    • ที่มา

  • ดุลยพินิจที่รู้จักกันดี:
    • การตั้งค่าท้องถิ่น
    • มวลรวมอะตอม
  • สกรรมกริยาทางเลือก:
    • รวบรวม
    • ชุมชน
  • ตัวเลือกที่ไม่ใช่สกรรมกริยา:
    • เครื่องแยกแยะทางออกหลายทาง (MED)
    • รหัสผู้สร้าง
    • รายการคลัสเตอร์

ในกรณีนี้ เราจะสนใจ Origin, Next-hop, AS Path เนื่องจากเส้นทางส่งระหว่างเราเตอร์ 8 และเราเตอร์ 9 นั่นคือภายใน AS เดียวจึงถือเป็นภายในและเราจะให้ความสนใจกับ Origin

คุณลักษณะ Origin - ระบุวิธีการรับเส้นทางในการอัพเดต ค่าแอตทริบิวต์ที่เป็นไปได้:

  • 0 - IGP: NLRI ได้รับภายในระบบอัตโนมัติดั้งเดิม
  • 1 - EGP: NLRI เรียนรู้โดยใช้ External Gateway Protocol (EGP) รุ่นก่อนของ BGP ไม่ได้ใช้
  • 2 - ไม่สมบูรณ์: เรียนรู้ NLRI ด้วยวิธีอื่น

ในกรณีของเราดังที่เห็นจากแพ็กเก็ตจะเท่ากับ 0 เมื่อเส้นทางนี้ถูกส่งไปยัง Router12 รหัสนี้จะมีรหัสเป็น 1

ต่อไป ต่อไป-กระโดด คุณลักษณะการกระโดดครั้งต่อไป

  • นี่คือที่อยู่ IP ของเราเตอร์ eBGP ซึ่งเป็นเส้นทางไปยังเครือข่ายปลายทาง
  • แอตทริบิวต์จะเปลี่ยนไปเมื่อส่งคำนำหน้าไปยัง AS อื่น

ในกรณีของ iBGP นั่นคือภายใน AS เดียว Next-hop จะถูกระบุโดยผู้ที่เรียนรู้หรือบอกเกี่ยวกับเส้นทางนี้ ในกรณีของเรา มันจะเป็น 192.168.89.9 แต่เมื่อเส้นทางนี้ถูกส่งจาก Router8 ไปยัง Router6 แล้ว Router8 จะเปลี่ยนและแทนที่ด้วยตัวมันเอง ฮอปถัดไปจะเป็น 192.168.68.8 สิ่งนี้นำเราไปสู่กฎสองข้อ:

  1. หากเราเตอร์ส่งต่อเส้นทางไปยังเพื่อนบ้านภายใน เราเตอร์จะไม่เปลี่ยนพารามิเตอร์ Next-hop
  2. หากเราเตอร์ส่งเส้นทางไปยังเพื่อนบ้านภายนอก มันจะเปลี่ยน Next-hop เป็น ip ของอินเทอร์เฟซที่เราเตอร์นี้ส่งสัญญาณ

สิ่งนี้ทำให้เราเข้าใจปัญหาแรก - เหตุใดจึงไม่มีเส้นทางในตารางเส้นทางบน Router5 และ Router11 มาดูกันดีกว่า ดังนั้น Router6 จึงได้รับข้อมูลเกี่ยวกับเส้นทาง 9.9.9.0/24 และเพิ่มลงในตารางเส้นทางได้สำเร็จ:

Router6#show ip route bgp
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      9.0.0.0/24 is subnetted, 1 subnets
B        9.9.9.0 [20/0] via 192.168.68.8, 00:38:25<source>
Теперь Router6 передал маршрут Router5 и первому правилу Next-hop не изменил. То есть, Router5 должен добавить  <b>9.9.9.0 [20/0] via 192.168.68.8</b> , но у него нет маршрута до 192.168.68.8 и поэтому данный маршрут добавлен не будет, хотя информация о данном маршруте будет храниться в таблице BGP:

<source><b>Router5#show ip bgp
BGP table version is 1, local router ID is 5.5.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 * i 9.9.9.0/24       192.168.68.8             0    100      0 45 i</b>

สถานการณ์เดียวกันนี้จะเกิดขึ้นระหว่าง Router11-Router12 เพื่อหลีกเลี่ยงสถานการณ์นี้ คุณต้องกำหนดค่าเราเตอร์ 6 หรือเราเตอร์ 12 เมื่อผ่านเส้นทางไปยังเพื่อนบ้านภายใน เพื่อแทนที่ที่อยู่ IP เป็น Next-hop ทำได้โดยใช้คำสั่ง:

neighbor 192.168.56.5 next-hop-self

หลังจากคำสั่งนี้ Router6 จะส่งข้อความอัปเดต โดยที่ ip ของอินเทอร์เฟซ Gi0/0 Router6 จะถูกระบุเป็น Next-hop สำหรับเส้นทาง - 192.168.56.6 หลังจากนั้นเส้นทางนี้จะรวมอยู่ในตารางเส้นทางแล้ว

ไปดูกันดีกว่าว่าเส้นทางนี้ปรากฏบน Router7 และ Router10 หรือไม่ มันจะไม่ได้อยู่ในตารางเส้นทางและเราอาจคิดว่าปัญหาจะเหมือนกับปัญหาแรกที่มีพารามิเตอร์ Next-hop แต่ถ้าเราดูที่ผลลัพธ์ของคำสั่ง show ip bgp เราจะเห็นว่า ไม่ได้รับเส้นทางที่นั่นแม้ว่าจะมี Next-hop ผิด ซึ่งหมายความว่าเส้นทางนั้นไม่ได้รับการส่งด้วยซ้ำ และสิ่งนี้จะนำเราไปสู่การดำรงอยู่ของกฎอื่น:

เส้นทางที่ได้รับจากเพื่อนบ้านภายในจะไม่แพร่กระจายไปยังเพื่อนบ้านภายในอื่นๆ

เนื่องจากเราเตอร์ 5 ได้รับเส้นทางจากเราเตอร์ 6 จึงจะไม่ถูกส่งไปยังเพื่อนบ้านภายในเครื่องอื่น เพื่อให้การถ่ายโอนเกิดขึ้น คุณต้องกำหนดค่าฟังก์ชัน ตัวสะท้อนแสงเส้นทางหรือกำหนดค่าความสัมพันธ์ย่านใกล้เคียงที่เชื่อมต่ออย่างสมบูรณ์ (Full Mesh) นั่นคือ Router5-7 ทุกคนจะเป็นเพื่อนบ้านของทุกคน ในกรณีนี้เราจะใช้ตัวสะท้อนเส้นทาง บน Router5 คุณต้องใช้คำสั่งนี้:

neighbor 192.168.57.7 route-reflector-client

Route-Reflector เปลี่ยนพฤติกรรมของ BGP เมื่อส่งเส้นทางไปยังเพื่อนบ้านภายใน หากระบุเพื่อนบ้านภายในเป็น เส้นทาง-ตัวสะท้อนแสง-ไคลเอนต์จากนั้นเส้นทางภายในจะถูกโฆษณาให้กับลูกค้าเหล่านี้

เส้นทางไม่ปรากฏบน Router7? อย่าลืม Next-hop ด้วยนะครับ หลังจากการยักย้ายเหล่านี้เส้นทางควรไปที่เราเตอร์ 7 ด้วย แต่สิ่งนี้จะไม่เกิดขึ้น สิ่งนี้นำเราไปสู่กฎอีกข้อหนึ่ง:

กฎการกระโดดครั้งต่อไปใช้ได้กับเส้นทางภายนอกเท่านั้น สำหรับเส้นทางภายใน คุณลักษณะ next-hop จะไม่ถูกแทนที่

และเราได้รับสถานการณ์ที่จำเป็นต้องสร้างสภาพแวดล้อมโดยใช้การกำหนดเส้นทางแบบคงที่หรือโปรโตคอล IGP เพื่อแจ้งเราเตอร์เกี่ยวกับเส้นทางทั้งหมดภายใน AS มาลงทะเบียนเส้นทางคงที่บน Router6 และ Router7 จากนั้นเราจะได้เส้นทางที่ต้องการในตารางเราเตอร์ ใน AS 678 เราจะดำเนินการแตกต่างออกไปเล็กน้อย - เราจะลงทะเบียนเส้นทางคงที่สำหรับ 192.168.112.0/24 บน Router10 และ 192.168.110.0/24 บน Router12 ต่อไป เราจะสร้างความสัมพันธ์ในบริเวณใกล้เคียงระหว่าง Router10 และ Router12 นอกจากนี้เรายังจะกำหนดค่า Router12 ให้ส่งฮอปถัดไปไปยัง Router10:

neighbor 192.168.110.10 next-hop-self

ผลลัพธ์ที่ได้คือ Router10 จะได้รับเส้นทาง 9.9.9.0/24 โดยจะได้รับจากทั้ง Router7 และ Router12 มาดูกันว่า Router10 มีตัวเลือกอะไรบ้าง:

Router10#show ip bgp
BGP table version is 3, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network              Next Hop            Metric LocPrf Weight Path
 *>i 9.9.9.0/24       192.168.112.12           0    100       0      45 i

                               192.168.107.7                                0     123 45 i  

ดังที่เราเห็น สองเส้นทางและลูกศร (>) หมายความว่าเลือกเส้นทางผ่าน 192.168.112.12 แล้ว
มาดูกันว่ากระบวนการเลือกเส้นทางทำงานอย่างไร:

  1. ขั้นตอนแรกเมื่อได้รับเส้นทางคือการตรวจสอบความพร้อมใช้งานของ Next-hop นั่นคือเหตุผลที่เมื่อเราได้รับเส้นทางบนเราเตอร์ 5 โดยไม่ตั้งค่า Next-hop-self เส้นทางนี้จึงไม่ได้รับการประมวลผลเพิ่มเติม
  2. ถัดมาเป็นพารามิเตอร์น้ำหนัก พารามิเตอร์นี้ไม่ใช่ Path Attribute (PA) และไม่ได้ส่งเป็นข้อความ BGP มีการกำหนดค่าภายในเราเตอร์แต่ละตัว และใช้เพื่อจัดการการเลือกเส้นทางบนเราเตอร์เท่านั้น ลองดูตัวอย่าง ด้านบนคุณจะเห็นว่า Router10 ได้เลือกเส้นทางสำหรับ 9.9.9.0/24 ผ่าน Router12 (192.168.112.12) หากต้องการเปลี่ยนพารามิเตอร์ Wieght คุณสามารถใช้แผนที่เส้นทางเพื่อกำหนดเส้นทางเฉพาะ หรือกำหนดน้ำหนักให้กับเพื่อนบ้านโดยใช้คำสั่ง:
     neighbor 192.168.107.7 weight 200       

    ตอนนี้ทุกเส้นทางจากเพื่อนบ้านรายนี้จะมีน้ำหนักเท่านี้ มาดูกันว่าการเลือกเส้นทางเปลี่ยนไปอย่างไรหลังจากการยักย้ายนี้:

    Router10#show bgp
    *Mar  2 11:58:13.956: %SYS-5-CONFIG_I: Configured from console by console
    BGP table version is 2, local router ID is 6.6.6.6
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
                  x best-external, a additional-path, c RIB-compressed,
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network          Next Hop            Metric LocPrf Weight      Path
     *>  9.9.9.0/24       192.168.107.7                        200      123 45 i
     * i                          192.168.112.12           0          100      0 45 i

    อย่างที่คุณเห็นตอนนี้ได้เลือกเส้นทางผ่าน Router7 แล้ว แต่จะไม่มีผลกับเราเตอร์ตัวอื่น

  3. ในตำแหน่งที่สาม เรามีการตั้งค่าท้องถิ่น พารามิเตอร์นี้เป็นแอ็ตทริบิวต์การตัดสินใจที่รู้จักกันดี ซึ่งหมายความว่าการมีอยู่ของพารามิเตอร์นั้นเป็นทางเลือก พารามิเตอร์นี้ใช้ได้ภายใน AS เดียวเท่านั้น และส่งผลต่อการเลือกเส้นทางสำหรับเพื่อนบ้านภายในเท่านั้น นั่นคือสาเหตุว่าทำไมจึงส่งเฉพาะในข้อความอัปเดตที่มีไว้สำหรับเพื่อนบ้านภายในเท่านั้น ไม่มีอยู่ในข้อความอัปเดตสำหรับเพื่อนบ้านภายนอก ดังนั้นจึงจัดเป็นดุลยพินิจที่มีชื่อเสียง มาลองนำไปใช้กับ Router5 กันดูครับ บน Router5 เราควรมีสองเส้นทางสำหรับ 9.9.9.0/24 - เส้นทางหนึ่งผ่าน Router6 และเส้นทางที่สองผ่าน Router7

    พวกเรามอง:

    Router5#show bgp
    BGP table version is 2, local router ID is 5.5.5.5
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
                  x best-external, a additional-path, c RIB-compressed,
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network          Next Hop            Metric LocPrf Weight Path
     *>i 9.9.9.0/24       192.168.56.6             0    100      0 45 i

    แต่อย่างที่เราเห็นเส้นทางหนึ่งผ่าน Router6 เส้นทางผ่าน Router7 อยู่ที่ไหน? บางที Router7 ก็ไม่มีเช่นกัน? มาดูกัน:

    Router#show bgp
    BGP table version is 10, local router ID is 7.7.7.7
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
                  x best-external, a additional-path, c RIB-compressed,
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network                Next Hop            Metric LocPrf  Weight    Path
     *>i 9.9.9.0/24       192.168.56.6             0     100           0      45 i
    
                                  192.168.107.10                                  0     678 45 i 

    น่าแปลกที่ทุกอย่างดูเหมือนจะดี ทำไมมันไม่ส่งไปที่ Router5? ประเด็นก็คือ BGP มีกฎ:

    เราเตอร์จะส่งเฉพาะเส้นทางที่ใช้เท่านั้น

    Router7 ใช้เส้นทางผ่าน Router5 ดังนั้นเส้นทางผ่าน Router10 จะไม่ถูกส่ง กลับไปที่การตั้งค่าท้องถิ่นกันดีกว่า มาตั้งค่า Local Preference บน Router7 แล้วดูว่า Router5 ตอบสนองต่อสิ่งนี้อย่างไร:

    route-map BGP permit 10
     match ip address 10
     set local-preference 250
    access-list 10 permit any
    router bgp 123
     neighbor 192.168.107.10 route-map BGP in</b>

    ดังนั้นเราจึงสร้างแผนที่เส้นทางที่มีเส้นทางทั้งหมดและบอกให้ Router7 เปลี่ยนพารามิเตอร์ Local Preference เป็น 250 เมื่อได้รับ ค่าเริ่มต้นคือ 100 มาดูกันว่าเกิดอะไรขึ้นบน Router5:

    Router5#show bgp
    BGP table version is 8, local router ID is 5.5.5.5
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
                  x best-external, a additional-path, c RIB-compressed,
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network          Next Hop            Metric LocPrf Weight        Path
     *>i 9.9.9.0/24       192.168.57.7             0          250      0 678 45 i

    ดังที่เราเห็นตอนนี้ Router5 ชอบเส้นทางผ่าน Router7 ภาพเดียวกันนี้จะอยู่บน Router6 แม้ว่าเขาจะได้กำไรมากกว่าหากเลือกเส้นทางผ่าน Router8 นอกจากนี้เรายังเสริมว่าการเปลี่ยนแปลงพารามิเตอร์นี้จำเป็นต้องรีสตาร์ทพื้นที่ใกล้เคียงเพื่อให้การเปลี่ยนแปลงมีผล อ่าน ที่นี่. เราได้จัดเรียงการตั้งค่าท้องถิ่นแล้ว เรามาดูพารามิเตอร์ถัดไปกันดีกว่า

  4. ต้องการเส้นทางที่มีพารามิเตอร์ Next-hop 0.0.0.0 นั่นคือ เส้นทางภายในหรือเส้นทางรวม เส้นทางเหล่านี้ได้รับการกำหนดพารามิเตอร์น้ำหนักให้เท่ากับค่าสูงสุด 32678 โดยอัตโนมัติหลังจากป้อนคำสั่งเครือข่าย:
    Router#show bgp
    BGP table version is 2, local router ID is 9.9.9.9
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
                  x best-external, a additional-path, c RIB-compressed,
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network          Next Hop            Metric LocPrf Weight    Path
     *>  9.9.9.0/24       0.0.0.0                  0            32768    i
  5. เส้นทางที่สั้นที่สุดผ่าน AS เลือกพารามิเตอร์ AS_Path ที่สั้นที่สุดแล้ว ยิ่ง AS ผ่านเส้นทางน้อยเท่าไรก็ยิ่งดีเท่านั้น พิจารณาเส้นทางไปยัง 9.9.9.0/24 บนเราเตอร์ 10:
    Router10#show bgp
    BGP table version is 2, local router ID is 6.6.6.6
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
                  x best-external, a additional-path, c RIB-compressed,
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network          Next Hop            Metric LocPrf Weight Path
     *   9.9.9.0/24     192.168.107.7                           0           123 45 i
     *>i                     192.168.112.12           0    100       0       45 i

    อย่างที่คุณเห็น Router10 เลือกเส้นทางผ่าน 192.168.112.12 เนื่องจากสำหรับเส้นทางนี้พารามิเตอร์ AS_Path มีเพียง 45 และในอีกกรณีหนึ่ง 123 และ 45 ชัดเจนอย่างสังหรณ์ใจ

  6. พารามิเตอร์ถัดไปคือ Origin IGP (เส้นทางที่ได้รับโดยใช้ BGP) ดีกว่า EGP (เส้นทางที่ได้รับโดยใช้รุ่นก่อนของ BGP ไม่ได้ใช้งานอีกต่อไป) และ EGP ดีกว่า Incomplete? (ได้มาจากวิธีอื่น เช่น โดยการแจกจ่ายซ้ำ)
  7. พารามิเตอร์ถัดไปคือ MED เรามี Wieght ซึ่งใช้งานได้เฉพาะบนเราเตอร์เท่านั้น มี Local Preference ซึ่งทำงานภายในระบบอัตโนมัติเพียงระบบเดียวเท่านั้น ดังที่คุณอาจเดาได้ว่า MED เป็นพารามิเตอร์ที่จะถูกส่งระหว่างระบบอัตโนมัติ ดีมาก บทความ เกี่ยวกับพารามิเตอร์นี้

จะไม่มีการใช้แอตทริบิวต์อีกต่อไป แต่หากสองเส้นทางมีคุณลักษณะเดียวกัน ระบบจะใช้กฎต่อไปนี้:

  1. เลือกเส้นทางผ่านเพื่อนบ้าน IGP ที่ใกล้ที่สุด
  2. เลือกเส้นทางที่เก่าที่สุดสำหรับเส้นทาง eBGP
  3. เลือกเส้นทางผ่านเพื่อนบ้านที่มี ID เราเตอร์ BGP ที่เล็กที่สุด
  4. เลือกเส้นทางผ่านเพื่อนบ้านที่มีที่อยู่ IP ต่ำที่สุด

ตอนนี้เรามาดูประเด็นของการลู่เข้าของ BGP กัน

มาดูกันว่าเกิดอะไรขึ้นถ้า Router6 สูญเสียเส้นทาง 9.9.9.0/24 ผ่าน Router9 มาปิดการใช้งานอินเทอร์เฟซ Gi0/1 ของ Router6 ซึ่งจะเข้าใจทันทีว่าเซสชัน BGP กับ Router8 ถูกยกเลิกและเพื่อนบ้านหายไปซึ่งหมายความว่าเส้นทางที่ได้รับนั้นไม่ถูกต้อง เราเตอร์ 6 ส่งข้อความอัปเดตทันที โดยจะระบุเครือข่าย 9.9.9.0/24 ในช่องเส้นทางที่ถอนออก ทันทีที่ Router5 ได้รับข้อความดังกล่าว มันก็จะส่งไปที่ Router7 แต่เนื่องจาก Router7 มีเส้นทางผ่าน Router10 จึงจะตอบสนองทันทีด้วยการอัพเดตเส้นทางใหม่ หากไม่สามารถตรวจจับการล่มสลายของเพื่อนบ้านตามสถานะของอินเทอร์เฟซได้ คุณจะต้องรอให้ Hold Timer ทำงาน

สมาพันธ์.

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

BGP ทำงานอย่างไร

นี่คือลิงค์ไปยังสิ่งนี้ ลาบูและ ที่นี่ การกำหนดค่าสำหรับ GNS3

ตัวอย่างเช่น ด้วยโทโพโลยีนี้ เราจะต้องเชื่อมต่อเราเตอร์ทั้งหมดใน AS 2345 เข้าด้วยกัน แต่การใช้ Confederation เราสามารถสร้างความสัมพันธ์ adjacency ระหว่างเราเตอร์ที่เชื่อมต่อถึงกันโดยตรงเท่านั้น มาพูดถึงเรื่องนี้โดยละเอียด หากเรามี AS 2345 เท่านั้น ลาฟอร์จ ได้รับการเดินขบวนจาก ปิ จะบอกให้เราเตอร์ทราบ ข้อมูล и เวิร์ฟแต่พวกเขาจะไม่บอกเราเตอร์เกี่ยวกับเรื่องนี้ Crusher . เส้นทางที่กระจายโดยเราเตอร์เองด้วย ลาฟอร์จ,คงไม่โอน. Crusher ไม่ เวิร์ฟ-ไม่นะ ข้อมูล.

คุณจะต้องกำหนดค่า Route-Reflector หรือความสัมพันธ์ในบริเวณใกล้เคียงที่เชื่อมต่อโดยสมบูรณ์ ด้วยการแบ่ง AS 2345 หนึ่งรายการออกเป็น 4 sub-AS (2,3,4,5) สำหรับเราเตอร์แต่ละตัว เราจะได้ตรรกะการทำงานที่แตกต่างกัน ทุกอย่างอธิบายได้อย่างสมบูรณ์แบบ ที่นี่.

แหล่งที่มา:

  1. คู่มือใบรับรองอย่างเป็นทางการของ CCIE Routing and Switching v5.0, เล่มที่ 2, ฉบับที่ห้า, Narbik Kocharians, Terry Vinson
  2. เว็บไซต์ xgu.ru
  3. เว็บไซต์ GNS3ห้องนิรภัย.

ที่มา: will.com

เพิ่มความคิดเห็น