易陆发现互联网技术论坛

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

openvswitch中vswitch、Bridge、Datapath

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

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

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

x
在网络中,交换机和桥都是同一个概念,OVS实现了一个虚拟机的以太交换机,换句话说,OVS也就是实现了一个以太桥。那么,在OVS中,给一个交换机,或者说一个桥,用了一个专业的名词,叫做DataPath!
$ F3 X2 G+ k1 P* c' I) F7 X$ d8 I) Y/ k- P! U
要了解OVS如何工作,首先需要知道桥的概念:$ ]4 v" o# R1 c/ l, p% z
- v3 W5 x$ s$ R4 ^$ n$ U4 _
网桥也叫做桥接器,连接两个局域网的设备,网桥工作在数据链路层,将两个LAN连接,根据MAC地址来转发帧,可以看成一个“低层的路由器”(路由器工作在网络层,根据IP地质进行转发)。! P# m6 f7 P3 n" v( H- N
. u# u9 ^: ^) Q+ J. l# V+ T' W6 t
网桥的工作原理  t. f+ J( t& L$ }4 X
网桥处理包遵循以下几条规则:* P9 Q6 t- f/ y# @/ A9 U

: l4 c: W, I* T$ i在一个接口上接收到的包不会再往那个接口上发送此包。# g* G% W+ ]# P. S
每个接收到的包都要学习其源MAC地址。0 p; A) k$ A2 F; q# D
如果数据包是多播或者广播包(通过2层MAC地址确定)则要向接收端口以外的所有端口转发,如果上层协议感兴趣,则还会递交上层处理。
* A" L6 o& L6 a- W* q- A6 m* e$ q如果数据包的地址不能再CAM表中找到,则向接收端口以外的其他端口转发。
6 q1 c! O, e' I6 O! `) W- L如果CAM表中能找到,则转发给相应端口,如果发送和接收都是统一端口,则不发送。
- J5 c$ Q- b5 ]2 `/ @1 w0 G  k注意,网桥是以混杂模式工作的。关于网桥更多,请查阅相关资料。
# r0 S' V9 f2 z, e: Q' t: R1 W8 Z6 I$ E# W: d# {
OVS中的bridge
; e! ~3 J7 ?1 {. i6 E上面,说到,一个桥就是一个交换机。例如,在OVS中:
( }% j+ t6 B6 z& d/ ~
" r/ ]3 T3 E1 {6 P- Eroot@localhost:~# ovs-vsctl add-br br0& L- |$ M# m$ T8 G  Q
root@localhost:~# ifconfig br08 P! N, i( |) G( m
      br0    Link encap:Ethernet  HWaddr 1a:09:56:ea:0b:49  
) J; Q3 i9 D1 k7 _& g% c* ?      inet6 addr: fe80::1809:56ff:feea:b49/64 Scope:Link
6 {8 O9 F; H8 ^, ?" c; B      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  `. o* X  Q3 ]& f, X4 V! X! s      RX packets:1584 errors:0 dropped:0 overruns:0 frame:0
+ j# @! h6 U! M2 m8 ^      TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
+ R- ?: I! [. p3 B: `      collisions:0 txqueuelen:0 ! P; F. R1 z0 M. S- Y/ h
      RX bytes:316502 (316.5 KB)  TX bytes:468 (468.0 B)8 i0 [' x0 T' u5 _7 _
当我们创建了一个交换机(网桥)以后,此时网络功能不受影响,但是会产生一个虚拟网卡,名字就是网桥的名称(br-int),之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能。有了这个交换机以后,还需要为这个交换机增加端口(port),一个端口,就是一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了。
  V* k" u8 @9 M" [. M& Z: F3 R2 z: g( o
root@localhost:~# ovs-vsctl add-port br0 port, K- q% X; a6 D. B4 O  C
这里要特别注意,网卡加入网桥以后,要按照网桥的工作标准工作,那么加入的一个端口就必须是以混杂模式工作,工作在链路层,处理2层的帧,所以这个port就不需要配置IP了。(你没见过哪个交换的端口有IP的吧)% k8 P9 C% c8 W" q% i" B# p( c! S& S6 z
: r/ F/ i  F: ]( g' v  `
那么接下来你可能会问,通常的交换机不都是有一个管理接口,可以telnet到交换机上进行配置吧,那么在OVS中创建的虚拟交换机有木有这种呢,有的!上面既然创建交换机brname的时候产生了一个虚拟网口 br-int,那么,你给这个虚拟网卡配置了IP以后,就相当于给交换机的管理接口配置了IP,此时一个正常的虚拟交换机就搞定了。( u+ N& Y7 o' k

3 Q' `7 s! B+ p8 jroot@localhost:~# ip address add 192.168.1.1/24 dev br0
" r5 A1 z: b9 q最后,我们来看看一个br的具体信息:
2 o5 A  ]  }3 u1 w+ e% ^8 \
, G5 r6 ?7 ~& K* D9 G1 \% W. L; F9 ~root@localhost:~# ovs-vsctl show
! X4 e: k3 w& R8 S& w& Y5 p( ?/ }) `bc12c8d2-6900-42dd-9c1c-30e8ecb99a1b* w9 R8 G% X9 g, `8 F% w
Bridge "br0"
& n) B8 A5 [3 w+ f! G    Port "eth0"
& E: ?& Q& u2 [* t4 M9 i        Interface "eth0"
% X/ o- h3 x2 Q4 r- M, D2 Z$ ?    Port "br0"- }2 J+ O$ K7 q) H$ O
        Interface "br0") g8 S$ [6 v% l$ j" I
            type: internal
/ T  Z* ~9 t8 Z$ Xovs_version: "1.4.0+build0"5 d! i& q; @4 T) K; {# a0 `
首先,这里显示了一个名为br0的桥(交换机),这个交换机有两个接口,一个是eth0,一个是br0,上面说到,创建桥的时候会创建一个和桥名字一样的接口,并自动作为该桥的一个端口,那么这个虚拟接口的作用,一方面是可以作为交换机的管理端口,另一方面也是基于这个虚拟接口,实现了桥的功能。4 k! l" _0 ?* W" a8 @" p
5 h' T1 ]* v5 k% g* L3 }
#### OpenvSwitch的典型工作流程" @9 |  P5 q8 z! \) r" Y& M

" A. S( l9 z1 e这一部分以一个简单的例子,说明在虚拟化环境中OpenvSwitch的典型工作流程。* G6 B  [& A* d8 a

) z, E4 }2 ?6 n2 g前面已经说到,OVS主要是用来在虚拟化环境中。实现虚拟机之间通信以及一个虚拟机和外网之间通信,如下是一个典型的结构图:; d- d4 o/ W/ {# c' x) _3 Q

& U4 \: i9 P! h, g9 a& [那么,通常情况下的工作流程如下:2 y  t" i7 C5 K; q* h# g# f
# Q( M" Q* M1 j/ L) |7 |; p; j
logical_model$ i- Z$ E+ i" q3 {
% Z! y+ J1 Y; w' v8 U7 V, m( N
VM实例 instance 产生一个数据包并发送至实例内的虚拟网络接口 VNIC,图中就是 instance 中的 eth0., K% F8 T% w9 W; b$ o7 F
这个数据包会传送到物理机上的VNIC接口,如图就是vnet接口。
( y3 R5 l! A3 x, i8 ~7 e数据包从 vnet NIC 出来,到达桥(虚拟交换机) br100 上.* f" S( A2 E0 y! G
数据包经过交换机的处理,从物理节点上的物理接口发出,如图中物理机上的 eth0 .
* T% \/ e) T& T: Q. U& ?& f数据包从 eth0 出去的时候,是按照物理节点上的路由以及默认网关操作的,这个时候该数据包其实已经不受你的控制了。
& C# W+ L+ q4 ~+ t一般 L2 switch 连接 eth0 的这个口是一个 trunk 口, 因为虚拟机对应的 VNET 往往会设置 VLAN TAG, 可以通过对虚拟机对应的 vnet 打 VALN TAG 来控制虚拟机的网络广播域. 如果跑多个虚拟机的话, 多个虚拟机对应的 vnet 可以设置不同的 vlan tag, 那么这些虚拟机的数据包从 eth0(4)出去的时候, 会带上TAG标记. 这样也就必须是 trunk 口才行.
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-9 00:03 , Processed in 0.046530 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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