白话SDN和学习笔记


概述

最近开发私有云产品,那么不得不提的就是VPC(虚拟专有网络)。VPC是什么且具有什么优势呢?虚拟私有云(Virtual Private Cloud,VPC)可部署一个私有的、隔离的云计算环境,用户/租户可在该VPC中的虚拟网络上创建虚拟机、服务等资源。用户/租户可在 VPC上定义一个非常类似传统网络的虚拟网络拓扑,且对该虚拟网络环境拥有完全的控制权,包括选择IP地址范围、 创建子网、配置路由表及网关等等。由于使用隧道封装技术(VXLAN)对云服务器的IP报文进行封装,所以云服务器的数据链路层(二层MAC地址)信息不会进入物理网络,实现了不同云服务器间二层网络隔离,因此也实现了不同专有网络间二层网络隔离。 总结来说就是:软件定义网络(灵活定制)和安全隔离

SDN实现

为了实现软件定义网络和安全隔离就需要SDN架构的网络体系结构来支撑网络隔离和灵活定制。 SDN:SDN是一种逻辑集中控制的新网络架构,最主要的的是实现了数据平面和控制平面的分离,控制平面和数据平面的之间有统一的开放接口OpenFlow。SDN的最伟大思想是数控分离并对网络资源进行抽象和可编程化。

  • 网路开发编程。
  • 数据平面和控制平面分离。
  • 逻辑上的集中控制(对分布式网络状态的集中统一管理)

SDN主要有SDN网络应用、北向接口、SDN控制器、南向接口和SDN数据平面。

我们依次来介绍上述几个组件。

南向协议

sdn南向协议为网络数据面提供统一的、开放的和具有更多编程能力的接口,使SDN控制器可以基于这些接口对数据平面设备进行编程控制和网络流量转发等行为。

openflow 南向协议

openflow是现在最为流行的南向协议,openflow交换机可以分为流表和安全通道。流表用于存放流表项的表,安全通道用于和控制器的安全通道。既可以是直接建立在TCP上也可以基于TSL加密后的socket通信。 在openflow交换机和控制器连接初始化阶段,需要将openflow交换机的一些特征信息和端口信息等上报给控制器,当数据包从入端口进入交换机且匹配流表项失败时,将数据包放在Packet-in报文中上报给控制器。控制接收到Packet-in报文,可以选择下发流表项和下发Packet-out报文通知交换机如何处理。所以openflow协议的架构中,交换机是策略的执行者,网络的相关策略需要由控制器下发。

openflow主要由流表、组表和Meter表三种类型构成。

  • 流表:交换机用于存储流表项的表。每条流表项由匹配域、指令集和计数器三个主要部分和其它附属特性组成(cookie).Flow:数据包进入交换机后会进行流表项的匹配,匹配到同一流表的数据包称为Flow。
  • 组表:用于定义一组动作且这些动作可被多条流表项共同使用,从而实现组播、负载均衡和聚合等功能。
  • Meter表:面向流的计量和限速功能。

openflow通道是控制器和交换机通信的通道,通道中转发的数据为openflow消息/报文。Controller-to-Switch、Asynchronous和Symmetric三种类型通道。 1.Controller-to-Switch:由控制器初始化并发送给交换机。 2.Asynchronous:交换机异步上报给控制器的报文。 3.Symmetric:无须等待对方请求,双方可以任意发送报文。

南向协议:

  • OF-Config:它是一种openflow交换机配置协议,是协助openflow进行功能、特性及资源进行配置的,一般在正常工作之前,需要利用OF-Config进行配置,传输协议也是利用NETCONF实现的,遗憾的是没有数据交换、路由等模块,所以实时性较差相比openflow。无论选择哪一种南向协议,都需要OF-Config进行配置。
  • OVSDB:和OF-Config类似,OF-Config支持所有openflow的软件或者硬件的交换机,而OVSDB仅用于OVS的配置和管理。
  • NETCONF:较强的数据描述能力和可扩展性,也属于配置交换机协议的一种,通过传输层来传输。

SDN控制器

SDN控制器是SDN的大脑,控制数据平面的转发等行为并提供可编程的抽象化。架构图如下:

SDN主要有SDN网络应用、北向接口、SDN控制器、南向接口和SDN数据平面。

控制平面大致可以划分为:南向接口层、控制核心层、北向接口层和应用层。开源的控制器有如下:POX,Ryu,Floodlight和OpenDaylight/ONOS.比较活跃的是开源控制器:Ryu,OpenDaylight和ONOS. 在后面章节里面,通过demo来不断熟悉控制器。

SDN数据平面

控制平面负责实现网络的逻辑控制,数据平面则执行网络的逻辑控制。只有数据平面提供足够的可编程能力,控制平面才可以通过南向接口来对网络进行灵活的配置和编程。我们来看一下SDN通用可编程数据平面架构。

通用可编程数据平面设备中所有的网络处理模块,包括解析器(Parser)、包转发(Packet Forwarding)和包调度(Packet Secduling)等模块是可编程配置和协议无关的。 由于现有路由器和交换机中网络转发平面的不足,有人就提出了一种可编程通用转发抽象模型:OpenFlow Switch.OpenFlow Switch将网络数据转发处理抽象成通用的Match-Action map过程,同时对网络系统中的各种查找表记性了通用抽象和处理。 OpenFlow Switch通用转发模型主要包括通用硬件模型和通用处理指令。

通用硬件模型

通用硬件模型的处理流程:

  • 数据包从某个端口进入通用模型,通用模型对数据包头部的分析。
  • 根据分析结果选择对应的流表处理。
  • 在流表内部,解析出来的数据包内容会与每个流表项进行比较,如果匹配则进行相应处理否则丢弃或者转发给控制器。

OpenFlow Switch的网络通用处理器指令分为操作指令、跳转指令和专用指令

  • 操作指令是对数据包的转发、修改等具体操作,以及组表和Meter表的处理。
  • 跳转指令实现网络数据包在多个流表之间的跳转操作。
  • 专用指令实现某种特定的网络数据流处理。

SDN工具清单

作为SDN初学者,循序渐进的学习SDN网络知识非常重要。下面说一下大众的网络虚拟化平台 1.OpenVirteX. OpenVirteX实现多租户下的网络虚拟化,OVX是介于租户控制器和交换机之间的转换平台,对于租户,OVX就是数据平面的网络;对于交换机,OVX就是交换机。 2.Cbench 用于测量Openflow控制性能开源软件。 3.OFTest和OFLops OFTest入门比较简单易用,是Openflow的交换机的测试框架。 4.Wireshark 网络数据包分析软件 5.发包工具

  • Iperf
  • Scapy

总结

SDN细节过多,这篇文章是我在看《SDN架构与实现》的读书笔记,给了我很大的帮助。

参考资料

1.《SDN架构与实现》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户画像

第18章 IP协议

1.因特网使用的IP协议是无连接的,因此其传输时不可靠的。之所以这样设计,是因为这样可以使计算机网络便宜,灵活,如果像电信网...

1143
来自专栏Java3y

计算机网络【开山篇】

最近在看相关面经时,发现对于计算机网络的考察还是挺多的。于是就看回这些曾经做过的笔记复习了一下。

1521
来自专栏无原型不设计

优秀原型设计欣赏:阅读类App原型制作-Another Read

Another Read是一款阅读学习App,它主要是带给你最具创意的作家与插图画家出版的儿童读物。在这款App中,你可以根据喜好来左滑或者右滑书籍,喜欢的书籍...

2495
来自专栏VRPinea

撩妹必备技能之:如何用Unity 3D创建一个VR场景?

2.3K4
来自专栏人工智能头条

假期充电 | 10大Python开源项目推荐(Github平均star2135)

1712
来自专栏SDNLAB

SDNLAB技术分享(八):Neutron的基本原理与代码实现

一、Openstack网络基础 下面对Openstack和Neutron的介绍,要从几个关键词入手。 1. 三代网络 在网络这一口,OpenStack经历了由n...

3637
来自专栏Android群英传

Glide ‘优’ 与 ‘愁’

1291
来自专栏樊华恒的专栏

海量之道系列文章之弱联网优化 (三)

我们需要有一条(相对)快速、(相对)顺畅、(相对)稳定的网络通道承载业务数据的传输,这条路的最好是传输快、不拥堵、带宽大、收费少。如何才能做到快链路,且听下面分...

1K0
来自专栏SDNLAB

数据中心SDN技术发展应用之MP-BGP

当前云计算技术已经成为数据中心基本部署要求,针对云计算中对网络虚拟化的需求,业界厂家提出了各种解决思路,SDN网络技术得到了大力发展,具有资源虚拟化、自动化等特...

5185
来自专栏吴伟祥

如何查看电脑核数和线程数 原

右键计算机->设备管理器->处理器(如下图,处理器下有几个即为几核,按这种方式来看我的电脑为八核,其实并不是这样,下面我会解释)

883

扫码关注云+社区

领取腾讯云代金券