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,协议名称为FP。在用例中,此数据包根据FP 协议从Server/Client (PC3) 发送到POFSwitch (PC2) ,并由POFSwitch (PC2)转发回Server/Client (PC3)。在配置了控制器后,转发器可以依据此协议转发。

三、此用例假设你已连接好controller和switch。如果没有,请参照pof环境搭建详细版连接。

四、在配置时请将对应的mac地址更换为自己实际地址。

五、在以下步骤中,输入16进制的数时,不需要加上0x(默认)

(一)流表的配置与下发

要构造的三个流表如图:

其中绿色的为匹配域。

Step1. Define FP protocol.

l Click the plus sign before Add New Protocol.

l Take turns to input name and length of a field, and click OK to submit the field. (The fields are: Dmac (48bit), Smac (48bit), Eth Type (16bit), DIP (64bit), SIP (64bit), Protocol (16bit))

l Click SAVE and input name of the protocol (ETH + FP), and click SAVE to confirm the packet definition.

Step2. Create First Flow Table.

l Click the box behind Switch, and choose the switch.

l Click the plus sign before Add New Table. Click FirstEntryTable, input “128” in Table Size. Choose “OF_MM_TABLE” in Table Type. Click Table Field and choose fields Dmacand Eth Type in protocol window, click SUBMIT to confirm. Click SUBMIT to submit the table.

Step3. Create FP Parse Flow Table.

l Click the plus sign before Add New Table, and click NewTable. Input “FP Parse Flow Table” in Table Name, input “128” in Table Size, choose “OF_MM_TABLE” in Table Type. Click Table Field and choose fields DIP, SIP and Protocol in protocol window, clickSUBMIT to confirm. Click SUBMIT to submit the table.

Step4. Create FP Flow Table.

l Click the plus sign before Add New Table, and click NewTable. Input “FP Flow Table” inTable Name, input “128” in Table Size, choose “OF_LPM_TABLE” in Table Type. ClickTable Field and choose fields DIP in protocol window, click SUBMIT to confirm. ClickSUBMIT to submit the table.

Step5. Configure FP Flow Table.

l Click FP Flow Table button to choose it.

l Click Flow Entry to create a new entry. Input “1” in Priority, input value and mask of each entry field (DIP: value = 0x1122334455667788, mask = 0xffffffffffffffff).

l Click New Instruction Item in Instruction, and choose APPLY_ACTIONS. ChooseSET_FIELD after clicking Add New Action. Choose Dmac in the FieldName, input mac address of the PC3’s port in Value and “0xffffffffffff” in Mask.

l Click Add New Action and choose SET_FIELD. Choose Smac in the line FieldName, input mac address of the PC2’s data port in Value and “0xffffffffffff” in Mask.

l Click Add New Action and choose SET_FIELD. Choose DIP in the line FieldName, input “0x8877665544332211” in Value and “0xffffffffffffffff” in Mask.

l Click Add New Action and choose SET_FIELD. Choose SIP in the line FieldName, input “0x1122334455667788” in Value and “0xffffffffffffffff” in Mask.

l Click New Instruction Item in Instruction, and choose APPLY_ACTIONS. Click Add New Action and choose OUTPUT. Choose the port index of PC2’s data port in output port ID. Click SUBMIT to confirm the configuration of the FP Flow Table. If you don’t know the data port’s index, click the green little tree sign at bottom right corner to check Port infomation.

Step6. Configure FP Parse Flow Table.

l Click FP Parse Flow Table button to choose it.

l Click Flow Entry to create a new entry. Input “1” in priority, input value and mask of each entry field (DIP: value = 0x0, mask = 0x0; SIP: value = 0x0, mask = 0x0; Protocol: value = 0x0901, mask = 0xffff).

l Click New Instruction Item in Instruction, and choose instruction GOTO_TABLE. Choose “FP Flow Table” in Next_TableID and input “0” in Packet Offset, click SUBMIT to confirm the configuration of the FP Parse Flow Table.

Step7. Configure First Flow Table.

l Click First Flow Table button to choose it.

l Click Flow Entry to create a new entry. Input “1” in priority, input value and mask of each entry field (Dmac: value = 0x0, mask = 0x0; Eth Type: value = 0x0888, mask = 0xffff).

l Click New Instruction Item in Instruction, and choose instruction GOTO_TABLE. Choose “FP Parse Flow Table” in Next_TableID and input “0” in Packet Offset, click SUBMIT to confirm the configuration of the FP Parse Flow Table.

Step8. Enable data port.

l Click the green little tree sign at bottom right corner to check Port infomation.

l All of the network ports of PC2 are shown in line. Find the data port, which connected to Server/Client (PC3), according to the port name listed in the fourth column name. ChooseTrue in the last column OpenFlow Enable in data port line.

Datapath的启用这点必不可少,不然是没有转发功能的。

首先点击右下方的绿色的树状按钮,然后点击port:

在出现的这一栏数据的最后,即最右侧找到OpenFlow Enabled,鼠标左键点击,然后enter键:

注:在step5 中有 一串高亮的红色数字0x8877665544332211,这里和官方配置文档不同。请注意。

(二)包构造、转发测试

Pc3 即server/client,用来构造测试包并且发送给switch,并且抓包分析。

1.进入系统后,打开ostinato和 wireshark。请注意一定要sudo打开,不然无法抓包。设置wireshark,点击capture->interfaces,然后选中eth0,点击start。

2.在filter里输入如图所示过滤条件,点击apply。会发现抓取窗口变为空白:

3.用ostinato构造数据包。选中port0,在右侧空白处右键->new stream.然后双击出来的红框内的设置按钮:

4.选中 Protocol Selection 点击Advanced,选中MAC,并点击方框4内的按钮加到右边。同样的步骤,将EthII和 HexDump加到右边:

5.选中 Protocol Data,点击Media AccessProtocol,依次在Destination和Source中输入相应的mac地址(Source为pc3即server/client的mac地址,Destination为pc2 即switch的mac地址):

6.点击Ethernet II,在方框2中打勾,并输入内容为0888:

7.点击HexDump,输入以下内容:112233445566778888776655443322110901:

8.点击Packet View,预览下包结构,是否为:0x XX XX XX XX XX XX YY YY YY YY YY YY 08 88 11 22 33 44 55 66 77 88 88 77 66 55 44 33 22 11 09 01。点击ok。

9.选中红框1中的port0-0,然后点击2框中的apply,然后点击3框中的开始发送。

在此用例中我们只发了一个构造的包:

(三)结果分析

此时打开刚才设置好的wireshark,会发现抓取了两个包,从Source和Destination的mac地址中我们可以看到,第一个包是我们从pc3发到pc2中的,第二个则是经过pc2的转发,回到pc3的。具体的包结构可以双击看到。此处不在赘述。若只有第一个包,则很大部分原因是你的流表配置错误,请去检查。

至此,整个用例测试完毕。当然,如果你理解了,在step5中我们完全可以按照官方文档来,但是你构造包的时候就得相应的改变。如需要,请留言邮箱

官方文档地址:http://www.poforwarding.org/tutorial/

时间: 2024-10-08 20:50:14

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

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

一个较为完整的记事本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

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

最近看pof代码看的头疼,不过庆幸的是搞定了,剩下就是将pof的思想看能否融合到EPC的代码里,咱也为将来的5G提出点意见不是?先来说说pof是啥吧. pof简介 pof的全称(Protocol Oblivious Forwarding)即协议无感知转发,华为提出的一种在OpenFlow上改进的转发方式,这种方式再不需要知道包用的协议是什么的时候就可以转发出去.它能够提高SDN的可编程性,可以在不更改转发设备代码的基础上支持新的协议.仅仅需要做的就是由控制器配置好相应的流表,下发到转发设备上即可

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

山大泰克条屏写串口的核心代码,海宏原创,转载请注明. 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.

转载请注明出处: 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)有哪些

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

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

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

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

java https tomcat 单双认证(含证书生成和代码实现) 原创转载请备注,谢谢O(∩_∩)O

server: apache-tomcat-6.0.44 jdk1.7.0_79client: jdk1.7.0_79 jks是JAVA的keytools证书工具支持的证书私钥格式. pfx是微软支持的私钥格式. cer是证书的公钥. 生成: keytool -genkey -alias tbb -keyalg RSA -keystore D:\cert\tbb.keystore 模板: keytool -genkey -alias yushan -keypass yushan -keyalg

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

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

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

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