openflow之pof(原创,转载请注明)

最近看pof代码看的头疼,不过庆幸的是搞定了,剩下就是将pof的思想看能否融合到EPC的代码里,咱也为将来的5G提出点意见不是?先来说说pof是啥吧。

pof简介

pof的全称(Protocol Oblivious Forwarding)即协议无感知转发,华为提出的一种在OpenFlow上改进的转发方式,这种方式再不需要知道包用的协议是什么的时候就可以转发出去。它能够提高SDN的可编程性,可以在不更改转发设备代码的基础上支持新的协议。仅仅需要做的就是由控制器配置好相应的流表,下发到转发设备上即可。pof可以帮运营商方便迅速的部署基于新协议的服务。基于OpenFlow的SDN网络虽然是有可编程特性的,但是仅仅限于已有的协议,并不能支持新的协议。

pof的基本原则

看着上面的介绍觉得pof很玄,其实核心思想就一个,那就是{length,offset},它将所有的数据域都以{length,offset}来表示

field {
     type;
    offset;
    length
};   

拿mac协议头来作为例子:

有三个区域:

dst{0,0,48}   src{0,48,48} type{0,96,16}其中type来表示字段类型,0表示这是个数据包。那么所以已存在协议和新协议都可以以这种方式来表示。

例子

假设有个IPVX协议为下图所示:、

在pof中,数据包的头是层层解析的,并且一个协议的偏移是相对于其协议头来说的,例如,Src_Addr相对于IPVX头来说就有64bit的偏移。

熟悉OpenFlow的人就知道gototable这个命令,下图就表示了IPVX包怎么被这个命令处理的。

在流表0中MAC头的“Destination address”和“type”作为匹配域,流表0中有已经被控制器配置好的流表项,用来将包转发到流表1进行进一步的处理。在流表1中Src_Addr作为匹配域。

当包进入到流表0时会匹配其中的一条流表项,流表项中的goto—table命令先会将数据处理指针前移14bit。然后根据指针再偏移64bit提取Src_Addr,最后,提取的Src_Addr将会作为匹配关键字来搜寻流表1中的流表项,从而发现匹配项(这和OpenFlow的流水线处理不一样,添加了lookup功能)

还有其他命令不多解释,上面得命令仅作为理解用。

此外,pof还添加了metadata,group(action的集合),独立出counter等等。不得不说pof给SDN带来了很大的希望和前景啊!

时间: 2025-01-06 14:18:16

openflow之pof(原创,转载请注明)的相关文章

完整项目:木子记事本(原创,转载请注明出处)。

一个较为完整的记事本App,记录,存储到数据库,编辑,保存. 运行效果图: Activity类: 欢迎界面: 1 package com.lixu.jishiben; 2 3 import com.gitonway.lee.niftynotification.lib.Effects; 4 import com.lixu.jishiben.R; 5 import com.lixu.jishiben.draws.Mydrawable; 6 import com.lixu.jishiben.until

山大泰克条屏写串口的核心代码(海宏原创,转载请注明)

山大泰克条屏写串口的核心代码,海宏原创,转载请注明. using System; using System.Collections.Generic; using System.Text; // using System.Runtime.InteropServices; using System.IO.Ports; using System.Windows.Forms; using iPublic; namespace sdLed { /// <summary> /// 用来连接LED的API.

Gradle构建可执行Jar包(转载请注明出处)

最近开始接触Java,认识到一个似乎比Maven好用的构建工具Gradle,还来不及细细研究,但是需要构建一个可执行Jar包.上网查了一下.中文的文章千篇一律的提到一个插件apply plugin: 'executable-jar' (https://github.com/stigkj/gradle-executable-jar-plugin) ,也不知道是谁复制了谁的. 但是构建的时候不认这个插件,所以寻找其他方法. 用压缩软件打开Eclipse生成的可执行Jar包与Gradle构建的Jar包

转载请注明出处: https://github.com/qiu-deqing/FE-interview

转载请注明出处: https://github.com/qiu-deqing/FE-interview Table of Contents generated with DocToc FE-interview $HTML, HTTP,web综合问题 常见排序算法的时间复杂度,空间复杂度 前端需要注意哪些SEO web开发中会话跟踪的方法有哪些 <img>的title和alt有什么区别 doctype是什么,举例常见doctype及特点 HTML全局属性(global attribute)有哪些

pof(Protocol Oblivious Forwarding)环境测试用例(原创,转载请注明)

Pof测试教程详细版 前言 一.此教程在pof环境搭建好之后,作为测试用例.下面说明配置中需要用到的一些参数: Controller,即pc1,宿主机mac 地址:忽略,ip:10.10.16.199 Switch,即pc2,mac地址:08:00:27:f8:d0:03  ip: 10.10.16.201 Server/client,即pc3,mac地址:08:00:31:40:e2:6a ip:10.10.16.200 二.本测试用例所构建的一个新协议架构如图:协议类型为0x0888,协议名

pof(Protocol Oblivious Forwarding)环境的搭建(原创,转载请注明)

Pof环境的搭建 一.总体概述 架构如图:pc1为控制器,pc2为交换机.Pc3为server/client(一台装有两个虚拟机的pc,需将网络连接方式设为桥接.自行按照实验室的网段来分配ip,后面章节有详述),在本搭建教程中,controller为宿主机,pc2和pc3为宿主机上的两台虚拟机. 二.Java环境的配置 (一)Java环境配置 由于控制器是floodlight版本修改而来,所以作为控制器的宿主机必须要有java的开发环境.配置方法如下: 1. 在浏览器中打开http://www.

原创:关于使用Mybatis插件自动生成造成批量插入转换成list集合的问题以及解决方案(转载请注明出处,谢谢!)

问题: 由于项目中需要批量插入的功能,然后我就用到了阿里的json包,将json数据转换成list集合在批量添加到数据库,但是这个过程中,我突然发现一个问题,之前接收前台传来的值是有的,但转换之后某些字段的值没有了,后面发现,原来是Mybatis自动生成插件做的怪,将实体类赋setter和getter方法时,并没有将属性大写,也就是说原本我的实体字段为gName;setter方法之后为setgName,这就违反了命名规则,但是阿里json包就出现了不能转换报Null的问题,经过试验,终于找到了解

快的与滴滴较量之杰哥分析(原创发帖,转载请注明出处)

我第一次用打车软件,那时候应该是在2013年10月还在长沙工作的时候,在出租车上看到 二维码名片,用微信扫一扫下载了快的app,那时候,快的可能应该还没有傍上支付宝这个大款,为什么可能,为什么应该,因为那个时候,第一还没有支付款, 第二,可能性分析,即使榜上了,至少支付宝支付,后来打车的时候就经常用快的,同一时期的应该有滴滴,比他们早出来的或者更牛掰的可能是大黄蜂打车还有其 它几个,后来大黄蜂倒下了,据说快的公司把大黄蜂的几个技术人员都吸纳了,至少,解决了他们的就业问题,给社会做了贡献.后来11

如何用console线连接路由器进行初始配置-----无私奉献版(转载请注明出处)

打开包装拿出路由器,需要为路由器进行基础配置,包括时间.访问密码.IP地址等,在初次配置后我们就可以通过telnet的方式来管理和配置路由器了.但这第一次配置是需要通过路由器上的console的口来实现的. 我们在初始配置的时候如何来连接路由器呢?请看下图,由于路由器的console线连接PC的一端是RS232 俗称9针串口(母头)接口,而现在的笔记本基本上都没有配备这种接口,所以我们要配备一个usb转RS232 (公头)的转换模块或者是线(自行购买,并且需要安装驱动). 连接图 连接好cons