ovs-controller怎么使用openvswitch 控制器中有个简单的控制器

云计算专题(13)
本文主要参考
以及结合自己的理解。
/index.php/openv-switch-full-guide/
1 什么是OpenvSwitch
OpenvSwitch,简称OVS是一个虚拟交换软件,主要用于虚拟机VM环境,作为一个虚拟交换机,支持Xen/XenServer, KVM, and VirtualBox多种虚拟化技术。OpenvSwitch还支持多个物理机的分布式环境。
在这种某一台物理机器的虚拟化环境中,一个虚拟交换机(vswitch)主要有如下两个作用:
传递虚拟机VM之间的流量 以及实现VM和外界网络的通信。
如下图所示:
整个OVS代码用C写的。目前有以下功能:
Standard 802.1Q VLAN model with trunk and access ports NIC bonding with or without LACP on upstream switch NetFlow, sFlow(R), and mirroring for increased visibility QoS (Quality of Service) configuration, plus policing GRE, GRE over IPSEC, VXLAN, and LISP tunneling 802.1ag connectivity fault management OpenFlow 1.0 plus numerous extensions Transactional configuration database with C and Python bindings High-performance forwarding using a Linux kernel module
2 OpenvSwitch的组成
OVS的核心组件包括 ovsdb-server,ovs-vswitchd,ovs kernel module。如下图所示:
运行原理:
内核模块实现了多个“数据路径(DataPath)”(类似于网桥),每个都可以有多个“vports”(类似于桥内的端口)。每个数据路径也通过关联流表(flow table)来设置操作,而这些流表中的流都是用户空间在报文头和元数据的基础上映射的关键信息,一般的操作都是将数据包转发到另一个vport。当一个数据包到达一个vport,内核模块所做的处理是提取其流的关键信息并在流表中查找这些关键信息。当有一个匹配的流时它执行对应的操作。如果没有匹配,它会将数据包送到用户空间的处理队列中(作为处理的一部分,用户空间可能会设置一个流用于以后遇到相同类型的数据包可以在内核中执行操作)。细节如下图所示:
除了核心组件,还包括一些管理工具,详细介绍如下:
ovs-vswitchd:OVS守护进程是OVS的核心部件,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换(flow-based switching)。它和上层 controller 通信遵从 OPENFLOW 协议,它与 ovsdb-server 通信使用 OVSDB 协议,它和内核模块通过netlink通信,它支持多个独立的 datapath(网桥),它通过更改flow table 实现了绑定和VLAN等功能。
ovsdb-server:OVS轻量级的数据库服务器,用于整个OVS的配置信息,包括接口,交换内容,VLAN 等等。ovs-vswitchd 根据数据库中的配置信息工作。它于 manager 和 ovs-vswitchd 交换信息使用了OVSDB(JSON-RPC)的方式。
ovs-dpctl:一个工具,用来配置交换机内核模块,可以控制转发规则。 ovs-vsctl:主要是获取或者更改ovs-vswitchd的配置信息,此工具操作的时候会更新ovsdb-server中的数据库。 ovs-appctl:主要是向OVS守护进程发送命令的,一般用不上。 a utility that sends commands to running Open vSwitch daemons (ovs-vswitchd)
ovsdbmonitor:GUI工具来显示ovsdb-server中数据信息。(Ubuntu下是可以使用apt-get安装,可以远程获取OVS数据库和OpenFlow的流表)
ovs-controller:一个简单的OpenFlow控制器 ovs-ofctl:用来控制OVS作为OpenFlow交换机工作时候的流表内容。 ovs-pki:OpenFlow交换机创建和管理公钥框架; ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息; brocompat.ko : Linux bridge compatibility module openvswitch.ko : Open vSwitch switching datapath
一些用用的OVS命令示例:
sudo ovs-vsctl show
sudo ovs-vsctl add-br mybridge
sudo ovs-vsctl del-br mybridge
sudo ovs-vsctl add-port mybridge port-name
sudo ovs-vsctl del-port mybridge port-name
sudo ovs-vsctl list Bridge/Port/Interface/...
sudo ovs-appctl fdb/show mybridge
sudo ovs-ofctl show mybridge
sudo ovs-ofctl dump-flows mybridge
sudo ovs-ofctl add-flow mybridge dl_src=02:a2:a2:a2:a2:a2,dl_dst=02:b2:b2:b2:b2:b2,in_port=2,dl_type=0x0800,nw_src=10.0.0.1,nw_dst=10.0.0.2,actions=output:6
sudo ovs-ofctl del-flows mybridge dl_src=02:a2:a2:a2:a2:a2,dl_dst=02:b2:b2:b2:b2:b2,in_port=2,dl_type=0x0800,nw_src=10.0.0.1,nw_dst=10.0.0.2
sudo ovs-ofctl add-flow dp0 in_port=2,actions=output:6
# This will delete all the flow entries in the flow table
sudo ovs-ofctl del-flows mybridge
3 OpenvSwitch和其他vswitch
这里其他的vswitch,包括VMware vNetwork distributed switch以及思科的Cisco Nexus 1000V。
VMware vNetwork distributed switch以及思科的Cisco Nexus 1000V这种虚拟交换机提供的是一个集中式的控制方式,。而OVS则是一个独立的vswitch,他运行在每个实现虚拟化的物理机器上,并提供远程管理。
OVS提供了两种在虚拟化环境中远程管理的协议:
一个是OpenFlow,通过流表来管理交换机的行为, 一个是OVSDB management protocol,用来暴露sietch的port状态。
4 概念及工作流程
4.1 vswitch、Bridge、Datapath
在网络中,交换机和桥都是同一个概念,OVS实现了一个虚拟机的以太交换机,换句话说,OVS也就是实现了一个以太桥。那么,在OVS中,给一个交换机,或者说一个桥,用了一个专业的名词,叫做DataPath!
要了解OVS如何工作,首先需要知道桥的概念:
网桥也叫做桥接器,连接两个局域网的设备,网桥工作在数据链路层,将两个LAN连接,根据MAC地址来转发帧,可以看成一个“低层的路由器”(路由器工作在网络层,根据IP地质进行转发)。
网桥的工作原理
网桥处理包遵循以下几条规则:
在一个接口上接收到的包不会再往那个接口上发送此包。 每个接收到的包都要学习其源MAC地址。 如果数据包是多播或者广播包(通过2层MAC地址确定)则要向接收端口以外的所有端口转发,如果上层协议感兴趣,则还会递交上层处理。 如果数据包的地址不能再CAM表中找到,则向接收端口以外的其他端口转发。 如果CAM表中能找到,则转发给相应端口,如果发送和接收都是统一端口,则不发送。
注意,网桥是以混杂模式工作的。关于网桥更多,请查阅相关资料。
OVS中的bridge
上面,说到,一个桥就是一个交换机。例如,在OVS中:
root@localhost:~# ovs-vsctl add-br br0
root@localhost:~# ifconfig br0
Link encap:Ethernet
HWaddr 1a:09:56:ea:0b:49
inet6 addr: fe80::1809:56ff:feea:b49/64 Scope:Link
UP BROADCAST RUNNING MULTICAST
RX packets:1584 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:6.5 KB)
TX bytes:468 (468.0 B)
当我们创建了一个交换机(网桥)以后,此时网络功能不受影响,但是会产生一个虚拟网卡,名字就是网桥的名称(br-int),之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能。有了这个交换机以后,还需要为这个交换机增加端口(port),一个端口,就是一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了。
root@localhost:~# ovs-vsctl add-port br0 port
这里要特别注意,网卡加入网桥以后,要按照网桥的工作标准工作,那么加入的一个端口就必须是以混杂模式工作,工作在链路层,处理2层的帧,所以这个port就不需要配置IP了。(你没见过哪个交换的端口有IP的吧)
那么接下来你可能会问,通常的交换机不都是有一个管理接口,可以telnet到交换机上进行配置吧,那么在OVS中创建的虚拟交换机有木有这种呢,有的!上面既然创建交换机brname的时候产生了一个虚拟网口 br-int,那么,你给这个虚拟网卡配置了IP以后,就相当于给交换机的管理接口配置了IP,此时一个正常的虚拟交换机就搞定了。
root@localhost:~# ip address add 192.168.1.1/24 dev br0
最后,我们来看看一个br的具体信息:
root@localhost:~# ovs-vsctl show
bc12c8d2-6900-42dd-9c1c-30e8ecb99a1b
Bridge &br0&
Port &eth0&
Interface &eth0&
Port &br0&
Interface &br0&
type: internal
ovs_version: &1.4.0+build0&
首先,这里显示了一个名为br0的桥(交换机),这个交换机有两个接口,一个是eth0,一个是br0,上面说到,创建桥的时候会创建一个和桥名字一样的接口,并自动作为该桥的一个端口,那么这个虚拟接口的作用,一方面是可以作为交换机的管理端口,另一方面也是基于这个虚拟接口,实现了桥的功能。
#### OpenvSwitch的典型工作流程
这一部分以一个简单的例子,说明在虚拟化环境中OpenvSwitch的典型工作流程。
前面已经说到,OVS主要是用来在虚拟化环境中。实现虚拟机之间通信以及一个虚拟机和外网之间通信,如下是一个典型的结构图:
那么,通常情况下的工作流程如下:
VM实例 instance 产生一个数据包并发送至实例内的虚拟网络接口 VNIC,图中就是 instance 中的 eth0. 这个数据包会传送到物理机上的VNIC接口,如图就是vnet接口。 数据包从 vnet NIC 出来,到达桥(虚拟交换机) br100 上. 数据包经过交换机的处理,从物理节点上的物理接口发出,如图中物理机上的 eth0 . 数据包从 eth0 出去的时候,是按照物理节点上的路由以及默认网关操作的,这个时候该数据包其实已经不受你的控制了。
一般 L2 switch 连接 eth0 的这个口是一个 trunk 口, 因为虚拟机对应的 VNET 往往会设置 VLAN TAG, 可以通过对虚拟机对应的 vnet 打 VALN TAG 来控制虚拟机的网络广播域. 如果跑多个虚拟机的话, 多个虚拟机对应的 vnet 可以设置不同的 vlan tag, 那么这些虚拟机的数据包从 eth0(4)出去的时候, 会带上TAG标记. 这样也就必须是 trunk 口才行.
6 OVS简单应用实例
6.1 创建物理机到物理机的网络拓扑
root@localhost:~# ovs-vsctl add-br br0
root@localhost:~# ovs-vsctl add-port br0 eth0
root@localhost:~# ovs-vsctl add-port br0 eth1
6.2 创建虚拟机到虚拟机的网络拓扑
使用KVM虚拟化。
root@localhost:~# ovs-vsctl add-br br0
root@localhost:~# cat /etc/ovs-ifup
switch='br0'
/sbin/ifconfig
$1 0.0.0.0 up
ovs-vsctl add-port ${switch} $1
root@localhost:~# cat /etc/ovs-ifdown
switch= 'br0'
ovs-vsctl del-port ${sw/sbin/ifconfig
$1 0.0.0.0 down
root@localhost:~# kvm -m 512 -net nic,macaddr=00:11:22:33:44:55 -net \
tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown-drive \
file=/path/to/disk-image,boot=on&&&&&&&&& root@localhost:~# kvm -m 512 -net nic,macaddr=11:22:33:44:55:66 -net \&&&&& tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown-drive \
file=/path/to/disk-image,boot=on
ovs-vsctl list bridge ovs-br
7.2 关于 Brdige 及 Port
创建 Brdige
ovs-vsctl add-br ovs-br
在 ovs-br 上添加 interface
ovs-vsctl add-port ovs-br eth0
(1) + (2) 的可以合并为:
ovs-vsctl add-br ovs-br -- add-port ovs-br eth0
删除 Bridge
ovs-vsctl del-br ovs-br #如果不存在, 会有error log
ovs-vsctl --if-exists del-br ovs-br
更改 ofport (openflow port number)为100:
ovs-vsctl add-port ovs-br eth0 -- set Interface eth0 ofport_request=100
设置 port 为 internal
ovs-vsctl set Interface eth0 type=internal
7.3 关于Controller
设置 Controller
ovs-vsctl set-controller ovs-br tcp:1.2.3.4:6633
设置 multi controller
ovs-vsctl set-controller ovs-br tcp:1.2.3.4:6633 tcp:5.6.7.8:6633
查询 Controller
ovs-vsctl show
如果有成功连到 controller 则提示 is_connected:true, 反之未连上:
ovs-vsctl get-controller ovs-br
移除 Controller
ovs-vsctl del-controller ovs-br
7.4 关于 STP (Spanning Tree Protocol)
ovs-vsctl set bridge ovs-br stp_enable=true
ovs-vsctl set bridge ovs-br stp_enable=false
查询 STP 配置信息
ovs-vsctl get bridge ovs-br stp_enable
设置 Priority
ovs-vsctl set bridge br0 other_config:stp-priority=0x7800
ovs-vsctl set port eth0 other_config:stp-path-cost=10
移除 STP 设置
ovs-vsctl clear bridge ovs-br other_config
7.5 关于 Openflow Version
支持 OpenFlow Version 1.3
ovs-vsctl set bridge ovs-br protocols=OpenFlow13
支持 OpenFlow Version 1.3 1.2
ovs-vsctl set bridge ovs-br protocols=OpenFlow12,OpenFlow13
移除 OpenFlow 支持设置
ovs-vsctl clear bridge ovs-br protocols
7.6 关于 VLAN
设置 VLAN tag
ovs-vsctl add-port ovs-br vlan3 tag=3 -- set interface vlan3 type=internal
ovs-vsctl del-port ovs-br vlan3
ovs-vsctl show
ifconfig vlan3
设置 Vlan trunk
ovs-vsctl add-port ovs-br eth0 trunk=3,4,5,6
设置已 add 的 port 为 access port, vlan id 9
ovs-vsctl set port eth0 tag=9
ovs-ofctl add-flow 设置 vlan 100
ovs-ofctl add-flow ovs-br in_port=1,dl_vlan=0xffff,actions=mod_vlan_vid:100,output:3
ovs-ofctl add-flow ovs-br in_port=1,dl_vlan=0xffff,actions=push_vlan:0x8100,set_field:100-\&vlan_vid,output:3
ovs-ofctl add-flow 拿掉 vlan tag
ovs-ofctl add-flow ovs1 in_port=3,dl_vlan=100,actions=strip_vlan,output:1
two_vlan example
ovs-ofctl add-flow pop-vlan
ovs-ofctl add-flow ovs-br in_port=3,dl_vlan=0xffff,actions=pop_vlan,output:1
7.7 关于 GRE Tunnel
设置 GRE tunnel
ovs-vsctl add-port ovs-br ovs-gre -- set interface ovs-gre type=gre options:remote_ip=1.2.3.4
查询 GRE Tunnel
ovs-vsctl show
7.8 关于 Dump flows
Dumps OpenFlow flows 不含 hidden flows (常用)
ovs-ofctl dump-flows ovs-br
Dumps OpenFlow flows 包含 hidden flows
ovs-appctl bridge/dump-flows ovs-br
Dump 特定 bridge 的 datapath flows 不論任何 type
ovs-appctl dpif/dump-flows ovs-br
Dump 在 Linux kernel 裡的 datapath flow table (常用)
ovs-dpctl dump-flows [dp]
Top like behavior for ovs-dpctl dump-flows
ovs-dpctl-top
7.9 XenServer 开启 OpenvSwitch 方式
检查是否启动openvswitch服务:
service openvswitch status
xe-switch-network-backend openvswitch
xe-switch-network-backend bridge
7.10 关于 Log
查询 log level list
ovs-appctl vlog/list
设置 log level (以 stp 设置 file 为 dbg level 为例)
ovs-appctl vlog/set stp:file:dbg
ovs-appctl vlog/set {module name}:{console, syslog, file}:{off, emer, err, warn, info, dbg}
7.11 关于 Fallback
Controller connection: false 的时候, 会自动调成 legacy switch mode
ovs-vsctl set-fail-mode ovs-br standalone
无论 Controller connection status 为何, 都必须通过 OpenFlow 进行网络行为 (default)
ovs-vsctl set-fail-mode ovs-br secure
ovs-vsctl del-fail-mode ovs-br
ovs-vsctl get-fail-mode ovs-br
7.12 关于 sFlow
ovs-vsctl list sflow
Set sFlow 缺
ovs-vsctl -- clear Bridge ovs-br sflow
7.13关于 NetFlow
ovs-vsctl list netflow
Set NetFlow 缺
ovs-vsctl -- clear Bridge ovs-br netflow
7.14 设置 Out-of-band 和 in-band
ovs-vsctl get controller ovs-br connection-mode
Out-of-band
ovs-vsctl set controller ovs-br connection-mode=out-of-band
In-band (default)
ovs-vsctl set controller ovs-br connection-mode=in-band
移除 hidden flow
ovs-vsctl set bridge br0 other-config:disable-in-band=true
7.15 关于 ssl
ovs-vsctl get-ssl
ovs-vsctl set-ssl sc-privkey.pem sc-cert.pem cacert.pem
OpenvSwitch Lab 6$ TLS SSL : /posts/208707-openvswitch-lab-6-ssl
ovs-vsctl del-ssl
7.16 关于 SPAN
ovs-vsctl add-br ovs-br
ovs-vsctl add-port ovs-br eth0
ovs-vsctl add-port ovs-br eth1
ovs-vsctl add-port ovs-br tap0 \
-- --id=@p get port tap0 \
-- --id=@m create mirror name=m0 select-all=true output-port=@p \
-- set bridge ovs-br mirrors=@m
将 ovs-br 上 add-port {eth0,eth1} mirror 至 tap0
ovs-vsctl clear bridge ovs-br mirrors # 關於 Table
查 table ovs-ofctl dump-tables ovs-br
7.17 关于 Group Table
建立 Group id 及对应的 bucket
ovs-ofctl -O OpenFlow13 add-group ovs-br group_id=5566,type=select,bucket=output:1,bucket=output:2,bucket=output:3
type 共有 All, Select, Indirect, FastFailover, 详细规格:
使用 Group Table
ovs-ofctl -O OpenFlow13 add-flow ovs-br in_port=4,actions=group:5566
7.18 关于 VXLAN
建立 VXLAN Network ID (VNI) 和指定的 OpenFlow port number, eg: VNI=5566, OF_PORT=9
ovs-vsctl set interface vxlan type=vxlan option:remote_ip=x.x.x.x option:key=5566 ofport_request=9
VNI flow by flow
ovs-vsctl set interface vxlan type=vxlan option:remote_ip=140.113.215.200 option:key=flow ofport_request=9
设置 VXLAN tunnel id
ovs-ofctl add-flow ovs-br in_port=1,actions=set_field:5566-&tun_id,output:2
ovs-ofctl add-flow s1 in_port=2,tun_id=5566,actions=output:1
7.19 关于 OVSDB Manager
Active Listener 设置
ovs-vsctl set-manager tcp:1.2.3.4:6640
Passive Listener 设置
ovs-vsctl set-manager ptcp:6640
7.20 OpenFlow Trace
Generate pakcet trace
ovs-appctl ofproto/trace ovs-br in_port=1,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02 -generate
查询 OpenvSwitch 版本
ovs-ofctl -V
查询指令历史记录
ovsdb-tool show-log [-mmm]
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:11589次
排名:千里之外
原创:39篇
(2)(1)(2)(1)(10)(9)(23)6194人阅读
云计算(17)
& & & & 云计算是现在IT行业比较流行的,但真正什么是云计算业界也没有个什么统一的定义(很多公司都是根据自己的利益狭隘的定义云计算),更别说什么标准规范了。所以现在就有很多人说云计算只不过是个幌子,是个嘘头,没点实用的,嘴上说说而已,虽然我也不太清楚什么叫做云计算,云计算的定义究竟是什么,但我根据我公司现在做的云计算产品来说,对于云计算服务还是懂些的。我觉得那并不是什么幌子、嘘头,但如果说这云计算技术还不太成熟,我倒还勉强认可的。若把云计算比作一个人的话,我个人觉得现在它正是二十岁的样子,到三十多岁就算是比较成熟了,所以大概就能想象的到云计算现在的境况了。下面就来简介下实现云计算的一些技术,我对云计算并没有什么研究,也没能达到从全局的角度来分析云计算技术,更别说从一些更高的位置来分析问题,我所能介绍的仅仅是我一个小程序员在工作中所遇到的一些和云计算有关的技术,日积月累,希望终有一天能成为云计算“砖家”。
& & & & 云计算是个全世界的话题,所以也有全世界的能人异士来为实现这个云计算而奋斗。我现阶段遇到的有关云计算的技术就是openVswitch、openStack技术和docker技术。那就先从openVswitch开始介绍起,我会用一系列blog来分析openVswitch的相关数据结构和工作流程,以及各个重要模块的分析。所有的介绍都是基于源码的分析,希望对初学着有点用。
& & & & openVswitch,根据其名就可以知道这是一个开放的虚拟交换机(open virtual switch);它是实现网络虚拟化SDN的基础,它是在开源的Apache2.0许可下的产品级质量的多层虚拟交换标准。设计这个openVswitch的目的是为了解决物理交换机存在的一些局限性:openVswitch较物理交换机而言有着更低的成本和更高的工作效率;一个虚拟交换机可以有几十个端口来连接虚拟机,而openVswitch本身占用的资源也非常小;可以根据自己的选择灵活的配置,可以对数据包进行接收分析处理;同时还支持标准的管理接口和协议,如NetFlow,
sFlow, SPAN, RSPAN等。
& & & &&Open vSwtich模块介绍
& & & & 当前最新代码包主要包括以下模块和特性:
& & & & ovs-vswitchd 主要模块,实现switch的daemon,包括一个支持流交换的Linux内核模块;
& & & & ovsdb-server 轻量级数据库服务器,提供ovs-vswitchd获取配置信息;
& & & & ovs-brcompatd 让ovs-vswitch替换Linux bridge,包括获取bridge ioctls的Linux内核模块;
& & & & ovs-dpctl 用来配置switch内核模块;
& & & & 一些Scripts and specs 辅助OVS安装在Citrix XenServer上,作为默认switch;
& & & & ovs-vsctl 查询和更新ovs-vswitchd的配置;
& & & & ovs-appctl 发送命令消息,运行相关daemon;
& & & & ovsdbmonitor GUI工具,可以远程获取OVS数据库和OpenFlow的流表。
& & & &&ovs-openflowd:一个简单的OpenFlow交换机;
& & & & ovs-controller:一个简单的OpenFlow控制器;
& & & & ovs-ofctl 查询和控制OpenFlow交换机和控制器;
& & & & ovs-pki :OpenFlow交换机创建和管理公钥框架;
& & & & ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息;
& & & & 上面是网上提到的一些openVswitch的主要模块。其实openVswitch中最主要的还是datapath目录下的一些文件。有端口模块vport等,还有关键的逻辑处理模块datapath等,以及flow等流表模块,最后的还有action动作响应模块,通道模块等等。
& & & & 下面来介绍下其工作流程:
& & & & & &
& & & & 一般的数据包在linux网络协议栈中的流向为黑色箭头流向:从网卡上接受到数据包后层层往上分析,最后离开内核态,把数据传送到用户态。当然也有些数据包只是在内核网络协议栈中操作,然后再从某个网卡发出去。
& & & & 但当其中有openVswitch时,数据包的流向就不一样了。首先是创建一个网桥:ovs-vsctl add-br br0;然后是绑定某个网卡:绑定网卡:ovs-vsctl add-port br0 eth0;这里默认为绑定了eth0网卡。数据包的流向是从网卡eth0上然后到openVswitch的端口vport上进入openVswitch中,然后根据key值进行流表的匹配。如果匹配成功,则根据流表中对应的action找到其对应的操作方法,完成相应的动作(这个动作有可能是把一个请求变成应答,也有可能是直接丢弃,也可以自己设计自己的action);如果匹配不成功,则执行默认的动作,有可能是放回内核网络协议栈中去处理(在创建网桥时就会相应的创建一个端口连接内核协议栈的)。
& & & & 其大概工作流程就是这样了,在工作中一般在这几个地方来修改内核代码以达到自己的目的:第一个是在datapath.c中的ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb)函数内添加相应的代码来达到自己的目的,因为对于每个数据包来说这个函数都是必经之地;第二个就是自己去设计自己的流表了;第三个和第二个是相关联的,就是根据流表来设计自己的action,完成自己想要的功能。
& & & &转载请注明原文出处,原文地址为:&
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &若有不正确之处,望指正!谢谢!! & &
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:134916次
积分:2888
积分:2888
排名:第8582名
原创:142篇
转载:52篇
评论:55条
文章:25篇
阅读:13117
文章:12篇
阅读:37992
阅读:6534
(3)(2)(4)(3)(11)(1)(3)(3)(11)(13)(18)(5)(17)(14)(9)(19)(5)(6)(5)(7)(34)(1)博客访问: 839201
博文数量: 309
博客积分: 3133
博客等级: 中校
技术积分: 3423
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
OpenvSwitch完全使用手册(一)-总览Overview
本文主要参考以及以及结合自己的理解。
1 什么是OpenvSwitch
2 OpenvSwitch的组成
3 OpenvSwitch和其他vswitch
(二)-概念及工作流程1
1 vswitch、Bridge、Datapath
1.1 网桥的工作原理
2 OVS中的bridge
ovs-vsctl add-br brname(br-int) root@Compute2:~# ifconfig br-int Link encap:Ethernet HWaddr 1a:09:56:ea:0b:49 inet6 addr: fe80::1809:56ff:feea:b49/64 Scope:Link UP BROADCAST RUNNING MULTICAST
MTU:1500 Metric:1 RX packets:1584 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:316502 (316.5 KB) TX bytes:468 (468.0 B)
ovs-vsctl add-port brname port
ip address add 192.168.1.1/24 dev brname
root@Compute2:~# ovs-vsctl show bc12c8d2-6900-42dd-9c1c-30e8ecb99a1b Bridge "br0" Port "eth0" Interface "eth0" Port "br0" Interface "br0" type: internal ovs_version: "1.4.0+build0"
OpenvSwitch完全使用手册(二)-概念及工作流程2
这一部分我以一个简单的例子,说明在虚拟化环境中OpenvSwitch的典型工作流程。
阅读(11921) | 评论(0) | 转发(3) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。}

我要回帖

更多关于 ovs vswitchd 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信