กรณีศึกษา OpenFlow 1.3.5 Specification

Open Networking Foundation ได้ปล่อยเอกสารข้อกำหนดคุณลักษณะของ OpenFlow Switch ออกมาในเดือนมีนาคม 2015 โดยในเอกสารฉบับนี้ได้มีการกำหนดคุณลักษณะของ OpenFlow Switch version 1.3.5 เอาไว้ โดยมีทั้งหมด 7 บท คือ

  1. Introduction (บทนำ)
  2. Switch Components (องค์ประกอบของ OpenFlow Switch)
  3. Glossary (อภิธานศัพท์)
  4. OpenFlow Ports (port ต่างๆ ที่เป็นองค์ประกอบของ OpenFlow Switch ทั้งในทางตรรกะและอุปกรณ์จริง)
  5. OpenFlow Tables (ตารางสำหรับบรรจุกฎที่ใช้ในการตัดสินใจและการกระทำต่างๆที่ส่งผลต่อ packet ของ OpenFlow Switch)
  6. OpenFlow Channel and Control Channel (ช่องทางในการติดต่อสื่อสารระหว่าง OpenFlow Switch กับ OpenFlow Controller)
  7. The OpenFlow Switch Protocol (ข้อตกลงในการทำการสื่อสารของ OpenFlow Switch)

This blog is a part of the CS849 course assignment
นายจุมพล เยาว์ธานี 5909321019

1. Introduction

เอกสารฉบับนี้จะอธิบายถึงรายละเอียดความต้องการของ OpenFlow Logical Switch โดยที่ข้อมูลเพิ่มเติมเกี่ยวกับ OpenFlow และ Software Defined Networking สามารถหาได้จากเวปไซต์ของ Open Networking Foundation

เอกสารฉบับนี้จะอธิบายครอบคลุมถึงองค์ประกอบและฟังก์ชันพื้นฐานของ OpenFlow switch และ protocol ที่ใช้ในการควบคุม OpenFlow switch จากตัว OpenFlow controller

Continue reading “1. Introduction”

2. Switch Components

Main components of an OpenFlow switch
รูป 1: Main components of an OpenFlow switch.

OpenFlow Logical Switch จะประกอบด้วย flow table อย่างน้อย 1 อัน และ group table 1 อัน โดยflow table และ group table จะใช้เพื่อทำการค้นหาและส่งต่อ packet และยังมีช่องทางที่ใช้สำหรับติดต่อกับ OpenFlow controller นั่นคือ OpenFlow channel  ดังที่แสดงในรูปที่ 1. ตัว switch จะติดต่อสื่อสารกับกับ controller และ controller จะควบคุม switch โดยใช้ OpenFlow protocol

OpenFlow protocol สามารถที่จะเพิ่ม, แก้ไข, ลบ รายการที่อยู่ใน flow tables ทั้งเชิงสั่งการและเชิงตอบสนองต่อ packet แต่ละ flow table ใน switch จะประกอบด้วยเซตของ flow entries โดยแต่ละ flow entries จะประกอบด้วย 3 อย่างคือ

Continue reading “2. Switch Components”

3. Glossary

ในบทนี้จะอธิบายเกี่ยวกับคำศัพท์ที่ใช้ในเอกสารนี้

  • Action: กระบวนการต่างๆ ที่กระทำกับ packet อาจจะหมาบถึงการส่ง packet ออกไปยัง port, เปลี่ยนแปลง packet หรือ เปลี่ยนสถานะ เช่น การเปลี่ยนความเกี่ยวข้องระหว่าง packet กับ queue โดยที่ action ประกอบด้วยตัวแปรต่างๆ ตัวอย่างเช่น set-field action จะมี field type และ field value ในบางครั้ง action อาจจะเป็นส่วนหนึ่งของ คำสั่งที่ผูกอยู่กับ flow entry หรือ action bucket ที่ผูกอยู่กับ group entry ทุก action จะถูกเก็บรวมไว้ใน Action Set ของตัว packet หรือถูกนำไปปฏิบัติกับ packet ในทันที
  • List of Actions: ลำดับของ action ที่ระบุอยู่ใน flow entry ทั้งในส่วนของ Apply-Actions instruction หรือ packet-out แต่ละ action จะถูกนำมาปฏิบัติตามลำดับทันที ในที่นี้ action สามารถที่จะซ้ำได้ และผลของมันจะถูกสะสมไปเรื่อยๆ
  • Continue reading “3. Glossary”

4. OpenFlow Ports

OpenFlow port คือ network interface สำหรับการรับ/ส่ง packet ระหว่างระบบของ OpenFlow กับส่วนอื่นๆ ของระบบ network และใช้เป็นตรรกะในการเชื่อมโยงระหว่าง OpenFlow switch โดยเชื่อมจาก output port ของ OpenFlow switch ตัวหนึ่งไปยัง ingress port ของ OpenFlow switch อีกตัวหนึ่ง packet จะเข้ามาทาง ingress port เพื่อประมวลผลโดย OpenFlow pipeline และหลังจากนั้น packet ที่เป็นผลลัพธ์ จะถูกส่งออกไปยัง output port

OpenFlow switches รองรับการทำงานของ OpenFlow Port อยู่ 3 แบบคือ Physical Port, Logical Port, และ Reserved Ports

Standard Port คือ port ที่ถูกกไหนดเป็น physical port, logical port, และ LOCAL port ที่ถูกสงวนไว้ standard port อาจจะเป็นได้ทั้ง ingress port หรือ output port, หรือถูกใช้ใน group โดยจะมีตัว counter, state, และ configuration เป็นของตัวเอง
Continue reading “4. OpenFlow Ports”

5. OpenFlow Tables

Untitled
รูปที่ 2 Packet flow through the processing pipeline

ในส่วนนี้จะอธิบายถึงองค์ประกอบของ flow table และ group table พร้อมกับกลไกในการทำ matching และ Action handling

5.1 Pipeline Processing

OpenFlow switch จะมีอยู่ 2 แบบคือ OpenFlow Only และ OpenFlow Hybrid โดยที่ Switch ที่เป็นแบบ OpenFlow Only จะรองรับการทำงานของ OpenFlow นั้น ไม่สามารถทำงานอย่างอื่นได้

Continue reading “5. OpenFlow Tables”