网络层
概述
- 数据平面与控制平面:网络层可以分解为两个相互作用的部分。
- 网络中每台主机、路由器都要运行网络层协议
- 发送方传输层报文段在网络层封装成数据报,向相邻路由器发送;接收方网络层从相邻路由器中的数据报,提取并递交给接收方的传输层。
- 分组交换机:指一台通用的分组交换设备,它根据分组首部字段的值,从输入链路接口到输出链路接口转移分组。
- 链路层交换机:在链路层中,通过链路层帧的首部字段值确定转发。
- 网络层路由器:在网络层中,通过数据报的首部字段确定转发。
网络层主要功能
转发(forwarding)
- 数据平面:作用在每台路由器内部,决定数据报从路由器的输入链路到输出链路
- 时间:转发的时间很短(通常为几纳秒),用硬件实现
- 转发表(forwarding table):每台路由器必须具有的关键元素,路由器检查到达的分组的首部的一个或多个字段值,利用首部值在转发表中进行索引,实现内部转发分组。

路由(routing)
- 控制平面:作用在整个网络范围,控制数据报从源主机到目的主机的端到端路径中路由器之间的路由方式。计算这些路径选择的算法称为路由选择算法(routing algorithm)。
- 时间:较长(通常为几秒),通常采用软件实现。
- 软件定义网络(Software-Defined Networking,SDN):数据平面和控制平面分离,路由器实现转发,利用远程控制其计算并分发转发表。远程控制器通常建立在远程数据中心,并可能由ISP或第三方管理。其中,路由器和远程控制器之间的通信是通过交换包含转发表和其他路由选择信息的报文。因为远程控制器使用软件实现的,所以网络是“软件定义的”。
建立连接
- 网络层的连接:某些网络层体系结构中(如ATM,帧中继,MPLS),要求从源到目的地路径上的所有路由器之间相互握手,建立连接状态。但是Internet的网络层不执行建立连接
网络服务模型(network service model)
- 作用:定义了分组在发送与接收端系统之间的端到端运输特性
- 网络层可能提供的服务:
- 确保交付:确保分组到达目的地
- 具有时延上界的确保交付:在时延上界内实现主机到主机的交付
- 有序分组交付:按照分组的发送顺序到达
- 确保最小带宽:当发送主机以低于特定比特率的速率发送比特,则所有分组最终会交付到目的主机。
- 确保最大时延抖动:发送方发送两个连续分组的时间间隔和接收方接收两个分组的时间间隔相同。
- 安全性:使用仅由源和目的主机所知晓的一个秘密会话密钥,在源主机的网络层加密,在目的主机的网络层解密,提供机密性、数据完整性、源鉴别服务。
- 因特网实际提供的服务
- 单一服务:尽力而为的服务,不保证是否交付、有序交付、时延、最小带宽
- 服务模型对比:
虚电报和数据报网络
- 数据报网络提供无连接服务;虚电路网络提供连接服务。
- 网络层面向连接的服务是指在端系统及网络核心的路由器中实现;传输层面向连接服务在网络边缘的端系统中实现。
- 网络层的服务是主机与主机之间;传输层的服务是在进程和进程之间。
- 任何网络中网络层要么是数据报网络,要么是虚电路网络。
虚电路网络
-
虚电路(Virtual Circuits): 源主机—目的主机路径的行为类似于电话网络的行为。
-
虚电路的行为:
①在数据传输前,需要进行呼叫连接。
②属于同一条虚电路的分组的首部在一段链路中携带相同的VC号(每条链路上VC号不相同,新的CV号来自于转发表)
③路径中的中间路由器必须维护每条连接的“状态”
④链路和路由器的资源(缓存和带宽)可以分配给VC问:为什么一个分组沿着其路由在每条链路上不简单地保持相同的VC号?
答:第一:逐段代替可以减少在分组首部中VC字段的长度。
第二:允许每段链路拥有不同的VC号,大大简化了虚电路的建立。使得各条链路相互独立,可以方便选择一个VC号。 -
虚电路的组成:
①路径:源和目的主机之间的路径(即一系列链路和路由器)
②VC号:沿着该路径的每段链路的一个号码
③转发表表项:沿着该路径的每台路由器中的转发表表项(跨越某个路由器创建虚电路就增加一个表项;终止一条虚电路,经过该路径的路由器就删除一个表项) -
虚电路通信示例:


- 虚电路的信令协议
- 信令协议(signaling protocol):端系统向网络中发送虚电路启动和终止报文,以及更新路由器的报文,其中用来交换这些报文的协议称为信令协议。
- 目的:用于建立、维护、拆除虚电路
- 使用场景:可用于ATM,帧中继,X.25网络,不能用于因特网(数据报网络)
- 呼叫连接并确认1234:网络层为连接确定路径,分配每条链路的VC号,在所经过的路由器中增加一个表项,分配资源。目的主机同意建立连接,源主机确认建立连接。
- 数据传送56:此时数据分组通过该虚电路进行传输。
- 虚电路拆除:发送方(或接收方)通知网络层终止虚电路,网络层将通知传递给另一方表明呼叫结束,删除路径中的路由器中相应的表项。
数据报网络
- 数据报网络的特点:
- 无需连接,路由器不维护连接状态信息,但维护转发状态信息。
- 使用目的地址来进行分组转发。
- 每台路由器中都含有目的地址的转发表项,当分组到达路由器时,路由器通过表项查找该输出链路接口。
- 连续的分组在网络中可能走不同的路径到达目的地址,并且可能无序到达。
- 路由器转发分组:
- 前缀:如果暴力为每个目的地址分配一个表项,则效率低。所以仅使用分组的目的地址的前缀进行范围匹配。
- 转发表:数据报网络中的转发表是通过路由选择算法更行的,通常每1~5min更新一次。
最长前缀码匹配(longest prefix matching rule)
- 原理:当有多个匹配时,路由器寻找该表中最长的匹配项,并通过对应的接口转发分组。
- 示例:


路由器工作原理
- 核心功能
- 运行路由选择协议:RIP,OSPF,BGP
- 分组转发:分组从输入链路到输出链路的正确转发
- 组成部分
- 输入端口:输入的物理链路与路由器的物理层相连接;与数据链路层交互的功能;在输入端口进行表项查找的功能;控制分组从输入端口到路由选择处理器。
- 输出端口:从交互结构接受分组;执行路由器物理层与物理链路进行分组传输。
- 交换结构:将输入端口于输出端口直接相连接
- 路由选择处理器:执行路由选择协议,维护转发表以及连接的链路状态信息,进行网络管理
输入端口与基于目的地转发
- 作用:
- 线路端接模块:将一条物理链路端接到路由器的物理层
- 数据链路处理模块:实现路由器的数据链路层功能
- 查找、转发、排队模块:实现查找与转发,以便分组转发到适当的输出端口
- 技术要求:ns级别、硬件实现、最长前缀码匹配、快速查找算法
- 模块示意图:

查找/转发模块
- 作用:通过查找转发表(存放在输入端口的内存中),实现分组的转发
- 分布式交换:
①路由选择处理器计算转发表,给每个输入端口存放一份转发表拷贝,会动态更新
②路由器本地自己做出交换决策,无需中央路由选择处理器进行决策
③分布式交换可以避免单点转发瓶颈
④当数据报到达输入端口的速率 > 输入端口将数据报转发个交换结构的速率时,就会发生排队。
交换结构
- 作用:路由器的核心,将分组从输入端口缓存交换到恰当的输出端口缓存
- 三种交换结构:
- 经内存交换:
早期使用传统计算机作为路由器,分组交换是在CPU的直接利用I/O中断实现;
将输入端口分组复制到处理器内存;处理器提取目的地址进行匹配;将内存中的副本最终复制到输出端口的缓存;这种情况下吞吐量下,一次只能执行一个内存读/写。
现代许多路由器通过内存交换,但是采用输入线路卡实现查找与转发。 - 经总线交换:
输入端口通过一条共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。
每次仅一个分组使用总线,若总线被占用则其他分组必须等待,所以总线带宽收总线速率限制。 - 经交换矩阵结构交换
纵横式交换机:由2n条总线构成 n x n的矩阵
输入端口的分组沿水平总线穿行,若其预期垂直总线空闲,则分组可以传送到输出端口;否则,则被阻塞进行等待。
高级设计:IP数据报可以分割成固定长度的信元,通过交换矩阵来交换信元。
- 经内存交换:
输出端口
- 作用:
- 缓存管理模块:缓存从交换结构传送的分组(当输出端口的缓冲区溢出时,就会出现丢包)
- 数据链路处理模块:将分组封装成帧
- 线路端接模块:将数据帧编码为bit流发送到输出链路
- 模块示意图:

分组排队
输入端口排队
- 条件:当分组到达速率 > 输入端口传送到交换结构的速率时,进行排队
- 线头阻塞(Head-of-the-Line blocking,HOL):在队列前面的被阻塞的数据报会阻止该队列中的其他数据报
-
输出端口排队
- 条件:当交换结构传送分组的速率 > 输出端口将分组发送到链路的速率时,进行排队
- 溢出丢包—弃尾策略:当输出端口的缓冲区溢出时,丢弃最后到达的分组
- 溢出丢包—主动队列管理(Active Queue Management, AQM):在缓存溢出前主动丢弃已经排队的分组并进行标记,向发送方提供一个拥塞信号。(某些情况下是有利的)

网际协议(Net):IPv4、IPv6与寻址
因特网的3个主要组件
- IP协议:编制规则、数据报格式、分组处理规则
- ICMP协议:差错报告、路由器“信令”
- 路由选择协议:路径选择、RIP、OSPF、BGP
IPv4
IPv4数据报格式
- version版本号:4bit,规定该数据报格式是 IPv4 或 IPv6
- 首部长度:4bit,确定IP数据报中数据实际开始位置(一般不存在,所以IP首部为20Byte)
- 服务类型:8bit,区分IP数据报能提供的功能。例如,实时数据报与非实时数据报
- 长度:16bit,首部 + 数据 的总字节数,理论上2^16=65535B,实际上不超过1500B
- 标识、标志、段偏移:32bit,与IP分片有关,但是IPv6不允许在路由器上分片
- 寿命(Time-To-Live,TTL):8bit,确定数据报不会在网络中永远循环,剩余的最大跳数,每经过一台路由器减1。TTL =0 时,数据报必须丢弃。
- 高层协议:8bit,在目的主机使用,协议号指明IP数据报的数据递交给哪个传输层协议。例如,6标识TCP协议,17标识UDP协议。
以太网帧结构——类型:链路层帧与网络层之间的接口
网络层数据报——协议号:网络层与传输层之间的接口
运输层数据报——端口号:传输层与应用层之间的接口 - 首部检验和:路由器进行差错检测,出错则丢弃数据报。只计算首部字段,每2字节为单位进行反码算术求和
- 源和目的IP地址:32bit,源主机的IP地址,通过DNS计算出目的IP地址
- 选项:可选,一般没有。曾用于时间戳、记录所经路径等。IPv6不使用该字段。
- 数据(有效载荷):通常为TCP、UDP报文段,也可以是ICMP报文段。

IPv4数据报分片
- 最大传送单元(MTU):受到数据链路层限制,不同协议所支持传输的数据报长度要求不同(以太网最大支持1500B,某些广域网支持576B)。MTU指的是数据链路帧的数据区的最大字节数。
- 问题引入:假设主机A到主机B之间经过几条链路和路由器,当某条链路收到IP数据报时,通过检查路由器确定输出链路,但是输出链路的MTU不能支持该IP数据报直接进行传输,所以需要进行分片。
- 分片(fragment):通过路由器的输出端口去确定将该IP数据报分片,各片再进行封装成帧进行传输。分片在目的主机上根据“标识、标志、偏移”字段来进行重装。(其他分片的标志固定为1,最后一片的标志为0,确定初始数据报是否完整;利用偏移字段确定分片是否丢失以及分片顺序)
- 分片示例:
实际数据:4000 - 20 = 3980B 3980B = 1480 +1480 + 1020
分片实际数据:1500 - 20 =1480B 1480 ÷ 8 =185 (1480+1480)÷ 8 =370
偏移按照逻辑数据的字节数计算
故:分成3片,长度为1500B、1500B、1040B。

IPv4编址
- IP地址:主机和路由器接口的32bit标识符,每个接口具有一个IP地址
- 接口:主机和路由器与物理链路之间的边界,主机和路由器都有多个接口
- 表示方法:点分十进制、32bit二进制
早期IP地址结构:网络号、主机号
- 常用的特殊IP地址:
127.0.0.1~127.255.255.254:localhost本地环回地址,测试网络协议、开发
10.x.x.x,172.16.x.x~172.31.x.x,192.168.x.x:私有内网地址,企业、高校内部使用
255.255.255.255:广播地址,当作为目的地址时,该IP数据报会交付给同一个网络中的所有主机
无类别域间路由选择(Classless Interdomin Routing,CIDR)
- 与早期IP分类编址区别:早期分类编址中,地址空间没有有效使用,导致地址资源耗尽。
- 地址格式:地址中的网络部分可以任意长。a.b.c.d/x,x表示IP地址中网络号的位数,称为子网前缀。
- 子网(subnet):分开主机和路由器的每个接口,相互隔离,每个隔离的网络都称为子网。
- 子网掩码:网络号全为1,主机号全为0
例如:IP地址200.23.16.0/23 的子网掩码表示为11111111.11111111.11111110.00000000或255.255.254.0
IPv6
IPv6数据报格式
- 新增加:
- 地址容量扩大:地址长度增大到128bit,确保IP地址足够用;支持单播、多播、任播地址;
- 简化高效的40字节首部:首部固定为40字节
- 流标签: 给特殊流的分组添加标签
- 新弃用:
- 标识、标志、偏移:不允许中间路由器进行分片与重装,只允许在端系统中进行; 当IPv6数据报太长时,中间路由器直接丢弃报文并反馈“分组太大”的ICMP差错报文,然后发送方主机重发较短的IP数据报。加快数据报在网络中的传输速度。
- 检验和:因为在传输层和数据链路层已经执行了检验操作
- 选项: 使得IPv6首都固定为40字节
- 版本:4bit,标识IPv6的值为6,但是不能设置为4(不能直接IPv6迁移到IPv4)
- 流量类型:8bit,标识数据报可以提供的服务类型
- 流标签:20bit,标识一条数据报的流,对流中的数据报设置优先权、直接对某些应用的数据报设置优先权(IP语音高于SMTP邮件)
- 有效载荷长度:16bit,标识数据报中数据的字节数
- 下一个首部:8bit,接收方使用,标识该数据报向上交付给TCP或UDP协议
- 跳限制:8bit,在网络中转发的剩余路由器跳数,减为0则数据报丢弃
- 源地址、目的地址:128bit,标识地址
- 数据:数据报携带的有效数据部分

IPv4向IPv6的迁移
- 方法:建“隧道”,在两端各使用一台IPv6路由器,中间使用IPv4路由器。将IPv6数据报直接做为IPv4的数据部分。
- 原理图:

网际协议:DHCP、NAT
DHCP动态主机配置协议
- 作用:在每个子网中配置一台DHCP服务器或使用路由器作为DHCP中继代理,自动将主机连接到局域网内部,为其分配IP地址、默认网关等。
- DHCP协议:是客户-服务器协议,也称为即插即用协议(plug-and-play protocol)
- 应用场景:广泛应用于客户主机频繁地加入或者离开一个网络,如住宅区、学校中。

DHCP协议4个步骤
-
DHCP报文:基于UDP协议传输,规定客户端向DHCP服务器发送报文采用68号端口,服务器向客户端发送报文采用67号端口。
-
发现(DHCP discover):新加入的主机在UDP首部端口号中向67号发出 discover报文(包括一个事务ID),该UDP报文段在网络层封装为IP数据报,使用源地址0.0.0.0向目的地址255.255.255.255进行广播,然后链路层将该discover报文广播给同一子网。
-
提供(DHCP offer):当DHCP服务器收到广播后,为响应客户端,同样使用DHCP的IP地址向目的地址255.255.255.255进行广播。该offer报文包含discover报文的事务ID、DHCP服务器推荐的IP地址、网络掩码、IP地址租用期。
问:为什么DHCP offer需要向全网广播?
答:因为可能在该子网内存在着多个DHCP服务器,那么此时客户端可以择优选择DHCP服务器 -
请求(DHCP request):客户端选择其中一个服务器,并向服务器发送request报文作为响应,回显配置的参数
-
确认(DHCP ACK):服务器确认满足客户端的参数要求。(当ACK之后,在租用期内客户可以使用DHCP分配的IP地址,若租用期到达后仍希望使用该IP地址,还可以修改租用期)

- DHCP缺陷:移动性不好,当客户机在网络中移动时,需要不停更新IP地址,不能维持客户机的TCP连接。所以据此,移动IP机制可以支持移动节点仍使用永久单一的IP地址。
NAT网络地址转换
- NAT使能路由器
- 作用:将子网内部的私有IP转化为外网的公有IP,外网只能看到同一个具有单一IP的单个设备(看不到网络内部细节),这些地址都是通过路由器中的DHCP服务器进行分配和管理的。
- NAT转换表:实现外网与网络内部主机的映射,包含IP地址、端口号
- NAT中间盒:虽然运行在网络层但是不执行数据包的转发,而是进行NAT地址转换、流量流的负载均衡、流量防火墙等
- NAT工作流程:
①外出的分组:替换原分组的(源IP地址,端口号)为(NAT IP地址,新端口号)
②更新转换表:增加(源IP地址,端口号)到(NAT IP地址,新端口号)的映射
③进来的分组:查找转换表,替换原分组的(NAT IP地址,新端口号)为(源IP地址,端口号) - NAT示意图:

-
NAT争议:
①端口号应用来进程寻址(不是主机寻址)
②路由器只能处理到网络层(不能处理端到端)
③应该使用IPv6解决地址短缺(不能使用NAT进行内/外网分离) -
防火墙和入侵检测系统(IDS):
- 防火墙:大多数路由器具有防火墙功能,负责检查数据报和报文段的首部字段,拒绝可疑的数据报进入网络内部。(防止端口扫描,拦截指定源主机、目的主机、端口号的数据报,跟踪TCP连接)
- IDS:通产位于网络的边界,执行“更深层次的检查”,检查数据报首部和数据部分。IDS需要维护一个分组特征数据库,数据库包含已知攻击的特征。当分组经过IDS匹配为攻击,则发出警告。
通用转发和SDN
- 通用转发表:定义了一种“匹配加动作”范式,通过对分组首部字段进行“匹配”,将分组转发到输出端口。该通用转发表由远程控制器进行更新维护。
- 通用转发的作用:转发分组、负载均衡、充当防火墙
- 原理示意图:

OpenFlow1.0
- 作用:一个高度认可的标准,引入抽象加动作、控制器、SDN等概念
- 流表:实现的通用转发表,包含首部字段值的集合、计数器集合、动作三个字段。
匹配
- 原理:到达第二层分组交换机的链路层帧中,有效载荷是网络层(第三层)的IP数据报,而IP数据报的有效载荷又是传输层(第四层)的报文段。OpenFlow允许对三层协议中的首部进行选择性“匹配”。(注意:不是所有字段进行匹配,符合抽象)
- 入端口:指分组交换机上接收分组的输入端口ID号

动作
- 转发:一个入分组可以转发到特定输出端口的单播、广播到所有端口、选择端口集合进行多播
- 丢弃:当个匹配的分组对应的流表项中没有动作是,丢弃分组
- 修改字段:在分组被转发到目的输出端口之前,可以修改10个字段(除“IP协议”字段)
路由选择算法
- 路由的基本概念
- 默认路由器:与主机直接相连的路由器,又叫第一条路由器。当主机发送一个分组时,都先传送给它的默认路由器。
- 源路由器:源主机的默认路由器
- 目的路由器:目的主机的默认路由器
- 路径:从源主机到目的主机的路径,归结为源路由器到目的路由器的选路
- 路由算法:确定一个分组从源路由器到目的路由器所经过路径的算法
- 算法的关键:找到最低开销路径
- 默认路由器:与主机直接相连的路由器,又叫第一条路由器。当主机发送一个分组时,都先传送给它的默认路由器。
- 网络抽象模型——图
- 路由算法分类
- 全局路由算法:使用完整的、全局性的网络信息计算最低开销路径。具有全局状态信息的算法称为链路状态算法(Linked State,LS)
- 分布式路由算法:路由器以迭代式、分布式的方式计算出最低费用路径。如:距离向量路由算法(Distence-Vector,DV),每个节点维护到网络中所有节点的开销估计的向量。
- 每个节点只知道与其直接相邻的链路开销信息。
- 通过迭代计算,并于相邻节点交换信息
- 逐步计算出全局的最低开销路径
- 静态路由算法:路由确定后基本不再变化。只有人工干预时,可能会变化。
- 动态路由算法:随着网络流量负载或拓扑发生变化而改变。可以周期性允许或直接响应外界变化。易受路由选择循环、路由震荡的问题。
链路状态路由选择算法
- 特点:每个节点通过向网络中其他所有节点广播链路状态分组,实现所有节点都具有统一的、完整的链路视图。
Dijkstra算法
-
算法思想:以任意一个节点为源节点,迭代k次找出其到达K个目的节点的最低费用路径。
-
参数定义:
-
算法伪代码:
-
算法结果:获得源节点到所有目的节点的最低开销 D(x)、到目的节点的最短路径的前一节点P(x)
-
转发表:存放源节点到每个目的节点的最低费用的路径上的下一跳节点(最低路径中第一跳节点)。
-
时间复杂度:O(n^2)
距离向量路由算法
-
特点:是一种迭代的、异步的和分布式的算法。
- 分布式:每个节点都需从其直接相连另据接收信息,进行计算后将结果发给其邻居
- 迭代的:计算过程已知持续到邻居之间无更多信息交换为止(算法是自我终结的,没有计算时就停止)
- 异步的:不要求所有节点相互之间步伐一致地操作
-
算法思想:

- 参数定义:Bellman-Ford方程——遍历x的所有邻居,确定途径邻居节点的最低路径的最小值。
- Bellman-Ford方程的贡献:①在转发表中确定x到y经过的最佳邻居节点;②提出了DV算法中邻居间的通信机制。

- 算法伪代码:
- 第10~11行:每个节点等待来自任何邻居的更新
- 第13~14行:当收到一个更新时,计算节点的新的距离向量,确定最小值邻居并更新自己的转发表项
- 第16~17行:通知邻居其新的距离向量

- 算法示例图:
- 初始化:三张表的最左边矩阵
- 第一次向邻居通知:中间矩阵
- 第二次向邻居通知:最右边矩阵
- 每个节点的转发表都是统一的、最佳的最低开销

-
链路费用改变于链路故障:当一个节点检测到从它到邻居的链路费用发生变化时,就更新距离向量。如果最低费用路径的费用发生变化时,还要通知邻居。
- 某条链路费用减少时情况:
- 某条链路费用增加时情况:
LS与DV算法比较


因特网中自治系统内部的路由选择
- 自治系统(Autonomous System,AS):
- 将一组处在相同控制下的路由器组织起来,同一个AS下的路由器执行相同的路由选择算法。
- 一个自治系统由其全局唯一的AS号标识。
- 通常一个ISP的路由器及中间链路组成一个AS,但是也存在某些ISP将其网络划分为多个AS。
- 自治系统内部路由选择协议:在一个自治系统内运行的路由选择算法
在因特网内自治系统的路由选择算法主要有:OSPF、RIP、IS-IS
开放最短路优先OSPF
- 定义:OSPF是一种链路状态协议,使用洪泛链路状态信息和Dijkstra选路算法。每台路由器都要运行Dijkstra选路算法,确定以自身为根节点到所有子网的最短路径树。每台路由器都构建了整个AS的完整拓扑图。
- 洪泛链路状态:当其中某条链路状态发生变化时,路由器会向AS内所有其他路由器广播链路信息。即便没有链路状态改变,路由器也同样要周期性地广播链路状态(至少间隔30min)。
- OSPF报文:该报文直接由IP数据报携带,OSPF协议号为89。(网络层对应协议号,传输层对应端口号)
- OSPF优点:
- 安全:能够鉴别OSPF路由器之间的信息交换,防止恶意入侵者将其他信息注入OSPF路由器内。
- 使用多条相同开销的路径:当到达某目的地的多条路径具有相同开销时,OSPF允许使用多条而不是仅仅使用其中一条,充分利用资源带宽。
- 支持单播、多播:多播OSPF提供多播路由选择
- 支持在单个AS中的层次结构:
- 一个OSPF自治系统可以层次化地配置成多个区域
- 每个区域都运行自己的OSPF链路状态路由选择算法
- 一个区域内的每台路由器都向该区域内的所有其他路由器广播链路状态信息
- 由区域边界路由器负责为流出该区域的分组提供路由选择
- 在整个AS内只有一个OSPF区域配置成主干区域,主干区域为该AS内的其他区域提供路由选择,主干区域肯定包括了所有边界路由器。
- AS内区域之间的 路由选择要求,分组首先到达自身区域的边界路由器,在同主干区域到达目的区域的边界路由器,最后在目的网络内部到达目的主机。
路由选择信息协议RIP
- 定义:RIP是一种距离向量协议,其中使用跳数作为费用测量。
- 跳:从源路由器到目的子网(包括目的在子网)的最短路径所经过的子网数量。 一条路径的最大费用被限制为15,所以RIP限制的子网直径≤15。
- RIP响应报文:
- 路由器向邻居发送的路由选择更新信息,邻居间大约30s交换一次。报文内容包括该AS内的多达25个目的子网的列表以及发送路由器到各目的子网的距离。又被称为RIP通告。
- 路由器在UDP上使用端口520相互发送RIP请求与响应报文,即RIP路由选择是通过UDP协议实现的
- RIP表:路由器保存的路由选择表,AS内每个子网表示一个表项,表项包括路由器的距离向量表、路由转发表。
- 不可达:
- 正常情况下,RIP路由器之间大约30s交互通知,但是一旦路由器超过180s没有收到其邻居的报文,则该邻居是不可达的。(要么邻居死机,要么连接中断。)
- 解决方法:RIP修改 本地路由选择表,然后通过向相邻可达的路由器发送通告,告知可达的邻居其不可达的路由器。
因特网自治系统之间的路由选择
BGP
边界网关协议(Broder Gateway Protocol,BGP)
- 定义:在因特网中,所有的AS运行相同的AS间路由选择协议,协调多个AS间的通信。
- BGP的作用:实现分组向位于AS外部的目的子网的路由转发,即转发到CIDR的前缀—目的子网。
如:一台路由器的转发表项为(x=38.16.68/22,I=333),x表示目的子网,I表示路由器的出端口号。
- BGP的任务:
- 从邻居AS获得前缀的可达性信息:BGP允许每个子网向其他子网通知它的存在,表示子网可达
- 确定到该前缀的“最佳的”路由:当路由器知道目的子网的路径可能有多条时,由BGP确保其中的最佳路由。
- BGP报文:基于TCP ,每对路由器通过179端口号进行半永久TCP连接交换路由选择信息。
- 半永久连接: 占用交换机网络资源,连接时间较长,但所连接的两个设备之间并不需要物理连线连接,由人机命令下达直接建立连接。
- 所有通过该连接发送的BGP报文,称为BGP连接。连接不同AS的BGP连接称为外部BGP连接(eBGP),在相同AS内部的两台路由器之间的BGP会话称为内部BGP连接(iBGP)。
使用BGP会话将AS3中的x子网向AS2与AS1中的所有路由器通知可达性:
首先网关路由器3a向网关路由器2c发送一个eBGP报文“AS3 x”。
网关路由器2c在向AS2中的所有其他路由器发送iBGP报文“AS3 x”。
然后网关路由器2a接下来向网络路由器1c发送eBGP报文“AS2 AS3 x”。
最后,网关路由器1c使用iBGP报文向AS1中的所有路由器发送报文“AS2 AS3 x”。
全部完成后,在AS1和AS2中的每个路由器都知道了x的存在并且也知道了通往x的AS路径。
确定最佳路由
- BGP属性:当路由器通过BGP连接通告前缀时,包括一些BGP属性,其中最重要的是AS-PATH和NEXT-HOP
- AS-PATH:①包含了报文已经通知了的AS列表;如:从AS1到x的路径,AS-PATH “AS2 AS3” 和 AS-PATH “AS3”
②还可用于检测和防止通告环路,当在AS-PATH中发现自己的AS时,表示出现环路,拒绝该通告;如 AS-PATH “AS2 AS3 AS1” - NEXT-HOP:指AS-PATH的第一跳路由器接口的IP地址。
- AS-PATH:①包含了报文已经通知了的AS列表;如:从AS1到x的路径,AS-PATH “AS2 AS3” 和 AS-PATH “AS3”
- BGP目标路由3组件:NEXT-HOP,ASPATH,目的前缀
路由器2a的最左侧接口的IP地址:AS2 AS3;x
路由器3d的最左侧接口的IP地址:AS3;x
路由器选择算法
- 热土豆路由选择:贪心算法,在其AS内部路由的开销最小,而不管到目的地的剩余开销,尽可能快的转发出该AS。
- 算法步骤
- 目标任务:使路由器能够在多条路由中,选择出到NEXT-HOP路由器的最小开销的内部路径,并且将该路径添加到该路由器的转发表中。
- 算法步骤
- 路由器选择算法:对任何给定的目的地前缀,路由器对所有路由按照消除规则进行消除。
- 消除规则:
- 路由将被指派一个本地偏好值作为其属性之一(除AS-PATH和NEXT-HOP外),具有最高本地偏好值的路由将被选中。
- 从剩余的路由中(所有都具有相同的最高本地偏好值),将选择具有最短AS-PATH的路由。
- 从剩余的路由中(所有都具有相同的最高本地偏好值和AS-PATH长度),使用热土豆路由选择算法,即选择具有最近的NEXT-HOP路由器的路由。
- 如果还有多条,该路由器使用BGP标识符来选择路由。
- 消除规则:
IP任播
- IP任播:BGP除了进行AS间路由,还可以实现IP任播服务。
- DNS系统:IP任播被DNS系统广泛地用在将DNS请求指向最近的根DNS服务器。
例:根服务器有13个IP地址,但是每个IP地址对应着多个DNS根服务器,根服务器可以分布在全球各地。当一个DNS请求向这13个IP地址发送时,使用IP任播的机制将请求路由到最近的DNS根服务器。
因特网控制报文协议:ICMP
- 作用:ICMP被主机和路由器用来进行网络层的信息交互,常用于差错报告。如:当HTTP会话出现“目的网络不可达”时,就会反馈ICMP报文。注意:ICMP最初的目的是执行拥塞控制,即发生拥塞的路由器向源主机发送ICMP源抑制报文,强制源主机减小发送速率。
- 体系层次:ICMP在体系结构上位于IP之上,因为ICMP报文封装在IP数据报的数据部分。所以当接收方收到ICMP报文时,网络层分解出IP数据报的内容递交给上层的ICMP。
- ICMP报文格式:
- ICMP报文类型:
ping程序测试网络:发送ICMP-8报文到指定主机,检查是否有ICMP-0回显报文。
简单网络管理协议:SNMP
网络管理框架
- 管理服务器:本质为应用程序,控制网络管理信息的收集、处理、分析、显示,控制网络行为等。
- 被管设备:主机、路由器、交换机、中间盒、调制解调器、温度计或其他联网设备,被管对象是实际硬件设备及其软硬件的配置参数。
- 管理信息库MIB:一个被管设备中每个被管对象的关联信息。
- 网络管理代理:属于被管对象的一个进程,该代理实现被管对象与管理服务器之间的通信。
- 网络管理协议:协议运行在管理服务器和被管设备之间,运行服务器查看被管设备的状态,并经过其代理间接在设备上采取行动。

简单网络管理协议
- 作用:属于应用层协议,在管理服务器和代表管理服务器执行的代理之间,传递网络管理控制和信息报文。
- 请求响应模式:SNMP管理服务器向SNMP代理发送一个请求,代理收到请求后,执行某些动作,然后对该请求发送一个回答。(请求一般用于查询或修改与被管对象关联的MIB对象值)
- 陷阱报文:由SNMP代理向管理服务器发送一个非请求报文,用于通知管理服务器,出现异常情况导致被管设备的MIB值改变。
- SNMP报文格式:
