ยินดีต้อนรับสู่ show running-config ครับ

บล็อก show running-config นี้สร้างไว้เพื่อเป็นแหล่งรวบรวมเทคนิคการตั้งค่าอุปกรณ์เครือข่าย Cisco ไม่ว่าจะเป็น Cisco IOS Router, Cisco Catalyst Swtich, Cisco ASA Firewall, Cisco Mars เป็นต้น รวมทั้งอาจจะมีเทคนิคการตั้งค่าอุปกรณ์ในยี่ห้ออื่น ๆ บ้างเล็กน้อยครับ

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

Wednesday, August 13, 2014

การตั้งค่า Inter-VRF Routing กับ VRF Lite


            การแบ่ง VRF (Virtual Routing and Forwarding table) บนแต่ละอุปกรณ์ จะเป็นการแบ่งขอบเขตของระบบเครือข่ายในระดับ Layer 3 ขึ้นมาในแต่ละอุปกรณ์ และในแต่ละ VRF จะมี Routing Table เป็นของตัวเองแยกออกจากกันอย่างสิ้นเชิง ทำให้โดยปกติแล้วโฮสต์ที่เชื่อมต่ออยู่คนละ VRF จะไม่สามารถติดต่อสื่อสารกันได้ แต่ในบางกรณีอาจจะมีความต้องการที่จะให้บาง VRF สามารถทำการติดต่อสื่อสารกันได้ จึงต้องมีการตั้งค่าบางอย่าง เพื่อที่จะทำการแลกเปลี่ยนข้อมูลเส้นทางระหว่าง VRF กัน นั่นก็คือการทำ inter-VRF Routing นั่นเองครับ

            ต้องขอบอกก่อนว่าบทความนี้จะเป็นบทความที่ต่อเนื่องมาจากบทความที่ผ่านมาในเรื่อง VRF Lite คืออะไร? นะครับ สำหรับใครที่ยังไม่ทราบหรือยังไม่รู้จักกับ VRF Lite ก็ขอให้ติดตามบทความที่ผ่านมาก่อนนะครับ

            หลาย ๆ ท่านคงนึกในใจว่า ก่อนที่จะทำ VRF ก็สามารถติดต่อสื่อสารกันได้อยู่แล้ว พอทำการตั้งค่า VRF ซึ่งจะทำให้ไม่สามารถติดต่อสื่อสารข้าม VRF กันได้ ยังต้องมาตั้งค่า inter-VRF Routing เพื่อให้กลับมาติดต่อสื่อสารกันได้อีก สู้เอา VRF ออกจะไม่ง่ายกว่าหรือ ต้องขอบอกว่าการแลกเปลี่ยนข้อมูลเส้นทางแบบปกติที่ไม่ใช้งาน VRF กับการแลกเปลี่ยนข้อมูลเส้นทางด้วยการใช้ inter-VRF Routing นั้นจะต่างกันพอสมควร เนื่องจากการใช้งาน inter-VRF Routing เราจะสามารถกำหนดเงื่อนไขของข้อมูลเส้นทางที่จะแลกเปลี่ยนได้มากกว่า เช่น มีลูกค้า 3 รายใช้งานอยู่คนละ VRF กัน เราอาจจะทำ inter-VRF ระหว่างลูกค้ารายที่ 1 กับรายที่ 2 ให้สามารถติดต่อสื่อสารกันได้ แต่ไม่สามารถติดต่อสื่อสารกับลูกค้ารายที่ 3 ได้ เป็นต้น

            การใช้งาน inter-VRF Routing จะทำให้สามารถแลกเปลี่ยนข้อมูลเส้นทางระหว่าง VRF โดยที่เราสามารถทำการกำหนดเงื่อนไขของข้อมูลเส้นทางที่ต้องการจะแลกเปลี่ยนระห่วาง VRF ได้ เช่น ในกรณีที่ผู้ให้บริการ มีการให้บริการที่เป็นส่วนกลาง อย่างเช่น อินเทอร์เน็ต หรือ DNS Server สำหรับให้บริการกับลูกค้าที่ต้องการอยู่ และลูกค้ารายใดที่ต้องการใช้บริการส่วนกลางของผู้ให้บริการ ทางผู้ให้บริการก็จะทำการแลกเปลี่ยนข้อมูลเส้นทางระหว่าง VRF ของผู้ให้บริการ กับ VRF ของลูกค้าแต่ละรายที่ต้องการใช้บริการ ซึ่งจะทำให้ลูกค้าแต่ละรายจะสามารถใช้บริการส่วนกลางได้ในเวลาเดียวกัน โดยที่ยังคงมีการแบ่งขอบเขตในระดับ Layer 3 กับลูกค้ารายอื่น ๆ ทำให้ยังคงไม่สามารถติดต่อสื่อสารกับลูกค้ารายอื่น ๆ ได้อยู่ เป็นต้น

            ในการทำงานของ inter-VRF Routing บน VRF Lite จะอาศับคุณสมบัติบางประการของ MP-BGP มาช่วยในการแลกเปลี่ยนข้อมูลเส้นทางระหว่างแต่ละ VRF โดย MP-BGP หรือจะเรียกว่า multiprotocol BGP เป็น BGP Routing Protocol ที่ถูกนิยามไว้ใน RFC4760 ต่างจาก BGP แบบปกติตรงที่มีความสามารถในการรองรับการใช้งานหมายเลขที่อยู่ได้หลายชนิดในเวลาเดียวกัน (BGP แบบปกติจะรองรับเฉพาะ IPv4 unicast address เท่านั้น) โดย MP-BGP จะสามารถใช้งานได้กับทั้ง IPv4, IPv6 และยังรองรับทั้ง unicast และ multicast อีกด้วย ซึ่งโดยทั่วไปแล้ว MP-BGP จะนำไปใช้งานกับ MPLS L3 VPN ในการแลกเปลี่ยนข้อมูล VPN Label ที่ได้เรียนรู้มาสำหรับแต่ละเส้นทางของลูกค้าบนเครือข่าย MPLS แต่ในการนำ MP-BGP มาใช้งานกับ VRF Lite นี้ จะนำคุณสมบัติบางประการของ MP-BGP มาใช้งาน ในการแลกเปลี่ยนข้อมูลเส้นทางระหว่างแต่ละ VRF เท่านั้น สำหรับใครที่ยังไม่รู้จักกับ BGP ก็ขอให้ลองอ่านคู่มือการตั้งค่า ในบทความ BGP Handbook : คู่มือ BGP Routing ขั้นพื้นฐาน กันก่อนนะครับ

            เนื่องจาก เราจะต้องใช้งาน MP-BGP เป็น Routing Protocol ในการแลกเปลี่ยนข้อมูลเส้นทางระหว่างแต่ละ VRF ซึ่งไม่ว่าภายในแต่ละ VRF จะมีการใช้งาน Routing Protocol ใด ๆ อยู่ ไม่ว่าจะเป็น RIP, OSPF, EIGRP หรือแม้แต่ Static ก็จะต้องมีการ Redistirbution ข้อมูลเส้นทางระหว่าง Routing Protocol ที่ใช้งานอยู่กับ MP-BGP เสมอ เพื่อให้ MP-BGP สามารถเรียนรู้ข้อมูลเส้นทางจาก Routing Protocol อื่น ๆ ได้ และจะส่งผลให้ในตาราง Routing Table ของ VRF ปลายทางจะมองเห็นข้อมูลเส้นทางที่เรียนรู้มาจาก VRF อื่น ๆ เป็นข้อมูลเส้นทางที่เรียนรู้มาจาก BGP เสมอ และอาจจะต้องทำการ Redistribution ข้อมูลเส้นทางที่ได้เรียนรู้มานี้ จาก MP-BGP ไปยัง Routing Protocol ที่ใช้งานภายในแต่ละ VRF อีกครั้ง จึงจะสามารถเรียนรู้ข้อมูลเส้นทางกันระหว่างแตละ VRF ได้อย่างสมบูรณ์

นอกเหนือจาก MP-BGP แล้ว ยังมีค่าอื่น ๆ ที่จำเป็นจะต้องใช้งานในการตั้งค่า inter-VRF Routing อีก ดังนี้
  • Route Distinguisher (RD)
  • Route Target

 Route Distinguisher (RD) : เปรียบเสมือน tag ที่ใช้ในการบอกว่าข้อมูลเส้นทางที่รับ-ส่งกันอยู่ เป็นของ VRF ใด ซึ่งจากบทความ VRF Lite คืออะไร? ที่ผานมา จะเห็นว่าไม่จำเป็นที่จะต้องทำการตั้งค่า RD ก็ยังคงสามารถใช้งาน VRF Lite ได้ แต่ในกรณีที่ต้องการใช้งาน VRF ร่วมกับ MP-BGP ได้นั้น จะต้องทำการตั้งค่า RD ของแต่ละ VRF ก่อนเสมอ เนื่องจาก MP-BGP จะใช้ค่า RD ในการแยกแยกข้อมูลเส้นทางว่าเป็นของ VRF ใด เพื่อให้สามารถทำการรับ-ส่งข้อมูลไปยังแต่ละ VRF ได้อย่างถูกต้อง ตัวอย่างเช่น มีลูกค้า 2 ราย ที่ใช้งาน subnet address เป็น 192.168.0.0/24 ที่เหมือนกันอยู่ในคนละ VRF กัน ค่า RD ก็จะเป็นวิธีการที่จะใช้ในการติดตามได้ว่าข้อมูลที่รับ-ส่งไปยัง subnet address 192.168.0.0/24 นี้ เป็นของ VRF ใด เพื่อให้สามารถส่งข้อมูลไปยัง VRF ปลายทางได้อย่างถูกต้อง

            ค่า RD จะมีขนาด 64 bits หรือ 8 bytes และจะประกอบไปด้วย 3 fields คือ type ขนาด 2 byte, ค่า administrator และค่า value อีก 2 หรือ 4 bytes โดยในปัจจุบันจะมีการใช้งานค่า RD อยู่ 3 ชนิด ดังนี้


            ซึ่งโดยทั่วไปแล้วเราก็จะใช้การตั้งค่า RD แบบ Type 2 คือใช้หมายเลข AS Numer ตามด้วยค่าตัวเลขตามที่ต้องการ <AS Number>:<value>

Route Target : เปรียบเสมือน tag ที่เพิ่มเข้าไปในเส้นทางข้อมูลที่แลกเปลี่ยนกันระหว่าง VRF ใช้เพื่อกำหนดเงื่อนไขในการแลกเปลี่ยนข้อมูลเส้นทางระหว่างแต่ละ VRF โดย Route Target จะเป็น extended communities ตัวนึงบน MP-BGP ที่จะมีขนาดและรูปแบบเหมือนกับค่า RD แต่ในการทำงานจะไม่มีส่วนเกียวข้องใด ๆ ต่อกัน หมายถึงเราสามารถที่จะตั้งค่า RD ให้ใช้งานคนละหมายเลขกับค่า Route Target ได้ แต่โดยทั่วไปแล้ว ถ้ามีการใช้งานค่า Route Target เพียงหมายเลขเดียว (ค่า Route Target สามารถมีได้หลายหมายเลขต่อ VRF) ก็จะนิยมใช้ค่า Route Target เป็นหมายเลขเดียวกันกับค่า RD เพื่อให้ง่ายต่อการเข้าใจ

            ในการใช้งานค่า Route Target จะต้องมีการกำหนดหมายเลข พร้อมทั้งระบุว่าจะ import หรือ export ข้อมูลเส้นทางจาก VRF โดยจะมีลักษณะการทำงานดังนี้

  • Route Target Import : เป็นการเลือกข้อมูลเส้นทางที่จะนำเข้ามายัง VRF โดยจะเลือกจาก Extended Community บน MP-BGP ที่มีหมายเลขตามที่กำหนด
  • Route Target Export : เป็นการส่งออกข้อมูลเส้นทางไปยัง VRF อื่น ๆ และจะทำการเพิ่ม Extended Community บน MP-BGP ไปด้วยหมายเลขที่กำหนดนี้

            ตัวอย่างการตั้งค่า route-target export บนเราเตอร์ ซึ่งจะประกอบไปด้วย 3 VRF คือ VRF RED, VRF GREEN และ VRF SHARED โดยภายใน Routing Table ของแต่ละ VRF ก่อนที่จะทำ inter-VRF Routing จะมีข้อมูลเส้นทาง ดังนี้

RED
GREEN
SHARED
vrf definition RED
 rd 65000:10
 route-target export 65000:110
 !
 address-family ipv4
 exit-address-family
vrf definition GREEN
 rd 65000:20
 route-target export 65000:120
 !
 address-family ipv4
 exit-address-family
vrf definition SHARED
 rd 65000:100
 route-target export 65000:100
 !
 address-family ipv4
 exit-address-family
Router#show ip route vrf RED
Routing Table: RED

D    10.10.X.X/X [90/A] via Y
Router#show ip route vrf GREEN
Routing Table: GREEN

O    10.20.X.X/X [110/B] via Y
Router#show ip route vrf SHARED
Routing Table: SHARED

B   192.168.X.X/X [20/0] via Y


            จากตัวอย่างด้านบน ในแต่ละ VRF จะมีการใช้คำสั่ง "route-target export" อยู่ ซึ่งจะทำให้ข้อมูลเส้นทางที่จะส่งออกไปยัง VRF อื่น ๆ ผ่านทาง MP-BGP จะมี extended community เป็นหมายเลข Route Target ตามที่กำหนดในแต่ละ VRF เพิ่มเข้าไปด้วย


            จากนั้น จะเป็นการเลือกข้อมูลเส้นทางที่จะนำเข้ามายังแต่ละ VRF โดยจะสามารถกำหนดข้อมูลเส้นทางที่ต้องการนำเข้ามาได้ ด้วยการใช้คำสั่ง "route-target import" โดยเมื่อพบว่าข้อมูลเส้นทางที่ส่งผ่านมาทาง MP-BGP มี extended community ที่ตรงกับหมายเลข Route Target ที่กำหนดไว้ เราเตอร์ก็จะนำข้อมูลเส้นทางนั้นมาใช้งานใน BGP Routing Table ของ VRF ปัจจุบันทันที ตัวอย่างเช่น

RED
GREEN
SHARED
vrf definition RED
 rd 65000:10
 route-target export 65000:110
 route-target import 65000:100
 !
 address-family ipv4
 exit-address-family
vrf definition GREEN
 rd 65000:20
 route-target export 65000:120
 route-target import 65000:100
 !
 address-family ipv4
 exit-address-family
vrf definition SHARED
 rd 65000:100
 route-target export 65000:100
 route-target import 65000:110
 route-target import 65000:120
 !
 address-family ipv4
 exit-address-family
Router#show ip route vrf RED
Routing Table: RED

D    10.10.X.X/X [90/A] via Y
B    192.168.X.X/X [A/B] via Y
Router#show ip route vrf GREEN
Routing Table: GREEN

O    10.20.X.X/X [110/B] via Y  
B    192.168.X.X/X [A/B] via Y
Router#show ip route vrf SHARED
Routing Table: SHARED

B    192.168.X.X/X [20/0] via Y
B    10.10.X.X/X [A/B] via Y
B    10.20.X.X/X [A/B] via Y


            จากตัวอย่างด้านบน ภายในแต่ละ VRF จะมีการใช้งาน Routing Protocol ที่แตกต่างกันออกไป คือ VRF RED จะใช้ eigrp, VRF GREEN ใช้ OSPF ส่วน VRF SHARED จะใช้ BGP ในการแลกเปลี่ยนข้อมูลเส้นทางภายใน VRF ของตัวเอง แต่จะเห็นว่าข้อมูลเส้นทางที่เรียนรู้มาจาก VRF อื่น ๆ จะถูกมองเห็นว่าเป็นข้อมูลเส้นทางที่เรียนรู้มาจาก BGP เสมอ ก็เนื่องจากการทำ inter-VRF Routing จะต้องใช้การทำงานผ่านทาง MP-BGP นั่นเอง ซึ่งถ้าต้องการที่จะนำข้อมูลเส้นทางนี้ไปใช้งานกับ Routing Protocol ของแต่ละ VRF ก็จะต้องทำการ Redistribution ระหว่าง Routing Protocol อื่น ๆ กับ MP-BGP อีกที

            เอาละครับ เรามาลองดูตัวอย่างการตั้งค่ากันดีกว่า โดยตัวอย่างการตั้งค่าในวันนี้ จะนำกรณีที่ผู้ให้บริการ มีการให้บริการที่เป็นส่วนกลางคือ อินเทอร์เน็ต และ DNS Server ในการให้บริการแก่ลูกค้า 2 รายคือ Customer A และ Customer B โดยที่เครือข่ายของลูกค้าทั้งสองรายจะสามารถติดต่อสื่อสารกับ VRF SHARED ได้ แต่จะไม่สามารถติดต่อสื่อสารระหว่าง VRF RED และ VRF GREEN ได้ โดยจะมีการเชื่อมต่อและใช้งานหมายเลข IP address ตามภาพด้านล่างนี้ครับ


            จากภาพด้านบน ที่เราเตอร์ PE จะประกอบไปด้วย 3 VRF คือ VRF RED สำหรับเชื่อมต่อกับ Customer A, VRF GREEN สำหรับเชื่อมต่อกับ Customer B และ VRF SHARED สำหรับเชื่อมต่อเครือข่ายในการให้บริการส่วนกลางของผู้ให้บริการเอง โดยจากตัวอย่างในวันนี้ เราจะทำการตั้งค่า inter-VRF Routing บนเราเตอร์ PE01 ซึ่งจะใช้เป็นจุดศูนย์กลางในการแลกเปลี่ยนข้อมูลเส้นทางของแต่ละ VRF กันนะครับ

ขั้นตอนการตั้งค่า
1. ทำการสร้างและกำหนดชือ VRF
2. ทำการกำหนดอินเทอร์เฟสในระดับ Layer 3 เข้ากับ VRF ที่ต้องการ
3. ทำ Routing Protocol ต่าง ๆ บนแต่ละ VRF ตามต้องการ
4. ทำการตั้งค่าหมายเลข RD บนแต่ละ VRF
5. ทำการตั้งค่า MP-BGP บนอุปกรณ์ที่เป็นจุดศูนย์กลางในการแลกเปลี่ยนข้อมูลเส้นทาง
6. ทำการตั้งค่า Redistribution ข้อมูลเส้นทางจาก Routing Protocol ที่ใช้งานอยู่ในแต่ละ VRF ไปยัง MP-BGP
7. ทำการตั้งค่า Route Target Export เพื่อกำหนดหมายเลขของ extended community ใน MP-BGP ของข้อมูลเส้นทางที่จะส่งออกไปยัง VRF อื่น ๆ
8. ทำการตั้งค่า Route Target Import เพื่อกำหนดหมายเลขของ extended communtiy ใน MP-BGP ของข้อมูลเส้นทางที่จะนำเข้ามายังแต่ละ VRF
9. ทำการตั้งค่า Redistribution ข้อมูลเส้นที่ได้เรียนรู้มาจาก VRF อื่น ๆ ผ่านทาง MP-BGP ไปยัง Routing Protocol ที่ใช้งานอยู่ภายในแต่ละ VRF
10. การตรวจสอบการตั้งค่า

ขั้นตอนที่ 1-3
            ในขั้นตอนการตั้งค่าที่ 1-3 จะขออธิบายแบบคร่าว ๆ นะครับ เนื่องจากจะซ้ำกับบทความที่ผ่านมา ในบทความ VRF Lite คืออะไร? นะครับ สำหรับใครที่ยังไม่ทราบก็ขอให้ติดตามบทความที่ผ่านมาก่อนนะครับ (VRF Lite จะต้องทำการตั้งค่าบน PE ทั้งสองตัว แต่การทำ inter-VRF Routing สามารถทำบนอุปกรณ์ PE ตัวใดตัวหนึ่งที่มีการเชื่อมต่อไปยังทุก ๆ VRF ก็พอนะครับ ไม่จำเป็นที่จะต้องทำการตั้งค่าบนอุปกรณ์ PE ทุกตัว) โดยการตั้งค่าที่ใช้งานอยู่กับแต่ละ VRF บนอุปกรณ์ PE01 จะมีดังนี้ครับ

ตัวอย่างการตั้งค่า VRF บน PE01

!
vrf definition GREEN
 !
 address-family ipv4
 exit-address-family
!
vrf definition RED
 !
 address-family ipv4
 exit-address-family
!
vrf definition SHARED
 rd 65000:100
 !
 address-family ipv4
 exit-address-family
!

            จากตัวอย่างด้านบน เป็นการตั้งค่า VRF บนอุปกรณ์ PE01 โดยได้ทำการสร้าง VRF ด้วยการใช้วิธีการตั้งค่าแบบ Multiprotocol VRF ขึ้นมา 3 VRF คือ VRF RED สำหรับเชื่อมต่อไปยัง Customer-A, VRF GREEN สำหรับเชื่อมต่อไปยัง Customer-B และ VRF SHARED สำหรับเชื่อมต่อไปยังเราเตอร์ SP ของผู้ให้บริการในการที่จะให้บริการส่วนกลาง (สำหรับ VRF SHARED จะขอตั้งค่า RD ไว้ก่อน เพราะจะต้องใช้ในการทำ BGP Routing ระหว่างอุปกรณ์ของผู้ให้บริการด้วยกัน)

            จากนั้นจะเป็นการเชื่อมโยงอินเทอร์เฟสกับ VRF ที่ต้องการ โดยจะทำการเชื่อมต่อตามภาพด้านบนนะครับ

ตัวอย่างการตั้งค่าบนเราเตอร์ PE01

!
interface Ethernet0/0
 no ip address
!
interface Ethernet0/0.10
 encapsulation dot1Q 10
 vrf forwarding RED
 ip address 10.10.123.5 255.255.255.252
!
interface Ethernet0/0.20
 encapsulation dot1Q 20
 vrf forwarding GREEN
 ip address 10.20.123.5 255.255.255.252
!
interface Ethernet0/1
 vrf forwarding RED
 ip address 10.10.123.2 255.255.255.252
!
interface Ethernet0/2
 vrf forwarding GREEN
 ip address 10.20.123.2 255.255.255.252
!
interface Ethernet1/0
 vrf forwarding SHARED
 ip address 192.168.123.2 255.255.255.252
!

            ต่อมาจะเป็นการตั้งค่า Routing Protocol ต่าง ๆ ที่ใช้งานภายในแต่ละ VRF โดยจะกำหนดให้ VRF RED ใช้ EIGRP, VRF GREEN ใช้ OSPF และ VRF SHARED ที่เชื่อมต่อไปยังเราเตอร์ SP ของผู้ให้บริการด้วยกันเอง ใช้งาน IBGP นะครับ

ตัวอย่างการตั้งค่าบนเราเตอร์ PE01

router eigrp RED
 !
 address-family ipv4 unicast vrf RED autonomous-system 20
  !
  topology base
  exit-af-topology
  network 10.10.123.0 0.0.0.7
 exit-address-family
!
router ospf 10 vrf GREEN
 network 10.20.123.0 0.0.0.7 area 0
!
router bgp 65000
 bgp router-id 192.168.123.2
 bgp log-neighbor-changes
 !
 address-family ipv4 vrf SHARED
  neighbor 192.168.123.1 remote-as 65000
  neighbor 192.168.123.1 activate
 exit-address-family
!

            จากนั้น เมื่อทำการตั้งค่าบนอุปกรณ์ตัวอื่น ๆ อย่างถูกต้อง (VRF RED ใช้ EIGRP, VRF GREEN ใช้ OSPF และ VRF SHARED ใช้ BGP) จะพบว่า Routing Table ของเราเตอร์ PE01 จะมีข้อมูลเส้นทาง ดังนี้

ตัวอย่าง Routing Table บนเราเตอร์ PE01

Global routing table

PE01#show ip route
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
       + - replicated route, % - next hop override

Gateway of last resort is not set

VRF RED

PE01#show ip route vrf RED

Routing Table: RED
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
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 7 subnets, 3 masks
D        10.10.0.0/24 [90/1024640] via 10.10.123.1, 00:10:05, Ethernet0/1
D        10.10.10.0/24 [90/1536640] via 10.10.123.6, 00:10:05, Ethernet0/0.10
C        10.10.123.0/30 is directly connected, Ethernet0/1
L        10.10.123.2/32 is directly connected, Ethernet0/1
C        10.10.123.4/30 is directly connected, Ethernet0/0.10
L        10.10.123.5/32 is directly connected, Ethernet0/0.10
D        10.10.123.8/30 [90/1536000] via 10.10.123.6, 00:10:05, Ethernet0/0.10

VRF GREEN

PE01#show ip route vrf GREEN

Routing Table: GREEN
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
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
O        10.20.0.254/32 [110/11] via 10.20.123.1, 00:09:30, Ethernet0/2
O        10.20.10.254/32 [110/21] via 10.20.123.6, 00:09:20, Ethernet0/0.20
C        10.20.123.0/30 is directly connected, Ethernet0/2
L        10.20.123.2/32 is directly connected, Ethernet0/2
C        10.20.123.4/30 is directly connected, Ethernet0/0.20
L        10.20.123.5/32 is directly connected, Ethernet0/0.20
O        10.20.123.8/30 [110/20] via 10.20.123.6, 00:09:20, Ethernet0/0.20

VRF SHARED

PE01#show ip route vrf SHARED

Routing Table: SHARED
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
       + - replicated route, % - next hop override

Gateway of last resort is not set

      4.0.0.0/32 is subnetted, 1 subnets
B        4.2.2.2 [200/0] via 192.168.123.1, 00:00:05
      8.0.0.0/32 is subnetted, 1 subnets
B        8.8.8.8 [200/0] via 192.168.123.1, 00:00:05
      31.0.0.0/32 is subnetted, 1 subnets
B        31.13.79.33 [200/0] via 192.168.123.1, 00:00:05
      74.0.0.0/32 is subnetted, 1 subnets
B        74.125.68.132 [200/0] via 192.168.123.1, 00:00:05
      173.194.0.0/32 is subnetted, 1 subnets
B        173.194.120.146 [200/0] via 192.168.123.1, 00:00:05
B     192.168.0.0/24 [200/0] via 192.168.123.1, 00:00:05
      192.168.123.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.123.0/30 is directly connected, Ethernet1/0
L        192.168.123.2/32 is directly connected, Ethernet1/0
      200.200.200.0/30 is subnetted, 1 subnets
B        200.200.200.0 [200/0] via 192.168.123.1, 00:00:05

จะเห็นว่าบนแต่ละ VRF จะมีข้อมูลเส้นทางดังนี้
  • VRF RED จะมี Routing Prefix ที่ขึ้นต้นด้วย 10.10.X.X/X
  • VRF GREEN จะมี Routing Prefix ที่ขึ้นต้นด้วย 10.20.X.X/X
  • VRF SHARED จะมี Routing Prefix ที่ขึ้นต้นด้วย 192.168.123.X/X และ Prefix อื่น ๆ เช่น 4.2.2.2/32, 8.8.8.8/32, 200.200.200.0/30 เป็นต้น สำหรับเชื่อมต่อไปยังอินเทอร์เน็ต
            ในตอนนี้ข้อมูลเส้นทางของแต่ละ VRF ยังคงถูกแบ่งแยกกันอยู่ แต่ละ VRF จะยังไม่สามารถทำการติดต่อสื่อสารข้ามไปยัง VRF อื่น ๆ ได้ เพราะในขั้นตอนที่ 1-3 นี้ยังเป็นการตั้งค่าเพียงแค่ VRF Lite เพื่อที่จะแยกขอบเขตของเครือข่ายในระดับ Layer 3 เท่านั้น โดยตั้งแต่ขั้นตอนต่อไป จึงจะเป็นการเริ่มการตั้งค่า Inter-VRF Routing นะครับ

ขั้นตอนที่ 4 การตั้งค่าหมายเลข RD บนแต่ละ VRF

            จากบทความที่ผ่านมา (VRF Lite คืออะไร?) จะเป็นการตั้งค่าและใช้งาน VRF Lite เพียงอย่างเดียว ทำให้ไม่จำเป็นที่จะต้องทำการตั้งค่าหมายเลข RD ก็ได้ แต่ในบทความนี้จะนำ VRF Lite ไปใช้งานร่วมกับ MP-BGP ซึ่งจำเป็นที่จะต้องมีการกำหนดหมายเลข RD เพื่อให้ MP-BGP สามารถแยกแยะได้ว่าข้อมูลเส้นทางที่ส่งมาเป็นของ VRF ใด โดยการตั้งค่า RD สามารถทำได้โดยการใช้คำสั่ง "rd <as-number : value>" นะครับ

ตัวอย่างการตั้งค่า

PE01(config)#vrf definition RED
PE01(config-vrf)#rd 65000:20
PE01(config-vrf)#exit

PE01(config)#vrf definition GREEN
PE01(config-vrf)#rd 65000:10
PE01(config-vrf)#exit

PE01(config)#vrf definition SHARED
PE01(config-vrf)#rd 65000:100
PE01(config-vrf)#exit

PE01#show vrf
  Name                             Default RD          Protocols   Interfaces
  GREEN                            65000:10            ipv4        Et0/0.20
                                                                   Et0/2
  RED                              65000:20            ipv4        Et0/0.10
                                                                   Et0/1
  SHARED                           65000:100           ipv4        Et1/0

            จากตัวอย่างด้านบน เป็นการกำหนดหมายเลข RD ให้กับแต่ละ VRF โดย VRF RED จะใช้งานหมายเลข RD เป็น 65000:20, VRF GREEN จะใช้งานหมายเลข RD เป็น 65000:10 และ VRF SHARED จะใช้งานหมายเลข RD เป็น 65000:100

ขั้นตอนที่ 5 ทำการตั้งค่า MP-BGP บนเราเตอร์ PE01

            ในขั้นตอนนี้จะเป็นการตั้งค่า MP-BGP บนอุปกรณ์ Layer 3 ที่จะใช้ในการค้นหาเส้นทางระหว่างแต่ละ VRF โดยจากตัวอย่างนี้ จะทำการตั้งค่าอยู่บนเราเตอร์ PE01 โดยจะทำการสร้าง address-family แบบ IPv4 ให้กับแต่ละ VRF ที่ต้องการจะแลกเปลี่ยนข้อมูลเส้นทางซึ่งกันและกัน

PE01(config)#router bgp 65000
PE01(config-router)#address-family ipv4 unicast vrf RED
PE01(config-router-af)#exit-address-family
PE01(config-router)#address-family ipv4 unicast vrf GREEN
PE01(config-router-af)#exit-address-family
PE01(config-router)#address-family ipv4 unicast vrf SHARED
PE01(config-router-af)#exit-address-family

ขั้นตอนที่ 6 การตั้งค่า Redistribution ข้อมูลเส้นทางจาก Routing Protocol ที่ใช้งานอยู่ในแต่ละ VRF ไปยัง MP-BGP

            โดยปกติแล้ว ข้อมูลเส้นทางของแต่ละ Routing Protocol ก็จะเรียนรู้มาจากการใช้คำสั่ง network ก่อนที่จะประกาศไปยังอุปกรณ์ที่ใช้งาน Routing Protocol เดียวกัน แต่ในกรณีที่ต้องการจะเรียนรู้ข้อมูลเส้นทางด้วยวิธีการอื่น ๆ ที่ไม่ใช่จากคำสั่ง network หรือไม่ใช่จาก Routing Protocol เดียวกัน อย่างเช่นต้องการเรียนรู้ข้อมูลเส้นทางจาก OSPF ไปยัง EIGRP หรือจาก static route ไปยัง BGP เป็นต้น ก็จะต้องใช้วิธีการ Redistribution ข้อมูลเส้นทางที่ต้องการเข้ามา

            การ Redistribution จะเป็นวิธีการในการดึงข้อมูลเส้นทางจากวิธีการอื่น ๆ นอกเหนือจาก Routing Protocol ของตัวเองเข้ามาใช้งาน โดยข้อมูลเส้นทางที่ดึงเข้ามาอาจจะเรียนรู้มาจาก Routing Protocol คนละชนิด หรือชนิดเดียวกันแต่ต่าง AS กัน หรือจากการเชื่อมต่อแบบ directly connected ที่เป็นเครือข่ายที่เชื่อมต่ออยู่โดยตรงกับอุปกรณ์นั้น ๆ ก็ได้

            จากตัวอย่างนี้ เนื่องจากจะต้องใช้งาน MP-BGP เป็นตัวกลางในการแลกเปลี่ยนข้อมูลเส้นทางระหว่างแต่ละ VRF ทำให้จะต้องทำการ Redistribution ข้อมูลเส้นทางจาก Routing Protocol อื่น ๆ เข้ามายัง BGP จึงจะสามารถแลกเปลี่ยนข้อมูลเส้นทางระหว่างแต่ละ VRF ได้

โดยจะต้องทำการ Redistribution ข้อมูลเส้นทางบนแต่ละ VRF จาก Routing Protocol ต่าง ๆ มายัง MP-BGP ดังนี้
  • VRF RED - Redistribution จาก EIGRP และ connected ไปยัง MP-BGP
  • VRF GREEN - Redistribution จาก OSPF และ connected ไปยัง MP-BGP
ตัวอย่างการตั้งค่า

PE01(config)#router bgp 65000
PE01(config-router)#address-family ipv4 unicast vrf RED
PE01(config-router-af)#redistribute connected
PE01(config-router-af)#redistribute eigrp 20
PE01(config-router-af)#exit-address-family
PE01(config-router)#address-family ipv4 vrf GREEN
PE01(config-router-af)#redistribute connected
PE01(config-router-af)#redistribute ospf 10
PE01(config-router-af)#exit-address-family

            เมื่อทำการตั้งค่าตามตัวอย่างด้านบน MP-BGP จะเรียนรู้ข้อมูลเส้นทางจาก Routing Protocol อื่น ๆ เข้ามา แต่ข้อมูลเส้นทางที่เรียนรู้มานี้ ยังคงถูกแบ่งแยกในระดับ Layer 3 ตามแต่ละ VRF อยู่ และยังไม่สามารถติดต่อสื่อสารข้ามระหว่างแต่ละ VRF ได้ โดยเมื่อทำการตั้งค่าตามตัวอย่างด้านบนแล้ว จะพบว่า BGP Table จะมีข้อมูลเส้นทางดังนี้

PE01#show ip bgp vpnv4 vrf RED
BGP table version is 14, local router ID is 192.168.123.2
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
Route Distinguisher: 65000:20 (default for vrf RED)
 *>  10.10.0.0/24     10.10.123.1        1024640         32768 ?
 *>  10.10.10.0/24    10.10.123.6        1536640         32768 ?
 *>  10.10.123.0/30   0.0.0.0                  0         32768 ?
 *>  10.10.123.4/30   0.0.0.0                  0         32768 ?
 *>  10.10.123.8/30   10.10.123.6        1536000         32768 ?

PE01#show ip bgp vpnv4 vrf GREEN
BGP table version is 14, local router ID is 192.168.123.2
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
Route Distinguisher: 65000:10 (default for vrf GREEN)
 *>  10.20.0.254/32   10.20.123.1             11         32768 ?
 *>  10.20.10.254/32  10.20.123.6             21         32768 ?
 *>  10.20.123.0/30   0.0.0.0                  0         32768 ?
 *>  10.20.123.4/30   0.0.0.0                  0         32768 ?
 *>  10.20.123.8/30   10.20.123.6             20         32768 ?

PE01#show ip bgp vpnv4 vrf SHARED
BGP table version is 14, local router ID is 192.168.123.2
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
Route Distinguisher: 65000:100 (default for vrf SHARED)
 *>i 0.0.0.0          192.168.123.1            0    100      0 65001 ?

            แต่ถ้าหากดูบน Routing Table บนแต่ละ VRF จะพบว่าข้อมูลเส้นทางจะยังคงเหมือนเดิม คือมีเฉพาะข้อมูลเส้นทางของแต่ละ VRF ยังไม่มีข้อมูลเส้นทางของ VRF อื่น ๆ เนื่องจากว่ายังไม่ได้ทำมีการตั้งค่า Route Target ในการกำหนดการแลกเปลี่ยนข้อมูลเส้นทางระหว่างแต่ละ VRF

PE01#show ip route vrf RED

Routing Table: RED
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
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 7 subnets, 3 masks
D        10.10.0.0/24 [90/1024640] via 10.10.123.1, 01:09:24, Ethernet0/1
D        10.10.10.0/24 [90/1536640] via 10.10.123.6, 01:09:24, Ethernet0/0.10
C        10.10.123.0/30 is directly connected, Ethernet0/1
L        10.10.123.2/32 is directly connected, Ethernet0/1
C        10.10.123.4/30 is directly connected, Ethernet0/0.10
L        10.10.123.5/32 is directly connected, Ethernet0/0.10
D        10.10.123.8/30 [90/1536000] via 10.10.123.6, 01:09:24, Ethernet0/0.10

PE01#show ip route vrf GREEN

Routing Table: GREEN
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
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
O        10.20.0.254/32 [110/11] via 10.20.123.1, 01:08:45, Ethernet0/2
O        10.20.10.254/32 [110/21] via 10.20.123.6, 01:08:35, Ethernet0/0.20
C        10.20.123.0/30 is directly connected, Ethernet0/2
L        10.20.123.2/32 is directly connected, Ethernet0/2
C        10.20.123.4/30 is directly connected, Ethernet0/0.20
L        10.20.123.5/32 is directly connected, Ethernet0/0.20
O        10.20.123.8/30 [110/20] via 10.20.123.6, 01:08:35, Ethernet0/0.20

PE01#show ip route vrf SHARED

Routing Table: SHARED
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
       + - replicated route, % - next hop override

Gateway of last resort is 192.168.123.1 to network 0.0.0.0

B*    0.0.0.0/0 [200/0] via 192.168.123.1, 01:08:33
      192.168.123.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.123.0/30 is directly connected, Ethernet1/0
L        192.168.123.2/32 is directly connected, Ethernet1/0

ขั้นตอนที่ 7 การตั้งค่า Route Target Export

            ในขั้นตอนนี้จะเป็นการกำหนดหมายเลขของ Route Target สำหรับที่จะส่งไปเป็น extended community พร้อมกับข้อมูลเส้นทางของแต่ละ VRF ใน BGP update ซึ่งแต่ละ VRF จะสามารถกำหนดค่าได้หลายหมายเลข ตามลักษณะการใช้งานที่ต้องการ  แต่ตัวอย่างในวันนี้จะขอใช้งานค่า Route Target เพียงหมายเลขเดียวต่อ VRF นะครับ

ตัวอย่างนี้จะทำการกำหนดให้แต่ละ VRF ใช้ค่า extended community ดังนี้

  • VRF RED ใช้ Route Target Export หมายเลข 65000:20
  • VRF GREEN ใช้ Route Target Export หมายเลข 65000:10
  • VRF SHARED ใช้ Route Target Export หมายเลข 65000:100

ตัวอย่างการตั้งค่า
PE01(config)#vrf definition RED
PE01(config-vrf)#address-family ipv4
PE01(config-vrf-af)#route-target export 65000:20
PE01(config-vrf-af)#exit-address-family
PE01(config-vrf)#exit
PE01(config)#vrf definition GREEN
PE01(config-vrf)#address-family ipv4
PE01(config-vrf-af)#route-target export 65000:10
PE01(config-vrf-af)#exit-address-family
PE01(config-vrf)#exit
PE01(config)#vrf definition SHARED
PE01(config-vrf)#address-family ipv4
PE01(config-vrf-af)#route-target export 65000:100
PE01(config-vrf-af)#exit-address-family
PE01(config-vrf)#exit

            จากตัวอย่างการตั้งค่าด้านบน เมื่อมีการส่ง BGP update ข้อมูลเส้นทางจากแต่ละ VRF จะถูกเพิ่ม extended community ไปตามที่กำหนดไปด้วย

ขั้นตอนที่ 8 การต้้งค่า Route Target Import

            เมื่อทำการกำหนดค่า Route Target Export แล้ว ข้อมูลเส้นทางของแต่ละ VRF ก็จะถูกกำหนดหมายเลข extended community เอาไว้ ในขั้นตอนนี้ก็จะเป็นการคัดเลือกว่าจะนำเข้าข้อมูลเส้นทางใดมายัง VRF ของตัวเองบ้าง โดยใช้งานหมายเลข extended community ที่ได้กำหนดให้กับข้อมูลเส้นทางของแต่ละ VRF ที่ได้กำหนดไว้ในขั้นตอนที่ผ่านมา

            ในตัวอย่างนี้ ต้องการที่จะให้ Customer A (VRF RED) และ Customer B (VRF GREEN) สามารถใช้บริการส่วนกลางคือ DNS-Server และอินเทอร์เน็ตของผู้ให้บริการได้ แต่ไม่ให้สามารถติดต่อสื่อสารระหว่างเครือข่ายของ Customer ด้วยกันเองได้ ดังนั้นจากตัวอย่างนี้ จะต้องมีการกำหนดค่า Route Target Import ดังนี้

  • VRF RED จะต้อง import ข้อมูลเส้นทางของ VRF SHARED
  • VRF GREEN จะต้อง import ข้อมูลเส้นทางของ VRF SHARED
  • VRF SHARED จะต้อง import ข้อมูลเส้นทางของ VRF RED และ VRF GREEN

ตัวอย่างการตั้งค่า

PE01(config)#vrf definition RED
PE01(config-vrf)#address-family ipv4
PE01(config-vrf-af)#route-target import 65000:100
PE01(config-vrf-af)#exit-address-family
PE01(config-vrf)#exit
PE01(config)#vrf definition GREEN
PE01(config-vrf)#address-family ipv4
PE01(config-vrf-af)#route-target import 65000:100
PE01(config-vrf-af)#exit-address-family
PE01(config-vrf)#exit
PE01(config-vrf)#address-family ipv4
PE01(config-vrf-af)#route-target import 65000:10
PE01(config-vrf-af)#route-target import 65000:20
PE01(config-vrf-af)#exit-address-family
PE01(config-vrf)#exit

            โดยเมื่อทำการตั้งค่าตามตัวอย่างด้านบนแล้ว บน Routing Table ของแต่ละ VRF จะสามารถแลกเปลี่ยนข้อมูลเส้นทางระหว่าง VRF ได้ตามที่กำหนด โดย VRF SHARED จะสามารถแลกเปลี่ยนข้อมูลเส้นทางกับ VRF RED และ VRF GREEN ได้ แต่จะไม่พบข้อมูลเส้นทางของ VRF RED ในตาราง Routing Table ของ VRF GREEN และไม่พบไม่พบข้อมูลเส้นทางของ VRF GREEN ในตาราง Routing Table ของ VRF RED เนื่องจากไม่ต้องการให้สามารถติดต่อสื่อสารจาก Customer A ไปยัง Customer B ได้โดยตรง

PE01#show ip route vrf RED

Routing Table: RED
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
       + - replicated route, % - next hop override

Gateway of last resort is not set

      4.0.0.0/32 is subnetted, 1 subnets
B        4.2.2.2 [200/0] via 192.168.123.1 (SHARED), 00:00:22
      8.0.0.0/32 is subnetted, 1 subnets
B        8.8.8.8 [200/0] via 192.168.123.1 (SHARED), 00:00:22
      10.0.0.0/8 is variably subnetted, 7 subnets, 3 masks
D        10.10.0.0/24 [90/1024640] via 10.10.123.1, 05:36:50, Ethernet0/1
D        10.10.10.0/24 [90/1536640] via 10.10.123.6, 05:36:50, Ethernet0/0.10
C        10.10.123.0/30 is directly connected, Ethernet0/1
L        10.10.123.2/32 is directly connected, Ethernet0/1
C        10.10.123.4/30 is directly connected, Ethernet0/0.10
L        10.10.123.5/32 is directly connected, Ethernet0/0.10
D        10.10.123.8/30 [90/1536000] via 10.10.123.6, 05:36:50, Ethernet0/0.10
      31.0.0.0/32 is subnetted, 1 subnets
B        31.13.79.33 [200/0] via 192.168.123.1 (SHARED), 00:00:22
      74.0.0.0/32 is subnetted, 1 subnets
B        74.125.68.132 [200/0] via 192.168.123.1 (SHARED), 00:00:22
      173.194.0.0/32 is subnetted, 1 subnets
B        173.194.120.146 [200/0] via 192.168.123.1 (SHARED), 00:00:22
B     192.168.0.0/24 [200/0] via 192.168.123.1 (SHARED), 00:00:22
      192.168.123.0/30 is subnetted, 1 subnets
B        192.168.123.0 [200/0] via 192.168.123.1 (SHARED), 00:00:22
      200.200.200.0/30 is subnetted, 1 subnets
B        200.200.200.0 [200/0] via 192.168.123.1 (SHARED), 00:00:22


PE01#show ip route vrf GREEN

Routing Table: GREEN
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
       + - replicated route, % - next hop override

Gateway of last resort is not set

      4.0.0.0/32 is subnetted, 1 subnets
B        4.2.2.2 [200/0] via 192.168.123.1 (SHARED), 00:00:30
      8.0.0.0/32 is subnetted, 1 subnets
B        8.8.8.8 [200/0] via 192.168.123.1 (SHARED), 00:00:30
      10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
O        10.20.0.254/32 [110/11] via 10.20.123.1, 05:36:15, Ethernet0/2
O        10.20.10.254/32 [110/21] via 10.20.123.6, 05:36:05, Ethernet0/0.20
C        10.20.123.0/30 is directly connected, Ethernet0/2
L        10.20.123.2/32 is directly connected, Ethernet0/2
C        10.20.123.4/30 is directly connected, Ethernet0/0.20
L        10.20.123.5/32 is directly connected, Ethernet0/0.20
O        10.20.123.8/30 [110/20] via 10.20.123.6, 05:36:05, Ethernet0/0.20
      31.0.0.0/32 is subnetted, 1 subnets
B        31.13.79.33 [200/0] via 192.168.123.1 (SHARED), 00:00:30
      74.0.0.0/32 is subnetted, 1 subnets
B        74.125.68.132 [200/0] via 192.168.123.1 (SHARED), 00:00:30
      173.194.0.0/32 is subnetted, 1 subnets
B        173.194.120.146 [200/0] via 192.168.123.1 (SHARED), 00:00:30
B     192.168.0.0/24 [200/0] via 192.168.123.1 (SHARED), 00:00:30
      192.168.123.0/30 is subnetted, 1 subnets
B        192.168.123.0 [200/0] via 192.168.123.1 (SHARED), 00:00:30
      200.200.200.0/30 is subnetted, 1 subnets
B        200.200.200.0 [200/0] via 192.168.123.1 (SHARED), 00:00:30

PE01# show ip route vrf SHARED

Routing Table: SHARED
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
       + - replicated route, % - next hop override

Gateway of last resort is not set

      4.0.0.0/32 is subnetted, 1 subnets
B        4.2.2.2 [200/0] via 192.168.123.1, 00:03:37
      8.0.0.0/32 is subnetted, 1 subnets
B        8.8.8.8 [200/0] via 192.168.123.1, 00:03:37
      10.0.0.0/8 is variably subnetted, 14 subnets, 3 masks
B        10.10.0.0/24
           [20/1024640] via 10.10.123.1 (RED), 00:00:35, Ethernet0/1
B        10.10.10.0/24
           [20/1536640] via 10.10.123.6 (RED), 00:00:35, Ethernet0/0.10
B        10.10.123.0/30 is directly connected (RED), 00:00:35, Ethernet0/1
L        10.10.123.2/32 is directly connected, Ethernet0/1
B        10.10.123.4/30 is directly connected (RED), 00:00:35, Ethernet0/0.10
L        10.10.123.5/32 is directly connected, Ethernet0/0.10
B        10.10.123.8/30
           [20/1536000] via 10.10.123.6 (RED), 00:00:35, Ethernet0/0.10
B        10.20.0.254/32 [20/11] via 10.20.123.1 (GREEN), 00:00:35, Ethernet0/2
B        10.20.10.254/32
           [20/21] via 10.20.123.6 (GREEN), 00:00:35, Ethernet0/0.20
B        10.20.123.0/30 is directly connected (GREEN), 00:00:35, Ethernet0/2
L        10.20.123.2/32 is directly connected, Ethernet0/2
B        10.20.123.4/30
           is directly connected (GREEN), 00:00:35, Ethernet0/0.20
L        10.20.123.5/32 is directly connected, Ethernet0/0.20
B        10.20.123.8/30
           [20/20] via 10.20.123.6 (GREEN), 00:00:35, Ethernet0/0.20
      31.0.0.0/32 is subnetted, 1 subnets
B        31.13.79.33 [200/0] via 192.168.123.1, 00:03:37
      74.0.0.0/32 is subnetted, 1 subnets
B        74.125.68.132 [200/0] via 192.168.123.1, 00:03:37
      173.194.0.0/32 is subnetted, 1 subnets
B        173.194.120.146 [200/0] via 192.168.123.1, 00:03:37
B     192.168.0.0/24 [200/0] via 192.168.123.1, 00:03:37
      192.168.123.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.123.0/30 is directly connected, Ethernet1/0
L        192.168.123.2/32 is directly connected, Ethernet1/0
      200.200.200.0/30 is subnetted, 1 subnets
B        200.200.200.0 [200/0] via 192.168.123.1, 00:03:37

            จากตัวอย่างด้านบน จะเห็นว่าข้อมูลเส้นทางได้มีการแลกเปลี่ยนกันระหว่างแต่ละ VRF เรียบร้อยแล้ว โดยบน Routing Table ของ VRF RED และ VRF GREEN จะพบข้อมูลเส้นทางที่ได้เรียนรู้มาจาก VRF SHARED แล้ว และบน VRF SHARED ก็จะพบข้อมูลเส้นทางของ VRF RED และ VRF GREEN แล้วเช่นกัน โดยจะสังเกตเห็นว่าข้อมูลเส้นทางที่เรียนรู้มาจาก VRF อื่น ๆ จะเห็นว่าเป็นข้อมูลเส้นทางที่เรียนรู้มาจาก BGP และจะเห็นชื่อ VRF ต้นทางใน Routing Table ขึ้นมาใน Routing Table ด้วย

            ซึ่งเมื่อเสร็จสิ้นขั้นตอนนี้ จะสามารถเรียกได้ว่าการทำ inter-VRF Routing นั้นเสร็จแล้วก็ว่าได้ แต่ข้อมูลเส้นทางจะอยู่บน Routing Table ของเราเตอร์ PE01 เท่านั้น เนื่องจากยังไม่ได้ประกาศเครือข่ายที่ได้เรียนรู้มาจาก VRF อื่น ๆ ไปยัง Routing Protocol ที่ใช้งานอยู่ภายในแต่ละ VRF ตามขั้นตอนต่อไป

ขั้นตอนที่ 9 การตั้งค่า Redistribution ข้อมูลเส้นที่ได้เรียนรู้มาจาก VRF อื่น ๆ ผ่านทาง MP-BGP ไปยัง Routing Protocol ที่ใช้งานอยู่ภายในแต่ละ VRF

            จากขั้นตอนที่ผ่านมา แม้ว่าจะสามารถเห็นข้อมูลเส้นทางข้ามระหว่าง VRF กันได้แล้ว แต่ข้อมูลเส้นทางนี้ยังมีอยู่บนเฉพาะ Routing Table ของเราเตอร์ PE01 เท่านั้น ส่วนเราเตอร์ตัวอื่น ๆ ของ VRF RED และ VRF GREEN จะไม่มีข้อมูลเส้นทางที่ได้เรียนรู้มาจาก VRF SHARED เราจึงต้องทำการ Redistribution ข้อมูลเส้นทางจาก MP-BGP ไปยัง Routing Protocol ที่ใช้งานอยู่บน VRF RED และ VRF GREEN อีกรอบ เพื่อประกาศข้อมูลเส้นทางที่ได้เรียนรู้มาไปให้กับเราเตอร์ทุก ๆ ตัวภายใน VRF RED และ VRF GREEN

ตัวอย่างการ show ip route บนเราเตอร์ CE-A-HQ ก่อนที่จะทำการ Redistribution ข้อมูลเส้นทางจาก MP-BGP ไปยัง EIGRP Routing Protocol

CE-A-HQ#show ip route
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
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 7 subnets, 3 masks
C        10.10.0.0/24 is directly connected, Loopback0
L        10.10.0.254/32 is directly connected, Loopback0
D        10.10.10.0/24 [90/2048640] via 10.10.123.2, 04:44:07, Ethernet0/0
C        10.10.123.0/30 is directly connected, Ethernet0/0
L        10.10.123.1/32 is directly connected, Ethernet0/0
D        10.10.123.4/30 [90/1536000] via 10.10.123.2, 04:44:12, Ethernet0/0
D        10.10.123.8/30 [90/2048000] via 10.10.123.2, 04:44:07, Ethernet0/0

            จะเห็นว่าข้อมูลเส้นทางนั้นจะยังคงเหมือนเดิม และยังไม่มีข้อมูลเส้นทางที่ได้เรียนรู้มาจาก VRF SHARED เข้ามา ทำให้ยังไม่สามารถติดต่อสื่อสารข้ามระหว่าง VRF กันได้ ดังนั้น เราจึงต้องทำการ Redistribution ข้อมูลเส้นทางจาก MP-BGP ไปยัง Routing Protocol ต่าง ๆ ตามแต่ละ VRF บนเราเตอร์ PE01 เสียก่อน ข้อมูลเส้นทางจึงจะสามารถส่งมายังอุปกรณ์ตัวอื่น ๆ ได้

ตัวอย่างการตั้งค่า
PE01(config)#router eigrp RED
PE01(config-router)#address-family ipv4 unicast vrf RED autonomous-system 20
PE01(config-router-af)#topology base
PE01(config-router-af-topology)#redistribute bgp 65000 metric 100000 1 255 1 1500
PE01(config-router-af-topology)#exit-af-topology
PE01(config-router-af)#exit-address-family

PE01(config)#router ospf 10 vrf GREEN
PE01(config-router)#redistribute bgp 65000 subnets
PE01(config-router)#exit

            จากตัวอย่างด้านบนเป็นการตั้งค่าการ Redistribution ข้อมูลเส้นทางจาก MP-BGP ไปยัง EIGRP บน VRF RED และจาก MP-BGP ไปยัง OSPF บน VRF GREEN ซึ่งจะพบว่าข้อมูลเส้นทางที่ได้เรียนรู้มาจะถูกประกาศไปยังเราเตอร์ทุกตัวภายในแต่ละ VRF แล้ว

ตัวอย่างการ show ip route บนเราเตอร์ CE-A-HQ หลังจากทำการ Redistribution ข้อมูลเส้นทางจาก MP-BGP ไปยัง EIGRP Routing Protocol แล้ว

CE-A-HQ#show ip route

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
       + - replicated route, % - next hop override

Gateway of last resort is not set

      4.0.0.0/32 is subnetted, 1 subnets
D EX     4.2.2.2 [170/1029120] via 10.10.123.2, 00:09:28, Ethernet0/0
      8.0.0.0/32 is subnetted, 1 subnets
D EX     8.8.8.8 [170/1029120] via 10.10.123.2, 00:09:28, Ethernet0/0
      10.0.0.0/8 is variably subnetted, 7 subnets, 3 masks
C        10.10.0.0/24 is directly connected, Loopback0
L        10.10.0.254/32 is directly connected, Loopback0
D        10.10.10.0/24 [90/2048640] via 10.10.123.2, 05:45:52, Ethernet0/0
C        10.10.123.0/30 is directly connected, Ethernet0/0
L        10.10.123.1/32 is directly connected, Ethernet0/0
D        10.10.123.4/30 [90/1536000] via 10.10.123.2, 05:45:57, Ethernet0/0
D        10.10.123.8/30 [90/2048000] via 10.10.123.2, 05:45:52, Ethernet0/0
      31.0.0.0/32 is subnetted, 1 subnets
D EX     31.13.79.33 [170/1029120] via 10.10.123.2, 00:09:28, Ethernet0/0
      74.0.0.0/32 is subnetted, 1 subnets
D EX     74.125.68.132 [170/1029120] via 10.10.123.2, 00:09:28, Ethernet0/0
      173.194.0.0/32 is subnetted, 1 subnets
D EX     173.194.120.146 [170/1029120] via 10.10.123.2, 00:09:28, Ethernet0/0
D EX  192.168.0.0/24 [170/1029120] via 10.10.123.2, 00:09:28, Ethernet0/0
      192.168.123.0/30 is subnetted, 1 subnets
D EX     192.168.123.0 [170/1029120] via 10.10.123.2, 00:09:28, Ethernet0/0
      200.200.200.0/30 is subnetted, 1 subnets
D EX     200.200.200.0 [170/1029120] via 10.10.123.2, 00:09:28, Ethernet0/0

ตัวอย่างการ show ip route บนเราเตอร์ CE-B-HQ หลังจากทำการ Redistribution ข้อมูลเส้นทางจาก MP-BGP ไปยัง EIGRP Routing Protocol แล้ว

CE-B-HQ#show ip route

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
       + - replicated route, % - next hop override

Gateway of last resort is not set

      4.0.0.0/32 is subnetted, 1 subnets
O E2     4.2.2.2 [110/1] via 10.20.123.2, 00:13:21, Ethernet0/0
      8.0.0.0/32 is subnetted, 1 subnets
O E2     8.8.8.8 [110/1] via 10.20.123.2, 00:13:21, Ethernet0/0
      10.0.0.0/8 is variably subnetted, 7 subnets, 3 masks
C        10.20.0.0/24 is directly connected, Loopback0
L        10.20.0.254/32 is directly connected, Loopback0
O        10.20.10.254/32 [110/31] via 10.20.123.2, 05:48:52, Ethernet0/0
C        10.20.123.0/30 is directly connected, Ethernet0/0
L        10.20.123.1/32 is directly connected, Ethernet0/0
O        10.20.123.4/30 [110/20] via 10.20.123.2, 05:49:02, Ethernet0/0
O        10.20.123.8/30 [110/30] via 10.20.123.2, 05:48:52, Ethernet0/0
      31.0.0.0/32 is subnetted, 1 subnets
O E2     31.13.79.33 [110/1] via 10.20.123.2, 00:13:21, Ethernet0/0
      74.0.0.0/32 is subnetted, 1 subnets
O E2     74.125.68.132 [110/1] via 10.20.123.2, 00:13:21, Ethernet0/0
      173.194.0.0/32 is subnetted, 1 subnets
O E2     173.194.120.146 [110/1] via 10.20.123.2, 00:13:21, Ethernet0/0
O E2  192.168.0.0/24 [110/1] via 10.20.123.2, 00:13:21, Ethernet0/0
      192.168.123.0/30 is subnetted, 1 subnets
O E2     192.168.123.0 [110/1] via 10.20.123.2, 00:13:21, Ethernet0/0
      200.200.200.0/30 is subnetted, 1 subnets
O E2     200.200.200.0 [110/1] via 10.20.123.2, 00:13:21, Ethernet0/0

ขั้นตอนที่ 10 การตรวจสอบการตั้งค่า

            ทดสอบการเชื่อมต่อบนเราเตอร์ในแต่ละ VRF โดยอุปกรณ์ที่อยู่ใน VRF RED และ VRF GREEN จะต้องสามารถเชื่อมต่อไปยัง DNS-Server และ Internet ได้ แต่จะไม่สามารถติดต่อสื่อสารระหว่าง VRF RED และ VRF GREEN ได้

ตัวอย่างการตรวจสอบบนเราเตอร์ CE-A-HQ (VRF RED)

CE-A-HQ#ping 192.168.0.100
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.0.100, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 5/6/9 ms

CE-A-HQ#ping running-config.blogspot.com
Translating "running-config.blogspot.com"...domain server (192.168.0.100) [OK]

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 74.125.68.132, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 6/6/8 ms

CE-A-HQ#traceroute running-config.blogspot.com numeric
Translating "running-config.blogspot.com"...domain server (192.168.0.100) [OK]

Type escape sequence to abort.
Tracing the route to 74.125.68.132
VRF info: (vrf in name/id, vrf out name/id)
  1 10.10.123.2 6 msec 6 msec 5 msec
  2 192.168.123.1 6 msec 4 msec 6 msec
  3 200.200.200.2 9 msec *  6 msec

CE-A-HQ#ping 10.20.0.254 (VRF GREEN)
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.20.0.254, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)

            จะเห็นว่าไม่สามารถติดต่อสื่อสารระหว่าง VRF RED และ VRF GREEN ได้ แต่จะสามารถติดต่อสื่อสารจาก VRF RED ไปยัง VRF SHARED ได้

            การตั้งค่า inter-VRF Routing กับ VRF Lite ก็จะจบเพียงเท่านี้ ซึ่งถ้าเข้าใจถึงวิธีการทำงานของ inter-VRF Routing นี้แล้ว จะสามารถนำไปต่อยอดเพื่อใช้งานกับ MPLS L3 VPN ได้ง่ายขึ้น เนื่องจากบน MPLS L3 VPN ก็จะใช้งาน MP-BGP ในการสร้างเครือข่าย VPN ระหว่างลูกค้าแต่ละราย โดยมีหลักการเดียวกันกับการทำ inter-VRF Routing นี้ ส่วนในบทความต่อไปจะพูดถึงการ ทำ EVN (บทความ ทำความรู้จักกับ Cisco EVN กันครับ) ซึ่งเป็นเทคนิคที่จะมาช่วยให้สามารถตั้งค่า VRF Lite และ inter-VRF ได้ง่ายขึ้นครับ

No comments:

Post a Comment