侃侃EIGRP的SIA问题和STUB ROUTING
首先讲几条原则
(1)Queries are sent out when a route is lost and no feasible successor is available.
The lost route is now in active state.
(2)Queries are sent out to all neighboring routers on all interfaces except the interface to the successor.
(2)If the neighbors do not have the lost-route information, queries are sent out to their neighbors.
(3)The router has to get all the replies from the neighbors with an outstanding query before the router calculates the successor information.
(4)If any neighbor fails to reply to the query within three minutes by default, the route is SIA, and the router resets the neighbor that fails to reply.
(5)A solution for SIA is to limit the query range, also known as query scoping.
Sia问题解决方法:使用路由汇总限制query 包查询访问(<1>很好的ip地址规划 <2>如果明细路由不在路由表里面,但是却有汇总路由,query包就会在这里停止);缩短等待时间;在特定的网络拓扑(hub-and-spoke)下使用eigrp stub routing 特性.
When an EIGRP neighbor receives a query for a route, it behaves as follows:
· If the EIGRP topology table does not currently contain an entry for the route, then the router immediately replies to the query with an unreachable message, stating that there is no path for this route through this neighbor.
· If the EIGRP topology table lists the querying router as the successor for this route and a feasible successor exists, then the feasible successor is installed and the router immediately replies to the query.
· If the EIGRP topology table lists the querying router as the successor for this route and a feasible successor does not exist, then the router queries all of its EIGRP neighbors except those sent out the same interface as its former successor. The router will not reply to the querying router until it has
received a reply to all queries that it originated for this route.
· If the query was received from a neighbor that is not the successor for this destination, then the router
replies with its successor information.
中文:
当邻居收到查询之后:
1.如果EIGRP的拓扑表(topology table)没有包含当前路由的条目,那么这个邻居将以不可达(unreachable)信息对发出这个查询的路由器进行快速响应.这表示经过该邻居没有可以替代的路径.
2.如果发出这个查询的路由器在拓扑表中是该路由的Successor,并且有FS的存在,那么邻居以FS进行响应.
3.如果发出这个查询的路由器在拓扑表中是该路由的Successor,但是没有FS的存在,那么邻居向它除了连接先前的Successor的其他接口继续向外发送查询,直到这些发出去的查询都收到了应答(reply).
4.如果query从非Successor的邻居收到的,那么它自己的Successor信息进行响应.
举个例子:
1.R2通过R1学习到10.1.2.0/24.
2.R1和R2之间的链路down掉了,R2丢失了到达10.1.2.0/24的Successor(R1).
3.R2检查自己的EIGRP拓扑表寻找FS;结果是没有找到可用的FS.
4.R2把关于10.1.2.0/24的路由从被动状态迁移到活跃状态.
5.R2发出查询给它的邻居(R3和R5),看是否有到达10.1.2.0/24的替代路径,并且SIA timer开始计时.
6.R5检查自己的EIGRP拓扑表查找FS,结果是没有找到.R5把关于10.1.2.0/24的路由的状态从被动状态迁移到活跃状态.
7.R5检查自己的邻居表(neighbor table),发现自己只连接了R2(先前到达10.1.2.0/24的Successor).于是R5以不可达的信息进行响应.
8.R5把关于10.1.2.0/24的路由的状态从活跃状态迁移回被动状态.
9.同样的,R3检查自己的EIGRP拓扑表查找FS,结果是没有找到.R3把关于10.1.2.0/24的路由的状态从被动状态迁移到活跃状态.R3检查自己的邻居表,发现了邻居R4.R3发出查询给R4,看是否有到达10.1.2.0/24的替代路径,并且SIA timer开始计时.
10.假设由于R3和R4之间链路拥塞或其他问题(通过在R3上使用命令show ip eigrp neighbors或show ip eigrp tolopogy active,可以发现从R3去往R4的队列的包的数量比正常情况下都高),R4根本就没收到来自R3的查询.
11.R2上的SIA timer已经接近3分钟.R3也无法对R2的查询进行应答,因为R4没有对R3的查询进行应答.
12.R2记录如下关于10.1.2.0/24的DUAL-3-SIA的错误日志信息,并清除它和R3的邻接关系:
DEC 20 12:12:06: %DUAL-5-NBRCHANGE: IP EIGRP 1:
Neighbor 10.1.4.3 (Serial0) is down: stuck in active
DEC 20 12:15:23: %DUAL-3-SIA:
Route 10.1.2.0/24 stuck in active state in IP EIGRP 1.
Cleaning up
13.R3关于去往R4的包的重试计时器(retry timer)超时.R3清除和R4的邻接关系并显示如下错误日志信息:
DEC 20 12:12:01: %DUAL-5-NBRCHANGE: IP EIGRP 1:
Neighbor 10.1.5.4 (Serial1) is down: retry limit exceeded
14.现在R3以不可达的信息对R2的查询进行应答.同时R4也显示如下错误日志信息:
DEC 20 12:12:06: %DUAL-5-NBRCHANGE: IP EIGRP 1:
Neighbor 10.1.5.3 (Serial0) is down: peer restarted
DUAL-5-NBRCHANGE等错误日志信息显示的前提是在EIGRP进程下使用了命令eigrp log-neighbor-changes.因此,SIA问题通常是由于链路的拥塞,接口的振荡(flap)等等.
虽然SIA问题产生的原因可能不同,但是对这类问题的排错的步骤是相同的.可以先通过命令show ip eigrp topology active命令查看哪些路由是处于活跃状态的,如下:
R2# show ip eigrp topology active
IP EIGRP Topology Table for process 1
Codes: P Passive, A Active, U Update,
Q Query, R Reply, r Reply status
A 10.1.2.0 255.255.255.0, 1 successors, FD is 2733056 1 replies,
active 0:00:38, query origin: Multiple Origins
via 10.1.4.3 (Infinity/Infinity), r, Serial0, serno 1232
via 10.1.6.5 (Infinity/Infinity), Serial1, serno 1227
如上显示了该路由(10.1.2.0/24)进入活跃状态38秒,最后两行显示了两个被查询的邻居(10.1.4.3和10.1.6.5),小写的字母r代表还在等待应答;如果是大写的R,表示已经接收到应答.
当你确定了哪个邻居在等待应答之后,就可以telnet到该邻居上,看看该邻居为什么没有对查询作出应答.
stub路由器发送特定的信息告诉他所有的邻居声明自己是stub router("eigrp peer information packet with stub flag set:使用一个根标志位设置的eigrp邻居信息包"),这些邻居知道后就不会再发送query 包来查询相关路由,stub router对汇总路由 (summary route),直连路由,重分布静态路由(redistributed static route),外部和内部路由的查询(query)作出inaccessible的应答,stub router相互之间也不会互相查询,这个是路由优化的措施,在一些情况下还可以解决eigrp的sia问题,限制query的查询范围,具体是hub rouetr 向spoke router引入一条默认路由来实现.
stub routing的配置步骤如下:
1.启用EIGRP:
Noko(config)#router eigrp {as-number}
2.定义EIGRP路由器宣告的网络:
Noko(config-router)#network {network-number}
3.把边缘路由器配置成stub路由器:
Noko(config-router)#eigrp stub {receive-only|connected|static|summary}
默认情况下,当边缘路由器被配置成stub路由器以后,它和邻居享有直连(connected)和汇总(summary)路由信息.其中connected,static和summary参数可以结合起来一起使用;
而一旦使用了receive-only参数,其他3种参数不能组合使用.默认是和邻居享有直连和汇总的路由信息.
receive-only:限制stub路由器只接收而不发送路由信息.
connected:允许stub路由器向邻居发送直连的路由信息.
static:允许stub路由器向邻居发送静态路由信息.
summary:允许stub路由器向邻居发送汇总路由.
4.对stub路由器的验证,可以通过命令show ip eigrp neighbor detail来查看,如下:
Noko#sh ip eigrp nei de
IP-EIGRP neighbors for process 1
H Address Interface Hold Uptime SRTT RTO Q Seq Type
(sec) (ms) Cnt Num
0 10.1.1.2 Se3/1 11 00:00:59 1 4500 0 7
Version 12.1/1.2, Retrans: 2, Retries: 0
Stub Peer Advertising ( CONNECTED SUMMARY ) Routes
cunshen 2005-05-28 11:05