OVS-交换机

https://www.cnblogs.com/goldsunshine/p/11527928.html

 

 

 

 

  • ovs-vswitchd:ovs守护进程,实现基于流的交换,实现内核datapath upcall 处理以及ofproto 查表,同时是dpdk datapath处理程序。与ovsdb-server通信使用OVSDB协议,与内核模块使用netlink机制通信,与controller通信使用OpenFlow协议。
  • ovsdb-server:OVS轻量级的数据库服务器的服务程序,用于保存整个OVS的配置信息。数据库服务程序, 使用目前普遍认可的ovsdb 协议。
  • ovs-vsctl:网桥、接口等的创建、删除、设置、查询等。 
  • ovs-dpctl:配置vswitch内核模块
  • ovs-appctl:发送命令消息到ovs-vswithchd, 查看不同模块状态
  • ovs-ofctl:下发流表信息。该命令可以配置其他openflow 交换机(采用openflow 协议)
  • datapath: Datapath把流的match和action结果缓存,避免后续同样的流继续upcall到用户空间进行流表匹配。
  •  ovs-db:开放虚拟交换机数据库是一种轻量级的数据库,它是一个JSON文件,默认路径:/etc/openvswitch/conf.db;

OpenvSwitch

ovs-ovsctl命令是对虚拟(软件)交换机上网桥和端口等信息进行配置的命令。这里首先需要说明一下ovs的概念中 ‘桥’ 这个词的意思就是指交换机。我们说创建一个网桥,其实说的意思就是创建一个交换机。而端口则是指交换机的网口

ovs-vsctl   获取或者更改ovs-vswitchd的配置信息,此工具操作的时候会更新ovsdb-server中的数据库

ovs-ofctl     操作交换机里的流表

ovsdb-tool  对ovsdb数据库操作,不经过ovsdb-server模块

ovs-vsctl用于控制ovs db

ovs-ofctl用于管理OpenFlow switch 的 flow

ovs-dpctl用于管理ovs的datapath

ovs-appctl用于查询和管理ovs daemon

1、root@compute-1:~# ovs-vsctl show   #查看该主机有多少网桥/交换机,还有交换机版本

root@compute-3-99990001:~# ovs-vsctl show
b23********34cb3397      ##UUID 该主机的id
    Bridge br-test
        Port br-exter
            Interface br-test
                type: internal

可以看到已经有创建好的网桥br-test了,Bridge br-test 指的是网桥br-test,那么在这个交换机中只有一个网口,是的,这个网口叫着port,即port br-test。为什么我们只创建了网桥并没有创建端口这里却有一个呢?其实这个端口就是常见的环回口。在我们的电脑上都有一个叫着localhost的端口,交换机中也会有一个和交换机同名的网口,都是指环回口

在上面创建好一个网桥之后默认有一个同名的port,使用下面的命令可以继续添加port。格式是:ovs-vsctl add-port 网桥名  端口名 。这里端口需要是存在机器上的网卡名

ovs-vsctl add-port br-test enp0s3   ##将网卡添加到br-test网桥上

ovs-vsctl del-port br-test enp0s3   ##将网卡从网桥上删除

ovs-vsctl del-br br-test   ##删除网桥,也会把网桥中所有端口删除

root@compute-1:~# ovs-vsctl list interface dpdk0  #查看网口信息

ovs-vsctl list bridge s1  查看网桥信息

ovs-vsctl list port s1 s1-eth1   查看端口信息

当创建网桥之后网桥自带一个类型为Internal的port,该port就是一个虚拟网卡。使用ifconfig能够查看得到

Port(重要) OVS模拟的桥上的网口
Interface(重要) 插入OVS模拟的网口的网络设备

 

 Internal 类型可以看做每个OVS交换机有个可以用来处理数据报的本地端口,可以为这个网络设备配置 IP 地址。当创建ovs网桥时会自带一个同名的端口,该端口就是类型为Internal 端口。解决的思路就是Internal类型的port会生成一个虚拟网卡,将绑定到网桥的网卡的IP地址转移到该虚拟网卡上,然后配置路由即可

 

1. 添加两个虚拟端口,互为peer
ip link add mgmt-eth2 type veth peer name eth2-mgmt
ip link set mgmt-eth2 up
ip link set eth2-mgmt up

2. 把上面的两个端口加到桥上
ovs-vsctl add-port br-mgmt mgmt-eth2
修改ovs的数据库
ovs-vsctl set interface mgmt-eth2 type=patch
ovs-vsctl set interface mgmt-eth2 options:peer=eth2-mgmt

3. 把上面的两个端口加到桥上
ovs-vsctl add-port br-eth2 eth2-mgmt
ovs-vsctl set interface eth2-mgmt type=patch
ovs-vsctl set interface eth2-mgmt options:peer=mgmt-eth2

4. ovs-vsctl add-port br-eth2 eth2

注意通过上面的方法添加完后,会在ifconfig中把上面的新加的port(如:mgmt-eth2, eth2-mgmt)一并显示出来


上面的1~4可以用下面的步骤来代替,且新加的veth不会出现在ifconfig中:
ovs-vsctl add-br br-mgmt
ovs-vsctl add-br br-eth2
ovs-vsctl add-port br-mgmt mgmt-eth2 -- set Interface mgmt-eth2 type=patch options:peer=eth2-mgmt

 

使用选项--if-exists后,若欲删除的bridge不存在,该命令什么也不做,也不报错。

ovs-vsctl [--if-exists] del-br br0 

ovs-vsctl list-br 查看已有网桥

https://www.cnblogs.com/goldsunshine/p/14260941.html  --dpdk

posted @ 2022-01-13 17:43  闲云野鹤cs  阅读(20)  评论(0编辑  收藏  举报