断断续续5.26-6.6

4.3.5 IPv6

1.IPv6数据报格式

断断续续5.26-6.6

  • 扩容的地址容量:
    • 32 bit --> 128 bit
    • 单播、多播、任播(任意一组主机中的任意一个)
  • 简化高效的 40 字节首部:
    • 许多IPv4 字段已经舍弃可选的选项字段,IPv6不允许选项的出现
  • 流标签:
    • 特殊流的分组加上标签,发送方需要接收方特殊处理,如音频视频传输流
  • 版本:
    • 自然而然为 6 ,且设为 4 并不是合法的 IPv4 数据报
  • 流量类型:
    • 类似 IPv4 的服务类型 TOS 字段,如低时延、高吞吐量等等
  • 流标签:
    • 对一条流中的某些数据报给出优先权
  • 有效载荷长度
    • 16 比特的无符号位数,,表示在 40 字节的首部后的数据长度
  • 下一个首部
    • 顾名思义则是运输层报文的首部,表示使用哪种协议,与IPv4首部协议字段相同
  • 跳限制
    • 经过一台路由器则该字段内容减一,达到0时则丢弃
  • 源与目的地址
  • 数据

以下字段只存在于IPv4中,在IPv6中不允许

  • 分片/重新组装

    • 在源和目的地执行,如果路由器收到过大的数据报而无法转发到链路上,则选择丢弃,并向发送方回一个“分组太大”的ICMP差错报文,发送方使用较小长度的IP数据报重发数据
    • 由路由器中删除添加到端系统中,加快了转发速度
  • 首部检验和

    • 设计者觉得TCP、UDP与数据链路层进行了建议,IP中再次检验是为多余,于是去除
    • 快速处理IP分组是重点,计算检验和耗时
  • 选项

    • 并没有消失,可能出现在IPv6中下一个首部指出的位置,在TCP/UDP首部的地方可能出现

2.从IPv4到IPv6的迁移

建隧道:

假设发送端与接收端均使用IPv6,中间路由器有IPv6与IPv4的,把经过IPv4路由器当做隧道,隧道两段则是两台IPv6路由器,隧道发送方路由器将IPv6数据报放进IPv4数据报中,中间的路由器则只将其当成普通的IPv4数据报处理,当到达隧道接收方时,路由器再将其拆分出IPv6路由器,再进行转发,其间由IPv4数据报的协议号字段值为 41 指出

断断续续5.26-6.6

4.4 通用转发和SDN

匹配 + 动作

  • 匹配
    • 能够对协议栈多个首部字段进行匹配
  • 动作
    • 将分组转发到一个或多个端口(类似基于目的地转发)
    • 跨越多个通向服务器的离开接口进行负载均衡分组(类似负载均衡)
    • 重写首部(类似NAT)
    • 有意识阻挡或丢弃某个分组
    • 为进一步特殊处理向特定服务器发送分组

断断续续5.26-6.6

匹配加动作转发表在OpenFlow中称为流表(因为性能与成本,一个流表由多个流表实现)

  • 首部字段值的集合

    • 入分组进行匹配
    • 匹配不上被丢弃或者发送到远程控制器做更多处理
  • 计数器集合

    • 分组和流表项匹配时更新计数器
    • 该表项匹配的分组的数量
    • 该表项上次更新的时间
  • 分组匹配流表项采取的动作集合

    • 分组转发到给定的输出端口
    • 丢弃分组
    • 复制分组和将他们发送到多个输出端口
    • 重写首部字段

4.4.1 匹配

断断续续5.26-6.6

现已增加到41个

4.4.2 动作

最重要的有:

  • 转发:
    • 入分组可以转发到特定物理输出端口
    • 广播到所有端口,当然不包括分组到达的端口
    • 选择部分窗口多播
    • 转发到作用该设备的远程控制器
      • 控制器可能安装新的流表项
      • 甚至把分组返回给设备
  • 丢弃
    • 没有的动作的流表项表示将其丢弃
  • 修改字段
    • 被转发到输出端口之前,分组首部 10 个字段(IP协议外的均可以重写)

断断续续5.26-6.6

第 5 章 网络层:控制平面

两种方式计算、维护、安装转发表和流表:

  • 每路由器控制

断断续续5.26-6.6

  • 逻辑集中式控制

断断续续5.26-6.6

控制器经过一种定义良好的协议与每台路由器中的一个控制代理CA交互,来配置和管理该路由器的转发表

CA一般具有最少的功能,任务是与控制器通信并且按控制器命令行事,CA并不能主动参与计算转发表,这是两种方式的关键差异

5.2 路由选择算法

目的:发送方到接收方的过程中确定一条通过路由器网络好的路径

通常好的路径指具有最低开销的路径

某个规则:属于组织Y的路由器X不应该转发任何来源于组织Z所属的网络的分组

通常使用图来抽象路由选择问题

断断续续5.26-6.6

路由器 --> 节点

物理链路 --> 边

开销 --> 权重

无向图

给定任意两个节点,必有一条或多条最低开销路径

若路径所有开销路径相同,最低开销路径必然也是最短路径,即经过的链路数量最少

路由选择算法分类:

根据集中式还是分散式:

  • 集中式路由选择算法
    • 算法开始前需要知道全部信息作为输入,即具有全局状态信息的算法被称为链路状态算法 LS
  • 分散式路由选择算法
    • 以迭代、分布式算法计算
    • 没有节点知道所有网络链路开销的完整信息
    • 每个节点仅知道与其相连的链路的开销
    • 常见有距离向量方法 DV

根据静态还是动态进行分类

  • 静态
    • 路由变化缓慢,人工编辑链路开销
  • 动态
    • 网络流量负载或拓扑发送变化而选择路径

根据负载是否敏感分类:

  • 负载敏感算法:早期的ARPAnet
  • 负载迟钝算法:当今的RIP、OSPF、BGP

5.2.1 链路状态路由选择算法

此算法网络拓扑和所有链路开销都是已知的,实践中是通过让每个节点向网络所有其他节点广播链路状态分组来完成的,分组包含它所连接的链路的标识和开销

由链路状态广播算法来完成

广播结果是所有节点都具有该网络的统一、完整的视图

Dijkstra算法

断断续续5.26-6.6

现实的解决方案是确保不是所有的路由器都在同时运行LS

而网络上的路由器会发生自同步,避免的方法是发送链路通告的时间随机化

5.2.2 距离向量路由选择算法

  • 分布式:
    • 每个节点需要从一个或多个相连的邻居接收信息,计算后再发送给邻居
  • 迭代:
    • 此过程会持续到邻居之间无更多信息要交换为止
  • 自我终止
  • 异步:
    • 不要求所有的节点相互之间步伐一致地操作

Bellman-Ford方程:

断断续续5.26-6.6

每个节点不时向每个邻居发送它的距离向量,然后使用此方程更新它的距离向量:

断断续续5.26-6.6

如果节点x的距离向量改变了,则向每个邻居发送更新后的距离向量,当所有节点异步方式交换距离向量,开销估计会收敛到实际的最低开销路径的开销

当节点 x 发现它的直接相连的链路开销变化或从某个邻居接收到一个距离向量的更新时,它就更新其距离向量估计值。但是为了一个给定的目的地 y 而更新它的转发表,节点 x 真正需要知道的不是到 y 的最短路径距离,而是沿着最短路径到y的下一跳路由器邻居节点

此变化不断继续,直到无更新报文为止,进入静止状态,进行等待,找到链路开销改变

1.链路开销改变与链路故障

断断续续5.26-6.6

断断续续5.26-6.6

2.增加毒性逆转

在上述例子中,z 通过 y 到达 x ,则向 y 通过 z 到 x 的距离是无限大,因此在 y 直接到达 x 的开销改变后 y 也不会选择通过 z 的方式到达 x

毒性逆转对于 3 个或更多的节点无法检测

3.LS与DV算法的比较

  • 报文复杂性:
    • 相比于DV算法当链路开销导致与之相连节点的最低开销路径发送改变才发送报文时,LS算法是任意链路开销改变都要向全部节点发送报文 O(|N| | E|)
  • 收敛速度
    • LS O(|N| | E|) 个报文的 O (|N| ^ 2)算法
    • DV收敛慢,可能有路由选择环路与无穷计数问题
  • 健壮性
    • LS算法在某种程度上是分离的,具有一定的健壮性
    • DV算法则健壮性较差

5.3 因特网中自制系统内部的路由选择:OSPF

上述讲述的方式为简单化,实际不可能如此运行,以下两个原因:

  • 规模
    • 路由器数目大时,路由器之间的广播连通性和链路开销更新负担大
  • 管理自治
    • 因特网是 ISP 的网络,每个 ISP 都有其路由器系统,通常也希望按照其意愿运行路由器

自治系统AS来解决,通常每个AS 由一组处在相同管理控制下的路由器组成

一个 ISP 可将其路由器及互联的链路组成一个 AS,或者划分为多个 AS

一个AS 由其全局唯一的 AS 号所标识

在相同的 AS 中的路由器都运行相同的路由选择算法并有彼此的信息,此路由选择算法被称自治系统内部路由选择协议

开放最短路优先(OSPF)

OSPF 及其关系密切的IS-IS都被广泛用于因特网内部的AS 内部路由选择

OSPF是链路状态协议,使用洪泛链路状态信息和Dijkstra算法

一台路由器构建了一副关于整个 AS 的完成拓扑图,构建了以自身为根节点到所有子网的最短路径树

OSPF中,路由器向 AS 内的所有其他路由器广播路由选择信息,当链路状态发生变化则广播,即使没有也在 30 min 广播一次

优点:

  • 安全
    • 能够鉴别 OSPF 路由器之间的交换,仅有受信任的路由器能参与一个 AS 内部的 OSPF 协议
  • 多条相同开销路径
    • 允许使用同一开销的多条路径来分担流量
  • 对单播与多播路由选择的综合支持
  • 支持在单个 AS 中的层次结构
    • 一个 OSPF 系统能层次化多个区域
    • 每个区域运行自己的 OSPF 算法
    • 区域内路由器向所有其他路由器广播链路状态
    • 区域有一台或多台边界路由器负责流向区域外的分组的路由选择
    • 一个 AS 中只有一个 OSPF 区域是主干区域,为该 AS 中其他区域之间的流量提供路由选择
    • 主干总是包含本 AS 的所有区域边界路由器,可能还包含非边界路由器
    • AS 区域间的路由选择是要求分组先路由到区域边界路由器,再通过主干路由到位于目的区域的边界路由器,最终到达目的地

5.4 ISP 之间的路由选择:BGP

BGP:自治系统间路由选择协议,协调 AS

5.4.1 BGP的作用

AS 外部的目的地由 BGP 负责

BGP 使分组不是路由到特定地址,而是到 CIDR 前缀,前缀表示一个子网或者子网的集合

BGP 的手段

  • 从邻居 AS 获得前缀的可达性信息
    • BGP允 许每个子网向因特网的其余部分通过它的存在
  • 确定到该前缀的“最好的”路由

5.4.2 通告 BGP 路由信息

断断续续5.26-6.6

网关路由器:AS 边缘路由器,连接到其他 AS 中一台或多台路由器

内部路由器:仅连接在 AS 内部的主机和路由器

例如图中的 1a 是内部路由器,1c 是网关路由器

例如:向图中所有路由器通告对于前缀 x 的可达性信息

  • AS3 向 AS2 发送 BGP 报文,告知 x 在 AS3 中,此报文称“AS3 x“
  • AS2 向 AS1 发送 BGP 报文,告知 x 存在且通过 AS2 进入 AS3 最后到达 x ,此报文称“AS2 AS3 x”

实际上是路由器在发送报文,每对路由器通过使用 179 端口的半永久 TCP 连接交换路由信息

每条直接连接以及通过该路由器发送的BGP报文,称为 BGP 连接

跨越两个 AS 的 BGP 连接称为外部 BGP 连接eBGP,相同 AS 中的两台路由器之间的BGP会话称为内部 BGP 连接iBGP

断断续续5.26-6.6

iBGP连接并不总是和物理链路对应

5.4.3 确定最好的路由

BGP通告时还包括一些属性,前缀及属性被称为路由

两个重要的属性是:

  • AS-PATH

    • 包含了通告已经通过的 AS 列表,通过某 AS 时则加入其 ASN

    • 来检测和防止通告环路

    • 路由器在路径列表上看到包含了自身的 AS,则拒绝该通告

  • NXET-PATH

    • 是 AS-PATH 起始路由器接口的 IP 地址,不是路由器的 IP 地址
    • 在 AS 之间和 AS 内部路由选择协议之间提供作用

BGP路由选择算法:

1.热土豆路由选择

断断续续5.26-6.6

断断续续5.26-6.6

在转发表中添加 AS 向外前缀时,BGP 和 OSPF 都需要用到

2.路由器选择算法

实践中使用了更为复杂的算法,但却结合了热土豆的特点

当有多条路由时,使用一下规则消除直到剩余一条:

  • 路由被设置一个本地偏好的值作为属性之一
    • 可由该路由器设置或者在同一个 AS 中的另一台路由器学习到
    • 取决于该 AS 的网络管理员
    • 最高的本地偏好路由将被选择
  • 如果经过上一点仍具有多条最高本地偏好值,则选择具有最短 AS-PATH的路由,BGP使用距离向量算法决定路径,距离测度使用 AS 的跳数而不是路由器的跳数
  • 同理,使用热土豆路由选择,即选择具有最靠近 NEXT-HOP 路由器的路由
  • 再同理,该路由器使用 BGP 标识符来选择路由

5.4.4 IP任播

BGP还被使用在 IP 任播服务中,而 IP 任播服务常用于 DNS 中

CDN可能会使用 IP 任播服务,多台服务器指派相同的IP地址。并使用 BGP 来通告

当某 BGP 服务器收到该 IP 地址的多个路由通告,则将这些通告处理为对相同的物理位置提供不同的路径

当客户请求某个视频时,CDN 向客户返回由地理上分散的服务器使用的同一个 IP 地址,再由因特网路由器向“最近的”服务器转发请求分组

断断续续5.26-6.6

5.4.5 路由选择策略

断断续续5.26-6.6

  • 所有进入一个接入 ISP 网络的流量必定是以该网络为目的
  • 所有离开一个接入 ISP 网络的流量必定是以该网络为源头

W、X、Y是 ISP,X 是多宿接入 ISP

X 应该是进入/离开 X(...)的源 /目的地,不应该转发 B 与 C 之间的流量

使用 BGP 路由的通告方式,例如 X 知道路径 XCY 到达 Y,但不会把这路径通告 B,C也同理

为什么 AS 之间和 AS 之内使用不同的路由选择协议呢?

  • 策略
    • AS 之间策略起主导作用。一个给定的 AS 产生的流量不能穿过另一个特定的 AS,或者想很好地控制它承载的其他 AS 之间穿越的流量,这在 AS 内部之间是没有必要的
  • 规模
    • 扩展路由选择算法能处理大量网络是 AS 之间的关键问题
    • AS 之内不是关注的焦点
    • 假如 ISP 变得太大,总是分成两个 AS,并在 AS 之间执行 AS 路由选择
  • 性能
    • AS 之间路由选择是面向策略的,性能不是主要关心的问题
      • 路径更长或者开销更高的路径,但其满足策略条件被采用了,相反的却没被使用
    • AS 之间,没有路由相关的开销(除了 AS 跳计数)

5.4.6 拼装在一起:在因特网中呈现

断断续续5.26-6.6

断断续续5.26-6.6

5.5 SDN控制平面

SDN体系结构具有 4 个关键特征

  • 基于流的转发

    • SDN控制的交换机的分组转发工作,能够基于运输层、网络层或链路层首部中任意数量的首部字段值进行
    • 分组转发规则被精确规定在交换机的流表中,SDN 控制平面的工作是计算、管理和安装所有网络交换机中的流表项
  • 数据平面与控制平面分离

    • 断断续续5.26-6.6
    • 数据平面由交换机组成,交换机是相对简单、快速的设备,在流表中执行“匹配+动作”
    • 控制平面由服务器以及决定和管理交换机流表的软件组成
  • 网络控制功能

    • 位于数据平面交换机外部
    • 软件实现,在服务器执行,与网络交换机分开且远离
    • 由两个组件组成
      • 若干网络控制应用程序
      • 一个SDN控制器(网络操作系统)
        • 为应用程序提供网络状态信息
  • 可编程的网络

    • 网络控制应用程序是可编程的

5.5.1 SDN 控制平面:SDN 控制器和 SDN 网络控制应用程序

SDN 控制器功能大体组织为 3 个层次

断断续续5.26-6.6

  • 通信层

    • SDN 控制器和受控网络设备之间的通信
    • 设备需要能够向控制器传递本地观察到的事件,提供网络的最新视图
    • 协议构成了控制器体系结构的最底层,控制器和受控设备之间的通信跨越了一个接口,即“南向接口”
  • 网络范围状态管理层

    • SDN 控制平面所作出的最终控制决定,将要求控制器具有有关网络的主机、链路、交换机和其他 SDN 控制设备的最新状态信息
    • 交换机的流表包含计数器
  • 对于网络控制应用程序层的接口

    • 通过“北向”接口于网络控制应用程序交互
    • 允许网络控制应用程序在状态管理层之间读写网络状态和流表
    • 网络状态改变时能用注册进行通告
    • REST风格请求响应接口被使用

SDN 控制器被认为是“逻辑上集中”的,即该控制器可以被外部视为单一、整体的服务,但实际上出于故障容忍、高可用性或性能方面的考虑,在实践中实际上是通过分布式服务器集合实现

5.5.2 OpenFlow 协议

运行在 SDN 控制器和 SDN 控制的交换机或其他实现 OpenFlow API 的设备

运行在 TCP 之上,使用 6653 默认端口

从控制器到受控报文交换机流动的重要报文有下列:

  • 配置
    • 允许控制器查询并设置交换机的配置参数
  • 修改状态
    • 由控制器使用,以增加/删除或修改交换机流表中的表项,并设置交换机的端口特性
  • 读状态
    • 被控制器用于从交换机的流表和端口收集统计数据和计数器值
  • 发送分组
    • 被控制器用于在受控交换机从特定的端口发送一个特定的报文

从受控交换机到控制器流动的重要报文有

  • 流删除
    • 通知控制器已删除一个流表项
      • 如超时
      • 收到“修改状态“报文
  • 端口状态
    • 向控制器通知端口状态的变化
  • 分组入
    • 一个分组到达交换机输入端口,不能与之匹配,将被发往控制器进行额外处理
    • 匹配的分组也会被发送给控制器,作为匹配时采取的动作

5.5.3 数据平面和控制平面交互的例子

断断续续5.26-6.6

断断续续5.26-6.6

5.6 ICMP:因特网控制报文协议

被主机和路由器用来彼此沟通网络层信息

最典型用途是差错报告

ICMP 实际上位于 IP 之上,承载在 IP 分组中,即作为有效载荷

当上层协议编码为 1 时,主机则将 IP 数据报的内容给 ICMP

有一个类型报文字段和编码字段,并包含引起该 ICMP 报文首次生成的 IP 数据报的首部和前 8 个字节,以便发送发能确定引发该差错的数据报

断断续续5.26-6.6

ICMP 是源抑制报文

断断续续5.26-6.6

5.7 网络管理和 SNMP

网络管理定义:

断断续续5.26-6.6

5.7.1 网络管理框架

断断续续5.26-6.6

  • 管理服务器:

    • 应用程序,通常需要人参与,运行在网络运营中心 NOC 的集中式网络管理工作站上
    • 控制网络管理信息的收集、处理、分析、显示
  • 被管设备

    • 网络装备的一部分
    • 可以是各种联网设备
    • 其中有多个被管对象,如硬件实际部分,网络接口卡等
  • 管理信息库MIB

    • 被管设备的每个被管对象的关联信息被收集于此
    • MIB对象可以是计数器
  • 网络管理代理

    • 被管设备的进程
    • 与管理服务器通信
    • 在管理服务器的命令下在被管设备才去动作
  • 网络管理协议

    • 运行在管理服务器和被管设备之间
    • 管理服务器查询被管设备的状态,并经过代理采取行动
    • 自己实际不能管理网络,为管理员提供信息,让管理员采取行动

5.7.2 简单网络管理协议

应用层协议

管理服务器和代表管理服务器执行的代理之间传递网络管理控制和信息报文

最常使用的是请求响应模式

  • SNMP 管理服务器向 SNMP 代理发送请求
  • 代理接收请求后,执行动作,对该请求发送回答

请求通常用于查询或修改与某被管设备管理的 MIB 对象值

第二个常被使用是代理向管理服务器发送一种非请求报文,陷阱报文,通知管理服务器异常情况导致 MIB 对象值的改变

7种类型的报文,被称为协议数据单元PDU

断断续续5.26-6.6

前三种PDU 都是管理服务器向代理发送的,请求代理所在的被管设备一个或多个 MIB 对象值

  • Get:任意集合

  • GetNext顺序读取列表或表格

  • GetBulk:允许读取大块数据,避免发送多个数据的开销

  • 三种情况下,代理对象用对象标识符和相关值对 Response PDU 进行响应

  • InformRequest:通知另一个 MIB 信息管理服务器,此对于接收服务器是远程的

  • Response PDU:通常是被管设备发送给管理服务器,响应请求报文,返回请求信息

  • 陷阱报文:异步产生,不是响应请求,而是响应管理服务器要求通知的事件而产生的
    +

PDU格式

断断续续5.26-6.6

上一篇:BGP


下一篇:杭州扬州枣庄高防服务器