16-路由协议操作
本章节下载 (1.4 MB)
文中所述的路由器代表了一般意义下的路由器,以及运行了路由协议的以太网交换机。
在因特网中进行路由选择要使用路由器,路由器根据所收到的报文的目的地址选择一条合适的路由(通过某一网络),并将报文传送到下一个路由器。路径中最后的路由器负责将报文送交目的主机。
路由器转发分组的关键是路由表。每个路由器中都保存着一张路由表,表中每条路由项都指明分组到某子网或某主机应通过路由器的哪个物理端口发送,然后就可到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。
根据来源不同,路由表中的路由通常可分为以下三类:
l 链路层协议发现的路由(也称为接口路由或直连路由)。
l 手工配置的静态路由。
l 动态路由协议发现的路由。
路由表中包含了下列关键项:
l 目的地址:用来标识IP报文的目的地址或目的网络。
l 网络掩码:与目的地址一起来标识目的主机或路由器所在的网段的地址。将目的地址和网络掩码“逻辑与”后可得到目的主机或路由器所在网段的地址。例如:目的地址为129.102.8.10,掩码为255.255.0.0的主机或路由器所在网段的地址为129.102.0.0。掩码由若干个连续“1”构成,既可以以点分十进制表示,也可以用掩码中连续“1”的个数来表示。
l 出接口:说明IP报文将从该路由器哪个接口转发。
l 下一跳IP地址:说明IP包所经由的下一个路由器。
l 本条路由加入IP路由表的优先级:针对同一目的地,可能存在不同下一跳的若干条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级高(数值小)的路由将成为当前的最优路由。
根据路由的目的地不同,可以划分为:
l 子网路由:目的地为子网。
l 主机路由:目的地为主机。
另外,根据目的地与该路由器是否直接相连,又可分为:
l 直接路由:目的地所在网络与路由器直接相连。
l 间接路由:目的地所在网络与路由器不是直接相连。
为了不使路由表过于庞大,可以设置一条缺省路由。如果路由表中不存在与IP报文的目的IP地址匹配表项时,就选择缺省路由转发。
如图1-1所示,各网络中的数字是该网络的网络地址。路由器Router G与三个网络相连,因此有三个IP地址和三个物理端口,其路由表如图所示。
Destiantion Network |
Nexthop |
Interface |
11.0.0.0 |
14.0.0.1 |
3 |
12.0.0.0 |
14.0.0.1 |
3 |
13.0.0.0 |
16.0.0.1 |
2 |
14.0.0.0 |
14.0.0.3 |
3 |
15.0.0.0 |
17.0.0.2 |
1 |
16.0.0.0 |
16.0.0.2 |
2 |
17.0.0.0 |
17.0.0.1 |
1 |
静态路由配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。其缺点是不能自动适应网络拓扑结构的变化,当网络拓扑结构发生变化时,需要人工重新配置静态路由。
动态路由协议有自己的路由算法,能够自动适应网络拓扑的变化,适用于具有一定规模的网络拓扑。其缺点是配置比较复杂,对系统的要求高于静态路由,并将占用一定的网络资源。
对动态路由协议的分类可采用以下不同标准:
根据作用的范围,路由协议可分为:
l 内部网关协议(Interior Gateway Protocol,简称IGP):在一个自治系统内部运行,常见的IGP协议包括RIP、OSPF和IS-IS。
l 外部网关协议(Exterior Gateway Protocol,简称EGP):运行于不同自治系统之间,BGP是目前最常用的EGP。
自治系统(Autonomous System)是拥有同一选路策略,并在同一技术管理部门下运行的一组路由器。
根据使用的算法,路由协议可分为:
l 距离矢量协议(Distance-Vector):包括RIP和BGP。其中,BGP也被称为路径矢量协议(Path-Vector)。
l 链路状态协议(Link-State):包括OSPF和IS-IS。
以上两种算法的主要区别在于发现和计算路由的方法不同。
根据目的地址的类型,路由协议可分成:
l 单播路由协议(Unicast Routing Protocol):包括RIP、OSPF、BGP和IS-IS等。
l 组播路由协议(Multicast Routing Protocol):包括PIM-SM、PIM-DM等。
本部分手册主要介绍单播路由协议,组播路由协议请参见“组播协议”部分的介绍。
到相同的目的地,不同的路由协议(包括静态路由)可能会发现不同的路由,但这些路由并不都是最优的。事实上,在某一时刻,到某一目的地的当前路由仅能由唯一的路由协议来决定。各路由协议(包括静态路由)都被赋予了一个优先级,当存在多个路由信息源时,具有较高优先级的路由协议发现的路由将成为当前路由。各种路由协议及其发现路由的缺省优先级如表1-1所示。
其中:0表示直接连接的路由,255表示任何来自不可信源端的路由。数值越小表明优先级越高。
路由协议或路由种类 |
相应路由的优先级 |
DIRECT |
0 |
OSPF |
10 |
STATIC |
60 |
RIP |
100 |
OSPF ASE |
150 |
OSPF NSSA |
150 |
UNKNOWN |
255 |
BGP |
256 |
除了直连路由(DIRECT)外,各动态路由协议的优先级都可根据用户需求,手工进行配置。另外,每条静态路由的优先级都可以不相同。
对于某种路由协议,到某一目的地址存在多条开销值相同的路由。到这个目的地址的路由中,如果该路由协议的优先级最高,那么该路由协议发现的到这个目的地址的路由将全部有效。在转发去往该目的地报文时,报文依次通过各条路径发送,从而实现网络的负载分担。
路由备份:到同一目的地配置多条优先级不同的路由,其中优先级最高的一条路由作为主路由,其余优先级较低的路由作为备份路由。
路由备份提高了用户网络的可靠性,主路由与备份路由之间可以自动切换。
正常情况下,路由器采用主路由发送数据。当线路发生故障时,主路由失效,路由器选择备份路由中优先级最高的路由转发数据,即主路由到备份路由的自动切换。当主路由恢复正常时,路由器恢复相应的路由,并重新选择路由。由于该路由的优先级最高,路由器选择主路由来发送数据,即备份路由到主路由的自动切换。
由于各路由协议采用的路由算法不同,不同的路由协议可能会发现不同的路由。如果网络规模较大,当使用多种路由协议时,往往需要在不同的路由协议间能够共享各自发现的路由信息。每种路由协议通过路由引入机制共享其它路由协议发现的路由信息。
查看路由表的信息是定位路由问题的基本要求,表1-2中列举了通用的路由表信息的显示和维护命令。display命令可以在任意视图下执行,在用户视图下执行reset命令可以清除路由表的统计信息。
表1-2 路由表的显示和维护
操作 |
命令 |
说明 |
查看路由表摘要信息 |
display ip routing-table [ | { begin | exclude | include } regular-expression ] |
display命令可以在任意视图下执行 |
查看路由表详细信息 |
display ip routing-table verbose |
|
查看通过指定基本访问控制列表过滤的路由信息 |
display ip routing-table acl acl-number [ verbose ] |
|
查看通过指定前缀列表过滤的路由信息 |
display ip routing-table ip-prefix ip-prefix-name [ verbose ] |
|
查看指定目的地址的路由 |
display ip routing-table ip-address [ mask | mask-length ] [ longer-match ] [ verbose ] |
|
查看指定目的地址范围内的路由 |
display ip routing-table ip-address1 { mask1 | mask-length1 } ip-address2 { mask2 | mask-length2 } [ verbose ] |
|
查看指定协议发现的路由 |
display ip routing-table protocol protocol [ inactive | verbose ] |
|
查看树形式路由表 |
display ip routing-table radix |
|
查看路由表的统计信息 |
display ip routing-table statistics |
|
删除路由表的统计信息 |
reset ip routing-table statistics protocol { all | protocol } |
reset命令在用户视图下执行 |
文中所述的路由器代表了一般意义下的路由器,以及运行了路由协议的以太网交换机。
静态路由是一种特殊的路由,由管理员手工配置。在组网结构比较简单的网络中,只需配置静态路由就可以实现网络互通。合理设置和使用静态路由可以改善网络的性能,并可为重要的网络应用保证带宽。
静态路由的缺点:不能自动适应网络拓扑结构的变化,当网络拓扑结构发生变化时,可能会出现路由不可达,导致网络中断情况,此时需要网络管理员手工修改静态路由的配置。
静态路由还有如下的属性:
(1) 目的地可达路由,正常的路由都属于这种情况,即IP报文按照目的地标识的路由被送往下一跳,这是静态路由的一般用法。
(2) 目的地不可达的路由,当到某一目的地的静态路由具有“reject”属性时,任何去往该目的地的IP报文都将被丢弃,并且通知源主机目的地不可达。
(3) 黑洞路由:当去往某一目的地的静态路由具有“blackhole”属性时,无论配置的下一跳地址是什么,该路由的出接口均为Null 0接口,任何去往该目的地的IP报文都将被丢弃,并且不通知源主机。
其中“reject”和“blackhole”属性一般用来控制本路由器可达目的地的范围,辅助网络故障的诊断。
为了不使路由表过于庞大,可以设置一条缺省路由。如果路由表中不存在与IP报文的目的IP地址匹配表项时,就选择缺省路由转发。
当路由表中不存在与IP报文的目的IP地址匹配表项时:
l 如果路由表中存在缺省路由,那么该报文将选取缺省路由转发。
l 如果路由表中不存在缺省路由,那么该报文被丢弃的同时,将向源端返回一个ICMP报文报告该目的地址或网络不可达。
缺省路由可以通过静态路由手工配置,也可以由某些动态路由协议生成,如OSPF、RIP等。
在配置静态路由之前,需完成以下任务:
l 配置相关接口的物理参数
l 配置相关接口的IP地址
表2-1 配置静态路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置静态路由 |
ip route-static ip-address { mask | mask-length } { interface-type interface-number | next-hop } [ preference preference-value ] [ reject | blackhole ] [ detect-group group number ] [ description text ] |
必选 缺省情况下,系统可以获取到去往与路由器直连的子网路由 |
l 当使用ip route-static命令配置静态路由时,如果将目的地址与掩码配置为全零(0.0.0.0 0.0.0.0),则表示配置的是缺省路由。
l 静态路由的下一跳地址不能配置为本地交换机的接口地址。
l 对优先级的不同配置,可以灵活应用路由管理策略。
l 自动侦测请参见“自动侦测”部分的介绍。
在完成上述配置后,执行display命令可以显示配置的静态路由信息,用户可以通过查看显示信息验证配置的效果。执行delete命令可以删除配置的所有静态路由。
表2-2 静态路由显示和维护
操作 |
命令 |
说明 |
查看当前的配置文件信息 |
display current-configuration |
display命令可以在任意视图下执行 |
查看路由表摘要信息 |
display ip routing-table |
|
查看路由表详细信息 |
display ip routing-table verbose |
|
查看静态路由表信息 |
display ip routing-table protocol static [ inactive | verbose ] |
|
删除所有静态路由 |
delete static-routes all |
delete命令在系统视图下执行 |
某小型公司办公网络需要任意两个节点之间能够互通,网络结构简单、稳定,用户希望最大限度利用现有设备。用户现在拥有的设备不支持动态路由协议。
根据用户需求及用户网络环境,选择静态路由实现用户网络之间互通。
根据用户需求,设计如图2-1所示网络拓扑图。
当设备只有一个接口与其他网段互连时,可以通过静态路由或者缺省路由两种方式实现网络的互通,在配置时两种方式任选其一。
(1) 交换机上的配置步骤
# 方法一:设置以太网交换机Switch A的静态路由。
<SwitchA> system-view
[SwitchA] ip route-static 1.1.3.0 255.255.255.0 1.1.2.2
[SwitchA] ip route-static 1.1.4.0 255.255.255.0 1.1.2.2
[SwitchA] ip route-static 1.1.5.0 255.255.255.0 1.1.2.2
# 方法二:设置以太网交换机Switch A的静态路由。
<SwitchA> system-view
[SwitchA] ip route-static 0.0.0.0 0.0.0.0 1.1.2.2
# 方法一:设置以太网交换机Switch B的静态路由。
<SwitchB> system-view
[SwitchB] ip route-static 1.1.2.0 255.255.255.0 1.1.3.1
[SwitchB] ip route-static 1.1.5.0 255.255.255.0 1.1.3.1
[SwitchB] ip route-static 1.1.1.0 255.255.255.0 1.1.3.1
# 方法二:设置以太网交换机Switch B的静态路由。
<SwitchB> system-view
[SwitchB] ip route-static 0.0.0.0 0.0.0.0 1.1.3.1
# 设置以太网交换机Switch C的静态路由。
<SwitchC> system-view
[SwitchC] ip route-static 1.1.1.0 255.255.255.0 1.1.2.1
[SwitchC] ip route-static 1.1.4.0 255.255.255.0 1.1.3.2
(2) 主机上的配置步骤
# 在主机A上配缺省网关为1.1.5.1,具体配置略。
# 在主机B上配缺省网关为1.1.4.1,具体配置略。
# 在主机C上配缺省网关为1.1.1.1,具体配置略。
至此图中所有主机和以太网交换机之间均能两两互通。
以太网交换机没有配置动态路由协议,接口的物理状态和链路层协议状态均已处于UP,但IP报文不能转发。
(1) 用display ip routing-table protocol static命令查看是否正确配置相应静态路由。
(2) 用display ip routing-table命令查看该静态路由是否已经生效。
文中所述的路由器代表了一般意义下的路由器,以及运行了路由协议的以太网交换机。
RIP(Routing Information Protocol)是一种较为简单的内部网关协议(Interior Gateway Protocol,IGP),主要用于规模较小的网络中。对于复杂环境及大型网络,一般不使用RIP。
RIP是一种基于距离矢量(Distance-Vector,D-V)算法的协议,它通过UDP报文进行路由信息的交换,使用的端口号为520。
RIP使用跳数(Hop Count)来衡量到达目的地址的距离,称为度量值(Routing Cost)。在RIP中,路由器到与它直接相连网络的跳数为0,通过一个路由器可达的网络的跳数为1,其余依此类推。为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。由于这个限制,使得RIP不适合应用于大型网络。
为提高性能,防止产生路由环路,RIP支持水平分割(Split Horizon)功能。RIP还可引入其它路由协议所得到的路由。
每个运行RIP的路由器管理一个路由数据库,该路由数据库包含了到所有可达目的地的路由项,这些路由项包含下列信息:
l 目的地址:主机或网络的IP地址。
l 下一跳地址:为到达目的地,需要经过的本路由器相邻路由器的接口IP地址。
l 出接口:本路由器转发报文的出接口。
l 度量值:本路由器到达目的地的开销。
l 路由时间:从路由项最后一次被更新到现在所经过的时间,路由项每次被更新时,路由时间重置为0。
在RFC1058中规定,RIP受三个定时器的控制,分别是Period update、Timeout和Garbage-Collection:
l Period update定时器,定义了发送路由更新的时间间隔。
l Timeout定时器,定义了路由老化时间。如果在老化时间内没有收到关于某条路由的更新报文,则该条路由在路由表中的度量值将会被设置为16。
l Garbage-Collection定时器,定义了一条路由从度量值变为16开始,直到它从路由表里被删除所经过的时间。在Garbage-Collection时间内,RIP以16作为度量值向外发送这条路由的更新,如果Garbage-Collection超时,该路由仍没有得到更新,则该路由将从路由表中被彻底删除。
RIP是一种基于D-V算法的路由协议,由于它向邻居通告的是自己的路由表,存在发生路由环路的可能性。
RIP通过以下机制来避免路由环路的产生:
l 计数到无穷(Counting to infinity):将度量值等于16的路由定义为不可达(infinity)。在路由环路发生时,某条路由的度量值将会增加到16,该路由被认为不可达。
l 水平分割(Split Horizon):RIP从某个接口学到的路由,不会从该接口再发回给邻居路由器。这样不但减少了带宽消耗,还可以防止路由环路。
RIP启动和运行的整个过程可描述如下:
l 某路由器刚启动RIP时,以广播或组播的形式向运行RIP协议的相邻路由器发送请求报文,相邻路由器收到请求报文后,响应该请求,回送包含本地路由表信息的响应报文。
l 路由器收到响应报文后,更新本地路由表,同时向运行RIP协议的相邻路由器发送触发更新报文,通告路由更新信息。相邻路由器收到触发更新报文后,又向其各自的相邻路由器发送触发更新报文。在一连串的触发更新后,各路由器都能得到并保持最新的路由信息。
l RIP在缺省情况下每隔30秒向相邻路由器发送本地路由表,运行RIP协议的相邻路由器在收到报文后,对本地路由进行维护,选择一条最佳路由,再向其各自相邻网络发送更新信息,使更新的路由最终能达到全局有效。同时,RIP采用老化机制对超时的路由进行老化处理,以保证路由的实时性和有效性。
表3-1 RIP配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置RIP的基本功能 |
启动RIP |
必选 |
|
配置接口的工作状态 |
可选 |
||
配置RIP的版本号 |
可选 |
||
控制RIP的路由信息 |
配置接口的附加度量值 |
可选 |
|
配置RIP的路由聚合 |
可选 |
||
禁止RIP接收主机路由 |
可选 |
||
配置RIP对接收或者发布的路由进行过滤 |
可选 |
||
配置RIP协议优先级 |
可选 |
||
配置RIP接口间负载分担 |
可选 |
||
配置RIP的引入外部路由信息 |
可选 |
||
调整和优化RIP网络 |
配置RIP定时器 |
可选 |
|
配置水平分割 |
可选 |
||
配置RIP-1报文的零域检查 |
可选 |
||
配置RIP-2报文的认证方式 |
可选 |
||
配置RIP以单播方式发送RIP报文 |
可选 |
在配置RIP的基本功能之前,需配置接口的网络层地址,使相邻节点的网络层可达。
表3-2 启动RIP,配置指定的接口运行RIP进程
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
启动RIP并进入RIP视图 |
rip |
必选 |
配置指定接口运行RIP进程 |
network network-address |
必选 缺省情况下,接口禁用RIP |
l 接口视图下配置的RIP相关命令,只有在RIP启动后才会生效。
l RIP进程只在指定网段的接口上运行;对于不在指定网段上的接口,RIP既不在它上面接收和发送路由,也不将它的接口路由转发出去。因此,RIP启动后必须指定其工作网段。
表3-3 配置接口的工作状态
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
允许接口接收RIP更新报文 |
rip input |
可选 缺省情况下,允许接口发送、接收RIP更新报文 |
允许接口发送RIP更新报文 |
rip output |
|
允许接口接收和发送RIP更新报文 |
rip work |
表3-4 配置RIP版本号
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
指定接口运行RIP进程的版本 |
rip version { 1 | 2 [ broadcast | multicast ] } |
必选 缺省情况下,接口运行RIP进程的版本为RIP-1 |
在实际应用中,有时候需要对RIP路由信息进行更为精确的控制,以满足复杂网络环境中的需要。通过本节的配置过程,可以实现:
l 通过调整RIP接口的附加度量值来影响路由的选择;
l 通过设置路由聚合和禁止接收主机路由来减小路由表的规模;
l 对接收或发布的路由信息进行过滤;
l 当多个路由协议发现相同的路由时,通过配置RIP的协议优先级来改变路由协议的优先顺序;
l 在多路由协议环境中引入外部路由。
在控制RIP的路由信息之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达
l 配置RIP基本功能
附加度量值是在RIP路由原来度量值的基础上所增加的度量值。附加度量值并不直接改变路由器路由表中RIP路由的度量值,而是路由器在接收或发布RIP路由时增加的一个度量值。
表3-5 配置接口的附加度量值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置接口在接收路由时增加的度量值 |
rip metricin value |
可选 缺省情况下,RIP在接收报文时给路由增加的附加路由度量值为0 |
设置接口在发布路由时增加的度量值 |
rip metricout value |
可选 缺省情况下,RIP在发送报文时给路由增加的附加路由度量值为1 |
rip metricout的设置仅对路由器学习到的RIP路由,以及路由器自己产生的RIP路由有效,对于从其他路由协议引入到RIP的路由无效。
RIP的路由聚合:当路由器发布RIP路由更新信息时,同一自然网段内的不同子网的路由信息将聚合成一条自然掩码的路由信息发布。该功能主要用于减小路由表的规模,进而减少网络上的流量。
当路由器发布RIP路由更新信息,需要发布子网路由信息时,关闭RIP-2的自动路由聚合功能。
表3-6 配置RIP的路由聚合
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip |
- |
配置RIP-2路由聚合功能 |
summary |
必选 缺省情况下,RIP-2路由聚合功能处于开启状态 |
在某些特殊情况下,路由器会收到大量来自同一网段的主机路由,这些路由对于路由寻址没有多少作用,却占用了大量网络资源。配置了禁止主机路由功能后,路由器将拒绝它所收到的主机路由。
表3-7 禁止RIP接收主机路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip |
- |
禁止接收主机路由 |
undo host-route |
必选 缺省情况下,允许路由器接收主机路由 |
路由器提供路由信息过滤功能,通过指定访问控制列表、地址前缀列表、路由策略,对接收或发布的路由信息进行过滤。在接收路由时,还可以指定只接收来自某个邻居的RIP报文。
表3-8 配置RIP对接收或者发布的路由进行过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip |
- |
对接收的路由信息进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name [ gateway ip-prefix-name ] | route-policy route-policy-name } import |
必选 缺省情况下,RIP不对接收的路由信息进行过滤 使用gateway参数的命令用来配置对接收的指定地址发布的路由信息进行过滤 |
filter-policy gateway ip-prefix-name import |
||
对发布的路由信息进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ protocol [ process-id ] ] |
必选 缺省情况下,RIP不对发布的路由信息进行过滤 |
filter-policy route-policy route-policy-name export |
l filter-policy import命令对从邻居收到的RIP路由进行过滤,没有通过过滤的路由将不被加入路由表,也不向邻居发布该路由。
l filter-policy export命令可以对本机所有发布的路由进行过滤,包括使用import-route引入的路由和从邻居学到的RIP路由。
l filter-policy export命令可以对通过import-route引入的指定路由进行过滤。
表3-9 配置RIP协议优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip |
- |
设置RIP协议的优先级 |
preference value |
必选 缺省值为100 |
表3-10 配置RIP接口间负载分担
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip |
- |
配置RIP接口间负载分担 |
traffic-share-across-interface |
必选 缺省情况下,RIP接口间负载分担功能处于关闭状态 |
表3-11 配置RIP引入外部路由信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip |
- |
配置引入路由的缺省度量值 |
default cost value |
可选 缺省值为1 |
配置RIP引入外部路由信息 |
import-route protocol [ process-id | allow-ibgp ] [ cost value | route-policy route-policy-name ]* |
必选 缺省情况下,RIP不引入其它路由 |
在某些特殊的网络环境中,需要配置RIP的一些特性功能,对RIP网络的性能进行调整和优化。通过本节的配置过程,可以实现:
l 通过调整RIP定时器来改变RIP网络的收敛速度
l 配置水平分割来防止路由环路
l 在安全性较高的网络环境中对报文进行有效性检查和验证
l 在有特殊需求的接口或链路上配置RIP以单播方式发送RIP报文
在调整RIP之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达
l 配置RIP基本功能
表3-12 配置RIP定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip |
- |
配置RIP定时器的值 |
timers { update update-timer | timeout timeout-timer } * |
必选 缺省情况下: l Update定时器值:30秒 l Timeout定时器值:180秒 |
在配置RIP定时器时需要注意,定时器值的调整应考虑网络的性能,并在所有运行RIP的路由器上进行统一配置,以免增加不必要的网络流量或引起网络路由震荡。
表3-13 配置水平分割
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置水平分割功能 |
rip split-horizon |
必选 缺省情况下,水平分割功能处于开启状态 |
在点到点链路上禁止水平分割功能是无效的。
表3-14 配置RIP-1报文的零域检查
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip |
- |
配置RIP-1报文的零域检查功能 |
checkzero |
必选 缺省情况下,RIP-1零域检查功能处于开启状态 |
RIP-1报文中的有些字段必须为零,称之为零域。RIP-1在接收报文时将对零域进行检查,值不为零的RIP-1报文将不被处理。
RIP-2支持两种认证方式:明文认证和MD5密文认证。
明文认证不能提供安全保障,未加密的认证字随报文一同传送,所以明文认证不能用于安全性要求较高的情况。
表3-15 配置RIP-2报文的认证方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置RIP-2报文的认证方式 |
rip authentication-mode { simple password | md5 { rfc2082 key-string key-id | rfc2453 key-string } } |
必选 如果配置MD5认证,则必须配置MD5的类型: l rfc2453类型支持符合RFC2453规定的报文格式 l rfc2082类型支持符合RFC2082规定的报文格式 |
表3-16 配置RIP以单播方式发送RIP报文
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入RIP视图 |
rip |
- |
配置RIP以单播方式发送RIP报文 |
peer ip-address |
必选 在不支持广播或组播报文的链路上运行RIP,必须配置RIP以单播方式发送RIP报文 |
在完成上述配置后,执行display命令可以显示配置后RIP的运行情况,用户可以通过查看显示信息验证配置的效果。执行reset命令,可以复位RIP协议的系统配置参数。
操作 |
命令 |
说明 |
显示RIP的当前运行状态及配置信息 |
display rip |
display命令可以在任意视图下执行 |
显示RIP的接口信息 |
display rip interface |
|
显示RIP的路由信息 |
display rip routing |
|
复位RIP协议的系统配置参数 |
reset |
在RIP视图下执行 |
某小型公司办公网络需要任意两个节点之间能够互通,网络规模比较小。需要设备自动适应网络拓扑变化,降低人工维护工作量。
根据用户需求及用户网络环境,选择RIP路由协议实现用户网络之间互通。
根据用户需求,设计如图3-1所示网络拓扑图。
图3-1 RIP典型配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int1 |
110.11.2.1/24 |
Switch B |
Vlan-int1 |
110.11.2.2/24 |
|
Vlan-int2 |
155.10.1.1/24 |
|
Vlan-int3 |
196.38.165.1/24 |
Switch C |
Vlan-int1 |
110.11.2.3/24 |
|
|
|
|
Vlan-int4 |
117.102.0.1/16 |
|
|
|
以下的配置,只列出了与RIP相关的操作。在进行下列配置之前,请先确保以太网链路层能够正常工作,且各VLAN接口IP地址已经配置完成。
(1) 配置SwitchA
# 配置RIP。
<SwitchA> system-view
[SwitchA] rip
[SwitchA-rip] network 110.11.2.0
[SwitchA-rip] network 155.10.1.0
(2) 配置SwitchB
# 配置RIP。
<SwitchB> system-view
[SwitchB] rip
[SwitchB-rip] network 196.38.165.0
[SwitchB-rip] network 110.11.2.0
(3) 配置SwitchC
# 配置RIP。
<SwitchC> system-view
[SwitchC] rip
[SwitchC-rip] network 117.102.0.0
[SwitchC-rip] network 110.11.2.0
交换机在与对方路由设备物理连接正常的情况下,收不到RIP更新报文。
(1) 检查接口是否运行RIP进程,即是否配置了network命令;
(2) 检查接口是否允许接收或者发送RIP报文;
(3) 检查接口间发送RIP报文方式是否相互兼容,例如接口是以广播还是组播方式发送RIP报文。
文中所述的路由器代表了一般意义下的路由器,以及运行了路由协议的以太网交换机。
开放最短路径优先协议(Open Shortest Path First,OSPF)是IETF组织开发的一个基于链路状态的内部网关协议。目前使用的是版本2(RFC2328),其特性如下:
l 适应范围广泛——支持各种规模的网络,最多可支持几百台路由器。
l 快速收敛——在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
l 无自环——由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
l 区域划分——允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。
l 等价路由——支持到同一目的地址的多条等价路由。
l 路由分级——使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
l 支持验证——支持基于接口的报文验证以保证路由计算的安全性。
l 组播发送——协议报文支持以组播形式发送。
在不考虑区域划分的情况下,OSPF协议的路由计算过程可简单描述如下:
l 每台支持OSPF协议的路由器都维护着一份描述整个自治系统拓扑结构的链路状态数据库LSDB(Link State Database)。每台路由器根据自己周围的网络拓扑结构生成链路状态广播LSA(Link State Advertisement),通过相互之间发送协议报文将LSA发送给网络中其它路由器。这样每台路由器都收到了其它路由器的LSA,所有的LSA放在一起便组成了链路状态数据库。
l LSA是对路由器周围网络拓扑结构的描述, LSDB则是对整个网络的拓扑结构的描述。路由器将LSDB转换成一张带权的有向图,这张图是对整个网络拓扑结构的真实反映。各个路由器得到有向图是完全相同。
l 每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由,外部路由信息为叶子节点。外部路由可由广播它的路由器进行标记以记录关于自治系统的额外信息。各个路由器各自得到的路由表是不同的。
此外,为使每台路由器能将本地状态信息(如可用接口信息、可达邻居信息等)广播到整个自治系统中,在路由器之间要建立多个邻接关系,这使得任何一台路由器的路由变化都会导致多次传递,既没有必要,也浪费了宝贵的带宽资源。为解决这一问题,OSPF协议定义了“指定路由器”DR(Designated Router)与“备份指定路由器”BDR(Backup Designated Router),关于DR与BDR详细机制,请参见4.1.6 DR/BDR一节。
OSPF协议支持基于接口的报文验证以保证路由计算的安全性;并使用IP组播方式发送和接收报文(224.0.0.5和224.0.0.6)。
一组使用相同路由协议交换路由信息的路由器,缩写为AS。
一台路由器如果要运行OSPF协议,必须存在Router ID。Router ID可以手工配置,如果没有配置Router ID,系统会从接口的IP地址中自动选择一个作为Router ID。其选择顺序如下:
l 如果配置了Loopback接口地址,则选择最后配置的Loopback接口的IP地址作为Router ID;
l 如果没有配置LoopBack接口地址,则选择其他接口中最先配置的IP地址作为Router ID。
OSPF有五种报文类型:
l HELLO报文(Hello Packet):
最常用的一种报文,周期性的发送给本路由器的邻居。内容包括一些定时器的数值、DR(Designated Router,指定路由器)、BDR(Backup Designated Router,备份指定路由器)以及自己已知的邻居。
l DD报文(Database Description Packet,数据库描述报文):
两台路由器进行数据库同步时,用DD报文来描述自己的LSDB,内容包括LSDB中每一条LSA的摘要(摘要是指LSA的Header,通过该Header可以唯一标识一条LSA)。这样做是为了减少路由器之间传递信息的量,因为LSA的Header只占一条LSA的整个数据量的一小部分,根据Header,对端路由器就可以判断出是否已有这条LSA。
l LSR报文(Link State Request Packet,链路状态请求报文):
两台路由器互相交换过DD报文之后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。
l LSU报文(Link State Update Packet,链路状态更新报文):
用来向对端路由器发送所需要的LSA,内容是多条LSA(全部内容)的集合。
l LSAck报文(Link State Acknowledgment Packet,链路状态确认报文)
用来对接收到的LSU报文进行确认。内容是需要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认)。
(1) 五类基本的LSA
根据前面几节的介绍可以了解,链路状态广播报文LSA是OSPF协议计算和维护路由信息的主要来源。在RFC2328中定义了五类LSA,描述如下:
l Router-LSAs:第一类LSA(Type-1),由每个路由器生成,描述本路由器的链路状态和开销,只在其始发的区域内传播。
l Network-LSAs:第二类LSA(Type-2),由广播网络和NBMA网络的DR生成,描述本网段的链路状态,只在其始发的区域内传播。
l Summary-LSAs:包含第三类LSA和第四类LSA(Type-3,Type-4),由区域边界路由器ABR生成,在与该LSA相关的区域内传播。每一条Summary-LSA描述一条到达本自治系统的、其它区域的某一目的地的路由(即区域间路由:inter-area route)。Type-3 Summary-LSAs描述去往网络的路由(目的地为网段),Type-4 Summary-LSAs描述去往自治系统边界路由器ASBR的路由。
l AS-external-LSAs:第五类LSA(Type-5),也可以写成ASE LSA,由自治系统边界路由器ASBR生成,描述到达其它AS的路由,传播到整个AS(Stub/NSSA区域除外)。AS的缺省路由也可以用AS-external-LSAs来描述。
(2) 第七类LSA
在RFC1587(OSPF NSSA Option)中增加了一类新的LSA:Type-7 LSAs。
根据RFC1587的描述,Type-7 LSAs与Type-5 LSAs主要有以下两点区别:
l Type-7 LSAs在NSSA区域(Not-So-Stubby Area)内产生和发布;但NSSA区域内不会产生或发布Type-5 LSAs。
l Type-7 LSAs只能在一个NSSA内发布,当到达区域边界路由器ABR时,ABR可以选择将Type-7 LSAs中的部分路由信息转换成Type-5 LSAs发布,Type-7 LSAs不直接发布到其它区域或骨干区域。
在OSPF中,邻居(Neighbor)和邻接(Adjacency)是两个不同的概念。
OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文。收到Hello报文的OSPF路由器会检查报文中所定义的参数,如果双方一致就会形成邻居关系。
形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD报文,交换LSA并达到LSDB的同步之后,才形成真正意义上的邻接关系。
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,路由器数量的增多会导致LSDB非常庞大,占用大量的存储空间,并使得运行SPF算法的复杂度增加,导致CPU负担很重。
在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“动荡”之中,造成网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。
OSPF协议通过将自治系统划分成不同的区域(Area)来解决上述问题。区域是在逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识,如图4-1所示。
图4-1 OSPF区域划分
区域的边界是路由器,这样会有一些路由器属于不同的区域。划分区域后,可以在区域边界路由器上进行路由聚合,以减少通告到其他区域的LSA数量,还可以将网络拓扑变化带来的影响最小化。
OSPF路由器根据在AS中的不同位置,可以分为以下四类:
(1) 区域内路由器(Internal Router)
该类路由器的所有接口都属于同一个OSPF区域。
(2) 区域边界路由器ABR(Area Border Router)
该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域(骨干区域的介绍请参见下一小节)。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
(3) 骨干路由器(Backbone Router)
该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area 0的内部路由器都是骨干路由器。
(4) 自治系统边界路由器ASBR
与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它有可能是区域内路由器,也有可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
图4-2 OSPF路由器的类型
(5) Type-7 LSAs转换器
Type-7 LSAs转换器是一种ABR,根据Type-7 LSAs转换器的状态决定ABR是否进行Type-7 LSAs到Type-5 LSAs的转换。
l 当Type-7 LSAs转换器的状态为Enabled/Elected时,ABR将进行Type-7 LSAs到Type-5 LSAs的转换;
l 当Type-7 LSAs转换器的状态为Disabled时,ABR将不进行Type-7 LSAs到Type-5 LSAs的转换。
(1) 骨干区域(Backbone Area)
OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号(Area ID)是0,通常被称为骨干区域。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此,OSPF有两个规定:
l 所有非骨干区域必须与骨干区域保持连通;
l 骨干区域自身也必须保持连通。
但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通过配置OSPF虚连接(Virtual Link)予以解决。
(2) 虚连接(Virtual Link)
虚连接是指在两台ABR之间通过一个非骨干区域而建立的一条逻辑上的连接通道。它的两端必须是ABR,而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区(Transit Area)。
在图4-3中,Area2与骨干区域之间没有直接相连的物理链路,但可以在ABR上配置虚连接,使Area2通过一条逻辑链路与骨干区域保持连通。
虚连接的另外一个应用是提供冗余的备份链路,当骨干区域因链路故障不能保持连通时,通过虚连接仍然可以保证骨干区域在逻辑上的连通性。如图4-4所示。
虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,在这个连接上,和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。
两台ABR之间直接传递OSPF报文信息,它们之间的OSPF路由器只是起到一个转发报文的作用。由于协议报文的目的地址不是中间这些路由器,所以这些报文对于它们而言是透明的,只是当作普通的IP报文来转发。
Stub区域是一些特定的区域,Stub区域的ABR不允许注入Type-5 LSA,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。
为了进一步减少Stub区域中路由器的路由表规模以及路由信息传递的数量,可以将该区域配置为Totally Stub(完全Stub)区域,该区域的ABR不会将区域间的路由信息和外部路由信息传递到本区域。
(Totally) Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,(Totally) Stub区域位于自治系统的边界。
为保证到本自治系统的其他区域或者自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由,并发布给本区域中的其他非ABR路由器。
配置(Totally) Stub区域时需要注意下列几点:
l 骨干区域不能配置成(Totally) Stub区域。
l 如果要将一个区域配置成(Totally) Stub区域,则该区域中的所有路由器必须都要配置stub [ no-summary ]命令。
l (Totally) Stub区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
l 虚连接不能穿过(Totally) Stub区域。
NSSA(Not-So-Stubby Area)区域是Stub区域的变形,与Stub区域有许多相似的地方。NSSA区域也不允许Type-5 LSA注入,但可以允许Type-7 LSA注入。Type-7 LSA由NSSA区域的ASBR产生,在NSSA区域内传播。当Type-7 LSA到达NSSA的ABR时,由ABR(Type-7 LSAs转换器的状态为Enable/Elected)将Type-7 LSA转换成Type-5 LSA,传播到其他区域。
如图4-5所示,运行OSPF协议的自治系统包括3个区域:区域1、区域2和区域0,另外两个自治系统运行RIP协议。区域1被定义为NSSA区域,区域1接收的RIP路由传播到NSSA ASBR后,由NSSA ASBR产生Type-7 LSA在区域1内传播,当Type-7 LSA到达NSSA ABR(Type-7 LSAs转换器的状态为Enable/Elected)后,转换成Type-5 LSA传播到区域0和区域2。
另一方面,运行RIP的自治系统的RIP路由通过区域2的ASBR产生Type-5 LSA在OSPF自治系统中传播。但由于区域1是NSSA区域,所以Type-5 LSA不会到达区域1。
与Stub区域一样,虚连接也不能穿过NSSA区域。
路由聚合是指ABR或ASBR将具有相同前缀的路由信息聚合,只发布一条路由到其它区域。
AS被划分成不同的区域,每一个区域通过OSPF边界路由器(ABR)相连,区域间可以通过路由聚合来减少路由信息,减小路由表的规模,提高路由器的运算速度。
ABR在计算出一个区域的区域内路由之后,根据聚合相关设置,将其中多条OSPF路由聚合成一条发送到区域之外。
例如,图4-6中,Area 1内有三条区域内路由19.1.1.0/24,19.1.2.0/24,19.1.3.0/24,如果此时在Router A上配置了路由聚合,将三条路由聚合成一条19.1.0.0/16,则Router A就只生成一条聚合后的LSA,并发布给Area0中的其他路由器。
OSPF有两类聚合:
(1) ABR聚合
ABR向其它区域发送路由信息时,以网段为单位生成Type-3 LSA。如果该区域中存在一些连续的网段,则可以将这些连续的网段聚合成一个网段。这样ABR只发送一条聚合后的LSA,所有属于聚合网段范围的LSA将不再会被单独发送出去,这样可减少其它区域中LSDB的规模。
(2) ASBR聚合
配置引入路由聚合后,如果本地路由器是自治系统边界路由器ASBR,将对引入的聚合地址范围内的Type-5 LSA进行聚合。当配置了NSSA区域时,还要对引入的聚合地址范围内的Type-7 LSA进行聚合。
如果本地路由器是ABR,则对由Type-7 LSA转化成的Type-5 LSA进行聚合处理。
OSPF将路由分为四类,按照优先级从高到低的顺序依次为:
l 区域内路由(Intra Area)
l 区域间路由(Inter Area)
l 第一类外部路由(Type1 External)
l 第二类外部路由(Type2 External)
区域内和区域间路由描述的是AS内部的网络结构,外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPF将引入的AS外部路由分为两类:Type1和Type2。
第一类外部路由是指接收的是IGP(Interior Gateway Protocol,内部网关协议)路由(例如静态路由和RIP路由)。由于这类路由的可信程度较高,并且和OSPF自身路由的开销具有可比性,所以到第一类外部路由的开销等于本路由器到相应的ASBR的开销与ASBR到该路由目的地址的开销之和。
第二类外部路由是指接收的是EGP(Exterior Gateway Protocol,外部网关协议)路由。由于这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以计算路由开销时将主要考虑前者,即到第二类外部路由的开销等于ASBR到该路由目的地址的开销。如果计算出开销值相等的两条路由,再考虑本路由器到相应的ASBR的开销。
OSPF根据链路层协议类型将网络分为下列四种类型:
l 广播(Broadcast)类型:当链路层协议是Ethernet、FDDI时,OSPF缺省认为网络类型是Broadcast。在该类型的网络中,通常以组播形式(224.0.0.5和224.0.0.6)发送协议报文。
l NBMA(Non-Broadcast Multi-Access,非广播多点可达网络)类型:当链路层协议是帧中继、ATM或X.25时,OSPF缺省认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文。
l 点到多点P2MP(point-to-multipoint)类型:没有一种链路层协议会被缺省的认为是P2MP类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将NBMA改为点到多点的网络。在该类型的网络中,缺省情况下,以组播形式(224.0.0.5)发送协议报文。可以根据用户需要,以单播形式发送协议报文。
l 点到点P2P(point-to-point)类型:当链路层协议是PPP、HDLC时,OSPF缺省认为网络类型是P2P。在该类型的网络中,以组播形式(224.0.0.5)发送协议报文。
NBMA网络是指非广播、多点可达的网络,比较典型的有ATM和帧中继网络。
对于接口类型为NBMA的网络需要进行一些特殊的配置。由于无法通过广播Hello报文的形式发现相邻路由器,必须手工为该接口指定相邻路由器的IP地址,以及该相邻路由器是否有DR选举权等。
NBMA网络必须是全连通的,即网络中任意两台路由器之间都必须有一条虚电路直接可达。如果部分路由器之间没有直接可达的链路时,应将接口配置成P2MP方式。如果路由器在NBMA网络中只有一个对端,也可将接口类型改为P2P方式。
NBMA与P2MP网络之间的区别:
l NBMA是指那些全连通的、非广播、多点可达网络。而点到多点的网络,则并不需要一定是全连通的。
l 在NBMA上需要选举DR与BDR,而在点到多点网络中没有DR与BDR。
l NBMA是一种缺省的网络类型,点到多点必须是由其它的网络强制更改的。最常见的做法是将NBMA改为点到多点的网络。
l NBMA用单播发送报文,需要手工配置邻居。缺省情况下,点到多点采用组播方式发送报文。
在广播网和NBMA网络中,任意两台路由器之间都要传递路由信息。如果网络中有n台路由器,则需要建立nx(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF协议定义了指定路由器DR(Designated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态发送出去。
如果DR由于某种故障而失效,则网络中的路由器必须重新选举DR,网络中的路由器再与新的DR同步。这需要较长的时间,在这段时间内,路由的计算是不正确的。为了能够缩短这个过程,OSPF提出了BDR(Backup Designated Router)的概念。
BDR是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR。由于不需要重新选举,并且邻接关系事先已建立,所以这个过程是非常短暂的。当然这时还需要再重新选举出一个新的BDR,虽然一样需要较长的时间,但并不会影响路由的计算。
运行OSPF进程的网络中,既不是DR也不是BDR的路由器为DR Other。DR Other
仅与DR和BDR之间建立邻接关系,DR Other之间不交换任何路由信息。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量,同时减少网络流量,节约了带宽资源。
如图4-7所示,用实线代表以太网物理连接,虚线代表建立的邻接关系。可以看到,采用DR/BDR机制后,5台路由器之间只需要建立7个邻接关系就可以了。
图4-7 DR/BDR示意图
DR和BDR是由同一网段中所有的路由器根据路由器优先级、Router ID通过HELLO报文选举出来的,只有优先级大于0的路由器才具有选取资格。
进行DR/BDR选举时每台路由器将自己选出的DR写入Hello报文中,发给网段上的每台运行OSPF协议的路由器。当处于同一网段的两台路由器同时宣布自己是DR时,路由器优先级高者胜出。如果优先级相等,则Router ID大者胜出。如果一台路由器的优先级为0,则它不会被选举为DR或BDR。
需要注意的是:
l 只有在广播或NBMA类型接口才会选举DR,在点到点或点到多点类型的接口上不需要选举DR。
l DR是指某个网段中概念,是针对路由器的接口而言的。某台路由器在一个接口上可能是DR,在另一个接口上有可能是BDR,或者是DR Other。
l 路由器的优先级可以影响DR/BDR的选举,但是当DR/BDR选举过程已经结束,路由器的优先级将不再影响DR/BDR的选举。只有下次再进行DR/BDR选举时,路由器的优先级才会生效。
l DR并不一定就是DR优先级最大的路由器接口;同理,BDR也并不一定就是DR优先级次高的路由器接口。
交换机支持以下OSPF特性:
l 支持Stub区域:定义了Stub区域以节省该区域内路由器接收ASE路由时的开销。
l 支持NSSA区域:定义了NSSA区域,以克服Stub区域对于拓扑结构的限制。
l 支持OSPF多进程(Multi-Process),可以在一台路由器上运行多个OSPF进程。
l 可以和其它动态路由协议共享所发现的路由信息:在现阶段,支持将RIP等动态路由协议和静态路由作为OSPF的外部路由引入到路由器所属的自治系统中,或将OSPF自身发现的路由信息发布到其它路由协议中去。
l 支持报文验证功能:OSPF对同一区域内的相邻路由器之间可以选择明文验证或MD5密文验证两种验证方式对报文进行验证。
l 路由器接口参数的灵活配置:在路由器的接口上,可以配置OSPF的参数包括:输出花费、Hello报文发送间隔、重传间隔、接口传输时延、路由优先级、相邻路由器“失效”时间、报文验证方式和报文验证字等。
l 虚连接:支持配置虚连接。
表4-1 OSPF配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置OSPF基本功能 |
必选 |
||
配置OSPF的区域特性 |
可选 |
||
配置OSPF的网络类型 |
配置OSPF接口的网络类型 |
可选 |
|
配置NBMA/P2MP网络的邻居 |
可选 |
||
配置OSPF接口的DR优先级 |
可选 |
||
配置OSPF的路由信息控制 |
配置OSPF路由聚合 |
可选 |
|
配置OSPF对接收的路由进行过滤 |
可选 |
||
配置OSPF接口的开销值 |
可选 |
||
配置OSPF协议的优先级 |
可选 |
||
配置OSPF等价路由的条数 |
可选 |
||
配置OSPF引入外部路由 |
可选 |
||
配置OSPF网络调整优化 |
配置OSPF报文定时器 |
可选 |
|
配置接口传送LSA的延迟时间 |
可选 |
||
配置SPF计算间隔 |
可选 |
||
禁止接口发送OSPF报文 |
可选 |
||
配置OSPF验证 |
可选 |
||
配置DD报文中的MTU |
可选 |
||
配置记录OSPF邻居状态变化功能 |
可选 |
||
配置OSPF网管功能 |
可选 |
在OSPF的各项配置任务中,必须先启动OSPF、指定接口与区域号后,才能配置其它的功能特性。
在配置OSPF之前,需配置接口的网络层地址,使各相邻节点网络层可达。
OSPF基本功能配置包括:
l 配置路由器的ID。
为保证OSPF运行的稳定性,在进行网络规划时应该确定路由器ID的划分并建议手工配置。手工配置路由器的ID时,必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器某个接口的IP地址设置为该路由器的ID。
l 启动OSPF协议。
交换机支持OSPF多进程,当在一台路由器上启动多个OSPF进程时,需要指定不同的进程号。OSPF进程号是本地概念,不影响与其它路由器之间的报文交换。因此,不同的路由器之间,即使进程号不同也可以进行报文交换。
l 配置区域和区域所包含的网段。用户需要首先对自治域内的区域做好规划,然后在路由器上进行相应的配置。
在配置同一区域内的路由器时,大多数的配置数据都应该以区域为基础来统一考虑。错误的配置可能会导致相邻路由器之间无法相互传递信息,甚至导致路由信息的阻塞或者自环。
表4-2 配置OSPF基本功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置路由器的ID |
router id router-id |
可选 当在一台路由器上运行多个OSPF进程时,建议使用ospf命令中的router-id为不同进程指定不同的Router ID |
启动OSPF,进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
必选 进入OSPF视图 |
进入OSPF区域视图 |
area area-id |
- |
配置区域所包含的网段 |
network ip-address wildcard-mask |
必选 缺省情况下,接口不属于任何区域 |
l 在Router ID选举过程中,ospf [ process-id [ router-id router-id ] ]命令配置的Router ID优先级最高,router id命令配置的Router ID优先级次之,自动选择的Router ID优先级最低。
l Router ID可以重新进行选举。只有重启OSPF协议进程,重新选举的Router ID才能够生效。
l 建议用户使用ospf [ process-id [ router-id router-id ] ]命令手工配置Router ID。
l OSPF的进程ID在一台路由器上必须是唯一的。
l 一个网段只能属于一个区域,并且必须为每个运行OSPF协议的接口指明属于某一个特定的区域。
OSPF划分区域后,可以减少网络中LSA的数量,OSPF的扩展性也得以增强。对于位于AS边缘的一些非骨干区域,为了更多的缩减其路由表规模和降低LSA的数量,可以将它们配置为Stub区域。
Stub区域不能引入外部路由,为此又产生了NSSA区域的概念。NSSA区域中允许Type-7 LSAs的传播。Type-7 LSAs由NSSA区域的ASBR产生,当它到达NSSA的ABR时,就会转换成Type-5 LSAs(AS-External LSAs),并通告到其他区域。
在划分区域之后,非骨干区域之间的OSPF路由更新是通过骨干区域来完成交换的。对此,OSPF要求所有非骨干区域必须与骨干区域保持连通,并且骨干区域自身也要保持连通。
但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通过配置OSPF虚连接予以解决。
在配置OSPF的区域特性之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点网络层可达
l 配置OSPF基本功能
表4-3 配置OSPF的区域特性
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
- |
进入OSPF区域视图 |
area area-id |
- |
配置当前区域为Stub区域 |
stub [ no-summary ] |
可选 缺省情况下,没有区域被设置为Stub区域 |
配置当前区域为NSSA区域 |
nssa [ default-route-advertise | no-import-route | no-summary | translate-always ] * |
可选 缺省情况下,没有区域被设置为NSSA区域 |
配置发送到Stub区域或者NSSA区域缺省路由的开销 |
default-cost cost |
可选 仅在ABR上进行配置。 缺省情况下,发送到Stub区域或者NSSA区域的缺省路由的开销为1 |
创建并配置虚连接 |
vlink-peer router-id [ hello seconds | retransmit seconds | trans-delay seconds | dead seconds | simple password | md5 keyid key ] * |
可选 为使虚连接生效,在虚连接的两端都需配置此命令,并且两端配置的hello、dead等参数必须一致。 |
l 所有连接到Stub区域的路由器必须使用stub命令将该区域配置成Stub属性。
l 所有连接到NSSA区域的路由器必须使用nssa命令将该区域配置成NSSA属性。
OSPF根据链路层协议类型将网络分为四种不同的类型,请参见4.1.5 OSPF的网络类型。由于NBMA网络必须是全连通的,即网络中任意两台路由器之间都必须有一条虚电路直接可达。但在很多情况下,这个要求无法满足,这时就需要通过命令强制改变网络的类型。
对于NBMA网络,如果部分路由器之间没有直接可达的链路时,应将接口类型配置成P2MP网络。如果路由器在NBMA网络中只有一个对端,也可将接口类型配置为P2P网络。
另外,用户在配置广播网和NBMA网络时,还可以指定路由器各接口的DR优先级,以此来影响网络中的DR/BDR选择,使性能和可靠性较高的路由器来作为DR和BDR。
在配置OSPF的网络类型之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点之间网络层可达
l 配置OSPF基本功能
表4-4 配置OSPF接口的网络类型
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口的网络类型 |
ospf network-type { broadcast | nbma | p2mp [ unicast ] | p2p } |
必选 缺省情况下,接口的网络类型根据物理接口而定 |
l 当用户为接口配置了新的网络类型后,接口的原网络类型自动取消。
l 需要注意的是,如果接口配置为广播、NBMA或者P2MP网络类型,只有双方接口在同一网段才能建立邻居关系。
l 当接口的网络类型为NBMA 或者手工改为NBMA时,必须使用peer命令来配置邻接点。
l 当接口的网络类型为P2MP网络时,如果配置了unicast参数,接口以单播地址发送报文;此时必须使用peer命令来配置邻接点。
当路由器的接口类型为如下网络类型时,需要为其指定相邻路由器IP地址:
l NBMA网络
l P2MP网络(仅当接口选择单播形式发送报文时,需要此配置)
由于无法通过广播Hello报文的形式发现相邻路由器,必须手工指定相邻路由器的IP地址。对于NBMA网络,可以指定该相邻路由器是否有选举权等。
表4-5 配置NBMA/P2MP网络的邻居
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
- |
配置NBMA/P2MP网络的邻居 |
peer ip-address [ dr-priority dr-priority ] |
必选 缺省情况下,NBMA接口的邻接点优先级的取值为1 |
当网络类型为广播网或NBMA类型时,可以通过配置接口的DR优先级控制网络中DR/BDR的选择。
表4-6 配置OSPF接口的DR优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置OSPF接口的DR优先级 |
ospf dr-priority priority |
必选 缺省情况下,优先级为1 |
使用ospf dr-priority命令和使用peer命令设置的优先级具有不同的用途:
l ospf dr-priority命令设置的优先级用于实际的DR选举。
l peer命令设置的优先级用于表示邻居是否具有选举权。如果在配置邻居时将优先级指定为0,则本地路由器认为该邻居不具备选举权,不向该邻居发送Hello报文,这种配置可以减少在DR和BDR选举过程中网络上的Hello报文数量。但如果本地路由器是DR或BDR,它也会向优先级为0的邻居发送Hello报文,以建立邻接关系。
通过本节的配置,可以控制OSPF的路由信息的发布与接收,并引入其他协议的路由。
在控制OSPF路由信息之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点之间网络层可达
l 配置OSPF基本功能
l 如果对路由信息进行过滤,则需要配置对应的过滤规则
配置OSPF路由聚合分为:
l 配置区域边界路由器(ABR)路由聚合。
l 配置自治系统边界路由器(ASBR)对引入的路由进行聚合。
表4-7 配置ABR路由聚合
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
- |
进入区域视图 |
area area-id |
- |
配置OSPF的ABR路由聚合 |
abr-summary ip-address mask [ advertise | not-advertise ] |
必选 此命令只有在ABR上配置才会有效。缺省情况下,区域边界路由器不对路由聚合 |
表4-8 配置ASBR路由聚合
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
- |
配置OSPF的ASBR路由聚合 |
asbr-summary ip-address mask [ not-advertise | tag value ] |
必选 缺省情况下,不对引入的路由进行聚合 |
表4-9 配置OSPF对接收的路由进行过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
- |
配置对接收的路由进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name | gateway ip-prefix-name } import |
必选 缺省情况下,不对接收到的路由信息进行过滤 |
由于OSPF是基于链路状态的动态路由协议,路由信息隐藏在链路状态广播中,所以不能对发布和接收的LSA进行过滤。filter-policy import命令实际上是对通过SPF算法计算出来的路由(即OSPF路由表中的路由)进行过滤,只有通过过滤的路由才被添加到路由表中。
表4-10 配置OSPF接口的开销值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置OSPF接口的开销值 |
ospf cost value |
必选 缺省情况下,接口运行OSPF进程所需的开销值为10 |
由于路由器上可能同时运行多个动态路由协议,就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置一个优先级,在不同协议发现同一条路由时,系统将优先级高的路由协议发现的路由添加到路由表。
表4-11 配置OSPF协议的优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
- |
配置OSPF协议的优先级 |
preference [ ase ] value |
必选 缺省情况下,OSPF路由的优先级为10,OSPF ASE的优先级为150 |
表4-12 配置OSPF等价路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
- |
配置OSPF等价路由的条数 |
multi-path-number value |
必选 缺省情况下,OSPF等价路由的条数为4 |
表4-13 配置OSPF引入外部路由
l import-route命令不能引入缺省路由,如果要引入缺省路由,必须要使用default-route-advertise命令。
l OSPF对发布的路由进行过滤,是指OSPF只将满足条件的外部路由转换为Type-5 LSA或Type-7 LSA并发布出去。
l 当OSPF引入外部路由时,还可以配置一些额外参数的缺省值,如度量值、路由数量、标记和类型。路由标记可以用来标识协议相关的信息。
用户可以从以下几个方面来调整和优化OSPF网络:
l 通过改变OSPF的报文定时器,可以调整OSPF网络的收敛速度以及协议报文带来的网络负荷。在一些低速链路上,需要考虑接口传送LSA的延迟时间。
l 通过调整SPF计算间隔时间,可以抑制由于网络频繁变化带来的资源消耗问题。
l 在安全性较高的网络中,可以通过配置OSPF验证特性,来提高OSPF网络的安全性。
l OSPF同时支持网管功能,可以配置OSPF MIB与某一进程绑定,以及发送Trap消息和日志功能。
在调整和优化OSPF网络之前,需完成以下任务:
l 配置接口的网络层地址,使相邻节点之间网络层可达
l 配置OSPF基本功能
OSPF邻居之间的Hello定时器的时间间隔要保持一致。Hello定时器的值与路由收敛速度、网络负荷大小成反比。
在同一接口上失效时间应至少为Hello间隔时间的4倍。
当一台路由器向它的邻居发送一条LSA后,需要等到对方的确认报文。若在重传间隔时间内没有收到对方的确认报文,就会向邻居重传这条LSA。
表4-14 配置OSPF报文定时器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口发送Hello报文的时间间隔 |
ospf timer hello seconds |
可选 缺省情况下,point-to-point、broadcast类型接口发送Hello报文的时间间隔的值为10秒;point-to-multipoint、NBMA类型接口发送Hello报文的时间间隔的值为30秒 |
在NBMA接口上配置发送轮询报文的时间间隔 |
ospf timer poll seconds |
可选 缺省情况下,发送轮询报文的时间间隔为40秒 |
设置相邻路由器间失效时间 |
ospf timer dead seconds |
可选 缺省情况下,point-to-point、broadcast类型接口的OSPF邻居失效时间为40秒,point-to-multipoint、NBMA类型接口的OSPF邻居失效时间为120秒 |
设置邻接路由器重传LSA的时间间隔 |
ospf timer retransmit interval |
可选 缺省情况下,时间间隔为5秒 |
l 修改了网络类型后,Hello与Dead定时器都将恢复缺省值。
l 相邻路由器重传LSA时间间隔的值不要设置得太小,否则将会引起不必要的重传。通常应该大于一个报文在两台路由器之间往返一次的时间。
表4-15 配置接口传送LSA的延迟时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口传送LSA的延迟时间 |
ospf trans-delay seconds |
必选 缺省情况下,传输延迟时间为1秒 |
考虑到OSPF报文在链路上传送时也需要花费时间,所以LSA的老化时间(age)在传送之前要增加一定的传送延迟时间,在低速链路上需要对该项配置进行重点考虑。
当OSPF的链路状态数据库(LSDB)发生改变时,需要重新计算最短路径。如果网络频繁变化,且每次变化都立即计算最短路径,将会占用大量系统资源,并影响路由器的效率。通过调节连续两次SPF计算的最小间隔时间,可以抑制由于网络频繁变化带来的影响。
表4-16 配置SPF计算间隔
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
- |
设置SPF计算间隔 |
spf-schedule-interval interval |
必选 缺省情况下,SPF计算的时间间隔为5秒 |
如果要使OSPF路由信息不被某一网络中的路由器获得,可使用silent-interface命令来禁止此接口发送OSPF报文。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
- |
禁止接口发送OSPF报文 |
silent-interface silent-interface-type silent-interface-number |
必选 缺省情况下,允许接口发送OSPF报文 |
l 不同的进程可以对同一接口禁止发送OSPF报文,但silent-interface命令只对本进程已经使能的OSPF接口起作用,对其它进程的接口不起作用。
l 将运行OSPF协议的接口指定为Silent状态后,该接口的直连路由仍可以发布出去,但接口的Hello报文将被阻塞,接口上无法建立邻居关系。这样可以增强OSPF的组网适应能力,减少系统资源的消耗。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
- |
进入OSPF区域视图 |
area area-id |
- |
配置OSPF区域的验证模式 |
authentication-mode { simple | md5 } |
必选 缺省情况下,没有配置区域验证模式 |
退回到OSPF视图 |
quit |
- |
退回到系统视图 |
quit |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置OSPF接口的验证模式 |
ospf authentication-mode { simple password | md5 key-id key } |
必选 缺省情况下,接口不对OSPF报文进行验证 |
l OSPF支持报文验证功能,只有通过验证的报文才能接收,否则将不能正常建立邻居。
l 一个区域中所有的路由器的验证类型必须一致,一个网段中所有路由器的验证字口令也必须一致。
一般情况下,接口发送DD报文时不使用接口的实际MTU值,而是用0代替。进行此配置后,将使用接口的实际MTU值填写DD报文MTU字段。
表4-19 配置DD报文中的MTU
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口发送DD报文时填MTU值 |
ospf mtu-enable |
必选 缺省情况下,接口发送DD报文时MTU值为0,即不填接口的实际MTU值 |
表4-20 配置记录OSPF邻居状态变化功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入OSPF视图 |
ospf [ process-id [ router-id router-id ] ] |
- |
配置记录OSPF邻居状态变化功能 |
log-peer-change |
必选 缺省情况下,记录OSPF邻居状态变化功能处于关闭状态 |
表4-21 配置OSPF 网管宫功能
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
配置OSPF MIB绑定 |
ospf mib-binding process-id |
可选 缺省情况下,MIB操作绑定在第一个启动的OSPF进程上 |
配置OSPF发送TRAP报文功能 |
snmp-agent trap enable ospf [ process-id ] [ ifauthfail | ifcfgerror | ifrxbadpkt | ifstatechange | iftxretransmit | lsdbapproachoverflow | lsdboverflow | maxagelsa | nbrstatechange | originatelsa | virifauthfail | virifcfgerror | virifrxbadpkt | virifstatechange | viriftxretransmit | virnbrstatechange ] * |
可选 可以配置OSPF发送多种SNMP TRAP报文,并可以通过进程号指定某个OSPF进程发送SNMP TRAP报文 |
在完成上述配置后,执行display命令可以显示配置后OSPF的运行情况,用户可以通过查看显示信息验证配置的效果。
执行reset命令可以复位OSPF计数器或连接。
表4-22 OSPF显示和维护
操作 |
命令 |
说明 |
查看路由器的Router ID |
display router id |
display命令可以在任意视图下执行 |
查看OSPF路由过程的信息 |
display ospf [ process-id ] brief |
|
查看OSPF统计信息 |
display ospf [ process-id ] cumulative |
|
查看OSPF的LSDB信息 |
display ospf process-id area-id lsdb [ brief | [ [ asbr | network | nssa | router | summary ] [ ip-address ] ] [ originate-router ip-address | self-originate ] ] display ospf [ process-id ] lsdb [ brief | [ [ asbr | ase | network | nssa | router | summary ] [ ip-address ] ] [ originate-router ip-address | self-originate ] ] |
|
查看OSPF各区域邻居的信息 |
display ospf [ process-id ] peer [ brief | statistics ] |
|
查看OSPF下一跳信息 |
display ospf [ process-id ] nexthop |
|
查看OSPF路由表的信息 |
display ospf [ process-id ] routing |
|
查看OSPF虚连接信息 |
display ospf [ process-id ] vlink |
|
查看OSPF请求列表 |
display ospf [ process-id ] request-queue |
|
查看OSPF重传列表 |
display ospf [ process-id ] retrans-queue |
|
查看OSPF ABR及ASBR信息 |
display ospf [ process-id ] abr-asbr |
|
查看OSPF接口信息 |
display ospf [ process-id ] interface interface-type interface-number |
|
查看OSPF错误信息 |
display ospf [ process-id ] error |
|
查看OSPF ASBR聚合信息 |
display ospf [ process-id ] asbr-summary [ ip-address mask ] |
|
重启OSPF进程 |
reset ospf { all | process-id } |
reset命令在用户视图下执行 |
清除OSPF进程的统计信息 |
reset ospf statistics { all | process-id } |
某用户网络链路类型为广播型网络,通过OSPF实现网络之间互通。由于网络中设备性能有差异,希望DR/BDR由性能较高的设备承担,优化网络处理速度。对于网络中性能较低的设备,禁止其参加DR/BDR选举。
根据用户需求及其网络环境,通过修改接口优先级实现用户需求。
根据用户需求,设计如图4-8所示网络拓扑图。
图4-8 配置OSPF的DR选择组网图
设备 |
接口 |
IP地址 |
Router ID |
接口优先级 |
Switch A |
Vlan-int1 |
196.1.1.1/24 |
1.1.1.1 |
100 |
Switch B |
Vlan-int1 |
196.1.1.2/24 |
2.2.2.2 |
0 |
Switch C |
Vlan-int1 |
196.1.1.3/24 |
3.3.3.3 |
2 |
Switch D |
Vlan-int1 |
196.1.1.4/24 |
4.4.4.4 |
1 |
# 配置Switch A
<SwitchA> system-view
[SwitchA] interface Vlan-interface 1
[SwitchA-Vlan-interface1] ip address 196.1.1.1 255.255.255.0
[SwitchA-Vlan-interface1] ospf dr-priority 100
[SwitchA-Vlan-interface1] quit
[SwitchA] router id 1.1.1.1
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
# 配置Switch B
<SwitchB> system-view
[SwitchB] interface Vlan-interface 1
[SwitchB-Vlan-interface1] ip address 196.1.1.2 255.255.255.0
[SwitchB-Vlan-interface1] ospf dr-priority 0
[SwitchB-Vlan-interface1] quit
[SwitchB] router id 2.2.2.2
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
# 配置Switch C
<SwitchC> system-view
[SwitchC] interface Vlan-interface 1
[SwitchC-Vlan-interface1] ip address 196.1.1.3 255.255.255.0
[SwitchC-Vlan-interface1] ospf dr-priority 2
[SwitchC-Vlan-interface1] quit
[SwitchC] router id 3.3.3.3
[SwitchC] ospf
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
# 配置Switch D
<SwitchD> system-view
[SwitchD] interface Vlan-interface 1
[SwitchD-Vlan-interface1] ip address 196.1.1.4 255.255.255.0
[SwitchD-Vlan-interface1] quit
[SwitchD] router id 4.4.4.4
[SwitchD] ospf
[SwitchD-ospf-1] area 0
[SwitchD-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
在Switch A上使用display ospf peer命令来显示OSPF邻居,注意Switch A有三个邻居。
每个邻居的状态都是full,这意味着Switch A与它的每个邻居都形成了邻接(Switch A和Switch C必须与网络中的所有交换机形成邻接,才能分别充当网络的DR和BDR)。Switch A是网络中的DR,而Switch C是BDR。其它所有邻居都是DRother(这意味着它们既不是DR,也不是BDR)。
# 将Switch B的优先级改为200
<SwitchB> system-view
[SwitchB] interface Vlan-interface 1
[SwitchB-Vlan-interface1] ospf dr-priority 200
在Switch A上使用display ospf peer命令来显示OSPF邻居,注意Switch B的优先级变为200;但它并不是DR。
只有当现在的DR不在网络上了后,DR才会改变。关掉Switch A,在Switch D上使用display ospf peer命令可显示邻居,注意本来是BDR的Switch C成为了DR,并且Switch B现在成为了BDR。
若网络中所有的交换机被移走后又重新加入,Switch B就被选为DR(优先级为200),Switch A成为了BDR(优先级为100)。关掉所有的交换机再重新启动,这个操作将引发网络中的路由器重新进行DR/BDR的选择。
用户网络运行OSPF实现网络互通。网络分为三个区域,一个骨干区域,两个普通区域(Area 1、Area 2)。其中某普通区域(Area 2)无法与骨干区域直接相连,只能通过另外一个普通区域(Area 1)接入。用户希望无法与骨干区域直接连接的普通区域(Area 2)能够与另外两个区域互通。
根据用户需求及用户网络环境,选择虚连接来实现普通区域(Area 2)与骨干区域之间的连接。
根据用户需求,设计如图4-9所示网络拓扑图。
图4-9 配置OSPF虚链路组网图
设备 |
接口 |
IP地址 |
Router ID |
Switch A |
Vlan-int1 |
196.1.1.1/24 |
1.1.1.1 |
Switch B |
Vlan-int1 |
196.1.1.2/24 |
2.2.2.2 |
|
Vlan-int2 |
197.1.1.2/24 |
|
Switch C |
Vlan-int1 |
152.1.1.1/24 |
3.3.3.3 |
|
Vlan-int2 |
197.1.1.1/24 |
|
# 配置Switch A
<SwitchA> system-view
[SwitchA] interface Vlan-interface 1
[SwitchA-Vlan-interface1] ip address 196.1.1.1 255.255.255.0
[SwitchA-Vlan-interface1] quit
[SwitchA] router id 1.1.1.1
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
# 配置Switch B
<SwitchB> system-view
[SwitchB] interface vlan-interface 1
[SwitchB-Vlan-interface1] ip address 196.1.1.2 255.255.255.0
[SwitchB-Vlan-interface1] quit
[SwitchB] interface vlan-interface 2
[SwitchB-Vlan-interface2] ip address 197.1.1.2 255.255.255.0
[SwitchB-Vlan-interface2] quit
[SwitchB] router id 2.2.2.2
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 196.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] area 1
[SwitchB-ospf-1-area-0.0.0.1] network 197.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.1] vlink-peer 3.3.3.3
# 配置Switch C
<SwitchC> system-view
[SwitchC] interface Vlan-interface 1
[SwitchC-Vlan-interface1] ip address 152.1.1.1 255.255.255.0
[SwitchC-Vlan-interface1] quit
[SwitchC] interface Vlan-interface 2
[SwitchC-Vlan-interface2] ip address 197.1.1.1 255.255.255.0
[SwitchC-Vlan-interface2] quit
[SwitchC] router id 3.3.3.3
[SwitchC] ospf
[SwitchC-ospf-1] area 1
[SwitchC-ospf-1-area-0.0.0.1] network 197.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.1] vlink-peer 2.2.2.2
[SwitchC-ospf-1-area-0.0.0.1] quit
[SwitchC-ospf-1] area 2
[SwitchC-ospf-1-area-0.0.0.2] network 152.1.1.0 0.0.0.255
OSPF邻居路由器间无法建立邻居关系。
(1) 首先检查路由器的链路层工作情况是否正常
(2) 在路由器的链路层工作正常的情况下,检查路由器是否符合建立邻居关系的条件:
l 相连路由器的接口上配置的OSPF参数必须一致;
l 相连路由器的接口上配置的区域号相同;
l 相连路由器接口的网络号/网络掩码一致(点到点网络、虚连接情况除外);
l 相连路由器接口的网络类型一致;
l 如果路由器接口的网络类型为NBMA网络,需要使用peer命令,手动指定路由器的邻居。
可按如下步骤进行检查:
(1) 使用display ip interface brief命令查看链路层工作是否正常。
(2) 使用ping命令检查网络层是否互通。
(3) 使用display ospf interface命令查看接口配置。
(4) 如果接口的网络类型为NBMA网络,使用display current-configuration configuration ospf命令检查是否指定了路由器的邻居。
(5) 使用display ospf brief命令检查OSPF定时器配置,相邻路由器的定时器设置是否一致。同时检查邻居的失效时间(dead )是否为Hello报文发送时间间隔的4倍。
(6) 使用display ospf peer命令查看邻居。
运行OSPF进程的路由器不能学习到完整的网络拓扑。
根据故障现象,可按照如下步骤进行分析:
(1) 检查路由器上是否配置了多个区域。如果配置了多个区域,确认是否其中一个区域为骨干区域;
(2) 检查骨干区域是否完全连通;
(3) 检查骨干区域是否配置为Stub区域、NSSA区域;
(4) 检查骨干区域是否配置了虚连接;
(5) 如果为Stub区域,是否区域内所有路由器配置了Stub属性;
(6) 如果为NSSA区域,是否区域内所有路由器配置了NSSA属性;
(7) 如果为Stub/NSSA区域,是否为虚连接的传输区域;虚连接不能穿越Stub/NSSA区域;
(1) 使用display ospf peer命令查看OSPF邻居状态。
(2) 使用display ospf interface命令查看OSPF接口的信息。
(3) 使用display ospf lsdb查看LSDB数据库的信息。
(4) 使用display current-configuration configuration ospf命令查看区域配置情况。
(5) 如果配置了虚连接,使用display ospf vlink命令查看OSPF虚连接是否正常。
l 文中所述的路由器代表了一般意义下的路由器,以及运行了路由协议的以太网交换机。
l 手册中若不做特殊说明,所指的BGP均为BGP-4。
l 如果在设备上启用了IRF特性则不能使能BGP特性。
BGP(Border Gateway Protocol)是一种用于自治系统AS(Autonomous System)之间的动态路由协议。AS是拥有同一选路策略,在同一技术管理部门下运行的一组路由器。
早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),当前使用的版本是BGP-4(RFC1771)。BGP-4做为事实上的Internet外部路由协议标准,被广泛应用于ISP(Internet Service Provider)之间。
BGP特性描述如下:
l BGP是一种外部网关协议(EGP),与OSPF、RIP等内部网关协议(IGP)不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。
l BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性。
l BGP支持无类域间路由CIDR(Classless Inter-Domain Routing)。
l 路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。
l BGP路由通过携带AS路径信息彻底解决路由环路问题。
l BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。
l BGP易于扩展,能够适应网络新的发展。
发送BGP消息的路由器称为BGP发言者(Speaker),它接收或产生新的路由信息,并发布(Advertise)给其它BGP发言者。当BGP发言者收到来自其它自治系统的新路由时,如果该路由比当前已知路由更优、或者当前还没有该路由,它就把这条路由发布给自治系统内所有其它BGP发言者。
相互交换消息的BGP发言者之间互称对等体(Peer),若干相关的对等体可以构成对等体组(Peer group)。
BGP在路由器上以下列两种方式运行:
l IBGP(Internal BGP)
l EBGP(External BGP)
当BGP运行于同一自治系统内部时,被称为IBGP;当BGP运行于不同自治系统之间时,称为EBGP。
BGP的运行是通过消息驱动的,共有5种消息类型:Open,Update,Notification,Keepalive,Route-refresh。这些消息有相同的报文头,其格式如下图所示。
图5-1 BGP消息的报文头格式
主要字段的解释如下:
l Marker:16字节,用于BGP验证的计算,不使用验证时所有比特均为“1”。
l Length:2字节,BGP消息总长度(包括报文头在内),以字节为单位。
l Type:1字节,BGP消息的类型。其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh消息。其中,前四种消息是在RFC1771中定义,而Type5的消息则是在RFC2918中定义的。
Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。其消息格式如下图所示。
图5-2 BGP Open消息格式
主要字段的解释如下:
l Version:BGP的版本号。对于BGP-4来说,其值为4。
l My Autonomous System:本地AS编号。通过比较两端的AS编号可以确定是EBGP连接还是IBGP连接。
l Hold time:在建立对等体关系时两端要协商Hold time,并保持一致。如果在这个时间内未收到对端发来的Keepalive消息或Update消息,则认为BGP连接中断。
l BGP Identifier:BGP标识符。以IP地址的形式表示,用来识别BGP路由器。
l Opt Parm Len(Optional Parameters Length):可选参数的长度。如果为0则没有可选参数。
l Optional Parameters:可选参数。用于BGP验证或多协议扩展(Multiprotocol Extensions)等功能。
Update消息用于在对等体之间交换路由信息。它可以发布一条可达路由信息,也可以撤销多条不可达路由信息。其消息格式如下图所示。
图5-3 BGP Update消息格式
一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI(Network Layer Reachability Information)字段中,Path Attributes字段携带了这些路由的属性,BGP根据这些属性进行路由的选路,同时还可以携带多条不可达路由,撤销的路由放在Withdrawn Routes字段中。
主要字段的解释如下:
l Unfeasible Routes Length:不可达路由字段的长度,单位为字节。如果为0则说明没有Withdrawn Routes字段。
l Withdrawn Routes:不可达路由的列表。
l Total Path Attribute Length:路径属性字段的长度,以字节为单位。如果为0则说明没有Path Attributes字段。
l Path Attributes:与NLRI相关的所有路径属性列表,每个路径属性由一个TLV(Type-Length-Value)三元组构成。BGP正是根据这些属性值来避免环路,进行选路,协议扩展等。
l NLRI(Network Layer Reachability Information):可达路由的前缀和前缀长度二元组。
当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。其消息格式如下图所示。
主要字段的解释如下:
l Error Code:差错码,指定错误类型。
l Error Subcode:差错子码,错误类型的详细信息。
l Data:用于辅助发现错误的原因,它的内容依赖于具体的差错码和差错子码,记录的是出错部分的数据,长度不固定。
BGP会周期性地向对等体发出Keepalive消息,用来保持连接的有效性。其消息格式中只包含报文头,没有附加其他任何字段。
Route-refresh消息用来通知对等体自己支持路由刷新功能,要求对等体重新发送指定地址族的路由信息。其消息格式如下图所示。
主要的字段解释如下:
l AFI:Address Family Identifier,地址族标识。
l Res.:保留,必须置0。
l SAFI:Subsequent Address Family Identifier,子地址族标识。
BGP路由属性是一套参数,它对特定的路由进行了进一步的描述,使得BGP能够对路由进行过滤和选择。
事实上,所有的BGP路由属性都可以分为以下4类:
l 公认必须遵循(Well-known mandatory):所有BGP路由器都必须能够识别这种属性,且必须存在于Update消息中。如果缺少这种属性,路由信息就会出错。
l 公认可选(Well-known discretionary):所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来选择。
l 可选过渡(Optional transitive):在AS之间具有可传递性的属性。BGP路由器可以不支持此属性,但它仍然会接收带有此属性的路由,并通告给其他对等体。
l 可选非过渡(Optional non-trasitive):如果BGP路由器不支持此属性,该属性被忽略,且不会通告给其他对等体。
BGP路由几种基本属性和对应的类别如表5-1所示。
表5-1 路由属性和类别
属性名称 |
类别 |
ORIGIN |
公认必须遵循 |
AS_PATH |
公认必须遵循 |
公认必须遵循 |
|
LOCAL_PREF |
公认可选 |
ATOMIC_AGGREGATE |
公认可选 |
AGGREGATOR |
可选过渡 |
COMMUNITY |
可选过渡 |
MULTI_EXIT_DISC(MED) |
可选非过渡 |
ORIGINATOR_ID |
可选非过渡 |
CLUSTER_LIST |
可选非过渡 |
(1) 源(ORIGIN)属性
ORIGIN属性定义路由信息的来源,标记一条路由是怎么成为BGP路由的。它有以下3种类型:
l IGP:具有最高的优先级。通过network命令引入到BGP路由表的路由,其ORIGIN属性为IGP。
l EGP:优先级次之。通过EGP得到的路由信息,其ORIGIN属性为EGP。
l Incomplete:优先级最低。它并不是说明路由不可达,而是表示路由的来源无法确定。通过import-route命令引入的路由,其ORIGIN属性为Incomplete。
(2) AS路径(AS_Path)属性
AS_PATH属性按一定次序记录了某条路由从本地到目的地址所要经过的所有AS编号。当BGP将一条路由通告到其他AS时,便会把本地AS编号添加在AS_PATH列表的最前面。收到此路由的BGP路由器根据AS_PATH属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS编号排在前面,其他AS编号按顺序依次排列。如下图所示。
通常情况下,BGP不会接受AS_PATH中已包含本地AS编号的路由,从而避免了形成路由环路的可能。
根据某些特殊的具体应用需求,可以通过配置peer allow-as-loop命令允许AS编号重复。
同时,AS_PATH属性也可用于路由的选择和过滤。在其他因素相同的情况下,BGP会优先选择路径较短的路由。比如在上图中,AS50中的BGP路由器会选择经过AS40的路径作为到目的地址8.0.0.0去的最优路由。
在某些应用中,可以使用路由策略来人为的增加AS路径的长度,以便更为灵活地控制BGP路径的选择。
通过配置AS路径过滤列表,还可以针对AS_PATH属性中所包含的AS编号来对路由进行过滤。
(3) 下一跳(NEXT_HOP)属性
BGP的下一跳属性和IGP的有所不同,不一定就是邻居路由器的IP地址。
下一跳属性取值情况分为三种,如下图所示。
l BGP发言者把自己产生的路由发给所有邻居时,将把该路由信息的下一跳属性设置为自己与对端连接的接口地址;
l BGP发言者把接收到的路由发送给EBGP对等体时,将把该路由信息的下一跳属性设置为本地与对端连接的接口地址;
l BGP发言者把从EBGP邻居得到的路由发给IBGP邻居时,并不改变该路由信息的下一跳属性。如果配置了负载分担,路由被发给IBGP邻居时则会修改下一跳属性。
(4) MED(MULTI_EXIT_DISC)
MED属性仅在相邻两个AS之间交换,收到此属性的AS一方不会再将其通告给任何其他第三方AS。
MED属性相当于IGP使用的度量值(metrics),它用于判断流量进入AS时的最佳路由。当一个运行BGP的路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。如下图所示,从AS10到AS20的流量将选择Router B作为入口。
图5-8 MED属性
通常情况下,BGP只比较来自同一个AS的路由的MED属性值。
通过配置compare-different-as-med命令,可以强制BGP比较来自不同AS的路由的MED属性值。
(5) 本地优先(LOCAL_PREF)属性
LOCAL_PREF属性仅在IBGP对等体之间交换,不通告给其他AS。它表明BGP路由器的优先级。
LOCAL_PREF属性用于判断流量离开AS时的最佳路由。当BGP的路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。如下图所示,从AS20到AS10的流量将选择Router C作为出口。
(6) 团体(COMMUNITY)属性
团体属性用来简化路由策略的应用和降低维护管理的难度。它是一组有相同特征的目的地址的集合,没有物理上的边界,与其所在的AS无关。公认的团体属性有:
l INTERNET:缺省情况下,所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。
l NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS(关于联盟的定义请参见“5.1.4 大规模BGP网络所遇到的问题”中介绍)。
l NO_ADVERTISE:具有此属性的路由在被收到后,不能被通告给任何其他的BGP对等体。
l NO_EXPORT_SUBCONFED:具有此属性的路由在被收到后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。
BGP选择路由时采取如下策略:
l 首先丢弃下一跳(NEXT_HOP)不可达的路由;
l 若配置了Preferred-value值,优选值高的;
l 优选本地优先级(LOCAL_PREF)最高的路由;
l 优选本路由器始发的路由;
l 优选AS路径(AS_PATH)最短的路由;
l 依次选择ORIGIN类型为IGP、EGP、Incomplete的路由;
l 优选MED值最低的路由;
l 依次选择从EBGP、联盟、IBGP学来的路由;
l 优选ORIGINATOR_ID最小的路由;
BGP发布路由时采用如下策略:
l 存在多条有效路由时,BGP发言者只将最优路由发布给对等体;
l BGP发言者只把自己使用的路由发布给对等体;
l BGP发言者从EBGP获得的路由会向它所有BGP对等体发布(包括EBGP对等体和IBGP对等体);
l BGP发言者从IBGP获得的路由不向它的IBGP对等体发布;
l BGP发言者从IBGP获得的路由发布给它的EBGP对等体;
l 连接一旦建立,BGP发言者将把自己所有的BGP路由发布给新对等体。
在大规模的网络中,BGP路由表十分庞大,使用路由聚合(Routes Aggregation)可以大大减小路由表的规模。
路由聚合实际上是将多条路由合并的过程。这样BGP在向对等体通告路由时,可以只通告聚合后的路由,而不是将所有的具体路由都通告出去。
交换机支持自动聚合和手动聚合方式。使用后者还可以控制聚合路由的属性,以及决定是否发布具体路由。
BGP路由衰减(Route Dampening)用来解决路由不稳定的问题。路由不稳定的主要表现形式是路由振荡(Route flaps),即路由表中的某条路由反复消失和重现。
发生路由振荡时,路由协议就会向邻居发布路由更新,收到更新报文的路由器需要重新计算路由并修改路由表。所以频繁的路由振荡会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正常工作。
在多数情况下,BGP协议都应用于复杂的网络环境中,路由变化十分频繁。为了防止持续的路由振荡带来的不利影响,BGP使用衰减来抑制不稳定的路由。
BGP衰减使用惩罚值来衡量一条路由的稳定性,惩罚值越高则说明路由越不稳定。路由每发生一次振荡(路由从激活状态变为未激活状态,称为一次路由振荡),BGP便会给此路由增加一定的惩罚值(1000,此数值为系统固定,不可修改)。当惩罚值超过抑制阈值时,此路由被抑制,不加入到路由表中,也不再向其他BGP对等体发布更新报文。
被抑制的路由每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(Half-life)。当惩罚值降到再使用阈值时,此路由变为可用并被加入到路由表中,同时向其他BGP对等体发布更新报文。
图5-10 BGP衰减示意图
对等体组(Peer Group)是一些具有某些相同属性的对等体的集合。当一个对等体加入对等体组中时,此对等体将获得与所在对等体组相同的配置。当对等体组的配置改变时,组内成员的配置也相应改变。
在大型BGP网络中,对等体的数量会很多,其中很多对等体具有相同的策略,在配置时会重复使用一些命令,利用对等体组在很多情况下可以简化配置。
将对等体加入对等体组中,对等体与对等体组必须具有相同的路由更新策略,提高了路由发布效率。
如果对等体和对等体组都对某个选项做了配置,配置以最后一次的修改为准。
对等体组可以使一组对等体共享相同的策略,而利用团体可以使多个AS中的一组BGP路由器共享相同的策略。团体是一个路由属性,在BGP对等体之间传播,它并不受到AS范围的限制。
BGP路由器在将带有团体属性的路由发布给其它对等体之前,可以改变此路由原有的团体属性。
除了使用公认的团体属性外,用户还可以使用团体属性列表自定义扩展团体属性,以便更为灵活地控制路由策略。
为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。
利用路由反射可以解决这一问题。在一个AS内,其中一台路由器作为路由反射器RR(Router Reflector),其它路由器做为客户机(Client)与路由反射器之间建立IBGP连接。路由反射器在客户机之间传递(反射)路由信息,而客户机之间不需要建立IBGP连接。
既不是反射器也不是客户机的BGP路由器被称为非客户机(Non-Client)。非客户机与路由反射器之间,以及所有的非客户机之间仍然必须建立全连接关系。其示意图如下图所示。
路由反射器和它的客户机组成了一个集群(Cluster)。某些情况下,为了增加网络的可靠性和防止单点故障,可以在一个集群中配置一个以上的路由反射器。这时,位于相同集群中的每个路由反射器都要配置相同的Cluster_ID,以避免路由环路。如下图所示。
在某些网络中,路由反射器的客户机之间已经建立了全连接,它们可以直接交换路由信息,此时客户机到客户机之间的路由反射是没有必要的,而且还占用带宽资源。交换机支持配置相关命令来禁止在客户机之间反射路由。
禁止客户机之间的路由反射后,客户机到非客户机之间的路由仍然可以被反射。
联盟(Confederation)是处理AS内部的IBGP网络连接激增的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立EBGP连接关系。其示意图如下图所示。
在不属于联盟的BGP发言者看来,属于同一个联盟的多个子自治系统是一个整体,外界不需要了解内部的子自治系统情况,联盟ID就是标识联盟这一整体的自治系统号,如上图中的AS200就是联盟ID。
联盟的缺陷是:从非联盟向联盟方案转变时,要求路由器重新进行配置,逻辑拓扑也要改变。
在大型BGP网络中,路由反射器和联盟可以被同时使用。
传统的BGP-4只能管理IPv4的路由信息,对于使用其它网络层协议(如IPv6等)的应用,在跨自治系统传播时就受到一定限制。
为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,形成MP-BGP,目前的MP-BGP标准是RFC2858(Multiprotocol Extensions for BGP-4,BGP-4的多协议扩展)。
MP-BGP向后兼容,即支持BGP扩展的路由器与不支持BGP扩展的路由器可以互通。
BGP-4使用的报文中,与IPv4相关的三条信息都由Update报文携带,这三条信息分别是:NLRI、路径属性中的NEXT_HOP、路径属性中的AGGREGATOR(该属性中包含形成聚合路由的BGP发言者的IP地址)。
为实现对多种网络层协议的支持,BGP-4需要将网络层协议的信息反映到NLRI及NEXT_HOP。MP-BGP中引入了两个新的路径属性:
l MP_REACH_NLRI:Multiprotocol Reachable NLRI,多协议可达NLRI。用于发布可达路由及下一跳信息。
l MP_UNREACH_NLRI:Multiprotocol Unreachable NLRI,多协议不可达NLRI。用于撤销不可达路由。
这两种属性都是可选非过渡(Optional non-transitive)的,因此,不提供多协议能力的BGP发言者将忽略这两个属性的信息,不把它们传递给其它邻居。
与BGP相关的协议规范有:
l RFC1771:A Border Gateway Protocol 4 (BGP-4)
l RFC2858:Multiprotocol Extensions for BGP-4
l RFC3392:Capabilities Advertisement with BGP-4
l RFC2918:Route Refresh Capability for BGP-4
l RFC2439:BGP Route Flap Damping
l RFC1997:BGP Communities Attribute
l RFC2796:BGP Route Reflection
l RFC3065:Autonomous System Confederations for BGP
其他仍处在草案(Draft)阶段的特性还有Graceful Restart特性和扩展团体属性。
表5-2 配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置BGP的基本功能 |
必选 |
||
控制路由信息的发布与接收 |
配置BGP引入其他路由 |
可选 |
|
配置BGP路由聚合 |
可选 |
||
配置发送缺省路由 |
可选 |
||
配置BGP路由信息的发布策略 |
可选 |
||
配置BGP路由信息的接收策略 |
可选 |
||
配置BGP与IGP路由不同步 |
可选 |
||
配置BGP路由衰减 |
可选 |
||
配置BGP的路由属性 |
可选 |
||
调整和优化BGP网络 |
可选 |
||
配置BGP大型网络 |
配置BGP对等体组 |
必选 |
|
配置BGP团体 |
必选 |
||
配置BGP路由反射器 |
可选 |
||
配置BGP联盟 |
可选 |
本节讲述最基本的BGP网络配置过程。
由于BGP使用TCP连接,所以在配置BGP时需要指定对等体的IP地址。BGP对等体不一定就是相邻的路由器,利用逻辑链路也可以建立BGP对等体关系。有时为了增强BGP连接的稳定性,通常使用Loopback接口地址建立连接。
在配置BGP基本功能之前,确保相邻节点的网络层互通;
在配置BGP基本功能之前,需要准备以下数据:
l 本地AS编号和Router ID
l 对等体的IPv4地址和自治系统号
l 更新报文的源接口(可选)
表5-3 配置BGP组播地址族
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
进入组播地址族视图 |
ipv4-family multicast |
必选 |
组播地址族视图下的命令和BGP视图下命令配置类似,不做特殊说明请参照在BGP视图下的配置,具体使用请参照本手册的命令手册,以下都以BGP视图为例子。
表5-4 配置BGP的基本功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置Router ID |
router id router-id |
可选 |
启动BGP,进入BGP视图 |
bgp as-number |
必选 缺省情况下,系统不运行BGP |
指定对等体组的AS号 |
peer group-name as-number as-number |
必选 缺省情况下,对等体组无AS号 |
配置对等体/对等体组的描述信息 |
peer { group-name | ip-address } description description-text |
可选 |
激活指定对等体 |
可选 缺省情况下,BGP对等体处于激活状态 |
|
开启BGP日志记录功能 |
log-peer-change |
可选 缺省情况下, BGP日志记录功能处于关闭状态 |
指定路由更新报文的源接口 |
peer { group-name | ip-address } connect-interface interface-type interface-number |
可选 缺省情况下,BGP使用最佳路由更新报文的源接口 |
配置允许同非直接相连网络上的邻居建立EBGP连接 |
peer group-name ebgp-max-hop [ hop-count ] |
可选 缺省情况下,不允许同非直接相连网络上的邻居建立EBGP连接。配置参数hop-count,可以同时配置EBGP连接的最大路由器跳数 |
l 必须首先创建对等体组,才能配置对等体组的基本功能。关于对等体组的创建可以参见“5.7.2 配置BGP对等体组”。
l 为了使接口在出现问题时,仍能发送路由更新报文,可将发送路由更新报文的源接口配置成Loopback接口。
l 通常情况下,EBGP对等体之间必须具有直连的物理链路,如果不满足这一要求,则必须使用peer ebgp-max-hop命令允许它们之间经过多跳建立TCP连接。但是,对于直连EBGP使用LoopBack接口建立邻居关系,不需要peer ebgp-max-hop命令的配置。
需要注意的是:
l 一台路由器如果要运行BGP协议,则必须存在Router ID。Router ID是一个32比特无符号整数,是一台路由器在自治系统中的唯一标识。
l Router ID可以手工配置,如果没有配置Router ID,系统会从接口的IP地址中自动选择一个作为Router ID。其选择顺序是:如果配置了Loopback接口地址,则选择最后配置的Loopback接口的IP地址作为Router ID;如果没有配置LoopBack接口地址,则选择其他接口中最先配置的IP地址作为Router ID。为了增加网络的可靠性,建议将Router ID手工配置为Loopback接口的地址。
l Router ID可以重新进行选举。只有重启BGP协议进程,重新选举的Router ID才能够生效。
在控制BGP路由信息的发布与接收之前,需配置BGP基本功能;
在控制BGP路由信息的发布与接收之前,需要准备以下数据:
l 聚合方式和聚合后的路由
l 访问列表编号
l 过滤方向(发布/接收)和所使用的路由策略名称
l 衰减的各项参数:半衰期、阈值
BGP可以向邻居AS发送本地AS内部网络的路由信息,但BGP不是自己去发现AS内部的路由信息,而是引入IGP的路由信息到BGP路由表中,并发布给对等体。在引入IGP路由时,还可以针对不同的路由协议来对路由信息进行过滤。
表5-5 配置BGP引入其他路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
允许将缺省路由引入到BGP路由表中 |
default-route imported |
可选 缺省情况下,BGP不允许将缺省路由引入到BGP路由表中 |
引入其它协议路由信息并通告 |
import-route protocol [ process-id ] [ med med-value | route-policy route-policy-name ] * |
必选 缺省情况下,BGP未引入且不通告其它协议的路由 |
将网段路由通告到BGP路由表中 |
network network-address [ mask ] [ route-policy route-policy-name ] |
可选 缺省情况下,BGP不通告任何网段路由 |
l 通过import-route命令引入到BGP路由表中的路由的ORIGIN属性为Incomplete。
l 使用network命令通告指定网段的路由必须存在于本地IP路由表中,使用路由策略可以更为灵活的控制所发布的路由。
l 使用network命令通告到BGP路由表中的路由的ORIGIN属性为IGP。
在中型或大型BGP网络中,向对等体发布路由信息时,可以使用路由聚合功能。
路由聚合:将多条不同网段的路由信息合并为一条路由信息的过程,称为路由聚合。该功能即可以减少发布给对等体的路由更新数量,也可以减小对等体路由表中的路由数量。
BGP支持两种聚合方式:自动路由聚合和手动路由聚合。
l 自动路由聚合:对BGP引入的IGP子网路由进行聚合。如果配置了自动路由聚合功能,BGP发布路由更新信息时,将子网路由信息以自然网段的形式发布,而不再发布针对各个子网的路由信息。例如:当发布路由更新信息时,如果配置了路由聚合功能,路由表中的160.10.1.0/24,160.10.2.0/24,160.10.3.0/24路由信息将以160.10.0.0/16的形式发布。
l 手动路由聚合:对BGP本地路由进行聚合。如果配置了手动路由聚合功能,BGP将多条路由信息合并为一条指定网段的路由信息。
需要注意的是:
l 缺省路由不能进行自动路由聚合;
l 通过network命令通告的路由不能进行自动路由聚合;
l 手动路由聚合的优先级高于自动路由聚合的优先级。
表5-6 配置BGP路由聚合
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图 |
bgp as-number |
- |
|
配置BGP路由聚合 |
配置自动聚合 |
summary |
必选 缺省情况下,不进行路由聚合 |
配置手动聚合 |
aggregate ip-address mask [ as-set | attribute-policy route-policy-name | detail-suppressed | origin-policy route-policy-name | suppress-policy route-policy-name ] * |
表5-7 配置向对等体发送缺省路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
向对等体组发送缺省路由 |
peer group-name default-route-advertise |
必选 缺省情况下,不向对等体组发送缺省路由 |
配置peer default-route-advertise命令后,不论本地路由表中是否存在缺省路由,都将向指定对等体组发布一条下一跳地址为本地地址的缺省路由。
表5-8 配置对发布的路由信息的过滤策略
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图 |
bgp as-number |
- |
|
对发布的路由信息进行过滤 |
filter-policy { acl-number | ip-prefix ip-prefix-name } export [ protocol [ process-id ] ] |
必选 缺省情况下,不对发布的路由信息进行过滤 |
|
对向对等体组发布的路由指定路由策略 |
peer group-name route-policy route-policy-name export |
必选 缺省情况下,不指定对等体组的路由策略 |
|
过滤发布给对等体组的路由信息 |
为对等体组设置基于ACL的路由过滤策略 |
peer group-name filter-policy acl-number export |
必选 缺省情况下,对等体组无基于ACL路由过滤策略,无基于AS路径过滤列表的路由过滤策略,无基于IP前缀列表的路由过滤策略 |
为对等体组设置基于AS路径过滤列表的路由过滤策略 |
peer group-name as-path-acl acl-number export |
||
为对等体组配置基于IP前缀列表的路由过滤策略 |
peer group-name ip-prefix ip-prefix-name export |
l 只有通过过滤器的路由才被BGP发布。
l 对等体组的成员必须与所在的组使用相同的出方向路由更新策略,即对外发布路由时,一个对等体组遵循的策略是相同的。
表5-9 配置对接收的路由信息的过滤策略
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图 |
bgp as-number |
- |
|
对接收的路由信息进行过滤 |
filter-policy { acl-number | gateway ip-prefix-name | ip-prefix ip-prefix-name [ gateway ip-prefix-name ] } import |
必选 缺省情况下,不对接收的路由信息进行过滤 |
|
对来自对等体/对等体组的路由指定路由策略 |
peer { group-name | ip-address } route-policy policy-name import |
必选 缺省情况下,不指定对等体/对等体组的路由策略 |
|
过滤从对等体/对等体组接收的路由信息 |
为对等体/对等体组设置基于ACL的过滤策略 |
peer { group-name | ip-address } filter-policy acl-number import |
必选 缺省情况下,对等体/对等体组无基于ACL过滤策略,无基于AS路径过滤列表的路由过滤策略,无基于IP前缀列表的过滤策略 |
为对等体/对等体组设置基于AS路径过滤列表的路由过滤策略 |
peer { group-name | ip-address } as-path-acl acl-number import |
||
为对等体/对等体组设置基于IP前缀列表的路由过滤策略 |
peer { group-name | ip-address } ip-prefix ip-prefix-name import |
l 对BGP接收的路由进行过滤,只有满足某些条件的路由才能被BGP接收,并加到路由表中。
l 对等体组的成员可以与所在的组使用不同的入方向路由策略,即接收路由时,各对等体可以选择自己的策略。
表5-10 配置BGP与IGP路由不同步
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
取消BGP与IGP路由同步 |
undo synchronization |
必选 缺省情况下,BGP和IGP路由不同步 |
交换机不支持BGP与IGP同步。
路由衰减用于解决路由不稳定问题。导致路由不稳定的主要原因是振荡(flapping),即路由表中的路由反复消失和重现。振荡发生时,BGP更新报文在网络上多次传播,占用带宽和路由器资源,严重时影响网络正常工作。
评估路由是否稳定的依据是这条路由在前一段时间的表现。每当路由发生振荡,就给予惩罚,当惩罚到达一个预定的阈值时,路由被抑制。随着时间推移,惩罚值递减,下降到一个阈值时,路由解除抑制,被重新发布。
通过配置BGP衰减,可以抑制不稳定的路由信息,这类路由既不加入到BGP路由表中,也不向其他BGP对等体发布。
表5-11 配置BGP路由衰减
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置BGP路由衰减参数 |
dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling ] [ route-policy route-policy-name ] |
必选 缺省情况下,没有配置路由衰减。 参数的缺省值如下: l half-life-reachable:15分钟 l half-life-unreachable:15分钟 l reuse:750 l suppress:2000 l ceiling:16000 |
在配置BGP的选路策略之前,需配置BGP基本功能;
在配置BGP选路策略之前,需要准备以下数据:
l BGP协议优先级的值
l LOCAL_PREF值
l MED值
BGP具有很多路由属性,利用这些属性可以改变BGP的选路策略。
表5-12 配置BGP的路由属性
操作 |
命令 |
说明 |
||
进入系统视图 |
system-view |
- |
||
进入BGP视图 |
bgp as-number |
- |
||
配置外部、内部、本地路由的管理优先级 |
preference ebgp-value ibgp-value local-value |
可选 缺省情况下,各优先级的值分别为256、256、130 |
||
配置本地优先级的缺省值 |
default local-preference value |
可选 缺省情况下,本地优先级的缺省值为100 |
||
配置MED属性 |
配置本机的缺省MED值 |
default med med-value |
可选 缺省情况下,med-value为0 |
|
配置允许比较来自不同自治系统中的邻居的路由的MED值 |
compare-different-as-med |
可选 缺省情况下,不允许比较来自不同AS邻居的路由路径的MED属性值。 |
||
配置发布路由时将自身地址作为下一跳 |
peer group-name next-hop-local |
必选 在某些组网环境中,为保证IBGP邻居能够找到正确的下一跳,可以配置在向IBGP对等体组发布路由时,改变下一跳地址为自身地址 |
||
配置AS_PATH属性 |
配置允许本地AS编号重复出现的次数 |
peer { group-name | ip-address } allow-as-loop [ number ] |
可选 缺省情况下,允许的重复次数为1 |
|
为对等体组指定一个自治系统号 |
peer group-name as-number as-number |
可选 缺省情况下,没有为对等体组配置本地自治系统号 |
||
配置发送BGP更新报文时AS_PATH属性中仅携带公有AS编号 |
peer group-name public-as-only |
可选 缺省情况下,发送BGP更新报文时,携带私有自治系统号 |
||
l 应用路由策略,可以为匹配过滤条件的特定路由配置优先级。对于那些没有匹配的路由,使用缺省优先级。
l 在其它条件相同的情况下,MED较小的路由被优选作为自治系统的外部路由。
l 通常情况下,BGP会检查对等体发来的路由的AS_PATH属性,如果其中已存在本地AS编号,则BGP会忽略此路由,以免形成路由环路。
l 根据具体应用要求,可以配置虚拟AS编号。配置虚拟AS编号只能应用于EBGP对等体,可以将本地真实的AS编号隐藏,位于其他AS内的EBGP对等体只能看到这个虚拟AS编号。
l 替换AS_PATH属性中的AS编号命令仅在特定组网环境下使用,错误的配置会引起路由环路。
BGP网络的调整和优化主要包括以下几个方面。
(1) BGP时钟
当对等体间建立了BGP连接后,它们定时向对端发送Keepalive消息,以防止路由器认为BGP连接已中断。若路由器在设定的连接保持时间(Holdtime)内未收到对端的Keepalive消息或任何其它类型的报文,则认为此BGP连接已中断,从而断开此BGP连接。
路由器在与对等体建立BGP连接时,将比较双方保持时间,以数值较小者做为协商后的保持时间。
(2) 控制从对等体/对等体组接收的路由前缀数量
通过限制从指定对等体/对等体组接收的路由前缀数量,控制本地路由表的规模,达到优化本地路由器系统性能、保护本地路由器的作用。
路由器开启了此功能后,当接收到的路由前缀数量大于路由器上配置的路由前缀数量时,路由器自动断开与对等体/对等体组的连接。
(3) 复位BGP连接
BGP的选路策略改变后,为了使新的策略生效,必须复位BGP连接,但这样会造成短暂的BGP连接中断。交换机支持BGP路由刷新(Route-refresh)功能。在所有路由器支持路由刷新功能的情况下,如果BGP的路由策略发生了变化,本地路由器会向对等体发布路由刷新消息,收到此消息的对等体会将其路由信息重新发给本地BGP路由器。这样,在不中断BGP连接的情况下,就可以对BGP路由表进行动态更新,并应用新的策略。
如果网络中有不支持Route-refresh的路由器,只能通过过执行refresh bgp命令手工对BGP连接进行复位。BGP复位会造成短暂的BGP连接中断。
(4) BGP验证
BGP使用TCP做为传输层协议,为提高BGP的安全性,可以在建立TCP连接时进行MD5认证。但BGP的MD5认证并不能对BGP报文认证,它只是为TCP连接配置MD5认证密码,由TCP完成认证。如果认证失败,则不建立TCP连接。
在调整BGP的时钟之前,需配置BGP基本功能;
在配置BGP时钟和验证之前,需要准备以下数据:
l BGP定时器的值
l 发送更新报文的时间间隔
l MD5验证密码
表5-13 调整和优化BGP网络
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图 |
bgp as-number |
- |
|
配置BGP定时器 |
配置BGP的存活时间与保持时间间隔 |
timer keepalive keepalive-interval hold holdtime-interval |
可选 缺省情况下,存活时间为60秒,保持时间为180秒。使用timer命令配置的定时器比使用peer timer命令配置的定时器优先级要低 |
peer { group-name | ip-address } timer keepalive keepalive-interval hold holdtime-interval |
|||
配置对等体组的发送同一路由更新报文的时间间隔 |
peer group-name route-update-interval seconds |
可选 缺省情况下,向IBGP对等体发送同一路由更新的时间间隔为15秒,向EBGP对等体发送同一路由更新的时间间隔为30秒 |
|
配置从BGP对等体/对等体组接收的路由前缀数量 |
peer { group-name | ip-address } route-limit prefix-number [ { alert-only | reconnect reconnect-time } | percentage-value ] * |
可选 缺省情况下,没有限制从BGP对等体/对等体组接收的路由前缀数量 |
|
手工对BGP连接进行软复位 |
return |
- |
|
refresh bgp { all | ip-address | group group-name } [ multicast ] { import | export } |
可选 |
||
system-view |
重新进入BGP视图 |
||
bgp as-number |
|||
配置BGP建立TCP连接时进行MD5认证 |
peer { group-name | ip-address } password { cipher | simple } password |
可选 缺省情况下,BGP在建立TCP连接时不进行MD5认证 |
l 合理的最大Keepalive消息发送时间间隔为保持时间的三分之一,且该发送时间间隔不能小于1秒,因此,保持时间如果不为0,则最小为3秒。
l BGP软复位可以在不中断BGP连接的情况下重新刷新BGP路由表,并应用新的策略。
在大型BGP网络中,对等体的数目众多,配置和维护极为不便。使用对等体组可以降低管理的难度,还可以提高路由发布效率。根据对等体所在的AS是否相同,对等体组可分为IBGP对等体组和EBGP对等体组。对于EBGP对等体组,根据所包括的对等体是否属于同一个外部AS,又可分为纯EBGP对等体组和混合EBGP对等体组。
团体同样也可以简化路由策略的管理。但它比对等体组的管理范围要大得多,不受AS范围的限制。它是对多个BGP路由器的路由策略进行控制。
在AS内部,为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。当IBGP对等体数目很多时,建立全连接网的开销很大。使用路由反射器或者联盟,可以解决这个问题。在大规模的AS中,它们可以被同时使用。
在配置大型BGP网络之前,确保相邻节点的网络层互通;
在配置大型BGP网络之前,需要准备以下数据:
l 对等体组的类型、名称、所包括的对等体
l 如果使用团体,需要确定所应用的路由策略名称
l 如果使用路由反射器,需要确定各路由器的角色(客户机、非客户机)
l 如果使用联盟,需要确定联盟ID和子AS编号
表5-14 配置BGP对等体组
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP视图 |
bgp as-number |
- |
|
创建IBGP对等体组 |
创建IBGP对等体组 |
group group-name [ internal ] |
可选 如果不选择internal或external参数,则创建的是IBGP对等体组。可向组中加入多个对等体。系统会自动在BGP视图下创建该对等体,并配置其AS编号为本地AS编号 |
向对等体组中加入对等体 |
peer ip-address group group-name [ as-number as-number ] |
||
创建EBGP对等体组 |
创建EBGP对等体组 |
group group-name external |
可选 可向组中加入多个对等体。系统会自动在BGP视图下创建该对等体,并配置其AS编号为对等体组的AS编号 |
配置对等体组的AS编号 |
peer group-name as-number as-number |
||
向对等体组中加入对等体 |
peer ip-address group group-name [ as-number as-number ] |
||
创建混合EBGP对等体组 |
创建EBGP对等体组 |
group group-name external |
可选 可向组中加入多个对等体 |
向对等体组中加入对等体 |
peer ip-address group group-name [ as-number as-number ] |
||
结束与指定对等体/对等体组的会话 |
peer { group-name | ip-address } shutdown |
可选 |
l 创建IBGP对等体组不需要指定AS编号。
l 如果对等体组中已经存在对等体,则不能改变该对等体组的AS编号,也不能使用undo命令删除已指定的AS编号。
l 在混合EBGP对等体组中,需要单独指定各对等体的AS编号。
表5-15 配置BGP团体
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置向对等体发布团体属性 |
peer group-name advertise-community |
必选 缺省情况下,不将团体属性和扩展团体属性发布给任何对等体组 |
对向对等体组发布的路由指定路由策略 |
peer group-name route-policy route-policy-name export |
必选 缺省情况下,不指定对等体组的路由策略 |
l 配置BGP团体时,必须使用路由策略来定义具体的团体属性,然后在发布路由信息时应用此路由策略。
l 关于路由策略的配置,请参见“IP路由策略配置”中的配置部分
表5-16 配置BGP路由反射器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置路由反射器及其客户 |
peer group-name reflect-client |
必选 缺省情况下,没有配置路由反射器及其客户 |
配置客户机之间的路由反射功能 |
reflect between-clients |
可选 缺省情况下,允许客户到客户的路由反射 |
配置路由反射器的集群ID |
reflector cluster-id cluster-id |
可选 缺省情况下,每个路由反射器是使用自己的路由ID作为集群ID |
l 通常情况下,路由反射器的客户之间不要求是全连接的,路由缺省通过反射器从一个客户反射到其它客户;如果客户之间是全连接的,可以禁止客户间的反射,以便减少开销。
l 通常,一个集群里只有一个路由反射器。此时是由反射器的路由器ID来识别该集群的。配置多个路由反射器可提高网络的稳定性。如果一个集群中配有多个路由反射器,请使用相关命令为所有的路由反射器配置同样的集群ID,以避免路由环路。
表5-17 配置BGP联盟
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入BGP视图 |
bgp as-number |
- |
配置联盟ID |
confederation id as-number |
必选 缺省情况下,未配置联盟的ID |
配置联盟包含的其他所有的子自治系统 |
confederation peer-as as-number&<1-32> |
必选 缺省情况下,未配置属于联盟的子自治系统 |
配置联盟的兼容性 |
confederation nonstandard |
可选 缺省情况下,配置的联盟与RFC1965一致 |
l 一个联盟最多可包括32个子自治系统。配置属于联盟的子自治系统时使用的as-number在联盟内部有效。
l 如果其他路由器的联盟实现机制不同于RFC标准,可以配置相关命令,以便和非标准的设备兼容。
在完成上述配置后,执行display命令可以显示配置后BGP的运行情况,通过查看显示信息验证配置的效果。
表5-18 BGP配置显示
操作 |
命令 |
说明 |
查看对等体组信息 |
display bgp [ multicast ] group [ group-name ] |
display命令可以在任意视图下执行 |
查看BGP发布的路由信息 |
display bgp [ multicast ] network |
|
查看AS路径信息 |
display bgp paths [ as-regular-expression ] |
|
查看BGP对等体信息 |
display bgp [ multicast ] peer [ [ ip-address ] verbose ] |
|
查看BGP路由表中的信息 |
display bgp [ multicast ] routing [ ip-address [ mask ] ] |
|
查看与指定AS路径过滤列表匹配的路由 |
display bgp [ multicast ] routing as-path-acl acl-number |
|
查看CIDR路由信息 |
display bgp [ multicast ] routing cidr |
|
查看指定BGP团体的路由信息 |
display bgp [ multicast ] routing community [ aa:nn&<1-13> ] [ no-export-subconfed | no-advertise | no-export ]* [ whole-match ] |
|
查看匹配指定BGP团体列表的路由 |
display bgp [ multicast ] routing community-list community-list-number [ whole-match ] |
|
查看BGP衰减的路由信息 |
||
查看源AS不一致的路由 |
display bgp [ multicast ] routing different-origin-as |
|
查看路由振荡统计信息 |
display bgp routing flap-info [ regular-expression as-regular-expression | as-path-acl acl-number | network-address [ mask [ longer-match ] ] ] |
|
查看向指定的BGP对等体发送或者从BGP对等体收到的路由信息 |
display bgp [ multicast ] routing peer ip-address { advertised | received | dampened } [ network-address [ mask ] | statistic ] display bgp [ multicast ] routing peer ip-address regular-expression as-regular-expression |
|
查看匹配AS正则表达式的路由信息 |
display bgp [ multicast ] routing regular-expression as-regular-expression |
|
显示BGP的路由统计信息 |
display bgp [ multicast ] routing statistic |
当BGP路由策略或协议发生变化后,如果需要通过复位BGP连接使新的配置生效。
操作 |
命令 |
说明 |
复位所有BGP连接 |
reset bgp all |
reset命令在用户视图下执行 |
复位与指定对等体的BGP连接 |
reset bgp ip-address [ flap-info ] |
|
复位与指定对等体组的BGP连接 |
reset bgp group group-name |
执行reset命令可以清除BGP相关统计信息。
操作 |
命令 |
说明 |
清除路由的衰减信息并释放被抑制的路由 |
reset bgp dampening [ network-address [ mask ] ] |
reset命令在用户视图下执行 |
清除路由的振荡统计信息 |
reset bgp flap-info [ regular-expression as-regular-expression | as-path-acl acl-number | ip-address [ mask ] ] |
某用户拥有一个大型AS,AS中运行BGP协议。随着AS规模的增长,IBGP对等体数量激增,用于BGP通信的网络资源亦随之增加。用户希望不影响设备工作性能条件下,削减IBGP对等体数量,降低BGP对设备CPU和网络资源的消耗。
根据用户需求,选择应用BGP自治系统联盟属性实现用户需求。
根据用户需求,设计如图5-14所示网络拓扑图。
设备 |
接口 |
IP地址 |
AS |
Switch A |
Vlan-int 10 |
172.68.10.1/24 |
100 |
Switch B |
Vlan-int 10 |
172.68.10.2/24 |
|
Switch C |
Vlan-int 10 |
172.68.10.3/24 |
|
|
Vlan-int 20 |
172.68.1.1/24 |
|
|
Vlan-int 30 |
156.10.1.1/24 |
|
Switch D |
Vlan-int 20 |
172.68.1.2/24 |
|
Switch E |
Vlan-int 30 |
156.10.1.2/24 |
200 |
将AS 100划分为三个子自治系统,分别为AS 1001,AS 1002,AS 1003;
l AS 1001,AS 1002,AS 1003之间运行EBGP;
l AS 1001,AS 1002,AS 1003内部建立全连接,运行IBGP;
l AS 100,AS 200之间运行EBGP。
# 配置Switch A。
<SwitchA> system-view
[SwitchA] bgp 1001
[SwitchA-bgp] confederation id 100
[SwitchA-bgp] confederation peer-as 1002 1003
[SwitchA-bgp] group confed1002 external
[SwitchA-bgp] peer 172.68.10.2 group confed1002 as-number 1002
[SwitchA-bgp] group confed1003 external
[SwitchA-bgp] peer 172.68.10.3 group confed1003 as-number 1003
# 配置Switch B。
<SwitchB> system-view
[SwitchB] bgp 1002
[SwitchB-bgp] confederation id 100
[SwitchB-bgp] confederation peer-as 1001 1003
[SwitchB-bgp] group confed1001 external
[SwitchB-bgp] peer 172.68.10.1 group confed1001 as-number 1001
[SwitchB-bgp] group confed1003 external
[SwitchB-bgp] peer 172.68.10.3 group confed1003 as-number 1003
# 配置Switch C。
<SwitchC> system-view
[SwitchC] bgp 1003
[SwitchC-bgp] confederation id 100
[SwitchC-bgp] confederation peer-as 1001 1002
[SwitchC-bgp] group confed1001 external
[SwitchC-bgp] peer 172.68.10.1 group confed1001 as-number 1001
[SwitchC-bgp] group confed1002 external
[SwitchC-bgp] peer 172.68.10.2 group confed1002 as-number 1002
[SwitchC-bgp] group ebgp200 external
[SwitchC-bgp] peer 156.10.1.2 group ebgp200 as-number 200
[SwitchC-bgp] group ibgp1003 internal
[SwitchC-bgp] peer 172.68.1.2 group ibgp1003
某用户拥有一个大型AS,AS中运行BGP协议。随着AS规模的增长,IBGP对等体数量激增,用于BGP通信的网络资源亦随之增加。用户希望不影响设备工作性能条件下,削减IBGP对等体数量,降低BGP对设备CPU和网络资源的消耗。另外,该AS中,IBGP对等体之间连接采用部分互联。
根据用户需求和用户网络环境,选择BGP路由反射器方案满足用户需求。
根据用户需求,设计如图5-15所示网络拓扑图。
图5-15 配置BGP路由反射器的组网图
设备 |
接口 |
IP地址 |
AS |
Switch A |
Vlan-int 100 |
1.1.1.1/8 |
100 |
|
Vlan-int 2 |
192.1.1.1/24 |
|
Switch B |
Vlan-int 2 |
192.1.1.2/24 |
200 |
|
Vlan-int 3 |
193.1.1.2/24 |
|
Switch C |
Vlan-int 3 |
193.1.1.1/24 |
|
|
Vlan-int 4 |
194.1.1.1/24 |
|
Switch D |
Vlan-int 4 |
194.1.1.2/24 |
l AS 100与AS 200对等体之间运行EBGP,通告1.0.0.0/8网段;
l AS 200中对等体之间运行IBGP,AS网络拓扑采用星型拓扑结构;中央设备作为路由反射器,其他设备作为客户机。
(1) 配置Switch A
<SwitchA> system-view
[SwitchA] interface Vlan-interface 2
[SwitchA-Vlan-interface2] ip address 192.1.1.1 255.255.255.0
[SwitchA-Vlan-interface2] quit
[SwitchA] interface Vlan-interface 100
[SwitchA-Vlan-interface100] ip address 1.1.1.1 255.0.0.0
[SwitchA-Vlan-interface100] quit
[SwitchA] bgp 100
[SwitchA-bgp] group ex external
[SwitchA-bgp] peer 192.1.1.2 group ex as-number 200
[SwitchA-bgp] network 1.0.0.0 255.0.0.0
(2) 配置Switch B
# 配置VLAN接口的IP地址。
<SwitchB> system-view
[SwitchB] interface Vlan-interface 2
[SwitchB-Vlan-interface2] ip address 192.1.1.2 255.255.255.0
[SwitchB-Vlan-interface2] quit
[SwitchB] interface Vlan-interface 3
[SwitchB-Vlan-interface3] ip address 193.1.1.2 255.255.255.0
[SwitchB-Vlan-interface3] quit
# 配置BGP对等体。
[SwitchB] bgp 200
[SwitchB-bgp] group ex external
[SwitchB-bgp] peer 192.1.1.1 group ex as-number 100
[SwitchB-bgp] group in internal
[SwitchB-bgp] peer 193.1.1.1 group in
(3) 配置Switch C
# 配置VLAN接口的IP地址。
<SwitchC> system-view
[SwitchC] interface Vlan-interface 3
[SwitchC-Vlan-interface3] ip address 193.1.1.1 255.255.255.0
[SwitchC-Vlan-interface3] quit
[SwitchC] interface vlan-Interface 4
[SwitchC-Vlan-interface4] ip address 194.1.1.1 255.255.255.0
[SwitchC-Vlan-interface4] quit
# 配置BGP对等体及路由反射器。
[SwitchC] bgp 200
[SwitchC-bgp] group rr internal
[SwitchC-bgp] peer rr reflect-client
[SwitchC-bgp] peer 193.1.1.2 group rr
[SwitchC-bgp] peer 194.1.1.2 group rr
(4) 配置Switch D
# 配置VLAN接口的IP地址。
<SwitchD> system-view
[SwitchD] interface Vlan-interface 4
[SwitchD-Vlan-interface4] ip address 194.1.1.2 255.255.255.0
[SwitchD-Vlan-interface4] quit
# 配置BGP对等体。
[SwitchD] bgp 200
[SwitchD-bgp] group in internal
[SwitchD-bgp] peer 194.1.1.1 group in
在Switch B上用display bgp routing命令查看BGP路由表。注意:Switch B已知道了网络1.0.0.0的存在。
在Switch D上用display bgp routing命令查看BGP路由表。注意:Switch D也知道网络1.0.0.0的存在。
某用户网络由两个AS组成,两个AS通过BGP实现网络互通,其中一个AS运行OSPF。
用户需求:控制从AS 200到AS 100的数据转发路径。
根据用户需求,可在如下方案中任选其一:
l 选择BGP的MED属性控制数据从AS 200到AS 100时的转发路径;
l 选择BGP的LOCAL_PREF属性控制数据从AS 200到AS 100时的转发路径。
根据用户需求,设计如图5-16所示网络拓扑图。
图5-16 配置BGP路径选择的组网图
设备 |
接口 |
IP地址 |
AS |
Switch A |
Vlan-int 101 |
1.1.1.1/8 |
100 |
|
Vlan-int 2 |
192.1.1.1/24 |
|
|
Vlan-int 3 |
193.1.1.1/24 |
|
Switch B |
Vlan-int 2 |
192.1.1.2/24 |
200 |
|
Vlan-int 4 |
194.1.1.2/24 |
|
Switch C |
Vlan-int 3 |
193.1.1.2/24 |
|
|
Vlan-int 5 |
195.1.1.2/24 |
|
Switch D |
Vlan-int 4 |
194.1.1.1/24 |
|
|
Vlan-int 5 |
195.1.1.1/24 |
|
l AS 100与AS 200对等体之间运行EBGP,通告1.0.0.0/8网段;
l AS 200运行OSPF实现网络互通;
l Switch D与Switch B,Switch D与 Switch C对等体之间运行IBGP;
l 在Switch A上应用路由策略,修改发布的路由信息MED属性,控制Switch D发出的数据进入AS 100时转发路径为:Switch D-Switch C-Switch A。
l 在Switch C上应用路由策略,修改发布路由信息的LOCAL_PREF属性,控制Switch D发出的数据进入AS 100时转发路径为:Switch D-Switch C-Switch A。
(1) 配置SwitchA
# 配置VLAN接口IP地址。
<SwitchA> system-view
[SwitchA] interface Vlan-interface 2
[SwitchA-Vlan-interface2] ip address 192.1.1.1 255.255.255.0
[SwitchA-Vlan-interface2] quit
[SwitchA] interface Vlan-interface 3
[SwitchA-Vlan-interface3] ip address 193.1.1.1 255.255.255.0
[SwitchA-Vlan-interface3] quit
# 启动BGP。
[SwitchA] bgp 100
# 通告1.0.0.0/8网段路由信息。
[SwitchA-bgp] network 1.0.0.0
# 配置对等体。
[SwitchA-bgp] group ex192 external
[SwitchA-bgp] peer 192.1.1.2 group ex192 as-number 200
[SwitchA-bgp] group ex193 external
[SwitchA-bgp] peer 193.1.1.2 group ex193 as-number 200
[SwitchA-bgp] quit
# 创建ACL 2000,允许目的地址为1.0.0.0/8的路由信息通过。
[SwitchA] acl number 2000
[SwitchA-acl-basic-2000] rule permit source 1.0.0.0 0.255.255.255
[SwitchA-acl-basic-2000] rule deny source any
[SwitchA-acl-basic-2000] quit
# 创建路由策略apply_med_50,匹配模式为允许,如果路由信息通过ACL 2000的过滤,则设置其MED值为50。
[SwitchA] route-policy apply_med_50 permit node 10
[SwitchA-route-policy] if-match acl 2000
[SwitchA-route-policy] apply cost 50
[SwitchA-route-policy] quit
# 创建路由策略apply_med_100,匹配模式为允许,如果路由信息通过ACL 2000的过滤,则设置其MED值为100。
[SwitchA] route-policy apply_med_100 permit node 10
[SwitchA-route-policy] if-match acl 2000
[SwitchA-route-policy] apply cost 100
[SwitchA-route-policy] quit
# 对发布给对等体组ex193(对等体193.1.1.2)的路由信息应用路由策略apply_med_50;对发布给对等体组ex192(对等体192.1.1.2)的路由信息应用路由策略apply_med_100。
[SwitchA] bgp 100
[SwitchA-bgp] peer ex193 route-policy apply_med_50 export
[SwitchA-bgp] peer ex192 route-policy apply_med_100 export
(2) 配置Switch B
# 配置VLAN接口IP地址。
<SwitchB> system-view
[SwitchB] interface vlan 2
[SwitchB-Vlan-interface2] ip address 192.1.1.2 255.255.255.0
[SwitchB-Vlan-interface2] quit
[SwitchB] interface Vlan-interface 4
[SwitchB-Vlan-interface4] ip address 194.1.1.2 255.255.255.0
[SwitchB-Vlan-interface4] quit
# 配置OSPF。
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] network 192.1.1.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
# 启动BGP,创建对等体组,并向对等体组添加对等体。
[SwitchB] bgp 200
[SwitchB-bgp] undo synchronization
[SwitchB-bgp] group ex external
[SwitchB-bgp] peer 192.1.1.1 group ex as-number 100
[SwitchB-bgp] group in internal
[SwitchB-bgp] peer 194.1.1.1 group in
[SwitchB-bgp] peer 195.1.1.2 group in
(3) 配置Switch C
# 配置VLAN接口IP地址。
<SwitchC> system-view
[SwitchC] interface Vlan-interface 3
[SwitchC-Vlan-interface3] ip address 193.1.1.2 255.255.255.0
[SwitchC-Vlan-interface3] quit
[SwitchC] interface Vlan-interface 5
[SwitchC-Vlan-interface5] ip address 195.1.1.2 255.255.255.0
[SwitchC-Vlan-interface5] quit
# 配置OSPF。
[SwitchC] ospf
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 193.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
# 启动BGP,创建对等体组,并向对等体组添加对等体。
[SwitchC] bgp 200
[SwitchC-bgp] undo synchronization
[SwitchC-bgp] group ex external
[SwitchC-bgp] peer 193.1.1.1 group ex as-number 100
[SwitchC-bgp] group in internal
[SwitchC-bgp] peer 195.1.1.1 group in
[SwitchC-bgp] peer 194.1.1.2 group in
(4) 配置Switch D
# 配置VLAN接口IP地址。
<SwitchD> system-view
[SwitchD] interface Vlan-interface 4
[SwitchD-Vlan-interface4] ip address 194.1.1.1 255.255.255.0
[SwitchD-Vlan-interface4] quit
[SwitchD] interface Vlan-interface 5
[SwitchD-Vlan-interface5] ip address 195.1.1.1 255.255.255.0
[SwitchD-Vlan-interface5] quit
# 配置OSPF。
[SwitchD] ospf
[SwitchD-ospf-1] area 0
[SwitchD-ospf-1-area-0.0.0.0] network 194.1.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.0] network 195.1.1.0 0.0.0.255
[SwitchD-ospf-1-area-0.0.0.0] network 4.0.0.0 0.255.255.255
[SwitchD-ospf-1-area-0.0.0.0] quit
[SwitchD-ospf-1] quit
# 启动BGP,创建对等体组,并向对等体组添加对等体。
[SwitchD] bgp 200
[SwitchD-bgp] undo synchronization
[SwitchD-bgp] group in internal
[SwitchD-bgp] peer 195.1.1.2 group in
[SwitchD-bgp] peer 194.1.1.2 group in
l 为使配置生效,所有的BGP邻居需要运行reset bgp all命令。
l 通过上述配置后,由于Switch C学到的路由1.0.0.0的MED属性比Switch B学到的更小,Switch D优选来自Switch C的路由1.0.0.0。
l 如果在配置Switch A时,不配置Switch A的MED属性,而在Switch C上配置本地优先级如下:
# 创建ACL 2000,允许目的地址为1.0.0.0/8的路由信息通过。
[SwitchC] acl number 2000
[SwitchC-acl-basic-2000] rule permit source 1.0.0.0 0.255.255.255
[SwitchC-acl-basic-2000] rule deny source any
[SwitchC-acl-basic-2000] quit
# 创建路由策略localpref,节点序号为10,匹配模式为允许,如果路由信息通过ACL 2000的过滤,则设置其本地优先级为200。
[SwitchC] route-policy localpref permit node 10
[SwitchC-route-policy] if-match acl 2000
[SwitchC-route-policy] apply local-preference 200
[SwitchC-route-policy] quit
# 创建路由策略localpref,节点序号为20,匹配模式为允许,设置路由信息本地优先级值为100。
[SwitchC] route-policy localpref permit node 20
[SwitchC-route-policy] apply local-preference 100
[SwitchC-route-policy] quit
# 对从对等体193.1.1.1接收的路由信息应用路由策略localpref。
[SwitchC] bgp 200
[SwitchC-bgp] peer 193.1.1.1 route-policy localpref import
此时,由于Switch C学到的路由1.0.0.0的LOCAL_PREF属性值为200,比Switch B学到的路由1.0.0.0的LOCAL_PREF属性值(Switch B没有配置LOCAL_PREF属性,默认为100)更大,Switch D依然优选来自Switch C的路由1.0.0.0。
使用display bgp peer命令查看BGP对等体的信息,发现与对等体连接状态无法转换到Established状态。
BGP对等体的建立条件:
需要建立对等体的两端使用179端口建立TCP会话;
需要建立对等体的两端能够正确交换Open消息。
(1) 用display current-configuration命令检查邻居的AS编号配置是否正确。
(2) 用display bgp peer命令检查邻居的IP地址是否正确。
(3) 如果使用Loopback接口,检查是否配置了peer connect-interface命令。
(4) 如果是物理上非直连的EBGP邻居,检查是否配置了peer ebgp-max-hop命令。
(5) 检查路由表中是否存在到邻居的可用路由。
(6) 使用命令ping -a ip-address检查TCP连接是否正常。
(7) 检查是否配置了禁止TCP端口179的ACL。
文中所述的路由器代表了一般意义下的路由器,以及运行了路由协议的以太网交换机。
路由策略(Routing Policy)是为了控制数据报文的转发路径而修改路由信息的技术,主要通过改变路由属性(包括可达性)来实现。
路由器在发布或接收路由信息时,可能需要实施一些策略,以便对路由信息进行过滤,比如只接收或发布一部分满足给定条件的路由信息;一种路由协议(如RIP)可能需要引入(import)其它的路由协议(如OSPF)发现的路由信息,从而丰富自己的路由信息;路由器在引入其它路由协议的路由信息时,可能只需要引入一部分满足条件的路由信息,并控制所引入的路由信息的某些属性,以使其满足本协议的要求。
为实现路由策略,首先要定义将要实施路由策略的路由信息的特征,即定义一组匹配规则,可以将路由信息中的不同属性作为匹配依据进行设置,如目的地址、发布路由信息的路由器地址等。匹配规则可以预先设置好,然后再将它们应用于路由的发布、接收和引入等过程的路由策略中。
路由协议可以引用访问控制列表、IP地址前缀列表、AS路径访问列表、团体属性列表和路由策略几种过滤器。下面对各种过滤器逐一进行介绍。
用户在定义ACL时指定一个IP地址或子网的范围,用于匹配路由信息的目的网络地址或下一跳地址字段。应用路由策略时,引用ACL对路由信息进行过滤。
ACL的详细内容请参见“ACL”部分的介绍。
ip-prefix的作用类似于ACL,但比它更为灵活,且更易于为用户理解。使用ip-prefix过滤路由信息时,其匹配对象为路由信息的目的地址字段;另外在ip-prefix中,用户可以指定gateway选项,指明只接收某些路由器发布的路由信息。
一个ip-prefix由前缀列表名标识,每个前缀列表可以包含多个表项。每个表项以网络前缀的形式,独立指定一个匹配范围,并用一个index-number来标识。index-number指明了在ip-prefix中进行匹配检查的顺序。
每个表项之间是“或”的关系,在匹配的过程中,路由器按升序依次检查由index-number标识的各个表项。只要有某一表项满足条件,就意味着通过该ip-prefix的过滤(不会进入下一个表项的测试)。
AS路径访问列表as-path仅用于BGP。BGP的路由信息包中,包含一个自治系统路径域(在BGP交换路由信息的过程中,路由信息经过的自治系统路径会记录在这个域中)。as-path就是针对自治系统路径域进行匹配。
团体属性列表community-list仅用于BGP。BGP的路由信息包中,包含一个COMMUNITY属性域,用来标识一个团体。community-list就是针对团体属性域进行匹配。
用于匹配给定路由信息的某些属性,并在条件满足后对该路由信息的某些属性进行设置。
一个路由策略可以由多个节点(node)构成,每个节点是进行匹配测试的一个单元。匹配过程中,路由器按升序依次对节点(node-number)进行匹配。每个节点可以由一组if-match和apply子句组成。if-match子句定义匹配规则,匹配对象是路由信息的一些属性。同一节点中的不同if-match子句是“与”的关系,只有满足节点内所有if-match子句指定的匹配条件,才能通过该节点的匹配测试。apply子句指定动作,也就是在通过节点的匹配测试后所执行的动作——对路由信息的一些属性进行设置。
一个路由策略的不同节点间是“或”的关系,系统依次检查路由策略的各个节点,如果通过了路由策略的某一节点,就意味着通过该路由策略的匹配测试(不进入下一个节点的测试)。
表6-1 IP路由策略配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置IP路由策略 |
创建一个路由策略 |
必选 |
|
配置If-match子句和apply子句 |
必选 |
||
配置IP地址前缀列表 |
必选 |
||
配置AS路径列表 |
必选 |
||
配置团体属性列表 |
必选 |
路由策略用来匹配给定的路由信息或者路由信息的某些属性,并在条件满足时改变这些路由信息的属性。匹配条件可以使用前面几种过滤列表。
一个路由策略可由多个节点构成,每个节点又分为:
l If-match子句:定义匹配规则,即路由信息通过当前路由策略所需满足的条件,匹配对象是路由信息的某些属性。
l Apply子句:指定动作,也就是在满足由if-match子句指定的过滤条件后所执行的一些配置命令,对路由的某些属性进行修改。
在配置路由策略之前,需完成以下任务:
l 配置过滤列表
l 配置路由协议
在配置之前,需要准备以下数据:
l 路由策略的名称、节点序号
l 匹配条件
l 要修改的路由属性值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建路由策略 |
route-policy route-policy-name { permit | deny } node node-number |
必选 缺省情况下,不创建路由策略 |
l permit指定节点的匹配模式为允许。当路由项匹配该节点的规则后,将执行该节点的apply子句,不进入下一个节点的测试;如果路由项没有匹配该节点的规则,将进入下一个节点继续测试。
l deny指定节点的匹配模式为拒绝,这时apply子句不会被执行。当路由项满足该节点的所有if-match子句时,将不执行apply子句,不进入下一个节点;如果路由项不满足该节点的if-match子句,将进入下一个节点继续测试。
l 如果路由策略中定义了一个以上的节点,则各节点中至少应该有一个节点的匹配模式是permit。当路由策略用于路由信息过滤时,如果某路由信息没有通过任一节点,则认为该路由信息没有通过该路由策略。如果路由策略的所有节点都是deny模式,则没有路由信息能通过该路由策略。
表6-3 配置If-match子句和apply子句
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入该路由策略视图 |
route-policy route-policy-name { permit | deny } node node-number |
- |
匹配BGP路由信息的AS路径域 |
if-match as-path as-path-number |
可选 |
匹配BGP路由信息的团体属性 |
if-match community { basic-community-number [ whole-match ] | adv-community-number } |
可选 |
匹配路由策略的IP地址范围 |
if-match { acl acl-number | ip-prefix ip-prefix-name } |
可选 缺省情况下,不匹配路由策略的IP地址范围 |
匹配路由信息的度量值 |
if-match cost value |
可选 缺省情况下,不匹配路由信息的度量值 |
匹配路由信息的出接口 |
if-match interface interface-type interface-number |
可选 缺省情况下,不匹配路由信息的出接口 |
匹配路由信息下一跳 |
if-match ip next-hop { acl acl-number | ip-prefix ip-prefix-name } |
可选 缺省情况下,不匹配路由信息下一跳地址 |
匹配OSPF路由信息的标记域 |
if-match tag value |
可选 缺省情况下,不匹配OSPF路由信息的标记域 |
在BGP路由信息的as-path系列前加入指定的AS号 |
apply as-path as-number&<1-10> |
可选 |
在BGP路由信息中配置团体属性 |
apply community { { aa:nn&<1-13> | no-export-subconfed | no-export | no-advertise }* [ additive ] | none } |
可选 |
配置路由信息的下一跳地址 |
apply ip next-hop ip-address |
可选 |
配置BGP路由信息的本地优先级 |
apply local-preference local-preference |
可选 |
设置路由信息的度量值 |
apply cost value |
可选 缺省情况下,不设置路由信息的路由度量值 |
配置路由信息的路由权类型 |
apply cost-type [ internal | external ] |
可选 |
配置BGP路由信息的路由源 |
apply origin { igp | egp as-number | incomplete } |
可选 |
设置路由信息的标记域 |
apply tag value |
可选 缺省情况下,不设置路由信息的标记域 |
l 一个路由策略可以由多个节点(node)构成,不同节点之间是“或”的关系。路由器以升序依次检查各个节点,如果通过了其中一节点,就意味着通过该策略,不再对其他节点进行匹配测试。
l 对于同一个路由策略的节点,在匹配的过程中,各个if-match子句间是“与”的关系,即路由信息必须同时满足所有匹配条件,才称作匹配该节点的规则。
l 如不指定if-match子句,则所有路由信息都会通过该节点的过滤。
l 在一个节点中,可以没有If-math子句,也可以有多个If-match子句。
l 每个节点可以由一组if-match和apply子句组成。if-match子句定义匹配规则, apply子句指定动作,也就是在通过节点的匹配后,对路由信息的一些属性进行设置。
IP地址前缀列表的作用类似于ACL,但更为灵活,且更易于理解。IP地址前缀列表在应用于路由信息的过滤时,其匹配对象为路由信息的目的地址信息。
在配置过滤列表之前,需要准备以下数据:
l 前缀列表名称
l 匹配的地址范围
IP地址前缀列表由列表名标识,每个前缀列表可以包含多个表项。各表项以网络前缀的形式,独立指定一个匹配范围,并使用索引号标识。比如下面这个名称为abcd的IP地址前缀列表:
l ip ip-prefix abcd index 10 permit 1.0.0.0 8
l ip ip-prefix abcd index 20 permit 2.0.0.0 8
在匹配过程中,系统按索引号升序依次检查各个表项,只要有一个表项满足条件,就认为通过该过滤列表,不再去匹配其他表项。
表6-4 配置IP地址前缀列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置IP地址前缀列表 |
ip ip-prefix ip-prefix-name [ index index-number ] { permit | deny } network len [ greater-equal greater-equal | less-equal less-equal ] |
必选 缺省情况下,不指定地址前缀列表 |
如果所有表项都是deny模式,则任何路由都不能通过该过滤列表。建议在多条deny模式的表项后定义一条permit模式的表项,形式如下:
ip ip-prefix ip-prefix-name index index-number permit 0.0.0.0 0 less-equal 32
允许其他所有的路由信息通过。
BGP的路由信息包中,包含一个自治系统路径域。可以使用AS路径列表匹配BGP路由信息的自治系统路径域,过滤掉不符合条件的路由信息。
表6-5 配置AS路径列表
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置AS路径列表 |
ip as-path-acl acl-number { permit | deny } as-regular-expression |
可选 缺省情况下,没有定义AS路径列表 |
在BGP中,团体属性是可选过渡属性。某些团体属性是公认的,具有全球意义,一般称为标准的团体属性;某些则是用于特殊用途,用户也可以定义扩展的团体属性。
一条路由可以有一个以上的团体属性。一条路由中多个团体属性的发言者可按照一个、几个或全部属性行动。路由器在传递路由到其它对等体之前可以选择是否改变团体属性。
团体属性列表用于标识团体信息,分为基本团体访问列表和高级团体访问列表,前者的取值范围为1~99,后者的取值范围为100~199。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置基本团体属性列表 |
ip community-list basic-comm-list-number { permit | deny } [ aa:nn&<1-12> | internet | no-export-subconfed | no-advertise | no-export ]* |
可选 缺省情况下,未配置BGP团体属性列表 |
配置高级团体属性列表 |
ip community-list adv-comm-list-number { permit | deny } comm-regular-expression |
可选 缺省情况下,未配置BGP团体属性列表 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后IP路由策略的运行情况,用户可以通过查看显示信息验证配置的效果。
操作 |
命令 |
说明 |
显示Route-policy |
display route-policy [ route-policy-name ] |
display命令可在任意视图下执行 |
显示IP地址前缀列表信息 |
display ip ip-prefix [ ip-prefix-name ] |
l 如图6-1所示,Switch A与Switch B通信,运行OSPF协议。Switch A的Router ID为1.1.1.1,Switch B的Router ID为2.2.2.2。
l 对Switch A上的OSPF路由进程进行配置,并配置静态路由。
l 配置路由策略,在引入静态路由时应用该路由策略,使三条静态路由部分引入、部分被屏蔽掉——20.0.0.0和40.0.0.0网段的路由被引入,30.0.0.0网段的路由则被屏蔽。
(1) 配置Switch A
# 配置接口的IP地址。
<SwitchA> system-view
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] ip address 10.0.0.1 255.0.0.0
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 200
[SwitchA-Vlan-interface200] ip address 12.0.0.1 255.0.0.0
[SwitchA-Vlan-interface200] quit
# 配置三条静态路由。
[SwitchA] ip route-static 20.0.0.0 255.0.0.0 12.0.0.2
[SwitchA] ip route-static 30.0.0.0 255.0.0.0 12.0.0.2
[SwitchA] ip route-static 40.0.0.0 255.0.0.0 12.0.0.2
# 启动OSPF协议,指定该接口所属区域号。
<SwitchA> system-view
[SwitchA] router id 1.1.1.1
[SwitchA] ospf
[SwitchA-ospf-1] area 0
[SwitchA-ospf-1-area-0.0.0.0] network 10.0.0.0 0.255.255.255
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1]quit
# 配置访问列表。
[SwitchA] acl number 2000
[SwitchA-acl-basic-2000] rule deny source 30.0.0.0 0.255.255.255
[SwitchA-acl-basic-2000] rule permit source any
[SwitchA-acl-basic-2000] quit
# 配置路由策略。
[SwitchA] route-policy ospf permit node 10
[SwitchA-route-policy] if-match acl 2000
[SwitchA-route-policy] quit
# 引入静态路由时应用路由策略。
[SwitchA] ospf
[SwitchA-ospf-1] import-route static route-policy ospf
(2) 配置Switch B
# 配置接口的IP地址:
<SwitchB> system-view
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] ip address 10.0.0.2 255.0.0.0
[SwitchB-Vlan-interface100] quit
# 启动OSPF协议,指定该接口所属区域号。
[SwitchB] router id 2.2.2.2
[SwitchB] ospf
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 10.0.0.0 0.255.255.255
[SwitchB-ospf-1-area-0.0.0.0] quit
[SwitchB-ospf-1] quit
(3) 在SwitchB上查看OSPF路由表,验证路由策略是否生效。
<SwitchB> display ospf routing
OSPF Process 1 with Router ID 2.2.2.2
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.0.0.0/8 1 Transit 10.0.0.2 1.1.1.1 0.0.0.0
Routing for ASEs
Destination Cost Type Tag NextHop AdvRouter
20.0.0.0/8 1 Type2 1 10.0.0.1 1.1.1.1
40.0.0.0/8 1 Type2 1 10.0.0.1 1.1.1.1
Total Nets: 3
Intra Area: 1 Inter Area: 0 ASE: 2 NSSA: 0
某公司网络规模较小,对网络收敛速度要求不高。网络中有两种业务,为了保证网络可靠性,每种业务均有主备链路。每种业务主链路互为另一种业务的备份链路,业务类型可以根据IP地址区分。如果主链路出现故障,能够实现动态备份,避免业务中断。
根据用户需求,设计如图6-2所示网络拓扑图。
设备 |
接口 |
IP地址 |
Switch A |
Vlan-int 2 |
2.2.2.1/8 |
|
Vlan-int 3 |
3.3.3.254/8 |
|
Vlan-int 10 |
1.1.1.254/8 |
Switch B |
Vlan-int 3 |
3.3.3.253/8 |
|
Vlan-int 6 |
6.6.6.5/8 |
|
Vlan-int 10 |
1.1.1.253/8 |
Switch C |
Vlan-int 1 |
192.168.0.39/24 |
|
Vlan-int 2 |
2.2.2.2/8 |
|
Vlan-int 6 |
6.6.6.6/8 |
OA Server |
|
1.1.1.1/32 |
Service Server |
|
3.3.3.3/32 |
Host |
|
192.168.0.9/24 |
l 根据用户需求,网络中选择RIP协议;
l OA Server业务主链路:Switch A <=> Switch C;备份链路:Switch B <=> Switch C;
l Service Server业务主链路:Switch B <=> Switch C;备份链路:Switch A <=> Switch C;
l 应用路由策略,控制Switch C接收路由信息的度量值(Cost),为OA Server业务、Service Server业务提供主备链路。
(1) 配置Switch A
# 创建VLAN,配置VLAN-int的IP地址,配置过程略。
# 配置RIP。
<SwitchA> system-view
[SwitchA] rip
[SwitchA-rip] network 1.0.0.0
[SwitchA-rip] network 2.0.0.0
[SwitchA-rip] network 3.0.0.0
(2) 配置Switch B
# 创建VLAN,配置VLAN-int的IP地址,配置过程略。
# 配置RIP。
<SwitchB> system-view
[SwitchB] rip
[SwitchB-rip] network 1.0.0.0
[SwitchB-rip] network 3.0.0.0
[SwitchB-rip] network 6.0.0.0
(3) 配置Switch C
# 创建VLAN,配置VLAN-int的IP地址,配置过程略。
# 定义前缀列表1,允许前缀IP地址为1.0.0.0/8;定义前缀列表2,允许前缀IP地址为3.0.0.0/8。
<SwitchC> system-view
[SwitchC] ip ip-prefix 1 index 10 permit 1.0.0.0 8
[SwitchC] ip ip-prefix 2 index 10 permit 3.0.0.0 8
# 创建路由策略in,节点序号为10,匹配模式为允许。定义if-match子句,如果路由信息的出接口为Vlan-interface2,并且通过前缀列表1的过滤,那么设置其Cost值为5。
[SwitchC] route-policy in permit node 10
[SwitchC-route-policy] if-match interface Vlan-interface2
[SwitchC-route-policy] if-match ip-prefix 1
[SwitchC-route-policy] apply cost 5
[SwitchC-route-policy] quit
# 创建路由策略in,节点序号为20,匹配模式为允许。定义if-match子句,如果路由信息的出接口为Vlan-interface2,并且通过前缀列表2的过滤,那么设置其Cost值为6。
[SwitchC] route-policy in permit node 20
[SwitchC-route-policy] if-match interface Vlan-interface2
[SwitchC-route-policy] if-match ip-prefix 2
[SwitchC-route-policy] apply cost 6
[SwitchC-route-policy] quit
# 创建路由策略in,节点序号为30,匹配模式为允许。定义if-match子句,如果路由信息的出接口为Vlan-interface6,并且通过前缀列表1的过滤,那么设置其Cost值为6。
[SwitchC] route-policy in permit node 30
[SwitchC-route-policy] if-match interface Vlan-interface6
[SwitchC-route-policy] if-match ip-prefix 1
[SwitchC-route-policy] apply cost 6
[SwitchC-route-policy] quit
# 创建路由策略in,节点序号为40,匹配模式为允许。定义if-match子句,如果路由信息的出接口为Vlan-interface6,并且通过前缀列表2的过滤,那么设置其Cost值为5。
[SwitchC] route-policy in permit node 40
[SwitchC-route-policy] if-match interface Vlan-interface6
[SwitchC-route-policy] if-match ip-prefix 2
[SwitchC-route-policy] apply cost 5
[SwitchC-route-policy] quit
# 创建路由策略in,节点序号为50,匹配模式为允许,允许所有的路由信息通过。
[SwitchC] route-policy in permit node 50
[SwitchC-route-policy] quit
# 配置RIP,并对接收的路由信息应用路由策略in。
[SwitchC] rip
[SwitchC-rip] network 1.0.0.0
[SwitchC-rip] network 3.0.0.0
[SwitchC-rip] network 6.0.0.0
[SwitchC-rip] filter-policy route-policy in import
(1) 当OA Server主链路工作正常时,数据转发路径
<SwitchC> display ip routing-table
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
1.0.0.0/8 RIP 100 5 2.2.2.1 Vlan-interface2
2.0.0.0/8 DIRECT 0 0 2.2.2.2 Vlan-interface2
2.2.2.2/32 DIRECT 0 0 127.0.0.1 InLoopBack0
3.0.0.0/8 RIP 100 5 6.6.6.5 Vlan-interface6
6.0.0.0/8 DIRECT 0 0 6.6.6.6 Vlan-interface6
6.6.6.6/32 DIRECT 0 0 127.0.0.1 InLoopBack0
127.0.0.0/8 DIRECT 0 0 127.0.0.1 InLoopBack0
127.0.0.1/32 DIRECT 0 0 127.0.0.1 InLoopBack0
192.168.0.0/24 DIRECT 0 0 192.168.0.39 Vlan-interface1
192.168.0.39/32 DIRECT 0 0 127.0.0.1 InLoopBack0
(2) 当OA Server主链路出现故障时(Switch A <=> Switch C之间链路down),数据转发路径
<SwitchC> display ip routing-table
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
1.0.0.0/8 RIP 100 6 6.6.6.5 Vlan-interface2
3.0.0.0/8 RIP 100 5 6.6.6.5 Vlan-interface6
6.0.0.0/8 DIRECT 0 0 6.6.6.6 Vlan-interface6
6.6.6.6/32 DIRECT 0 0 127.0.0.1 InLoopBack0
127.0.0.0/8 DIRECT 0 0 127.0.0.1 InLoopBack0
127.0.0.1/32 DIRECT 0 0 127.0.0.1 InLoopBack0
192.168.0.0/24 DIRECT 0 0 192.168.0.39 Vlan-interface1
192.168.0.39/32 DIRECT 0 0 127.0.0.1 InLoopBack0
(1) 配置路由策略过程中,当使用apply cost命令修改Cost值时:
l 配置的Cost值应该大于路由信息中原来的Cost值,避免网络拓扑存在环路时导致RIP产生路由环路;
l 如果配置Cost值大于16,则Cost值为16;
l 如果配置Cost值为0,则Cost值为原Cost值;
(2) 配置路由策略时,如果使用if-match interface命令匹配接口字段,匹配的是该路由信息的出接口字段;
(3) 配置路由策略时,建议在路由策略末尾配置一条没有规则的节点,匹配所有不符合该节点之前的路由信息;
(4) 如果路由策略中使用apply cost命令修改Cost值,当接收的RIP路由信息的Cost值等于16时,该路由信息不应用路由策略修改Cost值,即Cost值为16;
(5) filter-policy命令对引入的外部路由信息不进行过滤。
路由协议运行正常的情况下,路由策略不能正确的实现路由信息过滤。
路由策略不能正确实现对路由信息的过滤,大致有两种情况:
(1) 路由策略所有节点的匹配模式都配置为deny模式,没有任何路由信息通过路由策略的过滤;
(2) IP地址前缀列表的所有表项的匹配模式为deny模式,没有任何路由信息通过IP地址前缀列表的过滤。
(1) 使用display ip ip-prefix命令查看前缀列表的配置;
(2) 使用display route-policy命令查看路由策略的配置。
文中所述的路由器代表了一般意义下的路由器,以及运行了路由协议的以太网交换机。
在实际的组网应用中,路由表中的路由数量往往非常大,尤其是OSPF和BGP路由。当路由表占用过多内存时,会导致交换机性能下降。
为了解决这种矛盾, 交换机提供了一种对路由表规模进行控制的机制,通过监控系统当前空闲内存的大小,决定是否继续向路由表中增加新的路由及是否保持路由协议的连接。
通常情况下使用系统的默认值就可以满足要求,不建议用户自行改变配置,以避免配置不当导致的系统的稳定性和可用性降低。
造成路由表规模过于庞大的,通常是OSPF、BGP路由项,因此,交换机的路由容量限制只对OSPF、BGP路由有效,静态路由和RIP路由协议不受影响。路由容量限制功能通过控制交换机空闲内存大小的方式实现。
当交换机的空闲内存大小降低到设定的内存下限时,OSPF、BGP连接将被断开,相应的路由表项从路由表中删除,从而释放占用的内存。系统定期检查空闲内存的大小,当发现空闲内存恢复到安全值后:
l 如果此时交换机自动恢复断开功能处于开启状态,那么交换机将恢复断开的OSPF、BGP连接;
l 如果此时交换机自动恢复断开功能处于关闭状态,那么交换机将不再恢复已经断开的OSPF、BGP连接。
路由容量限制配置包括:
l 设置交换机内存的下限与安全值
l 开启/关闭交换机自动恢复断开功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
– |
设置交换机内存的下限与安全值 |
memory { safety safety-value | limit limit-value } * |
必选 缺省情况下: l safety-value缺省值为15 l limit-value缺省值为12 |
在配置时,safety-value必须大于limit-value。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启交换机自动恢复断开功能 |
memory auto-establish enable |
必选 缺省情况下,交换机的自动恢复断开功能处于开启状态 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
关闭交换机自动恢复断开功能 |
memory auto-establish disable |
必选 缺省情况下,交换机的自动恢复断开功能处于开启状态 |
如果关闭了自动恢复断开功能,则即使空闲内存已经超过了安全值,断开的OSPF、BGP连接也不会恢复,因此,请不要轻易使用该功能。
在完成上述配置后,执行display命令可以显示配置后的路由容量信息,用户可以通过查看显示信息验证配置的效果。
操作 |
命令 |
说明 |
查看路由容量相关的内存使用信息 |
display memory [ unit unit-id ] |
display命令可在任意视图下执行 |
查看路由容量相关的内存设置和状态信息 |
display memory limit |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!