多年前所写, 主要是对OSPF的RFC协议标准的解读. 工作中接触网络路由协议OSPF的同学可以参考参考.如有理解错误请谅解, 不过可以肯定的是一定有理解错误的地方的.
RFC2328 1.1小节
1.
OSPF routes IP packets based solely on the destination IPaddress found in the IP packet header.
IP packets are routed "as is" -- they are not encapsulated in any further protocol headers as they transit the Autonomous System.
>>> 也就是说OSPF协议不管怎么配置,协议工作过程不管多么复杂, 它还是封装在ip协议头部中。OSPF路由发送一个ip包,仍然根据ip包的目的地址查询当前路由器中的OSPF路由表,进行匹配发送. OSPF协议自身相关的ip包,没有做进一步的封装,没放在ip的更高层(如BGP封装在TCP协议报头中), 而是放在的ip报文头部数据部分,本质上它还是个ip包。
2.
OSPF is a dynamic routing protocol.
>>> 这是相对于静态路由(static route)而言,显然OSPF不用你去手动配目的多少,下一站到哪。只要将OSPF开关打开,就等OSPF做完剩下的事,找到不同目地的不同下一站,自动发送流量。假如你是路由器,你要支装配地办事就是要发送某ip包到某地,你去坐城市公交车,OSPF开关打开后你(路由器)的大脑中立刻出现如何坐车,如何转车换乘公交的攻略。
3.
It quickly detects topological changes in the AS (such as router interface failures) and
calculates new loop-free routes after a period of convergence.
>>> 在一个自治系统中,网络拓朴的改变是频繁的,实际生活中,由其是距离用户端越近越频繁。如公司搬迁,部门改建,人员离职新进,客户新增流失,业务变化,伴随着这些变化运营商或者企业的网络也需要各种变化实应变化。所以手工配只适应人数少,业务量小的网络,大型网络肯定必须用动态路由协议。另外,自治系统是一组运行相同协议或有相同配置的路由器集合。这个概念若放BGP中很好理解。如A公司与B公司之间有业务网来,都开启OSPF协议,总不可能让A公司内的路由器与B公司的路由器像公司内部路由器一样建领居,毫无保留的相互学习路由吧。所以A公司所有开启OSPF协议的路由器就是一个自治系统,B公司同样。A公司与B公司之间用跨自治系统路由协议来沟通,如BGP。而相互连接A公司和B公司的2个路由器可同时运行BGP和OSPF路由协议,这两个路由器从BGP学到的路由再通告到其它OSPF路由器中时,这台通告路由器就是自治系统的边界路由器。这个边界路由器相当于起了一个转化作用,把其它协议路由(如BGP)转化成OSPF路由并告知其它路由器。
4.
This period of convergence is short and involves a minimum of
routing traffic.
>>> 收敛时间就是说OSPF从开启开始,到建立好领居计算完路由所需要的时间。由于这段时间内无法正常通信,可导致丢包,但这个时间对人来说非常短,在机器角度看也不短。这个时间指标很重要,是OSPF重要性能参数之一。详细的细节过程,时间计算需大篇幅讨论。
5.
In a link-state routing protocol, each router maintains adatabase describing the Autonomous System's topology.This database is referred to as the link-state database.Each participating router has an identical database.
>>> 链路状态路由协议,还有一个知名的链路状态路由协议ISIS,当然链路状态路由协议不只这两个还有其它。这里说的是链路状态路由协议的共性,不只OSPF。它都有一个链路状态数据库。而且内容都是一样,但是计算到达数据库中其它节点的路由,都是各自以自已为根生成一颗树一样的拓朴到达各节点计算路由开销。
6.
Each individual piece of this database is a particular router's local state
(e.g., the router's usable interfaces and reachable neighbors).
>>> 说明了链路状态数据库的内容是什么。就是当前自己的可用ip接口与
领居,这些信息全部的集合。
7.
The router distributes its local state throughout the Autonomous
System by flooding.
>>> 这些参与OSPF的路由器会通过在自治系统内洪泛自己本地状态,来达到最终所有OSPF路由器都能收到其它路由器的本地链路状态数据库。这样经过收敛时间后,所有路由器都有了全局的(也就是所有路由器的)链路状态数据库。
8.
All routers run the exact same algorithm, in parallel.
所有的路由器都并行的运行着相同的算法。
From the link-state database, each router constructs a tree of shortest paths with itself as root.
每一个路由器都根据链路状态数据库,以它自己为根建立一个最短路径的树。
This shortest-path tree gives the route to each destination in the Autonomous System.
这个最短路径树给出了到达自治系统中每一个目的的最短路径。
Externally derived routing information appears on the tree as leaves.
外部路由信息以树叶出现在树中。
>>> 在自治系统中所有的OSPF路由器都把自已的本地链路状态和有哪些领居等信息共享出来,传送给其它所有路由器,这样一定时间后,所有路由器就都分别拥有了整个自治系统的链路状态数据库。然后各自以自己为树根,分别算出到所有可达子网的开销,所以每个路由器的最短路径树都不一样。外部路由信息在这个树中以树叶的位置出现。
9.
When several equal-cost routes to a destination exist, traffic is distributed equally among them.
>>> 这是说OSPF是支持weight路由的,也就是相同目的,多条路径。这里的多条路径指的是三层路径,是ip层的概念,和二层的物理链路聚合的link aggregation不一样。link aggregation也是多条路径,但是二层转发,有多条物理链路聚合为一条逻辑上的单链路以增加带宽,冗余备份,提高可靠性。但OSPF的多条路径它可能用一条物理链路,有多个ip子网共享这条链路,但三层转发是多个下一跳。link aggregation一个是数据链路层发送有多条路径,且是真实的多条物理链路。
OSPF的weight路由是多个三层ip子网的路径,可以是多条物理链路,也可以是一条物理链路。
10.
The cost of a route is described by a single dimensionless metric.
一条路由的开销由一个独立的无量纲度量表示。
OSPF allows sets of networks to be grouped together.
OSPF允许一组网络组合在一起。
Such a grouping is called an area.
这样的一组网络称之为区域。
The topology of an area is hidden from the rest of the Autonomous System.
一个区域的拓朴相对自治系统其余区域是隐藏的。
This information hiding enables a significant reduction in routing traffic.
隐藏这些信息对于减少路由流量有重大意义。
Also, routing within the area is determined only by the area's own topology, lending the area protection from bad routing data.
同样的区域内的路由只有在自己本域内的路由被定义,这样以增加对错误路由数据的路由保护。
An area is a generalization of an IP subnetted network.
一个区域可被概括为一些ip子网络的集合。
>>> 区域的概念。将旁大的自治系统划分为不同区域,这样减少流量,提高了稳定性。区域内路由器不关心区域外是怎样的拓朴,它管将流量交给区域边界上的路由器即ABR就可以了,由ABR来处理。外面的情况也是由ABR来向区域内的路由器通告,外部路由器也无需清楚区域内是个怎样的拓朴情况, 外部路由器会收到ABR告知它们的区域内路由(对外部路由器来说这些是跨区域路由),所以外部路由器就知道到某个区域内路由该找哪个ABR。 所以区域划分可以减少流量,缩小链路状态数据库,减轻路由器负担。但这里有个关键角色,即ABR,在各区域边界上的路由器,对它要求非常高,一担它出问题,多区域将受影响,它的负担也很重。另外,区域里有个核心区域概念,核心区域由于大量区域间的路由信息都 要经过,所以核心区域内所有路由器又要比普通区域内路由器要求高一些。如果把普通区域看成一个单台路由器,核心区域看成一个单台路由器,那核 心区域也就是一台区域边界路由器,即ABR。因为OSPF区域的概念本来就是 一定数量的子网和链路信息的集合嘛。只是物理上分布在不同设备上,也可以看上逻辑上的一台设备。
这里总结一下:
IR Internal Router 内部路由器
ABR Area Border Routers,ABR 区域边界路由器
BR Backbone Router 骨干路由器
ASBR Autonomous System Boundary Router 自治系统边界路由器
通俗的讲:
IR
就是普通区域内的路由器
ABR
在各区域间的路由器。也就是说它有两个或两个以上分属不同区域的子网ip它就成了ABR。
BR
骨干路由器,就是在骨干区域内的路由器. 叫核心区域也可以, 反正它就是处理不同普通区域之间流量的路由器。
ASBR
自治系统边界路由器。就是在一堆OSPF路由器中发外部路由信息的OSPF路由器, 如从 RIP,BGP,ISIS学来的路由信息,它转化为OSPF路由。
另要注意,OSPF不允许ABR只连接两个普通区域,ABR必须接入到骨干区域,然后才能连接其它普通区域成为ABR。这一点是为避免路由环路。下面是路由器条角色的图示:
11.
OSPF enables the flexible configuration of IP subnets.Each route distributed by OSPF has a destination and mask.Two different subnets of the same IP network number may have different sizes (i.e., different masks).This is commonly referred to as variable length subnetting.A packet is routed to the best (i.e., longest or most specific) match.
>>> 说的是OSPF支持可变长子网掩码. 标准的ipv4地址类别划分,是A B C D四大类。但实际如果某企业申请到一个A类地址,如100.1.1.1,那企业可以使用100.1.1.1到100.255.255.254这么多ip地址。所以在企业内可以改变掩码长度,如100.2.1.1到100.2.255.255为一个部门a 100.3.1.1到100.3.255.255为一个部门b 这样在企业内部就用100.2.x.x/16表示部门a网络,100.3.x.x/16表示部门b网络. 这种情况下OSPF路由是支持100.2.x.x/16的a类地址长度16的掩码的。还可以在部门a中划分二级部门1,2,3,分别为:
100.2.1.x/24, 100.2.2.x/24, 100.2.3.x/24
这样到部门a的二级部门2的地址100.2.2.123/24 在OSPF路由中,它将收到的ip包进行最长匹配, 路由表有如下几项
100.0.0.0 255.0.0.0 1.1.1.1
100.2.0.0 255.255.0.0 2.2.2.2
100.2.2.0 255.255.255.0 3.3.3.3
这样路由器将收到的到部门a的二级部门2的地址100.2.2.123发送到3.3.3.3而不是1.1.1.1和2.2.2.2。这就是最长匹配。
12.
Host routes are considered to be subnets whose masks are "all ones" (0xffffffff).
>>>主机路由,掩码为全1的路由表项是主机路由。
13.
All OSPF protocol exchanges are authenticated. This means that only trusted routers can participate in the
Autonomous System's routing. A variety of authentication schemes can be used; in fact, separate authentication
schemes can be configured for each IP subnet.
>>>OSPF各路由器之间传送数据,都可以配置认证加密,以避免被其它设备窃取数据。
14.
Externally derived routing data (e.g., routes learned from an Exterior Gateway Protocol such as BGP; see [Ref23]) is advertised throughout the Autonomous System.This externally derived data is kept separate from the OSPF protocol's link state data. Each external route can also be tagged by the advertising router, enabling the passing of additional information between routers on the boundary of the Autonomous System.
>>>也就是说由其它协议学到的路由信息,经ASBR转换成OSPF路由后,公告到所有OSPF路由器中,它是与本地链路状态数据库合起来的那个LSDB(所有本址链路状态数据库)相互独立的,也就是OSPF路由前面说的以自己为根,生成一棵树,以自己为根算路由,这些过程和外部路由信息处理互不影响,互不干扰。外部的是外部的,OSPF内部的是内部的。外部路由信息在OSPF自治系统中不参于之前说的所有OSPF的各种处理,计算。
结语: 希望能给经常接触路由协议OSPF的同学一点参考, OSPF是比较复杂的动态路由协议,它是一个单播协议,还有许多的技术细节都能够长篇大论的讨论。它不像BGP需要人手工配置各种命令,手工配置相当的复杂,反而协议自身没OSPF这么复杂。也同ISIS有一点类似,同样是链路状态协议,但ISIS设计之初便不是专为TCP/IP而设计,所以也有很大不同。有一些细节协议标准并未完全固定,具体行为在不同的厂商那里实现可能有一些区别,但无关紧要。喜欢就点赞收藏, 您的点赞收藏是我创作的动力, 谢谢.