网络层

本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-04-18

一、网络层服务

网络层的主要作用是将承载传输层报文的网络层数据报从源主机送达目的主机。

主要功能包括:

  • 转发:分组从输入接口转移到输出接口。
  • 路由选择:决定分组经过的路由或路径。

二、数据报网络与虚电路网络

数据报网络:按照目的主机地址进行路由选择的网络。

数据报网络特点:
1、无连接;本质上是不可靠的,现在的实际网络采用数据报网络,因为它的效率高。
2、每个分组作为一个独立的数据报进行传送,路径可能不同。
3、分组可能出现乱序和丢失。

虚电路网络:在网络层提供面向连接的分组交换服务。

虚电路网络特点:
1、建立一条网络层逻辑连接;
2、不需要为每条虚电路分配独享资源(区别于电路交换)。
3、根据虚电路号沿虚电路路径按序发送分组。

数据报网络与虚电路网络的比较

三、网络互连与网络互连设备

异构网络互连

异构网络:两个网络的通信技术和运行的协议不同。

异构网络互连的基本策略:

1、协议转换

2、构建虚拟互连网络,都是IP协议的“下层”协议,用不同的技术但是传输的都是IP数据报;用IP协议构建了虚拟互连网络;现实网络采用的更多。

路由器

路由器最重要的基本功能是转发与路由选择

路由器是一种具有多个输入端口和多个输出端口的专用计算器;每个端口可以处理不同协议的数据;主要任务是获取与维护路由信息以及转发分组,是典型的网络层设备;从功能体系结构角度,分为输入端口、输出端口、交换结构、路由处理器;

路由器在收到IP数据报之后,会根据IP数据报的目的IP地址,检索匹配路由表,如果没有匹配成功,则通过默认路由对应的接口转发;匹配成功,则从对应的接口转发;如果匹配成功多条,则选择网络前缀匹配成功位数最长的路由项,通过该路由项指定的借口转发,遵循“最长前缀匹配有限原则”。

输入端口

输入端口负责从物理接口接收信号,还原数据链路层帧,提取IP数据报(或其他网络层协议分组),根据IP数据报的目的IP地址检索路由表,决策需要将该IP数据报交换到哪个输出端口。

当确定转发至哪个输出端口后,需要交给交换结构进行转发;同时输入端口除了需要提供查找、转发的功能,还需要提供对到达分组的缓存排队功能。

交换结构

交换结构负责具体的转发工作,完成将输入端口的IP数据报交换到指定的输出端口;分为3种形式的交换结构:基于内存交换、基于总线交换、基于网络交换。

基于内存交换:当分组到达输入端口时,通过中断方式将分组由输入端口送至内存,路由处理器对内存中的分组首部进行解析获取目的地,继而查找转发表,然后将分组复制到对应的输出端口。

基于总线交换:路由器的输入端口、输出端口同时连接到一条数据总线上,到达输入端口的分组经过查询转发表确定输出端口,然后经由数据总线传输至指定输出端口;具有独占性,当多个输入端口的分组到达时,只有一个分组能通过总线传输到相应的输出端口,其他的需要排队等待,影响效率;

基于网络交换:基于网络交换可以实现并行交换传输,提高效率;但是如果两个不同输入端口的数据需要到达同一输出端口,那么另一个依然需要等待;

总述,基于内存交换的交换结构性能最低,但是价格最便宜;相反基于网络交换的交换结构性能最好,价格昂贵;

输出端口

输出端口排队交换到达该端口的待发送分组,并进行数据链路层数据帧的封装,通过物理线路端发送出去;跟输入端口一样需要具备缓存排队功能;

当缓存累积达到一定大小后,之后到达的分组会被丢弃,产生丢包现象,影响整个网络的吞吐量;输出端口通常对队列中的分组执行FCFS先到先服务的调度策略,其他调度策略有:按优先级调度、按IP数据报的服务类型(Type of Service, ToS)调度。

路由处理器

路由处理器就是路由器的CPU,负责执行路由器的各种指令,包括路由协议的运行、路由计算以及路由表的更新维护等;

四、网络层拥塞控制

网络拥塞

拥塞:一种持续过载的网络状态,此时用户对网络资源(包括链路带宽、存储空间和处理器处理能力等)的总需求超过了网络固有的容量;

产生拥塞的原因:
1、缓冲区容量有限;
2、传输线路的带宽有限;
3、网络结点的处理能力有限;
4、网络中某些部分发生了故障;

流量感知路由

流量感知路由:根据网络负载动态调整,将网络流量引导到不同的链路上,均衡网络负载,从而延缓或避免拥塞发生,是一种拥塞预防措施;

将网络中链路的权值,设置为以链路带宽、传输迟延、链路负载等为变量的函数,那么当网络中链路上的负载、延迟发生变化时,链路的权值同会得到更新,继而通过路由选择算法逐步使网络中的各结点的路由表得到更新;

解决网络负载的振荡现象主要有两种:

1、多路径路由,即两个区域间流量的传输分散到两条不同的链路上;
2、缓慢转移流量至另一条链路上。

准入控制

准入控制:是一种广泛应用于虚电路网络的拥塞预防技术;

基本思想:对新建电路进行审核,如果新建的虚电路会都导致网络变动拥塞,那么网络拒绝建立该新虚电路;类似设卡,根据拥塞程度缓慢放行;

拥塞状况的量化:基于平均流量和瞬时流量来判断是否有能力接受新虚电路而不会发生拥塞;

流量调节

1、感知拥塞:当某个网络结点(如路由器)感知到当前网络发生了拥塞时,通知其上游结点(或端系统)减低发送效率, 从而逐渐消除拥塞;一般通过过去一段时间内的排队延迟以及当前的瞬时排队延迟的加权组合,来对当前的排队延迟进行估计,从而对网络拥塞状况进行较为准确的判断。

2、处理拥塞:如何将拥塞信息通知到上游;

  • 抑制分组:给拥塞数据报的源主机返回一个抑制分组;

  • 背压:让抑制分组在从拥塞结点到源结点的路径上的每一跳,都发挥抑制作用;

负载脱落

负载脱落:路由器主动丢弃某些数据报;

如何选择丢弃的数据报:

  • 丢弃新分组:如GBN,因为GBN的接收窗口为1,如果丢弃到了较老的分组n,那么即使较新的分组n+1到达了接收方也没用,最后依然会重发所有当前发送窗口的所有分组;

  • 丢弃老分组:如实时视频流;

五、Internet网络层

IPv4协议

IP数据报格式

版本号:占4位,给出IP的版本号;

首部长度字节:占4位,最大数值位15,单位为4字节,即IP报首部长度的最大值为60字节

区分服务:占8位,ToS字段,用来指示期望获得哪种类型的服务;

数据报长度:占16位,给出IP数据报的总字节数,包括首部和数据部分,因此最大IP数据报的大小为65535-20 = 65515字节,但是几乎没有如此大的MTU(最大传输单元)

标识字段:占16位,用于标识一个IP数据报,作为ID;不同主机产生的IP数据报完全有可能具有相同的标识ID,所以IP是依靠标识字段源IP地址加上目的IP地址公同标识一个唯一IP数据报,最重要的用途是在IP数据报分片和重组过程中,用于标识属于同一源IP数据报。

标志位:第一位保留,第二位为DF位(Don’t Fragment),为1时表示禁止分片,为0时标识允许路由器将该IP数据报分片;第三位为MF位(More Fragment)为0时表示该IP数据报是一个未被分片的IP数据报或者是被分片IP数据报的最后一片,为1时表明该IP数据报一定是一个IP数据报的分片并且不是最后一片;

片便移字段:占13位,以8字节为单位,标识IP数据报分片封装与原IP数据报的相对偏离量,即封装的数据分片从原整个数据报的哪个字节开始;为什么以8个字节为单位,是因为IP数据报的总长度占16位,213 * 23等于216次方,所以以8字节为单位,才能表达IP数据报的所有可能存储的偏移量。

生存时间(Time-To-Live, TTL):占8位,表示IP数据报在网络中可以通过的路由器数(或跳步数),源主机在生存IP数据报时设置TTL初值,没经过路由器转发一次,TTL减1,如果TTL=0,路由器则丢弃该数据报,并向源主机发送Type=11,Code=0的ICMP报文;因为其占8位,所以一个IPv4的数据报最多能够经过256跳(经过255个交换结点);

上层协议字段:占8位,指示该IP数据报封装的是哪个上层协议的报文段,6代表TCP,17代表UDP;IP利用该字段实现IP的多路复用与多路分解;

首部校验和:占16位,计算校验和时,该字段全置0,按16位对齐相加,溢出回卷,最后取反码作为校验和字段;在接收到IP数据分组时,将整个首部按照同样的方式计算,结果为16位1,则代表无差错,否则代表有差错,丢弃该分组;有些首部在转发过程会改变,例如TTL没经过一次路由器就会改变,所以校验和也是逐跳校验、逐跳计算的;

源IP地址:占32位,表示发出IP数据报源主机的IP地址;

目的IP地址:占32位,表示IP数据报需要送达的主机IP地址,路由器就是根据该地址检索路由表,决策如何转发该IP数据报;

选项:0~40字节,用来对IP首部进行扩展,可以携带安全、源选路径、时间戳和路由记录等内容;

数据字段:存放了IP数据报所封装的传输层的报文段,在目的主机会将其所承载的数据交付给相应的上层协议;

IP数据报分片

因为IP数据报最终要交给数据链路层,而数据链路层的协议所能承载的网络层数据报的最大长度不尽相同,以太网帧的最大长度为1500字节,所以即使IP数据报的总长度最大可达65535字节,但是大部分情况下很少超过1500字节;

数据链路层所能承载的最大数据量称为该链路的最大传输单元(MTU, Maximum Transmission Unit),若IP数据报的总长度为L字节(包括首部),待转发链路的MTU为M字节,若L > M,则必然需要分片,此时DF为0;MF用来判断是否是该数据报的最后一个分片;

最大分片可封装的数据长度(字节)为:d = (M -20),减去首部最小固定长度;

需要的IP分片总数为: n = (L - 20) / d

每个分片的片偏移字段为 F = (d / 8) (i-1)

每个分片的总长度,1 <= i < n时,都为 d + 20MTU,i = n时,Li = L - d * (n -1)

IPv4编址

IPv4地址长度:32位二进制,通常分为4 * 8组,用点分十进制标识法表示;

分类地址

分类地址:A、B、C、D、E五类,A、B、C三类可以分配给主机或路由器使用,D类地址作为组播地址,E类地址保留;

前缀被称为网络号,后缀被称为主机号,网络号表示这个IP地址所在网络的编号,要求所有同属于一个网络的主机,它们的IP地址必须都具有相同的网络号,主机号却各不相同;

IP地址分类

则可以根据一个IP地址的最高位判断到底是A、B、C哪类地址;

特殊地址

若前缀固定,主机号若全为0,不被使用,被称作为网络地址,表示一个网络; 若前缀固定,主机号全为1,也不被使用,被称作为直接广播地址,对特定网络上的所有主机进行广播; 故每个A、B、C类网络的可分配IP地址数,都需要减去2;

若32位全为0,则在本网范围内表示本机;在路由表中表示默认路由;可以作为源地址,但不能作为目的地址; 若32位全为1,则表示本网广播地址;可以作为目的地址,代表本网其他所有网络,但不能作为源地址;

私有地址

有一部分地址保留于内部网络,称为私有地址,这部分地址可用在内网中使用,但不能在公网中使用;

A类地址的私有地址范围:10.0.0.0 ~ 10.255.255.255,即子网10.0.0.0/8; B类地址的私有地址范围:172.16.0.0 ~ 176.31.255.255,即子网172.16.0.0/12; C类地址的私有地址范围:192.168.0.0 ~ 192.168.255.255,即子网192.168.0.0/16;

子网划分

子网划分:将一个较大的子网划分为多个较小子网的过程,较大子网具有较短的网络前缀,较小子网具有稍长的网络前缀。

路由聚合:将具有较长前缀、相对较小的子网合并为一个具有稍短前缀、相对较大的子网。

子网掩码:用来定义一个子网的网络前缀长度,前缀部分全1,后缀部分全0;

IP地址与子网掩码进行与运算,则得到子网地址;

根据子网掩码全为1的位数n,可以确定该子网的网络前缀位数为n,然后固定子网地址前n位,后面变动位主机号全为0时为子网地址,全为1时为直接广播地址,地址范围则是 n位前缀 + (32-n)位 0 ~ n位前缀 + (32-n)位 1 共 232 - n个,故可分配地址为232 - n- 2个;

子网划分,子网掩码延长r位,则该子网能够划分为2r个子网;若一个子网的网络前缀为n位,则该子网共有IP地址232 - n个,可以进一步划分为子网掩码为2r个IP地址数为 232-n-r的子网;累加所有划分出来的最终更小子网的IP地址个数是不变的。

路由聚合

主要应用在路由器的转发表中,将相同路由,并且拥有相同下一跳地址的连续子网合并;需要注意的是,在转发查表的时候,有可能匹配到多个项,则按最长前缀匹配的那个进行转发;

当路由器接收到一个IP数据报时,根据其IP地址在路由表进行查找匹配,匹配原则是:**将目的IP地址与该项的子网掩码进行与运算,如果得到的值与该项匹配则匹配;**例如15.65.154.130,与路由表有相关的15.65.154.0/26、15.65.154.64/26、15.65.154.128/26、15.65.154.192/26中4项,则与该4项都进行与预算,他们的前缀均为26位,则子网掩码都为255.255.255.128,15.65.154.130 与 255.255.255.128进行与运算得到15.65.154.128,则匹配第三项;

同时这4项可以进行路由聚合,前缀均为26位,前24位相同,第一项另两位为00,第二项另两位为01,第三项另两位为10,第四项两位为11,代表是连续的子网,可以聚合为15.65.154.0/24,即将子网掩码根据连续情况缩短2位,与这4项任意一项进行与运算(结果相同),均可得到聚合后的子网;例如:255.255.255.0 和 15.65.154.192 进行 与运算 得到 15.65.154.0;

动态主机配置协议

动态主机配置协议DHCP:为网络内的主机提供动态IP地址分配服务;

过程:
1、DHCP服务器发现,新到达主机先发送DHCP发现报文,向直接广播地址发送;
2、DHCP服务器提供,所有收到广播的DHCP服务器发送DHCP提供报文,也是广播,因为此时新主机还没有IP地址;
3、DHCP服务器请求,新到达主机收到DHCP提供报文之后,选择其中一个发送DHCP请求报文,也是使用广播,因为需要告诉未被选择的DHCP服务器我没有选择你;
4、DHCP确认,被选择的DHCP服务器发送DHCP确认对DHCP请求报文进行响应,当客户主机到确认响应后,开始正式使用该服务器为其提供的IP地址;

其中提供报文中包含了DHCP服务器为新加入网络的主机分配的IP地址、用于标识一次DHCP过程的标识符、子网掩码、默认网关、本地域名服务器IP地址以及IP地址的租期等信息;

网络地址转换

因为现实中我们的IP地址不够用,但是可以使用私有地址进行转换从而访问互联网,即网络地址转换(Network Address Translation, NAT),NAT通常是运行在私有网络的边缘路由器(或专门的服务器)上

过程:

1、从内网进入互联网的IP数据报: 将其源IP地址替换为NAT服务器拥有的合法的公共IP地址,同时替换源端口号,并将替换关系记录到NAT转换表中;

2、从互联网返回的IP数据报: 依据其目的IP地址与目的端口检索NAT转换表,得到原有的IP地址与端口号,替换目的IP地址与目的端口号,然后将数据转发到内部网络;

意思大概就是找一个能出去的人代为传送和收取,这个代理会记录这一次的两方,当有回信的时候,根据记录返给内部主机;

但是,从上描述可以知道,外网主机不能主动与内网主机通信,因为NAT转换表中还没有这份映射,但现实中会有这样的需求,即需要在内网主机上运行面向外网提供服务的服务器,我向外网提供服务,那么外网必须能够主动访问我呀;而解决这一问题的技术为NAT穿透技术;

所谓NAT穿透技术就是在外网主机主动与内网主机发起通信之前,先在NAT转换表中建立好内网到外网的映射,使内网运行的服务以NAT公网地址的“合法”身法“暴露”出去。

这样,在外网主机看来他是与NAT公网地址上运行的服务器在进行通信,而实际上NAT公网地址收到IP数据报后会转发给内网主机;例如内网主机使用私有地址10.0.0.1,在其上运行web服务器,向外提供web服务;那么,就静态配置一条NAT转换表记录,(公网地址,私有地址)(205.35.12.3:80,10.0.0.1:80),外网访问205.35.12.3:80则被穿透最终传输到10.0.0.1:80;

比较典型的是基于UPnP(Universal Plug and Play)协议实现动态NAT穿透配置,要求内网主机与NAT都支持UPnP协议,内网主机上运行的网络应用可以基于UPnP协议,请求NAT配置一项内网到公网的映射,从而将内网主机上运行的服务,以NAT的公网地址身份“暴露”出去。

ICMP

互联网控制报文协议(Internet Control Message Protocol, ICMP)主要功能是在主机或路由器间,实现差错信息报告与网络探询;网络探询指通过主动发送ICMP询问请求报文,并通过接受ICMP响应报文,可以实现网络可达性(如ping)或特定信息的探询;

通常ICMP被认为是IP的一部分,但从体系结构角度看,ICMP在IP之上,因为ICMP的消息需要封装在IP数据报中;

ICMP差错报告报文共有5种:终点不可达(报文类型为3)、源点抑制(报文类型为4)、时间超时(报文类型为11)、参数问题(报文类型为12)和路由重定向(报文类型为5)

ICMP询问报文有2种:回声(echo)请求/应答(报文类型为0/8)、时间戳(timestamp)请求/应答(报文类型为13/14)

IPv6

1、解决IPv4地址耗尽的问题。 2、IPv6报文首部长度固定为40字节。 3、IPv6中IP地址长度为128位。

IPv6数据报格式

版本字段:占4位,与IPv4一样,给出协议版本号;

流量类型字段,占8位,与IPv4数据报中的ToS字段具有相似含义,区分服务;

流标签:占20位,用于标识一系列数据报的流。

有效载荷长度:占16位,说明IPv6数据的字节长度;

下一个首部字段:占8位,用于标识数据报中承载的数据应该交付给哪个上层洗衣,比如UDP、TCP;

跳数限制:占8位,与IPv4中的TTL具有相同含义;

IPv6地址长度为128位,通常采用8组冒号分割的16进制数地址形式标识;每16位转换一个16进制数用冒号分割;

可以使用两个冒号来表示连续的多组0000,即8000:0000:0000:0000:1234:5678:90AB:CDEF,可以压缩表示为8000::1234:5678:90AB:CDEF;也可以将低32位携程点分十进制形式,如8000::1234:5678:144.171.205.239。

IPv4到IPv6的迁移

IPv4向IPv6的转换很明显是一个缓慢的过程,会在相当长的一段时间内,IPv4与IPv6将共存。

一种实现IPv4与IPv6的共存的有效解决方案是采用**双协议栈,要求双协议栈点即支持IPv6的网络结点同时也支持IPv4,同时具备发送IPv4数据报与IPv6数据报的能力;**同时能够感知另一结点是否提供IPv6服务,会使用DNS来感知,DNS查询返回的结果来分辨是IPv4地址或者IPv6地址,从而判断该结点提供哪种服务;

存在的问题,不能保证途径的所有结点都是双协议结点,即使有双协议结点来进行转换,但是由于IPv6首部与IPv4首部并不是一一对应的,因此在转换时,必然会出现信息丢失;

为了解决这一问题,提出了隧道技术,在隧道方案中,通信源端与目的端都提供IPv6服务,但途径一段IPv4网络,为了使其成功通过,该路由器将整个IPv6数据报封装到一个IPv4数据报中,作为IPv4数据报的有效载荷,并将该IPv4数据报的目的地址修改为隧道后的第一个IPv6路由器上,此IPv6路由器在收到该数据报时,将IPv6数据报从IPv4数据报中提取出来,并转发至通信目的主机,这样就不会出现信息丢失的问题了;

六、路由算法与路由协议

路由算法分为全局式路由选择算法和分布式路由选择算法,这两种都是动态路由选择算法;

全局式路由选择算法:每一个路由器在计算路由时,都需要根据网络的完整信息来进行计算最短路径;

分布式路由选择算法:结点只需获知与其相连的链路的“费用信息”,以及邻居结点通告的到达其他结点的最短距离信息(估计),经过不断的迭代运算,最终获知由哪个邻居可以具有到达目的结点的最短距离

链路状态路由选择算法

链路状态路由选择算法是一种全局式路由选择算法,简称LS算法,每个路由器通过其他路由器获得的链路状态信息构建出整个网络的拓扑图;为了构建整个网络的拓扑图,每个路由周期性检测、收集与其直接相连链路的费用,以及与其直接相连的路由器ID等信息,构造链路状态分组,并向全网广播扩散;

计算最短路径——迪杰斯特拉算法:Dijkstra算法

先根据源结点,找到与其直接连接的链路中最短的那个结点加入到集合中,再迭代扩展计算;

距离向量路由选择算法

距离向量路由选择算法是一种分布式路由选择算法,简称DV算法,每个结点基于其与邻居结点的直接链路距离,以及邻居结点的交换过来的距离向量,计算并更新到达每个目的结点的最短距离,然后将新的距离向量再通过给其所有邻居,直到距离向量不再改变;

示例

如图,首先根据自己和邻居交换过来的距离向量生成左边的表,根据该表,求出最短距离,首先求D(xz)的,即左表中交叉的黄点,使用 0 2 7 分别加上 7 3 0 得出 7 5 7,那么更新D(xz)的最短距离应该是5,更新之后就通知其所有邻居;其邻居根据更新之后的距离向量重新计算更新自己到达目的结点的最短距离,直到距离向量不再改变;

DV算法存在无穷计数的问题

无穷计数的问题

如图,如果在某一个时刻,xy突增到50,那么就会产生无穷计数问题;我们模拟一下,最开始z记录的zx距离是5,经过y;如果此时xy之间的距离突增,那么y更新yx为6(因为z告知y,zx距离为5,此时yx为50,那么y就选择走yzx那么更新yx为6),所以z在知道yx为6之后,它也更新zx为7,路线zyx,此时y又知道zx为7了,那么他更新yx为8;这样无穷计数下去,直到34次之后,z发现zx直接链路费用更低为40,不再走zyx;

那么解决这一问题的方案就是毒性逆转计算,如果一个结点z获得到达某目的结点x最短距离为D(zx),此时利用了结点y,那么结点z告知结点y,D(zx)为无穷大,“善意欺骗”结点y,以便结点y将来不要反过来依赖自己;

层次化路由选择算法

实现大规模网络路由选择最有效、可行的解决方案为划分自治系统;因为在大规模的网络中,上述路由选择算法需要计算的时间太长了;

将大规模网络划分为多个相对小的自治系统(Autonomous System, AS),每个自治系统都分别实现自己的路由算法;每个自治系统都存在至少一个路由器与其他自治系统互连,称为网关路由器,负载与其他自治系统交换跨越自治系统的路由可达性信息;

在自治系统内,每个路由器运行的路由选择算法和协议都是相同的,如果需要互连自治系统网的结点,则统一通过网关路由器;

即将大规模互联网的路由划分为两层:自治系统内的路由选择算法和自治系统间的路由选择算法;(也可以理解为内部一层,所有网关路由器一层)

Internet路由选择协议

Internet路由选择协议分为两大类,内部网关协议和外部网关协议;

内部网关协议(Interior Gateway Protocol, IGP)
  • RIP,路由信息协议(Routing Information Protocol)

基于距离向量路由选择算法,适用于较小规模的AS,跳数作为距离度量,最大距离不超过15跳,每30秒交换一次距离向量;

路径费用16跳表示无穷大,即目的网络不可达;通过RIP响应来交换距离向量,响应报文中包含了从该路由器到达其他目的子网的估计距离列表,也称为RIP通告;RIP规定,若超过180s仍未从某个邻居收到任何RIP响应报文,则认为该邻居已经不可达,则修改本地转发表,并将此信息通过RIP响应报文告知其他邻居;

RIP是使用传输层的UDP来封装RIP报文,虽然RIP由应用进程实现,但仍然称为网络层协议,因为它完成的是网络层功能,网络的分层是按功能划分,而非依据具体的实现形式;

  • OSPF,开放最短路径优先协议(Open Shortest Path First)

基于链路状态路由选择算法,适用较大规模的AS,OSPF对权值的表示没有限制,可以是跳数,也可以是链路带宽,它只关心在给定的结点、边和边的权值的集合下,如何求解最短路径;

运行OSPF的AS内,每台路由器需要向与其同处一个AS内的所有路由器,广播链路状态分组,两种情况需要广播:路由器在其相连链路上的费用发生变化时;规定的周期性的广播;

OSPF的优点:

  • 安全。所有的OSPF报文都是经过认证的;
  • 支持多条相同费用路径,有利于实现网络流量均衡,而不是在多条时,总是把流量发往其中一条;
  • 支持区别化费用度量,支持对于同一条链路,根据IP数据报的ToS不同,设置不同的费用度量,从而实现不同类型的网络流量分流;
  • 支持单播路由与多播路由;
  • 分组路由,OSPF支持在大规模自治系统内进一步进行分层路由;这相当于限制了链路状态分组的广播范围,减少消耗;

OSPF报文则直接封装到IP数据报中进行传输。

外部网关协议(Exterior Gatewany Protocol, EGP):
  • BGP,边界网关协议(Border Gateway Protocol)

BGP典型版本为BGP4,每个AS可以通过BGP实现如下功能:

1、从相邻AS获取某子网的可达信息。
2、向本AS内部的所有路由器传播跨AS的某子网可达信息。
3、基于某子网可达信息和AS策略,决定到达该子网的最佳路由。

BGP也是由应用进程实现的,传输层使用TCP,在交换信息时,就通过使用179号端口建立的半永久TCP连接,交换BGP报文;

两端路由器被称为BGP对等方,发送报文的过程称为BGP会话;向本AS内部传播信息被称为iBGP会话,与相邻AS交换信息称为eBGP会话;

BGP主要有4中报文:

1、OPEN报文,用来与BGP对等方建立BGP会话;
2、UPDATE报文,用来通告某一路由的可达性信息,或者撤销已有路由;
3、KEEPALIVE报文,保活,用于对打开报文的确定,或周期性地证实会话的有效;
4、NOTIFICATION报文,通知,用来通告差错;

在使用BGP的网络中,每个AS都有一个全局唯一的自治系统号ASN,作为该AS的标识;

当一台路由器通过BGP会话向另一台路由器通告前缀(即网络可达信息)时,还会包含一些重要属性,例如AS-PATH,NEXT-HOP。

AS-PATH,即AS路径,是到达前缀网络需要经过的AS路径,有效预防重复通告,例如AS2-AS1-AS3,那么AS2需要发送信息给AS3,那么AS1收到之后AS-PATH的值为(AS2),AS1继续往AS3发送,等待AS3收到,此时AS-PATH的值为(AS1, AS2)

NEXT-HOP,是一个开始AS-PATH的路由器接口,例如AS2-AS1,那么NEXT-PATH为AS2中与AS1相连的网关路由器的接口;

当一条路由到达一台网关路由器之后,在一定情况下,网关路由器需要基于一定策略决定是接受还是丢弃该路由,需要按以下规则进行过滤。

本地偏好值属性(由AS网络管理员设定) > AS-PATH(越短越不会丢弃) > NEXT-HOP(当前面两个条件一样时,NEXT-HOP离的越近的越不会丢弃)