วันนี้เราจะพาท่านไปทำความรู้จักกับ Open vSwitch หนึ่งในโปรเจ็กต์ซอฟต์แวร์ ที่เป็นองค์ประกอบหรือว่า จิ๊กซอว์สำคัญในการทำ Software Defined Networking (SDN) เพราะว่าด้วยความสามารถของ Open vSwitch มันจะทำให้ท่านสามารถที่จะ ควบคุม และ บริหาร การทำงานของสวิตซ์ได้จากระดับซอฟต์แวร์ เช่นการสั่งการผ่าน API และ มันยังเป็นอิสระอย่างสิ้นเชิงกับ hardware หรือพูดง่ายๆ ท่านจะไม่ต้องผูกขาดกับผู้ผลิตฮาร์ดแวร์รายใดๆ เลย

ภาพรวม
Open vSwitch นั้นเป็นซอฟต์แวร์ทำหน้าที่สวิตซ์แบบหลายเลเยอร์ ทำหน้าที่เช่นเดียวกับสวิตซ์แบบฮาร์ดแวร์ทุกอย่าง ซึ่งหลักๆ ก็คือหน้าที่แบบ forwarding รวมถึงหน้าที่ที่เกี่ยวข้อง และ การควบคุม มันทำงานได้ดีและเหมาะมากๆ กับสภาพแวดล้อมแบบ VM มันทำงานข้าม physical host ได้ และ ทำงานได้ดีกับ KVM หรือ Kernel Virtual Machine
มันถูกพัฒนาด้วยภาษา C แบบไม่ยึดติดกับแพลตฟอร์ม และ ปัจจุบัน มีฟีเจอร์ดังต่อไปนี้
Open vSwitch ทำงานได้ทั้งหมดในส่วนของ userspace โดยไม่ต้องการความช่วยเหลือจาก kernel module และมันสามารถเข้าถึง DPDK devices ได้
องค์ประกอบใน Open vSwitch
นอกจากนั้น ก็ยังมีเครื่องมีเหล่านี้
แล้วทำไมเราควรจะต้องใช้ Open vSwitch
Hypervisor นั้นจำเป็นที่ต้องมีความสามารถในการที่จะ Bridge ทรากฟิก ระหว่าง VM และ โลกภายนอก ใน hypervisor ที่ใช้ Linux หรือว่า KVM นั้น แน่นอนว่าสิ่งนี้เป็นไปได้โดยการใช้ L2 switch ที่มีอยู่แล้วใน Linux แต่นั่นหมายถึง ถ้าท่านใช้ hypervisor แบบ standalone และ เมื่อใดก็ตามที่ Hypervisor มีอยู่หลายเครื่อง และ ต้องการทำ bridge ข้าม จะเป็นไปไม่ได้ หรือพูดง่ายๆ ใน scale ที่ใหญ่ขึ้น Open vSwitch จะตอบโจทย์มากกว่า
state ของ virtual machines หรือว่า VMs ควรจะอยู่บ่งชี้และเปลี่ยนสถานนะ ได้ โดยคำว่า state ก็จะหมายถึง สถานะต่างๆ คือ การ learning table ใน Layer 2 รวมถึง L3 forwarding, policy routing state, ACL, QoS
ในสภาพแวดล้อมแบบ virtual นั้นโดยปกติแล้ว จะมีการเปลี่ยนแปลงอย่างรวดเร็ว เช่น การสร้างการลบ ซึ่งรวมถึงการเปลี่ยนแปลงด้านเน็ตเวิร์ก เช่นการเปลี่ยนแปลง IP การย้าย VLAN และด้วยความเปลี่ยนแปลงที่เร็วแบบนี้ และใน Open vSwitch นั้นก็มี network state database (OVSDB) เพื่อเก็บสถานะต่างๆ ไว้
สำหรับ Distributed virtual switch เช่น VMware vDS และ Cisco Nexus 1000V นั้นจะใช้การจัดการบริบทของระบบเชิงตรรกะ ด้วยการเพิ่มและการจัดการ tags ภายใน network packets เพื่อจะบ่งชี้ถึง VM ส่วนใน Open vSwitch นั้นก็จะใช้หลายๆ วิธีการในการใช้งานกับ tags นอกจากนั้นยังสนับสนุน GRE สำหรับการสร้าง GRE tunnels ซึ่งใช้เพื่อสร้าง private VM networks