周末继续写东西的一半填补了,为了达到完美的一天。
我们知道一个事实,IP地址太多。统一管理是不可能的了,无论从控制平面从数据/管理层表示,飞机是如此。

所以。IP协议被设计为可伸缩。供IP路由术语,跳路由进行计算。当然,支持“源路由”,源路由就是说数据在出发前就已经把路线规划好了,逐跳路由是IP路由的标准形式。也就是说。IP数据包是在路上即时规划路线的。
       我比較喜欢IP路由是由于这也是我旅行的方式,我喜欢旅行,可是我不喜欢事先订酒店。事先规划路线。导航等,我的方式是在路上看路牌前行。到了暂时停下的地方之后背着行囊找住处,然后走到哪算哪,这是一种说走就走且没有目的地的游荡...当然,IP数据包是有目的地的。

逐跳全局最优化

IP路由是在每一台路由器上逐跳路由的。那么就产生了一个问题。偌大一个互联网,该怎么相信这么多逐跳路由拼接起来的一条完整的路径确实是最优化的呢?答案显然是确定的。问题是怎么证明它。

路由算法

书上讲,路由算法基本分为距离矢量算法和链路状态算法,各自的协议代表作就是RIP和OSPF(我就是靠着这两个找到的第一份工作),确实是这样,可是从这些算法的正确性的证明过程中,你就会发现,确实是“逐跳的最优化路由真的就是全局的最优化路由”。

本文中我只给出基于链路状态路由协议的Dijkstra算法的证明,由于全网每台设备的链路状态数据库都是同样的。所以它是非常好理解的。

Dijkstra算法正确性证明

首先要给出Dijkstra算法正确性的证明。才干进行兴许的。毕竟。Dijkstra算法本身不过指导了step by step的操作步骤,并没没能证明这么折腾一圈得到的最短路径树中的每一条路径确实是最短的。

而要想证明逐跳全局最优化原则。须要这个事实。
       以下的示意图给出了Dijkstra算法正确性的简单证明,具体完备的数学证明能够參照这个思路:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG9nMjUw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

逐跳全局最优化的问题

以下的示意图点名了逐跳全局最优化的问题所在:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG9nMjUw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

逐跳全局最优化的证明

以下的示意图给出了逐跳全局最优化的简单证明。证明方式多种多样。我这里给出的不过当中一种:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG9nMjUw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

附:Dijkstra算法的贪心模型

假设我们在地上倒上一杯水,观察水摊开渗透的痕迹,就会理解Dijkstra算法。它确实是不证自明的。

大自然是懒惰的,总是用最省力的方式行事。水分子在落地那个点開始,在崎岖不平的地上由于重力(暂时不考虑其他分子力)沿着一定的路径到达一系列点,这些路径一定是最短路径。我们可以粗略地级视为权重路径,这不是和Dijkstra做同样的算法模型?

版权声明:本文博主原创文章,博客,未经同意不得转载。

互联网IP合全局路由优化的原则-Dijkstra算法证明的更多相关文章

  1. ip route rule 路由策略 高级路由 捆绑 网桥

    http://lwfs.net/2005/11/28/10/ #!/bin/bash IP0= IP1= GW0= GW1= NET0= NET1= DEV0=eth0 DEV1=eth1 # com ...

  2. linux下TCP/IP及内核参数优化调优(转)

    Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等. 如下配置是写在sysctl.con ...

  3. TCP/IP及内核参数优化调优

    Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等.如下配置是写在sysctl.conf ...

  4. 全栈项目|小书架|服务器开发-Koa全局路由实现

    什么是路由 路由就是具体的访问路径,指向特定的功能模块.一个api接口是由ip(域名)+端口号+路径组成,例如 :https://www.npmjs.com/package/koa-router就是一 ...

  5. TCP/IP及内核参数优化调优(转)

    Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等.如下配置是写在sysctl.conf ...

  6. linux 网络接口,ip地址,路由设定

    本文是基于centos 配置DNS条目: 配置文件:/etc/resolv.conf 修改主机名称: 命令:hostname NAME.重启后失效 配置文件:/etc/sysconfig/networ ...

  7. ASP.NET Core MVC 配置全局路由前缀

    前言 大家好,今天给大家介绍一个 ASP.NET Core MVC 的一个新特性,给全局路由添加统一前缀.严格说其实不算是新特性,不过是Core MVC特有的. 应用背景 不知道大家在做 Web Ap ...

  8. 浅谈ThinkPHP3.2的子域名部署和路由优化(一)

    前言:建立一个网站系统,往往包含多个子网站,例如PC官网,移动端官网,后台管理,数据源自一个相同的数据库,整个架构上,从ThinkPHP来看,可以大体理解为Model(M)是一样的,Controlle ...

  9. 优化数据库的方法及SQL语句优化的原则

    优化数据库的方法: 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化.(可以用Sybase的SQL Expert,可惜 ...

随机推荐

  1. Jmeter性能测试 及压测入门

    Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好. 为什么要建立线程组?原因很简单,因为我们要模拟多个线程(用户 ...

  2. 跨域(cross-domain)访问 cookie (读取和设置)

    Passport 一方面意味着用一个帐号可以在不同服务里登录,另一方面就是在一个服务里面登录后可以无障碍的漫游到其他服务里面去.坦白说,目前 sohu passport 在这一点实现的很烂(不过俺的工 ...

  3. css案例学习之float浮动

    代码: <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  4. 13个JavaScript图表(JS图表)图形绘制插件

    转自:http://blog.jobbole.com/13671/ 1. Flash 过去是最佳解决方案,但很多人多在从那迁移: 2. 现代浏览器及其更强大的计算能力,使其在转化绘制实时数据方面的能力 ...

  5. 【LeetCode练习题】Partition List

    Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...

  6. #include <boost/weak_ptr.hpp>

    弱指针boost::weak_ptr的定义在boost/weak_ptr.hpp里.到目前为止介绍的各种智能指针都能在不同的场合下独立使用.相反,弱指针只有在配合共享指针一起使用时才有意义.因此弱指针 ...

  7. Xcode8 注释快捷键无效, 解决方案

    这个是因为苹果解决xcode ghost.把插件屏蔽了.解决方法命令运行: sudo /usr/libexec/xpccachectl 然后必须重启电脑后生效    

  8. 【斐波拉契+数论+同余】【ZOJ3707】Calculate Prime S

    题目大意: S[n] 表示 集合{1,2,3,4,5.......n} 不存在连续元素的子集个数 Prime S 表示S[n]与之前的所有S[i]互质; 问 找到大于第K个PrimeS 能整除X 的第 ...

  9. Java基础笔记-String类

    String 类(被final修饰) 字符串是一种特殊的对象,一旦字符串被初始化就不可以被改变了.(内容不变) 例如: String  s = “abc”; String  s1 = new Stri ...

  10. Android开发环境的搭建之(五)DDMS的测试

    启动DDMS(Dalvik Debug Monitor Service) 测试Voice通话功能 左图Device选择MyPhone[Emulator- 5554],右图选择Emulator Cont ...