ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

SDN技术基础

SDN技术基础

一、重点

SDN接口协议原理:OpenFlow协议介绍、NETCONF协议介绍、RESTful协议介绍、SNMP协议介绍

Overlay技术:网络虚拟化的发展、Overlay基础概念与分类、VXLAN技术基础

BGP-EVPN协议:EVPN技术的产生背景、EVPN技术原理、EVPN控制平面介绍、EVPN转发平面介绍

SRv6协议简介:SRv6技术背景、SRv6基本原理、IGP对SRv6的扩展、SRv6基本配置

二、SDN与SDN接口协议简介

1、SDN技术 --- 软件定义网络

SDN技术背景:

网络发展迅速、流量爆炸性增长、传统网络架构固定限制、传统网络设备控制平面与转发平面紧耦合等,引起运维管理难、业务部署慢、创新周期长,系统复杂的问题

理想中的未来网络设备应该秉持开放合作的精神,在硬件和应用之间构建出对上和对下的标准接口,从而实现网络的快速创新和发展

SDN概念:

软件定义网络并非一个具体的技术,而是一种网络的设计理念。这种设计理念将将网络规划成了各个组成部分(包括软件、硬件、转发平面和控制平面)以及各个部分之间的关联互动关系

SDN技术的原理:

  • 控制平面与转发平面分离,由控制器集中掌握全网信息、统一算路
  • 通过南向接口协议给交换机/路由器下发转发规则
  • 上层通过北向API调用网络,实现集中管控与可编程

SDN特点:

  • 控制平面与转发平面分离
  • 集中化的网络控制
  • 开放的可编程接口

SDN集中控制器对网络设备使用标准协议接口对接,对上层应用使用使用RESTful风格的API接口对接。这些RESTful API使得SDN控制器的功能被开放出来,第三方可以通过调用API实现网络的定义和编排

  • 网络业务的自动化应用程序控制

通过将网络设备的控制能力集中,以及对上层云平台等应用的开放接口,SDN控制器能够让网络具备业务的自动化部署和快速上线的能力

SDN的体系架构:

  • 最上层 --- 应用层,又叫编排层,专注于应用系统的层面,在云计算数据中心中,业务编排层和应用层一般由云平台以及更上层应用担任;主要通过北向接口与SDN控制器对接,通过SDN控制器申请和分配网络资源
  • 第二层 --- 控制层,把传统硬件网络设备的控制能力抽离出来形成的一层,主要由SDN控制器担当。控制器与转发层之间通过标准的南向接口协议对接,如OpenFlow、Netconf

SDN控制器特点:

  • 控制平面是整个架构的核心
  • 一般由SDN控制器作为控制平面
  • 负责协议报文的处理、全网转发路径的计算和下发
  • 负责网络资源的抽象和对上层统一的网络服务

在SDN网络中,SDN控制器会给网络设备下发流表匹配某些类型的协议报文,将报文上送至SDN控制器来处理;设备通过openflow模块将协议报文封装至openflow packet in消息中,发送给SDN控制器


流表--- 在交换机上,由匹配字段、优先级、计数器、指令、计时器、Cookie、标识组成

  • 匹配域:定义这条流表项能够匹配哪些数据包(输入端口、源目MAC、源目IP等)
  • 指令:定义当前数据包匹配成功后,交换机需要执行的动作
  • 优先级:决定流表项的匹配顺序,越大越优
  • 计数器:用于统计和监控流经这条流表项的流量
  • 计时器:控制流表项的生命周期,实现规则的自动管理
  • Cookie(流表标签):方便控制器对自己下发的流表项进行批量管理和追踪
  • 标识:用于标记流表项的各种属性和行为
    • OFPFF_SEND_FLOW_REM:当流表项被删除时,向控制器发送通知信息
    • OFPFF_CHECK_OVERLAP:在添加路由表项时,检查是否已有规则冲突

  • 最底层 --- 转发层,由硬件网络设备承担的层面,该层面主要负责底层数据报文的转发

根据SDN控制器下发的控制平面信息生成二三层转发表项

管理接口可以让网络操作人员在其网络中管理设备,一个管理接口通常由两个关键要素:协议和消息格式规范组成。管理接口分为南向接口和北向接口。

2、南向接口协议 --- Openflow协议

openflow协议(开放网络流量管理协议)--- 是SDN架构定义的一个控制器与转发层之间的通信接口标准,其核心思想是分离控制平面和数据平面,二者之间使用标准的协议通信;数据平面采用基于流的方式进行转发。

Openflow网络架构:

  • openflow网络由openflow网络设备和控制器组成,两者之间通过openflow通道互相连接。(每台openflow网络设备都会通过openflow通道与控制器建立连接)
  • openflow作为转发平面承载报文转发,控制器作为控制平面。
  • openflow控制器通过openflow通道(协议)向penflow交换机(网络设备)下发流表,Openflow交换机根据流表做出转发行为。

Openflow主要组件:

  • 主要组件包括openflow控制器和openflow交换机,两者通过openflow通道互连
  • openflow交换机包含一个或多个流表、组表和meter表,以及到控制器的openflow信道(安全通道)
  • openflow连接的安全通道使用TCP进行连接,默认TCP端口号为6633

openflow流水线处理机制:

  • 遵循标准OpenFlow 1.3流水线,不是固定模板(没有TTP),表号可以在硬件上线内自由规划
  • 报文必须从 table 0 进入;Goto-table只能够跳到更大的表号,不能回跳,不能乱跳
  • 两张核心机制:
    • Action-Set :每一级流表累积动作,整条流水线跑完才一起执行
    • Metadata :表与表之间传递内部标记,不会发到链路上
  • Table-miss:没有匹配到,默认上报控制器,也可以配置丢弃,或 goto 指定表
  • 流表项 overlap(匹配重叠):只看priority,越大越优

3、南向接口协议 --- NETCONF协议

NETCONF概念:

NETCONF (网络配置协议)--- 是一种基于XML的网络管理协议,它提供了一种可编程的(API)、对网络设备进行配置和管理的方法

XML是可扩展标记语言,一种存/传数据的文本格式

NETCONF采用基于TCP的SSHv2进行传输,用户可以通过NETCONF协议设置参数、获取参数值、获取统计信息等

NETCONF协议分层框架:

  • 内容层:主要用于描述网络管理所涉及的配置信息和状态信息
  • 操作层(核心):主要定义网络配置管理所需获取、修改等基本配置操作,以及关闭会话、加锁、解锁等高级配置操作

相比于SNMP只定义了5中基本操作,NETCONF全面定义了9种基础操作,功能主要包括四个方面 --- 取值操作(get)、配置操作(config)、锁操作(lock、unlock)和会话操作(session),锁操作是对设备进行操作时防止并法产生混乱的锁行为,会话操作则是相对比较上层的操作,用于结束一个会话操作

  • 消息层:又称为RFC层,提供了一种简单的不依赖于传输协议的RPC成帧机制。其主要作用是接收经过NETCONF传输层传递过来的XML格式的请求报文和回传响应报文,进行对应的解析和封装。

一个典型的RPC请求包括消息编号、操作类型、配置状态、操作对象四个部分;RPC响应脑阔消息编号和操作结果两个部分

  • 传输层:可以采用任何一种安全的面向连接的传输协议,用于建立SDN控制器与网络设备之间的通信通道。传输层3种面向连接的通讯方式SSH、SOAP、BEEP,其中SSH是协议要求强制实现的

NETCONF协议报文的特点:

  • 基于XML构建
  • 整个协议分为四层
  • 指定了对设备具体资源的具体操作

4、北向接口协议 --- RESTful协议

RESTful概念:

  • RESTful服务是基于REST架构开发的服务
  • REST(表征性状态转移),是一组架构约束原则,软件开发者可以基于这些原则设计以资源为中心的Web服务
  • REST不是一种具体的协议或者系统架构,而是一种软件架构风格

REST的核心要素:

  • 资源:使用URI(统一资源标识符)来标识特定的资源

URI包括URL(定位)和URN(永久命名)

RESTful使用URI标识每一个资源,RESTful API是SDN北向接口

  • 资源的表述:是一段对于资源在某个特定时刻的状态的描述,常见的有XML、HTML、TXT、FLASH等
  • 资源的状态转移:在客户端与服务器之间转移资源表述的状态,通过转移资源的表述,来达到操作资源的目的。在REST中有PUT、POST、GET和DELETE等状态转移方法

5、南向接口协议 --- SNMP协议

SNMP概念:

SNMP是简单网络管理协议,是传统网络设备的网管协议,用于网管平台(管理站)和交换机、路由器等网络设备(代理Agent)之间,采集设备运行状态、接收告警,也可以修改少量配置

SNMP基本架构:

  • 网络管理站(NMS):网关软件,主动发起查询,监听UDP162端口,接收SNMP Agent发送的Trap/告警信息
  • 代理器(Agent):SNMP Agent是驻留在被管理设备的一个软件模块,它主要负责监听UDP161端口,接收和处理来自NMS的请求报文,并将处理结果返回给NMS。在一些紧急情况下,SNMP Agent还会主动发送Trap告警报文给NMS
  • SNMP协议 :NMS与被管理设备之间的交互遵循SNMP协议规定
  • MIB(管理信息库):MIB是存储在被管理设备中的管理信息数据库

MIB是一个被管理对象的集合

定义被管理对象的一系列的属性

MIB通过SMI(管理信息结构)进行组织和定义

MIB结构

  • MIB结构是一种树型结构
    • 每一个节点有一个名字和一个编号
    • 名字不能重复
    • 同一层节点的编号不能相同
  • 节点可以通过名字或者OID(对象标识符)来标识
  • 节点类型分为叶子节点和非叶子节点

三、Overlay技术

1、网络虚拟化的发展

数据中心虚拟化起源 :虚拟化是一种资源管理技术,本质是从物理到逻辑的映射,是物理资源的复用或融合,把有限的固定的资源根据不同需求进行重新规划以达到最大利用率的思路。

计算虚拟化对网络的挑战 :

  • 业务扩展问题:业务扩展要求业务部署与网络位置无关,而基于IP子网区域划分限制了二层网络范围
  • 网络广播问题:虚拟机迁移要求前后处于网络的同一个二层域,因而数据中心采用大规模静态VLAN trunk部署,二层网络变大后会带来网络广播域变大、广播报文增多、二层网络收敛时间变长等一系列问题,不能很好地适应云计算和虚拟机迁移需求
  • 4K VLAN上限问题:云计算数据中心要求多租户公用一张物理网络,传统地VLAN隔离技术仅支持4094个隔离域,并不能满足大规模云计算中心地多租户需求

网络虚拟化技术概述:可以构建出虚拟的网络链路或网络节点的技术,无论是二层的、大二层的、三层的,还是多虚一、一虚多,都属于网络虚拟化技术。

网络虚拟化的分层:数据层面、控制层面、管理层面

2、Overlay基本概念与分类

Overlay是架在底层物理网络(Underlay)之上的虚拟逻辑网络,是对基础网络不进行大规模修改的前提下,实现应用在网络上的承载,Overlay网络能与其他网络业务分离,并且以基于IP的基础网络技术为主

核心思想:把业务报文封装在隧道里传输。底层物理网络只转发封装后的外层报文,感知不到内部的业务网络信息

Overlay技术基本概念

Overlay将网络设备分为Overlay边缘设备和Underlay设备

Overlay边缘设备--- 处于整个Overlay网络的边界,对内负责Overlay网络接入服务器,将服务器发送的报文封装Overlay,进入Overlay设备;对外负责Overlay网络与外网互通,将Overlay报文解封装,还原成原始报文发送给外网设备

Underlay设备--- 为Overlay网络中的传统设备,报文转发过程中,Underlay设备不会解开Overlay封装,故而Underlay设备可以不支持Overlay封装,起作用仅仅是使用传统路由协议让Overlay隧道的源目地址互相可达

Overlay网络分为控制平面(逻辑平面)、数据平面(由网络设备组成)

控制平面为Overlay网络抽象出来的逻辑平面,用以控制整个网络的转发,实际使用中一般用Openflow、EVPN等协议加上SDN控制器作为Overlay网络的控制平面;控制平面有服务发现、地址通告和映射、隧道管理

数据平面作为承载数据报文实际转发的网络,Overlay数据平面将Overlay边缘设备封装的Overlay报文发往另一台Overlay边缘设备,如何转发、发往何地则需要控制平面指导下发表项

Overlay网络优势

  • 较低成本地构建跨三层地大二层,通过隧道实现跨三层地二层互联
  • 感知虚拟机:接入交换机/隧道端点交换机与虚拟机直连或者通过TOR交换机间接感知到虚拟机
  • 充足的网络或虚拟子网标识数量

Overlay网络类型

网络Overlay:由物理网络设备作为Overlay边缘设备,一般是物理路由器或物理交换机

主机Overlay:由虚拟设备作为Overlay边缘设备,一般是NFV设备或虚拟交换机(不能接入非虚拟化的物理服务器)

混合Overlay:让以上两种Overlay类型混合,Overlay边缘设备既可以是物理网络设备,也可以是虚拟设备

应用最为广泛的Overlay技术 --- VXLAN

3、VXLAN技术基础

VXLAN --- 虚拟可扩展局域网,是Overlay技术的一种,通过隧道机制在现有网络上构建一个叠加的网络从而绕过现有VLAN标签的限制。隧道的源目设备为Overlay边缘设备。

VXLAN技术基本概念

VNI --- VXLAN网络标识符

VXLAN Network Identifier虚拟扩展本地网络标识符

VNI取代VLAN用来表示不同的VXLAN网络

VNI是一个24位进制表示,可扩展到个网段

VTEP --- VXLAN Tunnel End Point虚拟扩展本地网络隧道终结节点

有自己的IP,对报文进行VXLAN封装/解封装

上行方向将虚拟机(服务器)产生的数据封装到UDP包头内发送出去,下行方向将收到的VXLAN报文解封装后发给虚拟机(服务器)

VTEP之间建立了两点之间的隧道(VTEP可以位软件、硬件服务器或者网络设备)

隧道是无状态的,VXLAN底层用UDP,两个VTEP不需要互相保存对方的连接信息,不需要维护隧道会话表;数据包来了就封装转发,数据包断了也不会断开隧道,没有类似于TCP三次握手的流程

VXLAN的核心作用

VXLAN的报文结构

基本格式L2oUDP--- L2 over UDP,VXLAN的核心封装方式,也叫MAC-in-UDP

L2:Layer2,二层以太网帧

over UDP:把整个二层帧,封装进UDP报文的payload(数据部分),在三层IP网络上传输

VXLAN封装整个占50字节

UDP目的端口号为4789

外层封装类似于快递盒上的标签,是给Underlay网络实际的物理设备(快递员)运输时查看使用的;内层就是给Overlay网络的虚拟机查看使用。

VXLAN标签

标志位(8bits)

VXLAN网络ID(VNI),用于标识一个单独的VXLAN网络

外层IP头:外层ip包头的ip地址为隧道两端的VTEP设备地址

外层MAC头:外层二层包头为报文在普通网络中做二、三层转发的MAC地址

VXLAN GW和VXLAN IP GW

VXLAN IP GW--- 网络设备支持VXLAN报文的封装与解封装,并根据内层报文的IP头部进行三层转发

VXLAN GW--- 支持VXLAN报文的封装与解封装,并根据内层报文的MAC头部进行二层转发,实现VXLAN与VLAN的互通

云计算数据中心的网络简化为Spine+Leaf两层架构,VXLAN运作在Spine和Leaf之间,以下为运作流程:

1)leaf(叶节点) ---> ingress VTEP(隧道起点)设备将报文封装成VXLAN报文

2)spine(脊节点) ---> 核心设备作为VXLAN IP GW,终结VXLAN报文并进行L3(内层IP层转发)转发

3)leaf (叶节点) ---> egress VTEP设备将VXLAN报文解封装,实现VXLAN与VLAN的互通

网络互通

VXLAN的网络互通分为2种,一种是VXLAN和VLAN互通,一种是VXLAN和VXLAN之间的互通

VXLAN与VLAN之间的互通

  • Leaf作为二层接入设备,通过VLAN-VXLAN映射表将服务器/虚拟机发送的VLAN报文映射进某一个VXLAN网络,该映射可以是VXLAN:VLAN=1:1,也可以是1:N
  • Spine作为三层网关设备,拆开VXLAN封装后获取原始IP报文,再通过查询控制平面来决定该报文是三层转发至VXLAN内部还是外网传统设备

VXLAN与VXLAN之间的互通

  • Leaf作为二层接入设备,负责VXLAN二层转发,二层报文在Leaf之间直接通过VXLAN隧道互通
  • Spine作为三层网关设备,负责VXLAN的三层转发,三层报文及与外网互通报文需要由Spine来处理

数据中心服务器之间东西流量巨大,设计两种网关来解决东西流量转发问题

VXLAN集中式网关与分布式网关

VXLAN集中式网关 --- 数据的三层转发都要经过Spine处理,存在多次封装及流量路径非最优等问题

Leaf进行二层VXLAN业务终结

对内层封装的IP报文进行三层转发

VXLAN IP网关功能由VXLAN对应得三层虚接口(VSI)承担

VXLAN分布式网关 --- Spine的网关功能下沉至Leaf

所有的分布式VXLAN IP网关上都需要创建VSI虚接口

不同网关(这里至拥有网关功能的Leaf)上的相同VSI虚接口配置相同的网关IP地址

对于数据中心和内部与外网之间互通的流量,会由Leaf通过VXLAN隧道发送至Spine,Spine将VXLAN解封装并发送给外网设备,此时Spine仍具有三层转发功能,但该VSI-interface仅仅作为与外网互通的三层接口,我们把与外网连接的Overlay边缘设备称之为Border

网络虚拟化分为数据平面、控制平面和管理平面,在VXLAN协议中,数据平面主要由Leaf和Spine等VTEP设备承担,VTEP设备之间互相建立了VXLAN隧道,由VTEP设备负责封装/解封装VXLAN,由VXLAN隧道实际承载报文转发。

VXLAN数据平面

隧道机制

源和目的VTEP之间建立隧道,负责报文的VXLAN封装和解封装

VTEP为虚拟机数据包分装了层层包头,这些新包头只会在报文到目的VTEP时才会解封,中间路径网络设备只会根据外层包头的目的地址进行转发,对于转发路径上的网络设备,一个VXLAN报文就是一个普通报文

在VTEP设备上进行VXLAN的封装解封装,根据MAC地址表(对应有对端的VTEP IP地址)转发

VXLAN控制平面

VXLAN的控制平面实现方式分为3类

自学习模式

基于SDN Controller的集中式模式

路由协议扩展模式

VXLAN封装的信息中,VXLAN头、UDP头和外层源目IP头信息为控制平面提供,外层源目MAC和外层VLAN标签由转发平面封装

自学习模式--- 指定VXLAN ID映射到一个IP组播组,此VXLAN的VTEP都加入该组播组,通过flooding和learning机制完成学习

基于SDN Controller方式的控制平面和地址学习--- SDN Controller与所有的VXLAN ED设备建立连接(通过Openflow协议),通过SDN Controller给各个VXLAN ED部署下发流表来进行VXLAN的转发

路由扩展模式(基于EVPN协议)

优势:标准化 --- 控制平面使用EVPN,属于标准协议、灵活 --- 使用MP-BGP完成地址同步,更灵活控制地址发布规则

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进