RIP Protocol Limitations and Problems–<转>

本文探讨了距离矢量算法及其实现方式在RIP协议中的核心问题:收敛缓慢、路由循环、计数到无穷大和小无穷。重点分析了RIP在传播拓扑变化、检测路由故障和避免路由循环等方面的局限性。

The simplicity of the Routing Information Protocol is often given as the main reason for its popularity; I certainly have mentioned this enough times in this section. Simplicity is great most of the time, but an unfortunate “price” of simplicity in too many cases is that problems crop up, usually in unusual cases or special situations. And so it is with RIP: the straight-forward distance-vector algorithm and operation mechanism work well most of the time, but they have some important weaknesses. We need to examine these problems to understand both the limitations of RIP and some of the complexities that have been added to the protocol to resolve them.

Problems With RIP’s Basic Algorithm and Implementation

The most important area where we find serious issues with RIP is with the basic function of the distance-vector algorithm described earlier in this section, and the way that messages are used to implement it. The are four main problems here: slow convergence, routing loops, “counting to infinity” and “small infinity”.

Slow Convergence

The distance-vector algorithm is designed so that all routers share all their routing information regularly. Over time then, all routers eventually end up with the same information about the location of networks and which are the best routes to use to reach them. This is called convergence. Unfortunately, the basic RIP algorithm is rather slow to achieve convergence. It takes a long time for all routers to get the same information, and in particular, it takes a long time for information about topology changes to propagate.

Consider the worst-case situation of two networks separated by 15 routers. Since routers normally send RIP Response messages only every 30 seconds, a change to one of this pair of networks might not be seen by the router nearest the other one until many minutes have elapsed—an eternity in networking terms.

The slow convergence problem is even more pronounced when it comes to the propagation of route failures. Failure of a route is only detected through the expiration of the 180-second Timeout timer, so that adds up to three minutes more delay before convergence can even begin.

Routing Loops

A routing loop occurs when Router A has an entry telling it to send datagrams for Network 1 to Router B, and Router B has an entry saying that datagrams for Network 1should be sent to Router ALarger loops can also exist: Router A says to send to B, which says to send to C, which says to send to A.

While under normal circumstances these loops should not occur, they can happen in special situations. RIP does not include any specific mechanism to detect or prevent routing loops; the best it can do is try to avoid them.

转自http://www.tcpipguide.com/free/t_RIPProtocolLimitationsandProblems.htm

<?xml version="1.0" encoding="UTF-8" ?> <!-- Copyright (c) 2006, 2022, Oracle and/or its affiliates. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2.0, as published by the Free Software Foundation. This program is also distributed with certain software (including but not limited to OpenSSL) that is licensed under separate terms, as designated in a particular file or component or in included license documentation. The authors of MySQL hereby grant you an additional permission to link the program and your derivative works with the separately licensed software that they have included with MySQL. Without limiting anything contained in the foregoing, this file, which is part of MySQL Connector/J, is also subject to the Universal FOSS Exception, version 1.0, a copy of which can be found at http://oss.oracle.com/licenses/universal-foss-exception. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License, version 2.0, for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>plugins</artifactId> <groupId>org.igniterealtime.openfire</groupId> <version>4.9.2</version> </parent> <!-- 子模块自己的信息 --> <groupId>org.igniterealtime.openfire.plugins</groupId> <artifactId>restAPI</artifactId> <version>1.8.0</version> <name>REST API Plugin</name> <description>Allows administration over a RESTful API.</description> <packaging>jar</packaging> <!-- 依赖 --> <dependencies> <dependency> <groupId>org.igniterealtime.openfire</groupId> <artifactId>openfire</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.9</version> </dependency> </dependencies> <!-- 构建配置 --> <build> <finalName>${project.artifactId}</finalName> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> </build> <groupId>com.mysql</groupId> <artifactId>@MYSQL_CJ_EXTENDED_PROD_NAME@</artifactId> <version>@MYSQL_CJ_VERSION@</version> <packaging>jar</packaging> <name>MySQL Connector/J</name> <description>JDBC Type 4 driver for MySQL.</description> <url>http://dev.mysql.com/doc/connector-j/en/</url> <licenses> <license> <name>@MYSQL_CJ_LICENSE_NAME@</name> <distribution>repo</distribution> <comments>For detailed license information see the LICENSE file in this distribution.</comments> </license> </licenses> <organization> <name>Oracle Corporation</name> <url>https://www.oracle.com/</url> </organization> <developers> <developer> <name>Filipe Silva</name> <email>filipe.silva@oracle.com</email> <organization>Oracle Corporation</organization> <organizationUrl>https://www.oracle.com/</organizationUrl> </developer> </developers> <scm> <connection>scm:git:git@github.com:mysql/mysql-connector-j.git</connection> <url>https://github.com/mysql/mysql-connector-j</url> </scm> <dependencies> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>3.21.9</version> </dependency> <dependency> <groupId>com.oracle.oci.sdk</groupId> <artifactId>oci-java-sdk-common</artifactId> <version>2.47.0</version> <optional>true</optional> </dependency> </dependencies> </project> 这个配置对吗
10-02
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值