交换机协议CDP
CDP:思科发现协议(CDP:Cisco Discovery Protocol) 思科发现协议 CDP 基本上是用来获取相邻设备的协议地址以及发现这些设备的平台。CDP 也可为路由器的使用提供相关接口信息。CDP 是一种独立媒体协议,运行在所有思科本身制造的设备上,包括路由器、网桥、接入服务器和交换机。需要注意的是,CDP是工作在 Layer 2 的协议,默认情况下,每60秒以 01-00-0c-cc-cc-cc 为目的地址发送一次组播通告,当达到180秒的holdtime上限后仍未获得邻居设备的通告时,将清除邻居设备信息。SNMP 中结合使用 CDP 管理信息基础 MIB,能使网络管理应用获知设备类型和相邻设备的 SNMP 代理地址,并向这些设备发送 SNMP 查询请求。Cisco 发现协议支持 CISCO-CDP-MIB。  CDP 运行在所有的媒体上,从而支持子网访问协议 SNAP,包括局域网、帧中继和异步传输模式 ATM 物理媒体。CDP 只运行于数据链路层,因此,支持不同网络层协议的两个系统彼此相互了解。  CDP 配置的每台设备发送周期性信息,如我们所知的广告到组播地址。每台设备至少广告一个地址,在该地址下,它可以接收 SNMP 信息。广告包括生存期,或保持时间等信息,这些信息指出了在取消之前接收设备应该保持 CDP 信息的时间长短。此外每台设备还要注意其它设备发出的周期性 CDP 信息,从中了解相邻设备信息并决定那些设备的媒体接口什么时候增长或降低。  CDP 版本2,是目前该协议使用最普遍的版本,它具有更高的智能设备跟踪等性能。支持该性能的报告机制,提供快速差错跟踪功能,有利于缩短停机时间(Downtime)。报告差错信息可以发送到控制台或日志服务器(Logging Server),这些差错信息包括连接端口上不匹配(Unmatching)的本地 VLAN IDs(IEEE 802.1Q)以及连接设备间不匹配的端口双向状态。  配置命令:cdp run

DTP动态中继协议  (Dynamic Trunking Protocol),思科技术。
动态中继协议DTP,是 VLAN 组中思科的私有协议,主要用于协商两台设备间链路上的中继过程及中继封装 802.1Q 类型。DTP的用途是取代动态ISL(Dynamic ISL,DISL)。  下列是DTP可以配置的几种不同的状态:  * Access:使某个接口无条件进入Access模式,无DTP功能。  * Trunk:使某个接口无条件进入trunk模式并进行trunk链路协商,无论其邻居接口处于何种模式。  * Nonegotiate:指定DTP协商报文不允许在二层接口上发送。非协商状态,使接口成为永久的中继接口。由于接口不使用DTP信息帧进行通信,因此不会有协商发生。如果与非交换机设备相连的交换机接口存在DTP问题,那么在使用trunk之后可以使用nonegotiate,使得接口可以继续中继,但不会发送任何DTP信息。  * Dynamic desirable:使某个接口既主动发送DTP报文,也允许对DTP报文进行响应,如果邻居接口是中继接口,并且被设置为on,desirable或auto,那么希望desirable状态下的这个接口成为中继接口。  * Dynamic auto:使某个接口可以响应DTP报文,但不允许主动发送DTP报文。只有在相邻接口要求该接口成为中继接口时才会成为中继接口。这是所有交换机接口的默认配置。auto接口不会主动要求对方,如果两个接口都被配置成auto状态,那么这两个接口都不会成为中继端。这是以太网接口的默认状态。  * On:无论对端配置如何,该接口始终为中继接口。使用on状态时,必须指明帧的标记方式,因为此状态下接口不与对端进行协商。  * Off:该接口永远是非中继接口。 第一个问题是,中继电缆(trunk cable)两端最好都能理解它们是中继端口,否则它们将中继帧视为正常帧。终端工作站无法理解信息帧头里另外添加的标签信息,其驱动程序栈也无法识别该标签信息,从而导致终端系统锁定或当机。为解决这个问题,思科推出了用于交换机的协议以实现通信目的。推出的第一版本是 VTP,即 VLAN 中继协议,它与 ISL 共同工作。最新推出的版本,即动态中继协议 (DTP),也可与 802.1q 共同工作。  其次是创建 LAN 。一个交换机的配置 VLAN ,需要做很多工作并且容易引起较多矛盾,如在一台交换机上 VLAN 100 属于工程部,而在另一台交换机上 VLAN100 可能被配置成属于财务部。这就使在故障排除工作中引起混乱,也会破坏精心设计的 VLAN 安全模式。该问题可通过 VTP/DTP 解决。在某台交换机上创建或删除一个 VLAN ,该信息自动传播到相同管理控制区域下的所有交换机上,这些交换机就是一个 VTP 域。

VTPVTP(VLAN Trunking Protocol):是VLAN中继协议,也被称为虚拟局域网干道协议。它是思科私有协议。作用是十几台交换机在企业网中,配置VLAN工作量大,可以使用VTP协议,把一台交换机配置成VTP Server, 其余交换机配置成VTP Client,这样他们可以自动学习到server 上的VLAN 信息。
原理概述  它是一个OSI参考模型第二层的通信协议,主要用于管理在同一个域的网络范围内VLANs的建立、删除和重命名。在一台VTP Server 上配置一个新的VLAN时,该VLAN的配置信息将自动传播到本域内的其他所有交换机。这些交换机会自动地接收这些配置信息,使其VLAN的配置与VTP Server保持一致,从而减少在多台设备上配置同一个VLAN信息的工作量,而且保持了VLAN配置的统一性。  VTP通过网络(ISL帧或cisco私有DTP帧)保持VLAN配置统一性。VTP在系统级管理增加,删除,调整的VLAN,自动地将信息向网络中其它的交换机广播。此外,VTP减小了那些可能导致安全问题的配置。便于管理,只要在vtp server做相应设置,vtp client会自动学习vtp server上的vlan信息  * 当使用多重名字VLAN能变成交叉–连接。  * 当它们是错误地映射在一个和其它局域网,VLAN能变成内部断开。  VTP有三种工作模式:VTP Server、VTP Client 和 VTP Transparent。新交换机出厂时的默认配置是预配置为VLAN1,VTP 模式为服务器。 一般,一个VTP域内的整个网络只设一个VTP Server。VTP Server维护该VTP域中所有VLAN 信息列表,VTP Server可以建立、删除或修改VLAN。VTP Client虽然也维护所有VLAN信息列表,但其VLAN的配置信息是从VTP Server学到的,VTP Client不能建立、删除或修改VLAN。VTP Transparent相当于是一项独立的交换机,它不参与VTP工作,不从VTP Server学习VLAN的配置信息,而只拥有本设备上自己维护的VLAN信息。VTP Transparent可以建立、删除和修改本机上的 VLAN信息。编辑本段VTP的用途  通常情况下,我们需要在整个园区网或者企业网中的一组的交换机中保持VLAN数据库的同步,以保证所有交换机都能从数据帧中读取相关的VLAN信息进行正确的数据转发,然而对于大型网络来说,可能有成百上千台交换机,而一台交换机上都可能存在几十乃至数百个VLAN,如果仅凭网络工程师手工配置的话是一个非常大的工作量,并且也不利于日后维护——每一次添加修改或删除VLAN都需要在所有的交换机上部署。在这种情况下,我们引入了VTP(VLAN Trunking Protocol)。编辑本段分类  VTP模式有3种 服务器模式(Server)客户机模式(Client)透明模式(Transparent)服务器模式(Server)  提供VTP消息:包括VLAN ID和名字信息  学习相同域名的VTP消息  转发相同域名的VTP消息  可以添加、删除和更改VLAN VLAN信息写入NVRAM客户机模式(Client)  请求VTP消息  学习相同域名的VTP消息  转发相同域名的VTP消息  不可以添加、删除和更改VLAN VLAN信息不会写入NVRAM透明模式(Transparent)  不提供VTP消息  不学习VTP消息  转发VTP消息  可以添加、删除和更改VLAN,只在本地有效 VLAN信息写入NVRAM  新交换机出厂时的默认配置是预配置为VLAN1,VTP 模式为服务器。  当交换机是在VTP Server或透明的模式,能在交换机配置VLAN。当交换机配置在VTP Server或透明的模式,使用CLI、控制台菜单、MIB(当使用SNMP简单网络管理协议管理工作站)修改VLAN配置。  一个配置为VTP Server模式的交换机向邻近的交换机广播VLAN配置,通过它的Trunk从邻近的交换机学习新的VLAN配置。在Server模式下可以通过MIB,CLI,或者控制台模式添加、删除和修改VLAN。  例如:增加了一个VLAN,VTP将广播这个新的VLAN,Server和Client机的Trunk网络端口准备接收信息。  在交换机自动转到VTP的Client模式后,它会传送广播信息并从广播中学习新的信息。但是,不能通过MIB、CLI、或者控制台来增加、删除、修改VLAN。VTP Client端不能保持VLAN信息在非易失存储器中。当启动时,它会通过Trunk网络端口接受广播信息,学习配置信息。  在VTP透明的模式,交换不做广播或从网络学习VLAN配置。当一个交换机是在VTP透明的模式,能通过控制台、CLI、MIB来修改、增加、删除VLAN。  为使每一个VLAN能够使用,必须使VTP知道。并且包含在Trunk port 的准许列表中,一个快速以太网ISL Trunk自动为VLAN传输数据,并且从一个交换机到另一个交换机。  需要注意的是如果交换在VTP Server模式接收广播包含128多个VLAN,交换自动地转换向VTP Client模式。  更改交换机从VTP Client模式向VTP透明的模式,交换机保持初始、唯一128VLAN并删除剩余的VLAN。  传送VTP信息  每个交换机用VTP广播Trunk端口的管理域,定义特定的VLAN边界,它的配置修订号,已知VLAN和特定参数。在一个VTP管理域登记后交换机才能工作。  通过Trunk,VTP Server向其它交换机传输信息和接收更新。VTP Server也在NVRAM中保存本VTP管理域信息中 VLAN的列表。 VTP能通过统一的名字和内部的列表动态显示出管理域中的VLAN。  VTP信息在全部Trunk连接上传输,包括ISL、IEEE802.10、LANE。VTP MIB为VTP提供SNMP工具,并允许浏览VTP参数配置。  VTP建立共用的配置值和分布下列的共用的配置信息:  * VLAN IDs(ISL)  * 仿效LAN的名字(ATM LANE)  * IEEE802.10 SAID值(FDDI)  * VLAN中最大的传输单元(MTU)大小  * 帧格式
VTP协议用来确保配置的一致性,VTP的具体优点如下:  。保持了VLAN的一致性  。提供从一个交换机到另一个交换机在整个管理域中增加虚拟局域网的方法  VTP协议是思科的专用协议,大多数的Catalys交换机都支持该协议,VTP可以减少VLAN的相关管理任务。  在VTP域中有两个重要的概念:  。VTP域:也称VLAN管理域,由一个以上共享VTP域名的相互连接的交换机组成的。也就是说VTP域是一组域名相同并通过中继链路相互连接的交换机  。VTP通告:在交换机之间用来传递VLAN信息的数据包被成为VTP数据包。  VTP通告包括:汇总通告,子集通告,通告请求。  注意:  若给VTP配置密码,那么本域内的所有交换机的VTP密码必须保持一致。  创建VTP域命令 思科IOS系统  switch(config)#vtp domain DOMAIN_NAME  配置交换机的VTP模式  三种模式server client transparent(透明模式)  switch(config)# vtp mode server | client | transparent  配置VTP口令  switch (config) # vtp password PASSWORD  配置VTP修剪  switch (config) # vtp pruning  配置VTP版本  switch (config) # vtp version 2(默认是版本1)  查看VTP配置信息  switch# show vtp status  有关思科OS系统,如下配置  switch>〔enable〕set vtp mode server 其他配置参考此模式  在三层交换机加了一块二层档板时,命令环境改变。  比如原来需要在全局配置模式下输入vtp命令,而此时需要在vlan database模式下输入了。编辑本段VTP配置方法  进入Vlan //3640配置  Switch#vlan database  建立VTP域  Switch(vlan)#vtp domain name  修改交换机vtp的模式  Switch(vlan)#vtp{client|server|transparent}  配置vtp密码  Switch(vlan)#vtp password ……  配置VTP修剪  switch (vlan) # vtp pruning  查看VTP运行状态  Switch#show vtp status  查看交换机收到和发出广告的数目  Switch#show vtp counters编辑本段VTP故障排查  很多时候按照常规配置完毕后,并不能学习到VLAN信息,通过show vtp status命来查看往前设备与VTP Server脚色的交换机对比,请重点排查以下点:  SW#show vtp status  VTP Version : 2 //VTP的版本是否一致,如果不一直需配置一下  Configuration Revision : 0  Maximum VLANs supported locally : 255  Number of existing VLANs : 5  VTP Operating Mode : Client //确认当前交换机的工作脚色  VTP Domain Name : cisco //交换机所在域是否和Server模式的交换机一致  VTP Pruning Mode : Disabled  VTP V2 Mode : Disabled  VTP Traps Generation : Disabled  MD5 digest : 0xAA 0xB9 0x0C 0xCD 0xD7 0xE8 0xA6 0xE0 //交换机密码是否与Server模式的交换机一致,如果不一致请确认后重新配置  Configuration last modified by 0.0.0.0 at 0-0-00 00:00:00  确认以上信息一致后,再确认交换机之间的互联链路是否为Trunk模式,通过命令来查看:  SW#show int trunk  Port Mode Encapsulation Status Native vlan
Fa0/1on 802.1q trunking 1  Port Vlans allowed on trunk  Fa0/1 1-1005  Port Vlans allowed and active in management domain  Fa0/1 1  Port Vlans in spanning tree forwarding state and not pruned  Fa0/1 none  SW#  如果异常请用以下命令来配置:  SW#conf t  Enter configuration commands, one per line. End with CNTL/Z.  SW(config)#int f0/1  SW(config-if)#sw mo trunk  SW(config-if)#exit  SW(config)#  至此,仍然不能学习到VLAN信息,请首先关闭互联的Trunk链路  SW#conf t  Enter configuration commands, one per line. End with CNTL/Z.  SW(config)#int f0/1  SW(config-if)#shutdown  清理VTP同步计数:  Switch#clear vtp counters  再打开互联的Trunk链路,即可正常学习到VLAN信息。

ISL & DISLISL & DISL:思科交换链路内协议和动态 ISL 协议(ISL & DISL:Cisco Inter-Switch Link Protocol and Dynamic ISL Protocol) 交换链路内协议(ISL),是思科私有协议,主要用于维护交换机和路由器间的通信流量等 VLAN 信息。

什么是ISL  VLAN是为解决以太网的广播问题和安全性而提出的一种协议。引入VLAN后,各VLAN内的主机跨交换机进行通信。为了标识各数据帧属于哪一个VLAN,需要对数据帧进行打标(tag)封装,即在以太网帧的基础上增加了VLAN头,用VLAN ID把用户划分为更小的工作组,限制不同工作组间的用户二层的访问,每个工作组就是一个虚拟局域网。目前交换机支持的打标封装协议有IEEE802.1Q和ISL。其中IEEE802.1Q是经过IEEE认证的对数据帧附加VLAN识别信息的协议,属于国际标准协议,适用于各个厂商生产的交换机;而ISL是Inter Switch Link的缩写,是Cisco系列交换机支持的一种与IEEE802.1Q类似的协议。两者互不兼容,ISL是Cisco独有的协议,只能用于Cisco网络设备之间的互联。工作原理  ISL 标签(Tagging)能与 802.1Q 干线执行相同任务,只是所采用的帧格式不同。ISL 干线(Trunks)是 Cisco 私有,即指两设备间(如交换机)的一条点对点连接线路。在“交换链路内协议”名称中即包含了这层含义。ISL 帧标签采用一种低延迟(Low-Latency)机制为单个物理路径上的多 VLANs 流量提供复用技术。ISL 主要用于实现交换机、路由器以及各节点(如服务器所使用的网络接口卡)之间的连接操作。为支持 ISL 功能特征,每台连接设备都必须采用 ISL 配置。ISL 所配置的路由器支持 VLAN 内通信服务。非 ISL 配置的设备,则用于接收由 ISL 封装的以太帧(Ethernet Frames),通常情况下,非 ISL 配置的设备将这些接收的帧及其大小归因于协议差错。  和 802.1Q 一样,ISL 作用于 OSI 模型第2层。所不同的是,ISL 协议头和协议尾封装了整个第2层的以太帧。正因为此,ISL 被认为是一种能在交换机间传送第2层任何类型的帧或上层协议的独立协议。ISL 所封装的帧可以是令牌环(Token Ring)或快速以太网(Fast Ethernet),它们在发送端和接收端之间维持不变地实现传送。特征  ISL 具有以下特征:  由专用集成电路执行(ASIC:application-specific integrated circuits)  不干涉客户机站;客户机不会看到 ISL 协议头  ISL NICs 为交换机与交换机、路由器与交换机、交换机与服务器等之间的运行提供高效性能。  动态交换链路内协议(DISL),也属于思科协议。它简化了两台相互连接的快速以太网设备上 ISL 干线的创建过程。快速以太信道技术为高性能中枢连接提供了两个全双工快速以太网链路是集中性。由于 DISL 中只允许将一个链路终端配置为干线,所以 DISL 实现了最小化 VLAN 干线。  ISL 星际链路(Intersatellite link,ISL)  交换机间链路(ISL)协议  ISL(Interior Switching Link)协议用于实现交换机间的VLAN中继。它是一个信息包标记协议,在支持ISL接口上发送的帧由一个标准以太网帧及相关的VLAN信息组成。如下图所示,在支持ISL的接口上可以传送来自不同VLAN的数据。  注意  目前,除Catalyst 29xx 系列交换机之外的所有Cisco Catalyst 交换机都支持该协议。

路由协议

路由选择信息协议(RIP)路由信息协议(RIP)是一种在网关与主机之间交换路由选择信息的标准。RIP 是一种内部网关协议。在国家性网络中如当前的因特网,拥有很多用于整个网络的路由选择协议。作为形成网络的每一个自治系统,都有属于自己的路由选择技术,不同的 AS 系统,路由选择技术也不同。简介  (RIP/RIP2/RIPng:Routing Information Protocol)  作为一种内部网关协议或 IGP(内部网关协议),路由选择协议应用于 AS 系统。连接 AS 系统有专门的协议,其中最早的这样的协议是“EGP”(外部网关协议),目前仍然应用于因特网,这样的协议通常被视为内部 AS 路由选择协议。RIP 主要设计来利用同类技术与大小适度的网络一起工作。因此通过速度变化不大的接线连接,RIP 比较适用于简单的校园网和区域网,但并不适用于复杂网络的情况。  RIP 2 由 RIP 而来,属于 RIP 协议的补充协议,主要用于扩大 RIP 2 信息装载的有用信息的数量,同时增加其安全性能。RIP 2 是一种基于 UDP 的协议。在 RIP2 下,每台主机通过路由选择进程发送和接受来自 UDP 端口520的数据包。RIP协议默认的路由更新周期是30S。
RIP的特点
(1)仅和相邻的路由器交换信息。如果两个路由器之间的通信不经过另外一个路由器,那么这两个路由器是相邻的。RIP协议规定,不相邻的路由器之间不交换信息。
(2)路由器交换的信息是当前本路由器所知道的全部信息。即自己的路由表。
(3)按固定时间交换路由信息,如,每隔30秒,然后路由器根据收到的路由信息更新路由表。适用  RIP 和 RIP 2 主要适用于 IPv4 网络,而 RIPng 主要适用于 IPv6 网络。本文主要阐述 RIP 及 RIP 2。  RIPng:路由选择信息协议下一代(应用于IPv6)  (RIPng:RIP for IPv6)RIPng与RIP 1和 RIP 2 两个版本不兼容。  RIP协议的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加1。RIP认为好的路由就是它通过的路由器的数目少,即“距离短”。RIP允许一条路径最多只能包含15个路由器。因此“距离”等于16时即相当于不可达。可见RIP只适用于小型互联网。应用  RIP(Routing information Protocol)是应用较早、使用较普遍的内部网关协议(Interior Gateway Protocol,简称IGP),适用于小型同类网络,是典型的距离向量(distance-vector)协议。文档见RFC1058、RFC1723。  RIP通过广播UDP报文来交换路由信息,每30秒发送一次路由信息更新。RIP提供跳跃计数(hop count)作为尺度来衡量路由距离,跳跃计数是一个包到达目标所必须经过的路由器的数目。如果到相同目标有二个不等速或不同带宽的路由器,但跳跃计数相同,则RIP认为两个路由是等距离的。RIP最多支持的跳数为15,即在源和目的网间所要经过的最多路由器的数目为15,跳数16表示不可达。RIP概述  -RFC 1058  -RIP采用贝尔曼—福德(Bellman-Ford)算法  -目前RIP有两个版本RIPv1和RIPv2。  -RIP有以下一些主要特性:  -RIP属于典型的距离向量路由选择协议。  -RIP消息通过广播地址255.255.255.255进行发送,使用UDP 协议的520端口。  -RIP以到目的网络的最小跳数作为路由选择度量标准,而不是在链路的带宽和延迟的基础上进行选择。  -RIP是为小型网络设计的。它的跳数计数限制为15跳,16跳为不可到达。  -RIP-1是一种有类路由协议,不支持不连续子网设计。RIP-2支持CIDR及VLSM可变长子网掩码,使其支持不连续子网设计。  -RIP周期性进行完全路由更新,将路由表广播给邻居路由器,广播周期缺省为30秒。  -RIP的协议管理距离为120。  RIP是路由信息协议(Routing Information Protocol)的缩写,采用距离矢量算法,是当今应用最为广泛的内部网关协议。在默认情况下,RIP使用一种非常简单的度量制度:距离就是通往目的站点所需经过的链路数,取值为1~15,数值16表示无穷大。RIP进程使用UDP的520端口来发送和接收RIP分组。RIP分组每隔30s以广播的形式发送一次,为了防止出现“广播风暴”,其后续的的分组将做随机延时后发送。在RIP中,如果一个路由在180s内未被刷,则相应的距离就被设定成无穷大,并从路由表中删除该表项。RIP分组分为两种:请求分组和响应分组。  RIP-1被提出较早,其中有许多缺陷。为了改善RIP-1的不足,在RFC1388中提出了改进的RIP-2,并在RFC 1723和RFC 2453中进行了修订。RIP-2定义了一套有效的改进方案,新的RIP-2支持子网路由选择,支持CIDR,支持组播,并提供了验证机制。  RIP-2的特性:  RIP-2 是一种无类别路由协议(Classless Routing Protocol)。  RIP-2协议报文中携带掩码信息,支持VLSM(可变长子网掩码)和CIDR。  RIP-2支持以组播方式发送路由更新报文,组播地址为224.0.0.9,减少网络与系统资源消耗。  RIP-2支持对协议报文进行验证,并提供明文验证和MD5验证两种方式,增强安全性。  RIP-2能够支持VLSM  随着OSPF和IS-IS的出现,许多人认为RIP已经过时了。但事实上RIP也有它自己的优点。对于小型网络,RIP就所占带宽而言开销小,易于配置、管理和实现,并且RIP还在大量使用中。但RIP也有明显的不足,即当有多个网络时会出现环路问题。为了解决环路问题,IETF提出了水平分割法,在这个接口收到的路由信息不会再从该接口出去(split-Horizon)。分割范围解决了两个路由器之间的路由环路问题,但不能防止3个或多个路由器形成路由环路。触发更新是解决环路问题的另一方法,它要求路由器在链路发生变化时立即传输它的路由表。这加速了网络的聚合,但容易产生广播泛滥。总之,环路问题的解决需要消耗一定的时间和带宽。若采用RIP协议,其网络内部所经过的链路数不能超过15,这使得RIP协议不适于大型网络。RIP的防环机制  1-记数无穷大(maximum hop count):定义最大跳数(最大为15跳),当跳数为16跳时,目标为不可达。  2-水平分割(split horizon):从一个接口学习到的路由不会再广播回该接口。cisco可以对每个接口关闭水平分割功能。这个特点在( N B M A )非广播多路访问hub-and-spoke 环境下十分有用。  3-毒性逆转(poison reverse):从一个接口学习的路由会发送回该接口,但是已经被毒化,跳数设置为16跳,不可达。  4-触发更新(trigger update):一旦检测到路由崩溃,立即广播路由刷新报文,而不等到下一刷新周期。  5-抑制计时器(holddown timer):防止路由表频繁翻动,增加了网络的稳定性。   以上防环路机制全部默认开启。  RIP(Routing Information Protocol)是基于D-V算法的内部动态路由协议。它是第一个为所有主要厂商支持的标准IP选路协议,目前已成为路由器、主机路由信息传递的标准之一,适应于大多数的校园网和使用速率变化不大的连续的地区性网络。对于更复杂的环境,一般不应使用RIP。  RIP1作为距离矢量路由协议,具有与D-V算法有关的所有限制,如慢收敛和易于产生路由环路和广播更新占用带宽过多等;RIP1作为一个有类别路由协议,更新消息中是不携带子网掩码,这意味着它在主网边界上自动聚合,不支持VLSM和CIDR;同样,RIP1作为一个古老协议,不提供认证功能,这可能会产生潜在的危险性。总之,简单性是RIP1广泛使用的原因之一,但简单性带来的一些问题,也是RIP故障处理中必须关注的。版本  RIP在不断地发展完善过程中,又出现了第二个版本:RIP2。与RIP1最大的不同是RIP2为一个无类别路由协议,其更新消息中携带子网掩码,它支持VLSM、CIDR、认证和多播。目前这两个版本都在广泛应用,两者之间的差别导致的问题在RIP故障处理时需要特别注意。RIP的信息类型  请求信息(可以是请求一条路由的信息),应答信息(一定是全部的路由)。  RIP是最常使用的内部网关协议之一,是一种典型的基于距离矢量算法的动态路由协议。在不同的网络系统如Internet、AppleTalk、NOVELL等协议都实现了RIP。他们都采用相同的算法,只是在一些细节上做了小改动,适应不同网络系统的需要。  RIP有RIP-1和RIP-2两个版本,需要注意的是,RIP-2不是RIP-1的替代,而是RIP-1功能的扩展。比如RIP-2更好地利用原来RIP-1分组种必须为零的域来增加功能,不仅支持可变长子网掩码,也支持路由对象标志。此外,RIP-2还支持明文认证和MD5密文认证,确保路由信息的正确。  RIP通过用户数据报协议(UDP)报文交换路由信息,使用跳数来衡量到达目的地的距离。由于在RIP中大于15的跳数被定义为无穷大,所以RIP一般用于采用同类技术的中等规模网络,如校园网及一个地区范围内的网络,RIP并非为复杂、大型的网络而设计。但由于RIP使用简单,配置灵活,使得他在今天的网络设备和互联网中被广泛使用。局限性  另外,RIP也有他的局限性。比如RIP支持站点的数量有限,这使得RIP只适用于较小的自治系统,不能支持超过15跳数的路由。再如,路由表更新信息将占用较大的网络带宽,因为RIP每隔一定时间就向外广播发送路由更新信息,在有许多节点的网络中,这将会消耗相当大的网络带宽。此外,RIP的收敛速度慢,因为一个更新要等30s,而宣布一条路有无效必须等180s,而且这还只是收链一条路有所需的时间,有可能要花好几个更新才能完全收敛于新拓扑,RIP的这些局限性显然削弱了网络的性能。  RIP的管理距离是120。  RIPV1与RIPV2的相同与不同。不同版本 RIPV1 RIPV2  1 有类路由 无类路由  2 不支持VLSM 支持VLSM  3 广播更新(255.255.255.255) 组播更新(224.0.0.9)  4 自动汇总,不支持手动汇总 支持手动汇总  5 不支持验证 支持验证  6 产生CIDR 不产生CIDR相同  1 抑制计时器  2 度量值(hop count)  3 防环机制  4 汇总(默认相同),在边界路由上汇总  5 使用UDP的520端口  6 负载均衡默认为4条。对大为6条。  7 缺省每隔30秒更新一次路由表  RIP的下一跳与METRIC的关系  metric 下一跳不同  大 写进数据库中,等180秒后再写进路由表中 写进数据库中  小 写进路由表中 替换原有的路由  相同 不给于响应 负载均衡  RIPV1发送RIPV1信息,接受RIPV1、V2信息。让RIPV1发送RIPV2:ip rip send version 2  RIPV2收发RIPV2信息。Ip rip sen version 1 2RIP的不足之处  (1)过于简单,以跳数为依据计算度量值,经常得出非最优路由。例如:2跳64K专线,和3跳1000M光纤,显然多跳一下没什么不好。  (2)度量值以16为限,不适合大的网络。解决路由环路问题,16跳在rip中被认为是无穷大,rip是一种域内路由算法自治路由算法,多用于园区网和企业网。  (3)安全性差,接受来自任何设备的路由更新。无密码验证机制,默认接受任何地方任何设备的路由更行。不能防止恶意的rip欺骗。  (4)不支持无类ip地址和VLSM<ripv1>。  (5)收敛性差,时间经常大于5分钟。  (6)消耗带宽很大。完整的复制路由表,把自己的路由表复制给所有邻居,尤其在低速广域网链路上更以显式的全量更新。编辑本段RIP工作原理  1 、初始化——RIP[1]初始化时,会从每个参与工作的接口上发送请求数据包。该请求数据包会向所有的RIP路由器请求一份完整的路由表。该请求通过LAN上的广播形式发送LAN或者在点到点链路发送到下一跳地址来完成。这是一个特殊的请求,向相邻设备请求完整的路由更新。  2 、接收请求——RIP有两种类型的消息,响应和接收消息。请求数据包中的每个路由条目都会被处理,从而为路由建立度量以及路径。RIP采用跳数度量,值为1的意为着一个直连的网络,16,为网络不可达。路由器会把整个路由表作为接收消息的应答返回。  3、接收到响应——路由器接收并处理响应,它会通过对路由表项进行添加,删除或者修改作出更新。  4、 常规路由更新和定时——路由器以30秒一次地将整个路由表以应答消息地形式发送到邻居路由器。路由器收到新路由或者现有路由地更新信息时,会设置一个180秒地超时时间。如果180秒没有任何更新信息,路由的跳数设为16。路由器以度量值16宣告该路由,直到刷新计时器从路由表中删除该路由。刷新计时器的时间设为240秒,或者比过期计时器时间多60秒。Cisco还用了第三个计时器,称为抑制计时器。接收到一个度量更高的路由之后的180秒时间就是抑制计时器的时间,在此期间,路由器不会用它接收到的新信息对路由表进行更新,这样能够为网路的收敛提供一段额外的时间。  5、 触发路由更新——当某个路由度量发生改变时,路由器只发送与改变有关的路由,并不发送完整的路由表。编辑本段RIP 常见问题1)什么是RIP?  RIP是一种距离矢量路由协议(Distance Vector Routing Protocol)。距离矢量算法(Distance Vector Routing Algorithm)是两个路由算法中的一个。另一类是链路状态路由选择。基本上,路由协议基于距离矢量算法根据目的地的远近(远近=经过路由器的数量)来决定最好的路径。2)RIP的作用是什么?  RIP让路由器之间互相传递路由信息。路由器通过RIP,能自动知道远程目的地,而不需要网络管理员给每台路由器添加静态路由信息。3)RIP是如何传递路由信息的?  RIP把自己所有的路由信息,通过Response包洪泛给邻居。4)RIP如何计算Metric的?  RIP用“跳数”来计算cost(metric),每经过一台路由器,“跳数”就增加1。RIP会通过“跳数”最小的路径传输数据包。

IGRPIGRP (Interior Gateway Routing Protocol)是一种动态距离向量路由协议,它由Cisco公司八十年代中期设计。使用组合用户配置尺度,包括延迟、带宽、可靠性和负载。缺省情况下,IGRP每90秒发送一次路由更新广播,在3个更新周期内(即270秒),没有从路由中的第一个路由器接收到更新,则宣布路由不可访问。在7个更新周期即630秒后,Cisco IOS 软件从路由表中清除路由。简介IGRP  内部网关路由协议(IGRP:Interior Gateway Routing Protocol)  内部网关路由协议(IGRP)是一种在自治系统(AS:autonomous system)中提供路由选择功能的思科专有路由协议。在上世纪80年代中期,最常用的内部路由协议是路由信息协议(RIP)。尽管 RIP 对于实现小型或中型同机种互联网络的路由选择是非常有用的,但是随着网络的不断发展,其受到的限制也越加明显。思科路由器的实用性和 IGRP 的强大功能性,使igrp

得众多小型互联网络组织采用 IGRP 取代了 RIP。早在上世纪90年代,思科就推出了增强的 IGRP,进一步提高了 IGRP 的操作效率。  IGRP 是一种距离向量(Distance Vector)内部网关协议(IGP)。距离向量路由选择协议采用数学上的距离标准计算路径大小,该标准就是距离向量。距离向量路由选择协议通常与链路状态路由选择协议(Link-State Routing Protocols)相对,这主要在于:距离向量路由选择协议是对互联网中的所有节点发送本地连接信息。  为具有更大的灵活性,IGRP 支持多路径路由选择服务。在循环(Round Robin)方式下,两条同等带宽线路能运行单通信流,如果其中一根线路传输失败,系统会自动切换到另一根线路上。多路径可以是具有不同标准但仍然奏效的多路径线路。例如,一条线路比另一条线路优先3倍(即标准低3级),那么意味着这条路径可以使用3次。只有符合某特定最佳路径范围或在差量范围之内的路径才可以用作多路径。差量(Variance)是网络管理员可以设定的另一个值。  IGRP度量标准的计算公式如下:度量标准=[K1*带宽+(K2*带宽)/(256-负载)+K3*延迟]*[K5/(可靠性+K4)],默认的常数值是K1=K3=1,K2=K4=K5=0。因此,IGRP的度量标准计算简化为:度量标准=带宽+延迟。  IGRP使用复合度量值igrp

,在选择到目的地的路径方面,这种度量值比RIP单一度量值“跳数”更精确,度量值最小的路由为最佳路由。  IGRP度量值中包含以下分量:  带宽:路径中的最低带宽;  延迟:路径上的累积接口延迟;  可靠性:信源和目的地之间的链路上的负载,单位为bit/s(比特每秒);  MTU:路径上的最大传输单元。  补充内容  有关命令  任务 命令  指定使用RIP协议 router igrp autonomous-system1  指定与该路由器相连的网络 network network  指定与该路由器相邻的节点地址 neighbor ip-address  IGRP的路由度量包括多宗因素,但一般情况下可以简化为带宽。注  1、autonomous-system可以随意建立,并非实际意义上的autonomous-system,但运行IGRP的路由器要想交换路由更新信息其autonomous-system需相同。  cisco最新产品及IOS停止了对IGRP的支持 仅支持新的增强型内部网关路由协议(EIGRP)  EIGRP和IGRP为cisco专有协议 但部分华为设备也支持此两种协议  发布路由更新信息的周期是90秒
协议特性  igrp  IGRP是一种距离向量型的内部网关协议(IGP)。 距离向量路由协议要求每个路由器以规则的时间间隔向其相邻的路由器发送其路由表的全部或部分。随着路由信息在网络上扩散, 路由器就可以计算到所有节点的距离。 IGRP使用一组metric的组合(向量),网络延迟、带宽igrp

、可靠性和负载都被用于路由选择,网管可以为每种metric设置权值, IGRP可以用管理员设置的或缺省的权值来自动计算最佳路由。 IGRP为其metric提供了较宽的值域。例如, 可靠性和负载可在1和255之间取值; 带宽值域为1200bps到10吉(千兆)bps;延迟可取值1到24。宽的值域可以提供满意的metric设置,更重要的是, metric各组件以用户定义的算法结合,因此,网管可以以直观的方式影响路由选择。  为了提供更多的灵活性,IGRP允许多路径路由。两条等带宽线路可以以循环(round-robin)方式支持一条通信流, 当一条线路断掉时自动切换到第二条线路。此外,即使各条路的metric不同也可以使用多路径路由。 例如,如果一条路径比另一条好三倍, 它将以三倍使用率运行。只有具有一定范围内的最佳路径metric值的路由才用作多路径路由。稳定性  IGRP提供许多特性以增强其稳定性,包括hold-down、split horizon和poison-reverse。  Hold-down用于阻止定期更新信息不适当地发布一条可能失效的路由信息。当一个路由器失效时, 相邻的路由器通过未收到定期的更新消息检测到该情况, 这些路由器就计算新的路由并发送路由更新信息把路由改变通知给它们相邻的路由器。 这一举动激发一系列触发的更新,这些触发的更新并不能立刻到达每一个网络设备,所以可能发生这样的情况: 一个还未收到网络失效信息的设备给一个刚被通知网络失效的设备发送定期更新信息,说那条已断掉的路由还是好的,这样, 后者就会含有(还可能发布)错误的路由信息。Hold-down告诉路由器把可能影响路由的改变保持一段时间。 Hold-down时期通常只比整个网络更新某一路由改变所需时间多一点。  Split horizon来源于下列承诺:把路由信息发回到其来源是无意igrp

义的。下图示意为split-horizon规则。 路由器1(R1)首先发布到网络A的路由,路由器2(R2)没有必要在给R1的更新信息中含有该路由,因为R1离网络A更近。 split-horizon规则要求R2在给R1的更新信息中去掉该路由。 split-horizon规则可以帮助避免路由环。例如,假设R1到网络A的接口失效了,R2继续通知R1说它可以到达网络A(通过R1), 如果R1不够聪明,就可能用R2的路由取代已失效的直接连接,于是就产生了路由环。虽然Hold-down应该防止这类情况, IGRP也实现了split-horizon,因为它可提供更好的算法稳定性。  Split-horizon应该防止相邻路由器间的路由环,而poison-reverse对于防止较大的路由环是必要的。 路由metric的持续增长通常意味着存在路由环,poison-reverse更新就被发送以删除该路由并置于hold-down状态。 在Cisco的IGRP实现中,如果路由metric以1.1或更大的比例增长就发送poison-reverse更新信息。计时器  GRP维护一组计时器和含有时间间隔的变量。包括更新计时器、失效计时器、保持计时器和清空计时器。 更新计时器规定路由更新消息应该以什么频度发送,IGRP中此值缺省为90秒。失效计时器规定在没有特定路由的路由更新消息时, 在声明该路由失效前路由器应等待多久,IGRP中此值缺省为更新周期的三倍。保持时间变量规定hold-down周期, IGRP中此值缺省为更新周期加10秒。最后,清空计时器规定路由器清空路由表之前等待的时间,IGRP的缺省值为路由更新周期的七倍。
基本配置要求  指定使用RIP协议  router igrp autonomous-system 1  指定与该路由器相连的网络  network network  指定与该路由器相邻的节点地址  neighbor ip-address  注:1、autonomous-system可以随意建立,并非实际意义上的autonomous-system,但运行IGRP的路由器要想交换路由更新信息其autonomous-system需相同。具体步骤  1. 启动IGRP路由协议,在全局设置模式下;  router igrp 自治域号  同一自治域内的路由器才能交换路由信息。  2. 本路由器参加动态路由的子网;  net work 子网号  IGRP只是将由net work指定的子网在各端口中进行传送以交换路由信息,如果不指定子网,则路由器不会将该子网广播给其它路由器。  3. 指定某路由器所知的IGRP路由信息广播给那些与其相邻接的路由器;  neighbor 邻接路由器的相邻端口IP地址。  IGRP是一个广播型协议,为了使IGRP路由信息能在非广播型网络中传输,必须使用该设置,以允许路由器间在非广播型网络中交换路由信息,广播型网络如以太网无须设置此项。以上为IGRP的基本设置,通过该设置,路由器已能完全通过IGRP进行路由信息交换其他设置。  4. 不允许某个端口发送IGRP路由信息  passive-interface 端口号  一般地,在以太网上只有一台路由器时,IGRP广播没有任何意义,且浪费带宽,完全可以将其过滤掉。  5. 负载平衡设置  IGRP可以在两个进行IP通信的设备间同时启用四条线路,且任何一条路径断掉都不会影响其它路径的传输。  当两条路径或多条路径的metric相同或在一定的范围内,就可以启动平衡功能。
配置示例水平分割示例(一)  IGRP可行的后续者关系示例 指定的尺度符合合格路由所需的条件,因此,例子中的路径可包含于路由表中,并用于负载均衡。  路由合格与否,将按以下方式进行测试:  假定路由器C1已经有到网络A的一条路由,尺度为m,且已从C2接收到有关网络A的更新信息,C2的最佳尺度为p,C1通过C2的尺度为n。  如果下列两个条件满足,通过C2到网络A的路由将包含在C1的路由表中:  如果m大于p。  如果可变系数(由variance路由器配置命令指定的值)乘以m大于或等于n。  对路由器C1的配置如下:  router igrp 109  variance 10水平分割示例(二)  下面是在串行链上使水平分割失效的简单例子。在此例子中,串行链连接到X.25网络上。  interface serial 0  encapsulation x25  no ip split-horizon  对于路由器A、B和C(与IP网络12.13.50.0,10.20.40.0和20.155.120.0相连接)的以太网接口全部缺省为水平分割有效,而与网络128.125.1.0和131.108.1.0相连接的串行接口全部缺省为水平分割无效。依照路由器接口配置的部分规范,下面的图示说明在正常情况下并没有为任何接口明确地配置ipsplit-horizon命令。  在这个例子中,为使网络128.125.0.0通告到网络131.108.0.0,必须使水平分割无效,反之也一样。这些子网在路由器C的接口SO相交叠。如果在串行接口SO上水平分割有效,则不能为其中任何一个网络传回路由到帧中继网络。  配置路由器A  interface ethernet 1  ip address 12.13.50.1  !  interface serial 1  ip address 128.125.1.2  encapsulation frame-relay  配置路由器B  interface ethernet 2  ip address 20.155.120.1  !  interface serial 2  ip address 131.108.1.2  encapsulation frame-relay  配置路由器C  interface ethernet 0  ip address 10.20.40.1  !  interface serial 0  ip address 128.124.1.1  ip address 128.108.1.1 secondary  encapsulation frame-relay
其他扩展Cisco IGRP的实现  IGRP使用组合用户配置尺度,包括延迟、带宽、可靠性和负载。  IGRP也通告三种类型路由:内部、系统和外部。 内部路由是连接到路由器接口的网络中的子网之间的路由。如果连接到路由器的网络没有子网,则IGRP不通告内部路由。  系统路由是自治系统内的路由。从直接连接,网络接口和其他采用IGRP的路由器或访问服务器所提供的系统路由信息中,Cisco IOS软件获取系统路由。系统路由不包括子网信息。  外部路由是确认最近常访问网关(gateway of last resort)时,到自治系统外部网络的路由。Cisco IOS从IGRP提供的外部路由表中选择最近常访问网关。如果包没有更优路由且目的地不在所连接的网络上,软件使用最近常访问的网关(路由器)。如果自治系统连接了不止一个外部网络,不同路由器可以选择不同的外部路由器作为最近常访问网关。更新机制  缺省情况下,运行IGRP的路由器每90秒发送一次更新广播,如果在3个更新周期内 (即270秒),没有从路由中的第一个路由器接收到更新,则宣布路由不可访问。在7个更新周期(即630秒)后,Cisco IOS软件从路由表中清除路由。 IGRP使用快速更新(flash update)和抑制可逆更新(poison reverseupdate),加速路由算法的收敛。当通知其他路由器尺度改变时,在标准周期性更新时间段之前就会产生快速更新。  发出抑制可逆更新以清除路由,并把此路由设置为阻塞(holddown),这使新的路由信息与某一时间周期相分离。抑制可逆更新避免了由路由距离增大而引起的大量环路。TOP

EIGRPEIGRP:Enhanced Interior Gateway Routing Protocol 即 增强网关内部路由线路协议。也翻译为 加强型内部网关路由协议。 EIGRP是Cisco公司的私有协议。Cisco公司是该协议的发明者和唯一具备该协议解释和修改权的厂商。 EIGRP结合了链路状态和距离矢量型路由选择协议的Cisco专用协议,采用弥散修正算法(DUAL)来实现快速收敛,可以不发送定期的路由更新信息以减少带宽的占用,支持Appletalk、IP、Novell和NetWare等多种网络层协议。

EIGRP路由协议简介  是Cisco的私有路由协议,它综合了距离矢量和链路状态2者的优点,它的特点包括:1.快速收敛  链路状态包(Link-State Packet,LSP)的转发是不依靠路由计算的,所以大型网络可以较为快速的进行收敛.它只宣告链路和链路状态,而不宣告路由,所以即使链路发生了变化,不会引起该链路的路由被宣告.但是链路状态路由协议使用的是Dijkstra算法,该算法比较复杂,并且和其他路由协议单独计算路由相比较占CPU和内存资源,EIGRP采用弥散更新算法(diffusingcomputations ),通过多个路由器并行的进行路由计算,这样就可以在无环路产生的情况下快速的收敛.2.减少带宽占用  EIGRP不作周期性的更新,它只在路由的路径和度发生变化以后做部分更新.当路径信息改变以后,DUAL只发送那条路由信息改变了的更新,而不是发送整个路由表.和更新传输到一个区域内的所有路由器上的链路状态路由协议相比,DUAL只发送更新给需要该更新信息的路由器。在WAN低速链路上,EIGRP可能会占用大量带宽,默认只占用链路带宽50%,之后发布的IOS允许使用命令ip bandwidth-percent eigrp来修改这一默认值.3.支持多种网络层协议  EIGRP通过使用“协议相关模块”(即protocol-dependentmodule<PDM>),可以支持IPX,ApplleTalk,IP,IPv6和NovellNetware等协议.4.无缝连接数据链路层协议和拓扑结构  EIGRP不要求对OSI参考模型的层2协议做特别的配置.不像OSPF,OSPF对不同的层2协议要做不同配置,比如以太网和帧中继,EIGRP能够有效的工作在LAN和WAN中,而且EIGRP保证网络不会产生环路(loop-free);而且配置起来很简单;支持VLSM;它使用多播和单播,不使用广播,这样做节约了带宽;它使用和IGRP一样的度的算法,但是是32位长的;它可以做非等价的路径的负载平衡.编辑本段四个组件  1.Protocol-Dependent Module(PDM)  2.可靠传输协议(Reliable Transport Protocol,RTP)  3.邻居的发现/恢复  4.弥散更新算法(Diffusing Update Algorithm,DUAL)编辑本段RTP-EIGRP的可靠传输协议  RTP负责EIGRP packet(下面有讲)的按顺序(可靠)的发送和接收,这个可靠的保障是通过Cisco私有的一个算法,reliable multicast实现的,使用组播地址224.0.0.10,每个邻居接收到这个可靠的组播包的时候就会以一个unicast作为确认按顺序的发送是通过packet里的2个序列号实现的,每个packet都包含发送方分配的1个序列号,发送方每发送1个packet,这个序列号就递增1.另外,发送方也会把最近从目标路由器接收到的packet的序列号放在这个要发送的packet里,在某些情况下,RTP也可以使用无需确认的不可靠的发送,并且使用这种不可靠发送的packet中不包含序列号.EIGRP第一次传输都采用组播形式,重传输都采用单播。编辑本段EIGRP-Metric计算方法  EIGRP选择一条主路由(最佳路由)和一条备份路由放在topology table(EIGRP到目的地支持最多6条链路).它支持几种路由类型:内部,外部(非EIGRP)和汇总路由.EIGRP使用混合度.  i.EIGRP Metric的5个标准1.带宽  10的7次方除以源和目标之间最低的带宽乘以2562.延迟(delay)  接口的累积延迟乘以256,单位是10微秒3.可靠性(reliability)  根据keepalive而定的源和目的之间最不可靠的可靠度的值4.负载(loading)  根据包速率和接口配置带宽而定的源和目的之间最不差的负载的值5.最大传输单元(MTU)  路径中最小的MTU.MTU包含在EIGRP的路由更新里,但是一般不参与EIGRP度的运算ii. EIGRP Metric的计算  EIGRP度量值的计算公式为:256*{K1(10^7/带宽)+K2(10^7/带宽)/(256-负载)+K3(延迟)+K5/(可靠性+K4)}  默认情况下,K1和K3是1,其他的K值都是0.  所以通常情况下,度量值=256×(10^7/最小带宽+累积延时)  通过配置权重(K值),可以修改EIGRP度量值计算方式。可以再EIGRP配置模式使用命令:Metric weight Tos K1 K2 K3 K4 K5 来修改K值,Tos 只有一个有效值0,否则将被忽略。  EIGRP 要求两台路由器的K值必须相同才能成为邻居。另外,K2,K4,,K5最好不要设置,因为这些参数设置为非零之后,会导致计算度量值时会考虑借口的负载和可靠性,而负载和可靠性会随时间变化,这将导致EIGRP重新泛洪拓扑数据,还可能导致路由器不断地选择不同的路由,由此导致网络不稳定。编辑本段EIGRP Packet  EIGRP使用多种类型的packet,这些packet通过IP头部信息里的协议号88来标识:1. Hello packet  用来发现和恢复邻居,通过组播的方式发送,使用不可靠的发送.2. ACK(acknowledgement) packet  不包含数据(data)的Hello包,使用unicast的方式,不可靠的发送.3. Update packet  传播路由更新信息,不定期的,通过可靠的方式发送(比如网络链路发生变化).当只有一台路由器需要路由更新时,update通过unicast的方式发送;当有多个路由器需要路由更新的时候,通过组播的方式发送.4. Query(查询) & Reply(应答) packet  是DUAL finite state machine用来管理扩散计算用的,查询包可以是组播或unicast;应答包是通过unicast的方式发送,并且方式都是可靠的.5. Request(请求) packet  最初是打算提供给路由服务器(server)使用的,但是从来没实现过.编辑本段邻居发现/恢复协议  EIGRP的Update包是非周期性发送的,  1.Hello包在一般的网络中(比如点到点,point-to-point)是每5秒组播1次(要随机减去1个很小的时间防止同步);  2.在多点(multipoint)X.25,帧中继(Frame Relay,FR)和ATM接口(比如ATM SVC)和ISDN PRI接口上,Hello包的发送间隔是60  秒.  在所有的情况中,Hello包是不需要确认的.可以在接口配置模式下修改该接口的Hello包默认的发送间隔,命令为
ip hello-interval eigrp  当一个路由器收到从邻居发来的Hello包的时候,这个Hello包包含了一个holdown time,这个holdown time告诉这个路由器等待后续Hello包的最大时间.如果在超出这个holdown time之前没有收到后续Hello包,那么这个邻居就会被宣告为不可达,并通知DUAL这个邻居已丢失.默认hold time是3倍于Hello包发送间隔的, 更高链路– 默认Hello间隔和保持时间是5s和15s T1或低于T1链路– 分别是60s和180s可以在接口配置模式下修改这个默认的holdown time, 命令为
ip hold-time eigrp.  EIGRP邻居信息都记录在邻居表(neighbor table)中,使用show ip eigrp neighbors命令查看IP EIGRP的邻居.编辑本段EIGRP对环路的解决EIGRP LOOP

如果EIGRP不考虑环路的问题,那么当右图中连接路由3和4的线路断开后会因到不了network a而使路由1-3相互查询怎么去network a而产生环路。因此EIGRP对于环路的防止考虑两方面:  1.水平分割(Split Horizon)  永远不会在同一个接口下通告一条该接口学到的路由信息  2.路由的毒性逆转(Poison reverse)  接收路由信息的接口,再从该接口通告出刚才学到的路由为不可达  触发条件:  当两台路由器进行邻居初始化时,他们会互相以最大的metric值通告回刚才学到的路由信息(路由中毒)  当拓扑发生改变时,会临时关闭水平分割和毒性逆转,重新学习拓扑  发送查询请求时,会引起水平分割,比如当一个路由器查询一条未知网段去向时,他会想每一个邻居发送查询,处于该网段的继承者(successor)会返回查询给该路由器,而该路由器会反馈一个查询结果给其他邻居,不会再次告诉那个继承者要走这个网段应该要经过自己编辑本段路由重分发  在一些大型网络中,往往存在不同的自治区域需要互联的情况EIGRP重分发

。b比如在右图的情况下,AS号为1000的要与AS号为2000的两个EIGRP相互通信,只需要在中间路由器配置重分发,注意配置重分发也要避免路由环路。  示例:
Router One  router eigrp 2000 network 172.16.1.0 0.0.0.255
Router Two  router eigrp 2000 redistribute eigrp 1000 route-map to-eigrp2000  network 172.16.1.0 0.0.0.255–在AS=2000内定义邻居AS=1000去AS=2000的网段  !  router eigrp 1000  redistribute eigrp 2000 route-map to-eigrp1000–在AS=1000内定义邻居AS=2000去AS=1000的网段  network 10.1.0.0 0.0.255.255  route-map to-eigrp1000 deny 10  match tag 1000  !  route-map to-eigrp1000 permit 20  set tag 2000  !  route-map to-eigrp2000 deny 10  match tag 2000  !  route-map to-eigrp2000 permit 20  set tag 1000  –当AS=1000的网段被标上(tag)1000的标记,当AS=2000重分发进AS=1000时,被标上1000的路由信息将被拒绝,以防产生环路;反之在AS=2000上亦然。
Router Three  router eigrp 1000network 10.1.0.0 0.0.255.255  现在路由1和3之间就能互访了。编辑本段术语定义1.弥散更新算法简介  (弥散更新算法可以保证路由100%无环路loopfree)为了能够让DUAL正确的操作,低层协议必须满足以下几个条件:  1. 一个节点要在有限的时间里检测到新邻居的存在或和一个邻居的连接的丢失  2. 在链路上传输的所有信息必须在有限的时间里按正确的顺序收到  3. 所有的消息,包括链路cost的更改,链路故障,和新邻居的发现,都应该是在有限时间里,一个一个的依次处理Cisco的EIGRP使用邻居的发现/恢复和RTP来确保上述前提条件2.adjacency(邻接)  在刚启动的时候,路由器使用Hello包来发现邻居并标识自己用于邻居的识别.当邻居被发现以后,EIGRP会在它们之间形成一种邻接关系.邻接是指在这2个邻居之间形成一条交换路由信息的虚链路(virtual link).当邻接关系形成以后,它们之间就可以相互发送路由update,这些update包括路由器它所知道的所有的链路及其metric.对于每个路由,路由器都会基于它邻居宣告的距离(distance)和到达那个邻居的链路的cost来计算出一个距离3.Feasible Distance(FD,可行距离)  到达每个目标网络的最小的metric将作为那个目标网络的FD.比如,路由器可能有3条到达网络172.16.5.0的路由,metric分别为380672,12381440和660868,那么380672就成了FD.4. Feasible Condition(FC,可行条件)  邻居宣告到达目标网络的的距离小于本地路由器到达目标网络的FD AD < FD => FC=ture.5.Feasible Successor(FS,可行后继路由)  如果一个邻居宣告到达目标网络的距离满足FC,那么这个邻居就成为FS.比如,路由器到达目标网络172.16.5.0的FD为380672,而他邻居所宣告到达目标网络的距离为355072,这个邻居路由器满足FC,它就成为FS;如果邻居路由器宣告到达目标网络的距离为380928,即不满足FC,那么这个邻居路由器就不能成为FS,FS和FC是避免环路的核心技术,FS也是downstream router(下游路由器),因为从FS到达目标网络的距离比本地路由器到达目标网络的FD要小,  router eigrp 1000network 10.1.0.0 0.0.255.255  现在路由1和3之间就能互访了。编辑本段术语定义1.弥散更新算法简介  (弥散更新算法可以保证路由100%无环路loopfree)为了能够让DUAL正确的操作,低层协议必须满足以下几个条件:  1. 一个节点要在有限的时间里检测到新邻居的存在或和一个邻居的连接的丢失  2. 在链路上传输的所有信息必须在有限的时间里按正确的顺序收到  3. 所有的消息,包括链路cost的更改,链路故障,和新邻居的发现,都应该是在有限时间里,一个一个的依次处理Cisco的EIGRP使用邻居的发现/恢复和RTP来确保上述前提条件2.adjacency(邻接)  在刚启动的时候,路由器使用Hello包来发现邻居并标识自己用于邻居的识别.当邻居被发现以后,EIGRP会在它们之间形成一种邻接关系.邻接是指在这2个邻居之间形成一条交换路由信息的虚链路(virtual link).当邻接关系形成以后,它们之间就可以相互发送路由update,这些update包括路由器它所知道的所有的链路及其metric.对于每个路由,路由器都会基于它邻居宣告的距离(distance)和到达那个邻居的链路的cost来计算出一个距离3.Feasible Distance(FD,可行距离)  到达每个目标网络的最小的metric将作为那个目标网络的FD.比如,路由器可能有3条到达网络172.16.5.0的路由,metric分别为380672,12381440和660868,那么380672就成了FD.4. Feasible Condition(FC,可行条件)  邻居宣告到达目标网络的的距离小于本地路由器到达目标网络的FD AD < FD => FC=ture.5.Feasible Successor(FS,可行后继路由)  如果一个邻居宣告到达目标网络的距离满足FC,那么这个邻居就成为FS.比如,路由器到达目标网络172.16.5.0的FD为380672,而他邻居所宣告到达目标网络的距离为355072,这个邻居路由器满足FC,它就成为FS;如果邻居路由器宣告到达目标网络的距离为380928,即不满足FC,那么这个邻居路由器就不能成为FS,FS和FC是避免环路的核心技术,FS也是downstream router(下游路由器),因为从FS到达目标网络的距离比本地路由器到达目标网络的FD要小,存在一个或多个FS的目标网络被记录在拓扑表中。6.拓扑表(Topological Table)  拓扑表包括以下内容:  目标网络的FD.  所有的FD.  每一个FS所宣告的到达目标网络的距离.  本地路由器计算出的,经过每个FS到达目标网络的距离,即基于FS所宣告到达目标网络的距离和本地路由器到达那个FS的链路的cost.  发现FS的网络相连的接口.7.邻居表(Neighbor Table)  每个路由器的RAM中都保存有关于邻居的地址和接口信息的表。8.后继路由(Successor)  又称成功者(Secessful),是到达远程网络的最佳路由。是EIGRP用于转发业务量的路由,它被存储在路由表中。
EIGRP路由协议优缺点(1)EIGRP路由协议主要优点  精确路由计算和多路由支持。EIGRP协议继承了IGRP协议的最大的优点是矢量路由权。EIGRP协议在路由计算中要对网络带宽、网络时延、信道占用率和信道可信度等因素作全面的综合考虑,所以EIGRP的路由计算更为准确,更能反映网络的实际情况。同时EIGRP协议支持多路由,使路由器可以按照不同的路径进行负载分担。  较少带宽占用。使用EIGRP协议的对等路由器之间周期性的发送很小的hello报文,以此来保证从前发送报文的有效性。路由的发送使用增量发送方法,即每次只发送发生变化的路由。发送的路由更新报文采用可靠传输,如果没有收到确认信息则重新发送,直至确认。EIGRP还可以对发送的EIGRP报文进行控制,减少EIGRP报文对接口带宽的占用率,从而避免连续大量发送路由报文而影响正常数据业务的事情发生。  快速收敛。路由计算的无环路和路由的收敛速度是路由计算的重要指标。EIGRP协议由于使用了DUAL算法,使得EIGRP协议在路由计算中不可能有环路路由产生,同时路由计算的收敛时间也有很好的保证。因为,DUAL算法使得EIGRP在路由计算时,只会对发生变化的路由进行重新计算;对一条路由,也只有此路由影响的路由器才会介入路由的重新计算。  MD5认证。为确保路由获得的正确性,运行EIGRP协议进程的路由器之间可以配置MD5认证,对不符合认证的报文丢弃不理,从而确保路由获得的安全。  路由聚合。EIGRP协议可以通过配置,对所有的EIGRP路由进行任意掩码长度的路由聚合,从而减少路由信息传输,节省带宽。  实现负载分担。去往同一目的的路由表项,可根据接口的速率、连接质量和可靠性等属性,自动生成路由优先级,报文发送时可根据这些信息自动匹配接口的流量,达到几个接口负载分担的目的。  配置简单。使用EIGRP协议组建网络,路由器配置非常简单,它没有复杂的区域设置,也无需针对不同网络接口类型实施不同的配置方法。使用EIGRP协议只需使用router eigrp命令在路由器上启动EIGRP 路由进程,然后再使用network 命令使能网络范围内的接口即可。(2)EIGRP路由协议主要缺点  没有区域概念。EIGRP没有区域的概念,而OSPF在大规模网络的情况下,可以通过划分区域来规划和限制网络规模。所以EIGRP适用于网络规模相对较小的网络,这也是矢量-距离路由算法(RIP协议就是使用这种算法)的局限所在。  定时发送HELLO报文。运行EIGRP的路由器之间必须通过定时发送HELLO报文来维持邻居关系,这种邻居关系即使在拨号网络上,也需要定时发送HELLO报文,这样在按需拨号的网络上,无法定位这是有用的业务报文还是EIGRP发送的定时探询报文,从而可能误触发按需拨号网络发起连接,尤其在备份网络上,引起不必要的麻烦。所以,一般运行EIGRP的路由器,在拨号备份端口还需配置Dialer list和Dialer group,以便过滤不必要的报文,或者运行TRIP协议,这样做增加路由器运行的开销。而OSPF可以提供对拨号网络按需拨号的支持,只用一种路由协议就可以满足各种专线或拨号网络应用的需求。  基于分布式的DUAL算法。EIGRP的无环路计算和收敛速度是基于分布式的DUAL算法的,这种算法实际上是将不确定的路由信息散播(向邻居发query报文),得到所有邻居的确认后(reply报文)再收敛的过程,邻居在不确定该路由信息可靠性的情况下又会重复这种散播,因此某些情况下可能会出现该路由信息一直处于活动状态(这种路由被称为活动路由栈),并且,如果在活动路由的这次DUAL计算过程中,出现到该路由的后继(successor)的测量发生变化的情况,就会进入多重计算,这些都会影响DUAL算法的收敛速度。而OSPF算法则没有这种问题,所以从收敛速度上看,虽然整体相近,但在某种特殊情况下,EIGRP还有不理想的情况。  EIGRP是Cisco公司的私有协议。Cisco公司是该协议的发明者和唯一具备该协议解释和修改权的厂商。如果要支持EIGRP协议需向Cisco公司购买相应版权,并且Cisco公司修改该协议没有义务通知任何其他厂家和使用该协议的用户。而OSPF是开放的协议,是IETF组织公布的标准。世界上主要的网络设备厂商都支持该协议,所以它的互操作性和可靠性由于公开而得到保障,并且在众多的厂商支持下,该协议也会不断走向更加完善。
IGRP与EIGRP路由协议IGRP(Interior Gateway Routing Protocol,内部网关路由选择协议)是Cisco特有的基于距离矢量的路由协议,虽然同样应用于规模较小的局域网络,但是,与RIP路由协议有所不同,IGRP使用IP层的端口号9进行报文交换,而RIP则是使用520端口进行报文交换。  IGRP同样是一种动态距离向量路由协议,它由Cisco公司20世界80年代中期设计推出,使用跳数来确定到达一个网络的最佳路径,使用延迟、带宽、可靠性和负载来确定最优路由。默认状态下,IGRP每90秒钟发送一次路由更新广播,在3个更新周期(即270秒)内,如果没有从路由中的第一个路由器接受到更新,则宣布路由器不可访问。在7个周期(即630秒)后,Cisco IOS(网际操作系统)软件会从路由表中清除该路由。  EIGRP结合了链路状态和距离矢量型路由选择协议的Cisco专用协议,采用弥散修正算法(DUAL)来实现快速收敛,可以不发送定期的路由更新信息以减少带宽的占用,支持Appletalk、IP、Novell和NetWare等多种网络层协议。自从EIGRP路由协议诞生后,IGRP路由协议便很少再被使用了。
基本配置  r1(config)#router eigrp 1  r1(config-router)#net 192.168.1.0激活接口,下行等价命令  r1(config-router)#net 192.168.1.1 0.0.0.255  r1(config-router)#passive-interface fastEthernet 0/1 不从F0/1发hello包  neib 192.168.1.2 / lo 0单播  variance <multiplier> 非等价负载均衡  bandwidth <kbps> 带宽  ip bandwidth-parcent AS 占用带宽  key chain <name> MD5验证  key <ID>  key-string <string>  ip authenticatian mode eigrp <AS> md5  ip authentication key-chain eigrp <AS> <name-of-chain>  show命令:  show ip eigrp int / nei / top / tra/  show ip pro编辑本段EIGRP metric 详解  1. EIGRP metric = (IGRP metric) * 256 IGRP metric is 24 bits in length. EIGRP metric is 32 bits in length.  2. K1 :: Bandwidth = (10,000,000 / bandwidth on interface, kbps) * 256 56K 45714176 1.544M 1657856 (10,000,000 / 1544 = 6476) * 256 10M 256000 100M 25600 1G 2560  3. K2 :: Loading  4. K3 :: Delay sum of delays in the path, in tens of microseconds, mutliplied by 256 Delay = [(sum of the DLY, in microseconds) / 10] * 256 这里的DLY是从本地接口发出后,沿途所经所有源接口的DLY,举例:DLY=8000usec DLY=10000usec . . . DLY=20000usec . DLY=5000usec . . . . . . 12.0.0.0/24 . . |—lo0-( R1 )-s0/0——————s0/0-( R2 )-lo0—| . . . . . . . . . . . . . . BW=1544Kbit BW=1544Kbit . . . . . . . BW=8000000Kbit BW=8000000Kbit . . . . 1.1.1.0/24 2.2.2.0/24 在R1 上 show ip route 得到的指向2.2.2.0/24 的路由的 metric 值为2,297,856 Bandwidth = (10,000,000 / 1544) * 256 = 6476 * 256 = 1,657,856 Delay = [(20000 + 5000)/10] * 256 = 2500 * 256 = 640,000 metric = K1*BW + K3*Delay = 1657856 + 256000 = 2,297,856 在R2 上 show ip route 得到的指向1.1.1.0/24 的路由的 metric 值为2,118,656 Bandwidth = (10,000,000 / 1544) * 256 = 6476 * 256 = 1,657,856 Delay = [(10000 + 8000) / 10] * 256 = 1800 * 256 = 460,800 metric = K1*BW + K3*Delay = 1657856 + 460800 = 2,118,656 – 通过观察上面2个路由的 metric 可以看出,虽然只是2台路由器2个loopback接口之间的路由,并且在链路带宽一致的情况下,得出的 metric 却是不同的。其原因就是EIGRP 在计算 metric 时所取的DLY 值是路由路径中所有链路的源端口的DLY 值,由于一条链路上的2端接口的DLY 值不同,才产生了2个方向上的不同的 metric 结果。事实上 bandwidth 的值并不是链路上的最小带宽,这个在很多书上的讲解都是错误的,在EIGRP 的 metric 计算中,bandwidth 只是一个性能参考值,并不反映真实带宽,它就是本地接口上显示的BW 值,可以通过接口命令 bandwidth 修改。例如: R2(config)#int s0/0R2(config-if)#bandwidth 1000R2(config-if)#do sh ip routeCodes: C – connected, S – static, R – RIP, M – mobile, B – BGP D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2 E1 – OSPF external type 1, E2 – OSPF external type 2 i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2 ia – IS-IS inter area, * – candidate default, U – per-user static route o – ODR, P – periodic downloaded static route  Gateway of last resort is not set  1.0.0.0/24 is subnetted, 1 subnetsD 1.1.1.0 [90/3020800] via 10.1.1.1, 00:00:21, Serial0/0 2.0.0.0/24 is subnetted, 1 subnetsC 2.2.2.0 is directly connected, Loopback0 12.0.0.0/24 is subnetted, 1 subnetsC 12.1.1.0 is directly connected, Serial0/0  可以看到, 1.1.1.0 的 metric 已从2,118,656 变为3,020,800 5. K4 :: Reliability Can be observed at the result of show interface  6. K5 :: MTU  7. K1~K5 —> B-L-D-R-M —> BLack DReaM (这是我的一个记忆技巧)  8. Formula with default K values (K1=1, K2=0, K3=1, K4=0, K5=0): metric = K1*BW + ((K2*BW)/(256-load)) + K3*delay = BW + delay  9. If K5 is not equal to 0: metric = metric * [ K5/(reliability + K4) ]  10.K values are carried in EIGRP hello packets.  11.Mismatched K values can cause a neighbor to be reset.
EIGRP常用排错命令  show run | begin router eigrp//查看配置文件中eigrp的配置命令  show ip protocols//查看当前路由器运行的eigrp协议状态  show ip route summary//查看eigrp路由汇总状态  show ip eigrp neighbors//查看eigrp邻居状态  show ip eigrp interface//查看各个运行eigrp的状态  show ip eigrp interface detail//查看各个运行eigrp的详细状态  show ip route eigrp//查看eigrp协议学习到的路由表  show ip eigrp topology//查看eigrp的拓扑表  show ip eigrp topology all-links//查看eigrp完整的拓扑表  show ip eigrp topology 10.1.1.0 255.255.255.0//产看指定的某个网络参数信息  debug eigrp packets//调试eigrp的查讯包  debug eigrp fsm //调试eigrp的dual算法调试信息
EIGRP与OSPF的区别  1. EIGRP[1]是cisco专用的,而OSPF则是通用的协议。  2. EIGRP是一个距离矢量协议(有些资料说是混合型的),而OSPF是链路状态协议。  3. EIGRP支持自动汇总功能,它可以在A.B.C类网络的边界实现自动汇总,同时也支持手动配置;而OSPF则不可以,汇总必须手动配置  4. EIGRP的汇聚速度要比OSPF快,因为在它的拓扑图中保存了可选后继,直接后继找不到时可以直接通过可选后继转发。  5. EIGRP的多播地址是224.0.0.10,OSPF是224.0.0.5和224.0.0.6。  6. EIGRP的路径度量是复合型的,OSPF则是Cost型的(当然一般的cost还是根据bandwidth来计算的)  7. 尽管EIGRP支持路由汇总功能,但是它没有分级(hierachical)路由的概念,不像OSPF那样对网络进行分级。  8. 在邻居关系的建立上,EIGRP没有OSPF那么复杂的down-init-two way的过程,只要一个路由器看到邻居的hello包,它就与之建立邻接关系。  9. 在汇总功能的实现上,EIGRP可以在任何路由器的任何接口实现,而OSPF则只能在ABR和ASBR上实现,而且它的路由汇总不是基于接口的。  10. EIGRP支持不等路径度量值的负载均衡,而OSPF则只支持相等度量值的负载均衡。  11. EIGRP使用DUAL算法计算最短路径,而且它采用了有限状态机(finite-state machine)来跟踪所有的路由信息包,保证无回路(loop-free)以及后继路由的选择。OSPF采用Dijikstra算法计算最短路径,它不采用有限状态机。  12. EIGRP邻接关系的确立只要两个参数相符合就行:K-value和AS number;而OSPF的邻接关系的建立需要多个参数符合:hello/dead timer ,authentication password,area id, stub flag等。  13. 最后就是它们配置以及检查(show command)上的不同了,这方面不同点很多,就要慢慢体会了。如ospf 中的show ip ospf database对应eigrp中的show ip eigrp topology。

BGPBGP(Border Gateway Protocol )边界网关协议,用来连接Internet上独立系统的路由选择协议。它是Internet工程任务组制定的一个加强的、完善的、可伸缩的协议。BGP4支持CIDR寻址方案,该方案增加了Internet上的可用IP地址数量。BGP是为取代最初的外部网关协议EGP设计的,也被认为是一个路径矢量协议。

定义  BGP(Border Gateway Protocol)是一种在自治系统之间动态交换路由信息的路由协议。一个自治系统的经典定义是在一个管理机构控制之下的一组路由器,它使用IGP和普通度量值向其他自治系统转发报文。  在BGP中使用自治系统这个术语是为了强调这样一个事实:一个自治系统的管理对于其他自治系统而言是提供一个统一的内部选路计划,它为那些通过它可以到达的网络提供了一个一致的描述。  BGP,边界网关协议,是自主网络系统中网关之间交换器路由信息的协议。边界网关协议常常应用于互联网的网关之间。路由表包含已知路由器的列表、路由器能够达到的地址以及到达每个路由器的路径的跳数。  使用边界网关协议的主机一般也使用传输控制协议(TCP)。当网络检测到某台主机发出变化时,就会发送新的路由表。BGP-4,边界网关协议的最新版本,允许网络管理员在策略描述下配置跳数的规格。
扩展  BGP是一种不同自治系统的路由器之间进行通信的外部网关协议。BGP是ARPANET所使用的老EGP的取代品。RFC1267[LougheedandRekhter1991]对第3版的BGP进行了描述。  RFC1268[RekhterandGross1991]描述了如何在Internet中使用BGP。下面对于BGP的大部分描述都来自于这两个RFC文档。同时,1993年开发第4版的BGP(见RFC1467[Topolcic1993]),以支持CIDR。  BGP系统与其他BGP系统之间交换网络可到达信息。这些信息包括数据到达这些网络所必须经过的自治系统AS中的所有路径。这些信息足以构造一幅自治系统连接图。然后,可以根据连接图删除选路环,制订选路策略。  首先,将一个自治系统中的IP数据报分成本地流量和通过流量。在自治系统中,本地流量是起始或终止于该自治系统的流量。也就是说,其信源IP地址或信宿IP地址所指定的主机位于该自治系统中。其他的流量则称为通过流量。在Internet中使用BGP的一个目的就是减少通过流量。  可以将自治系统分为以下几种类型:1) 残桩自治系统(stubAS),它与其他自治系统只有单个连接。stubAS只有本地流量。2) 多接口自治系统(multihomedAS),它与其他自治系统有多个连接,但拒绝传送通过流量。3) 转送自治系统(transitAS),它与其他自治系统有多个连接,在一些策略准则之下,它可以传送本地流量和通过流量。  这样,可以将Internet的总拓扑结构看成是由一些残桩自治系统、多接口自治系统以及转送自治系统的任意互连。残桩自治系统和多接口自治系统不需要使用BGP——它们通过运行EGP在自治系统之间交换可到达信息。  BGP允许使用基于策略的选路。由自治系统管理员制订策略,并通过配置文件将策略指定给BGP。制订策略并不是协议的一部分,但指定策略允许BGP实现在存在多个可选路径时选择路径,并控制信息的重发送。选路策略与政治、安全或经济因素有关。  BGP与RIP和OSPF的不同之处在于BGP使用TCP作为其传输层协议。两个运行BGP的系统之间建立一条TCP连接,然后交换整个BGP路由表。从这个时候开始,在路由表发生变化时,再发送更新信号。  BGP是一个距离矢量协议,但是与(通告到目的地址跳数的)RIP不同的是,BGP列举了到每个目的地址的路由(自治系统到达目的地址的序列号)。这样就排除了一些距离矢量协议的问题。采用16bit数字表示自治系统标识。  BGP通过定期发送keepalive报文给其邻站来检测TCP连接对端的链路或主机失败。两个报文之间的时间间隔建议值为30秒。应用层的keepalive报文与TCP的keepalive选项是独立的。
详解背景  路由包括两个基本的动作:确定最佳路径和信息群(通常称为分组)通过网络的传输。通过网络传输分组相对较简单,而路径的确定复杂。BGP就是当今网络中实现路径选择的一种协议。下面简述BGP的基本操作,并提供其协议组件的描述。  BGP在TCP/IP网中实现域间路由。BGP是一种外部网关协议(EGP),即它在多个自治系统或域间执行路由、 与其它BGP系统交换路由和可达性信息。  BGP设计用以代替其前身(现在已不用了)外部网关协议(EGP)作为全球因特网的标准外部网关路由协议。 BGP解决了EGP的严重问题,能更有效地适应因特网的飞速发展。  下面是核心路由器用BGP在AS间路由数据的示意图。bgp

BGP在多个RFC中规定:RFC1771 – 描述了BGP4,即BGP的当前版本。 RFC1654 – 描述了第一个BGP4规范。 RFC1105,RFC1163和RFC1267 – 描述了BGP4之前的BGP版本。操作  BGP执行三类路由:AS间路由、AS内部路由和贯穿AS路由。  AS间路由发生在不同AS的两个或多个BGP路由器之间,这些系统的对等路由器使用BGP来维护一致的网络拓扑视图,AS间通信的BGP邻居必须处于相同的物理网络。因特网就是使用这种路由的实例,因为它由多个AS(或称管理域)构成,许多域为构成因特网的研究机构、公司和实体。BGP经常用于为因特网内提供最佳路径而做路由选择。  AS内部路由发生在同一AS内的两个或多个BGP路由器间,同一AS内的对等路由器用BGP来维护一致的系统拓扑视图。BGP也用于决定哪个路由器作为外部AS的连接点。再次重申,因特网提供了AS间路由的实例。一个组织,如大学,可以利用BGP在其自己的管理域(或称AS)内提供最佳路由。BGP协议既可以提供AS间也可以提供AS内部路由。
bgp

贯穿(pass-through)AS路由发生在通过不运行BGP的AS交换数据的两个或多个BGP对等路由器间。在贯穿AS环境中,BGP通信既不源自AS内,目的也不在该AS内的节点,BGP必须与AS内使用的路由协议交互以成功地通过该AS传输BGP通信,下图所示为贯穿AS环境:路由  与其它路由协议一样,BGP维护路由表、发送路由更新信息且基于路由metric决定路由。BGP系统的主要功能是交换其它BGP系统的网络可达信息,包括AS路径的列表信息,此信息可用于建立AS系统连接图,以消除路由环,及执行AS策略确定。  每个BGP路由器维护到特定网络的所有可用路径构成的路由表,但是它并不清除路由表,它维持从对等路由器收到的路由信息直到收到增值(incremental)更新。  BGP设备在初始数据交换和增值更新后交换路由信息。当路由器第一次连接到网络时,BGP路由器交换它们的整个BGP路由表,类似的,当路由表改变时,路由器发送路由表中改变的部分。BGP路由器并不周期性发送路由更新,且BGP路由更新只包含到某网络的最佳路径。  BGP用单一的路由metric决定到给定网络的最佳路径。这一metric含有指定链路优先级的任意单元值,BGP的metric通常由网管赋给每条链路。赋给一条链路的值可以基于任意数目的尺度,包括途经的AS数目、稳定性、速率、延迟或代价等。类型  RFC1771中规定了四种BGP消息类型:初始(open)消息,更新消息、通知消息和keep-alive消息。  初始消息在对等路由器间打开一个BGP通信会话,是建立传输协议后发送的第一个消息,初始消息由对等设备发送的keep-alive消息确认,且必须得到确认后才可以交换更新、通知和keep-alive消息。  更新消息用于提供到其它BGP系统的路由更新,使路由器可以建立网络拓扑的一致视图。更新用TCP发送以保证传输的可靠性。 更新消息可以从路由表中清除一条或多条失效路由,同时发布若干路由。  通知消息在检查到有错误时发送。通知消息用于关闭一条活动的会话,并通知其它路由器为何关闭该会话。  keep-alive消息通知对等BGP路由器该设备仍然alive。keep-alive消息发布足够频繁以防止会话过期。格式  简述BGP初始、更新、通知和keep-alive消息类型及基本的BGP信头格式。  1、信头格式
bgp

所有的BGP消息类型都使用基本的分组信头。初始、更新和通知消息有附加的域,而keep-alive消息只使用基本的分组信头。下图为BGP信头使用的域:  每个BGP分组都包含信头,其主要目的是标识该分组的功能。下面简述信头中的每个域。  标记 – 含有认证值。 长度 – 指示消息的总长度,以字节计。 类型 – 标识消息类型为下列类型之一:  初始 更新 通知 keep-alive 数据:为可选域,含有上层信息。  2、初始消息格式
bgp

BGP初始消息由BGP信头和附加域构成,下图为BGP初始消息的附加域:  在信头的类型域中标识为BGP初始消息的BGP分组包含下列各域,这些域为两个BGP路由器建立对等关系提供了交换方案:  版本 – 提供BGP版本号,使接收者可以确认它是否与发送者运行同一版本协议。 自治系统 – 提供发送者的AS号。 保持时间(Hold-time) – 在发送者被认为失效前最长的不接收消息的秒数。 BGP标识 – 提供发送者的标识(IP地址),在启动时决定,对所有本地接口和所有对等BGP路由器而言都是相同的。 可选参数长度 – 标识可选参数域的长度(如果存在的话)。 可选参数 – 包含一组可选参数。目前只定义了一个可选参数类型:认证信息。认证信息含有下列两个域:认证码:标识使用的认证类型。认证数据:包含由认证机制使用的数据。  3、更新消息格式
bgp

BGP更新消息由BGP信头和附加域构成,下图为BGP更新消息的附加域:  收到更新消息分组后,路由器就可以从其路由表中增加或删除指定的表项以保证路由的准确性。更新消息包含下列域:  失效路由长度 – 标识失效路由域的总长度或该域不存在。 失效路由 – 包含一组失效路由的IP地址前缀。 总路径属性长度 – 标识路径属性域的总长度或该域不存在。 路径属性 – 描述发布路径的属性,可能的值如下:  源:必选属性,定义路径信息的来源。 AS路径:必选属性,由一系列AS路径段组成。 下一跳:必选属性,定义了在网络层可达信息域中列出的应用作到目的地下一跳的边缘路由器的IP地址。 多重出口区分:可选属性,用于在到相邻AS的多个出口间进行区分。 本地优先权:可选属性,用以指定发布路由的优先权等级。 原子聚合:可选属性,用于发布路由选择信息。 聚合:可选属性,包含聚合路由信息。 网络层可达信息 – 包含一组发布路由的IP地址前缀。  4、通知消息格式:
bgp

下图为BGP通知消息使用的附加域:  通知消息分组用于给对等路由器通知某种错误情况。  错误码 – 标识发生的错误类型。下面为定义的错误类型:  消息头错:指出消息头出了问题,如不可接受的消息长度、标记值或消息类型。  初始消息错:指出初始消息出了问题,如不支持的版本号,不可接受的AS号或IP地址或不支持的认证码。  更新消息错:指出更新消息出了问题,如属性列表残缺、属性列表错误或无效的下一跳属性。  保持时间过期:指出保持时间已过期,这之后BGP节点就被认为已失效。  有限状态机错:指示期望之外的事件。  终止:发生严重错误时根据BGP设备的请求关闭BGP连接。  错误子码 – 提供关于报告的错误的更具体的信息。  错误数据 – 包含基于错误码和错误子码域的数据,用于检测通知消息发送的原因。
同步规则基本需求  1.BGP同步规则的定义:  在bgp同步打开的情况下,一个BGP路由器不会把那些通过ibgp邻居学到的bgp路由通告给自己的ebgp邻居;除非自己的igp路由表中存在这些路由,才可以向ebgp路由器通告.  2.BGP同步规则的目的:  防止一个AS(不是所有的路由器都运行bgp)内部出现路由黑洞,即向外部通告了一个本AS不可达的虚假的路由.
BGP同步规则的拓扑示意

3.BGP同步规则的基本需求  如果一个AS内部存在非bgp路由器,那么就出现了BGP和IGP的边界,需要在边界路由器将BGP路由发布到igp中,才能保证AS所通告到外部的BGP路由在AS内部是连通的.实际上是要求BGP路由和igp路由的同步.  4.满足BGP同步规则的基本需求的结果  如果将BGP路由发布到igp中,由于BGP路由主要是来自AS外部的路由(来自internet),那么结果是igp路由器要维护数以万计的外部路由,对路由器的CPU和memeory以及AS内部的链路带宽的占用将带来巨大的开销.  5.结论  通常BGP协议的运行需要关闭同步.解决方案  1.full mesh iBGP解决方案  AS内部的所有路由器都运行full mesh iBGP,就可以关闭所有路由器的同步而不影响路由的通告和连通性.  问题:
Full-Mesh IBGP 拓扑示意

当AS内部路由器数量很多时,需要建立N*(N-1)/2个ibgp会话,带来过度的系统开销,扩展性不好.  Full-Mesh IBGP 拓扑示意:15个路由器的AS,需要建立15(15-1)/2=105个ibgp会话  2.路由反射器解决方案  AS内部的所有路由器都运行bgp,在AS内部部署路由反射器,构建hub and spoke的ibgp(会话数为N-1), 然后关闭所有bgp路由器的同步.  问题:  此方案可以使bgp路由器传递ibgp路由到ebgp, 并保证bgp路由的连通性.但是对物理拓扑有很大的限制(要求是星型拓扑)  3.bgp联盟解决方案:
Bgp路由反射器设计拓扑

AS内部的所有路由器都运行bgp,把一个原始的AS基于网络拓扑划分为若干个sub-AS(又称联盟AS),联盟AS之间的bgp邻居叫做联盟ebgp,不需要full mesh bgp会话;在每个联盟AS内部运full mesh ibgp或者hub and spoke反射器,然后就可以关闭所有路由器的bgp同步功能.  结论:  bgp联盟结合路由反射器的方式较好的解决了bgp的同步规则带来的需求,是最为有效的解决方案.规则总结bgp联盟拓扑示意图

1.在所有的方案中, 既要保证传递bgp路由,还要保证bgp路由的连通性.  2.关闭同步能够实现bgp路由的传递,不一定能保证as内部连通性,除非as内所有路由器都运行bgp才可以保证连通性;否则,仍然需要路由再发布(bgpàigp)  3.最后,在as内部一般需要部署igp来维持AS内部网络路径的连通性,以保证as内部的所通告的bgp路由的下一跳的可达性.这样bgp网络就具有更好的灵活性和扩展性.
协议分析  BGP是一种自治系统间的动态路由发现协议,它的基本功能是在自治系统间自动交换无环路的路由信息。与OSPF和RIP等在自治区域内部运行的协议对应,BGP是一类EGP(Edge Gateway Protocol)协议,而OSPF和RIP协议为IGP协议。  BGP是在EGP应用的基础上发展起来的。EGP在此以前已经作为自治区域间的路由发现协议,广泛应用于NFSNET等主干网络上。但是,EGP被路由环路问题所困扰。BGP通过在路由信息中增加自治区域(AS)路径的属性,来构造自治区域的拓扑图,从而消除路由环路并实施用户配置的策略。同时,随着INTERNET的飞速发展,路由表的体积也迅速增加,自治区域间路由信息的交换量越来越大,都影响了网络的性能。BGP支持无类型的区域间路由CIDR(Classless Interdomain Routing),可以有效的减少日益增大的路由表。  BGP运行时刻分别与本自治区域外和区域内的BGP伙伴建立连接(使用Socket)。与区域内伙伴的连接称为IBGP(Internal BGP)连接,与自治区域外的BGP伙伴的连接称为EBGP(External BGP)连接。本地的BGP协议对IBGP和EBGP伙伴使用不同的机制处理。层次位置  BGP使用Socket服务建立连接,端口号为179。消息结构  BGP有4种类型的消息。分别为OPEN,UPDATE,KEEPALIVE和NOTIFY。它们有相同的消息头  ⑴消息头结构:  Marker : (16字节) 鉴权信息  Length : (2字节) 消息的长度  Type : (1字节) 消息的类型  0 :OPEN  1 :UPDATE  2 :NOTIFICATION  3 :KEEPALIVE  ⑵OPEN消息结构:  消息头加如下结构 :  Version :(1字节) 发端BGP版本号  My Autonomous System :(2字节无符号整数) 本地AS号  Hold Time :(2字节无符号整数) 发端建议的保持时间  BGP Identifier :(4字节) 发端的路由器标识符  OptParmLen :(1字节) 可选的参数的长度  Optional Parameters :(变长) 可选的参数  ⑶KEEPALIVE消息结构  KEEPALIVE消息只有一个消息头。  ⑷NOTIFY消息结构  消息头加如下结构:  Errsubcode :(1字节) 辅助错误代码,略。  Data :(变长) 依赖于不同的错误代码和辅助错误代码。用于诊断错误原因。  ⑸UPDATE消息结构  消息头加如下结构:  Unfeasible Routes Len :(2字节无符号整数) 不可达路由长度  Withdrawn Routes :(变长) 退出路由  Path Attribute Len :(2字节无符号整数) 路径属性长  Path Attributes :(变长) 路径属性(以下详细说明)  Network Layer Reachability Information :(变长) 网络可达信息(信宿)  其中退出路由和信宿地址的表示方法为一 的二元组。length一个字节,指示地址前缀的长度。prefix为地址前缀,长度1至4字节。路径属性  每个路径属性由1字节的属性标志位,1字节的属性类型,1或2字节路由属性长度和路径属性数据组成。  属性标志位:  位0:0 表示此属性必选,1 表示此属性可选。  位1:0 表示此属性为非过渡属性,1表示此属性为过渡属性。  位2:0 表示所有属性均为路由起始处生成,1 表示中间AS加入了新属性。  位3:0 表示路由属性长度由1字节指示,1表示由2字节指示。  位4至位7:未用置0  位0和位1标识了BGP的4类路由属性:  (01) 公认必选:BGP的UPDATE报文中必须存在的属性。它必须能被所有的BGP工具识别。公认必选属性的丢失意味着UPDATE报文的差错。这是为了保证所有的BGP工具统一于一套标准属性。  (01) 公认自决:能被所有BGP识别的属性,但在UPDATE报文中可发可不发  (11) 可选过渡:如果BGP工具不能识别可选属性,它就去找过渡属性位。如果此属性是过渡的,BGP工具就接受此属性,并把它向前传递给其它BGP路由器。  (10) 可选非过渡:当可选属性未被识别,且过渡属性也未被置位时,此属性被忽略,不传递给其它BGP路由器。属性类型  ⑴ORIGIN (Type Code = 1,公认必选属性)  指示此路由起始类型:  ⑵AS_PATH (Type Code = 2,公认必选属性)  AS路径属性由一系列AS路径段(Segment)组成。每个AS路径段为一三元组。  路径类型有:  路径段长度用1字节表示AS号的数量,即最长为255个AS号。  路径值为若干AS号,每个AS号为2字节。  ⑶NEXT_HOP (Type Code = 3,公认必选属性)  此属性为UPDATE消息中的信宿地址所使用的下一跳。  ⑷MULTI_EXIT_DISC (Type Code = 4,公认自决属性)  简称MED属性。为一4字节无符合整数。它在AS区域间传播,用来帮助一个其它AS区域的BGP伙伴选择进入本AS区域的人口。  ⑸LOCAL_PREF (Type Code = 5,公认自决属性)  本地优先级属性。为一4字节无符合整数。它在AS区域内传播,用来帮助一个本AS区域内BGP伙伴选择进入其它AS区域的出口。  ⑹ATOMIC_AGGREGATE (Type Code = 6,公认自决属性)  元聚合属性。长度为零。它表示本地BGP在若干路由中选择了一个较抽象的(less specific)路由,而没有选择较具体(specific)的路由。  ⑺AGGREGATOR (Type Code = 7,可选过渡属性)  聚合者属性。长度为6字节,分别为最后进行路由聚合的路由器的AS号(2字节)和IP地址(4字节)。协议特点  BGP是一种AS(自治区域)外部路由协议,主要负责本自治区域和外部的自治区域间的路由可达信息的交换。因此,它所关心的拓扑结构是AS(自治区域)的拓扑结构,BGP通过UPDATE消息中路由的AS属性来构造AS的拓扑结构图,进一步通过此结构图来选择路由。  与OSPF,RIP等IGP协议相比,BGP的拓扑图要更抽象和粗略一些。因为IGP协议构造的是AS内部的路由器的拓扑结构图。IGP把路由器抽象成若干端点,把路由器之间的链路抽象成边,根据链路的状态等参数和一定的度量标准,每条边配以一定的权值,生成拓扑图。根据此拓扑图选择代价(两点间经过的边的权值和)最小的路由。这里有一个假设,即路由器(端点)转发数据包是没有的代价的。而在BGP中,拓扑图的端点是一个AS区域,边是AS之间的链路。此时,数据包经过一个端点(AS自治区域)时的代价就不能假设为0了,此代价要由IGP来负责计算。这体现了EGP和IGP是分层的关系。即IGP负责在AS内部选择花费最小的路由,EGP负责选择AS间花费最小的路由。  BGP作为EGP的一种,选择路由时考虑的是AS间的链路花费,AS区域内的花费(由BGP路由器配置)等因素。  如上所述,内部网关协议IGP需引入AS自治区域内部网络拓扑图其它各点的路由,同时向其它端点发送本端点(路由器)所知的路由,如直接路由、静态路由等。作为外部网关协议,BGP发送和引入路由的单位是整个AS自治区域,即BGP要发送本地路由器所在的AS内部的所有路由,引入其它AS自治区域的所有路由(假设不使用路由策略控制发送和引入)。其路由数量显然要远远大于IGP发送和引入的路由数量。因此,类似于IGP那样定时对外广播路由信息是不可取的。BGP采用发送路由增量(Incremental)的方法,完成全部路由信息的通告和维护:初始化时发送所有的路由给BGP对端(BGP Peer),同时在本地保存了已经发送给BGP对端的路由信息。当本地的BGP收到了一条新路由时(如通过IGP注入了新路由或加入了新的静态路由),与保存的已发送信息进行比较,如未发送过,则发送,如已发送过则与已经发送的路由进行比较,如新路由花费更小,则发送此新路由,同时更新已发送信息,反之则不发送。当本地BGP发现一条路由失效时(如对应端口失效),如此路由已发送过,则向BGP对端发送一个退出路由消息。TOP

应用制约扩展  BGP是目前应用在因特网上的IP网络互联协议,为运营商之间的互联提供了稳定而安全的路由协议,具有丰富的路由控制机制。为了更好地控制路由策略,当前大部分的运营商均将BGP部署到骨干路由器。随着网络的不断扩展、路由器数目的增多以及路由信息条目的激增,解决BGP的扩展性问题变得越来越重要。  目前BGP的扩展性面临如下几个问题。
(1)I-BGP的Full-Mesh问题
BGP路由协议分为I-BGP和E-BGP两个部分。I-BGP用于自治域内的路由器之间,E-BGP用于自治域间的路由器之间。为了防止产生环回路由,BGP协议要求一个路由器通过I-BGP学到的路由,不再向其他I-BGP邻居广播,所以一个自治域内所有参加I-BGP协议的路由器都要与其他路由器建立会话,从而保证路由信息能够正确地广播到每一个路由器。依照这个原则,一个自治域内总的I-BGP会话数为N×(N-1)/2 (N为运行I-BGP的路由器数),当N不断增大时,这个数字会大得惊人:如100台路由器,则会话数为4950。这对网络设备而言是个非常大的负担,而且还将使网络的管理与配置变得异常复杂。而骨干网通常由大量的运行I-BGP的路由器组成,因此,这个问题是否能够解决,直接影响到网络规模的大小。  (2)更改路由策略时路由振荡的问题  BGP属于增量更新的路由协议,当有新的路由要发布时,路由器会向邻居发送Update信息,而如果要删除某条路由时,就会发送Withdraw信息。BGP路由的Flap的定义是:当一条路由在被收回(Withdraw)后,又被广播(Update)出来,视为一次Flap。由于任何一条路由的收回和更新都会导致一台路由器整个路由表重新计算,因此当Flap的情况比较多时,对路由器设备的负载将产生巨大的压力。根据笔者在实际工作中的经验,一般情况下,一台高端路由器在计算BGP路由的时候,CPU的负载基本上在80%~90%左右,有时甚至达到100%,占用了几乎所有的CPU资源。虽然目前大部分的高端路由器都将路由计算的模块与转发模块分布在不同的硬件上,来减少主CPU忙导致的路由器性能下降的问题,但是路由表的频繁变化和更新,对整个设备的运行还是有一定的影响的,而且这样的计算会随着路由的收回或广播,继续向自治域内部扩展,使内部的路由器产生同样的问题。  (3)其他需要考虑的问题  除了上面的两个问题会导致对路由器资源过量消耗之外,还有其他的一些因素,如路由的数目、BGP路由表的大小和路由计算的方式等,同样也会影响路由器的性能。  另外,网络越大,路由条目越多,配置和管理的工作也就越复杂,这就需要在网络设计的时候尽量简化配置,降低管理人员的工作强度,避免人为原因造成故障。解决方案  针对以上问题,介绍一些相关的解决方法。
(1)解决I-BGP会话数瓶颈的方法  上面提到的I-BGP的会话数过多的问题,可以采取两种办法来解决:  1)联盟的方法(Confederations)  联盟的工作原理是:将原来一个自治域的网络分成多个子自治域,通过Confederations id将原AS号配置到每个路由器上。这样有两个好处:一是可以保留原有的I-BGP属性,包括Local Preference、MED和NEXT_HOP;二是能在Confederations的功能中自动实现,无需管理员在网络的出口处配置过滤内部AS号信息的操作。  2)路由反射器(Route-Reflector)  采用路由反射器是目前应用最广泛的方法,较之前面联盟的方法,具有更好的扩展性。路由反射器的工作原理是:将一个自治域内的路由器分成几个Cluster,每个Cluster由Reflector和Client组成。Reflector之间形成Full Mesh,运行常规的I-BGP;Client只与Reflector运行I-BGP,对于Client来说,Reflector只是普通的邻居而已,Reflector则扮演了路由集散地的角色,将从其他Reflector学到的I-BGP路由转发给Client,同时,将从Client学到的I-BGP路由转发给Cluster内的其他Clients和Cluster外的其他Reflector,再借由Reflectors广播到其所在的Cluster。在实际的网络中,为了提高冗余度,通常一个Client与多个Reflector建立邻居关系,而且不局限于Client所在Cluster的Reflector。  由此可见,Client上的I-BGP会话数一般为1~2个,与联盟的方法相比,只要Reflector的性能足够高,Cluster就可以做得很大,而Client的负载不会随Cluster的变化有太大的变化。对于前一种方法,由于一个子自治域的所有路由器还是要做到Full Mesh,所以最低性能的路由器决定了一个子自治域的大小;而路由反射器法则通常是一个或多个最高性能的路由器决定Cluster的大小,因此,具有更好的网络扩展性能。  另外,一个Reflector也可以成为另外一个Reflector的Client,形成层级结构,这特别适用于按照分层结构建设的网络,可以很容易地把平面的网络管理演变为分层管理。  当然,在使用路由反射器的时候,也有一些需要注意的地方,比如:Reflector并不是纯粹的转发路由,所有收到的路由在Reflector上同样要经过最优计算,然后将优选路由向外广播,所以Reflector的选择要依据网络结构而定,尽量使I-BGP邻居关系与实际的电路连接关系相对应。  (2)控制路由振荡  目前,控制Route Flap主要采取Damping的方法:一个BGP路由器对收到的E-BGP路由设定Penalty值,每一次路由Flap都会使该路由的Penalty值增大,而路由稳定时,Penalty值会随时间而减小;当Penalty值超过预设的抑制限制时,该路由就不再被广播,而当Penalty减小至低于重用限制时,该路由才会被重新向外广播。这种方法主要是针对E-BGP邻居而言的。这样,当一个网络内部发生路由振荡时,与之相连的其他网络通过Damping可以有效地防御对各自网络的影响。  在网络维护中,经常会遇到这样的情况:宁愿一条电路中断一段时间,也不希望它在不停地震荡。因为中断一段时间后,只要电路恢复,网络流量也会随之恢复;与此相反,振荡的电路恢复后,需要等待一段时间才能恢复正常的流量(其他网络都在抑制振荡的路由)。Damping则可以有效地保证因特网的稳定,但同时也会导致一些故障的延时恢复。  当前的设备基本都支持Damping的功能,而且提供可以配置的参数来精细控制Damping。一般情况下,设备提供的缺省配置能够满足大多数网络的需求,如果确有特殊需要,则一定要经过仔细计算,否则,不是没有效果,就是把别人的路由抑制后很长时间不能恢复。  (3)Peer Group的应用  在实际的网络中,有一种非常普遍的现象,即一个路由器会有多个属于一类的BGP Peer。这里的“属于一类”是指BGP的策略相同或类似,当Peer比较多时,BGP的配置会变得臃肿,同时,路由器的负载也会加重,因为一旦有路由的更新,路由器需要针对每个Peer做一次策略计算(虽然策略都相同)。另外,应用Peer Group还有一个好处,就是降低了对路由器设备的资源消耗,因为路由器对同一Group更新路由时,由于使用相同策略,因此只进行一次路由计算,从而大大减少了占用CPU的时间。  在实际的网络维护中,即使当同一类的Peer很少时,一般也建议采用Peer Group的方式,因为这样具有很好的扩展性。Peer Group不但适用于I-BGP的Peer,也适用于E-BGP的Peer。  (4)关于route refresh的措施  骨干网络维护中,经常会遇到修改BGP策略的情况,如更新某个Peer的as-path限制列表,在配置修改后需要使其生效,以前的做法是中断当前的BGP会话,然后重新建立,命令如下:  clear ip bgp x.x.x.x  这么做主要是因为路由器在收到对方的BGP路由表后,先进行策略运算,然后将最优路由存储在本机的BGP路由表中,而不是把原始的路由统统保存。当策略改变时,必须重新建立连接来获得对方的全部路由,然后利用新策略再次计算。这种方式的弊端显而易见,如网络阻断、大量消耗路由器的CPU资源等。  解决这个问题目前通常采用两种方法:一种方法是设法保存原始的BGP路由,这样,重新计算时就不需要重传了;另外一种方法是在启用新策略的时候,在不中断BGP会话的前提下,向对方请求重发全部BGP路由表。  第一种方法是利用软件配置实现的,配置的命令如下:  neighbor 1.1.1.1 soft-reconfiguration inbound  在启用新策略的时候输入命令:  clear ip bgp 1.1.1.1 soft [in|out]  这样,所有的原始BGP路由就会被存储在另外一张路由表里面,在修改策略的时候,通过对这张路由表进行运算,就可以得到最优的BGP路由表,这样对路由产生的资源消耗较小;而且有这样一张原始的路由表,可以在修改策略后、正式启用之前使用命令来检查策略修改后的效果。但这种方法需要额外的内存资源来存储路由表。  第二种方法是由路由器设备的BGP 能力(BGP Capabilities)决定的,也就是系统软件本身内置的功能模块。在建立BGP会话的时候,这个参数通过BGP OPEN在两个路由器间进行交换。一个设备是否支持BGP Refresh Capabilites,可以用命令下列来检查:  show ip bgp n x.x.x.x  如果参与BGP的两个路由器都具备这个功能,那么不需要任何配置,当执行clear ip bgp n x.x.x.x in 时,本端BGP进程不会中断BGP会话,而是向对端请求重发全部的BGP路由表。相对于第一种方法,这种方法的好处是可以节省内存资源,缺点是网络管理员无法了解对方发过来的原始路由,而且重发了全部路由表,效率上也没有第一种方法高。目前骨干网内的设备基本上都支持这个功能。总结论述  以上对BGP扩展性相关的几个问题和相关的措施进行了论述,在实际的应用中还需要根据具体情况来部署。但是总的思路和原则都是一样的,即一方面要降低设备的资源消耗,另外一方面要简化维护管理,从硬件、软件两方面来提高网络的扩展性。编辑本段路由优化bgp

如果拥有多个互联网连接,就会知道仅仅简单使用边界网关协议(Border Gateway Protocol,BGP)很难得到最优的路由路径。在这点上,没有电信网络的7号信令系统精妙(Signaling System 7,SS7)。作为电讯网络的控制面,SS7在一次通话建立之前能够决定出最好的路径。互联网上没有这样的控制面,虽然BGP也能决定路由(这点与SS7相似),但它不是总能选择最好的路径。BGP在不打断内部或外部用户的情况下让边缘路由器通过一个首选的连接传输业务,如果首选连接失败则通过次选连接提供业务。  当BGP选择一个路由时,如果能考虑到每个ISP连接所能提供路由通路的性能等因素的话,情况肯定会更好。  RouteScience的PathControl是这样一种新产品,它不仅可以衡量通过每个BGP对等体的路由性能,还可以根据这些信息来改变通过BGP的优先路由。具体方法  PathControl 1.1运行在Linux上,提供独立的功能,一个用于报告,一个用于管理,还有一个给核心引擎,对于每个外部BGP对等体都有一个接口。  PathControl 1.1提供了一个强健的Java程序工具。下一个版本将允许从GUI(图形用户界面)配置PathControl,但在目前的版本中必须通过基于IOS的命令行界面管理设备。  PathControl所能提供的不只是连接性能和它们的相应通路等内部信息,还可以让你通过配置一些变量来控制使用那些连接。  PathControl可被放置于边缘路由器之后的任何位置。对路由器的连接可以通过一个专用端口或一个通道连接建立,无论哪种方式,PathControl都需要对外部世界和边缘路由器进行访问。测试性能  将PathControl直接连接到一个Cisco Catalyst 6500交换机上,交换机被配置为接收来自两个Nortel Web交换机(一台180e和一台AD4)的外部BGP输入数据。PathControl被设置与Cisco交换器对等,监视被每个Nortel设备声明的路由。PathControl可以保持在被动状态,监视并报告每个远程对等体的性能;它也可以被置于声明模式,这使它可以在确定了哪一条连接性能更好后,在边缘路由器上改变首选路由。  用户可以配置PathControl更改路由的频度,使用户的边缘路由器不会被压制。最好让PathControl至少在被动模式下持续运行几天,使用报告发生器来观察PathControl声明一个新路由的频度,然后针对具体情况确定最佳的更改频度。  PathControl用一个TCP握手的往返时间作为其性能度量的基础,经由HTTP向一台客户机发送一幅1×1像素的GIF图像来被动检索衡量性能的数据,还可通过探查用户设置的Web站点来进行主动检索。对于后者,PathControl打开一个到达某站点的TCP连接并测量完成三向TCP握手的时间。  为实现被动测量,设备上的每一个测量接口都被配置一个虚拟IP地址(Virtual IP Address,VIP)。当经由HTTP或HTTPS访问该地址时,返回一个1×1像素的GIF图像。PathControl直接提供这个GIF,测量与一台客户机建立起一个TCP通话的时间。只要将VIP地址嵌入进站点网页的一个HREF,一旦某台客户机发出对该页的请求,测量就开始。此中的关键是对基于策略路由的使用,该路由在边缘路由器上配置,根据源地址连贯地转送通讯数据。这样PathControl会连续测量每条路径的性能,而不必考虑路由表中的其它项。  默认状态下PathControl为执行对数据的计算至少需要6次测量。计算过程赋予每条路径一个等级,该等级将用于确定哪条连接工作得更好。在默认状态下,如果两个或更多的等级被赋的数值差别不超过25点,它们都会被认为“更好”。如果某条连接的等级比另一条高出25点,则它被认为是“最好”的,PathControl会经由内部边界网关协议(interior BGP,iBGP)向与之对等的边缘路由器声明这条路由。
ISP网内部署bgp
随着INTERNET在中国的发展,ISP服务商与INTERNET的连接也在发生着变化。在网络连接上,从单一的连接,到通过多个电信公司多条线路连接到INTERNET;在所使用的路由协议方面,从使用的静态路由协议,发展到使用BGP(Border gateway protocol)。那么ISP如何随着网络的发展,在网络内部合理有效地部署BGP路由协议呢?我们将在本文中简要的介绍一下。实际上,如何在网内部署BGP路由协议的主导思想也就是如何使自治域内部的路由器获得自治域外部路由信息,从而引导访问域外的流量流出自治域。  从总体上,在域内部署BGP路由协议应考虑以下几点:  1.网络实际的拓扑结构;  2.设备性能是否满足启动BGP的要求,通常BGP的路由表非常庞大,以从50,000条增加到现在约100,000余条。这对路由器的内存及性能要求很高;  3.在有多条INTERNET接入线路时,线路的备份和流量的分布。  以下将通过一些例子来具体说明这些问题。在继续讨论前,我们先提及几个概念:  核心层:具有高速交换能力的骨干网络,位于网络的核心。  分布层:在核心层的外围,通常用于实现各种路由策略或实施访问控制等功能。  接入层:在网络的最外层,在该范围内的路由器是用户联入ISP的接入点。  在网络发展初期,网络结构比较简单(如图一),ISP只有一条线路连接到INTERNET。通常人们不会在这种简单的网络结构中使用BGP,而会使用简单方便的静态路由进行互联。这样可以简化路由器配置,便于管理,同时降低对边界路由器的性能要求,减少成本。 如果需要启用BGP,操作也很简单只需在路由器R1上启用BGP,并将R1作为网内其它路由器的缺省网关,从而达到将外部路由注入网内的目的。  随着网络的近一步发展,ISP需要通过不同的网络提供商,通过多条线路与INTERNET连接,以保证网络的可靠性。这时BGP才有了真正的用武之地。在这种情况下,网络通常会出现以下几种结构。如图二,图三。两种网络结构看起来有些类似,图三中网络结构只是增加了一台路由器以排除图二中路由器R1产生单点故障的可能,但在如何部署BGP路由时却完全不同。  在图二中只需在R1上配置BGP,并将R1作为网内其它路由器的缺省网关,并通过  BGP路由协议所提供的Weight这个路由参数,调节网内流量在两条线路上的分布。这样即可实现线路的互为备份,又可有效的调节流量分布。  有两台路由器拥有外部路由,通常为保证域内的路由一致性,需在图中路由器R1和R2之间建立IBGP连接,使其建立一致的BGP路由表。在这个过程中,也可人为的使用BGP路由协议所提供的Local-Preference这个路由参数,优化路由选择,以控制数据流量在线路上的分布。但如何将这些外部路由告知网内的其它路由器,简单的有以下两种方法:  1.在网络结构相对简单时,网络没有分布层,核心层直接与接入层连接。这时接入层路由器往往不能在传输大量的用户数据的同时, 满足启用BGP所需的性能要求。在这种情况下,只有依据流量的分布情况,将网内接入路由器划分组别,不同的组别将缺省网关指向不同的边界网关路由器。  这种设计只能作为网络结构不完善,设备性能不高时的临时方案,不能作为永久性方案。因为它经常需要人为干预,依据网络流量变化情况重新划分路由器组别,否则会出现某一路由器负载过重,而另为一台负载较轻的情况,从而不能有效的使用设备资源。而且当互联的线路增多时,这种设计会面临更多的问题。  2.最好的方法是首先要建立完善网络结构,网络结构应具备核心层,分布层和接入层。通过IBGP路由协议将外部路由注入到分布层路由器中,如图二中路由器R3,R4。进而将分布层的路由器作为某一区域接入层路由器的缺省网关,将通往域外的负载均匀的分布到各个分布层路由器上,从减少对具体某个路由器的压力。  这种设计是网络结构日趋完善,网络规模日趋扩大的ISP最终的选择。  最近CISCO公司有从另一角度提出一个部署BGP路由协议的新思路,使用IBGP作为内部路由协议,交换网内用户路由信息。及在网络的接入层路由器上启用IBGP路由协议,并将指向用户的静态路由分布到IBGP中。这主要是考虑,BGP路由协议在路由变动时,只更新发生变动的路由,不会象OSPF和ISIS,重新计算SPF数据库。因而利用BGP这一特性减少路由收敛时间,提高网络的稳定性。但在使用这种方法时,应注意BGP对路由器性能的要求,应避免将外部路由注入到接入层路由器中,导致路由器工作性能下降。  综上所述,我们简单讨论了如何在ISP的网络上部署BGP路由协议。实际上,BGP的应用重点和优势在于其对路由信息的控制能力, 从而达到对数据流量的控制和分配。这是一项非常复杂的工作,要依据具体的情况而定,在本文就不多谈了。但有一点需要注意,仅仅依靠BGP自身的手段来满足各种不同的实际需要是不可行的,还需与互联伙伴共同协作才能实现,因为BGP中的许多参数需要互联双方共同商定,才能生效。

商业价值中国互联网长期以来存在电信网通南北“割据”,虽然互联却不互通的状况。这种情况在网站上的表现,即是用网通接入的网站,使用电信线路的网民访问速度极慢,使用电信线路接入的网站,使用网通线路的网民访问速度极慢。  要想解决这个问题,目前只能有两种办法:一是类似百度这样的大型网络公司,在全国各地设置镜像服务器,采用分布式网络拓扑结构实现快速访问,但缺点是投资大,动辄数百万的经费不是一般企业能承受的;另一种是将服务器同时接入电信、网通双线,支付双倍的网络费用。具有一定客户规模的建站公司就能承受这样的成本。  但是,部分虚拟主机商出于成本的考虑,往往悄悄测定客户的上网接入线路,如果客户上网是网通线路,他把服务器也接入网通线路,但电信接入的网民访问该客户的网站访问速度是很慢的;如果客户上网是电信线路,他把服务器也接入电信线路,但网通接入的网民访问该客户的网站访问速度是很慢的;而这一切,客户自己却浑然不知。要知道:你的网站是针对全中国乃至全世界的,网络接入速度不好直接影响你的网站流量。  利用BGP多线接入技术就能很好解决上述问题,例如BGP双线,使用BGP技术配合中国网络带宽出口最优秀的北京电信、北京网通,确保全国南北互联互通,彻底解决了南电信北网通的互连问题。编辑本段路由策略  BGP的强大功能来自它能对进入BGP域的流量和路由刷新信息实施过滤和路由策略。BGP通过访问路由信息的分布来支持中转策略。  有四种过滤刷新信息的方法:  1、在neighbor distribute-list命令中使用ip访问列表  2、在neighbor prefix-list命令中使用前缀列表  3、在neighbor filter-list命令中使用as路径访问列表  4、在neighbor router-list命令中使用旅游映射  以上所有的方法基本上都有相同的结果,优先性以及熟悉程度和特殊要求是选择某一方法的关键因素。PE设置  对于技术工程师而言,BGP设置是很大的难点,下面列举BGP的多线接入基本设置:  router bgp 100  no synchronization  no bgp default ipv4-unicast  bgp log-neighbor-changes  neighbor 10.1.1.4 remote-as 100  neighbor 10.1.1.4 update-source Loopback0  neighbor 10.1.1.4 activate  neighbor 10.3.1.4 remote-as 100  neighbor 10.3.1.4 update-source Loopback0  neighbor 10.3.1.4 activate  no auto-summary  !  address-family ipv4 vrf vrf-1  redistribute connected  no auto-summary  no synchronization  exit-address-family  !  address-family vpnv4  neighbor 10.1.1.4 activate  neighbor 10.1.1.4 send-community both  neighbor 10.3.1.4 activate  neighbor 10.3.1.4 send-community both  exit-address-family  !选路原则  1.优选有最大Weight的路由 (范围0 到 65,535)  A:weight是CISCO私有的参数,路由器配置了权重后在本地有效。  2.优选有最大LOCAL_PREF值的路由(范围 0到 4,294,967,295).  3.优选从本路由器始发的路由(包括本地network配置的重分布,或者在IGP表中已经有一些需要被配置路由聚合的地址,在BGP中用Aggregate命令配置的路由聚合,)  4.优选有最短AS_PATH的路由  A.如果配置了Bgp bestpath as-path ignore,则这个步骤被忽略  B.一个AS路径集被当作一个AS,无论在这个集合中有多少AS。  C.A S路径长度中没有包括AS_CONFED_SEQUENCE。  5.根据Origin属性.优选具有最低起源类型的路由(IGP>EG>Incomplete)  6.优选最小MED 值的路由(范围 0到4,294,967,295).  A.只有在通过两条路径得到第一个AS(对等体)是同一个AS时才进行MED比较;任何子自治域的联盟系统都会被忽略。也就是说,只有在AS序列号中第一个AS号码一致时,才进行MED比较;任何联盟AS序 列 号(AS_CONFED_SEQUENCE)都会被忽略。  B.如果路由器上配置了 bgp always—compare—med ,在全部的路径进行MED比较。但是这需要全体AS 都同时启用这个功能,否则有可能发生路由环路。  C.如果路由器上配置了 bgp bestpath med confed ,将对所有只包括AS_CONFED_SEQUENCE的路径进行MED比较(即路径是起源于本地联盟)。  D.如果接收到的路径没有分配MED值,则将此路径分配为0,除非路由器上配置了bestpath missing—is—worst,将被看作MED值为4,294,967,295的路由将在注入到BGP路由选择表之前被改为4,294 ,967,294。  E.BGP明确的MED值9(详见本章后面的”BGP明确的MED”段落)也可以影响此步骤。  7.外部路由EBGP优先于联盟(confederation)外部路由优于内部路由IBGP(优选 E-BGP路由)  注意,路径中包括AS_CONFEND_SEQUENCE属性对联盟只有在本地有效,因此被看作是内部路径。无法区别外部联盟和内部联盟。  8. 优选能通过最近的IGP邻居到达的路径(优选对BGP下一跳具有最低IGP度量值的路径);  9.如果在路由器上配置了maximum—pathsN,而且从同一个对等体自治域/子自治域接收到多条外部/外部联盟的路径,则最多可以将N条最近接收到的路径加入到IP路由选择表中。这可以使得eBGP在多条路径上进行负载分担。目前N所代表的最大数目是6;当没有启用此功能时,缺省数值是1。在输入了show ip bgp x.x.x.x后系统输出信息中可以看到最早接收到的路径被标记为最优路径,在将这条最优路径转发到内部对等体之前,需要执行与next_hop_self作用相同的功能。  10.如果是external的路由,优选最老的路由(最先被学习到的路由).  A.此步骤可以将路由摆动的影响减到最小,因为新接收到的路径不会取代老的,即使这条新接收的路径是通过下面提及到的额外路径选择标准来进行选择的。这使得只在iBGP路径下应用额外的选择步骤更有意义。  B.此步骤可以被bgp bestpath compare_routerid命令语句所关闭。  C.如果路由器标志是一样的,此步骤可以被屏蔽,因为这说明路由器正在从自己那里接收路由。  D.如果当前没有最优路由器,此步骤可以被屏蔽。当提供某个路径的对等体路由器宏机,就会发生丢失 当前最优路径的情况。  11.如果在同一时间学习到多条到同一目的地的路由,优选最小BGP-router-ID的路由,注意,如果一个路径包括路由反射器属性,起始者标识将代替路由器标识在路径选择过程中起作用。  12.如果路由从路由反射器上学习到 ,优选最小Cluster-ID(BGP_ID of the route reflector)长度的路由,而且它运行客户机和其他反射器族中的RR/Clients 之间做对等连接,在这种情况下,路由器必须知道BGP协议中的RR的具体配置。  13.优选具有最低对等体地址接收到的路径。这个地址是在BGP对等体上配置并使用的地址,这个地址是本地对等体路由器在其上配置TCP邻居并与远端对等体建立连接时采用的地址。