วันนี้เราจะมาดูโปรโตคอล BGP เราจะไม่พูดคุยกันเป็นเวลานานว่าทำไมจึงเป็นเช่นนี้และเหตุใดจึงถูกใช้เป็นโปรโตคอลเดียว มีข้อมูลค่อนข้างมากเกี่ยวกับเรื่องนี้เช่น .
แล้ว BGP คืออะไร? BGP เป็นโปรโตคอลการกำหนดเส้นทางแบบไดนามิกและเป็นโปรโตคอล EGP (External Gateway Protocol) เพียงรายการเดียว โปรโตคอลนี้ใช้เพื่อสร้างเส้นทางบนอินเทอร์เน็ต มาดูกันว่าพื้นที่ใกล้เคียงถูกสร้างขึ้นระหว่างเราเตอร์ 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 ซึ่งเราเตอร์ใช้ ด้วยการแลกเปลี่ยนข้อความเปิด 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:
ที่นี่คุณสามารถดูเครือข่ายที่รายงานโดยแอตทริบิวต์ Router1 และ Path ซึ่งคล้ายคลึงกับเมตริก เราจะพูดถึงคุณลักษณะ Path โดยละเอียด ข้อความ Keepalive จะถูกส่งภายในเซสชัน TCP ด้วย โดยค่าเริ่มต้นจะมีการส่งข้อมูลทุกๆ 60 วินาที นี่คือตัวจับเวลา Keepalive หากไม่ได้รับข้อความ Keepalive ในระหว่าง Hold Timer จะทำให้การสื่อสารกับเพื่อนบ้านขาดหายไป โดยค่าเริ่มต้นจะเท่ากับ 180 วินาที
สัญญาณที่เป็นประโยชน์:
ดูเหมือนว่าเราได้ทราบว่าเราเตอร์ส่งข้อมูลถึงกันอย่างไร ตอนนี้เรามาลองทำความเข้าใจตรรกะของโปรโตคอล 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 ภายนอกถือเป็นเส้นทางภายนอก และสำหรับแต่ละคนก็มีตรรกะในการรับและส่งงานที่แตกต่างกัน พิจารณาโทโพโลยีนี้:
เราเตอร์แต่ละตัวมีอินเทอร์เฟซแบบย้อนกลับที่กำหนดค่าด้วย 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
ข้อมูลเส้นทางประกอบด้วยคุณลักษณะเส้นทาง
คุณลักษณะเส้นทางแบ่งออกเป็น 4 ประเภท:
- บังคับที่รู้จักกันดี - เราเตอร์ทั้งหมดที่ใช้ BGP ต้องรู้จักคุณลักษณะเหล่านี้ จะต้องปรากฏในการอัปเดตทั้งหมด
- ดุลยพินิจที่รู้จักกันดี - เราเตอร์ทั้งหมดที่ใช้ BGP ต้องรู้จักคุณลักษณะเหล่านี้ อาจมีอยู่ในการอัปเดต แต่ไม่จำเป็นต้องมีอยู่
- สกรรมกริยาทางเลือก - อาจไม่ได้รับการยอมรับจากการใช้งาน BGP ทั้งหมด หากเราเตอร์ไม่รู้จักแอตทริบิวต์ จะทำเครื่องหมายการอัปเดตเป็นบางส่วนและส่งต่อไปยังเพื่อนบ้าน โดยจัดเก็บแอตทริบิวต์ที่ไม่รู้จัก
- ตัวเลือกที่ไม่ใช่สกรรมกริยา - อาจไม่ได้รับการยอมรับจากการใช้งาน 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 สิ่งนี้นำเราไปสู่กฎสองข้อ:
- หากเราเตอร์ส่งต่อเส้นทางไปยังเพื่อนบ้านภายใน เราเตอร์จะไม่เปลี่ยนพารามิเตอร์ Next-hop
- หากเราเตอร์ส่งเส้นทางไปยังเพื่อนบ้านภายนอก มันจะเปลี่ยน 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-clientRoute-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 แล้ว
มาดูกันว่ากระบวนการเลือกเส้นทางทำงานอย่างไร:
- ขั้นตอนแรกเมื่อได้รับเส้นทางคือการตรวจสอบความพร้อมใช้งานของ Next-hop นั่นคือเหตุผลที่เมื่อเราได้รับเส้นทางบนเราเตอร์ 5 โดยไม่ตั้งค่า Next-hop-self เส้นทางนี้จึงไม่ได้รับการประมวลผลเพิ่มเติม
- ถัดมาเป็นพารามิเตอร์น้ำหนัก พารามิเตอร์นี้ไม่ใช่ 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 แล้ว แต่จะไม่มีผลกับเราเตอร์ตัวอื่น
- ในตำแหน่งที่สาม เรามีการตั้งค่าท้องถิ่น พารามิเตอร์นี้เป็นแอ็ตทริบิวต์การตัดสินใจที่รู้จักกันดี ซึ่งหมายความว่าการมีอยู่ของพารามิเตอร์นั้นเป็นทางเลือก พารามิเตอร์นี้ใช้ได้ภายใน 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 นอกจากนี้เรายังเสริมว่าการเปลี่ยนแปลงพารามิเตอร์นี้จำเป็นต้องรีสตาร์ทพื้นที่ใกล้เคียงเพื่อให้การเปลี่ยนแปลงมีผล อ่าน . เราได้จัดเรียงการตั้งค่าท้องถิ่นแล้ว เรามาดูพารามิเตอร์ถัดไปกันดีกว่า
- ต้องการเส้นทางที่มีพารามิเตอร์ 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 - เส้นทางที่สั้นที่สุดผ่าน 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 ชัดเจนอย่างสังหรณ์ใจ
- พารามิเตอร์ถัดไปคือ Origin IGP (เส้นทางที่ได้รับโดยใช้ BGP) ดีกว่า EGP (เส้นทางที่ได้รับโดยใช้รุ่นก่อนของ BGP ไม่ได้ใช้งานอีกต่อไป) และ EGP ดีกว่า Incomplete? (ได้มาจากวิธีอื่น เช่น โดยการแจกจ่ายซ้ำ)
- พารามิเตอร์ถัดไปคือ MED เรามี Wieght ซึ่งใช้งานได้เฉพาะบนเราเตอร์เท่านั้น มี Local Preference ซึ่งทำงานภายในระบบอัตโนมัติเพียงระบบเดียวเท่านั้น ดังที่คุณอาจเดาได้ว่า MED เป็นพารามิเตอร์ที่จะถูกส่งระหว่างระบบอัตโนมัติ ดีมาก เกี่ยวกับพารามิเตอร์นี้
จะไม่มีการใช้แอตทริบิวต์อีกต่อไป แต่หากสองเส้นทางมีคุณลักษณะเดียวกัน ระบบจะใช้กฎต่อไปนี้:
- เลือกเส้นทางผ่านเพื่อนบ้าน IGP ที่ใกล้ที่สุด
- เลือกเส้นทางที่เก่าที่สุดสำหรับเส้นทาง eBGP
- เลือกเส้นทางผ่านเพื่อนบ้านที่มี ID เราเตอร์ BGP ที่เล็กที่สุด
- เลือกเส้นทางผ่านเพื่อนบ้านที่มีที่อยู่ 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 ย่อยหลายรายการ ซึ่งช่วยให้สามารถทำงานได้โดยไม่ต้องมีโทโพโลยีที่เชื่อมต่อโดยสมบูรณ์
นี่คือลิงค์ไปยังสิ่งนี้ และ การกำหนดค่าสำหรับ GNS3
ตัวอย่างเช่น ด้วยโทโพโลยีนี้ เราจะต้องเชื่อมต่อเราเตอร์ทั้งหมดใน AS 2345 เข้าด้วยกัน แต่การใช้ Confederation เราสามารถสร้างความสัมพันธ์ adjacency ระหว่างเราเตอร์ที่เชื่อมต่อถึงกันโดยตรงเท่านั้น มาพูดถึงเรื่องนี้โดยละเอียด หากเรามี AS 2345 เท่านั้น ลาฟอร์จ ได้รับการเดินขบวนจาก ปิ จะบอกให้เราเตอร์ทราบ ข้อมูล и เวิร์ฟแต่พวกเขาจะไม่บอกเราเตอร์เกี่ยวกับเรื่องนี้ Crusher . เส้นทางที่กระจายโดยเราเตอร์เองด้วย ลาฟอร์จ,คงไม่โอน. Crusher ไม่ เวิร์ฟ-ไม่นะ ข้อมูล.
คุณจะต้องกำหนดค่า Route-Reflector หรือความสัมพันธ์ในบริเวณใกล้เคียงที่เชื่อมต่อโดยสมบูรณ์ ด้วยการแบ่ง AS 2345 หนึ่งรายการออกเป็น 4 sub-AS (2,3,4,5) สำหรับเราเตอร์แต่ละตัว เราจะได้ตรรกะการทำงานที่แตกต่างกัน ทุกอย่างอธิบายได้อย่างสมบูรณ์แบบ .
แหล่งที่มา:
- คู่มือใบรับรองอย่างเป็นทางการของ CCIE Routing and Switching v5.0, เล่มที่ 2, ฉบับที่ห้า, Narbik Kocharians, Terry Vinson
- เว็บไซต์
- เว็บไซต์ .
ที่มา: will.com
