Open vSwitch 应用实践

实验环境

  • 虚拟机软件(vmware workstation)
  • 装有 mininet、python2、Floodlight 的 Ubuntu20.04

实验目的

  • 能够对 Open vSwitch 进行基本操作;
  • 能够运用交换机支持的OpenFlow命令对流表进行操作;
  • 能够使用 Floodlight 控制 OVS 交换机

实验内容

  • 基础技能
    • 创建一个不连接到任何控制器的 OVS 交换机,创建 OVS 交换机的端口 p0,设置端口 p0 的 OpenFlow 端口编号,设置端口类型为“internal”。为了避免网络接口上的地址和本机已有网络地址冲突,我们需要创建一个虚拟网络空间 ns0,把 p0 端口移入网络空间 ns0,并配置 IP 地址。按照上述步骤再创建虚拟网络空间 ns1 和端口 p1。
    • 使用 ovs-ofctl 创建并测试OpenFlow命令
  • 进阶技能
    • 通过创建拓扑,连接 floodlight 控制器,通过控制器的图像化界面,编辑交换机流表规则来控制数据转发。

实验步骤

  1. 交换机创建和端口 p0 的配置
    创建一个新的 OVS 交换机:

    sudo ovs-vsctl add-br ovs-switch
    

    创建一端口 p0,设置端口 p0 的 OpenFlow 端口编号为 100

    sudo ovs-vsctl add-port ovs-switch p0 -- set Interface p0 ofport_request=100
    

    注:由于Ubuntu并没有 p0 端口,给ovs-switch添加端口 p0会报一个错,这个不影响后续实验

    设置网络接口设备的类型为“internal”
    注:对于 internal 类型的的网络接口,OVS 会同时在 Linux 系统中创建一个可以用来收发数据的模拟网络设备。可以为这个网络设备配置 IP 地址、进行数据监听等等。

    sudo ovs-vsctl set Interface p0 type=internal
    

    查看结果

    sudo ethtool -i p0
    

  2. 虚拟网络空间的配置
    为了避免网络接口上的地址和本机已有网络地址冲突,我们可以创建一个虚拟网络空间 ns0,把 p0 接口移入网络空间 ns0,并配置 IP 地址为 192.168.1.100

    sudo ip netns add ns0
    sudo ip link set p0 netns ns0
    sudo ip netns exec ns0 ip addr add 192.168.1.100/24 dev p0
    sudo ip netns exec ns0 ifconfig p0 promisc up
    

    使用同样的方式创建端口p1

    端口 ip地址 网络名称空间 OpenFlow Port Number
    p0 192.168.1.100/24 ns0 100
    p1 192.168.1.101/24 ns1 101
  3. 查看 OVS 交换机
    通过sudo ovs-vsctl show命令查看 OVS 交换机的信息

  4. 使用 ovs-ofctl 创建并测试 OpenFlow 命令

    1. 查看交换机中的所有 Table:sudo ovs-ofctl dump-tables ovs-switch

    2. 查看交换机中的所有流表项:sudo ovs-ofctl dump-flows ovs-switch

    3. 查看交换机上的端口信息:sudo ovs-ofctl show ovs-switch

    4. 两个端口相互测试:sudo ip netns exec ns0 ping 192.168.1.101

  5. 进阶技能

    1. 在虚拟机环境下,打开终端运行 Floodlight

    2. 创建 1 个交换机连接 4 台主机的拓扑,并连接控制器

    3. 打开 floodlight 图像化界面并查看网页中的 topo

    4. 在 mininet 中执行 pingall 命令,在网页中查看交换机 s1 的流表


      不懂为什么这边看不到流表😢😢😢

    5. 在网页中给交换机中添加一条流表项,使得 h1 不能访问其他所有主机

    1. 删除之前添加的流表项,在 mininet 中进行 pingall 测试

posted @ 2020-07-23 22:54  cyquen  阅读(1239)  评论(0编辑  收藏  举报