Chinaunix首页 | 论坛 | 博客
  • 博客访问: 333165
  • 博文数量: 54
  • 博客积分: 446
  • 博客等级: 下士
  • 技术积分: 821
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-30 17:37
文章分类

全部博文(54)

文章存档

2015年(35)

2014年(19)

我的朋友

分类: 网络与安全

2015-09-04 22:17:10

   前面一部分主要探讨的是静态选路,介绍了单个IP层如何作了路由决策;而这一部分则要探讨动态选路协议,即路由器之间如何通过相互通信来维护和更新路由表,但正如Stevens所说,这部分内容非常复杂,本身就可以用整本书来讨论,所以这里只能是作一个简介。
六、一些基本名词
  选路机制(routing mechanism):内核在IP层的选路方式,即内核搜索路由表,查找主机路由,网络路由及默认路由的方式。
  选路策略(routing policy):确定哪些路由可以加入到路由表,删除或修改问题路由,这个工作一般由路由守护程序来完成。
   自治系统AS(Autonommous System):一个公司或大学校园可以定义为一个自治系统
  内部网关协议IGP(Interior Gateway Protocol):它决定了一个自治系统内部各个路由器之间的选路协议,它主要包含:
     选路信息协议RIP
     开放最短路径优先OSPF(Open Shortest Path First)
   外部网关协议EGP(Exterier Gateway Protocol):用于决定不同自治系统之间路由器的选路协议
  边界网关协议BGP(Border Gateway Protocol):正在逐步取代EGP
  另外还有两个路由守护协议routed和gated,routed只能使用RIP进行通信,而gated可以支持RIP,OSPF和BGP
  下面会重点介绍RIP,OSPF和BGP,对于RIP会更详细地介绍其报文交换过程。
七、RIP协议
  RIP协议使用UDP数据报的方式进行通信,常用的UDP端口号是520,具体报文格式如下(图3-8):
          
                     图3-8
  命令字段1-请求,2-应答,3,4不用,5-轮询,6-轮询表项,下面看一个真实的报文格式,sun主机通过ripquery程序,向路由器netb请求其路由表,网络架构见图3-3:
         
  为了看懂输出结果,看一下tcpdump的抓包输出:
         
  介绍一下tcpdump的参数值,-i表示指定接口为s10,也就是SLIP接口,-s600表示从网络中读取600个字节的数据包,分析一下tcpdump输出的报文,第一个请求发出一个RIP轮询命令(第1行),这个请求在5秒后超时,发出一个常规的RIP请求(第2行),第1行和第2行最后的24表示请求报文的长度:4个字节的RIP首部,然后是单个20字节的地址和度量。第3行是第一个应答报文,该行最后的25表示包含了25个地址与度量对,20*25+4 = 504,这是报文总长度,tcpdump设为读取600个字节,因此该报文可以全部读出,这一行对应ripquery输出的第一段内容(“504 bytes from netb”);第4行是来自路由器netb的第二个响应报文,最后的12同样表示包含了12个地址与度量对,12*20+4 = 244,共244个字节,ripquery程序要将这些内容解析并输出,对应于riqquery程序输出的第二段内容(“244 bytes from netb”)
  为了更好的理解度量值(metric)这个概念,再来看一个例子,图3-9所示是一个真实的网络环境,solaris主机(图中红框标示),广播发出RIP请求报文,再说明一下,这种请求报文的格式如图3-8所示,但命令字段为1,只带1个地址与度量对字段(报文总长度为20字节),地址系列字段设为0,度量字段设置为16,这是要求另一端完整路由表的特殊请求报文:
           
                                       图3-9  
 可以看到与solaris同一个局域网中所有路由器均发来应答报文,通报各自的路由表,我们看一下具体的报文:
              
  其中R10通报了4个网络,而gateway通报了15个网络,具体看一下R10通报的网络:
            
  其中网络140.251.0.0的metric值为16,表明该网络已不可达,一般一条路由在3分钟内未更新,就将该路由的度量设置为无穷大(16),再等待60秒,让这条路由失效消息传播开,就可将该路由表项删除,其他三个网络都与R10路由器直接相连,故Metric值为1,
  再看一下gateway路由器通报的网络:
           
图3-8所示的RIP1报文格式,再看一下它的升级版本RIP2报文格式(图3-10),则可以传递更多的信息:
               
                                         图3-10
选路域(routing domain)字段一般填选路守护程序的进程号,这样允许在单个路由器上运行多个RIP实例,选路标记(routing tag)为支持外部网关协议存在,携带的是自治系统号,RIP2还提供了一种简单的认证机制。
   总结一下,RIP协议一般由路由守护程序routed运行实现,每个路由器启动初始化时,要以广播形式向局域网其他路由器请求其完整的路由表,根据响应,生成路由表项;每隔30秒,所有路由器都有一个定期选路更新过程,要将自己完整的路由表发送给相邻路由器;而当一条路由的度量发生变化时,要触发更新,这时只需发送路由表中变化的表项。
   RIP协议也有其固定的问题,1. 它没有子网地址的概念;2. 在路由器或链路发生故障后,要很长时间(几分钟)才能稳定下来,这段时间内有可能发生路由环路;3. 度量值为15限制了可以使用RIP的网络的大小。
八、OSPF协议
  OSPF协议直接使用IP,所以其报文格式中需要有校验和字段(由于IP只提供首部检验功能),它使用的是链路状态协议,每个路由器主动地测试与其邻站相连链路的状态,将这些信息发送给其他邻站,通过这种方式将信息在自治系统中传播出去,每个路由器接收这些链路状态信息,从而建立起完整的路由表。
  OSPF可以为相同的目的地址指派多个表项,这些表项的建立主要根据不同的服务类型,因此OFPF可以提供负载均衡功能,但负载均衡又有可能造成报文失序交付,还有传输层计算出的RTT值有可能会出错,这是需要注意的。
  OSPF支持子网,基于链路状态协议使它的收敛比RIP更快,总之相对于RIP协议,OFPF有很多优势,故有可能取代RIP。
九、RIP,OSPF,BGP协议比较
   下面的这个表格对这三个协议的异同进行了对比
      
关于动态选路协议,内容很多,这里只是管中窥豹的列出了一些梗概。



参考资料:
                 《TCP/IP详解卷1:协议》第10章

阅读(1679) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~