- 积分
- 16844
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
在网络中,交换机和桥都是同一个概念,OVS实现了一个虚拟机的以太交换机,换句话说,OVS也就是实现了一个以太桥。那么,在OVS中,给一个交换机,或者说一个桥,用了一个专业的名词,叫做DataPath!; `0 Y* t3 v, w2 Q. w# s) w
% Q( R& l! z+ V5 H% Y! z要了解OVS如何工作,首先需要知道桥的概念:* G/ E) L8 S# I4 k
* Q) R* |7 R9 y: k, g' @网桥也叫做桥接器,连接两个局域网的设备,网桥工作在数据链路层,将两个LAN连接,根据MAC地址来转发帧,可以看成一个“低层的路由器”(路由器工作在网络层,根据IP地质进行转发)。( t" u; u! h" @5 N. H
1 @! t( r. l# j$ ^- G& Q网桥的工作原理
! G! E/ U: @* y1 X' y网桥处理包遵循以下几条规则:( A9 X, q1 V" N; n/ j
% P1 n* i1 f' H: m在一个接口上接收到的包不会再往那个接口上发送此包。
) u; \) k" j' c( r2 J3 T ~. J每个接收到的包都要学习其源MAC地址。
( L9 x% Y% e, y+ A3 O+ H8 M如果数据包是多播或者广播包(通过2层MAC地址确定)则要向接收端口以外的所有端口转发,如果上层协议感兴趣,则还会递交上层处理。& w/ ^8 e& h1 k! z! _" t
如果数据包的地址不能再CAM表中找到,则向接收端口以外的其他端口转发。" y; w& w3 d5 m. a
如果CAM表中能找到,则转发给相应端口,如果发送和接收都是统一端口,则不发送。8 Y$ R* X8 \' r. D$ I3 G% Y) A1 }
注意,网桥是以混杂模式工作的。关于网桥更多,请查阅相关资料。& S& K: P r/ l* u& v; ]
+ G" I. u% [) [! |OVS中的bridge
8 S: g8 ~5 t9 y( ]' l# H/ n5 n" \上面,说到,一个桥就是一个交换机。例如,在OVS中:
" i/ B+ C' p: I# M" n
( E% @( M( Z. k( B5 ?$ ?- sroot@localhost:~# ovs-vsctl add-br br0. L2 j3 O( y2 v, z. g$ I
root@localhost:~# ifconfig br05 C2 E* J0 v; o! F
br0 Link encap:Ethernet HWaddr 1a:09:56:ea:0b:49 ! q/ S9 `: [) K( U$ ?0 \
inet6 addr: fe80::1809:56ff:feea:b49/64 Scope:Link
1 p6 J; s- R1 M6 B4 j2 w* K UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
5 i) Y' e' R# ^ RX packets:1584 errors:0 dropped:0 overruns:0 frame:0
9 ?1 k0 G9 ~& v( Q; r# A TX packets:6 errors:0 dropped:0 overruns:0 carrier:08 I. g0 w2 y, A7 o$ V. \0 a+ N6 |1 U
collisions:0 txqueuelen:0 % }$ |0 L. G% R) M) i e$ m% ~
RX bytes:316502 (316.5 KB) TX bytes:468 (468.0 B)" R7 N2 Q3 x; x" f- \, K/ T% m4 d
当我们创建了一个交换机(网桥)以后,此时网络功能不受影响,但是会产生一个虚拟网卡,名字就是网桥的名称(br-int),之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能。有了这个交换机以后,还需要为这个交换机增加端口(port),一个端口,就是一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了。3 f5 _% Y/ q" V9 m0 h, r, ?
) W; c& L& }' c) _' ~5 r" F! Jroot@localhost:~# ovs-vsctl add-port br0 port% Y/ d; g( Q: Y# j7 ]: y. V
这里要特别注意,网卡加入网桥以后,要按照网桥的工作标准工作,那么加入的一个端口就必须是以混杂模式工作,工作在链路层,处理2层的帧,所以这个port就不需要配置IP了。(你没见过哪个交换的端口有IP的吧)
7 e/ X/ P' ~7 f/ O- r8 [+ B+ n' @2 O$ X" A% {- m& H' F
那么接下来你可能会问,通常的交换机不都是有一个管理接口,可以telnet到交换机上进行配置吧,那么在OVS中创建的虚拟交换机有木有这种呢,有的!上面既然创建交换机brname的时候产生了一个虚拟网口 br-int,那么,你给这个虚拟网卡配置了IP以后,就相当于给交换机的管理接口配置了IP,此时一个正常的虚拟交换机就搞定了。2 l4 J' x) W" s6 S, j
6 E" e% j$ }9 [/ e$ y! |+ ?root@localhost:~# ip address add 192.168.1.1/24 dev br0% A. A! H8 ~1 A, E9 D' i) P
最后,我们来看看一个br的具体信息:
3 {* ^6 }- R( N; @# x4 T% y
$ ?7 @5 M5 ^( s8 G) l3 P" froot@localhost:~# ovs-vsctl show
0 _5 f S9 T! U1 G2 d0 l" H" o. _bc12c8d2-6900-42dd-9c1c-30e8ecb99a1b
9 r. n' `$ b8 _, _1 Z# hBridge "br0"
2 Q8 B% o3 J1 f" e% ~ Port "eth0"6 b: h' X0 P4 F" k
Interface "eth0"- V" P2 z7 ]1 n
Port "br0"6 U7 e$ n5 M* A# s2 f
Interface "br0"3 c9 ^- p8 _" u; x0 l9 }' f
type: internal
- K) m4 }% S6 G7 C$ u6 \. tovs_version: "1.4.0+build0"
6 E7 p4 M" b! V6 z7 c0 ?首先,这里显示了一个名为br0的桥(交换机),这个交换机有两个接口,一个是eth0,一个是br0,上面说到,创建桥的时候会创建一个和桥名字一样的接口,并自动作为该桥的一个端口,那么这个虚拟接口的作用,一方面是可以作为交换机的管理端口,另一方面也是基于这个虚拟接口,实现了桥的功能。
5 o3 O; Q- O, k0 S' ?- E: r9 E/ v- {$ J7 e0 u: W7 Q# i8 Q ^1 `
#### OpenvSwitch的典型工作流程
7 U" Z5 \: M6 p9 k% ?) V3 Z3 r+ I) s
+ E2 H1 b2 J0 R8 F0 L" L6 F5 q这一部分以一个简单的例子,说明在虚拟化环境中OpenvSwitch的典型工作流程。
* w9 V2 z0 @, }) Y& l" r8 G( |
6 M' {' ], _0 ^0 i5 j- t前面已经说到,OVS主要是用来在虚拟化环境中。实现虚拟机之间通信以及一个虚拟机和外网之间通信,如下是一个典型的结构图:# z5 F0 U# k0 r4 P# c* D- }
/ I! s$ H; ?1 Z- E那么,通常情况下的工作流程如下:
m- h& z- \7 y6 |1 h, {1 V: _- ]6 T1 J- o* t1 {8 @
logical_model" ]7 M2 W& W9 p3 d2 f3 b3 E$ M9 p* \
9 R/ Y9 r8 K; H4 B- v V
VM实例 instance 产生一个数据包并发送至实例内的虚拟网络接口 VNIC,图中就是 instance 中的 eth0.
0 B8 R7 Z4 \: P2 H这个数据包会传送到物理机上的VNIC接口,如图就是vnet接口。
( p6 o% Y. P2 e b% v数据包从 vnet NIC 出来,到达桥(虚拟交换机) br100 上.
& G* ]) D3 u/ I5 O5 Q数据包经过交换机的处理,从物理节点上的物理接口发出,如图中物理机上的 eth0 ./ i6 T* M3 |# |8 W# u, z
数据包从 eth0 出去的时候,是按照物理节点上的路由以及默认网关操作的,这个时候该数据包其实已经不受你的控制了。
3 z8 n6 Z _- |/ k一般 L2 switch 连接 eth0 的这个口是一个 trunk 口, 因为虚拟机对应的 VNET 往往会设置 VLAN TAG, 可以通过对虚拟机对应的 vnet 打 VALN TAG 来控制虚拟机的网络广播域. 如果跑多个虚拟机的话, 多个虚拟机对应的 vnet 可以设置不同的 vlan tag, 那么这些虚拟机的数据包从 eth0(4)出去的时候, 会带上TAG标记. 这样也就必须是 trunk 口才行. |
|