AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 36116
Accepted
Artem Barger
Artem Barger
Asked: 2009-07-06 10:57:09 +0800 CST2009-07-06 10:57:09 +0800 CST 2009-07-06 10:57:09 +0800 CST

路由协议、距离矢量与链路状态

  • 772

我试图找出两种路由协议方法之间的差异(优点/缺点),我会非常乐意提供任何帮助、建议和解释。据我所知,距离向量似乎更静态且更基于本地路由,因为它不知道网络状态,而链接状态更了解当前状态,因此在距离向量上使用它似乎更自然,但我有一种感觉,好像我错过了一些东西。我很高兴在这里讨论我在选择其中一个时必须考虑的更多方面和不同问题。

routing networking ip test
  • 5 5 个回答
  • 17200 Views

5 个回答

  • Voted
  1. Best Answer
    Murali Suriar
    2009-07-06T14:42:36+08:002009-07-06T14:42:36+08:00

    距离向量

    纯距离矢量协议很少见;唯一真正留在任何用途的是RIP。EIGRP是一种 Cisco 专有协议,在技术上也是距离矢量,但它利用了一些优化,使其能够克服距离矢量协议的传统缺点。距离矢量协议不分发任何拓扑信息;他们只是将下一跳广播到路由,以及成本。

    优点:

    • 需要最少的配置。
    • 低 CPU/内存开销。

    缺点:

    • 容易出现路由环路(不太适用于 EIGRP)。
    • 收敛时间慢。
    • 不同的路由器可能对网络的“状态”有不同的看法。

    链接状态

    链路状态协议通过将每个路由器的连接接口通告给路由域中的每个其他设备来发挥作用。实际上,每个设备都构建了一个完整的网络拓扑数据库,并使用该数据库来确定到每个目标网络的最佳路径。

    使用的两个主要链路状态协议是OSPF和IS-IS;两者都基于Dijkstra 算法的实现。OSPF 是两者中比较知名的一个。IS-IS 往往更多地出现在服务提供商网络中。

    优点:

    • 网络中的所有路由器都具有一致的世界观。
    • 在链路状态网络中,循环基本上是不可能的。
    • 快速重新收敛。

    缺点:

    • 需要更高的 CPU/内存占用。
    • 很难过滤向特定路由器通告的路由,因为链路状态算法依赖于整个 AS 具有一致的世界视图。

    协议选择

    至于您应该使用哪种协议类型,这取决于您的要求。通常,除非供应商强迫您这样做,否则不应使用 RIP。如果您运行的是全 Cisco 网络,只需很少的手动配置即可启动 EIGRP。如果需要供应商之间的互操作性,OSPF 可能是更好的选择。正如另一个答案中提到的,如果您要与第 3 方交换路由,则BGP是首选协议。

    最后一点:动态路由协议仅在拓扑冗余且需要自动故障转移时才有用。如果您有一个支持所有 LAN 环境和 ISP 电路的路由器,那么到您的 ISP 的默认路由就绰绰有余了。

    • 9
  2. James
    2009-07-06T11:08:17+08:002009-07-06T11:08:17+08:00

    我个人会选择你的路由协议而不是它的工作方式。现在,如果它是一个内部网络,那么正确的答案几乎总是 OSPF。如果它是一个外部网络,那么答案可能是 BGP(但在这种情况下你不会问)。链路状态协议具有快速收敛性。

    OSPF 是一种链路状态协议,一种开放标准。

    RIP 仍可用于小型网络或将路由从简单设备重新分配到更复杂的设备(或注入默认路由)

    • 8
  3. Avery Payne
    2009-07-06T11:09:07+08:002009-07-06T11:09:07+08:00

    我不是专家,但是...我似乎想起了这种旧公式:

    (increasing stabilty) x (decreasing latency) = (weighted score for a route)

    只需.02一分钱。希望对您的考虑有所帮助。

    • 1
  4. chris
    2009-07-06T14:48:34+08:002009-07-06T14:48:34+08:00

    我 100% 同意 james 的观点——使用基于需求的路由协议,而不是基于技术。

    首先——你为什么要考虑路由协议?您是否在多路由器环境中重新分配路由?您是否正在寻找在多样化路线环境中更快的收敛时间?

    如果您需要复杂的流量工程,并且您有一个具有多种路由和非常不同的链接速度的复杂网络,并且如果您处于 100% 的 cisco 环境中,您可能需要考虑 eigrp。否则,如果你有一个复杂的网络和多样化的路由,并且你想要合理的收敛时间,你真的只有 OSPF 作为一个选择。如果你想要工作保障,我想你可以考虑 ISIS...

    如果您只想在一堆路由器之间重新分配一堆直接连接的路由,那么 rip 可能就可以了。只支持RIP的路由设备也不少,比如很多无线AP、cheapo路由交换机等。

    用于确定路线或防止环路的实际算法在任何时候都不会真正进入画面。

    • 1
  5. neel
    2010-11-22T08:21:54+08:002010-11-22T08:21:54+08:00

    从这个页面:

    链路状态算法与距离向量算法的比较

    我们知道,当一个数据包到达路由器时,路由器会索引一个转发表并确定数据包要传递到的链路接口。路由算法在网络路由器中运行,交换和计算用于配置这些转发表的信息。路由算法的目的是在一组路由器中找到一条从源路由器到目标路由器的良好路径。通常,一条好的路径是成本最低的路径,也是最短的路径。

    有一些类型的路由算法,例如链路状态或距离矢量路由算法。链路状态算法是一种使用全局信息的算法,而距离向量算法是迭代的、异步的和分布式的。对于 DV 算法,每个节点仅与其直接连接的邻居对话,但向其邻居提供从自身到所有节点的最小成本估计。对于 LS 算法,每个节点与所有其他节点进行对话,但只告诉他们直接比较它们的某些属性的成本。我们有一些方面可以比较这两种算法

    消息复杂性:对于链路状态,每个节点都必须保存有关网络内每个链路成本的信息。并且每次,如果任何成本发生变化,所有节点都会发生变化。使用距离矢量算法,消息在直接连接的两个主机之间交换。并且如果对于其中一个节点属于成本最小路径的链路中成本的变化,DV算法将更新新的值。但如果更改不属于 2 个主机之间的最低成本部分,则不会更新

    收敛速度: LS 的实现是一个 O (|N|2) 需要 O (|N||E|) 消息。但DV算法收敛速度较慢,算法收敛时存在路由环路。此外,DV 算法还存在计数到无穷大的问题。

    鲁棒性:对于 LS,当一个路由器宕机时,它可以为最近的路由器广播一个错误的成本。而且,节点可以破坏或丢弃它作为 LS 广播的一部分获得的数据包。但是,一个 LS 节点为自己的转发表计算,其他节点为自己计算。因此,它使计算在 LS 中以某种方式分离,从而提供了鲁棒性。对于 DV,错误的最小成本路径可以传递给多个节点或整个节点,因此错误的计算将在整个网络中进行处理。DV的这个问题比LS算法差很多。

    从这个页面:

    距离矢量协议的优点

    得到很好的支持

    诸如 RIP 之类的协议已经存在了很长时间,而且大多数(如果不是所有)执行路由的设备都能理解 RIP。

    • -1

相关问题

  • 10 Gb 网络:在光纤和双绞线之间做出决定

  • 如何在 Windows Server PPTP VPN 中自动为客户端分配路由?

  • 为什么我的电脑休眠时 VPN 连接会中断?[关闭]

  • 有什么软件可以模拟局域网?

  • 带宽利用工具?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve