SDN技术实践.docx

上传人:b****3 文档编号:4794744 上传时间:2023-05-07 格式:DOCX 页数:32 大小:1.89MB
下载 相关 举报
SDN技术实践.docx_第1页
第1页 / 共32页
SDN技术实践.docx_第2页
第2页 / 共32页
SDN技术实践.docx_第3页
第3页 / 共32页
SDN技术实践.docx_第4页
第4页 / 共32页
SDN技术实践.docx_第5页
第5页 / 共32页
SDN技术实践.docx_第6页
第6页 / 共32页
SDN技术实践.docx_第7页
第7页 / 共32页
SDN技术实践.docx_第8页
第8页 / 共32页
SDN技术实践.docx_第9页
第9页 / 共32页
SDN技术实践.docx_第10页
第10页 / 共32页
SDN技术实践.docx_第11页
第11页 / 共32页
SDN技术实践.docx_第12页
第12页 / 共32页
SDN技术实践.docx_第13页
第13页 / 共32页
SDN技术实践.docx_第14页
第14页 / 共32页
SDN技术实践.docx_第15页
第15页 / 共32页
SDN技术实践.docx_第16页
第16页 / 共32页
SDN技术实践.docx_第17页
第17页 / 共32页
SDN技术实践.docx_第18页
第18页 / 共32页
SDN技术实践.docx_第19页
第19页 / 共32页
SDN技术实践.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

SDN技术实践.docx

《SDN技术实践.docx》由会员分享,可在线阅读,更多相关《SDN技术实践.docx(32页珍藏版)》请在冰点文库上搜索。

SDN技术实践.docx

SDN技术实践

SDN技术实践部分

SDN全名为(SoftwareDefinedNetwork)即软件定义网络,是现互联网中一种新型的网络创新架构,其核心技术OpenFlow通过网络设备控制面与数据面分离开来,从而实现网络流量的灵活控制,为网络及应用提供了良好的平台。

而Mininet是一个轻量级软件定义网络和测试平台;它采用轻量级的虚拟化技术使一个单一的系统看起来像一个完整的网络运行想过的内核系统和用户代码,也可简单理解为SDN网络系统中的一种基于进程虚拟化平台,它支持OpenFlow、OpenvSwith等各种协议,Mininet也可以模拟一个完整的网络主机、链接和交换机在同一台计算机上且有助于互动开发、测试和演示,尤其是那些使用OpenFlow和SDN技术;同时也可将此进程虚拟化的平台下代码迁移到真实的环境中。

Mininet是轻量级的软件定义网络系统平台,同时提供了对OpenFlow协议的支持。

本文主要介绍了Mininet的相关概念与特性,并列举的Mininet自定义网络及参数网络拓扑示例,以及相关重要执行文件的分析,帮助用户更好的理解与使用Mininet技术。

Mininet实现的特性

◆支持OpenFlow、OpenvSwitch等软定义网路部件

◆支持系统级的还原测试,支持复杂拓扑,自定义拓扑等

◆提供PythonAPI,方便多人协作开发

◆很好的硬件移植性与高扩展性

◆支持数千台主机的网络结构

v研究环境搭建

硬件支持:

PC*1台

操作系统:

windows7、Ubuntu

软件配置:

VMWareWorkstation11、Mininet、Openflow

本实验基于Ubuntu平台完成。

ØUbuntu安装与配置

1.打开虚拟主界面后,选择“创建新的虚拟机(Ctrl+N)”,出现如图所示界面,在这里我们选择“自定义”选项,然后单击下一步按钮。

图1

2.在这一步,我们选择默认设置,然后单击下一步按钮。

图2

3.如图所示,这一步要求选择安装客户机操作系统来源。

安装来源可以是在安装程序光盘上,也可以通过镜像文件安装,也可以选择在虚拟机创建完成后再行安装操纵系统。

在这我选择的是直接通过本地镜像文件安装。

图3

4.设置用户信息。

图3

5.选择虚拟机存储的路径。

图4

6.处理器配置。

图5

7.虚拟机的内存设置,一般选择默认设置即可。

图6

8.虚拟机的网络接入方式。

图7

9.选择I/O控制器类型。

图8

10.选择磁盘类型。

图9

11.磁盘选择。

图10

12.磁盘容量设置,一般选择默认设置即可。

图11

13.磁盘文件存储路径设置。

图20

14.虚拟机配置完成,单击“完成”准备开始创建。

图21

15.创建完成。

图22

ØMininet安装与测试

Mininet的安装方式比较简单通过Git源码和自带的安装脚本方式即可安装在Linux系统中,这里我采用了默认安装所有Mininet相关的相关套件,如:

OpenFlow、POX等工具会默认保存在当前用户的家目录。

具体安装过程如下图所示(标注部分为安装的具体命令):

1)正常启动虚拟机后,检测网络连接是否正常,如果正常,则继续操作,否则,重新检查网络配置,使其正常连通网络。

2)新建终端(Ctrl+Alt+N),然后输入“gitclonegit:

//

3)待上述下载安装完成后输入“cdmininet/util/”命令后回车,转到mininet下的util文件夹下。

4)输入“./install.sh-a”命令回车执行安装。

图23

5)下载安装完成后如下图所示,可以输入“ls”命令查看安装完成后安装目录下的文件。

图24

6)运行测试,输入“sudomn”命令执行测试过程。

图25

这个命令自带创建了一个OpenFlow交换机(S1),两台主机(h1、h2)。

ØFloodLight安装与配置

1)新建终端(Ctrl+Alt+N),然后输入“sudoapt-getinstallfloodlight”命令后回车,等待下载安装。

图26

2)待安装完成后,打开浏览器在地址栏输入“http:

//localhost:

8080/ui/index.html”登录FloodLight的WEB界面查看,如果正常进入FloodLight的WEB界面(图27),则说明FloodLight安装成功,否则,则需要重新安装。

图27

Ø拓扑结构分析

1.创建网络

Mininet支持自定义网络,在Mininet网络系统中直接输入sudomn命令,可以在此系统中创建单层的拓扑网络,从中默认创建了两台host和一个交换机,并且激活了控制器和交换机。

同时也可以通过命令net查看到链路情况。

示例:

zss@ubuntu:

~$sudomn

[sudo]passwordforzss:

***Creatingnetwork

***Addingcontroller

***Addinghosts:

h1h2

***Addingswitches:

s1

***Addinglinks:

(h1,s1)(h2,s1)

***Configuringhosts

h1h2

***Startingcontroller

***Starting1switches

s1

***StartingCLI:

mininet>

图28

参数配置:

图29

2.启用与关闭Web服务

在Mininet环境中可方便建立

一个Web服务器,从下面示例中可以看到从host1建立了一个Web服务器,并从另外一台Host主机想Web服务器获取HTTP请求。

mininet>h1python-mSimpleHTTPServer80&

mininet>h2wget-O-h1

--2015-04-3004:

59:

43--http:

//10.0.0.1/

Connectingto10.0.0.1:

80...connected.

HTTPrequestsent,awaitingresponse...200OK

Length:

1472(1.4K)[text/html]

Savingto:

‘STDOUT’

············

2015-04-3004:

59:

43(187MB/s)-writtentostdout[1472/1472]

mininet>h1kill%python

ServingHTTPon0.0.0.0port80...

10.0.0.2--[30/Apr/201504:

59:

43]"GET/HTTP/1.1"200-

图30

3.在Mininet网络系统上实现两主机上互连测试。

mininet>h1ping-c4h2

PING10.0.0.2(10.0.0.2)56(84)bytesofdata.

64bytesfrom10.0.0.2:

icmp_seq=1ttl=64time=53.2ms

64bytesfrom10.0.0.2:

icmp_seq=2ttl=64time=0.221ms

64bytesfrom10.0.0.2:

icmp_seq=3ttl=64time=0.143ms

64bytesfrom10.0.0.2:

icmp_seq=4ttl=64time=0.072ms

---10.0.0.2pingstatistics---

4packetstransmitted,4received,0%packetloss,time3001ms

rttmin/avg/max/mdev=0.072/13.425/53.266/23.002ms

4.查看节点连接信息。

mininet>net

h1h1-eth0:

s1-eth1

h2h2-eth0:

s1-eth2

s1lo:

s1-eth1:

h1-eth0s1-eth2:

h2-eth0

c0

mininet>h1ifconfig

h1-eth0Linkencap:

EthernetHWaddrde:

ca:

e0:

31:

fa:

aa

inetaddr:

10.0.0.1Bcast:

10.255.255.255Mask:

255.0.0.0

inet6addr:

fe80:

:

dcca:

e0ff:

fe31:

faaa/64Scope:

Link

UPBROADCASTRUNNINGMULTICASTMTU:

1500Metric:

1

RXpackets:

210errors:

0dropped:

24overruns:

0frame:

0

TXpackets:

14errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

1000

RXbytes:

33576(33.5KB)TXbytes:

1124(1.1KB)

loLinkencap:

LocalLoopback

inetaddr:

127.0.0.1Mask:

255.0.0.0

inet6addr:

:

:

1/128Scope:

Host

UPLOOPBACKRUNNINGMTU:

65536Metric:

1

RXpackets:

0errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

0errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

0

RXbytes:

0(0.0B)TXbytes:

0(0.0B)

mininet>h2ifconfig

h2-eth0Linkencap:

EthernetHWaddre2:

2f:

9b:

d5:

6c:

bb

inetaddr:

10.0.0.2Bcast:

10.255.255.255Mask:

255.0.0.0

inet6addr:

fe80:

:

e02f:

9bff:

fed5:

6cbb/64Scope:

Link

UPBROADCASTRUNNINGMULTICASTMTU:

1500Metric:

1

RXpackets:

215errors:

0dropped:

26overruns:

0frame:

0

TXpackets:

14errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

1000

RXbytes:

34701(34.7KB)TXbytes:

1124(1.1KB)

loLinkencap:

LocalLoopback

inetaddr:

127.0.0.1Mask:

255.0.0.0

inet6addr:

:

:

1/128Scope:

Host

UPLOOPBACKRUNNINGMTU:

65536Metric:

1

RXpackets:

0errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

0errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

0

RXbytes:

0(0.0B)TXbytes:

0(0.0B)

mininet>s1ifconfig

eth0Linkencap:

EthernetHWaddr00:

0c:

29:

dd:

97:

48

inetaddr:

192.168.176.129Bcast:

192.168.176.255Mask:

255.255.255.0

inet6addr:

fe80:

:

20c:

29ff:

fedd:

9748/64Scope:

Link

UPBROADCASTRUNNINGMULTICASTMTU:

1500Metric:

1

RXpackets:

912errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

973errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

1000

RXbytes:

183953(183.9KB)TXbytes:

79447(79.4KB)

loLinkencap:

LocalLoopback

inetaddr:

127.0.0.1Mask:

255.0.0.0

inet6addr:

:

:

1/128Scope:

Host

UPLOOPBACKRUNNINGMTU:

65536Metric:

1

RXpackets:

5282errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

5282errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

0

RXbytes:

532771(532.7KB)TXbytes:

532771(532.7KB)

s1Linkencap:

EthernetHWaddr32:

76:

61:

28:

b9:

4d

inet6addr:

fe80:

:

7021:

ecff:

fee8:

a3bf/64Scope:

Link

UPBROADCASTRUNNINGMTU:

1500Metric:

1

RXpackets:

15errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

8errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

0

RXbytes:

1158(1.1KB)TXbytes:

648(648.0B)

s1-eth1Linkencap:

EthernetHWaddrbe:

79:

24:

c4:

44:

b3

inet6addr:

fe80:

:

bc79:

24ff:

fec4:

44b3/64Scope:

Link

UPBROADCASTRUNNINGMULTICASTMTU:

1500Metric:

1

RXpackets:

14errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

218errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

1000

RXbytes:

1124(1.1KB)TXbytes:

34734(34.7KB)

s1-eth2Linkencap:

EthernetHWaddr62:

de:

07:

35:

50:

9a

inet6addr:

fe80:

:

60de:

7ff:

fe35:

509a/64Scope:

Link

UPBROADCASTRUNNINGMULTICASTMTU:

1500Metric:

1

RXpackets:

14errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

219errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

1000

RXbytes:

1124(1.1KB)TXbytes:

35280(35.2KB)

5.自定义拓扑结构。

Mininet支持自定义拓扑结构。

Mininet安装完成后,在mininet/custom目录下给出了一个软件自带的实例,在topo-2sw-2host.py文件中定义了一个mytopo,我们可以通过--topo选项来指定使用这一拓扑。

由于Mininet也支持参数化拓扑,通过Python代码也可以创建一个灵活的拓扑结构,也可根据自定义传递进去的参数进行配置,并且可重用到多个环境中,下面简短列出其代码的大致结构及含义。

"""Customtopologyexample

Twodirectlyconnectedswitchesplusahostforeachswitch:

host---switch---switch---host

Addingthe'topos'dictwithakey/valuepairtogenerateournewlydefined

topologyenablesonetopassin'--topo=mytopo'fromthecommandline.

"""

frommininet.topoimportTopo

classMyTopo(Topo):

"Simpletopologyexample."

def__init__(self):

"Createcustomtopo."//自定义拓扑结构

#Initializetopology

Topo.__init__(self)

#Addhostsandswitches

leftHost=self.addHost('h1')

rightHost=self.addHost('h2')

leftSwitch=self.addSwitch('s3')

rightSwitch=self.addSwitch('s4')

#Addlinks

self.addLink(leftHost,leftSwitch)

self.addLink(leftSwitch,rightSwitch)

self.addLink(rightSwitch,rightHost)

 

topos={'mytopo':

(lambda:

MyTopo())}

6.命名空间(NameSpace)

通常情况下,主机界面有用独立的名字空间namespace,而控制节点跟交换节点都在根名字空间(rootnamespace)中。

如果想要让所有节点拥有各自的名字空间,需要添加--innamespace参数,即执行:

mn--innamespace。

zss@ubuntu:

~$sudomn--innamespace--switchuser

***Creatingnetwork

***Addingcontroller

***Addinghosts:

h1h2

***Addingswitches:

s1

***Addinglinks:

(h1,s1)(h2,s1)

c0<->s1

***Testingcontrolnetwork

s1->c0

c0->s1

***Results:

0%dropped(2/2received)

***Configuringhosts

h1h2

***Startingcontroller

c0

***Starting1switches

s1

***StartingCLI:

7.dpctl命令实践

dpctl程序是一个命令行工具用来检测和管理OpenFlow数据通路,它能够显示当前的状态数据通路,包括功能配置和表中的条目,以及合适使用OpenFlow的内核模块,可以用来添加,删除,修改和监视datapaths。

具体示例如下:

1)查看交换机端口信息基本情况(TCP端口6634是默认交换机监听端口)。

zss@ubuntu:

~$sudodpctlshowtcp:

127.0.0.1:

6634

features_reply(xid=0x97dfb336):

ver:

0x1,dpid:

1

n_tables:

254,n_buffers:

256

features:

capabilities:

0xc7,actions:

0xfff

1(s1-eth1):

addr:

62:

23:

67:

e9:

f1:

9a,config:

0,state:

0

current:

10GB-FDCOPPER

2(s1-eth2):

addr:

6e:

16:

94:

6c:

29:

d4,config:

0,state:

0

current:

10GB-FDCOPPER

LOCAL(s1):

addr:

8e:

5d:

71:

f9:

da:

44,config:

0,state:

0

get_config_reply(xid=0xd9df1b45):

miss_send_len=0

2)查看流表信息:

zss@ubuntu:

~$dpctldump-flowstcp:

127.0.0.1:

6634

stats_reply(xid=0x3c7e94de):

flags=nonetype=1(flow)

不难看出,此时流表为空,执行h1pingh2无法得到响应。

因此我们需要通过dpctl手动添加流表项,实现转发。

手动添加流表项:

zss@ubuntu:

~$dpctladd-flowtcp:

127.0.0.1:

6634in_port=1,actions=output:

2

zss@ubuntu:

~$dpctladd-flowtcp:

127.0.0.1:

6634in_port=2,actions=output:

1

此时查看流表可以看到新的转发信息,同时可以在h1和h2之间可以相互连通。

zss@ubuntu:

~$dpctldump-flowstcp:

127.0.0.1:

6634

stats_reply(xid=0xd697e96b):

flags=nonetype=1(flow)

cookie=0,duration_sec=43s,duration_nsec=395000000s,table_id=0,priority=32768,n_packets=0,n_bytes=0,idle_timeout=60,hard_timeout=0,in_port=1,actions=output:

2

cookie=0,duration_sec=15s,duration_nsec=321000000s,table_id=0,priority=32768,n_packets=0,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2