找回密码
 注册
查看: 3707|回复: 0

openvswitch中vswitch、Bridge、Datapath

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2019-10-18 10:13:47 | 显示全部楼层 |阅读模式
在网络中,交换机和桥都是同一个概念,OVS实现了一个虚拟机的以太交换机,换句话说,OVS也就是实现了一个以太桥。那么,在OVS中,给一个交换机,或者说一个桥,用了一个专业的名词,叫做DataPath!8 I% q8 l; B& k3 I; M

  A, r4 @5 Y1 ^" |要了解OVS如何工作,首先需要知道桥的概念:
* }( ~9 C8 s: @: `/ y+ }( B" S: K6 h' _2 f4 K& {5 \1 {" @9 c/ ^
网桥也叫做桥接器,连接两个局域网的设备,网桥工作在数据链路层,将两个LAN连接,根据MAC地址来转发帧,可以看成一个“低层的路由器”(路由器工作在网络层,根据IP地质进行转发)。
4 o/ j; j; C1 O, ^% I
8 H3 I- o' G! W( Q* r" R& R网桥的工作原理
$ B+ {( R$ v7 X! o7 X3 f/ {网桥处理包遵循以下几条规则:% v; f) D. k7 \% c1 ]3 N0 f

9 C9 s  w& {/ O) G在一个接口上接收到的包不会再往那个接口上发送此包。
5 w$ Q& s- N* e( g! t每个接收到的包都要学习其源MAC地址。1 l4 k# ]7 h: F" |- f' m
如果数据包是多播或者广播包(通过2层MAC地址确定)则要向接收端口以外的所有端口转发,如果上层协议感兴趣,则还会递交上层处理。
- x$ ~2 N. L: b4 G7 \  ?如果数据包的地址不能再CAM表中找到,则向接收端口以外的其他端口转发。& z  ~4 x- c# t) L8 A! y1 |
如果CAM表中能找到,则转发给相应端口,如果发送和接收都是统一端口,则不发送。* ~8 h3 K/ @* X+ `0 ~
注意,网桥是以混杂模式工作的。关于网桥更多,请查阅相关资料。) c$ m" D# t4 a4 i0 ^

9 |3 Y/ p- Y6 d* j4 BOVS中的bridge( `! Z2 o2 \% ?- V; t
上面,说到,一个桥就是一个交换机。例如,在OVS中:
; t' R: R0 N* n4 P! B4 [6 f1 q) I4 C
root@localhost:~# ovs-vsctl add-br br0
! V! i% r: h2 Y! n. m# }- oroot@localhost:~# ifconfig br0- j+ y6 e6 ]4 E1 v+ Z# j: U' p8 s
      br0    Link encap:Ethernet  HWaddr 1a:09:56:ea:0b:49  
$ d3 d9 m, C8 U# q4 g3 S      inet6 addr: fe80::1809:56ff:feea:b49/64 Scope:Link
7 ]% ^( }/ O: l& l2 P* f      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1; r4 N* @9 E$ e3 d5 v  b
      RX packets:1584 errors:0 dropped:0 overruns:0 frame:0
, A& L3 O7 C; J0 K      TX packets:6 errors:0 dropped:0 overruns:0 carrier:0, h, ?: X2 ]# ]; m
      collisions:0 txqueuelen:0 ) B% q9 S# Z; R& v: F5 b
      RX bytes:316502 (316.5 KB)  TX bytes:468 (468.0 B)
; V2 S9 `/ U0 I当我们创建了一个交换机(网桥)以后,此时网络功能不受影响,但是会产生一个虚拟网卡,名字就是网桥的名称(br-int),之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能。有了这个交换机以后,还需要为这个交换机增加端口(port),一个端口,就是一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了。
! ]' a; e! s. V7 c# t. I
' V( a4 x% ~& F' k/ u! |; sroot@localhost:~# ovs-vsctl add-port br0 port1 ~* p! _. o* v& ^  K( S9 G
这里要特别注意,网卡加入网桥以后,要按照网桥的工作标准工作,那么加入的一个端口就必须是以混杂模式工作,工作在链路层,处理2层的帧,所以这个port就不需要配置IP了。(你没见过哪个交换的端口有IP的吧)  x1 p* h1 ~! ?; P! i/ K2 R

; r! v3 W3 X1 ~* w+ t/ n5 M那么接下来你可能会问,通常的交换机不都是有一个管理接口,可以telnet到交换机上进行配置吧,那么在OVS中创建的虚拟交换机有木有这种呢,有的!上面既然创建交换机brname的时候产生了一个虚拟网口 br-int,那么,你给这个虚拟网卡配置了IP以后,就相当于给交换机的管理接口配置了IP,此时一个正常的虚拟交换机就搞定了。& D6 I2 O& ], ?$ p1 g* X
0 L- l7 I2 s! s4 {4 ]% ~
root@localhost:~# ip address add 192.168.1.1/24 dev br0
. X0 }$ u$ R. U* t  w最后,我们来看看一个br的具体信息:2 X6 p0 @. _3 y9 C: ~; W$ M

( O3 `7 W# S; U! \) P: ~; z* |root@localhost:~# ovs-vsctl show! }' Q9 N0 g4 K2 v2 U, m6 H
bc12c8d2-6900-42dd-9c1c-30e8ecb99a1b
) S9 S7 L# D( v$ }9 e, N) _7 xBridge "br0"7 t2 Y/ P8 u  q7 U
    Port "eth0"
# ?0 I- n, B8 H) H        Interface "eth0"
: T% {1 d# m) G0 F( c! r    Port "br0"6 U# s: {7 a3 p, Q* h2 `6 e
        Interface "br0"# f5 t3 d2 |  u0 Q' _: H
            type: internal5 {$ v; ]$ n* N) {4 o! H
ovs_version: "1.4.0+build0"
6 u' g8 [( H$ ]$ v' E首先,这里显示了一个名为br0的桥(交换机),这个交换机有两个接口,一个是eth0,一个是br0,上面说到,创建桥的时候会创建一个和桥名字一样的接口,并自动作为该桥的一个端口,那么这个虚拟接口的作用,一方面是可以作为交换机的管理端口,另一方面也是基于这个虚拟接口,实现了桥的功能。0 L" O  x$ [7 ]6 H
2 G' _& Z3 B! T. @0 f, n0 x  @
#### OpenvSwitch的典型工作流程
9 \* a/ I1 k$ y: x0 j, c+ R
; Z1 y. `5 R* Q8 N! e" H) y这一部分以一个简单的例子,说明在虚拟化环境中OpenvSwitch的典型工作流程。: H! ]% K1 \6 T0 F% P' e
; g- V/ k: X9 [/ P3 x* E
前面已经说到,OVS主要是用来在虚拟化环境中。实现虚拟机之间通信以及一个虚拟机和外网之间通信,如下是一个典型的结构图:
; e) ~# o7 G5 w7 n9 G' l6 C: I
9 k- K, y! D/ u& e+ q那么,通常情况下的工作流程如下:! v" D1 s. M$ o8 `( d' g+ W. u3 {

' S3 Q0 i3 F( O$ p* vlogical_model
8 P  u$ f' K! U4 q6 d- C
: n! [5 d9 y) IVM实例 instance 产生一个数据包并发送至实例内的虚拟网络接口 VNIC,图中就是 instance 中的 eth0.7 b; Y  e' D5 K) }
这个数据包会传送到物理机上的VNIC接口,如图就是vnet接口。- u, Y3 a  y- Y: {( G& m" d
数据包从 vnet NIC 出来,到达桥(虚拟交换机) br100 上.
9 `% l6 q, y/ M% X' G, i% {数据包经过交换机的处理,从物理节点上的物理接口发出,如图中物理机上的 eth0 .8 R# h) h9 w$ ?; X; C1 s
数据包从 eth0 出去的时候,是按照物理节点上的路由以及默认网关操作的,这个时候该数据包其实已经不受你的控制了。
3 k/ m' s) [. E4 I一般 L2 switch 连接 eth0 的这个口是一个 trunk 口, 因为虚拟机对应的 VNET 往往会设置 VLAN TAG, 可以通过对虚拟机对应的 vnet 打 VALN TAG 来控制虚拟机的网络广播域. 如果跑多个虚拟机的话, 多个虚拟机对应的 vnet 可以设置不同的 vlan tag, 那么这些虚拟机的数据包从 eth0(4)出去的时候, 会带上TAG标记. 这样也就必须是 trunk 口才行.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 02:19 , Processed in 0.026637 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表