找回密码
 注册
查看: 817|回复: 1

Docker网络部署OVS网络

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-6-11 11:22:23 | 显示全部楼层 |阅读模式
OVS介绍
什么是OpenVSwich?OpenvSwich:开放虚拟交换标准,是一种基于开源Apache2.0许可证的多层软件交换机,专门管理多租赁云计算网络环境,支持KVM、Xen等虚拟化技术。
0 k7 z( \6 n2 \3 v; G$ i支持以下功能:
- A6 x! s0 Y! W/ h1 d+ j) s/ O1 D+ R

- j0 K. K8 V# K) f1.支持标准802.1Q VLAN模块的Trunk和access端口模式;- V2 j. S4 Z1 b+ c: k$ C0 j

5 t: F2 W' ?( e; B
9 p8 O% \* q8 z7 P* }: O
2.QoS(Quality of Service)配置,及管理;
9 l& i( H, e0 M& N( ?$ v+ Q: b( f) H9 ^% L

4 ^2 `( a+ d$ Z8 a2 @6 V, q3.支持OpenFlow协议;" K2 L; s! d/ Z

* c2 F1 R  I7 i/ h4 \& v5 o

+ m4 M( a9 }0 W/ `2 z  G8 \4.支持GRE、VXLAN、STT和LISP隧道;, Q* R& S5 S, C2 v' s

# q3 V7 s& l+ Q- M/ u' E; G
) T) \( O. Q# d$ m: I: |
5.具有C和Python接口配置数据库;
6 c* J* k! w8 g2 d6 s  h: y, d& j
+ ~1 n$ p* o/ W$ w: b0 i  i
7 `4 U6 k1 O% [5 H
6.支持内核态和用户态的转发引擎设置;; Z8 G* Q, r% w
+ \, S& b% @# N0 t' U+ z
4 ~7 _& k0 v( M+ V# e3 J
7.支持流量控制及监控。
2 Q% @  ]; g" J: Y) x4 F
% r) B# |+ m$ g' _9 a# A
$ D1 Z$ o7 u0 p8 N& X
主要组成部分:ovs-vswitchd 一个实现交换机的守护程序5 \0 W8 w/ v- e; [; S( _. e
- C' l& {4 h* ?0 h

2 J- o( [+ W( F: |$ v1 Movsdb-server 一个轻量级数据库,
: o' w. J1 G1 r2 n: U: }' |; J5 e! X$ g2 a4 `1 p# X* K# F9 h

) |7 V% M3 d. |. N6 p; xovs-vswitchd查询以获取其配置
7 N- K" v: h3 m9 m: B$ o5 y8 ^9 l( x

( a0 q8 [# H' A$ A4 [% J: f( covs-dpctl 用于配置交换机的内核模块工具4 t, X6 j1 L0 `& h

$ N6 @: B" M& s0 _4 `7 p' z. _  x

' ^: B4 J+ |3 Z4 Movs-vsctl 用于查看和更新o% r* h& S5 L" E
. C$ p! a7 T8 N: w3 X; ^9 c2 F/ S: K
' v, |: T9 N  ^
vs-vswitchd的配置工具! b8 @$ [' ?9 B5 _5 G( |" u

3 ~4 d/ n9 _9 ]/ s/ e4 t8 ~
' a0 _& B$ I* g2 g! W' r" O' v
ovs-appctl 一个向运行OVS守护程序发送命令的工具还提供了openflow的工具:( G% [; p  X% t' @1 a
/ ]! Y9 H- J# ^/ T; L5 Z5 R/ ]
9 q  f1 G% @! b" j1 O/ R
ovs-ofctl 用于查看和控制OpenFlow交换机和控制器ovs-pki 用于创建和管理公钥ovs-tcpundump 解析openflow消息
# h4 A  ]' h% P; e% N( V) {# ?6 B1 b: ~; w; N9 U5 T6 n% V! @
  安装前可以使用命令docker network rm 删除无关的网络   
  安装部署OVS并建立GRE隧道
  节点1:192.168.100.128 容器网段:172.168.1.0/24
  节点2:192.168.100.129 容器网段:172.168.2.0/24
  修改容器的默认网段需要修改配置文件 不能是172.168.1.0/24
, Y0 E' ?% V: g& s1 A" d( d
  安装OVS
apt-get install openvswitch-switch bridge-utils
4 q8 v9 D8 d3 Y8 K0 J  L
  安装完成会以进程的方式启动两个进程一个虚拟交换机一个轻量级数据库
8 D4 m; u9 r( o- N
  创建网桥并激活
ovs-vsctl add-br br0ip link set dev br0 up; ?3 J4 Y; h/ Y6 X' V  x
  .将gre0虚拟接口加入网桥br0,并设置接口类型和对端IP地址(远程IP指定对端)
ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.100.129) u. J# R; u- L2 l2 X
  添加docker0网桥到OVS网桥br0
brctl addif docker0 br07 A0 j% U, Z  |$ i% P
  查看网桥信息
ovs-vsctl show
( j7 t2 v: l+ b9 x3 w! @
: V. N) x2 ^) }0 Sc0cdc0b1-5a93-5a3e-aaf7-6096abc32a8d
$ `& J7 ]' x% F8 T5 `0 \) _& D" p* [9 |
2 t$ A6 z3 m0 s8 R5 u! j- b
   Bridge "br0"        , ^2 }( C* z. P
7 l, [) q9 N& Q% G

+ C( p( ~7 |, @8 y$ H% @! p   Port "br0"            8 u% W) n# L  P
& t" o  e/ E9 n4 |& i$ F: D6 g8 F

' M7 K" l; q# [" |Interface "br0"            
' K( \5 |# z3 \2 }! C8 ^! h0 ^9 Y7 t, T" t1 d  G
- A4 |/ Z( C* v+ N# c/ F/ R
    type: internal     
! N! f- E: D+ u- c3 M  F
$ z  a2 E& p1 L
* ^, B, n6 \( C( ?1 k, v0 ]9 b4 T
    Port "gre0"           0 A" R+ t' _  `$ G/ Y  k  o
3 g% W$ s4 q3 U' R

/ D& L4 T  y2 |, l/ G' S0 O    Interface "gre0"               3 ^2 u5 F0 i( N0 y* F
8 j2 I3 W4 P1 L3 s% f. {" [
* o8 s+ u" x! r
     type: gre                * n+ ~0 |$ d" K0 s
/ e$ j/ e4 t7 N

; V4 L2 M& o3 _    options: {remote_ip="192.168.100.129"}   
; Q7 T, R/ Z. P. t! f* J# o: t9 P* Z8 c, b* l9 M

  u, I$ p7 d6 C" H! s& qovs_version: "2.9.0"
9 I% p  o: `. I4 k/ f: A3 M
" @( S2 i* `* k- [9 F6 x8 E1 b
  在节点2执行操作
apt-get install openvswitch-switch bridge-utils  & u1 w& v# T" b+ I0 C
1 `6 {' t6 D8 v" \1 O+ N

, M( F) i) N& L# \; e" }ps -ef|grep open5 E" t  d- c$ r# j+ z) N/ E

2 L0 V0 m! D1 Y6 }( {9 G

% y) t3 p5 z) r& @( ^& F+ h9 I: e' Jovs-vsctl add-br br0
% x1 I3 O$ d$ M7 N7 d' q; g0 v
! j8 v. \& S; Q  ]

3 U" L6 I  J4 ~  @ip link set dev br0 up
5 f( l7 Z+ M* T/ m1 t
& A! r  o$ }. w4 d

- {5 W4 x8 S2 Z% ^% z% h) M- oovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.100.128. A( ?1 [$ G/ G& ~
. t/ A3 n9 d. ~8 g
! [" s( u4 P( Q( ^: t# |3 }' Z& i
brctl addif docker0 br0. B8 a3 x; W0 T6 @* j* O9 {% O
$ W. v7 d$ A5 v; D8 y
- g& f- U* G2 S7 f; v1 B
ovs-vsctl show
+ @7 p/ r1 ^  i( t* m$ o( e8 A. M/ n6 x2 _7 F& y$ U- Y3 N" ], i
$ v! u6 a5 f( b7 s
  添加静态路由两个节点均操作
ip route add 172.168.0.0/16 dev docker07 [$ s5 o2 j7 J
  创建容器测试互通
docker run -it busybox, N5 {* k0 B% i  U+ H( Q% u/ j/ }
  其中节点1的ip为172.168.1.2 节点2的ip为172.168.2.2 测试是相通的

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-6-11 21:59:43 | 显示全部楼层
二、构建步骤
* T8 U1 f8 w" Z; h" Q: H! J(1)创建两个未配置网络的docker,命令如下。7 T- V  T9 q. `$ f6 g1 y
# 创建Docker01
, @9 d: Y, I+ \: Ldocker run -it --name host1 --network none ymumu/ryu:0.1 /bin/bash: @( L6 G. Z; r, m- c
# 创建Docker023 \) e3 w+ Q5 Z9 V
docker run -it --name host2 --network none ymumu/ryu:0.1 /bin/bash% I5 v. U* y* \4 z/ u  F
(2)安装ovs-docker
- X2 w6 l0 G3 X/ Mwget http://github.com/openvswitch/ovs/raw/master/utilities/ovs-docker, R; d* U0 h: z- n
chmod a+x ovs-docker4 ^0 T' H* D$ G7 X1 Y" @# t
(3)新建ovs,并关联两个容器主机,并设置ip,网关等,命令如下。
4 `5 M  }1 J+ _: n# 新建网桥ovs7 ?/ M. ^. X! ?9 R* w+ L) i
ovs-vsctl add-br ovs8 x4 I" G8 ?& X2 R. P$ u( k: E+ ~
# 容器关联网桥ovs, N% o" Q! X  A" y" z' b% L2 B
./ovs-docker add-port ovs eth0-ovs host1 --ipaddress=10.0.2.2/24 --gateway=10.0.2.1. q# L2 p4 ~. y; D' G4 I
./ovs-docker add-port ovs eth0-ovs host2 --ipaddress=10.0.2.3/24 --gateway=10.0.2.1
9 x- r: [( S  W# q(4)先自定义网卡,设置ip为192.168.2.2/24,然后创建一个docker作为ryu控制器,命令如下》7 O( a* R5 D) x3 _
docker network create --subnet 192.168.2.0/24 --gateway 192.168.2.1 ryu-net# B; B2 c8 A, e2 a& ^( ]4 h9 Q% y
docker run -it --name ryu --network ryu-net ymumu/ryu:0.1 /bin/bash% Q; |9 Y8 L. F- O( h
(5)接下来,ovs添加控制器ryu,命令如下。. t" X! u5 q6 E9 u  ~0 n
ovs-vsctl set-controller ovs tcp:192.168.2.2:66332 O1 U$ E) D1 f
设置完成后,ovs如下:! v" m- g& x2 C0 D& a
) C5 ~( X8 o8 y9 |
三、实验验证
+ P8 m# G( l* i2 G5 w0 H# {# I此时,SDN Topo构建完成,可以实现SDN网络topo的实验,进入ryu docker中,开启ryu程序,命令如下。: g. i* X. P2 S% e1 r
root@afdf2ee2f1:/home# cd ryu, }" O7 w, U' \0 D, ?, w# e; O
root@afdf2ee2f1:/home/ryu# cd ryu  J8 r' A& k; w6 P  I
root@afdf2ee2f1:/home/ryu/ryu# cd app
9 z) N0 q, i- a# r' G: O0 `root@afdf2ee2f1:/home/ryu/ryu/app# ryu-manager simple_switch_13.py
7 O6 t! [! I5 f" j 此时,host1和host2之间就可以正常通信了,如下。
: @, `! V3 P" m7 |( k
  V  d, g4 z2 G
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:04 , Processed in 0.016746 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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