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.列出网桥中的全部port:ovs-vsctl list-ports 交换机名
    9.列出全部挂接到网卡的网桥:ovs-vsctl port-to-br port名(网卡名)
    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 的port上的全部流表项: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
    很多其它设置可查看官方文档。


  • 相关阅读:
    关于Maya Viewport 2.0 API 开发的介绍视频
    春节大假
    Some tips about the life cycle of Maya thread pool
    Can I compile and run Dx11Shader for Maya 2015 on my side?
    How to get current deformed vertex positions in MoBu?
    想加入全球首届的 欧特克云加速计划吗?
    三本毕业(非科班),四次阿里巴巴面试,终拿 offer(大厂面经)
    mac、window版编辑器 webstorm 2016... 永久破解方法。
    node 搭载本地代理,处理web本地开发跨域问题
    js 一维数组,转成嵌套数组
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10007023.html
Copyright © 2011-2022 走看看