zoukankan      html  css  js  c++  java
  • ubuntu 14.04设备OVS虚拟OpenFlow交换机配置汇总

    一、设备OVS
    sudo apt-get install openvswitch-controller openvswitch-switch openvswitch-datapath-source
    (与网上之前的资料相比。没有安装openvswitch-brcompat,提示没有这个包。笔者眼下的使用来看没有问题,可能是linux内核或OVS版本号变化造成的。不再须要安装?)
    二、配置OVS虚拟OpenFlow交换机
    1.新建一个桥(交换机),命名为s1:
     sudo ovs-vsctl add-br s1
    注意:进行OVS设置时非常easy造成虚拟交换机与物理交换机构成二层环路(比方虚拟交换机包括两块网卡,而这两块网卡都连接到物理交换机上,就是一个环路),一旦有广播报文,比方ARP请求,就会引发广播风暴,使网络瘫痪。因此,应该把虚拟交换机开启STP支持。避免广播风暴
    ovs−vsctl set bridge 交换机名 stp_enable=true
    2.启动要加入到虚拟交换机s1上的物理port(物理网卡,这里是eth0和eth3)。假设ifconfig里已经有了,那就不用又一次启动了。


    sudo ifconfig eth3 up
    sudo ifconfig eth0 up
    3.加入物理port到虚拟交换机s1:
    sudo ovs-vsctl add-port s1 eth3
    sudo ovs-vsctl add-port s1 eth0
    4.设置IP:
    OpenFlow交换机与控制器连接须要用到TCP连接。因此交换机须要设置IP。但当把物理port加入到虚拟交换机上之后,这些物理port上原先的IP设置将失效(IP属于三层,而交换机工作在二层),无法与外界进行三层的互联。解决方法是加入一个类型为internal的port。然后设置IP和路由(本例是加入一个名为veth3的虚拟port):
    首先,假设原先port有设置IP,应将其重置:
    sudo ifconfig eth3 0
    然后加入虚拟port:
    sudo  ovs-vsctl add-port s1 veth3
     sudo ovs-vsctl set interface veth3 type=internal
    这时假设运行ifconfig就会发现多了一个名为veth3的port。然后设置该port并加入路由:
    sudo  ifconfig veth3 192.168.1.3 netmask 255.255.255.0
    sudo  route add default gw 192.168.1.1 veth3
    P.S. 后来看到网上说事实上不须要额外加入veth3,由于创建s1后会自己主动生成一个名为s1的internalport,直接设置它就能够。


    5.连接远程控制器(本例中控制器为POX,IP是192.168.1.100):
    连接控制器之前控制器要先启动。

    然后连接:
    sudo ovs-vsctl set-controller s1 tcp:192.168.1.100:6633
    这时远程控制器就能看到连接信息。比方:INFO:openflow.of_01:[00-d0-f8-0f-d6-e9 2] connected
    三、经常使用OVS操作
    1.加入网桥:ovs-vsctl add-br 交换机名
    2.删除网桥:ovs-vsctl del-br 交换机名
    3.加入port:ovs-vsctl add-port 交换机名 port名(网卡名)
    4.删除port:ovs-vsctl del-port 交换机名 port名(网卡名)
    5.连接控制器:ovs-vsctl set-controller 交换机名 tcp:IP地址:port号
    6.断开控制器:ovs-vsctl del-controller 交换机名
    7.列出全部网桥:ovs-vsctl list-br
    8.列出网桥中的全部端口:ovs-vsctl list-ports 交换机名
    9.列出全部挂接到网卡的网桥:ovs-vsctl port-to-br 端口名(网卡名)
    10.查看open vswitch的网络状态:ovs-vsctl show
    11.查看 Open vSwitch 中的port信息(交换机相应的 dpid,以及每一个port的 OpenFlow port编号,port名称,当前状态等等):ovs-ofctl show 交换机名
    12.改动dpid:ovs-vsctl set bridge 交换机名 other_config:datapath-id=新DPID
    13.改动port号:ovs-vsctl set Interface port名 ofport_request=新port号
    14.查看交换机中的全部 Table:ovs-ofctl dump-tables ovs-switch
    15.查看交换机中的全部流表项:ovs−ofctl dump−flows ovs-switch
    16.删除编号为 100 的端口上的全部流表项:ovs-ofctl del-flows ovs-switch "in_port=100"
    17.加入流表项(以“加入新的 OpenFlow 条目,改动从port p0 收到的数据包的源地址为 9.181.137.1”为例):
     ovs-ofctl add-flow ovs-switch "priority=1 idle_timeout=0,in_port=100,actions=mod_nw_src:9.181.137.1,normal"
    (很多其它说明请查阅:《基于 Open vSwitch 的 OpenFlow 实践》)
    18.查看 OVS 的版本号信息:ovs-appctl --version
    19.查看 OVS 支持的 OpenFlow 协议的版本号:ovs-ofctl --version
    许多其他的设置可以被看作官方文件。

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    Windows安装使用wget
    Ubuntu16.04 安装和卸载MySQL数据库
    申请百度翻译API
    Linux配置JDK
    vmware的三种网络连接模式
    3、linux-目录管理:mkdir、rmdir、mv
    2、linux-添加组groupadd、修改组groupmod、删除组groupdel
    1、linux-用户管理useradd,usermod,userdel
    在Linux操作系统里有Ext2、Ext3、Linux swap和VFAT四种格式
    第四次作业 简易计算器
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4904733.html
Copyright © 2011-2022 走看看