การทำ Dynamic Routing ผ่าน Virtual Port Channel (vPC) บน Cisco Nexus Platform นั้น จะมีประเด็นอะไรให้สนใจบ้างในบทความนี้ มาดูกันดีกว่าครับ
ปกติแล้วการส่งข้อมูลผ่าน vPC บน Cisco Nexus นั้นมันจะมีกฎของมันอยู่ ถ้ามีการ forward data ผ่าน Peer-Link แล้ว Nexus ตัวที่ได้รับ data เข้ามาจาก Peer-Link จะไม่ถูก forward ไปยัง vPC member เพื่อป้องกัน Loop
จากรูปจะเห็นว่า NXOS1 กับ NXOS2 มีการทำ vPC เชื่อมต่อลงมาหา Switch ด้านล่าง และ เชื่อมต่อไปหา Router ด้านบน ในกรณีนี้ ถ้า NXOS2 คือ Active สำหรับ HSRP vPC แต่ data traffic นั้น forward ไปฝั่ง NXOS1 ทำให้ NXOS1 ทำการ forward data traffic ไปหา NXOS2 ที่เป็น Active (Gateway)
เมื่อ NXOS2 ได้รับ data traffic เข้ามาทาง Peer-Link ตามกฎ มันจะไม่ forward traffic ไปยัง vPC member เพื่อป้องกัน Loop ทำให้ traffic ที่ forward ผ่าน Peer-Link มาหา NXOS2 ถูก drop และใช้งานไม่ได้ จึงมี feature ที่เข้ามาช่วยแก้ไขปัญหานี้ นั่นคือ Peer-Gateway
ปกติแล้ว Peer-Gateway จะแนะนำให้ใช้งานกับพวก NAS และ Load Balance ที่มีพฤติกรรมในการตอบกลับการรับส่งข้อมูลโดยใช้ที่อยู่ MAC ของอุปกรณ์ที่ส่งแทนที่จะเป็น HSRP MAC (ซึ่งผมอาจจะไม่ได้ลงรายละเอียดในภาพของ Peer-Gateway มากในบทความนี้นะครับ แต่พอดีมันเกี่ยวข้องด้วยนิดๆหน่อยๆ ก็เลยพูดถึงให้พอเข้าใจกันเล็กน้อย)
ซึ่งที่กล่าวมานั้นในการใช้งานที่เป็นแบบ Non-vPC มันไม่เคยทำให้เกิดปัญหา (อันที่จริงคนส่วนใหญ่อาจไม่เคยสังเกตเห็นเลยด้วยซ้ำ) แต่เมื่อใช้บน vPC ก็จะทำให้เกิดปัญหาดังกล่าวได้ Peer-Gateway เข้ามาช่วยแก้ไขปัญหานี้
และเมื่อเราใช้งาน Dynamic Routing ผ่าน vPC ล่ะ มันสามารถทำงานได้เหมือนกับ Data traffic โดยใช้ Peer-Gateway หรือไม่ ??
จากรูปด้านบน จะเห็นว่ามีการใช้งาน Dynamic Routing เป็น OSPF ระหว่าง NXOS1 , NXOS2 และ Router ซึ่งระหว่าง NXOS2 และ Router ก็สามารถ peer OSPF neighbor ได้ปกติดี แล้วลองมาดูรูปด้านล่าง
จากรูปด้านล่างจะเห็นว่า รูปซ้าย ถ้า Router ทำการ peer OSPF กับ NXOS2 แล้ว OSPF packet ส่งมาทาง direct connect เลยก็จะไม่เป็นปัญหาอะไร แต่ถ้าเกิด OSPF packet ถูกส่งไปหา NXOS1 แล้ว มันต้องสามารถส่งผ่าน Peer-Link ไปหา NXOS2 ได้ถูกไหมครับ แต่กรณีมันจะไม่ได้ !! สาเหตุเพราะ OSPF จะถูก set TTL = 1 เมื่อมาถึง NXOS1 แล้ว จะเหลือ TTL = 0 ทำให้ OSPF packet ถูก drop
เช่นเดียวกันกับ รูปขวา ถ้า Router ทำการ peer OSPF กับ NXOS1 แล้วส่ง OSPF packet ไปหา NXOS2 ก็จะเกิดปัญหาเช่นเดียวกัน
มาลองดูผลการทดสอบจากรูปดีกว่าครับ
ผลที่เห็นบน NXOS1
N9K1# show ip ospf nei
OSPF Process ID 1 VRF default
Total number of neighbors: 2
Neighbor ID Pri State Up Time Address Interface
N9K2 1 FULL/DR 00:02:30 10.0.0.3 Vlan100
Router 1 EXSTART/BDR 00:00:02 10.0.0.254 Vlan100
ผลที่เห็นบน Router
Router# show ip ospf nei
Neighbor ID Pri State Dead Time Address Interface
N9K1 1 EXSTART/DROTHER 00:00:39 10.0.0.2 Port-channel1
N9K2 1 FULL/DR 00:00:34 10.0.0.3 Port-channel1
วิธีแก้ไข
ในกรณีเราจะใช้คำสั่ง "layer3 peer-router" ภายใต้ vpc domain คำสั่งนี้จะทำให้ Nexus ไม่ลดค่า TTL ลงนั่นเอง
บน NXOS1 และ NXOS2
vpc domain 1
peer-keepalive destination 169.254.0.2 source 169.254.0.1
peer-gateway
layer3 peer-router
ผลที่เห็นบน NXOS1
N9K1# show ip ospf nei
OSPF Process ID 1 VRF default
Total number of neighbors: 2
Neighbor ID Pri State Up Time Address Interface
N9K2 1 FULL/DR 00:02:30 10.0.0.3 Vlan100
Router 1 FULL/BDR 00:00:02 10.0.0.254 Vlan100
ผลที่เห็นบน Router
Router# show ip ospf nei
Neighbor ID Pri State Dead Time Address Interface
N9K1 1 FULL/DROTHER 00:00:39 10.0.0.2 Port-channel1
N9K2 1 FULL/DR 00:00:34 10.0.0.3 Port-channel1
จริงๆแล้วยังมีรายละเอียดอีกมากสำหรับการใช้งาน Dynamic Routing over vPC ทั้งการต่อแบบ Orphan อีก สามารถลองติดตามอ่านข้อมูลเพิ่มเติมได้ตาม Reference ด้านล่างเลยครับ
https://networkdirection.net/articles/virtual-port-channels-vpc/vpcandroutingprotocols/
https://www.cisco.com/c/en/us/support/docs/ip/ip-routing/118997-technote-nexus-00.html
https://www.ciscolive.com/c/dam/r/ciscolive/us/docs/2017/pdf/BRKDCN-2378.pdf
https://adamraffe.com/nexus%207000/virtual%20port%20channel/2013/03/25/peer-gateway-doesnt-solve-l3-over-vpc/
https://www.youtube.com/watch?v=KPsnI6h1RIs&t=127s