PDA

查看完整版本 : 【转帖】OSPF速成大法


tank.net
2009-12-24, 01:14 PM
这篇文章是以前学网络时nico给我的。现在这家伙也不知道死哪里去了,从来没见过他上线。

OSPF速成大法

TCP/IP协议族构建了千变万化的网络世界,而做为IP协议核心部分的路由协议功不可没。本文将针对路由协议中极其重要的ospf(开放最短路径优先)协议做简单通俗的介绍。

前言

  浩淼太空一个遥远的星球上先后成立了这么几个国家。历史最悠久的国家的国王叫static,据说static国王是这个星球上最年老的长者,见证了整个星球的兴衰。static国王是一个勤政爱民的老国王,只是对于治理国家苦于找不到什么合适的方法,不得不事事操劳,天长日久遂感到年老体弱,心力憔悴。

  static王国有个国民叫rip,自小目睹了国王操劳的身影,发誓自己做了国王决不这么辛苦。十八岁成年后,率领一些臣民到另一个风调雨顺的地方建立了新的王国。rip有个重臣,全名叫做udp 520,来源于udp家族,凭借一身好轻功穿梭跳跃于王国的各个部落之间为rip传递旨意,而rip也依靠520逐渐把国家治理的兴旺发达。然而随着臣民的富足和繁衍,国家边境的不断扩大,520的缺陷也暴露出来,原来他的轻功每天只能连跳15个部落,超过15个就无能为力。并且随着国家的日益壮大,社会秩序也日益混乱,经常发生某个部落发往其他部落的货物又莫名其妙返回本部落的事情发生,周而复始,极大的浪费国家资源。郁闷的rip不得不发出感叹:“看来我这辈子也就只能小打小闹,成不了大事了!”既然边境不能继续扩张,就把心思放在了整理国家秩序上,先后雇佣了水平分割,毒性逆转和触发更新三位新人进驻司法机关。

  此时出现了两个年轻人,一个叫eigrp,一个叫ospf。二人打小受高人指点,练就一身好武艺。eigrp练就一身“散列”擒拿手傲视群雄,但其自信武功天下第一,对其他武功不闻不问,逐渐和外界减少往来,没落下去......

  而ospf以精美的spf(shortest path first)绘图大法闻名江湖,加上以开放(open)的心态,笑迎天下英雄,共同切磋,完善自己,成就了盛极一时的ospf帝国,自封ospf(open shortest path first)大帝。相传,ospf国王能够利用一种spf的武功在很短的时间内绘出一幅世界地图,并能从这张图上找出去任何一个地方的最佳路线形成表格。其王国内的臣民如果想去世界上的某个角落,也能够很快绘出一幅最佳路线。

  在下十分好奇这究竟是什么样的武功心法,决心冒险潜入,希望能够得其一二,也不枉此行。

  经多日偷渡进入及冥思苦想,终于有所发现,分别总结出来,希望有志之士共同研究,造福网络业。

第一章 路由表(routingtable)形成

  原来,ospf把整个国家看成一个大的自治系统(AS),而这个AS又分成了几个区域(area)。假设你是这个区域中的一员,现在我们来看看区域内的你(root)怎么得到一张最佳路线表格(routingtable)的。

  首先,你需要先和自己区域里的人(同网段如192.168.0.0/16)建立基本联系。通过身份的交互,你和这些人建立了邻居(neighbor)关系,当然这些人之间也有neighbor关系。

  这些人中最有威望(priority优先级)的人将会被推荐为首领(designated router)。首领与你这些村民之间是上下级(邻接adjacency)的关系,且建立单线联系,而不许你与其他邻居有过多交往。其借口就是“如果大家都交往,街上就太拥挤了,有什么事情就由我代为转达吧。”

  于是,你只有通过首领来知道更多的消息了,首先,你们互通消息,首领告诉你他知道的所有地图的地名,你也会告诉首领你现知道的地名,当然也许只有你一个点。(DatabaseDescription数据库描述报文)。

  你发现地名表中有他缺少的或比较新的东西,你会问首领要一份更详细的资料,首领发现你的地名表中有他需要的东西,也会向你索求新资料。(LinkStateRequest连接状态请求报文)。
当然,你们毫不犹豫地将一份详细资料发送给对方。(LinkStateUpdate连接状态更新报文) 。

  收到地图后,互相感谢表示收到了。(LinkStateAck连接状态响应报文)。

  现在,你已经尽其所能得到一份地图(LinkStateDataBase连接状态数据库),你去查找地图把到所有地方的路挑一条最近(shortestpath最短路)的,记为一张表格(routingtable路由表),当然以后查这份表格就知道到目的地的一条最近的路了。地图也要收好,万一表格上的某条路不通了可以通过图去找一条新的路。

  其实跟你有联系的,只是周围一群人,外面的消息要通过首领来知道。因为你的地图是跟首领的一致的。

  通过不停地交换地图,现在,整个区的人都有同样的地图了,住在区边境上的人(Abr)义不容辞地把这个区的地图(精确到每一群人)发送到别的区,把别的区信息发送进来。国王会把这些边境的人命名为Abr。通过Abr的不懈努力,现在,整个国家的地图就都了解得一清二楚了。

  有些人“跨国经营”(ASBoundaryRouter自治系统边界路由器),他们知道一些“出国”(ASExternalroute自治系统外部路由)的路,当然他们会把这些消息引入(import),通过信息的传递,现在,已经有一张完整的“世界地图”了。

  ospf是这样标记最短的路径的:对于某个目的地,首先,考虑是否有同一区内部到目的地的路,如果有,则在其中取一条离你最近的(花费最小),写进你的表格中,这个目的地可能是到本群体某个人也可能是到其他群体的,对于经过其他区域的路由,你会不予考虑;如果没有本区的路,你只好通过别的区域了(区域间),你只要在地图上找最近的就是了;如果你发现目的地在国外,你也只能先把它标记到你的表格上,期待什么时候王国扩张到那,你就可以把它标记到国内地图上了。

第二章 区域(area)分布

  ospf帝国是由一个个独立的区域(area)组成的。包括骨干区域(backbonearea)Area0,普通区域,末梢区域(stub)和nssa(not so stub area)。
骨干区域(backbone area)area 0,负责不同区域间信息的传递,是整个帝国的核心枢纽。帝国宪法(RFC)中明确指出,所有区域必须和area0建立连接,不论是直接相连,还是跨过其他区域飞鸽传书(virtule link 虚连接)。

  普通区域是个非常开放的区域,允许区域内存在做边境贸易的商人(Abr)和“跨国经营”的商人(Asbr)。边境贸易商人(Abr)首先完成一个区域内的最优路径计算,然后查询最优路径表(routingtable),为每一条最优路径(routing)生成一条通告(Link State Advertise type 3),然后将这些通告发布到另一个区域中去。有时候为了减少信息过于泛滥,同时使道路不至于过于拥挤,边境贸易商人(Abr)还会把一些路径信息进行合并(聚合Abr summary)。而那些“跨国经营”的Asbr,则会把国外的信息引入到国内进行通告(Link State Advertise type 5),这样国内的人不仅仅知道本国内的路径信息,就连国外的也都一目了然。同样,Asbr也会合并一些路径信息。

  末梢区域(stub)是个封闭的区域。执政官比较喜欢安静,不喜欢街上过于热闹,于是颁布了一条法规:不允许那些“跨国经营”的商人存在!同时为了避免消息不通畅,允许ABR发布区域间的信息,同时命令Abr必须向区域发布一条缺省路径(LSA type 3),以便残域内的百姓可以由此缺省路径出国。

  有些末梢区域,甚至连Abr发布的区域间信息也禁止掉了,不管去其他区域还是出国,都从缺省路径路过,这样的末梢区域又叫做完全末梢区域。

  nssa(not so stub area)区域是个自私的区域。它允许自己区域内那些“跨国经营”的商人把信息经过转换(LSA 7-->LSA5)卖给其他区域,但是并不允许其他区域的Asbr把具体信息卖给本区域,而是以一条缺省路径发布进来,以保证国民出国的需要。

  有些nssa区域,甚至abr发布的区域间信息也给封掉了,不管去其他区域还是出国,都从缺省路径路过,这样的区域又叫做完全nssa区域。

第三章 招贤纳士

  ospf深知网络变化于无形,且知“二十一世纪最重要的是人才!”,遂决定设置三个条件,具备其一者即可进驻内阁,共商网络大计。

  人才一:镇守边关之大将

6788

  图中,Abr/Asbr所处位置极为重要。一方面做为ABR连接普通区域(area5)和骨干区域(area0);另一方面做为asbr连接ospf和rip。

  area 5需要了解rip的路由,就把192.168.X.0/24引入到ospf系统。而骨干区域是不需要了解192.168.X.0/24的信息的,因为这些信息已经被包括在area5发布来的192.168.0.0/16中了。当网络规模很大时,就会在骨干区域泛滥大量无用的信息,而这些信息又会大量占用ospf资源,导致整个系统不堪重负。目前唯一的办法就是设置禁令(acl),将这些无用且会占用资的信息罗列出来,再一一禁止(路由过滤),美中不足的是大量的禁令条目(acl rule)同样是整个系统运行和维护的负担。

  有识之士认为也许可以把引入的rip路由以指定区域的方式仅仅发布到area5,而不是向整个系统扩散。此策略看似简单,实则将ospf传统的二层体系扩展到三层体系,任重道远。或者能够在Abr连接area0的接口做到路由聚合。总之这两种方案都非易事,急需一有胆有识之人前往实践。

  人才二,推广新法之说客

6789

  网络规模较小时,ospf分别把192.168.0.0/24和192.168.1.0/24以静态方式引入ospf中,后由于网络规划需要继续引入192.168.X.0/24的静态路由,考虑到最小限度引入路由,决定将192.168.X.0/24全部整合成192.168.0.0/16的路由。然而由于第5类LSA是以对应网段的IP地址来标识的,并协同产生该LSA的路由器ID、LSA的序列号等三个信息的组合作为其关键值进行唯一性标识,也就是说:不关心路由的掩码信息!导致图中的router认为192.168.0.0/16和已有的192.168.0.0/24的LINK ID相同而不予引入。

  ospf将此现象记入国家宪法(RFC),称之为附录E。经全力攻关,已得出解决方案。遗憾的是能够将此方案付诸实施的公司实在是凤毛麟角。

  于是ospf急需一推广新法之说客,游说各公司,将诸多类似方案实施于网络,造福于万民。

  人才三,通古博今,深谙IP协议灵魂之圣人。

  对此类人才的要求无法用文字描述,近求其带领ospf冲出IPV4重围,紧随IPV6大潮;远待其利用对网络内涵的精深理解发扬路由协议之精神,继续传播网络于各地。

结束语

  路由协议是TCP/IP协议的核心,而ospf以其紧凑的结构,严谨的逻辑,做为一种主要的IGP路由协议,在网络中获得了广泛应用,为IP网络的通信立下汗马功劳。熟悉其内涵的人无不为其设计之精巧而感叹,遗憾的是ospf过于注重与IPV4的结合,紧凑严谨的设计反而成了其发展的最大绊脚石。长江后浪推前浪,IPV6前进的趋势不可阻挡,不论从感情上,还是从价值上,我们都不希望与我们相伴多年且如此精美的ospf协议告别。谨希望ospf能够感悟IP网络的本质,以紧凑严谨的结构和逻辑,开放博大的心态担负起构建新一代路由网络之重任。