IT技术互动交流平台

OpenFlow交换机规范小结

作者:7hat  来源:IT165收集  发布日期:2014-03-10 20:32:43

  这节的内容相当多,主要是介绍OpenFlow标准特别是流表的相关特性。

  典型的OpenFlow标准由三部分组成:安全通道,流表和OpenFlow协议。注意这个标准是一份设备标准,并不单指OpenFlow协议。后来引入了流水线式的多流表以及组表(Group Tabel)。

  (图摘自SDNAP的文章)

  安全通道是交换机与控制器进行通讯的接口,在实现上推荐使用(在缺省情况下就是)TLS用来保证认证性和数据隐私。而OpenFlow协议是用来描述控制器和交换机之间交互信息的接口标准。OpenFlow协议支持三种类型的信息:controller-to-switch(控制器到交换机)、asynchronous(异步,实质上这更应该命名为switch-to-controller交换机到控制器)和symmetric(对称)。具体来说每种类型都包含了不少类型的信息,这里就不说了。

  流表是可以看作是普通协议格式的一种抽象。在OpenFlow v1.3中,流表结构由匹配域、优先级、计数器、指令(改名前叫动作)、超时定时器和Cookie。(1)匹配域包含的内容非常多,而且还在不断地扩展,典型的有源MAC地址、目的MAC地址、源IP地址、目的IP地址以及端口等,反正这包括各种各样已炸ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq1xNCt0unL+dPDtb21xNPyoaO2+E9wZW5GbG93vs3Kx8+jzfvX9rW9v8nS1LbUyM7S4tPyvfjQ0MalxeSho6OoMqOp08XPyLy2ysfWuMH3se3P7tTauMPB97HttcTGpcXkz+C21MalxeS0ztDyoaPWtbXD16LS4rXEysejrMH3se26zcH3se3Wrrzk0rLT0NPFz8i8trXEuMXE7qOs1eLWuLXEysfB98uuz9/Jz7XEz+C21MalxeS0ztDyoaPB7c3io6zV4rj208XPyLy2sqKyu8rHusPP8bHgs8zW0NPFz8i208HQxMfR+bXE08XPyLy2o6y2+MrH07LQ1LXEyOey5cjrxcXQ8sTH0fnTxc/IvLaho9a4tqjBy9K7uPbTxc/IvLajrL7N07LQ1LLlyOu1vbjDzrvWw6Gj1eK21NPase3P7rrNse2007jFxO7Jz7a8ysfSu9H5tcSho6OoM6OpvMbK/cb3ysfWuMalxeTV4rj2wfex7c/utcTK/b7dsPzA27zGyv3Ev6Gjo6g0o6nWuMHuse3Kvsjnus60psDtxqXF5NXiuPbB97Htz+61xMr9vt2w/KGj1eK49ta4we7T0L/JxNzKx7bUxuS2r9f3vK/X97P20N64xLKitKu1vc/C0ru49sH3se29+NDQxqXF5KOs0rLT0L/JxNzKx8Giv8zWtNDQtq/X97yvtcS2r9f3oaO2r9f3vK+/ydLUwO294s6qvq25/bbguPbB97HtuvPDv7j2wfex7da4tqjSqtf2tcS2r9f3tcS8r7rPoaOjqDWjqbOsyrG2qMqxxvfKx9a41eK49sH3se3P7rXE1+6zpNPQ0KfKsbzkoaO1sbOsuf3T0NCnyrG85Lrzo6xPcGVuRmxvd727u7u7+rvhyb6z/bjDwfex7c/usqLP8r/Y1sbG97eiy83P+8+iyrnG5NaqtcC0y8fpv/aho6OoNqOpQ29va2ll1NrK/b7d16q3osnPsru74dPDtb2jrMv8yse/2NbGxvfTw8C0stnX3cH3tcS5pL7foaM8L3A+CjxwPqGhoaHX6bHtxuTKtb7Nyse9q7bguPbB97Hgs8nSu7j21+mjrMi7uvPWtNDQz+DNrLXEstnX97yvoaPV4r/J0tTTw9PayrXP1rnjsqW78tfpsqWjrLvy1d+21MSz0KnB99a00NDSu9CpzNix8LXEstnX96GjPC9wPgo8cD6hoaGh1NpPcGVuRmxvdyB2MS4yuvPM4bP2wctPcGVuZmxvd7bLv9q1xLjFxO6ho09wZW5GbG93vbu7u7v61qez1sj91tbA4NDNtcS2y7/ao7rO78Dttsu/2qGiwt+8rbbLv9q6zbGjwfS2y7/aoaPO78Dttsu/2r7NysfWuL27u7u7+rXE07K8/rbLv9qjrLb4wt+8rbbLv9rKx9a4vt/T0LPpz/PS4tLltcS2y7/ao6zA/cjnyKuyv87vwO22y7/ao6zEs9Cpzu/A7bbLv9q1yKOsztLIz86q1eLW99KqysfOqsHL0rvQqdeqt6LQ0M6qtcS3vbHjoaOxo8H0tsu/2srHzqrBy8Cp1bm1xLe9seOjrMD9yOfKudPDt8dPcGVuRmxvd7XEt723qNeqt6K1yKGj1eLI/dbWtsu/2ra8zbOzxs6qT3BlbkZsb3e2y7/ao6zU2sq508PJz9K7sOOyu8f4t9ahozwvcD4KPHA+PGltZyBzcmM9"http://www.it165.net/uploadfile/files/2014/0310/2014031019282175.png" alt="" />    

(图摘自SDNAP的文章)

  最后说说数据包的匹配过程。当一个数据包从输入端口进入OpenFlow交换机后,会先在表0进行匹配,根据匹配的流表项执行下一步的操作,有可能是直接执行动作集或丢弃数据包,也可能是将动作加入动作集然后转到后续流表匹配。值得注意的是,在OpenFlow v1.3中增加了table-miss流表项,用于指示当整个流表都不匹配的时候执行的动作。这非常有利于定义缺省动作。另外,流表的操作顺序只能按优先级从前到后,不能转回前面,但应该可以跳到后面的某个表,这应该是加入某些值然后使后面的表都只将其传递直到目标。这个我还不肯定。

  当然,这一节还包含很多其他的内容。但我认为以上是主干知识。

延伸阅读:

  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规