目录
网际组管理协议IGMP的基本工作原理——监视多播组的成员变化
路由选择协议
应当指出,路由选择是个非常复杂的问题,因为它是网络中的所有节点共同协调工作的结果。其次,路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。
倘若从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,则只有两大类,即静态路由选择策略与动态路由选择策略。静态路由选择也叫作非自适应路由选择,
因特网的路由选择协议特点
路由信息协议RIP
路由信息协议(Routing Information Protocol,RIP)是内部网关协议中最先得到广泛使用的协议之一。
RIP要求自治系统AS内的每一个路由器,都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为距离向量(Distance-Vector,D-V) 。
RIP衡量目的网络距离
RIP选择路由器的方式
RIP具有以下三个重要特点
RIP的基本工作流程
RIP的距离向量算法
RIP存在的问题——“坏消息传播得慢”
RIP的封装
现在较新的RIP版本是1998年11月公布的RIP2,已经成为因特网标准协议。与RIP1相比,RIP2可以支持变长子网掩码和CIDR。另外,RIP2还提供简单的鉴别过程并支持多播。
RIP相关报文使用运输层的用户数据报协议UDP进行封装,使用的UDP端口号为520。
- 从RIP报文封装的角度看,RIP属于TCP/IP体系结构的应用层。
- 但RIP的核心功能是路由选择,这属于TCP/IP体系结构的网际层。
开放最短路径优先协议OSPF
开放最短路径优先(Open Shortest Path First,OSPF)协议是为了克服路由信息协议RIP的缺点在1989年开发出来的。
- “开放”表明OSPF协议不是受某一厂商控制,而是公开发表的。
- “最短路径优先”是因为使用了Dijkstra提出的最短路径算法(Shortest Path First,SPF)。
- OSPF是基于链路状态的,而不像RIP是基于距离向量的。
- OSPF基于链路状态并采用最短路径算法计算路由,从算法上保证了不会产生路由环路。
- OSPF不限制网络规模,更新效率高,收敛速度快。
链路状态
链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价(cost)" 。“代价”用来表示费用、距离、时延和带宽等,这些都由网络管理人员来决定。
OSPF路由器邻居关系的建立和维护
OSPF相邻路由器之间通过交互问候(Hello)分组来建立和维护邻居关系。
问候(Hello)分组封装在IP数据报中,发往组播地址224.0.0.5。IP数据报首部中的协议号字段的取值为89,表明lP数据报的数据载荷为OSPF分组。
- 问候(Hello)分组的发送周期为10秒。
- 若40秒未收到来自邻居路由器的问候(Hello)分组,则认为邻居路由器不可达。
- 每个路由器都会建立一张邻居表。
链路状态通告
使用OSPF的每个路由器都会产生链路状态通告(Link State Advertisement,LSA)LSA中包含以下两类链路状态信息:
- 直连网络的链路状态信息
- 邻居路由器的链路状态信息
链路状态分组
链路状态通告LSA被封装在链路状态更新(Link State Update,LSU)分组中,采用可靠的洪泛法(Flooding)进行发送。
- 洪泛法的要点是路由器向自己所有的邻居路由器发送链路状态更新分组,收到该分组的各路由器又将该分组转发给自己所有的邻居路由器(但其上游路由器除外),以此类推。
- 可靠是指收到链路状态更新分组后要发送确认,收到重复的更新分组无需再次转发,但要发送一次确认。
链路状态数据库
- 使用OSPF的每一个路由器都有一个链路状态数据库(Link State Database,LSDB),用于存储链路状态通告LSA。
- 通过各路由器洪泛发送封装有各自链路状态通告LSA的链路状态更新分组LSU,各路由器的链路状态数据库LSDB最终将达到一致。
基于链路状态数据库进行最短路径优先计算
使用OSPF的各路由器,基于链路状态数据库LSDB进行最短路径优先计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。
OSPF的五种分组类型
OSPF构成的数据报很短。这样做可减少路由信息的通信量。
数据报很短的另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
OSPF的基本工作过程
多点接入网络中的OSPF路由器
OSPF协议划分区域
为了使OSPF协议能够用于规模很大的网络,OSPF把一个自治系统AS再划分为若干个更小的范围,称为区域(area) 。
每个区域的规模不应太大,一般所包含的路由器不应超过200个。
划分区域的好处就是把利用洪泛法消化链路状态信息的范围局限于每一个区域,而不是整个自治系统的AS,这样就减少了整个网络上的信息量。
采用划分区域的方法,虽然使交换信息的种类增多了,同时也使OSPF协议更加复杂了,但这样做能使每一个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模更大的自治系统AS.
练习
外部网关协议BGP
外部网关协议BGP对互联网非常重要。我们知道,前面两节所介绍的路由选择协议 RIP和 OSPF,都只能在一个自治系统AS内部工作。
因此,若没有协议BGP,那么分布在全世界数以万计的AS都将是一个个没有联系的孤岛。正是由于有了BGP这种黏合剂,才使得这么多的AS 孤岛能够连接成一个完整的互联网。
BGP的产生原因
由于上述情况,边界网关协议 BGP只能是力求选择出一条能够到达目的网络前缀且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由。
这里所说的BGP路由,是指经过哪些自治系统AS可以到达目的网络前缀。当然,这选择出的比较好的路由,也有时不严格地称为最佳路由。
BGP采用了路径向量(path vector)路由选择协议,它与距离向量协议(如RIP)和链路状态协议(如OSPF)都有很大的区别。
BGP的工作流程概括
BGP路由的一般格式
BGP工作流程详解
三种不同的AS自治系统
在互联网中自治系统AS的数量非常之多,其连接图也是相当复杂的。但归纳起来,可以把AS划分为三大类,即末梢AS (stub AS)、穿越AS(transit AS) 和对等AS (peering AS)。
BGP的路由选择
假如从一个AS到另外一个AS中的前缀X只有一条BGP路由,那么就不存在选择BGP路由的问题,因为这时BGP路由是唯一的。
但如果到前缀X有两条或更多的BGP路由可供选择,那么就应当根据以下的原则,按照这里给出的先后顺序,选择一条较好的BGP路由。
如果从几条BGP路由中找不出本地偏好值最高的路由,则执行下一条。
如果按前两种方法都无法选择最好的路由,那么就在要进入BGP路由的AS,执行热土豆路由选择算法
BGP适用于多级结构的因特网
BGP-4的四种报文
练习
路由器基本工作原理
路由器是一种具有多个输入端口和输出端口的专用计算机,其任务是转发分组。
路由器的工作流程
交换结构的速率
交换结构的速率对于路由器的性能是至关重要的。
IP多播
多播(Multicast,也称为组播)是一种实现“一对多”通信的技术,与传统单播“一对一”通信相比,多播可以极大地节省网络资源。
在因特网上进行的多播,称为IP多播。
IP多播可以分为以下两种:
- 只在本局域网上进行的硬件多播。
- 在因特网上进行的多播。
IP多播与多播组
目前大部分主机都是通过局域网接入因特网的。因此,在因特网上进行多播的最后阶段,还是要把IP多播数据报在局域网上用硬件多播交付给多播组的所有成员。
在局域网上进行硬件多播
剖析mac地址和ip地址的关系
收到IP多播数据报的主机还要在网际层利用软件进行过滤
在因特网上进行IP多播的两种协议
要在因特网上进行IP多播,就必须要考虑IP多播数据报经过多个多播路由器进行转发的问题。
简述两种协议的作用
网际组管理协议IGMP
和网际控制报文协议ICMP相似,IGMP使用IP数据报传递其报文(即 IGMP报文加上IP首部构成IP数据报),但它也向IP提供服务。因此,我们不把 IGMP看成是一个单独的协议,而是属于整个网际协议IP的一个组成部分。
洪泛法建立广播树
网际组管理协议IGMP的基本工作原理——加入多播组
网际组管理协议IGMP的基本工作原理——监视多播组的成员变化
网际组管理协议IGMP的基本工作原理——退出多播组
IGMPv2在IGMPv1的基础上增加了一个可选项:当主机要退出某个多播组时,可主动发送一个离开组报文而不必等待多播路由器的查询。这样可使多播路由器能够更快地发现某个组有成员离开。
多播路由选择协议
基于源树的多播路由选择的最典型算法是反向路径多播(Reverse Path Multicasting,RPM)算法。
RPM算法包含以下两个步骤:
- 利用反向路径广播(Reverse Path Broadcasting,RPB)算法建立一个广播转发树。
- 利用剪枝(Pruning)算法,剪除广播转发树中的下游非成员路由器,获得一个多播转发树。
要建立广播转发树,可以使用洪泛(Flooding)法。
反向路径广播RPB算法
RPB虽然很好的解决了转发环路的问题,但只是实现了广播,要实现真正的多播,还要将像R8这样的没有多播组成员的非成员从广播转发数上减除
组共享树多播路由选择
其他多播路由选择
虚拟专用网VPN和网络地址转换NAT
虚拟专用网的工作流程
网络地址转换
下面讨论另一种情况,就是在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和互联网上的主机通信(并不需要加密),那么应当采取什么措施呢?
最简单的办法就是设法再申请一些全球IP地址。但这在很多情况下是不容易做到的目前使用得最多的方法是采用网络地址转换。