Skip to main content

Components

|----------|
|Controller|
------------
|
| (openFlow protocol)
--------------------|
| OpenFlow | Group |
| Channel | Table |
|----------| |
| Flow Flow |
| Table -->Table |
|----------------------

(openflow switch)

Component是由controller跟openflow switch所組成的

每個openflow switch中,會利用openflow channel藉由openflow protocol跟controller溝通。

此外openflow switch中會含有至少一個的flow table,對於每個封包,會到flow table中去尋找對應的entry

來做相對應的事情,而group table中含有很多個group entries,每個group包含了一個action buckets的列表,

而action buckets則收集了各種action 以及相對應的參數。

OpenFlow Ports

  • openflow ports 是openflow switch彼此交換使用的port.
  • 與 openflow switch 上真實的port不會完全對應.
  • 封包進來的稱做為ingress port.
  • 封包出去的稱為output port.
  • 必須支援三種type的port
    • physical ports
    • logical ports
    • reserved ports

Standard Ports

  • 定義為physical ports,logical ports and LOCAL reserved port(不包含其他的reserved port)

Physical Ports

  • 由openflow switch定義
  • 跟硬體上真實的port有關,對於一般的switch來說,是 one-to-one的關係
  • 在openflow switch中,有些會使用virtualised的方式來管理ports,此時的physical ports就代表virtual slice

Logical Ports

  • 由openflow switch定義
  • 跟硬體教無關,比physical port更高一階.
  • 被用來使用一些 non-openflow methods(e.g. link aggregation groups, tunnels, loopback interfaces)
  • 可封裝封包.
  • 可對應到不同的physical ports.
  • metadata中會含有Tunnel-ID.

Reserved Ports

  • 由specification 1.3定義
  • 做一些通用的forwarding action (e.g. sending to controller,flooding, forwarding using non-OpenFlow methos)
  • openflow switch 沒有要求要支援所有的reserved ports
  • Required:(待釐清,有點模糊)
    • ALL:代表switch的所有port都可以用來forwarding 特定的封包,除了封包的ingress port跟被標記OFPPC_NO_FWD的port
    • CONTROLLER:可用在ingress port & output ports,用在output port時,會被封裝成pkcket-in message然後送往controller,當用在ingress port時,代表封包來自controller
    • TABLE:代表openflow pipeline的開始,只有當output action在packet-out message的action list中時才有效
    • IN_PORT:代表封包的ingress port, 只能在output port使用,會讓封包由ingress port送出去.
    • ANY:當沒有port被使用(wildcarded)時用在某些特殊的openflow command.
  • Optional (openFlow-only switch 不支援)
    • NORMAL:傳統的switch處理方式
    • FLOOD:使用normal pipeline 來flooding.