易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 3707|回复: 0
收起左侧

openvswitch中vswitch、Bridge、Datapath

[复制链接]
发表于 2019-10-18 10:13:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
在网络中,交换机和桥都是同一个概念,OVS实现了一个虚拟机的以太交换机,换句话说,OVS也就是实现了一个以太桥。那么,在OVS中,给一个交换机,或者说一个桥,用了一个专业的名词,叫做DataPath!/ B2 ^& e( Q  O1 V3 Z
! H. p/ V+ O2 z# z" n/ v
要了解OVS如何工作,首先需要知道桥的概念:3 }# T+ C6 s- {' H- o

- N1 g+ y/ Q0 B9 b: O1 G6 |* ?网桥也叫做桥接器,连接两个局域网的设备,网桥工作在数据链路层,将两个LAN连接,根据MAC地址来转发帧,可以看成一个“低层的路由器”(路由器工作在网络层,根据IP地质进行转发)。- b7 W$ [; @3 f9 W2 {
( S1 y5 o$ ]1 n
网桥的工作原理  ]' X$ G+ f" t8 n. ]8 v( Z6 E
网桥处理包遵循以下几条规则:
$ [  S/ s; z) u/ S& W9 e1 M0 a8 a1 ]3 j1 r& b( ^  y6 [' Q
在一个接口上接收到的包不会再往那个接口上发送此包。
& y) ]0 Z/ q' R0 E1 W/ m& H. \! |3 Y每个接收到的包都要学习其源MAC地址。) g0 k$ h. D; @- l5 A% Q. h0 K) `
如果数据包是多播或者广播包(通过2层MAC地址确定)则要向接收端口以外的所有端口转发,如果上层协议感兴趣,则还会递交上层处理。
; |# U2 g" U% h  W9 Q如果数据包的地址不能再CAM表中找到,则向接收端口以外的其他端口转发。
" e: T3 z- Z- b4 p如果CAM表中能找到,则转发给相应端口,如果发送和接收都是统一端口,则不发送。
4 n  M/ a" Z6 {  {  x0 O# N' K9 p注意,网桥是以混杂模式工作的。关于网桥更多,请查阅相关资料。
& j- G: u/ {$ y) [6 o: \3 R4 U& ?
$ ~% _5 n* n9 C" D" c; }  kOVS中的bridge, N& N* [4 k' x* G8 M. [
上面,说到,一个桥就是一个交换机。例如,在OVS中:. ~8 [  q# {" J/ L" f+ T

: h( G; I4 b# N4 U: |root@localhost:~# ovs-vsctl add-br br09 ~* J- I. g0 ]3 S
root@localhost:~# ifconfig br0* E) m) Q9 R2 Y. @7 I1 m8 T
      br0    Link encap:Ethernet  HWaddr 1a:09:56:ea:0b:49  : v; Q2 `; o3 ^; B' f- O/ c
      inet6 addr: fe80::1809:56ff:feea:b49/64 Scope:Link5 U% g: S" N! P9 X) @
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:11 H' R' \  `, P1 h2 D5 b
      RX packets:1584 errors:0 dropped:0 overruns:0 frame:0. u$ f: _( _4 x6 R. M% I) V
      TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
7 M/ w% Z* a2 U9 H; w      collisions:0 txqueuelen:0
/ _( d8 K0 W5 i: m8 J6 P9 k      RX bytes:316502 (316.5 KB)  TX bytes:468 (468.0 B)
! [8 z6 u: y6 O$ h( p& i当我们创建了一个交换机(网桥)以后,此时网络功能不受影响,但是会产生一个虚拟网卡,名字就是网桥的名称(br-int),之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能。有了这个交换机以后,还需要为这个交换机增加端口(port),一个端口,就是一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了。/ Q7 b0 h7 J0 F7 o9 x& r  Y% X
- [! D' ^* w0 `: M% {4 J4 C, o
root@localhost:~# ovs-vsctl add-port br0 port
# D$ A  Y2 _7 P这里要特别注意,网卡加入网桥以后,要按照网桥的工作标准工作,那么加入的一个端口就必须是以混杂模式工作,工作在链路层,处理2层的帧,所以这个port就不需要配置IP了。(你没见过哪个交换的端口有IP的吧); o) ~& G, V% f, Q
/ D) j" t5 F6 o# n0 e8 e* h. ?
那么接下来你可能会问,通常的交换机不都是有一个管理接口,可以telnet到交换机上进行配置吧,那么在OVS中创建的虚拟交换机有木有这种呢,有的!上面既然创建交换机brname的时候产生了一个虚拟网口 br-int,那么,你给这个虚拟网卡配置了IP以后,就相当于给交换机的管理接口配置了IP,此时一个正常的虚拟交换机就搞定了。
8 M) y3 p% E0 X, y5 d' ^  A3 D1 ^  Y' ?
root@localhost:~# ip address add 192.168.1.1/24 dev br0
1 h8 u4 S/ n! t8 R- t* ~7 J最后,我们来看看一个br的具体信息:3 Y$ c: _5 e8 m8 V6 U4 Z7 A
% e* g& ^. B( Z2 r, l3 z' o  s. j! K
root@localhost:~# ovs-vsctl show1 M; x! |: V: Q. M1 k- I2 n
bc12c8d2-6900-42dd-9c1c-30e8ecb99a1b+ C5 R. @# s9 h
Bridge "br0"
6 b7 l/ N- h4 q+ [0 E    Port "eth0"
  ]% G8 R& t  g% B        Interface "eth0"8 w( G7 m/ X% |& P* J5 R/ Z2 r
    Port "br0"+ ~/ z2 v+ \1 X3 ^% g
        Interface "br0". E2 H3 L0 N- ?
            type: internal
7 Q) j3 R) e# C! Hovs_version: "1.4.0+build0"
! v9 n' H8 ]. [3 }7 m$ V% S首先,这里显示了一个名为br0的桥(交换机),这个交换机有两个接口,一个是eth0,一个是br0,上面说到,创建桥的时候会创建一个和桥名字一样的接口,并自动作为该桥的一个端口,那么这个虚拟接口的作用,一方面是可以作为交换机的管理端口,另一方面也是基于这个虚拟接口,实现了桥的功能。
0 d' M4 j; \+ v9 M9 K. }
1 l. o; V' Z  B& G" I! h#### OpenvSwitch的典型工作流程) J* v9 K2 w5 C( A7 o0 w
7 u! a  a5 {7 R+ R" D
这一部分以一个简单的例子,说明在虚拟化环境中OpenvSwitch的典型工作流程。5 @- m# F, v2 A9 e: m

2 I# Z4 b# y  P& o7 {, O" u2 d前面已经说到,OVS主要是用来在虚拟化环境中。实现虚拟机之间通信以及一个虚拟机和外网之间通信,如下是一个典型的结构图:* z# H- c# P+ ]3 Z
. `4 z+ U( M( ^9 j
那么,通常情况下的工作流程如下:/ z9 ~$ ]. C" t

. j/ N. |# H7 ^( Wlogical_model
4 g' }; J. T5 s
0 y4 Z2 u+ l: M8 AVM实例 instance 产生一个数据包并发送至实例内的虚拟网络接口 VNIC,图中就是 instance 中的 eth0.$ t, J, |0 g' N1 P; m% V
这个数据包会传送到物理机上的VNIC接口,如图就是vnet接口。0 _" W* G( K  Y
数据包从 vnet NIC 出来,到达桥(虚拟交换机) br100 上.
8 n1 b  C* E. T& K; Z6 {) J数据包经过交换机的处理,从物理节点上的物理接口发出,如图中物理机上的 eth0 .
$ p) k- ]% B. p数据包从 eth0 出去的时候,是按照物理节点上的路由以及默认网关操作的,这个时候该数据包其实已经不受你的控制了。; j" M5 r8 b6 L
一般 L2 switch 连接 eth0 的这个口是一个 trunk 口, 因为虚拟机对应的 VNET 往往会设置 VLAN TAG, 可以通过对虚拟机对应的 vnet 打 VALN TAG 来控制虚拟机的网络广播域. 如果跑多个虚拟机的话, 多个虚拟机对应的 vnet 可以设置不同的 vlan tag, 那么这些虚拟机的数据包从 eth0(4)出去的时候, 会带上TAG标记. 这样也就必须是 trunk 口才行.
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-4-8 12:10 , Processed in 0.046032 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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