计算机网络自顶向下方法:网络层——数据平面

计算机网络:网络层——数据平面

 

导论

 

网络层服务

  • 在发送主机和接收主机对之间传送段(segment)
  • 在发送端将段封装到数据报中
  • 在接收端,将段上交给传输层实体
  • 网络层协议存在于每一个主机和路由器
  • 路由器检查每一个经过它的IP数据报的头部

 

网络层的关键功能

  • 网络层功能:
    • 转发: 将分组从路由器的输入接口转发到合适的输出接口
    • 路由: 使用路由算法来决定分组从发送主机到目标接收主机的路径
      • 路由选择算法
      • ``路由选择协议`
  • 旅行的类比:
    • 转发: 通过单个路口的过程
    • 路由: 从源到目的的路由路径规划过程

 

网络层:数据平面、控制平面

数据平面

  • 本地,每个路由器功能
  • 决定从路由器输入端口到达的分组如何转发到输出端口(局部功能)
  • 转发功能:
    • 传统方式:基于目标地址 + 转发表
    • SDN方式:基于多个字段 + 流表

控制平面

  • 网络范围内的逻辑
  • 决定数据报如何在路由器之间路由,决定数据报从源到目标主机之间的端到端路径(全局功能)
  • 2个控制平面方法:
    • 传统的路由算法:在路由器中被实现
    • s o f t w a r e − d e f i n e d n e t w o r k i n g ( S D N ) software-defined networking(SDN) softwaredefinednetworkingSDN:远程的服务器中实现

计算机网络自顶向下方法:网络层——数据平面_第1张图片
计算机网络自顶向下方法:网络层——数据平面_第2张图片
计算机网络自顶向下方法:网络层——数据平面_第3张图片

 

网络服务模型

对于单个数据报的服务

  • 可靠传送
  • 延迟保证

对于多个数据流的服务

  • 保序数据报传送
  • 保证流的最小带宽
  • 分组之间的延迟差

IP协议没有提供连接功能,既不能保证最小的带宽,也不能保证端到端时延,它提供的是尽力而为服务。

ATM网络体系结构提供了确保按序时延、有界时延和确保最小带宽。

 

 

路由器组成

 

路由器结构概括

高层面(非常简化的)通用路由器体系架构

  • 路由:运行路由选择算法/协议( R I P , O S P F , B G P RIP, OSPF, BGP RIP,OSPF,BGP)——生成路由表
  • 转发:从输入到输出链路交换数据报——根据路由表进行分组的转发

计算机网络自顶向下方法:网络层——数据平面_第4张图片

 

输入端口功能

物理层:Bit级的接收

数据链路层:链路层协议动作、解封装

分布式交换:

  • 根据数据报头部的信息如:目的地址,在输入端口内存中的转发表中查找合适的输出端口(匹配+行动)
  • 基于目标的转发:仅仅依赖于IP数据报的目标IP地址(传统方法)
  • 通用转发:基于头部字段的任意集合进行转发

计算机网络自顶向下方法:网络层——数据平面_第5张图片

 

最长前缀匹配

  • 当给定目标地址查找转发表时,采用最长地址前缀匹配的目标地址表项

计算机网络自顶向下方法:网络层——数据平面_第6张图片

  • 最长前缀匹配:在路由器中经常采用 T C A M s ( t e r n a r y c o n t e n t a d d r e s s a b l e m e m o r i e s ) TCAMs(ternary content addressable memories) TCAMs(ternarycontentaddressablememories) 硬件来完成
    • 内容可寻址:将地址交给 T C A M TCAM TCAM,它可以在一个时钟周期内检索出地址,不管表空间有多大
    • Cisco Catalyst系列路由器:在 T C A M TCAM TCAM 中可以存储多达约为1百万条路由表项

 

输入端口缓存

  • 当交换机构的速率小于输入端口的汇聚速率时,在输入端口可能要排队
    • 排队延迟以及由于输入缓存溢出造成丢失
  • Head-of-the-Line(HOL)blocking:排在队头的数据报阻止了队列中其他数据报向前移动

计算机网络自顶向下方法:网络层——数据平面_第7张图片

 

交换结构

  • 将分组从输入缓冲区传输到合适的输出端口
  • 交换速率:分组可以按照该速率从输入传输到输出
    • 运行速度经常是输入/输出链路速率的若干倍
    • N个输入端口:交换结构的交换速度是输入线路速度的N倍比较理想,不会成为瓶颈
  • 三种典型的交换结构

计算机网络自顶向下方法:网络层——数据平面_第8张图片

 

通过内存交换

第一代路由器

  • 在CPU直接控制下的交换,采用传统的计算机
  • 分组被拷贝到系统内存,CPU从分组的头部提取出目标地址,查找传发表,找到对应的输出端口,拷贝到输出端口
  • 转发速率被内存的带宽限制(数据报通过BUS两遍)
  • 一次只能转发一个分组

计算机网络自顶向下方法:网络层——数据平面_第9张图片

 

通过总线交换

  • 数据报通过共享总线,从输入端口转发到输出端口
  • 总线竞争:交换速度受限于总线带宽
  • 一次处理一个分组
  • 处理速度可达到 1 G b p s 1Gbps 1Gbps,32 G b p s Gbps Gbps 等等,对于接入和企业级路由器,速度足够(但是不适用区域或骨干网络)

计算机网络自顶向下方法:网络层——数据平面_第10张图片

 

通过互联网络(crossbar等)的交换

  • 同时并发转发多个分组,克服总线带宽限制
  • B a n y a n Banyan Banyan(榕树)网络, c r o s s b a r crossbar crossbar(纵横)网络和其他的互联网被开发,将多个处理器连接成多处理器
  • 当分组从端口 A A A 到达,转给端口 Y Y Y,控制器短接相应的两个总线
  • 高级设计:将数据报分片为固定长度的信元,通过交换网络交换
  • Cisco12000:以 60 G b p s 60Gbps 60Gbps 的交换速率通过互联网络
    计算机网络自顶向下方法:网络层——数据平面_第11张图片

 

输出端口

计算机网络自顶向下方法:网络层——数据平面_第12张图片

  • 当数据报从交换结构的到达速度比传输速率快就需要输出端口缓存
  • 调度规则选择排队的数据进行传输
  • 假设交换速率 R s w i t c h R_{switch} Rswitch R l i n e R_{line} Rline 的N倍(N:输入端口的数量)
  • 当多个输入端口同时向输出端口发送时,缓冲该分组(当通过交换网络到达的速率超过输出速率则缓存)
  • 排队带来延迟,由于输出端口缓存溢出则丢弃数据报!

N N N 个流,缓存大小等于 R T T × C N \frac{RTT \times C}{\sqrt{N}} N RTT×C (推荐)

 

调度机制

  • 调度:选择下一个要通过链路传输的分组
  • 先进先出 FIFO(first in first out)scheduling:按照分组到来的次序发送
    • 丢弃策略
      • t a i l d r o p tail drop taildrop:丢弃刚到达的分组
      • p r i o r i t y priority priority:根据优先权丢失/移除分组
      • r a n d o m random random:随机地丢弃/移除分组
  • 优先权调度:发送最高优先权的分组
    • 先传高优先级的队列中的分组,除非没有
    • 高(低)优先权中的分组传输次序:FIFO
  • 循环和排队(Round Robin(RR)scheduling)
    • 在循环排队规则下,分组像使用优先权排队那样被分类,类之间不存在服务优先权,循环调度器在这些类之间轮流提供服务。
    • 循环扫描不同类型的队列,发送完一类的一个分组,再发送下一个类的一个分组,循环所有类
  • 加权公平排队(Weighted Fair Queuing,WFQ)
    • 一般化的 R o u n d R o b i n Round Robin RoundRobin
    • 在一段时间內,每个队列得到的服务时间是: W i X I G M A ( W i ) × t \frac{W_i}{XIGMA(W_i) \times t} XIGMA(Wi)×tWi ,和权重成正比
    • 每个类在每一个循环中获得不同权重的服务量

计算机网络自顶向下方法:网络层——数据平面_第13张图片

 

 

IP:Internet Protocol

 

互联网的网络层

主机,路由器中的网络层功能:

计算机网络自顶向下方法:网络层——数据平面_第14张图片

 

IPV4数据报格式

计算机网络自顶向下方法:网络层——数据平面_第15张图片

 

IP分片和重组(Fragmentation & Reassembly)

  • 网络链路有 MTU(最大传输单元)-链路层帧所携带的最大数据单元
    • 不同的链路类型
    • 不同的 M T U MTU MTU
  • 大的 I P IP IP 数据报在网络上被分片(“ f r a g m e n t e d fragmented fragmented ”)
    • 一个数据报被分割成若干个小的数据报
      • 相同的 I D ID ID
      • 不同的偏移量
      • 最后一个分片标记为0
    • “重组”只在最终的目标主机进行
    • I P IP IP头部的信息被用于标识,排序相关分片
      计算机网络自顶向下方法:网络层——数据平面_第16张图片

例子

  • 4000字节数据报:20字节头部,3980字节数据
  • M T U = 1500 b y t e s MTU = 1500bytes MTU=1500bytes
  • 第一片:20字节头部 + 1480字节数据(1480字节应用数据),偏移量:0
  • 第二片:20字节头部 + 1480字节数据(1480字节应用数据),偏移量:1480 / 8 = 185(为了方便计算,以8个字节为单位)
  • 第三片:20字节头部 + 1020字节数据(应用数据),偏移量:2960 / 8 = 370

计算机网络自顶向下方法:网络层——数据平面_第17张图片

IP分片小程序

 

IP编址:引论

  • IP地址:32位标示,对主机或者路由器的接口编址
  • 接口:主机/路由器和物理链路的连接处
    • 路由器通常拥有多个接口
    • 主机也有可能拥有多个接口
    • IP地址和每一个接口相关联
  • 一个IP地址和一个接口相关联

计算机网络自顶向下方法:网络层——数据平面_第18张图片

 

子网(Subnets)

  • IP地址:子网部分(高位bits)主机部分(低位bits)
  • 什么是子网?
    • 一个子网内的节点(主机或者路由器)它们的IP地址的高位部分相同,这些节点构成的网络的一部分叫做子网
    • 无需路由接入,子网内各主机可以在物理上相互直接到达
    • 要判断一个子网,将每个接口从主机或者路由器上分开,构成了一个个网络的孤岛,每一个孤岛(网络)都是一个subnet

 

IP编址:CIDR

CIDR:Classless InterDomain Routing(无类域间路由)

  • 子网部分可以在任意的位置
  • 地址格式: a . b . c . d / x a.b.c.d/x a.b.c.d/x , 其中 x x x 是 地址中子网号的长度

 

子网掩码(subnet mask)

32bits , 0 or 1 in each bit

  • 1: bit位置表示子网部分
  • 0:bit位置表示主机部分

原始的A、B、C类网络的子网掩码分别是:

  • A:255.0.0.0:11111111 00000000 0000000 00000000
  • B:255.255.0.0:11111111 11111111 0000000 00000000
  • C:255.255.255.0:11111111 11111111 11111111 00000000

C I D R CIDR CIDR 下的子网掩码例子:

  • 11111111 11111111 11111100 00000000
  • 另外的一种表示子网掩码的表达方式
  • /# 例:/22表示前面22个bit为子网部分

 

DHCP: Dynamic Host Configuration Protocol

目标:允许主机在加入网络的时候,动态地从服务器那里获得IP地址

  • 可以更新对主机在用IP地址的租用期
  • 重新启动时,允许重新使用以前用过的IP地址
  • 支持移动用户加入到该网络(短期在网)

D H C P DHCP DHCP 工作概况:

  • 主机广播 “DHCP discover” 报文[可选]
  • D H C P DHCP DHCP 服务器用 “DHCP offer” 提供报文响应[可选]
  • 主机请求 I P IP IP 地址:发送 “DHCP request” 报文
  • D H C P DHCP DHCP 服务器发送地址:“DHCP ack” 报文

计算机网络自顶向下方法:网络层——数据平面_第19张图片

D H C P DHCP DHCP 返回

  • I P IP IP 地址
  • 第一跳路由器的 I P IP IP 地址(默认网关)
  • D N S DNS DNS 服务器的域名和 I P IP IP 地址
  • 子网掩码(指示地址部分的网络号和主机号)

 

DHCP实例

联网笔记本需要获取自己的IP地址,第一跳路由器地址和DNS服务器:采用DHCP协议

DHCP 请求被封装在UDP段中,封装在IP数据报中,封装在以太网的帧中

以太网帧在局域网范围内广播 (dest: FFFFFFFFFFFF) ,被运行DHCP服务的路由器收到

以太网帧解封装成IP,IP解封装成UDP,解封装成DHCP

DHCP服务器生成DHCP ACK,包含客户端的IP地址,第一跳路由器的IP地址和DNS域名服务器的IP地址

DHCP服务器封装的报文所在的帧转发到客户端,在客户端解封装成DHCP报文

客户端知道它自己的IP地址,DNS服务器的名字和IP地址,第一跳路由器的IP地址

 

层次编址:路由聚集(route aggregation)

计算机网络自顶向下方法:网络层——数据平面_第20张图片

 

 

NAT: Network Address Translation

计算机网络自顶向下方法:网络层——数据平面_第21张图片

所有离开本地网络的数据报具有一个相同的源地址NAT IP address:138.76.29.7,但是具有不同的端口号

本网发送的数据报源地址是10.0.0.0/24到达本网节点的目标地址为10.0.0.0/24

  • 动机: 本地网络只有一个有效 I P IP IP 地址:

    • 不需要从 I S P ISP ISP 分配一块地址,可用一个IP地址用于所有的(局域网)设备——节约成本
    • 可以在局域网改变设备的地址情况下而无须通知外界
    • 可以改变ISP(地址变化)而不需要改变内部的设备地址
    • 局域网内部的设备没有明确的地址,对外是不可见的-- 安全
  • 实现: N A T NAT NAT 路由器必须:

    • 外出数据包:替换源地址和端口号为 N A T NAT NAT I P IP IP 地址和新的端口号,目标 I P IP IP 和端口不变,远端的 C / S C/S C/S 将会用 N A T NAT NAT I P IP IP地址,新端口号作为目标地址
    • 记住每个转换替换对(在NAT转换表中)源 I P IP IP,端口 v s vs vs N A T NAT NAT I P IP IP,新端口
    • 进入数据包:替换目标IP地址和端口号,采用存储在 N A T NAT NAT 表中的 m a p p i n g mapping mapping 表项,用(源 I P IP IP ,端口)

计算机网络自顶向下方法:网络层——数据平面_第22张图片

 

NAT穿越问题

在外网的客户端需要连接内网的服务器时,会发生NAT穿越的情况

客户端需要连接地址为10.0.0.1的服务器,因为10.0.0.1的地址为内网地址 (客户端不能够使用其作为目标地址),整网只有一个外部可见地址:138.76.29.7,客户端无法得知内网的准确地址

方案一:静态配置NAT,转发进来的对服务器特定端口连接请求

e.g:123.76.29.7, port 2500 总是转发到10.0.0.1 port 25000

方案二 U n i v e r s a l P l u g a n d P l a y ( U P n P ) I n t e r n e t G a t e w a y D e v i c e ( I G D ) Universal Plug and Play(UPnP)Internet Gateway Device(IGD) UniversalPlugandPlayUPnPInternetGatewayDeviceIGD协议. 允许 N A T NAT NAT t e d ted ted 主机可以:

  • 获知网络的公共 I P IP IP 地址(138.76.29.7)
  • 列举存在的端口映射
  • 增/删端口映射 (在租用时间内)

eg:自动化静态 N A T NAT NAT 端口映射配置

方案三: 中继 ( u s e d i n S k y p e used in Skype usedinSkype )

  • N A T NAT NAT 后面的服务器建立和中继的连接
  • 外部的客户端连接到中继
  • 中继在2个连接之间桥接

 

IPV6

IPV6头部

P r i o r i t y Priority Priority :标示流中数据报的优先级
F l o w Flow Flow L a b e l Label Label :标示数据报在一个“flow.”( “flow”的概念没有被严格的定义)
N e x t Next Next h e a d e r header header :标示上层协议

计算机网络自顶向下方法:网络层——数据平面_第23张图片

和IPv4 的其它变化

  • C h e c k s u m Checksum Checksum :被移除掉,降低在每一段中的处理速度
  • O p t i o n s Options Options :允许,但是在头部之外, 被 “Next Header” 字段标示
  • I C M P v 6 ICMPv6 ICMPv6 :ICMP的新版本
    • 附加了报文类型, e.g:“Packet Too Big”
    • 多播组管理功能

隧道

计算机网络自顶向下方法:网络层——数据平面_第24张图片

 

 

通用转发和SDN

 

网络层功能为例的数据平面和控制平面

网络层功能:
转发: 对于从某个端口到来的分组转发到合适的输出端口
路由: 决定分组从源端到目标端的路径(路由算法)

类比: 旅行
转发: 一个多岔路口的进入和转出过程
路由: 规划从源到目标的旅行路径

数据平面

  • 本地的、每个路由器的功能
  • 决定某个从某个端口进入的分组从从哪个端口输出
  • 转发功能

控制平面

  • 网络范围的逻辑
  • 决定分组端到端穿行于各个路由器的路径

 

通用转发

每个路由器上都有实现路由算法元件(它们之间需要相互交互)- 形成传统IP实现方式的控制平面

  • 每台设备上既实现控制功能、又实现数据平面
  • 控制功能分布式实现
  • 路由表-粘连

路由器的网络层功能:

  • IP转发:对于到来的分组按照路由表决定如何转发,数据平面

  • 路由:决定路径,计算路由表;处在控制平面

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

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

传统方式实现网络功能的问题

  • 垂直集成 > 昂贵、不便于创新的生态

  • 分布式、固化设备功能 == 网络设备种类繁多

    • 无法改变路由等工作逻辑,无法实现流量工程等高级特性
    • 配置错误影响全网运行;升级和维护会涉及到全网设备:管理困难
    • 要增加新的网络功能,需要设计、实现以及部署新的特定设备,设备种类繁多

 

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

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

计算机网络自顶向下方法:网络层——数据平面_第25张图片

 

SDN的主要思路

  • 网络设备数据平面和控制平面分离

  • 数据平面:分组交换机

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

    • 分离、集中
    • 计算和下发控制逻辑:流表

 

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

  • 水平集成控制平面的开放实现(而非私有实现),创造出好的产业生态,促进发展

    • 分组交换机、控制器和各种控制逻辑网络应用app可由不同厂商生产,专业化,引入竞争形成良好生态
  • 集中式实现控制逻辑,网络管理容易:

    • 集中式控制器了解网络状况,编程简单,传统方式困难
    • 避免路由器的误配置
  • 基于流表的匹配 + 行动的工作方式允许 “可编程的” 分组交换机

    • 实现流量工程等高级特性
    • 在此框架下实现各种新型(未来)的网络设备

 

SDN特点

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

计算机网络自顶向下方法:网络层——数据平面_第26张图片

 

SDN架构:数据平面交换机

数据平面交换机

  • 快速,简单,商业化交换设备采用硬件实现通用转发功能
  • 流表被控制器计算和安装
  • 基于南向API(例如 O p e n F l o w OpenFlow OpenFlow ), S D N SDN SDN 控制器访问基于流的交换机
    • 定义了哪些可以被控制哪些不能
  • 也定义了和控制器的协议OpenFlow
    计算机网络自顶向下方法:网络层——数据平面_第27张图片

 

SDN 架构: SDN控制器

SDN 控制器(网络OS):

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

计算机网络自顶向下方法:网络层——数据平面_第28张图片

 

SDN 架构:控制应用

网络控制应用

  • 控制的大脑: 采用下层提供的服务(SDN控制器提供的API),实现网络功能

    • 路由器 交换机
    • 接入控制 防火墙
    • 负载均衡
    • 其他功能
  • 非绑定:可以被第三方提供,与控制器厂商以通常上不同,与分组交换机厂商也可以不同

计算机网络自顶向下方法:网络层——数据平面_第29张图片

 

OpenFlow 数据平面抽象

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

路由器中的流表定义了路由器的匹配 + 行动规则(流表由控制器计算并下发)

计算机网络自顶向下方法:网络层——数据平面_第30张图片

 

OpenFlow 流表的表项结构

计算机网络自顶向下方法:网络层——数据平面_第31张图片

示例:

计算机网络自顶向下方法:网络层——数据平面_第32张图片

计算机网络自顶向下方法:网络层——数据平面_第33张图片

 

OpenFlow 抽象

m a t c h + a c t i o n match+action match+action:统一化各种网络设备提供的功能

  • 路由器

    • m a t c h match match : 最长前缀匹配
    • a c t i o n action action :通过一条链路转发
  • 防火墙

    • m a t c h match match : IP地址和TCP/UDP端口号
    • a c t i o n action action :允许或者禁止
  • 交换机

    • m a t c h match match :目标MAC地址
    • a c t i o n action action :转发或者泛洪
  • NAT

    • m a t c h match match :IP地址和端口号
    • a c t i o n action action :重写地址和删除地址

例子:

计算机网络自顶向下方法:网络层——数据平面_第34张图片

 

来自H5和H6的数据报应该被发向H3或者H4通过 s1然后经由 s2

你可能感兴趣的:(计算机网络自顶向下方法,网络,网络安全,网络协议,udp,tcp/ip)