OpenFlow Switch学习笔记(四)——Matching
这次我们着重详述来自于网络中的数据包在OpenFlow Switch中与Flow Entries的具体匹配过程,以及当出现Table Miss时的处理方式,下面就将从这两方面说起。
1、Matching
当一个来自于外部网络的数据包进入到OpenFlow Switch中时,OpenFlow Switch将会按照如下图所示的方式来处理这些数据包,如前面的学习笔记中讲述的那样,会先从Pipeline的第一个Flow Table首先进行Lookup,然后可能继续进入到其他的Flow Table进行Lookup。匹配过程图如下:

数据包的匹配值域来源于数据包头,这些匹配值域将会依据数据包的类型被用来与Flow Table进行匹配,比如源地址或者目标地址;另外,除了数据包头信息外,数据包的 ingress port 或者 从上一个Flow Table传递过来的 Metadata 值域(在Flow Table之间进行参数传递的载体)也可以充当匹配域。数据包的匹配值域表示了数据包当前的状态值,假若数据包在前一个Flow Table里应用了Apply Actions改变了数据包头信息,那么这么改变将会被立即反映到数据包头信息里。
数据包与某个Flow Entry能成功匹配的前提是:数据包的匹配值域都必须落在Flow Entry匹配值域的范围内。假若一个Flow Entry的匹配值域是ANY,那么它将表示匹配数据包的所有可能的值域信息。当发现有多个Flow Entries匹配成功,那么仅仅具有最高优先权的Flow Entry将会被选择使用,同时该Flow Entry的Counters的值必须被更新。如果OpenFlow Switch配置了OFPC_FRAG_REASM,那么在进行Pipeline processing的时候,IP片段必须要被重组起来。OpenFlow Switch规范并没有定义当遇到格式不正确的或者损坏的数据包时该如何处理。
2、Table Miss
如前面的学习笔记记录那样,每个Flow Table都必须支持Table Miss Flow Entry,用来处理当发生Table Miss 时如何处理数据包,或者将其发送回Remote Controller,或者将其直接丢弃,或者将其转发到后续的Flow Table里处理。
如同其他正常的Flow Entry一样,Table Miss Flow Entry也是由Match Fields和Prioriy作为联合主健来唯一定位,它能够匹配所有的数据包值域,即能够匹配的值域范围要超出Flow Table的正常范围,并且拥有最低的优先级 0 ,但是其可能没有其他正常Flow Entry的能力。然而,Table Miss Flow Entry必须至少得能够通过CONTROLLER Reserved Port将数据包发送给Remote Controller,以及通过Clear-Actions直接丢弃数据包,但是为了与前面规范保持一致,推荐直接将数据包转发给后续的Flow Table处理。
Table Miss Flow Entry的工作方式与其他正常的Flow Enety无异,默认情况下,Flow Table里并不存在Table Miss Flow Entry,但是在任何时候都可以通过Remote Controller来添加或者删除,它也如同其他正常Flow Entry可能会过期。它仅仅匹配其他正常Flow Entry无法成功匹配的数据包,并且其上得Instructions Set将会应用到数据包上。当经过Table Miss Flow Entry的Actions通过CONTROLLER Reserved Port将数据包发送给Remote Controller时,必须指明packet-in消息的原因是table miss。
如果一个Flow Table并不存在Table Miss Flow Entry,那么其未能成功匹配的数据包就会被丢弃,但是基于不同的OpenFlow Switch实现策勒,可以覆盖其默认行为,以其他的方式来实现。
OpenFlow Switch学习笔记(四)——Matching的更多相关文章
- OpenFlow Switch学习笔记(七)——Matching Fields
Matching Fields in_port=port Matches OpenFlow port port dl_vlan=vlan Matches IEEE 802.1q Virtual LAN ...
- OpenFlow Switch学习笔记(一)——基础概念
OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open F ...
- OpenFlow Switch学习笔记(五)——Group Table、Meter Table及Counters
本文主要详述OpenFlow Switch的另外两个主要组件——Group Table和Meter Table,它们在整个OpenFlow Swtich Processing中也起到了重要作用. 1. ...
- OpenFlow Switch学习笔记(三)——Flow Tables
这次我们主要讨论下OpenFlow Switch的核心组件之一——Flow Tables,以了解其内部的 matching 以及 action handling 机制.下文将会分为几个部分来逐步详述O ...
- OpenFlow Switch学习笔记(二)——OpenFlow Ports
OpenFlow Ports是OpenFlow Switch与剩余网络之间传递Packet的网络接口.OpenFlow Switches之间通过OpenFlow Ports彼此相互逻辑连接.一个Ope ...
- OpenFlow Switch学习笔记(六)——Instructions和Actions
本文主要重点讨论OpenFlow Switch规范的指令集,它们深刻影响着数据包在Switch中的处理行为,下面开始从以下几个部分谈起. 1.Instructions 每一个Flow Entry里都包 ...
- ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁
作者:Grey 原文地址: ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 当多个进 ...
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
随机推荐
- [JS]getYear()和getFullYear()方法区别
getFullYear();总是返回4位完整的年份 getYear();当年份在1900-1999时,返回两位数字,如1980返回80,当不在这个范围时,返回同getFullYear(); 注:get ...
- 封装自己的JS库
一.基础知识 1.点击计数 第一种: var aBtn=document.getElementsByTagName('input'); var i=0; for(i=0;i<aBtn.lengt ...
- 从QQ网站中提取的纯JS省市区三级联动
在 http://ip.qq.com/ 的网站中有QQ自己的JS省市区三级联动 QQ是使用引用外部JS来实现三级联动的.JS如下:http://ip.qq.com/js/geo.js <!DOC ...
- java jar
http://www.cnblogs.com/shirui/p/5270969.html Java之 将程序打包成jar包 准备材料: 1.java文件: Helloworld.java pack ...
- Java:String、StringBuffer和StringBuilder的区别
1 String String:字符串常量,字符串长度不可变.Java中String是immutable(不可变)的. String类的包含如下定义: /** The value is used fo ...
- poj1274 二分匹配
今天复习二分匹配,A 了一道模板题. 二分匹配需要理解增广路的寻找.用dfs来更新最大匹配.注意一些点:赋初值:愚蠢地把==写成了= ; 然后match的记值;每个点都要重新走一遍. #include ...
- POJ 2104 静态找区间第k大
静态区间第k大的问题,往往可以利用主席树来解决 这是主席树的第一道题 主席树大概可以理解为在n个节点上都建立一棵线段树,但是想想会超出内存 每一个节点保存的线段树都记录当前整段前缀区间的信息 但是因为 ...
- The Coco-Cola Store C(Contest #3 )
Once upon a time, there is a special coco-cola store. If you return three empty bottles to the shop, ...
- android selector详解
--> 改变字体的颜色<selector xmlns:android="http://schemas.android.com/apk/res/android"> ...
- java基础之 string
一 string public final class String 继承自java.lang.Object类. 实现了接口: java.io.Serializable, Comparable< ...