将设为首页浏览此站
开启辅助访问 天气与日历 收藏本站联系我们切换到窄版

易陆发现论坛

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

Docker网络部署OVS网络

[复制链接]
发表于 2022-6-11 11:22:23 | 显示全部楼层 |阅读模式

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

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

x
OVS介绍
什么是OpenVSwich?OpenvSwich:开放虚拟交换标准,是一种基于开源Apache2.0许可证的多层软件交换机,专门管理多租赁云计算网络环境,支持KVM、Xen等虚拟化技术。+ I$ M, P8 O# L& O9 D4 R
支持以下功能:, ^! ^3 @# R; d& H

, K9 T. n% g7 x: T$ p9 a' v2 p

4 s# A- D* g+ D; x! m* P4 h, C( F1.支持标准802.1Q VLAN模块的Trunk和access端口模式;8 O4 d7 q& u. s3 b
5 j9 I; A  b' J- \1 V
- l& q6 n# B4 R& l  Y: H5 K) J3 q
2.QoS(Quality of Service)配置,及管理;3 l- U6 Q' e; ^( j

* T2 k1 N7 |" ?# P8 S% ]
7 T  \6 Q5 c/ I9 k9 f
3.支持OpenFlow协议;
# b4 n8 {0 F; e( o  z
7 J# ]3 `( S$ E. r

: R2 A6 @( z& R1 [4.支持GRE、VXLAN、STT和LISP隧道;0 W+ s! l# S5 f- |2 u

" k( O' _  q- {5 r# D

5 K9 R: I' O' ]5.具有C和Python接口配置数据库;$ f9 G) ?' S9 k8 r6 l+ S
# C( ^3 ^) s$ o3 Y/ u7 |: m6 w7 \
' {; v; G' d0 S, U
6.支持内核态和用户态的转发引擎设置;3 p# B6 m5 z! p! a  w& R

8 r6 H" D; j- N& Q2 Z
. }, s8 J: c5 b0 t, G+ U
7.支持流量控制及监控。
7 r5 K8 ?4 O1 A$ M; Q
0 _% R, R: R, j

, ^+ h! h3 u& F$ ~主要组成部分:ovs-vswitchd 一个实现交换机的守护程序
$ f+ B2 n: s: x3 ~
, D& P& x! c& n3 P* {
* ^6 E5 Q- Y5 V9 a- {4 Z+ X
ovsdb-server 一个轻量级数据库,# R9 Z4 F8 ?6 ?: `
3 T& S' y9 c& {; v7 @

# m6 C: k9 C2 o" ~3 ~3 Z! lovs-vswitchd查询以获取其配置
+ p4 ~0 h) O" P
, q. c* X- K+ R7 Q! T3 i

% r1 ~* o! i; a" w+ aovs-dpctl 用于配置交换机的内核模块工具
7 I3 t# a. c. a% K) `
) I4 m- a  a/ w  b
& s7 h- j: O8 z+ n& m; S8 b1 |
ovs-vsctl 用于查看和更新o
/ D* S  @5 F& O1 D9 w; U9 e
- {& T. m: |) y+ N' J' o# n
6 W+ k9 u& w) j! f9 z* G- [: j
vs-vswitchd的配置工具
9 [# C3 N0 ]( D; d  i$ _
1 {7 Y- o( r- M1 E% k

2 }0 c$ [0 `# ^* d) v2 {ovs-appctl 一个向运行OVS守护程序发送命令的工具还提供了openflow的工具:: e5 P9 Z9 |) m
& W8 D, \$ m" S. ?# i' m2 D
/ q9 p, k6 n) i, l0 x9 }2 O
ovs-ofctl 用于查看和控制OpenFlow交换机和控制器ovs-pki 用于创建和管理公钥ovs-tcpundump 解析openflow消息
# m& m. _) I# j/ ~8 }: r, d4 ?3 ?' g+ y5 A$ q0 Y8 }. }
  安装前可以使用命令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

( A2 S" E, j/ T0 Q                               
登录/注册后可看大图

3 D0 N. V( E# u9 y, b. T4 x% k
  安装OVS
apt-get install openvswitch-switch bridge-utils4 R4 f& _+ W: I
  安装完成会以进程的方式启动两个进程一个虚拟交换机一个轻量级数据库

$ r& X9 T) |4 \$ f
. E" r7 R# a7 W
                               
登录/注册后可看大图
  创建网桥并激活
ovs-vsctl add-br br0ip link set dev br0 up
2 {& m" e' R( Z# x; G5 M
  .将gre0虚拟接口加入网桥br0,并设置接口类型和对端IP地址(远程IP指定对端)
ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.100.129
$ d; M5 ^  I( z8 U
  添加docker0网桥到OVS网桥br0
brctl addif docker0 br0
; [, b( @( d% T5 O" v+ U
  查看网桥信息
ovs-vsctl show/ ?3 x, Y9 @- J' w( Q3 h7 P$ ~
3 y% L  ]/ }. P. z" B! o
c0cdc0b1-5a93-5a3e-aaf7-6096abc32a8d
& Z  s3 q! c9 Y* W9 `) T: S" e: r2 U' r/ c, {6 h  x

7 U: X4 @1 M4 f  h7 A7 ~7 g   Bridge "br0"        / K: B- _& }- i7 n  L& O

5 ?# t8 D5 A# B, K( J) [" D

" V# F9 n, B; ]0 b6 d   Port "br0"            & J6 Y2 Y& H9 [" w& Y/ k* Q# J
6 C# k* `9 i& ^0 s" }
: c+ B& D' ^3 t  N9 b
Interface "br0"            
/ Y1 F1 ?4 v8 [0 Y! n6 ?3 J$ v5 Q; D' W7 ?5 x
; |; Z3 D1 m: T2 A+ Q' I
4 G  ^- y7 x4 N% S; D
    type: internal     9 o8 n8 _6 X+ b) M" d

; G& l& p1 v  |" l# Q

' L/ [% U: E1 r! E% G    Port "gre0"           . S$ @" R8 n. c3 I; L/ _& o/ h

3 F1 n% B  U7 }( V' f8 {
- X- ~* [; p0 ^+ }/ X. o- D( O
    Interface "gre0"               $ [6 {! i! i9 {8 n% s

. x& X4 ?8 t! h' {( P' p

" t% N4 m+ H6 }) M     type: gre               
, ^: z' j( n  T7 v" @0 a- i) q
9 L2 F& a# M7 l# W; h

. J0 a9 N' r: ?: M    options: {remote_ip="192.168.100.129"}   
/ K: b9 ?3 P8 J/ c2 c% h) X; U+ l$ V( `/ Z; m( F: I! W2 Y

) O( t  ^% {! v: n# e! zovs_version: "2.9.0"  L3 y. h# N) Z. K! v" m/ T& K
2 b. s$ F' i" h" C$ }. J
  在节点2执行操作
apt-get install openvswitch-switch bridge-utils  
( M" p& l: g0 B- x2 _/ V9 d: y7 J) Q8 N. S

* |7 n# W( C( y9 ]* o9 F( Lps -ef|grep open  v: ?5 z9 w/ d( Y. i6 P) E
& \. a0 `: j9 ~4 i+ Y6 M6 s& b  P
3 ~8 S  D" B8 ~2 H+ X) W
ovs-vsctl add-br br03 @: O: D/ j8 E4 R; N- V5 t
4 D0 p0 i) X$ ^8 ?5 O

. w) r: T6 S# F4 `; Xip link set dev br0 up: l* R# u& \, f" I5 ]; o0 A1 l" |

* r$ }3 W: ?  w( o
5 R- B8 T( N& Y9 c2 E2 X& z
ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.100.128, @2 _0 T# b. ^0 E) m9 n
! _8 Q/ M3 Q  @. q

9 h5 d1 H' Q1 ^! V! s. ]7 gbrctl addif docker0 br0
! f% W% l) C: i1 J
$ B4 D% s! V" ^' N1 C

  H" n7 ?0 I; sovs-vsctl show5 C5 i1 W1 g( m# ?# |

" @! U7 y) `8 G2 H/ K& i5 b% g7 w; E* T4 `( e9 v2 c! I
  添加静态路由两个节点均操作
ip route add 172.168.0.0/16 dev docker0
0 x! S5 R( ^. x3 O$ i1 f$ \0 f
  创建容器测试互通
docker run -it busybox" b: J" T5 r7 R" R! m
  其中节点1的ip为172.168.1.2 节点2的ip为172.168.2.2 测试是相通的
 楼主| 发表于 2022-6-11 21:59:43 | 显示全部楼层
二、构建步骤
/ X& I, o& X, O/ R, Y5 H) [5 @(1)创建两个未配置网络的docker,命令如下。
* n7 T2 I2 [' c( D: p% e4 u# 创建Docker01
7 i( N3 g5 Z( l" e$ q3 Bdocker run -it --name host1 --network none ymumu/ryu:0.1 /bin/bash
+ i4 n7 |! E9 W. v# 创建Docker02. y1 M; b! `2 ^2 |* T
docker run -it --name host2 --network none ymumu/ryu:0.1 /bin/bash9 w0 o8 _2 i0 e! H; @
(2)安装ovs-docker
. \' {% S  x+ c6 \5 wwget http://github.com/openvswitch/ovs/raw/master/utilities/ovs-docker: c% y! N# L$ {3 B3 h; p. r" W
chmod a+x ovs-docker
8 y: y  [0 p" n7 p(3)新建ovs,并关联两个容器主机,并设置ip,网关等,命令如下。
4 q8 Q1 }; U1 Z/ z) U$ [# |6 F# 新建网桥ovs- @  f' Q+ _1 e
ovs-vsctl add-br ovs8 W8 L, l1 k1 K# U
# 容器关联网桥ovs8 E  L7 @; a; M3 F) N5 a- d
./ovs-docker add-port ovs eth0-ovs host1 --ipaddress=10.0.2.2/24 --gateway=10.0.2.1
9 x. O5 Q* {2 z./ovs-docker add-port ovs eth0-ovs host2 --ipaddress=10.0.2.3/24 --gateway=10.0.2.1
, V0 P+ a( T* h) E(4)先自定义网卡,设置ip为192.168.2.2/24,然后创建一个docker作为ryu控制器,命令如下》
" y- o; b$ J2 o# m2 n9 Z" adocker network create --subnet 192.168.2.0/24 --gateway 192.168.2.1 ryu-net
3 [* r, s6 m/ n1 gdocker run -it --name ryu --network ryu-net ymumu/ryu:0.1 /bin/bash
$ ~1 j" M6 S3 j0 o(5)接下来,ovs添加控制器ryu,命令如下。
) P+ L* o% L. o) ?- O6 y0 aovs-vsctl set-controller ovs tcp:192.168.2.2:6633
: k$ _8 s, p' R. }8 W  B设置完成后,ovs如下:- Q0 H6 {! d3 U8 q* Q/ r, M( W
7 [2 F7 C7 w. r: Z
三、实验验证
% h0 L( `% z* W8 F3 `此时,SDN Topo构建完成,可以实现SDN网络topo的实验,进入ryu docker中,开启ryu程序,命令如下。
5 F0 y- A- B+ m; Z. ]root@afdf2ee2f1:/home# cd ryu
; P' C* \: q9 r. Z+ aroot@afdf2ee2f1:/home/ryu# cd ryu
. r+ K# [( W* Croot@afdf2ee2f1:/home/ryu/ryu# cd app* U* d/ C0 |% U' F# ]8 u( `% [) l# c
root@afdf2ee2f1:/home/ryu/ryu/app# ryu-manager simple_switch_13.py
, j: l( c" S) b$ K( |2 f 此时,host1和host2之间就可以正常通信了,如下。
5 `. \8 L$ g# N2 s' j, f
3 D7 K# U8 A$ W7 S* t3 ~- T2 B
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

如有购买积分卡请联系497906712

QQ|返回首页|Archiver|手机版|小黑屋|易陆发现 点击这里给我发消息

GMT+8, 2022-7-4 10:06 , Processed in 0.043295 second(s), 21 queries .

Powered by LR.LINUX.cloud bbs168x X3.2 Licensed

© 2012-2022 Comsenz Inc.

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