OpenvSwitch系列之ovs-ofctl命令使用
Open vSwitch系列之一 Open vSwitch诞生
Open vSwitch系列之三 ovs-vsctl命令使用
Open vSwitch系列之四 ovs-ofctl命令使用
ovs-ovofctl 命令是对流表的操作,包括对流表的增,删,改,查等命令。简单来说流表类似于交换机的MAC地址表,路由器的路由表,是ovs交换机指挥流量转化的表。

说到流表就不得不说控制器。控制器是给交换机下发流表的设备,最常见的控制器是OpenDaylight,简称ODL,下面首先安装一个ODL控制器,看看控制器给交换机下发的原汁原味的流表是怎么样的。
一、安装 ODL控制器
1.安装java
apt install openjdk--jdk
2.配置环境
vim /etc/environment ,进入环境变量配置文件,在第二行加入java的环境变量。
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"

3.下载ODL编译好的文件
wget https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.6.4-Carbon/distribution-karaf-0.6.4-Carbon.tar.gz


4.解压文件
tar zvxf distribution-karaf-0.6.-Carbon.tar.gz
5.配置文件
简单配置ODL的运行文件
/etc/org.apache.karaf.management.cfg

6.开启ODL控制器

7. 安装必要的插件。
全新的ODL只有核心插件,还需要web 页面,openflow支持等插件。
opendaylight-user@root>feature:install odl-restconf
opendaylight-user@root>feature:install odl-l2switch-switch-ui
opendaylight-user@root>feature:install odl-openflowplugin-flow-services-ui
opendaylight-user@root>feature:install odl-mdsal-apidocs
opendaylight-user@root>feature:install odl-dluxapps-applications
opendaylight-user@root>feature:install odl-faas-all

8.查看端口验证ODL是否启动成功
当ODL启动成功之后会监听在6633端口,监听交换机的连接。如果6633端口有监听,那就说明ODL启动是正常的
sudo netstat -anput | grep

二、连接控制器
这个命令是不是很熟悉呢?对的,这个命令就是上一篇 ovs-vsctl 命令 中最后一个命令,交换机连接控制器的命令。
ovs-vsctl set-controller br-test tcp:127.0.0.1:
连接上控制器之后我们来看看有什么变化。在网桥br-test下多了一个controller设备信息,包括一个状态 is_connected:true,这个状态标志这连接成功,如果没有这个状态说明交换机并没正真的连接到控制器上。

当交换机连接上控制器之后,有没有好奇控制器会给交换机发送什么流表呢?发送的流表就是如下啦:

上面的命令是交换机查看流表的命令 ovs-ofctl dump-flows br-test ,这个命令和ovs-vsctl show 命令是使用频率最高的两个命令,一定要记住的。那么这两条流表是什么意思呢?我们逐个分析:
在分析之前简单介绍一个流表的组成,一个最简单的流表由3部分组成,分别是:匹配项 ,动作 ,计数器。

匹配项:用来匹配流量的特征,例如传统交换机能够根据mac地址转发,路由器能够根据ip地址转发。mac,ip都是流量的特征。
动作:动作是匹配项匹配到数据之后采取的动作,包括转发和丢弃这两个最常见的动作。
在OpenStack的ovs交换机中,流表是这样的:

可以看到in_port=1是一种匹配项,actions指明了转发动作。

对于以上两条流表来说转发动作分别是CONTROLLER:65535 转发给控制器,drop 丢弃流表。那么这两个动作是怎么执行呢?以上两个流表都没有匹配项就是说默认匹配进入的所有的流量。一个转发,一个丢弃,到底执行谁呢?这个根据优先级来选择,priority 是优先级,作用是优先级越高,流表越先执行。所有第一条:actions=CONTROLLER:65535 发挥效果。其实这也符合常识,交换机里没有流表,所以进入的流表都要交给控制器,让控制器去完成计算和流表下发。
三、手动下发流表
流表(低版本)可以匹配OSI模型的1层至4层,如下图所示,对匹配到的流表做转发、丢弃或者更复杂的操作。具体的匹配项如下图所示:

下发流表的命令,需要加上匹配项和动作,可以匹配到上面提到1~4层。
ovs-ofctl add-flow
1.第一层:入端口
in_port 表示入端口,匹配到之后的actions是output:2, 意思是从2端口转发出去。

使用命令来查看刚刚下发的流表,可以在交换机中找到。
ovs-ofctl dump-flows br-test

2.第二层:匹配MAC地址
匹配mac地址的关键字是:
dl_src :源mac地址
dl_dst :目的mac地址
然后转发actions=output:2 从2端口转发出去

查看流表下发是否成功:

3.第三层:匹配IP地址
匹配网络层ip地址比匹配入端口和mac地址要复杂一些。因为网络层中除了IP协议外还有ICMP,IGMP等,所以需要指定匹配的是网络层中的哪一种协议。
匹配方式:
协议: dl_type=0x0800 或者 ip 表明是用于匹配哪一种协议
nw_src: 源ip地址
nw_dst: 目的ip地址
dl_type = 0x0800


ip

更多匹配字段:
| 字段名称 | 说明 |
| in_port=port | 传递数据包的端口的 OpenFlow 端口编号 |
| dl_vlan=vlan | 数据包的 VLAN Tag 值,范围是 0-4095,0xffff 代表不包含 VLAN Tag 的数据包 |
| dl_vlan_pcp=priority | VLAN 优先级,改值取值区间为[0-7]。数字越大,表示优先级越高。 |
|
dl_src=<MAC> |
匹配源或者目标的 MAC 地址01:00:00:00:00:00/01:00:00:00:00:00 代表广播 地址00:00:00:00:00:00/01:00:00:00:00:00 代表单播 |
| dl_type=ethertype |
匹配以太网协议类型,其中: |
|
nw_src=ip[/netmask] nw_dst=ip[/netmask] |
当 dl_typ=0x0800 时,匹配源或者目标的 IPv4 地址,可以使 IP 地址或者域名 |
| nw_proto=proto | 和 dl_type 字段协同使用。
当 dl_type=0x0800 时,匹配 IP 协议编号 |
| table=number |
指定要使用的流表的编号,范围是 0-254。 在不指定的情况下,默认值为 0 通过使用流表编号,可以创建或者修改多个 Table 中的 Flow |
| reg<idx>=value[/mask] |
交换机中的寄存器的值。 当一个数据包进入交换机时,所有的寄存器都被清零,用户可以通过 Action 的指令修改寄存器中的值 |
| tp_src=number | TCP/UDP/SCTP 源端口 |
| tp_dst=number | TCP/UDP/SCTP 目的端口 |
四、删除流表
流表不仅要会添加,同时也要会删除。删除流表的命令是:ovs-ofctl del-flows + 网桥 + 匹配条件
匹配条件一:入端口


匹配条件二:源ip地址。删除去往 114.114.114.114 的流表

想要使用ovs交换机,知道了vsctl以及ofctl这两个命令之后基本上就能上手了,但作为对ovs交换机的深入学习到现在为止也才入门而已,下面还会有更复杂但更强大的命令使用介绍和原理介绍。更复杂,更强大?怎么感觉是在说:我变强了,也变秃了!

OpenvSwitch系列之ovs-ofctl命令使用的更多相关文章
- OpenvSwitch系列之八 vxlan隧道
Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl命令使用 Open vSwit ...
- OpenvSwitch系列之七 meter表限速
Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl命令使用 Open vSwit ...
- OVS常用命令与使用总结
说明 在平时使用ovs中,经常用到的ovs命令,参数,与举例总结,持续更新中… 进程启动 1.先准备ovs的工作目录,数据库存储路径等 mkdir -p /etc/openvswitch mkdir ...
- Android Studio系列教程五--Gradle命令详解与导入第三方包
Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...
- 分布式系列 - dubbo服务telnet命令【转】
dubbo服务发布之后,我们可以利用telnet命令进行调试.管理.Dubbo2.0.5以上版本服务提供端口支持telnet命令,下面我以通过实例抛砖引玉一下: 1.连接服务 测试对应IP和端口下的d ...
- 大数据系列之数据仓库Hive命令使用及JDBC连接
Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...
- 抛砖系列之redis监控命令
前言 redis是一款非常流行的kv数据库,以高性能著称,其高吞吐.低延迟等特性让广大开发者趋之若鹜,每每看到别人发出的redis故障报告都让我产生一种居安思危,以史为鉴的危机感,恰逢今年十一西安烟雨 ...
- OpenvSwitch系列之ovs-vsctl命令使用
Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl 命令使用 OpenvSwit ...
- OpenvSwitch系列之五 网桥特性功能配置
Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl命令使用 Open vSwit ...
随机推荐
- CDH集群安装
1 软硬件准备 1.1 准备三个节点 序号 主机名 内存 CPU IP地址 角色 1 cdh1 8G 8核心 192.168.5.78 cloudera-scm-server,mysql 2 cdh2 ...
- /bin/java: 没有那个文件或目录spark/bin/spark-class:行71: /usr/java/jdk1.8
1.检查java环境有没有问题 2.1没问题后检查文件的编码是否有问题
- Eclipse中Spring Boot响应jsp的简单demo
首先在Eclipse里新建一个maven工程,这里的打包类型和父包如果后续再去pom中添加也可以 此时的工程路径是这样的 接下来去到pom中添加相关的依赖,如果有报错maven update一下即可 ...
- FPGA、GPU、CPU三者各自的优缺点是什么呢?
CPU: 英文全称:Central Processing Unit. 中文全称:中央处理器. 厂商:英特尔Intel. 功能:是一台计算机的运算核心和控制核心. 缺点:运算能力(最弱),核处理数(最少 ...
- asp.net core3.0 mvc 用 autofac
好久没有写文章了,最近在用.net core3.0,一些开发中问题顺便记录: 1.首先nuget引入 Autofac Autofac.Extensions.DependencyInjection 2. ...
- C++:Memory Management
浅谈C++内存管理 new和delete 在C++中,我们习惯用new申请堆中的内存,配套地,使用delete释放内存. class LiF; LiF* lif = new LiF(); // 分配内 ...
- Spring MVC-从零开始-如何访问静态资源
转(Spring MVC静态资源处理) 优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置Dis ...
- Hibernate 中setResultTransformer使用
在使用hibernate框架,查询数据库多张表或者单张表的某几个需要的字段数据时,往往只能通过sql语句配合setResultTransformer将查询到的数据封装到一个map集合中,再将map集合 ...
- 【ASP.NET-中级】SQLHelper数据访问公共类
ASP.NET开发中的三层开发思想指的是UI层(界面显示层),BLL层(业务逻辑层),DAL层(数据访问层)三层,三层之间通过函数的调用来达到降低耦合,易于系统维护的目的,SQLHelper助手类的主 ...
- 死磕 java同步系列之终结篇
简介 同步系列到此就结束了,本篇文章对同步系列做一个总结. 脑图 下面是关于同步系列的一份脑图,列举了主要的知识点和问题点,看过本系列文章的同学可以根据脑图自行回顾所学的内容,也可以作为面试前的准备. ...