- 积分
- 16840
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
在网络中,交换机和桥都是同一个概念,OVS实现了一个虚拟机的以太交换机,换句话说,OVS也就是实现了一个以太桥。那么,在OVS中,给一个交换机,或者说一个桥,用了一个专业的名词,叫做DataPath!' K$ H! P0 H" X
0 r m. w6 K( @' v9 o; v
要了解OVS如何工作,首先需要知道桥的概念: x* y: F$ U& i, z2 T/ b
( `- I. E, ^, [* i网桥也叫做桥接器,连接两个局域网的设备,网桥工作在数据链路层,将两个LAN连接,根据MAC地址来转发帧,可以看成一个“低层的路由器”(路由器工作在网络层,根据IP地质进行转发)。
$ \! Q P! O& J( z2 H" z& V5 t7 }, m/ ] ?" o
网桥的工作原理 Z& r% t8 c% f# _) F1 e! K4 `
网桥处理包遵循以下几条规则:+ u* w- B* u0 t$ \% L( b \4 U
. v* @1 Q0 N( A: G7 L' G2 j( p在一个接口上接收到的包不会再往那个接口上发送此包。8 S6 @2 R' |6 J6 V1 z% ^2 ?
每个接收到的包都要学习其源MAC地址。. i8 i0 G" H' S7 o% a" u9 s
如果数据包是多播或者广播包(通过2层MAC地址确定)则要向接收端口以外的所有端口转发,如果上层协议感兴趣,则还会递交上层处理。0 b, @6 y2 }, B4 o8 L0 X1 c m
如果数据包的地址不能再CAM表中找到,则向接收端口以外的其他端口转发。
" y% c3 k5 Y; v; z+ R9 V5 l如果CAM表中能找到,则转发给相应端口,如果发送和接收都是统一端口,则不发送。
, @# v( h3 f2 i# L2 [; y) c注意,网桥是以混杂模式工作的。关于网桥更多,请查阅相关资料。9 ?% s7 o0 ?7 u- n
! q+ v- W/ U" a& G6 Y2 {% B. f8 iOVS中的bridge7 o- t% ~% e6 m' I/ B6 ~/ b
上面,说到,一个桥就是一个交换机。例如,在OVS中:
2 [/ V9 K* ~; P( d4 g
0 b5 O5 P2 O7 H: eroot@localhost:~# ovs-vsctl add-br br00 l; @/ D6 O5 i
root@localhost:~# ifconfig br0% c3 Y g# `5 O
br0 Link encap:Ethernet HWaddr 1a:09:56:ea:0b:49 8 `# Q1 S/ F7 e; r" i9 q% J
inet6 addr: fe80::1809:56ff:feea:b49/64 Scope:Link
5 r% M* I- Q2 ~9 D$ Q UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:12 \1 o; {: ~( Z/ U& W+ C
RX packets:1584 errors:0 dropped:0 overruns:0 frame:0" E" f$ u2 {4 y7 R/ C$ R6 w
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0; k6 m2 _& K9 w }( y. A
collisions:0 txqueuelen:0
. P9 _0 E% r( G! K+ x RX bytes:316502 (316.5 KB) TX bytes:468 (468.0 B)& x& }4 d/ T1 i! Q0 {- x# M
当我们创建了一个交换机(网桥)以后,此时网络功能不受影响,但是会产生一个虚拟网卡,名字就是网桥的名称(br-int),之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能。有了这个交换机以后,还需要为这个交换机增加端口(port),一个端口,就是一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了。) k6 g/ \$ A7 D3 B* X6 O! V) A0 O
9 h) f3 G, S, u5 T/ s. u4 Z- R, x
root@localhost:~# ovs-vsctl add-port br0 port4 g# X- E9 \0 ]1 {2 {( N3 x7 G4 p' G d
这里要特别注意,网卡加入网桥以后,要按照网桥的工作标准工作,那么加入的一个端口就必须是以混杂模式工作,工作在链路层,处理2层的帧,所以这个port就不需要配置IP了。(你没见过哪个交换的端口有IP的吧)
1 X$ ^: k% V2 |$ B' Q& ]/ b
! V, p1 J0 u3 u4 b% N那么接下来你可能会问,通常的交换机不都是有一个管理接口,可以telnet到交换机上进行配置吧,那么在OVS中创建的虚拟交换机有木有这种呢,有的!上面既然创建交换机brname的时候产生了一个虚拟网口 br-int,那么,你给这个虚拟网卡配置了IP以后,就相当于给交换机的管理接口配置了IP,此时一个正常的虚拟交换机就搞定了。& \( I" }7 d$ c2 `
1 y1 C" `4 Q6 e8 F" N6 R/ Croot@localhost:~# ip address add 192.168.1.1/24 dev br0
7 w0 s% l5 W& }# ~( m最后,我们来看看一个br的具体信息:
4 C" a% M& }; Z+ a- r
* x, ]( S9 F1 J7 h# E7 ]# g" qroot@localhost:~# ovs-vsctl show
3 b! T: y% ~4 A: b! @bc12c8d2-6900-42dd-9c1c-30e8ecb99a1b# P5 d5 ~' j+ \) O9 S z
Bridge "br0"
- o- J3 R$ J) G6 p Port "eth0"
- G$ V! a4 @& b c/ v8 e# m Interface "eth0"
" M8 F' E" j$ ~+ j$ p% L Port "br0"8 j- {( b: o, V8 v& L5 h) X* `
Interface "br0" ^6 ?6 H3 X4 E. }; L% e/ x8 w c
type: internal6 Q' y. i8 |" X6 F
ovs_version: "1.4.0+build0"
9 x, A; x0 l, U9 }2 u: ]首先,这里显示了一个名为br0的桥(交换机),这个交换机有两个接口,一个是eth0,一个是br0,上面说到,创建桥的时候会创建一个和桥名字一样的接口,并自动作为该桥的一个端口,那么这个虚拟接口的作用,一方面是可以作为交换机的管理端口,另一方面也是基于这个虚拟接口,实现了桥的功能。" d9 U, _: d8 ?2 t7 c
. n" |7 p* Z- k4 P#### OpenvSwitch的典型工作流程
1 b4 E' ~! A% h6 d* H/ H+ c+ M/ V' ]) ?
这一部分以一个简单的例子,说明在虚拟化环境中OpenvSwitch的典型工作流程。! ~7 r F0 m p: }' H7 D# o D
. N- a9 ~* [6 N; K8 P5 E3 P前面已经说到,OVS主要是用来在虚拟化环境中。实现虚拟机之间通信以及一个虚拟机和外网之间通信,如下是一个典型的结构图:- A! y+ k" P" N5 L; I. m
2 k T- \) P- v. k% V( `
那么,通常情况下的工作流程如下:
' a; R2 \. y0 T, B+ L0 _" k0 @- Z7 J2 i) q
logical_model4 J* y- v8 |$ `) V# s$ g' x
( t9 V$ ?6 A) K5 c" e% c# U: rVM实例 instance 产生一个数据包并发送至实例内的虚拟网络接口 VNIC,图中就是 instance 中的 eth0.
1 ?2 u& E! a) K2 b这个数据包会传送到物理机上的VNIC接口,如图就是vnet接口。
8 s& ?% V7 y+ \3 T8 p2 j8 Q数据包从 vnet NIC 出来,到达桥(虚拟交换机) br100 上.
+ _, ]9 L+ d9 p3 S数据包经过交换机的处理,从物理节点上的物理接口发出,如图中物理机上的 eth0 .6 }( |: P9 m/ ^. E% p
数据包从 eth0 出去的时候,是按照物理节点上的路由以及默认网关操作的,这个时候该数据包其实已经不受你的控制了。* |5 L# n: y, m; @7 t7 D2 _0 }
一般 L2 switch 连接 eth0 的这个口是一个 trunk 口, 因为虚拟机对应的 VNET 往往会设置 VLAN TAG, 可以通过对虚拟机对应的 vnet 打 VALN TAG 来控制虚拟机的网络广播域. 如果跑多个虚拟机的话, 多个虚拟机对应的 vnet 可以设置不同的 vlan tag, 那么这些虚拟机的数据包从 eth0(4)出去的时候, 会带上TAG标记. 这样也就必须是 trunk 口才行. |
|