Open Source Networking Technologies Part 1

หลังจากที่ได้ทำงานในด้าน Network มาประมาณเกือบ 10 ปี ทั้งเรื่อง Design, Implement และ Troubleshooting พอสมควร เลยมีความรู้สึกอยากรู้ว่าในอุตสาหกรรมที่เขาเป็นผู้ผลิต เช่น Cisco, Juniper, Arista ฯลฯ เขามีแนวความคิดหรือรูปแบบในผลิตยังไง รวมถึงคิดว่าถ้าเราต้องการจะสร้าง Router หรือ switch เองจะเป็นไปได้หรือเปล่า และพอดีกับผมกำลังได้ทำ project cloud OpenStack ทั้งเรื่องการ design และ implement จึงนำมาซึ่งความรู้เกี่ยวกับด้าน virtual switch (openvswitch) ซึ่งเราคุ้นเคยกันมากใน VMware ESXi แต่หลังจากที่ได้ทำก็รู้ว่า Cloud Computing ที่เป็น OpenStack นั้น มีความน่าสนใจและซับซ้อนอยู่บ้าง เนื่องจาก Cloud มีเรื่องของการแบ่งการใช้งานแบบ Tenant/Project ซึ่งในภาพที่เป็น logical แล้วให้มองว่า Guest (VM) ที่ถูกสร้างขึ้นมาไม่ว่าจะถูกกำหนดให้ไป process บน Compute ไหนๆ ก็ต้องสามารถที่จะติดต่อกันได้เฉพาะใน Tenant/Project เท่านั้น หากเราพิจารณา design network แล้ว ก็ไม่ได้ยากอะไร ก็แค่แบ่ง VLAN (Boardcast Domain) ให้กับแต่ละ Tenant/Project ไปใช้งาน แต่หากใครที่ทำงานเกี่ยวกับ network อยู่ก็จะรู้ว่า เราสามารถใช้งาน VLAN ได้แค่ 4096 เท่านั้น ซึ่งจริงๆ แล้วบ้างยี่ห้อ อาจจะไม่สามารถใช้งานได้ถึงตามนี้ จึงเกิดคำถามว่าแล้วมันจะมีปัญหาอะไร ถ้าจะใช้งานได้แค่นี้ เพราะปัจจจุบันก็ใช้งานอยู่ ก็ไม่ได้มีปัญหาอะไรนิ ผมก็เป็นคนหนึ่งที่เคยตั้งคำถามนี้ แต่ถ้าเรากลับมาคิดดูอีกทีเกี่ยวกับ public cloud อย่างเช่น AWS, Azure, Google Cloud ที่มีลูกค้าเป็นหลาย 10,000 รายละ เขามีปัญหาไหม ซึ่งนั้นก็ทำให้ได้คำตอบว่า มีปัญหาแน่นอน แต่ก็มีคำถามตามมาว่า แล้วเขาแก้ปัญหานี้ยังไงหรือมีวิธีอะไรที่มา Support ตรงนี้ จึงเป็นที่มาขอการค้นหาคำตอบ ซึ่งก็ทำให้ได้คำตอบว่า เขาแก้ให้ปัญหานี้ โดยการใช้ Technology ที่เรียกว่า VxLAN (Virtual Extensible LAN) ซึ่งก็มีคำถามตามมาอีกว่าแล้วมันมาแก้ปัญหาตรงไหน หลายคนก็ตอบได้ว่าก็เพิ่มจำนวน VLAN ขึ้นมาไง และนั้นก็ถูกต้องครับ มาถึงตรงนี้แล้วก็เลยนึกว่าผมน่าจะเขียนอีก blog เรื่องเกี่ยวกับ MP-BGP VxLAN เลยดีกว่า แต่หัวข้อนี้ผมจะเขียนเกี่ยวกับ Open Network และมาเริ่มกันเลยดีกว่าครับ

โครงสร้างของ Network Device

จากรูป เราจะเห็นว่า network device ก็มีโครงสร้างคล้ายกับ computer system ซึ่งก็มีองค์ประกอบหลัก 2 ส่วนคือ

  1. ส่วนที่เป็น Hardware เช่น Cpu, Memory, Storage รวมถึง ASIC Chip สำหรับการประมวลผลด้านสำหรับ packet โดยเฉพาะด้วย
  2. ส่วนที่เป็น Software ซึ่งก็ประกอบไปด้วย 2 ส่วนย่อย คือ Operating System และ Application

หากเรามาดูว่าในปัจจุบันนี้ผู้ผลิตอย่างเช่น Cisco, Juniper, Arista ฯลฯ ซึ่งแต่ละเจ้าก็มีการพัฒนา software ที่เป็นของตัวเอง รวมทั้งเรื่องของเรื่องของ routing protocol เช่น RIP, OSPF, BGP เป็นต้น ซึ่งนั้นก็ทำให้เราเกิดปัญหาบ่อยๆ ครั้งในตอนนี้ที่ต้องการที่จะทำ integration ระหว่าง network device ต่างยี่ห้อ เช่น เราต้องการเชื่อมต่อระหว่าง switch ยี่ห้อ A กับ switch ฺB แบบ layer 2 ด้วยสาย LAN จำนวน 2 เส้น แต่พอเชื่อมต่อเสร็จแล้ว ทำไมยังใช้งานไม่ได้, interface ไม่ up, แย่กว่านั้นก็คือทำให้เกิด loop เป็นต้น นั้้นก็แสดงให้เห็นว่าแม้แต่เรื่อง spanning tree ของแต่ละยี่ห้อ โดย default กำหนดมาไม่เหมือนกัน และนี้ก็เป็นจุดเริ่มต้นที่ทำให้ผมได้ศึกษาเรื่องนี้เพื่อต้องการทราบว่า เรามีทางเลือกอื่นๆ อีกไหม หรือเราสามารถสร้าง switch หรือ router เองได้หรือเปล่า ต่อไปเราไปดูกันว่าโครงสร้างภายในด้าน hardware ของ switch ปัจจุบันมันเป็นยังไง

โครงสร้างภายใน hardware switch

จากรูปเราก็จะเห็นว่าโครงสร้างก็คล้ายกับ computer system อยู่เหมือนกัน มีส่วนที่แต่ต่างคือ switch จะมี Packet Processor Silicon (ASIC) ที่มาประมวลผลข้อมูล packet โดยเฉพาะ ซึ่งข้อดีคือในตอนประมวลผลข้อมูลทั้งการรับการส่งข้อมูลจะความเร็วมากขึ้น รวมทั้งไม่ได้ใช้งาน resource จาก Main CPU มาประมวลผลเกี่ยวกับ packet เลย ซึ่งนั้นทำให้หลายคนที่เป็น Engineer/Pre-Sale ที่เคย Compiler TOR จะรู้ว่าหลักๆ จะมีอยู่ไม่กี่เจ้าที่เป็นผู้ผลิตตัว Packet Processor Silicon เช่น Broadcom, mellanox, intel เป็นต้น ดังนั้นผมจึงเกิดความคิดว่า เราน่าจะสามารถนำ switch มาลง OS ได้เหมือนกับ server เช่น Window, Ubuntu, CentOS RedHat เป็นต้น และนั้นทำให้ผมค้นหาข้อมูลจนรู้ว่าปัจจุบันก็มี community ที่เขาผลักดันให้เกิดการทำ open networking ขึ้นทั้งในส่วนของ hardware switch และ software switch โดยที่ใช้ concept เหมือนกันกับ server เลยครับ คือถ้าเราจะลง OS ให้กับ Server เราก็ต้องไปเข้าใน BIOS เพื่อกำหนดค่าต่างๆ เช่น กำหนดลำดับของการ boot, กำหนดเรื่อง Raid เป็นต้น ดังนั้นบน hardware switch ที่เป็น open source hardware จึงเกิด ONIE (Open Network Install Environment) ขึ้นคล้ายกับ BIOS บน hardware server ที่จะทำให้เราสามารถติดตั้ง Network OS ได้ โดย Network OS ก็มีหลายเจ้า เช่น Cumulus, Pica8, ONL (Open Network Linux) หรือ OpenSwitch เป็นต้น ส่วน hardware switch ก็มีหลายยี้ห้อ เช่น Edge-Core, Dell EMC รวมถึง Wedge (Facebook) เป็นต้น และเราจะมาทดลองทำการลง install Network OS กันใน part 2 ครับ

--

--