ตัวอย่างการใช้ BGP Community บน Cisco — Part 1
การใช้ BGP community แบบที่เค้าเตรียมมาให้แล้ว
— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (My Contents)
— — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — -
ฝากคอร์ส Python for Network Automation ผมด้วยครับ
— — — — — — — — — — — — — — — — — — — — — — — -
สำหรับ Part 1 นี้จะเป็นตัวอย่างการใช้ BGP well-known community ได้แก่
- no-advertise = prefix จะไม่ถูก advertise ต่อ (ทั้ง iBGP และ eBGP)
- no-export = prefix จะไม่ถูก advertise ออกนอก AS (eBGP)
- local-as = prefix จะถูก advertise เฉพาะภายใน AS
- internet = prefix จะถูกบังคับ advertise ออกแม้โดน community อื่นห้าม
Case 1: no-advertise
R1 ต้องการ advertise network 1.0.0.0/8 ไปให้ R2 แค่ตัวเดียว และห้ามไม่ให้ R2 advertise ต่อไปให้ใครอีก
Configuration บน R1
1. สร้าง Access List (ACL) เพื่อ identify เฉพาะ prefix 1.0.0.0/8
ip access-list extended NET_1
permit ip 1.0.0.0 0.255.255.255 any
2. สร้าง Route Map เพื่อ set community เป็น no-advertise
no-advertise คือ well-known community ที่บอกกับคนอื่นว่า “อย่า advertise ไปให้ peer ใด ๆ นะจ๊ะ” อะไรทำนองนั้น
route-map NO_ADV_1 permit 10
match ip address NET_1
set community no-advertise
!
route-map NO_ADV_1 permit 90
ส่วนบรรทัด permit 90 ถ้าเป็น programming ก็คือ else ซึ่งเป็นการบอกว่าถ้านอกเหนือจาก prefix 1.0.0.0/8 นั้นก็ปล่อยผ่านไปเฉย ๆ
3. สั่งให้ R1 ส่ง community (no-advertise) ออกไปให้ R2
router bgp 100
neighbor 12.1.1.2 send-community
neighbor 12.1.1.2 route-map NO_ADV1 out
ตรง policy direction นั้น ถ้าเราต้องการ apply policty บน local router (ตัวเราเอง) ให้ใช้ in แต่ที่ใช้ out เพราะ policy นี้จะถูกส่งออกไปยัง R2 นั่นเอง
4. ลอง Verify บน R2 ดู
จะเห็นว่า R2 ได้รับ comminuty เป็น no-advertise มากับ network 1.0.0.0/8 แล้ว ซึ่ง R2 จะไม่ advertise network นี้ให้ใครต่อ
R2# show ip bgp 1.0.0.0
BGP routing table entry for 1.0.0.0/8, version 18
Paths: (1 available, best # 1, table default, not advertised to any peer)
Not advertised to any peer
100
12.1.1.1 from 12.1.1.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: no-advertise
Case 2: no-export
R5 advertise network 5.0.0.0/8 ไปให้ R3 โดย R3 สามารถ advertise ต่อไปให้ neighbor ใน Local AS ได้ แต่ห้าม advertise ออกไปนอก AS
Configuration บน R5
- สร้าง Prefix List เพื่อ identify เฉพาะ prefix 5.0.0.0/8
คราวนี้เปลี่ยนจาก ACL มาเป็น Prefix List มั่งละกัน
ip prefix-list NET_5 permit 5.0.0.0/8
2. สร้าง Route Map เพื่อ set community เป็น no-export
no-export คือ well-known community ที่บอกกับคนอื่นว่า “อย่า advertise ไปให้ peer ที่อยู่นอก AS นะจ๊ะ”
route-map NO_EXP_5 permit 10
match ip address prefix-list NET_5
set community no-export
!
route-map NO_EXP_5 permit 90
3. สั่งให้ R5 ส่ง community (no-export) ออกไป
router bgp 500
neighbor 35.1.1.3 send-community
neighbor 35.1.1.3 route-map NO_EXP_5 out
4. ลอง Verify ดู
จะเห็นว่า R1 ได้รับ comminuty เป็น no-advertise มาพร้อมกับ network 1.0.0.0/8 แล้ว ซึ่ง R2 จะไม่ advertise network นี้ให้ใครต่อ
R3# show ip bgp 5.0.0.0BGP routing table entry for 5.0.0.0/8, version 8
Paths: (1 available, best # 1, table default, not advertised to EBGP peer)
Advertised to update-groups:
10
500
35.1.1.5 from 35.1.1.5 (5.5.5.5)
Origin IGP, metric 0, localpref 100, valid, external, best
Community: no-export
พบว่า R3 ได้รับ no-export community มากับ network 5.0.0.0/8
R2# show ip bgp 5.0.0.0BGP routing table entry for 5.0.0.0/8, version 19
Paths: (1 available, best # 1, table default, not advertised to EBGP peer)
Not advertised to any peer
500
23.1.1.3 from 23.1.1.3 (3.3.3.3)
Origin IGP, metric 0, localpref 100, valid, internal, best
Community: no-export
ส่วน R2 ก็เหมือนกัน ซึ่งรับมาจาก R3 (R3 advertise ให้ เพราะอยู่ใน AS เดียวกัน)
R4# show ip bgp 5.0.0.0% Network not in tableR1# show ip bgp 5.0.0.0% Network not in table
แน่นอนว่าทั้ง R4 หรือ R1 จะไม่รู้จัก network 5.0.0.0/8 เพราะไม่มีใคร advertise ผ่าน eBGP มาให้เลย
Case 3: local-as
R3 advertise network 3.0.0.0/8 ออกไปเฉพาะ AS ของตัวเองเท่านั้น
Configuration บน R3
1. สร้าง Route Map เพื่อ set community เป็น local-as
local-as คือ well-known community ที่บอกกับตัวเองว่า “ให้ advertise แค่ใน AS ของเราเท่านั้นนะจ๊ะ”
route-map LOCAL_ADV permit 10
set community local-as
2. กำหนดให้ R3 ส่ง community (local-as) ออกไปพร้อมกับ network 3.0.0.0/8
router bgp 230
network 3.0.0.0 route-map LOCAL_ADV
neighbor 23.1.1.2 send-community
คงไม่ต้อง verify แล้วเนอะ เพราะตอนนี้ R3 จะ advertise network 3.0.0.0/8 ให้เฉพาะภายใน AS (iBGP neighbor) เท่านั้น และแน่นอนว่า network นี้จะอยู่แค่ภายใน AS 230 เท่านั้น ไม่ให้ advertise ออกไปข้างนอก
Case 4: internet
R2 จะแหกกฎจาก Case 1 ที่ถูก no-advertise community จาก R1 ห้ามไม่ให้ advertise network ต่อไปให้ใคร
Configuration บน R2
1. สร้าง Access List (ACL) เพื่อ identify เฉพาะ prefix 1.0.0.0/8
ip access-list extended NET_1
permit ip 1.0.0.0 0.255.255.255 any
2. สร้าง Route Map เพื่อ set community เป็น internet
internet คือ well-known community ที่บอกว่า network นี้สามารถ advertise ไปให้ใครก็ได้
route-map ADV_1 permit 10
match ip address NET_1
set community internet
3. บอกให้ R2 เอา community (internet) override community (no-advertise) กับ network ที่รับมาจาก R1
router bgp 230
neighbor 12.1.1.1 route-map ADV_1 in
แม้ R1 จะส่ง no-advertise community มาให้ R2 เพื่อบอก R2 ว่าห้าม advertise network ดังกล่าวให้คนอื่น แต่ตอนนี้ R2 ก็เอา internet community มา override ทับไปบน network ใด ๆ ก็ตามที่รับมาจาก R1 ดังนั้น R2 จะ advertise network 1.0.0.0/8 ไปให้คนอื่นได้แล้ว
— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (My Contents)
— — — — — — — — — — — — — — —