type
slug
status
summary
icon
category
date
tags
password

4.0 网络层:数据平面

notion image
notion image

4.1 导论

4.1.1 网络层服务

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

4.1.2 网络层的关键功能

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

4.1.3 数据平面、控制平面

  • 数据平面
    • 本地,每个路由器功能
      • 决定从路由器输入端口到达的分组如何转发到输出端口
    • 转发:数据平面的功能
      • 传统方式:基于目标地址+转发表
      • SDN方式:基于多个字段+流表
  • 控制平面
    • 路由:控制平面的功能
    • 网络范围内的逻辑
    • 决定数据报如何在路由器之间路由,决定数据报从源到目标主机之间的端到端路径
    • 2个控制平面方法:
      • 传统的路由算法:在路由器中被实现
        • 仅仅根据源IP和目标IP匹配路由表表项对端到端分组做动作:转发
      • 软件定义网络 (SDN:software-defined networking): 在远程的服务器实现
        • 多字段流表匹配,有很多动作:转发、block、泛洪、修改字段……
        • 流表:网络操作系统算出,通过南向接口下发,分组设备将流表装载。

4.1.3.1 传统方式:每-路由器控制平面

  • 路由器上有路由实体,和其他路由实体交互路由信息。分布式计算路由表,将算出的路由表交给IP实体。IP实体根据路由表对到来的分组做匹配,然后转发。
  • 传统方式:数据平面和控制平面紧耦合,即集中在一台设备上完成。
    • 改路由器的行为逻辑很麻烦。(紧耦合和分布式导致。)
    • 数据平面:IP实体根据路由表对分组进行匹配转发
    • 控制平面:路由实体相互交换路由信息,计算路由表
  • 控制平面的功能是分布式去做的
 
notion image
  • 路由表是控制平面和数据平面的粘合剂
    • 控制平面:路由算法决定端到端的路径
    • 数据平面:IP实体根据路由表决定IP数据报在此路由器的局部转发(端口到端口)
    •  
       
notion image

4.1.3.2 SDN方式:逻辑集中的控制平面

  • 控制平面的功能集中在服务器(远程控制器)通过南向接口与每个设备控制代理(CA)打交道
  • 控制代理上报设备状态,远程服务器计算出流表,通过南向接口交给每一个分组交换设备(packet switch即路由)
  • 分组交换设备将流表装载,根据每一个到来的分组多字段匹配做多种动作:转发,block,泛洪,修改字段……
  • 改变网络设备的逻辑:改变流表→网络可编程
  • 控制平面是集中式的→便于修改
 
notion image
 

4.1.4 网络服务模型

Q: 从发送方主机到接收方主机传输数据报的“通道”,网络提供什么样的服务模型?
  • 对于单个数据报的服务:
    • 可靠传送
    • 延迟保证,如:少于40ms的延迟
  • 对于数据报流的服务:
    • 保序数据报传送
    • 保证流的最小带宽
    • 分组之间的延迟差
  • 当这些指标为具体值的时候,网络向上层提供的服务可以叫做服务模型
    • notion image
      所有指标都没有保证的模型,叫做尽力而为的服务模型(best effort)
 

4.1.5 连接建立

  • 在某些网络架构中是第三个重要的功能:提供有连接的服务
    • ATM, frame relay, X.25
  • 在分组传输之前,在两个主机之间,在通过一些路由器所构成的路径上建立一个网络层连接
    • 涉及到路由器
  • 网络层和传输层连接服务区别:
    • 网络层:在2个主机之间,涉及到路径上的一些路由器(涉及网络交换节点,有连接)
    • 传输层:在2个进程之间,很可能只体现在端系统上(主机和主机,与网络交换设备路由无关)(TCP连接:面向连接的连接)

4.2 路由器组成

输入端口,输出端口,fabric(将输入输出端口连接,完成局部的转发)
根据什么转发
路由处理器上面运行着路由实体(运行着的一个软件/进程),路由实体运算出路由表到达输入端口,输入端口的网络层根据路由表将到来分组做局部转发。

4.2.1 路由器结构概况

  • 高层面(非常简化的)通用路由器体系架构
    • 路由:运行路由选择算法 / 协议(RIP, OSPF, BGP)- 生成路由表
    • 转发:从输入到输出链路交换数据报-根据路由表进行分组的转发
      • 这里看出来还是两个路由器之间做转发,这个端口是指一个路由器的端口,另一个路由器的端口,通过链路层中链路的定义:连接个相邻节点通信信道的是链路links也可以看出
      notion image
      红色:网络层;蓝色:代表链路层;绿色:代表物理层
      每个路由器独立计算路由表(分布式)。算出来的路由表,将给路由器的网络层(IP实体做表项匹配)。
      SDN模式集中服务器的应用上去算流表,再把流表交给分组交换设备,网络可编程)
 

4.2.2 输入端口

4.2.2.1 输入端口功能

notion image
  • 分布式交换(匹配和转发)
    • 根据数据报头部的信息如:目的地址,在输入端口内存中的转发表查找合适的输出端口
    • 基于目标的转发仅仅依赖IP数据报的目标IP地址(传统方法,网络不可编程)
    • 通用转发:基于头部字段的任意集合进行转发
 

4.2.2.2 输入端口缓存

网络层含有一个队列来匹配链路层到网络层的速度,fabric速度的不一致(输入端口的速度可能瞬间比输出的端口的速率大)
  • 当交换机构的速率小于输入端口的汇聚速率时,在输入端口可能要排队
    • 排队延迟以及由于输入缓存溢出造成丢失!
  • Head-of-the-Line(HOL)blocking:排在队头的数据报阻止了队列中其他数据报向前移动
notion image
 

4.2.3 交换结构(fabric)

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

4.2.3.1 通过内存交换

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

4.2.3.2 通过总线交换

  • 数据报通过共享总线,从输入端口转发到输出端口
  • 只用经过一次bus,所有速率优于通过内存交换的路由器
  • 总线竞争交换速度受限于总线带宽
    • 一次转发一个分组
    • 1 Gbps bus, Cisco 1900: 32 Gbps bus, Cisco 5600: 对于接入或企业级路由器,速度足够(但不适合区域或骨干网络)
notion image

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

  • 同时并发转发多个分组,克服总线带宽限制
  • Banyan(梯树)网络,crossbar(纵横)和其它的互联网络被开发,将多个处理器连接成多处理器
  • 当分组从端口A到达,转给端口Y;控制器短接相应的两个总线(短接路径节点:打通这一条路径)
  • 高级设计:将数据报分片为固定长度的信元,通过交换网络交换
  • Cisco12000: 以60Gbps的交换速率通过互联网络
notion image
 

4.2.4 输出端口

notion image
  • 物理层:根据编码将数字信号变为物理信号,链路层:成帧(帧头帧位),网络层:fabric来的分组排队在队列中,转发。
    • 可以看出这里的输出端口,是指接收方路由器。那么前面的输入端口也可以知道是发送方路由器,
  • 怎么转发?交给链路层网卡,网卡将其封装成帧。
  • 排队:因为可能多个端口同时向这个口打,导致输入速率大于输出速率
  • 数据报(分组)可能会被丢弃,由于拥塞,缓冲区没有空间
  • 当数据报从交换机构的到达速度比传输速率快就需要输出端口缓存
  • 调度规则选择排队的数据报进行传输
    • 优先权调度--谁会获得最优性能,网络中立?

4.2.4.1 输出端口排队

notion image
  • 假设交换速率R_switch是R_line(输出端口的传输速率)的N倍(N:输入端口的数量)
  • 当多个输入端口同时向输出端口发送时,缓冲该分组(当通过交换网络到达的速率超过输出速率则缓存)
  • 排队带来延迟,由于输出端口缓存溢出则丢弃数据报!
 
需要多少缓存?
  • RFC 3439 拥指规则(经验性规则):
    • 平均缓存大小=典型的RTT(例如:250ms)倍于链路容量C
      • e.g., C = 10 Gbps link
      • 250ms*10Gbps=2.5 Gbit buffer
  • 最近的一些推荐:有N(非常大)个流,缓存大小等于
notion image
 

4.2.4.2 调度机制

  • 调度:选择下一个要通过链路传输的分组
  • FIFO (First in first out) scheduling:按照分组到来的次序发送
    • 现实例子?
    • 丢弃策略:如果分组到达一个满的队列,哪个分组将会被抛弃?
      • tail drop:丢弃刚到达的分组
      • priority:根据优先权丢弃/移除分组
      • random:随机地丢弃/移除
 
调度策略:优先权
  • 优先权调度:发送最高优先权的分组
  • ,不同类别有不同的优先权
    • 类别可能依赖于标记或者其他的头部字段,e.g., IP source/dest, port numbers, ds, etc.
  • 分类到达的流量,按类别排队
  • 从最高优先级队列发送分组(已经缓冲的分组),同一优先级FCFS
    • 先传高优先级的队列中的分组,除非没有
    • 高(低)优先权内(即同一优先级)的分组传输次序:FIFO
notion image
 
调度策略:其他的
  • Round Robin (RR) scheduling:
    • 多类
    • 循环扫描不同类型的队列,发送完一类的一个分组,再发送下一个类的下一个分组,循环所有类
    • notion image
  • Weighted Fair Queuing (WFQ):
    • notion image
 
 

4.2.5 转发表

notion image
注意:是目标地址链路接口的关系,如图可以看到是选择链路
notion image
 

4.2.5.1 最长前缀匹配

notion image
  • 我们将会在学习IP地址时,简单讲解为什么要采用最长前缀匹配
  • 最长前缀匹配:在路由器中经常采用TCAMs(ternary content addressable memories)硬件来完成
    • 内容可寻址(内容地址表):将地址交给TCAM,它可以在一个时钟周期内检索出地址,不管表空间有多大
    • Cisco Catalyst系列路由器:在TCAM中可以存储多达约为1百万条路由表项
notion image
notion image
notion image
 

4.3 IP协议:Inter Protocol

 
notion image
IP协议所在的位置
网络层除了IP协议以外还有一些路由协议(实现控制平面的路由功能)
IP协议的体现:对到来的分组头部的目标地址查路由表,进行分组转发
地址约定、数据报格式、分组处理的约定

4.3.1 IP数据报格式(IPv4)

notion image
IP数据报总长-20字节的固定头部(IP头部)-20字节(TCP头部)=数据部分
notion image
notion image

4.3.1.1 协议号

发送端封装数据报为段时的时候会用到
接收端解封装的时候会用到:所以说协议号是网络层和传输层的桥梁
notion image
 

4.3.1.2 差错检验

notion image
这个检验号在首部,所以又叫做首部检验和。只检查首部,不检查数据部分。
注意这里与传输层做对比:传输层中TCP/UDP中的差错检验,是对于整个报文段进行检验。IP报文段检验是只检查首部。
为什么传输层和网络层都要进行差错检验?
内容不同:第一两者检验的部分不同(方式同,校验和检验)。
标准不同:两者校验所遵循的协议不同。TCP/UDP可以运行在其他协议上,而IP所带的数据也不一定传给TCP和UDP
 

4.3.2 IP分片和重组

notion image
  • 分片原因:链路层数据帧有限制(因为链路层需要对网络层传输的数据报进行帧封装)
  • IP分片:
    • 位置:网络层面上
    • 特点:相同IP,不同偏移量,最后一个分片标记位为0
  • 重组位置:目标主机的网络层
notion image
(******)MTU:链路层的数据部分:即网络层的数据单元(IP头部+数据部)
每个切片都需要头(IP头目标地址)
相同的ID不同的偏移量最后一片的标志位为0(标志位为1说明后面还有,便于目标主机重组)
在目标主机处重组(不然路由负载过大)
notion image
notion image
  • MTU
    • 对于链路层来说:链路层帧的数据部分
    • 对于网络层来说:IP头部+数据部分
  • 偏移量=IP片的数据部分/8(以8字节为单位)
 

4.3.3 IP 编址:引论

  • IP 地址32位标示,对主机或者路由器接口编址
  • 接口:主机/路由器和物理链路的连接处
    • 标识相连的那个点,而不是直接标识主机和路由器
    • 路由器通常拥有多个接口
      • 通过网卡(物理链路)和多个网络相连,做网络和网络间的分组转发
    • 主机也有可能有多个接口
      • 虚拟IP地址
  • 一个IP地址和一个接口相关联
notion image
notion image
接口(也就是端口)连接:通过交换机的方式连接
 

4.3.3.1 子网 (Subnets)

  • IP地址:
    • 子网部分(高位bits)
    • 主机部分(低位bits)
  • 什么是子网(subnet)?
    • 一个子网内的节点(主机或者路由器)它们的IP地址的高位部分相同,这些节点构成的网络的一部分叫做子网
    • 在网路层面,子网内部节点分组收发一跳可达(目标路由到目标主机),无需路由器介入。(也就是后面所说的主机对交换机透明)
    • 子网内各主机可以在物理上相互直接到达(可以借助交换机)
notion image
子网
  • 方法:
    • 要判断一个子网,将每一个接口从主机或者路由器上分开,构成了一个个网络的孤岛
    • 每一个孤岛(网络)都是一个都可以被称之为subnet.
  • 子网掩码:11111111 11111111 11111111 00000000
  • Subnet mask: /24
 
 

4.3.3.2 IP地址分类

notion image
本质是
网络号8的倍数倍增A类网络号为8位,B类网络号为16位,C类网络号为24位,DE类网络号位数不确定
前端固定编码位(也可以算作区分位):依次递增:0,10,110,1110,11110
 
notion image
  • 网络ID→网络数量→与网络比特数有关→有效位数为网络号位数-前端固定编码位→也就是子网数量
  • 每个网络IP(对应主机)地址数=子网内主机数=主机号位数有关
    • 主机号位数=32-网络号位数
    • 主机号全0和全1不使用(最后需要-2)
  • IP地址:对应主机。
  • 路由匹配分组转发:匹配网络ID,一个子网内部再进行转发,而不是精确到单个地址(以网络/子网为单位转发) ,最终路由器再完成对目标IP地址的最后一条的发送(由交换机完成)
 
 
特殊IP地址
  • 一些约定:
    • 子网部分:全为0---本网络
    • 主机部分:全为0---本主机
    • 主机部分:全为1--广播地址,这个网络的所有主机
  • 回路地址127.x.x.x
    • 无论是TCP还是UDP,目标地址为回路地址,到达IP后返回TCP/UDP(反转向上)
    • 也可以叫做测试地址
    • 127.0.0.1-127.255.255.254(每一个x有8位)
    • 主要是用来识别主机本身的地址。也叫做“localhost’
  • 内网(专用)IP地址
    • 专用地址:地址空间的一部份供专用地址使用
    • 永远不会被当做公用地址来分配,不会与公用地址重复
      • 只在局部网络中有意义,区分不同的设备
    • 路由器对目标地址是专用地址的分组进行转发
    • 专用地址范围
      • Class A 10.0.0.0-10.255.255.255 MASK 255.0.0.0
      • Class B 172.16.0.0-172.31.255.255 MASK 255.255.0.0
      • Class C 192.168.0.0-192.168.255.255 MASK 255.255.255.0
  • 受限的广播地址255.255.255.255
    • 主要指一个网段内的所有主机
 
 
 

4.3.3.3 子网掩码 (subnet mask)

notion image
  • 对主机号再次划分!!!!不改变网络号
  • 原网络号+子网号=新网络号
  • 子网掩码:选中新网络号,即新网络号的所有位为1.主机号部分为全0
notion image
  • 32bits,0 or 1 in each bit
    • 1: bit位置表示子网部分
    • 0: bit位置表示主机部分
  • 原始的A、B、C类网络的子网掩码分别是(网络号为全1)
  • 每一个.分开的数代表8位二进制
    • notion image
      默认子网掩码,就是传统的二级IP结构,也就是网络号8,16,24位
    • A: 255.0.0.0: 11111111 00000000 00000000 00000000
    • B: 255.255.0.0: 11111111 11111111 00000000 00000000
    • C: 255.255.255.0: 11111111 11111111 11111111 00000000
  • CIDR下的子网掩码例子:
    • 11111111 11111111 11111111 00000000
  • 另外的一种表示子网掩码的表达方式
    • /# :例:/22: 表示前面22个bit为子网部分
 

4.3.3.4 使用子网掩码的转发表和转发算法

转发表:目标地址和吓一跳地址
notion image
下一条地址是下一个节点的输出地址?
notion image
  • 获得IP数据报的目标地址
  • 对于转发表中的每一个表项
    • 如果(IP地址)&(子网掩码mask)== 目标地址, 则按照表项对应的接口转发该数据报
    • 如果都没有找到, 则使用默认表项转发数据报
 

4.3.4 IP 编址:CIDR

CIDR: Classless InterDomain Routing(无分类编址)
  • CIDR 消除了传统的 A 类、B 类和 C类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
  • CIDR使用各种长度的“网络前缀"(network-prefix)来代替分类地址中的网络号和子网号
  • IP地址从三级编址(使用子网掩码)又回到了两级编址。
    • notion image
      这个10是指网络号位数(也可以叫做子网位数)
  • 子网部分可以在任意的位置,占有任意长度(按需分配)
  • 地址格式:a.b.c.d/x,其中x是地址中子网号的长度
    • notion image
      notion image
  • CIDR地址块
    • 地址块数=主机数=2^主机号数
      • notion image
 
 

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

  • 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项可以表示很多个(例如上千个)原来传统分类地址的路由。
  • 路由聚合也称为构成超网(supernetting)。
  • CIDR 虽然不使用子网了,但仍然使用“掩码“这一名词(但不叫子网掩码)
  • 假设有16个C类网络(24位网络号,8位主机号),从 201.66.32.0 到 201.66.47.0,它们可以用掩码 255.255.240.0 统一表示为网络 201.66.32.0.
构成超网
  • 前缀长度不超过 23 位的 CIDR 地址块都包含了多个C类地址,这些 C类地址合起来就构成了超网,CIDR 地址块中的地址数一定是 2 的整数次幂。网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
 

4.3.5 IP地址获取

  • 主机获取IP地址的方式:
    • 手工指定(保存在系统配置中)
      • Windows: 控制面板->网络
      • UNIX/LINUX: 在/etc/rc.config中,可使用ifconfig命令配置。
    • DHCP: Dynamic Host Configuration Protocol 动态主机配置信息
      • 自动从一个DHCP服务器得到IP地址
      • 方便灵活。

4.3.5.1 动态主机配置协议(DHCP)

目标:允许主机在加入网络的时候,动态地从服务器那里获得IP地址
  • 可以更新对主机在用IP地址的租用期-租期快到了
  • 重新启动时,允许重新使用以前用过的IP地址
  • 支持移动用户加入到该网络(短期在网)
DHCP工作概况:
  • 主机广播“DHCP discover”报文[可选]:我上线了
  • DHCP服务器用“DHCP offer”提供报文响应[可选]:OK
  • 主机请求IP地址:发送“DHCP request”报文:请求IP
  • DHCP服务器发送地址:“DHCP ack”报文:OK,分配IP
notion image
DHCP: 不仅仅是IP addresses
DHCP返回:
  • IP地址
  • 第一跳路由器的IP地址(默认网关)
  • DNS服务器的域名和IP地址
  • 子网掩码(指示地址部分的网络号和主机号)
 
DHCP: 实例
  • 联网笔记本需要获取自己的IP地址,第一跳路由器地址和DNS服务器:采用DHCP协议
  • DHCP请求(应用请求)被封装在UDP段中,封装在IP数据报中,封装在以太网的帧
    • DHCP是应用层协议
  • 以太网帧在局域网范围内广播(dest:FFFFFFFFFFFFFF),被运行DHCP服务的路由器收到
  • 以太网帧解封装成IP,IP解封装成UDP,解封装成DHCP
 
DHCP: 实例
  • DHCP服务器生成DHCP ACK,包含客户端的IP地址,第一跳路由器的IP地址和DNS域名服务器的IP地址
  • DHCP服务器封装的报文所在的帧转发到客户端,在客户端解封装成DHCP报文
  • 客户端知道它自己的IP地址,DNS服务器的名字和IP地址,第一跳路由器的IP地址
 
如何获得一个IP地址 Q:如何获得一个网络的子网部分?
A:从ISP获得地址块中分配一个小地址块
 
 
 

4.3.6 NAT网络地址转换(network address translation)

notion image
就外部世界而言,本地网络中的所有设备仅共享一个IPv4地址
本地网络中的所有设备在“专用”IP地址空间(10/8、172.16/12、192.168/16)中具有32位地址,这些地址只能在本地网络中使用.
  • 动机:本地网络只有一个有效IP地址:
    • 不需要从ISP分配一块地址,可用一个IP地址用于所有的(局域网)设备--省钱
    • 可以在局域网改变设备的地址情况下而无须通知外界
    • 可以改变ISP(地址变化)而不需要改变内部的设备地址
    • 局域网内部的设备没有明确的地址,对外是不可见的--安全
  • 实现: NAT 路由器必须:
    • 外出数据包:替换源地址端口号NAT IP地址新的端口号目标IP端口不变
      • 远端的C/S将会用NAP IP地址,新端口号作为目标地址
    • 记住每个转换替换对(在NAT转换表中)
      • 源IP,端口 VS NAP IP新端口
    • 进入数据包:替换目标IP地址端口号,采用存储在NAT表中的mapping表项,用(源IP,端口)
notion image
  • 16-bit 端口号: 一个局域网地址可以同时支持60,000个并发连接!
  • NAT 存在争议
    • 路由器只应该对第3层做信息处理,而这里对端口号(4层)作了处理
    • 违反了end-to-end 原则
      • 端到端原则:复杂性放到网络边缘
        • 无需借助中转和变换,就可以直接传送到目标主机
        • NAT可能要被一些应用设计者考虑,e9,P2P applications。
        • 外网的机器无法主动连接到内网的机器
      • 地址短缺问题可以被IPv6 解决
      • NAT穿越:如果客户端需要连接在NAT后面的服务器,如何操作
 

4.3.7 IPv6

  • 初始动机:32-bit地址空间将会被很快用完
  • 另外的动机:
    • 头部格式改变帮助加速处理和转发(下面是IPv4需要做的,增加了CPU的负担)
      • TTL-1
      • 头部checksum
      • 分片
    • 头部格式改变帮助QoS

4.3.7.1 IPv6 数据报格式:

  • 固定的40字节头部
  • 数据报传输过程中,不允许分片
  • IPv4的源目标地址32位变为源目标地址128位
notion image
  • 流量类型(8-bit):区分IPv6数据报的类别或优先级;对应IPv4中的TOS字段
  • 流标签(20-bit):表示数据报在同一个”流”中 。”流”是互联网络上从特定源点到特定终点的一系列数据报,“流”所经过的路径上的路由器都保证指明的服务质量。
  • 下一个首部: 表示数据的上层协议(TCP或UDP)。使用与IPv4首部中的协议字段相同的值
notion image
首部长度固定,无校验和,首部拓展实现选项,无分片

4.3.7.2 扩展首部和地址表示

notion image
128/4=32位十六进制数表示一个IPv6地址,4个十六进制数为一组,冒号隔开
一个十六进制为四位二进制
IPv4地址:8位二进制为一组,用冒号隔开
 
 

4.3.8 ICMP 因特网控制报文协议(Internet control Message Protocol)

  • 用于主机路由器之间彼此交流网络层信息
    • 差错报告:不可到达的主机,网络、端口、协议
    • 请求/应答(用于ping, traceroute)
  • 位于IP之上
    • 因为ICMP消息是装载在IP分组里的
notion image
notion image
 

4.4 通用转发和SDN

  • “匹配加动作“抽象:在任何层中匹配到达的数据包报头中的位,并采取措施
    • 匹配头部字段领域(链路层,网络层,传输层)
    • 本地多动作:丢弃,转发,修改或将匹配的数据包发送到控制器
    • 是整个网络范围内“编程“行为(网络可编程
  • 网络可编程性的简单形式
    • 可编程,按数据包的“处理”
    • 历史根源:主动网络
    • 今天:更通用的开源网络编程语言:P4(https://p4.org/)
下面看看就行
notion image
notion image
notion image
notion image
 

4.5 路由算法

notion image
传统方式:路由表
SDN:流表

4.5.1 选路算法

  • 选路算法:根据给定的网络抽象图,找出从源节点到目的节点间最低费用路径
  • 转发:将数据报从路由器的输入端口移动到适当的路由器输出端口(data plane)
  • 路由:决定数据报从源主机目标主机所采用的路径(control plane)
  • 构造网络控制平面的两种方法:
    • 每个路由器控制(传统方法)
    • 逻辑集中控制(软件定义网络,software defined networking)
 

4.5.2 路由的基本概念

路由(route)的概念
  • 路由:按照某种指标(传输延迟,所经过的站点数目等)找到一条源节点目标节点较好路径
    • 较好路径:按照某种指标较小的路径
    • 指标:站数,延迟,费用,队列长度等,或者是一些单纯指标的加权平均
    • 采用什么样的指标,表示网络使用者希望网络在什么方面表现突出,什么指标网络使用者比较重视
  • 以网络为单位进行路由(路由信息通告+路由计算)
    • 网络为单位进行路由,路由信息传输、计算和匹配的代价低
    • 前提条件是:一个网络所有节点地址前缀相同,且物理上聚集(子网到子网的路由)
    • 路由就是:计算网络到其他网络如何走的问题
  • 网络到网络的路由=路由器-路由器之间路由
    • 主机到主机计算量太大,子网到子网间的路由(前n-1跳)
    • 网络对应的路由器到其他网络对应的路由器的路由(第n跳)
    • 在一个网络中:路由器-主机之间的通信,链路层解决
    • 到了这个路由器就是到了这个网络
  • 路由选择算法(routing algorithm):网络层软件的一部分,完成路由功能
notion image
 
 
 

4.5.3 网络抽象图模型

notion image
notion image
notion image
  • 路由的输入:拓扑、边的代价、源节点
  • 路由的输出:源节点的汇集树
notion image

4.5.4 路由算法

notion image
路由算法分类
  • 全局或者局部路由信息?
    • 全局:(可以看到整个网络的拓扑和代价→路由信息传递的事情)
      • 所有的路由器拥有完整的拓扑边的代价的信息
      • “link state” 算法
    • 分布式
      • 路由器知道与它有物理连接关系的邻居路由器,和相应邻居路由器的代价值
      • 单代地与邻居交换路由信息,计算路由信息
      • “distance vector” 算法
  • 静态或者动态的?
    • 静态
      • 路由随时间变化缓慢
      • 路由确定后基本不再变化。只有人工干预调整时,可能有一些变化。
    • 动态
      • 路由变化很快
      • 周期性更新
      • 根据链路代价变化而变化
  • 非自适应算法(non-adaptive algorithm):不能适应网络拓扑和通信量的变化,路由表是事先计算好的
  • 自适应路由选择(adaptive algorithm):能适应网络拓扑和通信量的变化
 

4.5.5 链路状态选路算法(LS)

4.5.5.1 LS路由的工作过程

  • 配置LS路由选择算法的路由工作过程
    • 各点通过各种渠道获得整个网络拓扑,网络中所有链路代价等信息(这部分和算法没关系,属于协议和实现)
    • 使用LS路由算法,计本站点到其它站点的最优路径(集树),得到路由表
    • 按照此路由表转发分组(datagram方式)(这是数据平面的事情了)
      • 严格意义上说不是路由的一个步骤
      • 分发到输入端口的网络层
notion image
 
链路状态路由选择(link state routing)
  • LS路由的基本工作过程
      1. 发现相邻节点,获知对方网络地址
      1. 测量到相邻节点的代价(延迟,开销)
      1. 组装一个LS分组,描述相邻节点它到相邻节点的代价情况
      1. 分组通过扩散的方法发到所有其它路由器
        1. 以上4步让每个路由器获得拓扑和代价信息.在全网泛洪.可以拿到整个网络拓扑和所有链路代价
      1. 通过Dijkstra算法找出最短路径(这才是路由算法)
    • 每个节点独立算出来到其他节点(路由器-网络)的最短路径
    • 迭代算法:第k步能够知道本节点到k个其他节点的最短路径

链路状态路由选择(link state routing)前四步骤的具体实现
  1. 发现相邻节点,获知对方网络地址
  • 一个路由器上电之后,向所有线路发送HELLO分组
  • 其它路由器收到HELLO分组,回送应答,在应答分组中,告知自己的名字(全局唯一)
  • 在LAN中,通过广播HELLO分组,获得其它路由器的信息,可以认为列入一个人工节点

2.测量到相邻节点的代价(延迟,开销)
  • 实测法,发送一个分组要求对方立即响应
  • 回送一个ECHO分组
  • 通过测量时间可以估算出延迟情况

3.组装一个分组,描述相邻节点的情况
  • 发送者名称
  • 序号,年龄
  • 列表:给出它相邻节点,和它到相邻节点的延迟
notion image

4.将分组通过扩散的方法发到所有其它路由器
  • 顺序号:用于控制无穷的扩散每个路由器都记录(源路由器,序号),发现重复的或老的就不扩散
    • 具体问题1:循环使用问题
    • 具体问题2:路由器崩溃之后序号从0开始
    • 具体问题3:序号出现错误
  • 解决问题的办法:年龄字段(age)
    • 生成一个分组时,年龄字段不为0
    • 每个一个时间段,AGE字段减1
    • AGE字段为0的分组将被抛弃
notion image
5.通过Dijkstra算法找出最短路径
  • 路由器获得各站点LS分组和整个网络的拓扑
  • 通过Dijkstra算法计算出到其它各路由器的最短路径(汇集树)
  • 将计算结果安装到路由表中
  • LS的应用情况
    • OSPF协议是一种LS协议,被用于Internet上
    • IS-IS(intermediate system- intermediate system):被用于Internet主干中,Network

4.5.5.2 符号标记和算法具体操作过程

notion image
  • c(i,j):从节点i到j链路代价(初始状态下非相邻节点之间的链路代价为∞)
  • D(v):从源节点节点V的当前路径代价(节点的代价)
  • p(V):从节点V路径前序节点
  • N’当前已经知道最优路径的节点集合(永久节点的集合)
  • 节点标记:每一个节点使用(D(v), p(v)) 如:(3, B)标记
    • D(v):源节点已知最优路径到本节点距离
    • P(v)前序节点来标注
  • 2类节点
    • 临时节点(tentative node):还没有找到从源节点到此节点的最优路径的节点
    • 永久节点(permanent node) N':已经找到了源节点此节点最优路径的节点

(********)
  • 初始化
    • 除了源节点外,所有节点都为临时节点
    • 节点代价
      • 与源节点相邻,链路上值=代价
      • 与源节点不相邻,代价都为∞
  • 从所有临时节点中找到一个节点代价最小的临时节点将之变成永久节点(当前节点)W
  • 对此节点W的所有在临时节点集合中的邻节点(V)
    • 如 D(v) > D(w) + c(w, v),则重新标注此点V,(D(W) + C(W, V), W)
    • 回顾前面节点标记的知识点(新代价值,前序节点)
    • 否则,不重新标注
  • 开始一个新的循环(3)~(5)
    • notion image

notion image
step1:初始化
notion image
不相邻节点,代价无穷,前序节点不知道
step2:
  • 从所有临时节点中找到一个节点代价最小的临时节点将之变成永久节点(当前节点)W
  • 选择B成为永久节点(2,A)
step3:
  • 对此节点W的所有在临时节点集合中的邻节点(V)做重新标记
  • E(∞,-)>E(2,B)E(4,B)
    • 注意注意:所有的cost,均为到源节点的距离,而不是到上一节点的距离
  • C(∞,-) >C(9,B)
重复
  • 所有临时节点找到一个节点代价最小的临时节点将之变成永久节点(当前节点)W
  • 所有临时节点中代价最小的是E,这里的永久节点为E
    • 选择了E即选择了路径,不代表C的值需要更改
  • 对E的相邻节点做重新标记
    • 注意:此时的G(6,A)
      • DE+C(E,G)=(4,B)+1=(5,B)<(6,A)
      • 所以对G进行重新标记(5,E)
    • F(6,E)
    • 所以选择G加入永久节点
  • tips:选择永久节点的范围,实在所有的临时节点范围内。重标记是在这个永久节点的相邻节点做重新标记
  • 对G的邻节点重新标记H(9,G)
  • 此时所有临时节点(没有标红)的代价最小节点是F,所以选择F作为永久节点
  • 对F的邻节点做重新标记,
    • C(9,B)=C(9,F),不用更改
    • H(9,G)>H(8,F),H改为(8,F)
  • 此时所有的临时节点中代价最小的是H(8,F),所以选择H作为永久节点
  • 对H的邻节点做重新标记
    • D(10,H)
  • 此时所有的临时节点中代价最小的是C(9,B),所以选择C作为永久节点
  • 对C的邻节点做重新标记
    • (9,B)+3>D(10,H)
    • 所以D不做更改
notion image
notion image
注意:cost为到源节点的花销!!!!!不是到前一节点的花销!!
 

4.5.5.3 Dijkstra算法的讨论

  • 算法复杂度:n节点
    • 每一次迭代:需要检查所有不在永久集合N中节点
    • n(n+1)/2 次比较:O(n2)
    • 有很有效的实现:O(nlogn)
  • 可能的震荡: e.g.,链路代价=链路承载的流量
notion image
 
 

4.5.6 距离向量路由算法(DV)

距离矢量路由选择(distance vector routing)
  • 动态路由算法之一
  • 距离矢量路由选择的基本思想
    • 路由器(节点)维护一张路由表,结构如图(其它代价)
    • 各路由器与相邻路由器交换路由表(待续)(相邻两个节点定期交换距离矢量(代价值 ))
    • 根据获得的路由信息,更新路由表
notion image
notion image
notion image

4.5.6.1 DV算法工作流程

  • 代价及相邻节点间代价的获得
    • 跳数(hops), 延迟(delay), 队列长度
    • 相邻节点间代价的获得:通过实测
  • 路由信息的更新
    • 根据实测 得到本节点A到相邻站点的代价(如:延迟)
    • 根据各相邻站点声称它们到目标站点B的代价
    • 计算出本站点A经过相邻站点到目标站点B的代价
    • 找到一个最小的代价,和相应的下一个节点Z,到达节点B经过此节点Z,并且代价为A-Z-B的代价
    • 其它所有的目标节点一个计算法

4.5.6.2 实例

距离矢量路由:例子1
  • 以当前节点J为例,相邻节点A, I, H, K
  • J测得到A, I, H, K的延迟为8ms, 10ms, 12ms, 6ms
  • 通过交换DV,从A, I, H, K获得到它们到G的延迟为18ms, 31ms, 6ms, 31ms
    • DV算法:即AIHK告诉J到目标G的延时
  • 因此从J经过A, I, H, K到G的延迟为26ms, 41ms, 18ms, 37ms
    • 总代价值=到邻居节点的代价值+邻居节点告诉我的到目标节点的代价值
  • 将到G的路由表项更新为18ms,下一跳为:H
    • 选择总代价值最小的节点为下一跳
  • 其它目标一样,除了本节点J
notion image
距离矢量算法
  • Bellman-Ford 方程(动态规划)
    • notion image
  • Bellman-Ford例子
    • notion image
递归。但也可以直接看出(容易做错)
 
下面的看看就行,主要是要理解!
距离矢量路由选择(distance vector routing)
  • 定期测量它到相邻节点的代价
  • 更新路由表
  • 定期与相邻节点交换路由表(DV)
  • D_x(y):节点x到y代价最小值的估计
    • x 节点维护距离矢量D_x(y)= [D_x(y): y ∈ N]
  • 节点x:
    • 知道到所有邻居v的代价:c(x, v)
    • 收到并维护一个它邻居的距离矢量集
    • 对于每个邻居,x 维护 D_x = [D_x(y): y ∈ N]

距离矢量算法
  • 核心思路:
    • 每个节点都将自己的距离矢量估计值传送给邻居,定时或者DV有变化时,让对方去算
    • 当x从邻居收到DV时,自己运算,更新自己的距离矢量
      • 采用B-F equation:
      • notion image
    • D_x(y)估计值最终收敛于实际的最小代价值d_x(y)
      • 分布式、迭代算法

距离矢量算法
notion image
  • 异步式、迭代:每次本地迭代
    • 被以下事件触发:
      • 本地链路代价变化
      • 邻居来了DV更新消息
  • 分布式:
    • 每个节点只是在自己的DV改变之后向邻居通告
    • 然后邻居们在有必要的时候通知他们的邻居
  • 每个节点:
    • notion image

距离矢量路由选择(distance vector routing)
  • DV的无穷计算问题
    • DV的特点
      • 好消息传的快 坏消息传的慢
    • 好消息的传播以每一个交换周期前进一步路由器的速度进行
      • 好消息:某个路由器接入或有更短的路径
      • 举例
        • notion image
  • 解决计数到无穷的解决:毒性逆转
notion image
notion image
  • 距离矢量路由选择(distance vector routing)
    • DV的无穷计算问题
      • 坏消息的传播速度非常慢(无穷计算问题)
        • notion image
      • 例子:
        • 第一次交换之后,B从C处获得信息,C可以到达A(C-A),要经过B本身),但是路径是2,因此B变成3,从C处走
        • 第二次交换,C从B处获得消息,B可以到达A,路径为3,因此,C到A从B走,代价为3
        • 无限此之后,到A的距离变成INF,不可达
  • 水平分裂(split horizon)算法
    • 一种对无穷计算问题的解决办法
      • C知道要经过B才能到达A,所以C向B报告它到A的距离为INF,它告诉C它到A的真实距离
      • D告诉C,它到A的距离,但D告诉C它到A的距离为INF
      • 第一次交换:B通过测试发现到A的路径为INF,而C也告诉B到A的距离为INF,因此,B到A的距离为INF
      • 第二次交换:C从B和D那里获知,到A的距离为INF,因此将它到A的距离为INF
      • ……坏消息以一次交换周期速度传播

 

4.5.6.3 节点的距离向量表

notion image
notion image
notion image
notion image
这里的无穷是指在这一时刻,yz的距离矢量都没有传过来(都还没有告诉x到目标z的cost)
但是x可以测量到x,y,z的cost
整个图是时空图,从左往右看横轴是时间。纵轴是节点
下一个时刻,y,z将距离矢量传给x。除了xx外=0外,需要根据这个来更迭我x的距离矢量
这样每个节点都得到了一个图
 

4.5.7 LS和DV算法的比较

  • 消息复杂度(DV胜出)
    • LS: 有n节点,E条链路,发送报文O(nE)个
      • 局部的路由信息:全局传播,全局信息
    • DV: 只和邻居交换信息
      • 全局的路由信息,局部传播
  • 健壮性:路由器故障会发生什么(LS胜出)
    • LS:
      • 节点会通告不正确的链路代价
      • 每个节点只计算自己的路由表
      • 错误信息影响较小,局部,路由较健壮
    • DV:
      • DV节点可能通告对全网所有节点的不正确路径代价
        • 距离矢量
      • 每一个节点的路由表可能被其它节点使用
        • 错误可以扩散到全网
  • 收敛时间(LS胜出)
    • LS: O(n²)算法
      • 有可能震荡
      • 时空图一次算完
    • DV: 收敛较慢
      • 可能存在路由环路(无穷迭代)
      • count-to-infinity 问题
      • 很多次迭代
  • 2种路由选择算法都有其优缺点,而且在互联网上都有应用
 

4.6 因特网中自治系统内部(AS内部)的路由选择协议

内部网关协议,外部网关协议

4.6.1 RIP(基于DV算法)

  • RIP( Routing Information Protocol)
    • Distance vector 算法
    • 距离矢量:每条链路cost=1,# of hops(max=15 hops)跳数
      • 超过15跳认为不可达
    • DV每隔30秒和邻居交换DV,通告
    • 每个通告包括:最多25个目标子网
  • RIP 通告(advertisements)
    • DV: 在邻居之间每30秒交换通告报文
      • 定期,而且在改变路由的时候发送通告报文
      • 在对方的请求下可以发送通告报文
    • 每一个通告:至多AS内部的25个目标网络的DV
      • 目标网络+跳数
      • 一次公告最多25个子网
      • 最大跳数为16
我是D节点
notion image
D到达z代价是7,这个时候A告诉D,A到达z代价是4,D到达A代价是1
notion image
notion image
notion image
网络层的协议RIP,以应用进程的方式来实现还接住了传输层的服务
内部网关协议RIP基于DV算法

4.6.2 OSPF(基于LS算法)

内部网关协议OSPF基于LS算法
OSPF (Open Shortest Path First)
  • “open”:标准可公开获得
  • 使用LS算法
    • LS 分组(邻居和代价)在网络中(一个AS内部)分发
    • 全局网络拓扑,代价在每一个节点中都保持
    • 路由计算采用Dijkstra算法
  • OSPF通告信息中携带:每一个邻居路由器一个表项
  • 通告信息会传遍AS全部(通过泛洪
    • 在IP数据报上直接传送OSPF报文(而不是通过UDP和TCP)
  • IS-IS路由协议:几乎和OSPF一样
OSPF “高级” 特性(在RIP中没有的)
  • 安全:所有的OSPF报文都是经过认证的(防止恶意的攻击,不能伪造)
  • 允许有多个代价相同的路径存在(在RIP协议中只有一个
    • 这条路径到目标代价是5,另一条也是5,两条路径都可以保留
  • 对于每一个链路,对于不同的TOS有多重代价矩阵(多重消费尺度衡量)
    • 例如:卫星链路代价对于尽力而为的服务代价设置比较低,对实时服务代价设置的比较高
    • 按照支持不同的代价标准计算最优路径,如:按照时间和延迟、按照跳数分别计算最优路径
  • 对单播和多播的集成支持
    • Multicast OSPF (MOSPF) 使用相同的拓扑数据库,就像在OSPF中一样
  • 在大型网络中支持层次性OSPF

层次性的OSPF路由
notion image
  • 2个级别的层次性:本地,骨干
    • 链路状态通告仅仅在本地区域Area范围内进行
    • 每一个节点拥有本地区域的拓扑信息
      • 关于其他区域,知道去它的方向,通过区域边界路由器(最短路径)
    • 区域边界路由器:“汇总(聚集)”到自己区域内网络的距离,向其它区域边界路由器通告。
    • 骨干路由器:仅仅在骨干区域内,运行OSPF路由
    • 边界路由器:连接其它的AS's.
 

4.7 ISP(AS间)之间的路由选择:BGP

BGP协议的特点BGP是一种AS(自治区域)外部路由协议,主要负责本自治区域和外部的自治区域间的路由可达信息的交换。因此,它所关心的拓扑结构是AS(自治区域)的拓扑结构

4.7.1 层次路由

  • 一个平面的路由
    • 一个网络中所有路由器的地位一样
    • 通过LS, DV, 或者其他路由算法,所有路由器都要知道其他所有路由器(子网)如何走
    • 所有路由器在一个平面
  • 平面路由的问题
    • 规模巨大的网络中,路由信息的存储、传输和计算代价巨大
      • DV: 距离矢量集很大,且不能够收敛(巨大网络范围内收敛到同一个真实值无法实现,迭代次数多)
      • LS: 几万个节点的LS分组的泛洪传输,存储以及最短路径算法的计算
    • 管理问题:
      • 不同的网络所有者希望按照自己的方式管理网络
      • 希望对外隐藏自己网络的细节
      • 当然,还希望和其他网络互联

层次路由
  • 层次路由:将互联网分成一个个AS(路由器区域)
    • 某个区域内的路由器集合自治系统(autonomous systems)(AS)
    • 一个AS用AS Number(ASN)唯一标示
    • 一个ISP可能包括1个或者多个AS
  • 路由变成了:2个层次路由
    • AS内部路由:在同一AS内路由器运行相同的路由协议
      • “intra-AS” routing protocol:内部网关协议(RIP,OSFP)
      • 不同的AS可能运行着不同的内部网关协议
      • 能够解决规模和管理问题
      • 如:RIP, OSPF, IGRP
      • 网关路由器:AS边缘路由器,可以连接其他AS
    • AS间运行AS间路由协议
      • “inter-AS” routing protocol:外部网关协议
      • 解决AS之间的路由问题,完成AS之间的互联互通
层次路由的优点
  • 解决了规模问题
    • 内部网关协议解决:AS内部数量有限的路由器相互到达的问题,AS内部规模可控
      • 如AS节点太多,可分割AS,使得AS内部的节点数量有限
    • AS之间的路由的规模问题
      • 虽然一个AS,对于AS之间的路由从总体上来说,只是增加了一个节点子网(每个AS可以用一个节点来表示)
      • 对于其他AS来说只是增加了一个表项,就是这个新增的AS如何走的问题
      • 扩展性强:规模增大,性能不会减弱太多,负担也不会增加太多
  • 解决了管理问题
    • 各个AS可以运行不同的内部网关协议
    • 可以使自己网络的细节不向外透露
 

4.7.2 互联网AS间路由协议:BGP(基于DV算法)

  • BGP(Border Gateway Protocol): 自治区域间路由协议“事实上的”标准
    • “将互联网各个AS粘在一起的胶水”
    • 边界网关协议
  • BGP提供每个AS以下方法:(BSP协议的内容)
    • eBGP:从相邻的ASes那里获得子网可达信息(也就是向外部AS通告信息)
    • iBGP:将获得的子网可达信息传递到AS内部的所有路由器
    • 根据子网可达信息和策略来决定到达子网的“好”路径
  • 允许子网向互联网其他网络通告“我在这里
  • 基于距离矢量算法(路径矢量)
    • 不仅仅是距离矢量,还包括达各个目标网络详细路径AS序号的列表)能够避免简单DV算法的路由环路问题(去过的AS不再去)
notion image

4.7.2.1 BGP基础

  • BGP会话: 2个BGP路由器(“peers”)在一个半永久的TCP连接交换BGP报文
    • 通告向不同目标子网前缀的“路径”(BGP是一个“路径矢量”协议)
  • 当AS3网关路由器3a向AS2的网关路由器2c通告路径:AS3, X
    • 3a参与AS内路由运算,知道本AS所有子网X的信息
    • 语义上:AS3向AS2承诺,它可以向子网X转发数据报
    • 3a是2c关于X的下一跳(next hop)
notion image
notion image
  • 路由器AS2.2c从AS3.3a接收到的AS3.X路由通告(通过eBGP)
  • 基于AS2的输入策略AS2.2c决定接收AS3.X的通告,而且通过iBGP向AS2的所有路由器进行通告
  • 基于AS2的策略AS2路由器2a通过eBGP向AS1.1c路由器通告AS2.AS3.X 路由信息
    • 路径上加上了AS2自己作为AS序列的一跳
notion image
网关路由器可能获取有关一个子网X的多条路径从多个eBGP会话上
  • AS1网关路由器1c从2a学习到路径:AS2,AS3,X
  • AS1网关路由器1c从3a处学习到路径AS3,X
  • 基于策略,AS1路由器1c选择路径:AS3, X,而且通过iBGP告诉所有AS1内部的路由器
notion image

4.7.2.2 路径的属性 & BGP 路由

  • 通告一个子网前缀时,通告包括BGP属性
    • prefix + attributes = route
    • 前缀 属性 = ”路由”
  • 2个重要的属性
    • AS-PATH: 前缀的通告所经过的AS列表 AS 67 AS 17
      • 检测环路:多路径选择
      • 在向其它AS转发时,需要将自己的AS号加在路径上
    • NEXT-HOP: 从当前AS到下一跳AS有多少个链路,在NEXT-HOP属性中,告诉对方通过哪个I 转发。
    • 其它属性:路由选择时标,如何被插入的属性
  • 基于策略的路由
    • 当一个网关路由器接收到了一个路由通告,使用输入策略接受或过滤通告(accept/decline)。
      • 过滤原因1:不想经过某个AS,转发或前缀的分组
      • 过滤原因2:已经有了一条去往某前缀的偏好路径
      • 策略也决定了是否向它别的邻居通告收到的这个路由信息
        • 输入策略:eBGP
        • 策略:iBGP,尽可能快就好,也叫做内部AS无需策略

4.7.2.3 BGP报文

  • 使用TCP协议交换BGP报文
  • BGP报文:
    • OPEN:打开TCP连接,认证发送方
    • UPDATE:通告新路径(或者撤销原路径)
    • KEEPALIVE:在没有更新时保持连接,也用于对OPEN请求确认
    • NOTIFICATION:报告以前消息的错误,也用来关闭连接

4.7.2.4 BGP, OSPF, 转发表表项

  • Q: 路由器是如何设置到达这些子网前缀的转发表表项的?
    • 回顾:1a, 1b, 1c从1c那里通过iBGP学习到了子网X,“到往子网X的要通过1c
    • 1d:通过OSPF内部网关协议,为了到达1c,必须通过本地接口1
      • OSPF;基于LR,知道子网中所有网关信息(接口代价最优路径…)
    • 因此有了表项X 1
  • 路由表项是由AS内部和AS间的路由共同决定的
    • 外部网关协议(BGP):告诉可以通过哪个网关路由器到达哪个外部子网
    • 内部网关协议(OSPF):告诉内部路由器连接接口
    •  
notion image

4.7.2.5 BGP 路径选择策略

  • 路由器可能获得一个网络前缀的多个路径,路由器必须进行路径的选择,路由选择可以基于:(打分)
      1. 本地偏好值属性:偏好策略决定
      1. 最短AS-PATH:AS的跳数
      1. 最近的NEXT-HOP路由器热土豆路由
      1. 附加的判据:使用BGP标示
  • 一个前缀对应着多种路径,采用消除规则直到留下一条路径
热土豆路由
notion image
  • 2d通过iBGP获知,它可以通过2a或者2c到达X
  • 热土豆策略:选择具备最小内部区域代价的网关作为往X的出口(如:201<263,迅速甩出去这个热土豆,2d选择2c。即使往X可能有比较多的AS跳数,不要操心域间的代价!

4.7.2.6 BGP: 通过路径通告执行策略

notion image
notion image
假设一个ISP只想路由流量到/去往它的客户网络不想承载其他ISPs之间的流量,即不通告:不是去往我的客户,也不是来自我的客户)
  • A 向B和C通告路径AW
  • B选择不向C通告BAw
    • 因为CBAw的路由上无法获得收益,因为C, A, w都不是B的客户
    • C从而无法获知 CBAw路径的存在:每个ISP感知到的网络和真实不一致
    • C可能会通过 CAW(而不是使用B)最终路由到W
notion image

4.7.3 内部网关协议 VS 外部网关协议

为什么内部网关协议和外部网关协议如此不同?
策略(管理):
  • Inter-AS(AS间): 管理员需要控制通信路径,谁在使用它的网络进行数据传输;使用策略是也因为关注经济流量效率……
  • Intra-AS(AS内): 一个管理者,所以无需策略;
    • AS内部的各子网的主机尽可能地利用资源进行快速路由
规模:
  • AS间路由必须考虑规模问题,以便支持全网的数据转发
  • AS内部路由规模不是一个大的问题
    • 如果AS太大,可将此AS分成小的AS;规模可控
    • AS之间只不过多了一个点而已
    • 或者AS内部路由支持层次性,层次性路由节约了表空间,降低了更新的数据流量
性能:
  • Intra-AS(AS内): 关注性能
  • Inter-AS(AS间): 策略可能比性能更重要

4.8 SDN

notion image
notion image
notion image
notion image
1.基于流表的匹配+行动模式
2.控制平面和数据平面的分离
3.控制平面功能在数据交换设备之外实现
4、可编程控制应用在控制器之上以网络应用形式实现各种网络功能

4.8.1 数据平面交换机(分组交换机)

notion image
流表的安装,分组匹配

4.8.2 SDN控制器(网络OS)

notion image
逻辑上集中,物理上分布实现.南北向接口。计算流表
notion image

4.8.3 控制应用

notion image

4.8.4 OpenFlow协议:控制器和交换机交互协议

采用TCP来交换报文
notion image
notion image
notion image
notion image
设备上报设备信息,控制器(APP和SDN控制器共同)使用算法更新流表。
采用OpenFlow协议下发流表
notion image
 

4.9 ICMP

notion image
notion image
notion image
notion image
 
 
第3章:传输层第5章:链路层和局域网
Loading...
目录
0%
🐟🐟
🐟🐟
在坚冰还盖着北海的时候,我看到了怒放的梅花
最新发布
第1章:计算机网络概述
2025-6-30
2-6-1 uC/OSII 在STM32上的移植
2025-6-23
1-6 定时器与PWM
2025-6-21
一些工具
2025-6-21
第5章:链路层和局域网
2025-6-19
第4章:网络层
2025-6-19
公告
🎉 欢迎来到鱼鱼的博客~ 🎉
--- 很高兴认识你~ ---
👏一起成为理想中的自己吧!👏
目录
0%