计算机网络——26通用转发和SDN

通用转发和SDN

网络层功能

  • 转发: 对于从某个端口 到来的分组转发到合适的 输出端口
  • 路由: 决定分组从源端 到目标端的路径

网络层

传统路由器的功能

每个路由器(Per Route)的控制平面 (传统)

  • 每个路由器上都有实现路由算法元件(它们之间需要相互交互),形成传统IP实现方式的控制平面
  • 控制平面式分布式的,由各个路由器的各自完成,难于管理

路由器的网络层功能:

  • IP转发:对于到来的分组按照路由表决定如何转发,数据平面
  • 路由:决定路径,计算路由表;处在控制平面

传统的网络设备

还有其他种类繁多网络设备(中间盒):

  • 交换机;防火墙;NAT;IDS;负载均衡设备
  • 未来:不断增加的需求和相应的网络设备
  • 需要不同的设备去实现不同的网络功能
    • 每台设备集成了控制平面和数据平面的功能
    • 控制平面分布式地实现了各种控制平面功能
    • 升级和部署网络设备非常困难

网络设备控制平面的实现方式特点

互联网网络设备:传统方式都是通过分布式,每台设备的方法来实现数据平面和控制平面功能

  • 垂直集成:每台路由器或其他网络设备,包括:
    • 硬件、在私有的操作系统;
    • 互联网标准协议(IP, RIP, IS-IS, OSPF, BGP)的私有实现
    • 从上到下都由一个厂商提供(代价大、被设备上"绑架"")
  • 每个设备都实现了数据平面和控制平面的事情
    • 控制平面的功能是分布式实现的
  • 设备基本上只能(分布式升级困难)按照固定方式工作, 控制逻辑固化。
  • 不同的网络功能需要不同的 "middleboxes":防火墙、负载均衡设备、NAT boxes, .
  • (数据+控制平面)集成>(控制逻辑)分布->固化
    • 代价大;升级困难;管理困难等

问题

  • 垂直集成造成价格昂贵
  • 不便于创新的生态(垄断)
  • 分布式、固化设备功能造成网络设备种类繁多
    • 无法改变路由等工作逻辑,无法实现流量工程等高级 特性
    • 配置错误影响全网运行;升级和维护会涉及到全网设 备:管理困难
    • 要增加新的网络功能,需要设计、实现以及部署新的 特定设备,设备种类繁多
  • ~2005:开始重新思考网络控制平面的处理方式
    • 集中:远程的控制器集中实现控制逻辑
    • 远程:数据平面和控制平面的分离

SDN:逻辑上集中的控制平面

一个不同的(通常是远程)控制器和CA交互,控制器决定分组转发的逻辑(可编程),CA所在设备执行逻辑

SDN的主要思路

  • 网络设备数据平面和控制平面分离
  • 数据平面 - 分组交换机
    • 将路由器、交换机和目前大多数网络设备的功能进一步抽象成:按照流表(由控制平面设置的控制逻辑)进行PDU(帧、分组)的动作(包括转发、丢弃、拷贝、泛洪、阻塞)
    • 统一化设备功能:SDN交换机(分组交换机),执行控制逻辑
  • 控制平面 - 控制器 + 网络应用
    • 分离、集中
    • 计算和下发控制逻辑:流表

SDN控制平面和数据平面分离的优势

  • 水平集成控制平面的开放实现(而非私有实现),创造出好的产业状态,促进发展
    • 分组交换机、控制器和各种控制逻辑网络应用APP可由不同厂商生产,专业化,引入竞争形成良好生态
  • 集中式实现控制逻辑,网络管理容易
    • 集中式控制器了解网络状况,编程简单,传统方式困难
    • 避免路由器的误配置
  • 基于流表的匹配 + 行动 的工作方式允许"可编程的"分组交换机
    • 实现流量工程等高级特性
    • 在此框架下实现各种新型(未来)的网络设备

类比:主框架到PC的演变

流量工程:传统路由比较困难

Q: 网管如果需要u到z的流量走uvwz,x到z的流量走xwyz,怎么办?

A: 需要定义链路的代价,流量路由算法以此运算( IP路由面向目标,无法操作) (或者需要新的路由算法)!

Q: 如果网管需要将u到z的流量分成2路:uvwz 和uxyz ( 负载均衡),怎么办?(IP路由面向目标)

A: 无法完成(在原有体系下只有使用新的路由选择算法 ,而在全网部署新的路由算法是个大的事情)

Q:如果需要w对蓝色的和红色的流量采用不同的路由,怎么办?

A: 无法操作 (基于目标的转发,采用LS, DV 路由)

SDN特点

SDN架构

数据平面交换机

  • 快速、简单、商业化交换设备,采用硬件实现通用转发功能
  • 流表被控制器计算和安装
  • 基于南向API,SDN控制器访问基于流的交换机
    • 定义了哪些可以被控制哪些不能
    • 定义了和控制器的协议

SDN控制器

  • 维护网络状态信息
  • 通过上面的北向API和网络应用交互
  • 通过下面的南向API和网络交换机交互
  • 逻辑上集中,但是在实现上通常由于性能、可拓展性、容错性以及鲁棒性采用分布式方法

控制应用

  • 控制的大脑:采用下层提供的服务(SDN控制器提供的API),实现网络功能
    • 路由器交换机
    • 接入控制防火墙
    • 负载均衡
    • 其他功能
  • 非绑定:可以被第三方提供,与控制器厂商以通常上不同,与分组交换机厂商也可以不同

流表

每个路由器包含一个流表(被逻辑上集中的控制器计算和分发)

OpenFlow

OpenFlow数据平面抽象

  • 流:由分组(帧)头部字段所定义
  • 通用转发:简单的分组处理规则
    • 模式:将分组头部字段和流表进行匹配
    • 行动对于匹配上的分组,可以是丢弃、转发、修改、将匹配的分组发送给控制器
    • 优先权Priority:几个模式匹配了,优先采用哪个,消除歧义
    • 计数器Counters:#bytes 以及 #packets

流表的表项结构

例子:

OpenFlow抽象

match + action:统一化各种网络设备提供的功能

设备 match action
路由器 最长前缀匹配 通过一条链路转发
防火墙 IP地址和TCP/UDP端口号 允许或者禁止
交换机 目标MAC地址 转发或者泛洪
NAT IP地址和端口号 重写地址和端口号

目前几乎所有的设备都可以在这个匹配 + 行动模式框架进行描述,具体化为各种网络设备包括未来的网络设备

OpenFlow例子

相关推荐
Michael_Good2 小时前
【计算机网络】设备如何监听 ARP 请求广播
计算机网络
dal118网工任子仪15 小时前
xss的过滤和绕过(2)
笔记·学习·计算机网络·网络安全·xss
java_heartLake1 天前
计算机网络之会话层
网络·计算机网络
也无晴也无风雨1 天前
深入剖析输入URL按下回车,浏览器做了什么
前端·后端·计算机网络
UestcXiye1 天前
《TCP/IP网络编程》学习笔记 | Chapter 9:套接字的多种可选项
c++·计算机网络·ip·tcp
不爱学习的YY酱2 天前
【计网不挂科】计算机网络第一章< 概述 >习题库(含答案)
java·数据库·计算机网络
ZachOn1y2 天前
计算机网络:运输层 —— 运输层端口号
网络协议·tcp/ip·计算机网络·udp·tcp·端口号
QQ_7781329742 天前
信息收集、漏洞扫描、漏洞利用、权限提升、数据泄露
网络·计算机网络
java_heartLake2 天前
计算机网络之网络层
网络·计算机网络
律队i2 天前
【计算机网络】基础知识,常识应用知识
网络·计算机网络