สำรวจความซับซ้อนของ OpenFlow ซึ่งเป็นโปรโตคอลพื้นฐานในเครือข่ายที่กำหนดโดยซอฟต์แวร์ (SDN) เรียนรู้เกี่ยวกับสถาปัตยกรรม ประโยชน์ ข้อจำกัด และการใช้งานจริงในสภาพแวดล้อมเครือข่ายทั่วโลก
เครือข่ายที่กำหนดโดยซอฟต์แวร์ (SDN): เจาะลึกโปรโตคอล OpenFlow
ในภูมิทัศน์ที่ไม่หยุดนิ่งของเครือข่ายทั่วโลกและคลาวด์คอมพิวติ้งในปัจจุบัน ความต้องการโครงสร้างพื้นฐานเครือข่ายที่ยืดหยุ่น ปรับขนาดได้ และสามารถโปรแกรมได้กลายเป็นสิ่งสำคัญยิ่ง เครือข่ายที่กำหนดโดยซอฟต์แวร์ (Software-Defined Networking - SDN) ได้ถือกำเนิดขึ้นในฐานะกระบวนทัศน์ที่ปฏิวัติวงการ โดยแยกส่วนระนาบควบคุม (control plane) ออกจากระนาบข้อมูล (data plane) ทำให้สามารถควบคุมและจัดการทรัพยากรเครือข่ายแบบอัตโนมัติจากส่วนกลางได้ หัวใจสำคัญของ SDN คือโปรโตคอล OpenFlow ซึ่งเป็นเทคโนโลยีหลักที่ช่วยในการสื่อสารระหว่างระนาบควบคุมและระนาบข้อมูล บทความนี้จะเจาะลึกถึงความซับซ้อนของ OpenFlow สำรวจสถาปัตยกรรม ฟังก์ชันการทำงาน ประโยชน์ ข้อจำกัด และการใช้งานจริงในสถานการณ์ต่างๆ ทั่วโลก
เครือข่ายที่กำหนดโดยซอฟต์แวร์ (SDN) คืออะไร?
สถาปัตยกรรมเครือข่ายแบบดั้งเดิมจะผูกระนาบควบคุม (รับผิดชอบการตัดสินใจ, โปรโตคอลการกำหนดเส้นทาง) และระนาบข้อมูล (รับผิดชอบการส่งต่อแพ็กเก็ตข้อมูล) เข้าด้วยกันอย่างแน่นหนา การผูกมัดที่แน่นหนานี้จำกัดความยืดหยุ่นและความคล่องตัวของเครือข่าย SDN เข้ามาแก้ไขข้อจำกัดเหล่านี้โดยการแยกส่วนระนาบควบคุมออกจากระนาบข้อมูล ทำให้ผู้ดูแลเครือข่ายสามารถควบคุมและโปรแกรมพฤติกรรมของเครือข่ายจากส่วนกลางได้ การแยกส่วนนี้ทำให้เกิดสิ่งต่อไปนี้:
- การควบคุมแบบรวมศูนย์: คอนโทรลเลอร์ส่วนกลางจัดการเครือข่ายทั้งหมด ทำให้มีจุดควบคุมและมองเห็นภาพรวมเพียงจุดเดียว
- ความสามารถในการโปรแกรมเครือข่าย: พฤติกรรมของเครือข่ายสามารถโปรแกรมได้แบบไดนามิกผ่านซอฟต์แวร์ ทำให้สามารถปรับตัวเข้ากับสภาวะเครือข่ายและข้อกำหนดของแอปพลิเคชันที่เปลี่ยนแปลงไปได้อย่างรวดเร็ว
- การสร้างนามธรรม: SDN สร้างนามธรรมให้กับโครงสร้างพื้นฐานเครือข่ายที่อยู่เบื้องหลัง ทำให้การจัดการเครือข่ายง่ายขึ้นและลดความซับซ้อน
- ระบบอัตโนมัติ: งานด้านเครือข่ายสามารถทำได้โดยอัตโนมัติ ลดการแทรกแซงด้วยตนเองและปรับปรุงประสิทธิภาพการดำเนินงาน
ทำความเข้าใจโปรโตคอล OpenFlow
OpenFlow เป็นโปรโตคอลการสื่อสารที่เป็นมาตรฐานซึ่งช่วยให้ SDN คอนโทรลเลอร์สามารถเข้าถึงและจัดการระนาบการส่งต่อ (data plane) ของอุปกรณ์เครือข่าย เช่น สวิตช์และเราเตอร์ได้โดยตรง โดยกำหนดอินเทอร์เฟซมาตรฐานสำหรับคอนโทรลเลอร์เพื่อใช้สื่อสารกับอุปกรณ์เหล่านี้และโปรแกรมพฤติกรรมการส่งต่อข้อมูลของอุปกรณ์ โปรโตคอล OpenFlow ทำงานบนหลักการของ การส่งต่อตามโฟลว์ (flow-based forwarding) ซึ่งทราฟฟิกเครือข่ายจะถูกจัดประเภทเป็นโฟลว์ตามเกณฑ์ต่างๆ และแต่ละโฟลว์จะเชื่อมโยงกับการดำเนินการชุดหนึ่งที่เฉพาะเจาะจง
องค์ประกอบหลักของ OpenFlow:
- OpenFlow Controller: สมองส่วนกลางของสถาปัตยกรรม SDN รับผิดชอบการตัดสินใจในการส่งต่อข้อมูลและโปรแกรมระนาบข้อมูล คอนโทรลเลอร์จะสื่อสารกับอุปกรณ์เครือข่ายโดยใช้โปรโตคอล OpenFlow
- OpenFlow Switch (Data Plane): อุปกรณ์เครือข่ายที่ใช้โปรโตคอล OpenFlow และส่งต่อทราฟฟิกตามคำสั่งที่ได้รับจากคอนโทรลเลอร์ สวิตช์เหล่านี้จะดูแลรักษา ตารางโฟลว์ (flow table) ซึ่งประกอบด้วยกฎที่ระบุวิธีการจัดการทราฟฟิกเครือข่ายประเภทต่างๆ
- OpenFlow Protocol: โปรโตคอลการสื่อสารที่ใช้ระหว่างคอนโทรลเลอร์และสวิตช์เพื่อแลกเปลี่ยนข้อมูลและโปรแกรมพฤติกรรมการส่งต่อข้อมูล
ตารางโฟลว์: หัวใจของ OpenFlow
ตารางโฟลว์ (flow table) เป็นโครงสร้างข้อมูลกลางในสวิตช์ OpenFlow ประกอบด้วยชุดของ รายการโฟลว์ (flow entries) ซึ่งแต่ละรายการจะกำหนดวิธีจัดการกับทราฟฟิกเครือข่ายประเภทใดประเภทหนึ่งโดยเฉพาะ โดยทั่วไปแล้วแต่ละรายการโฟลว์จะประกอบด้วยส่วนประกอบต่อไปนี้:
- ฟิลด์จับคู่ (Match Fields): ฟิลด์เหล่านี้ระบุเกณฑ์ที่ใช้ในการระบุโฟลว์ใดโฟลว์หนึ่งโดยเฉพาะ ฟิลด์จับคู่ที่พบบ่อย ได้แก่ ที่อยู่ IP ต้นทางและปลายทาง, หมายเลขพอร์ต, VLAN ID และประเภทของ Ethernet
- ลำดับความสำคัญ (Priority): ค่าตัวเลขที่กำหนดลำดับในการประเมินรายการโฟลว์ รายการที่มีลำดับความสำคัญสูงกว่าจะถูกประเมินก่อน
- ตัวนับ (Counters): ตัวนับเหล่านี้จะติดตามสถิติที่เกี่ยวข้องกับโฟลว์ เช่น จำนวนแพ็กเก็ตและไบต์ที่ตรงกับรายการโฟลว์
- คำสั่ง (Instructions): คำสั่งเหล่านี้ระบุการดำเนินการที่จะต้องทำเมื่อมีแพ็กเก็ตตรงกับรายการโฟลว์ คำสั่งทั่วไป ได้แก่ การส่งต่อแพ็กเก็ตไปยังพอร์ตที่ระบุ, การแก้ไขส่วนหัวของแพ็กเก็ต, การทิ้งแพ็กเก็ต หรือการส่งแพ็กเก็ตไปยังคอนโทรลเลอร์เพื่อประมวลผลเพิ่มเติม
การทำงานของ OpenFlow: ตัวอย่างทีละขั้นตอน
ลองดูตัวอย่างการทำงานของ OpenFlow แบบง่ายๆ สมมติว่าเราต้องการส่งต่อทราฟฟิกทั้งหมดจากที่อยู่ IP ต้นทาง 192.168.1.10 ไปยังที่อยู่ IP ปลายทาง 10.0.0.5 ไปยังพอร์ต 3 ของสวิตช์ OpenFlow
- แพ็กเก็ตมาถึง: แพ็กเก็ตมาถึงที่สวิตช์ OpenFlow
- การค้นหาในตารางโฟลว์: สวิตช์จะตรวจสอบส่วนหัวของแพ็กเก็ตและพยายามจับคู่กับรายการในตารางโฟลว์
- พบรายการที่ตรงกัน: สวิตช์พบรายการโฟลว์ที่ตรงกับที่อยู่ IP ต้นทาง (192.168.1.10) และที่อยู่ IP ปลายทาง (10.0.0.5)
- การดำเนินการตามคำสั่ง: สวิตช์จะดำเนินการตามคำสั่งที่เชื่อมโยงกับรายการโฟลว์ที่ตรงกัน ในกรณีนี้ คำสั่งคือการส่งต่อแพ็กเก็ตไปยังพอร์ต 3
- การส่งต่อแพ็กเก็ต: สวิตช์ส่งต่อแพ็กเก็ตไปยังพอร์ต 3
หากไม่พบรายการโฟลว์ที่ตรงกัน โดยทั่วไปสวิตช์จะส่งแพ็กเก็ตไปยังคอนโทรลเลอร์เพื่อประมวลผลเพิ่มเติม จากนั้นคอนโทรลเลอร์จะสามารถตัดสินใจว่าจะจัดการกับแพ็กเก็ตนั้นอย่างไร และติดตั้งรายการโฟลว์ใหม่ในตารางโฟลว์ของสวิตช์หากจำเป็น
ประโยชน์ของ OpenFlow ในสถาปัตยกรรม SDN
การนำ OpenFlow มาใช้ในสภาพแวดล้อม SDN มอบประโยชน์มากมายสำหรับผู้ให้บริการเครือข่ายและองค์กรต่างๆ ทั่วโลก:
- เพิ่มความคล่องตัวของเครือข่าย: OpenFlow ช่วยให้สามารถปรับตัวเข้ากับการเปลี่ยนแปลงของสภาวะเครือข่ายและข้อกำหนดของแอปพลิเคชันได้อย่างรวดเร็ว ผู้ดูแลเครือข่ายสามารถโปรแกรมพฤติกรรมของเครือข่ายแบบไดนามิกผ่านซอฟต์แวร์ โดยไม่จำเป็นต้องกำหนดค่าอุปกรณ์เครือข่ายแต่ละตัวด้วยตนเอง ตัวอย่างเช่น บริษัทในลอนดอนสามารถเปลี่ยนเส้นทางทราฟฟิกไปยังเซิร์ฟเวอร์สำรองในโตเกียวได้อย่างรวดเร็วระหว่างที่เครือข่ายขัดข้อง ซึ่งช่วยลดเวลาหยุดทำงานและรับประกันความต่อเนื่องทางธุรกิจ
- ปรับปรุงการมองเห็นเครือข่าย: SDN คอนโทรลเลอร์ส่วนกลางเป็นจุดควบคุมและมองเห็นภาพรวมสำหรับเครือข่ายทั้งหมดเพียงจุดเดียว ผู้ดูแลเครือข่ายสามารถตรวจสอบประสิทธิภาพของเครือข่าย ระบุปัญหาคอขวด และแก้ไขปัญหาเครือข่ายได้อย่างง่ายดาย บริษัทอีคอมเมิร์ซระดับโลกสามารถใช้การมองเห็นนี้เพื่อปรับปรุงการจัดส่งเนื้อหาตามตำแหน่งของผู้ใช้และสภาวะเครือข่าย ซึ่งช่วยปรับปรุงประสบการณ์ของลูกค้า
- ลดต้นทุนการดำเนินงาน: SDN และ OpenFlow ทำให้งานจัดการเครือข่ายหลายอย่างเป็นไปโดยอัตโนมัติ ลดการแทรกแซงด้วยตนเองและปรับปรุงประสิทธิภาพการดำเนินงาน ซึ่งสามารถนำไปสู่การประหยัดต้นทุนได้อย่างมากสำหรับผู้ให้บริการเครือข่าย ตัวอย่างเช่น ผู้ให้บริการอินเทอร์เน็ตในบราซิลสามารถทำให้การจัดเตรียมบริการลูกค้าใหม่เป็นไปโดยอัตโนมัติ ลดเวลาและค่าใช้จ่ายที่เกี่ยวข้องกับการกำหนดค่าด้วยตนเอง
- นวัตกรรมและการทดลอง: OpenFlow ช่วยให้ผู้ให้บริการเครือข่ายสามารถทดลองกับโปรโตคอลและแอปพลิเคชันเครือข่ายใหม่ๆ ได้โดยไม่กระทบต่อบริการเครือข่ายที่มีอยู่ ซึ่งส่งเสริมนวัตกรรมและช่วยให้ผู้ให้บริการเครือข่ายสามารถพัฒนาและปรับใช้บริการใหม่ๆ ได้รวดเร็วยิ่งขึ้น มหาวิทยาลัยในยุโรปกำลังใช้ OpenFlow เพื่อสร้างพื้นที่ทดสอบสำหรับการวิจัยเทคโนโลยีเครือข่ายใหม่ๆ
- เพิ่มความปลอดภัย: สามารถใช้ SDN และ OpenFlow เพื่อใช้นโยบายความปลอดภัยขั้นสูง และตรวจจับและบรรเทาภัยคุกคามด้านความปลอดภัย คอนโทรลเลอร์ส่วนกลางสามารถตรวจสอบทราฟฟิกเครือข่ายเพื่อหากิจกรรมที่เป็นอันตรายและกำหนดค่าเครือข่ายใหม่โดยอัตโนมัติเพื่อป้องกันการโจมตี สถาบันการเงินในสิงคโปร์สามารถใช้ OpenFlow เพื่อใช้การแบ่งส่วนย่อย (micro-segmentation) แยกข้อมูลที่ละเอียดอ่อนและป้องกันการเข้าถึงที่ไม่ได้รับอนุญาต
ข้อจำกัดและความท้าทายของ OpenFlow
แม้จะมีประโยชน์มากมาย แต่ OpenFlow ก็มีข้อจำกัดและความท้าทายบางประการที่ต้องได้รับการแก้ไข:
- ความสามารถในการปรับขนาด (Scalability): การจัดการรายการโฟลว์จำนวนมากในตารางโฟลว์ของสวิตช์ OpenFlow อาจเป็นเรื่องที่ท้าทาย โดยเฉพาะในเครือข่ายขนาดใหญ่และซับซ้อน เทคนิคต่างๆ เช่น การรวมโฟลว์ (flow aggregation) และการจับคู่แบบไวลด์การ์ด (wildcard matching) สามารถนำมาใช้เพื่อปรับปรุงความสามารถในการปรับขนาดได้ แต่อาจต้องแลกมาด้วยประสิทธิภาพและฟังก์ชันการทำงานที่ลดลง
- ความปลอดภัย: การรักษาความปลอดภัยในการสื่อสารระหว่างคอนโทรลเลอร์และสวิตช์เป็นสิ่งสำคัญอย่างยิ่งเพื่อป้องกันการเข้าถึงและจัดการเครือข่ายโดยไม่ได้รับอนุญาต ควรใช้กลไกการพิสูจน์ตัวตนและการเข้ารหัสที่แข็งแกร่งเพื่อปกป้องโปรโตคอล OpenFlow
- การสร้างมาตรฐาน: แม้ว่า OpenFlow จะเป็นโปรโตคอลที่เป็นมาตรฐาน แต่ก็ยังมีความแตกต่างและส่วนขยายบางอย่างที่ผู้จำหน่ายแต่ละรายนำไปใช้ ซึ่งอาจนำไปสู่ปัญหาการทำงานร่วมกันและทำให้การปรับใช้โซลูชันที่ใช้ OpenFlow ในสภาพแวดล้อมเครือข่ายที่ต่างชนิดกันเป็นเรื่องยาก ความพยายามที่กำลังดำเนินอยู่มุ่งเน้นไปที่การปรับปรุงมาตรฐานและการทำงานร่วมกันของ OpenFlow
- ความท้าทายในการเปลี่ยนผ่าน: การย้ายจากสถาปัตยกรรมเครือข่ายแบบดั้งเดิมไปยัง SDN และ OpenFlow อาจเป็นกระบวนการที่ซับซ้อนและท้าทาย จำเป็นต้องมีการวางแผนและการดำเนินการอย่างรอบคอบเพื่อลดผลกระทบต่อบริการเครือข่ายที่มีอยู่ มักจะแนะนำให้ใช้วิธีการแบบค่อยเป็นค่อยไป โดยเริ่มจากการปรับใช้ในโครงการนำร่องและค่อยๆ ขยายขอบเขต
- ภาระด้านประสิทธิภาพ: การส่งแพ็กเก็ตไปยังคอนโทรลเลอร์เพื่อประมวลผลเมื่อไม่พบรายการโฟลว์ที่ตรงกันอาจทำให้เกิดภาระด้านประสิทธิภาพ โดยเฉพาะในเครือข่ายที่มีทราฟฟิกสูง การแคชรายการโฟลว์ที่ใช้บ่อยในตารางโฟลว์ของสวิตช์สามารถช่วยลดภาระนี้ได้
การใช้งาน OpenFlow ในโลกแห่งความเป็นจริง
OpenFlow กำลังถูกนำไปใช้ในแอปพลิเคชันที่หลากหลายในอุตสาหกรรมและภูมิภาคต่างๆ:
- ศูนย์ข้อมูล (Data Centers): OpenFlow ถูกใช้ในศูนย์ข้อมูลเพื่อจำลองทรัพยากรเครือข่าย จัดการเครือข่ายโดยอัตโนมัติ และปรับปรุงความปลอดภัยของเครือข่าย ตัวอย่างเช่น Google ใช้ SDN และ OpenFlow ในศูนย์ข้อมูลของตนเพื่อเพิ่มประสิทธิภาพเครือข่ายและลดต้นทุน
- เครือข่ายองค์กร (Enterprise Networks): OpenFlow ถูกใช้ในเครือข่ายองค์กรเพื่อใช้เครือข่าย WAN ที่กำหนดโดยซอฟต์แวร์ (SD-WANs) เพิ่มประสิทธิภาพการส่งมอบแอปพลิเคชัน และปรับปรุงความปลอดภัยของเครือข่าย บริษัทข้ามชาติที่มีสำนักงานในนิวยอร์ก ลอนดอน และโตเกียว สามารถใช้ SD-WAN เพื่อกำหนดเส้นทางทราฟฟิกแบบไดนามิกตามความต้องการของแอปพลิเคชันและสภาวะเครือข่าย ซึ่งช่วยปรับปรุงประสิทธิภาพและลดต้นทุน
- เครือข่ายผู้ให้บริการ (Service Provider Networks): OpenFlow ถูกใช้ในเครือข่ายผู้ให้บริการเพื่อส่งมอบบริการใหม่ๆ ดำเนินการเครือข่ายโดยอัตโนมัติ และปรับปรุงความสามารถในการปรับขนาดของเครือข่าย บริษัทโทรคมนาคมในออสเตรเลียสามารถใช้ SDN และ OpenFlow เพื่อเสนอบริการเครือข่ายที่ปรับแต่งได้ตามความต้องการของลูกค้าธุรกิจ
- เครือข่ายเพื่อการวิจัยและการศึกษา: OpenFlow ถูกใช้ในเครือข่ายเพื่อการวิจัยและการศึกษาเพื่อสร้างพื้นที่ทดสอบสำหรับการวิจัยเทคโนโลยีเครือข่ายใหม่ๆ และพัฒนาแอปพลิเคชันที่เป็นนวัตกรรม มหาวิทยาลัยทั่วโลกกำลังใช้ OpenFlow เพื่อสำรวจสถาปัตยกรรมและโปรโตคอลเครือข่ายใหม่ๆ
- เครือข่ายแคมปัส (Campus Networks): OpenFlow ช่วยปรับปรุงการควบคุมและความปลอดภัยของเครือข่ายภายในแคมปัส ตัวอย่างเช่น มหาวิทยาลัยในแคนาดาสามารถใช้ OpenFlow เพื่อใช้นโยบายการควบคุมการเข้าถึงที่ละเอียด ทำให้มั่นใจได้ว่าเฉพาะผู้ใช้ที่ได้รับอนุญาตเท่านั้นที่สามารถเข้าถึงทรัพยากรที่ละเอียดอ่อนได้
อนาคตของ OpenFlow และ SDN
อนาคตของ OpenFlow และ SDN นั้นสดใส โดยมีความพยายามในการวิจัยและพัฒนาอย่างต่อเนื่องเพื่อแก้ไขข้อจำกัดและความท้าทายที่กล่าวถึงข้างต้น แนวโน้มที่สำคัญ ได้แก่:
- การผสานรวมกับคลาวด์คอมพิวติ้ง: SDN และ OpenFlow กำลังถูกผสานรวมเข้ากับแพลตฟอร์มคลาวด์คอมพิวติ้งมากขึ้นเรื่อยๆ เพื่อให้การเชื่อมต่อและการจัดการเครือข่ายที่ราบรื่นสำหรับแอปพลิเคชันบนคลาวด์
- ความก้าวหน้าในการจำลองเสมือนเครือข่าย: เทคโนโลยีการจำลองเสมือนเครือข่ายมีความซับซ้อนมากขึ้น ทำให้มีความยืดหยุ่นและความคล่องตัวในการจัดสรรและจัดการทรัพยากรเครือข่ายมากขึ้น
- ระบบอัตโนมัติและการประสานงานที่เพิ่มขึ้น: เครื่องมืออัตโนมัติและการประสานงานเครือข่ายกำลังเป็นที่แพร่หลายมากขึ้น ทำให้งานจัดการเครือข่ายหลายอย่างเป็นไปโดยอัตโนมัติและปรับปรุงประสิทธิภาพการดำเนินงาน
- การเกิดขึ้นของสถาปัตยกรรม SDN ใหม่: สถาปัตยกรรม SDN ใหม่ๆ กำลังเกิดขึ้น เช่น เครือข่ายตามเจตนา (intent-based networking - IBN) ซึ่งมุ่งเน้นไปที่การแปลงเจตนาทางธุรกิจไปสู่การกำหนดค่าเครือข่าย
- ความสามารถด้านความปลอดภัยที่เพิ่มขึ้น: SDN และ OpenFlow กำลังได้รับการปรับปรุงด้วยความสามารถด้านความปลอดภัยขั้นสูง เช่น การวิเคราะห์ข้อมูลภัยคุกคาม และการบังคับใช้นโยบายความปลอดภัยอัตโนมัติ
บทสรุป
OpenFlow เป็นโปรโตคอลพื้นฐานในระบบนิเวศของ SDN ซึ่งช่วยให้สามารถควบคุมและจัดการทรัพยากรเครือข่ายโดยอัตโนมัติจากส่วนกลางได้ แม้ว่าจะมีข้อจำกัดและความท้าทายบางประการ แต่ประโยชน์ในด้านความคล่องตัว การมองเห็น และการประหยัดต้นทุนของเครือข่ายนั้นไม่อาจปฏิเสธได้ ในขณะที่ SDN ยังคงพัฒนาและเติบโตอย่างต่อเนื่อง OpenFlow จะยังคงเป็นเทคโนโลยีที่สำคัญสำหรับการสร้างโครงสร้างพื้นฐานเครือข่ายที่ยืดหยุ่น ปรับขนาดได้ และสามารถโปรแกรมได้ ซึ่งสามารถตอบสนองความต้องการของสภาพแวดล้อมทั่วโลกที่ไม่หยุดนิ่งในปัจจุบัน องค์กรต่างๆ ทั่วโลกสามารถใช้ประโยชน์จาก OpenFlow และ SDN เพื่อสร้างโซลูชันเครือข่ายที่เป็นนวัตกรรม ซึ่งขับเคลื่อนการเติบโตทางธุรกิจและปรับปรุงประสิทธิภาพการดำเนินงาน
แหล่งข้อมูลเพื่อการเรียนรู้เพิ่มเติม:
- ONF (มูลนิธิเครือข่ายเปิด - Open Networking Foundation): https://opennetworking.org/
- ข้อกำหนด OpenFlow: (ค้นหาเวอร์ชันล่าสุดบนเว็บไซต์ ONF)
- เอกสารงานวิจัยทางวิชาการต่างๆ เกี่ยวกับ SDN และ OpenFlow