爱学习之SDN入门学习

SDN入门学习

一 SDN概念理解

软件定义网络SDN(Software Defined Network)起源于2006年斯坦福大学的Clean State研究课题。2009年,Mckeown教授正式提出了SDN概念。

SDN是一种网络设计理念,或者一种推倒重来的设计思想。只要网络硬件可以集中式软件管理,可编程化,控制转发层面分开,则可以认为这个网络是一个SDN网络。所以说,SDN并不是一个具体的技术,不是一个具体的协议,而是一个思想、一个框架。狭义的SDN是指的“软件定义网络”,广义的SDN的概念还延伸出了:软件定义安全、软件定义存储等等。可以说,SDN是一个浪潮,席卷整个IT产业。

SDN时代,网络工程师/网络运维/IT运维人员对网络部署的方式,需要从“作坊式”的“手码”配置,慢慢变成采用脚本语言/编程语言等方式对网络进行“编程式”部署,更快更好的响应业务需求。

需要了解的一些概念:
OpenFlow是属于数据链路层的一种网络通信协议,能够控制网络设备的转发平面(forwarding plane),改变网络数据包所走的网络路径。OpenFlow网络由OpenFlowswitch(OpenFlow交换机)、FlowVisor(网络虚拟化层)和Controller(控制器)三部分组成。OpenFlow交换机进行数据层的转发;FlowVisor对网络进行虚拟化,将物理网络划分成多个逻辑网络,从而实现虚网划分,它为管理员提供了通过定义流规则,而不是调整路由器和交换机配置的方式来管理网络,是openflow交换机和控制器之间的一个透明代理;Controller对网络进行集中控制管理,实现控制层的功能

NFV(network function virtulization,网络功能虚拟化)是指一种操作框架,目的是为了将部署在COTS硬件上的、在虚拟基础架构中的VNF软件设备编排和自动化起来,然后进行VNF设备的全生命周期管理。VNF(virtualized network function)通常是指路由器、防火墙、负载均衡等网络设备的软件化。大多数时候,VNF是作为虚机被部署在基于Linux命令行KVM虚拟机上,或者部署在基于VMware vSphere hypervisor的商用现成(COTS)的硬件上。PNF(physical network function,物理网络功能)是指在专用硬件上的传统网络设备。CNF(cloud-native network function,云原生网络功能)是指容器化的VNF和可以成为微服务中的容器网络和服务网格。欧洲电信标准化协会(ETSI)和Linux基金会(LF)都在积极地开发和培育NFV框架的参考架构和标准体系。ETSI管理下的OSM(Open Source MANO)和LF管理下的ONAP(Open Network Automation Platform)是目前由服务运营商和网络厂商们所支持的、最重要的开源NFV项目。在ETSI NFV架构中,NFV MANO提供核心操作功能,并由四个部分组成:NFV编排器(VNF Orchestrator)、VNF管理器(VNF Manager)、虚拟化基础设施管理器(VI Manager,Virtualized Infrastructure Manager)以及这些功能模块与其他操作系统之间的互通。

NFV框架示意图如下所示:

图片[1]-爱学习之SDN入门学习-命令提示符

二 SDN组织

ONF:Open Networking Foundation 开放网络联盟,2011年成立,是最早的SDN组织,创始成员主要是Google、Facebook、微软等互联网成员,旨在推动SDN标准化,制定并发布Openflow技术标准。

ODL:Opendaylight成立于2013年4月,由Cisco、IBM、juniper、Vmware、Intel等发起,成员主要是网络厂商,旨在打造一个开源的SDN平台框架,提供开源的网络操作系统,目前核心就是做了行业默认标准的Opendaylight控制器。

ONOS:Open Network Operating System 开放网络操作系统,2014年11月成立,创始成员主要是AT&T、NTT、华为等,成员主要是运营商,旨在为运营商用户提供一个开源的网络控制器,目前核心就是做了面向运营商的ONOS控制器,与ODL竞争。

NFV:Network Function Virtualization网络功能虚拟化,成立于2012年10月,有AT&T、英国电信、德国电信、中国移动等成员提出,成员主要来自运营商,该组织致力于IT设备虚拟化,以提高运营能力降低运维成本等。

SDN组织发展过程,由互联网成员发起、网络厂商排斥、运营商观望,变成现在互联网成员积极探索协议开发、网络厂商主动拥抱开发SDN控制器、运营商逐步介入参与研究。

三 SDN案例

SDN网络的标杆,最成功案例google B4网络,2010年开始实施,2012年初步完成,该网络架构充分利用了SDN的核心思想,引入openflow交换机,采用分布式控制器架构,将流量环境密集复杂的数据中心之间的WAN链路利用率从30%提高接近100%。该项目谷歌充分发挥了极强的软件能力,使用自研的交换机为物理基础,架设在数据中心出口搭建起SDN平台,然后将流量引入SDN平台进行集中管理(旧的TE平台仍然保留,如果出现SDN平台出现问题,流量则切换到旧平台),展示出了全球数据中心流量拓扑,进行集中管控,相比SDN概念,该工程同时也是一个庞大的流量工程。谷歌的成功案例使得到当前2020年SD-WAN依旧是网络潮流方向。

SDN发展初期,ONF过于理想化态度,试图推翻所有网络协议的导致走了很多弯路。现阶段ONF开始注重于OpenFlow协议的研发;网络厂商主动拥抱SDN理念,关注用户需求,逐步开放IT设备接口,研发SDN控制器;

IEEE、IEIF、SDN等标准组织去除了与OpenFlow的必然联系,扩展出了SDN广义概念,泛指基于开发接口实现软件可编程的各种基础网络架构,进而将具备控制转发分离、逻辑集中控制、开放API3个基本特征的网络。

四 SDN测试环境

为了加深SDN认知,搭建一套SDN测试环境,了解Openflow+ODL一些基本功能。

基于Ubuntu+Mininet+Opendaylight的SDN测试环境。

一、安装的操作系统版本是16.04.1-Ubuntu 64位

二、安装mininet

参考Mininet官方:mininet.org/download/

选择源码安装mininet:
1)首先安装git

#apt-get update

#apt-get install git

2)获得mininet的源码

#git clone git://github.com/mininet/mini

3)打开mininet文件夹,选择其中一个版本安装

#cd mininet

#git tag #查看可用版本

#git checkout -b 2.3.0d6 #选择一个2.3.0d6版本

4)开始安装

#cd util #进入mininet里的util文件夹

#install.sh –a #选择全部安装

5)测试

#mn –test pingall

图片[2]-爱学习之SDN入门学习-命令提示符

安装成功。

三、安装opendaylight

ODL官网https://www.opendaylight.org,我们选择Carbon版本进行安装测试。ODL的karaf环境运行在java上,选择java version “1.8.0_261″。目前最新的ODL版本Magnesium需要安装java11。

1)下载ODL(Carbon)

#wget nexus.opendaylight.org/

2)解压压缩包

#tar –zxvf distribution-karaf-0.6.4-Carbon.tar.gz

3)修改一些参数

#cd distribution-karaf-0.6.4-Carbon/etc

#vim org.apache.karaf.management.cfg

修改:

rmiRegistryHost=127.0.0.1

rmiServerHost = 127.0.0.1

4)进入karaf,安装一些功能组件

#cd distribution-karaf-0.6.4-Carbon/bin

#./karaf

图片[3]-爱学习之SDN入门学习-命令提示符

按顺序安装以下功能组件

feature:install odl-testconf

feature:install odl-l2switch-switch-ui

feature:install odl-mdsal-apidocs

feature:install odl-dluxapps-applications

5)通过Web界面进入opendaylight

打开浏览器,输入网址:http://<yourMachineIP>:8181/index.html

用户名和密码都是admin

图片[4]-爱学习之SDN入门学习-命令提示符

四、通过python自定义网络拓扑配置,关联ODL。

Python编写拓扑的范例在/mininet/examples目录下,比如可以通过在目录下搜索 #grep -r bandwidth 查询带宽的编写配置方法。

(1)python文件放在这个目录下

#cd mininet/custom

(2)示例编写了个双数据中心的交换网络:

root@wyq:/usr/local/mininet/custom# cat topo-qjcd.py

#!/usr/bin/python

#build topo

“””Custom topology example

mn –custom /usr/local/mininet/custom/topo-qjcd.py –topo mytopo –controller=remote,ip=127.0.0.1,port=6633 –switch ovsk,protocols=OpenFlow10

Adding the ‘topos’ dict with a key/value pair to generate our newly defined

topology enables one to pass in ‘–topo=mytopo’ from the command line.

“””

from mininet.topo import Topo

from mininet.net import Mininet

from mininet.node import RemoteController,CPULimitedHost

from mininet.link import TCLink

from mininet.util import dumpNodeConnections

class MyTopo( Topo ):

“Simple topology example.”

def __init__( self ):

“Create custom topo.”

# Initialize topology

Topo.__init__( self )

L1 = 2

L2 = L1 * 2

L3 = L2

c = []

a = []

e = []

# add core ovs

for i in range( L1 ):

sw = self.addSwitch( ‘c{}’.format( i + 1 ) )

c.append( sw )

# add aggregation ovs

for i in range( L2 ):

sw = self.addSwitch( ‘a{}’.format( L1 + i + 1 ) )

a.append( sw )

# add edge ovs

for i in range( L3 ):

sw = self.addSwitch( ‘e{}’.format( L1 + L2 + i + 1 ) )

e.append( sw )

# add links between core and aggregation ovs

for i in range( L1 ):

sw1 = c[i]

for sw2 in a[i/2::L1/2]:

self.addLink(sw2, sw1, bw=10, delay=’5ms’, loss=10, max_queue_size=1000, use_htb=True)

self.addLink( sw2, sw1 )

# add links between aggregation and edge ovs

for i in range( 0, L2, 2 ):

for sw1 in a[i:i+2]:

for sw2 in e[i:i+2]:

self.addLink( sw2, sw1 )

#add hosts and its links with edge ovs

count = 1

for sw1 in e:

for i in range(2):

host = self.addHost( ‘h{}’.format( count ) )

self.addLink( sw1, host )

count += 1

topos = { ‘mytopo’: ( lambda: MyTopo() ) }

(3)执行该配置,并调用本地的ODL控制器环境

#mn –custom /root/mininet/custom/topo-qjcd.py –topo mytopo –controller=remote,ip=127.0.0.1,port=6633 –switch ovsk,protocols=OpenFlow10

(4)打开浏览器,输入网址:http://<yourMachineIP>:8181/index.html,登录到ODL,可以看到定义的网络拓扑结构、节点配置等相关信息。

图片[5]-爱学习之SDN入门学习-命令提示符

 

图片[6]-爱学习之SDN入门学习-命令提示符

 

五 SDN学习小结

1、学习到的知识

(1)SDN是什么,SDN历史发展至现状如何?

(2)Mininet、Opendaylight、Onos是什么,用来干嘛,如何使用?

(3)openflow、NVF、VNF是什么?两者有什么区别?

2、现阶段SDN对于企业应用

现阶段SDN发展趋于平稳,市场细分领域SD-WAN和NVF这两块较为活跃。SD-WAN得益于谷歌B4的成功案例,试图推翻MPLS技术,同时大型互联网企业、运营商基本都有流量工程的需求。NVF得益于近几年云服务、云计算的大力发展(服务器经过虚拟化后集中管理、快速恢复故障等,网络设备为何不可)。Openflow和Opendaylight则依然任重道远。

相对企业而言,如果没有多数据中心流量工程或者大规模云服务需求,则基本不会用到SDN相关技术。但可以学习SDN的一些思维理念,加强自动化运维能力,提高运维效率。

参考文档

谷歌B4网络论文《B4 Experience with a Globally-Deloyed Softwar Defined WAN》

解析Google基于SDN的B4网络zhuanlan.zhihu.com/p/26

Mininet实验指导cnblogs.com/a1164520408

HREF=”blog.csdn.net/wuliangti

HREF=”xiaoer.blog.csdn.net/ar

HREF=”blog.csdn.net/weixin_39

HREF=”blog.csdn.net/muyuxiaox

HREF=”blog.csdn.net/louiey/ar

HREF=”docs.opendaylight.org/e

HREF=”sdnlab.com/15128.html

HREF=”docs.opendaylight.org/e

HREF=”opennetworking.org/

SDN实验工具

mininet

opendaylight

onos

SDN相关组织网站

opennetworking.org

opendaylight.org

sdnhub.org

sdnlab.com

mininet.org

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发
mltsfw的头像-命令提示符

昵称

取消
昵称表情代码图片