Manage VPN clients to route over multiple data centers

Network เป็นเรื่องที่ผมให้ความสนใจเป็นอันดับต้น ๆ ในชีวิตการทำงาน และเป็นเครื่องมือใช้ประกอบอาชีพในปัจจุบัน

มีกรณีศึกษา ที่ผมคิดว่าเป็นโจทย์ที่น่าสนใจ เลยครุ่นคิด และลงมือทำ LAB เพื่อหาคำตอบ ว่าถ้ามีความต้องการแบบนี้ จะสามารถทำได้ไหม

  • มี 3 Data Center ทั้งหมด เชื่อมต่อกัน ผ่าน Internet และไม่มี direct link เช่น D1=Thailand, D2=Japan, D3=USA
  • แต่ละ Data Center ให้ Clients ต่อ VPN เข้ามาเพื่อใช้งาน
  • Clients Thailand ที่มีความต้องการออกที่ USA จะต้อง NAT ด้วย IP USA และกลับกัน Clients USA จะออกที่ Thailand ต้อง NAT ด้วย IP Thailand
  • Link ที่เชื่อมต่อ แต่ละ Data Center เร็วกว่า Clients เชื่อมต่อเองโดยตรง

ผมค่อย ๆ คิด และเริ่มหาทางไปทีละปัญหา

  1. เนื่องจากแต่ละ Data Center ไม่มี direct link จึงไม่เอื้อให้นำ routing protocol มาใช้งานโดยตรง ทางที่จะไปก็น่าจะต้องสร้าง L2 VPN ซึ่งผมเลือกเป็น OpenVPN ด้วยเหตุผลจากการทดลอง ในเครื่องจำลอง Linux KVM - 1 CPU, RAM 512 MB ได้ผลเป็นที่น่าพอใจ
    • สามารถทำ Throughput ขึ้นไปถึง 700-750 Mbps
    • Cipher: AES-128-CBC
    • การทดลองนี้ ผมเปรียบเทียบกับ default cipher ของ OpenVPN คือ Blowfish (BF-CBC) แล้ว AES-128-CBC ทำงานได้เร็วกว่า เหตุผลน่าจะมาจาก Linux KVM รองรับ AES-NI ซึ่งเป็นความสามารถหนึ่งที่มากับ CPU รุ่นใหม่ ๆ โดยเครื่องที่ใช้ทดสอบเป็น Core i5 แต่อย่างไรก็ตาม 700 - 750 Mbps ก็แลกมาด้วย CPU (1 core) 95 - 100%

  2. หลังจากได้ L2 connection ที่เสมือน router แต่ละ data center เชื่อมต่อกันโดยตรงได้แล้ว ก็สามารถนำ dynamic routing protocol มาใช้งานได้ ผมเลือกใช้ OSPF ผ่าน Open Source Router Software คือ Quagga และนี่เป็นครั้งแรกที่ผมได้ลงมือ และใช้งาน Quagga ไม่เคยใช้งานมาก่อนหน้านี้เลย แต่ที่ได้เจอ คือ คำสั่งเหมือน หรือใกล้เคียงกับ Cisco Router ก็เลยใช้เวลาศึกษาไม่นานนัก

ผมทดลองตัด VPN connection ก็ได้ผลเป็นไปตามที่ต้องการคือ client สามารถที่จะไปถึงปลายทาง โดยผ่าน backup route ได้ และวิ่งเส้นทางที่ใกล้ที่สุดเหมือนเดิม หลังจากที่ VPN connection กลับมาเชื่อมต่อปกติ

จาก LAB นี้ เราได้เส้นทางที่เชื่อมต่อกันระหว่าง data center และรองรับ dynamic routing แล้ว ขั้นถัดไปก็สามารถ

  • จัดการ routing ตาม policy ที่กำหนดได้
  • มีเรื่องที่ผมอยากศึกษาต่อ คือ Multicast (IGMP, PIM) ระหว่าง data center ซึ่งจะนำไปสู่การสร้าง Overlay Network (VXLAN) ข้าม data center ต่อไปในอนาคต