• 注册
当前位置:1313e > 默认分类 >正文

ovs

http://www.sdnlab.com/14101.html

Open vSwith模拟网关实现不同子网的互通

 

服务:

  ovsdb-server

  ovs-vswitchd

 

rpm:

  openvswitch-2.4.0-1.el6.x86_64

 

命令:

  ovs-appctl

  ovs-docker

  ovs-dpctl-top

  ovs-ofctl

  ovs-test

  ovs-vlan-test

  ovs-vswitchd
  ovs-bugtool

  ovs-dpctl

  ovs-l3ping

  ovs-pki

  ovs-testcontroller

  ovs-vsctl

 

 

配置文件

  /etc/init.d/openvswitch
  /etc/logrotate.d/openvswitch
  /etc/openvswitch/conf.db
  /etc/openvswitch/system-id.conf
  /etc/sysconfig/network-scripts/ifdown-ovs
  /etc/sysconfig/network-scripts/ifup-ovs

 

日志:

  /var/log/openvswitch/ovs-vswitchd.log

  /var/log/openvswitch/ovsdb-server.log

 

通过ovs设置物理网卡联网规则:

 

  1. 最简单的使用OVS和控制器做路由的方法

 

  利用ovs-ofctl 转发

      #ovs-ofctl 

  $ ovs-ofctl add-flow ovs-switch "priority=1 idle_timeout=0,dl_src=00:0C:29:33:17:d3,actions=mod_nw_src:192.168.10.140,normal"
  dl_type=
  dl_type=0x0800
  nw_proto=0x03

  $ ovs-ofctl add-flow ovs-switch "priority=1 idle_timeout=0,dl_type=0x0800,nw_proto=0x03,actions=mod_nw_dst:192.168.10.2,normal"


      丢包处理

  # ovs-ofctl add-flow switch0 cookie=2,idle_timeout=0,priority=1,dl_type=0x800,in_port=39,actions=drop

      //  源 ip

     # ovs-ofctl add-flow switch0 cookie=2,idle_timeout=0,priority=1,dl_type=0x800,nw_src=10.17.5.201,actions=drop

   # ovs-ofctl add-flow switch0 cookie=2,idle_timeout=0,priority=1,dl_type=0x800,dl_src=00:E0:2F:1E:15:A4,actions=drop

     # mac: 00:0C:29:B9:15:41      00:OC:29:FE:D7:3D

     dl_src    源mac

     dl_dst    目的mac

     in_port   输入端口号

     nw_src    源ip地址

     nw_dst    目的ip地址

    dl_type   数据包类型

     nw_proto   网络层协议类型

 

  添加缺省的处理。

  #ovs-ofctl add-flow switch0 priority=0,actions=NORMAL

 

 cookie=0x0, duration=11509.036s, table=0, n_packets=1059, n_bytes=116533, idle_age=740, priority=1,in_port=1 actions=resubmit(,2) //从端口1及patch-int进来的traffic会被重新执行table 2的rule

flows規則丢失问题:主機重啓后,设置的flows规则丢失。
  ovs交换机配置保存指南: http://blog.csdn.net/anzhuangguai/article/details/52670866

 

修改内核参数  /etc/sysctl.conf

 

net.ipv4.ip_forward=1 
net.ipv4.conf.all.rp_filter=0 
net.ipv4.conf.default.rp_filter=0 

#sysctl -p

 

设置QOS

# ovs-vsctl set Interface tap0 ingress_policing_rate=100000
# ovs-vsctl set Interface tap0 ingress_policing_burst=10000

 

 

查看端口信息:

[root@vClass-sGRce ~]# ovs-vsctl -- --columns=name,ofport list Interface
name                : vnetcwjuWnXTW
ofport              : 3name                : "eth0"
ofport              : 4name                : "switch0"
ofport              : 65534name                : "p0"
ofport              : 100name                : ovs-switch
ofport              : 65534

 

 获取接口端口号:

[root@vClass-sGRce ~]# ovs-vsctl get interface eth0 ofport
4

 

设置接口端口号:

[root@vClass-sGRce ~]# ovs-vsctl set interface p0 ofport=200
[root@vClass-sGRce ~]# 

 

流表的作用:

每张Flow Table完成的具体功能如下:Table ID为0的功能: 
VM识别(基于macSa);
租户识别(基于macSa or Vlan);
Tunnel识别(基于Tunnel VniId);
基于VM或者租户的策略应用;
传递metadata到后面;
Table ID为1的功能:全局安全或者QoS策略应用 决定下一级table跳转到2还是3
Table ID为2的功能:二层流表转发到Port或者Tunnel Table ID为3的功能:三层流表转发到Port或者Tunnel

 

 

 

查看路由表:

创建桥后查看路由表项:route   #参看路由表是否正常配置

注意修改默认路由的网络接口为桥br0,而非eth0

[root@vClass-w47o0 ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.16.1.1       0.0.0.0         UG    0      0        0 eth1               //公网路由信息   // U – Up, G – Gateway, H – Host                 
10.16.0.0       *               255.255.0.0     U     0      0        0 eth1           //局域网路由信息
10.16.0.0       *               255.255.0.0     U     0      0        0 switch0
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
link-local      *               255.255.0.0     U     1038   0        0 vnetiowFuwcHo

Flags  可能出现的标志有:
              U (route is up) 路由正常
              H (target is a host) 主机路由
              G (use gateway) 使用网关的间接路由
              R (reinstate route for dynamic routing) 为动态选路恢复路由
              D (dynamically installed by daemon or redirect) 该路由由选路进程或重定向动态创建
              M (modified from routing daemon or rederict) 该路由已由选路进程或重定向修改
              ! (reject route) 阻塞路由

route del default dev eth0               // 删除默认路由,也就公网路由,因为有网关. 无法访问外网
route add default dev eth0               // 增加默认路由,没加网关.        无法访问外网
route add default gw 192.168.0.3 dev eth0    // 重新添加带网关的路由信息     可以访问外网
route del -net 10.16.0.0/16 dev eth0        // 删除局域网路由, 数据包通过了默认路由信息发到了路由器,再查路由器的路由表找到了192.168.1.133的路由.再由网关发回来给192.168.1.133了.

 

加载TUN模块: /sbin/modprobe tun
查看系统模块:lsmod
| grep tun

[root@vClass-w47o0 ~]# lsmod | grep tun
tun 27379 3 vhost_net

查看tun设备:ll /dev/net/tun

[root@vClass-w47o0 ~]# ll /dev/net/tun
crw-rw-rw- 1 root root 10, 200 3月 21 14:58 /dev/net/tun

 

查询网卡模式: dmesg | grep eht0

建立bridge后的状态是让网络接口eth0进入混杂模式(promiscuous mode,接收网络中所有数据包),网桥br0进入转发状态(forwarding state),而且br0和eth0有相同的MAC地址,一般也会得到和eth0相同的IP。

[root@vClass-w47o0 ~]# dmesg | grep eth0
[16878.589019] device eth0 left promiscuous mode
[16892.803977] device eth0 entered promiscuous mode

 

打开br0的STP协议: brctl

stp br0 on

STP是生成树协议(Spanning
Tree Protocol),它主要是为了避免在建有bridge的以太网LAN中出现桥回路(bridge loop)。如果不打开STP,则可能出现回路从而导致建有bridge的主机网络不畅通。

设置br0 ip: 需要将bridge设置为与其绑定的物理网络接口一样的IP和MAC地址,并让默认路由使用bridge(而不是ethX)来连通。这个步骤可能导致宿主机的网络断掉,之后重新通过bridge建立网络连接,所以建立bridge这个步骤最好不要通过SSH连接远程(或VNC)配置。

查看tap设备:ls /sys/devices/virtual/net/

[root@vClass-w47o0 ~]# ls /sys/devices/virtual/net/
bond0  lo  ovs-system  switch0  vnetiowFuwcHo

 

由上面信息可知,创建客户机后,添加了一个名为tap1的TAP虚拟网络设备,它被绑定在br0这个bridge上。Centos上默认虚拟网卡设备名为vnet0(1....)。

 

 

windows route操作

 

 1     > route PRINT
 2     > route PRINT -4
 3     > route PRINT -6
 4     > route PRINT 157*          .... 只打印那些匹配  157* 的项
 5 
 6     > route ADD 157.0.0.0 MASK 255.0.0.0  157.55.80.1 METRIC 3 IF 2
 7              destination^      ^mask      ^gateway     metric^    ^
 8                                                          Interface^
 9       如果未给出 IF,它将尝试查找给定网关的最佳
10       接口。
11     > route ADD 3ffe::/32 3ffe::1
12 
13     > route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2
14 
15       CHANGE 只用于修改网关和/或跃点数。
16 
17     > route DELETE 157.0.0.0
18     > route DELETE 3ffe::/32

 

C:\Users\doscho>route print -4
===========================================================================
接口列表11...00 0c 29 33 17 d3 ......Intel(R) PRO/1000 MT Network Connection1...........................Software Loopback Interface 1
===========================================================================IPv4 路由表
===========================================================================
活动路由:网络目标         网络掩码            网关         接口       跃点数0.0.0.0          0.0.0.0   192.168.10.170     192.168.10.140   266              // 网络目标 destination:127.0.0.0        255.0.0.0            在链路上         127.0.0.1    306              // 接口 interface:     到达该目的地的本地路由器的ip127.0.0.1  255.255.255.255            在链路上         127.0.0.1    306        //  网关 gateway:       下一跳路由器入口的ip, 路由器通过interface和gateway定义一调到下一路由器的链路,通常情况下,interface和gateway是同一网段的。127.255.255.255  255.255.255.255            在链路上         127.0.0.1    306              // 跃点数 metric:      该条路由记录的质量,一般情况下,如果有多条到达相同目的地的路由记录,路由器会采用metric值小的那条路由。192.168.10.0    255.255.255.0            在链路上    192.168.10.140    266192.168.10.140  255.255.255.255            在链路上    192.168.10.140    266192.168.10.255  255.255.255.255            在链路上    192.168.10.140    266224.0.0.0        240.0.0.0            在链路上         127.0.0.1    306224.0.0.0        240.0.0.0            在链路上    192.168.10.140    266255.255.255.255  255.255.255.255            在链路上         127.0.0.1    306255.255.255.255  255.255.255.255            在链路上    192.168.10.140    266
===========================================================================
永久路由:网络地址          网络掩码  网关地址  跃点数0.0.0.0          0.0.0.0   192.168.10.170     默认
===========================================================================

 

windows 路由表操作

windows路由表的设置主要通过route命令,ROUTE命令格式如下: ROUTE [-f] [-p] [command [destination] [MASK netmask] [gateway] [METRIC metric] [IF interface]其中 –f 参数用于清除路由表,-p参数用于永久保留某条路由(即在系统重启时不会丢失路由)。 Command 主要有PRINT(打印)、ADD(添加)、DELETE(删除)、CHANGE(修改)共4个命令。 Destination 代表所要达到的目标IP地址。 MASK 是子网掩码的关键字。Netmask代表具体的子网掩码,如果不加说明,默认是255.255.255.255(单机IP地址)。如果代表全部出口子网掩码可用0.0.0.0。 Gateway 代表出口网关。 其他interface和metric分别代表特殊路由的接口数目和到达目标地址的跳数,一般默认。

 

route add 0.0.0.0 MASK 0.0.0.0 192.168.10.2

route delete 0.0.0.0

 

ovs flows保存机制

重启ovs服务器时,通过添加 --save-flows=yes ,保存设置的flows规则

service openvswitch restart --save-flows=yes

 

服务调用 /usr/share/openvswitch/scripts/ovs-save 脚本。 此脚本在 源码包的 utilities下。

 

如何设置系统启动时,启动ovs保留flows规则?

通过网络获取到如下方案,ovs是否自身有这个选项呢?

ovs交换机配置保存指南  http://blog.csdn.net/anzhuangguai/article/details/52670866

 

ovs常用命令和总结:  http://blog.csdn.net/gzhouc/article/details/52202219

官网:        http://openvswitch.org/

ovs-ofctl 手册:     http://rpm.pbone.net/index.php3/stat/45/idpl/23319267/numer/8/nazwa/ovs-ofctl

OpenFlow端口:     http://book.2cto.com/201310/34150.html

 

QOS:

Open vSwitch QoS 功能(限速): http://blog.csdn.net/zhongbeida_xue/article/details/56845461

Openvswitch手册(6): QoS:    http://www.cnblogs.com/popsuper1982/p/3803807.html

 

 

转载于:https://www.cnblogs.com/doscho/p/6606349.html

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录