OSPF是一种内部网关协议(IGP),用于在属于同一自治系统(AS)的路由器之间分发路由信息。
该协议基于链路状态技术,与RIP等距离矢量协议相比,具有以下几个优点:
然而,也有一些缺点:
l雷竞技RouterOS实现了以下标准:
在我们继续之前,让我们先熟悉一下对理解OSPF的操作很重要的术语。这些术语将贯穿全文。
要启动OSPF v2和v3实例,首先要做的是添加实例和骨干区域:
/routing ospf instance add name=v2inst version=2 router-id=1.2.3.4 add name=v3inst version=3 router-id=1.2.3.4 /routing ospf area add name=backbone_v2 area-id=0.0.0.0 instance=v2inst add name=backbone_v3 area-id=0.0.0.0 instance=v3inst
现在,我们可以添加一个模板。该模板用于匹配运行OSPF协议的接口,可以直接指定网络,也可以指定接口。
/routing ospf interface-template add networks=192.168.0.0/24 area=backbone_v2 add networks=2001:db8::/64 area=backbone_v3 add interfaces=ether1 area=backbone_v3
链路状态数据库描述了路由器和连接它们的链路,以及适合转发的链路。它还包含每个链路的成本(度量)。该度量用于计算到达目的网络的最短路径。
每台路由器可以为自己的链路方向发布不同的开销,从而有可能产生非对称链路(到达目的地的数据包经过一条路径,但响应经过另一条路径)。不对称路径不是很流行,因为它使发现路由问题变得更加困难。
参数中可以更改成本的值OSPF接口模板配置菜单,例如,添加一个以太2接口,开销为100。
/routing ospf interface-template add interfaces=ether2 cost=100 area=backbone_v2
Cisco路由器的接口开销与接口带宽成反比。带宽越高,成本越低。如果在RouterOS上需要类似的成本,则使用以下公式:l雷竞技
成本= 100000000/bw,单位为bps。
OSPF路由器使用Dijkstra的SPF (Shortest Path First)算法来计算最短路径。该算法将路由器置于树的根部,并根据到达目的地所需的累积成本计算到每个目的地的最短路径。尽管所有路由器都使用相同的链路状态数据库,但每个路由器都计算自己的树。
假设我们有以下网络。网络由4(4)台路由器组成。出接口的OSPF开销在表示该链路的那条线附近显示。为了构建路由器R1的最短路径树,我们需要将R1作为根,并计算每个目的地的最小开销。
从上面的图像中可以看到,已经找到了通往172.16.1.0网络的多条最短路径,允许到该目的地的流量进行负载平衡等价多路径(ECMP).最短路径树建立好后,路由器开始相应地建立路由表。网络最终到达树中计算的代价。
路由表的计算看起来很简单,但是当使用OSPF扩展或计算OSPF区域时,路由表的计算就变得复杂起来。
OSPF路由器可以设置转递地址到它本身以外的东西,这表明下一跳是可能的。主要转发地址设置为0.0.0.0表示该路由只能通过发布路由器可达。
满足以下条件时,在LSA中设置转发地址:
当OSPF能够解析该转发地址时,接收到该LSA的路由器可以使用该转发地址。如果不直接解析转发地址——路由器将LSA转发地址的下一跳设置为网关,如果不直接解析转发地址——网关为origin -id。解析只使用OSPF实例路由,而不是整个路由表。
让我们看看下面的示例设置:
路由器R1有到外部网络的静态路由192.168.0.0 / 24.R1、R2、R3之间运行OSPF协议,静态路由分布在OSPF网络中。
这样设置的问题很明显,R2不能直接到达外部网络。进入局域网的流量来自R2会通过路由器转发吗R1,但是如果我们看一下网络图,我们可以看到更多的R2可以直接到达LAN网络所在的路由器。
因此,了解转发地址的情况,我们就可以制作路由器R1设置转发地址。我们只需要将10.1.101.0/24网络添加到路由器的OSPF网络中R1配置:
/routing/ospf/interface-template add area=backbone_v2 networks=10.1.101.0/24
现在让我们验证一下转发地址是否正常工作:
[admin@r2] /ip/route> print where dst-address=192.168.0.0/24 Flags: D - DYNAMIC;A -活跃的;o, y - COPY列:DST-ADDRESS,网关,距离DST-ADDRESS网关距离DAo 192.168.0.0/24 10.1.101.1% ether1110
在所有OSPF路由器上,你会看到LSA的转发地址不是0.0.0.0
[admin@r2] /routing/ospf/lsa> print where id=192.168.0.0 Flags: S - self-originate, F - flushing, W - wraparound;D - dynamic 1 D instance=default_ip4 type="external" originator=10.1.101.10 id=192.168.0.0 sequence=0x80000001 age=19 checksum=0xF336 body= options=E netmask=255.255.255.0 forwarding-address=10.1.101.1 metric=10 type-1 route-tag=0
10.1.101.0/24网络中的路由器之间不需要建立OSPF邻接关系
OSPF是一种链路状态协议,它假定路由器的接口是OSPF链路。OSPF一旦启动,就会添加本地所有链路的状态链路状态数据库.
在OSPF网络完全发挥作用之前,有几个步骤:
链路状态路由协议是描述路由拓扑结构的分布和复制数据库。链路状态协议的泛洪算法确保每台路由器都有一个相同的链路状态数据库,并根据该数据库计算路由表。
在完成上述所有步骤后,每个邻居上的链路状态数据库包含完整的路由域拓扑(网络中有多少其他路由器,路由器有多少接口,路由器之间连接的网络,每条链路的成本等)。
OSPF使用89号协议在IP网络层上运行。
目的地址设置为邻居的IP地址或OSPF组播地址AllSPFRouters(224.0.0.5)或alldrrouter(224.0.0.6)中的一个。本文稍后将描述这些地址的使用。
每个OSPF包都以一个标准的24字节报头开始。
场 | 描述 |
---|---|
包类型 | OSPF报文分为Hello报文、DD报文、链路状态请求报文、链路状态更新报文和链路状态确认报文。除了Hello报文外,所有这些报文都用于链路状态数据库同步。 |
路由器ID | 一个路由器的IP地址,除非手动配置 |
区域ID | 允许OSPF路由器将报文关联到相应的OSPF区域。 |
校验和 | 允许接收路由器确定数据包是否在传输过程中损坏。 |
身份验证领域 | 这些字段允许接收路由器验证报文的内容没有被修改,并且报文确实来自router ID出现在报文中的OSPF路由器。 |
有五种不同的OSPF报文类型用于保证LSA在OSPF网络中正确传播。
OSPF通过在配置的接口外定期发送Hello报文来发现潜在的邻居。默认情况下你好,包每隔10秒发送一次,可以通过设置hello-interval配置OSPF接口。当路由器收到邻居发送的带有匹配参数的Hello报文时,就知道有邻居存在。
通过发送和接收Hello报文,路由器还可以检测到邻居的故障。如果没有收到Hello报文dead-interval(默认为40秒)路由器开始围绕故障路由数据包。“Hello”协议是为了保证邻居路由器在Hello报文的时间间隔和死亡时间间隔参数上达成一致,以防止由于没有及时收到Hello报文而导致链路错误断开。
场 | 描述 |
---|---|
网络掩码 | 源路由器接口IP地址的掩码。 |
你好间隔 | Hello报文间隔时间(缺省为10秒) |
选项 | OSPF邻居信息的选项 |
路由器优先 | 用来帮助选举DR和BDR的8位值。(p2p链路中不设置) |
路由器失效时间 | 在认为邻居down之前,需要接收到时间间隔。(默认情况下比Hello间隔大4倍) |
博士 | 当前DR的router-id |
BDR | 当前BDR的router-id |
邻居路由器id | 所有原始路由器邻居的路由器id列表 |
在每种类型的网段上,Hello协议的工作方式略有不同。很明显,在点到点段上,只有一个邻居是可能的,并且不需要额外的操作。但是,如果一个段上可以有多个邻居,则需要采取额外的措施使OSPF的功能更加有效。
只有满足以下条件,两台路由器才能成为邻居。
网络掩码、优先级、DR和BDR字段仅在邻居为广播网段或NBMA网段时使用。
连接到广播子网的节点可以发送单个数据包,该数据包被所有其他连接的节点接收。这对于自动配置和信息复制非常有用。广播子网中另一个有用的功能是组播。此功能允许发送单个数据包,该数据包将被配置为接收多播数据包的节点接收。OSPF使用此功能查找OSPF邻居并检测双向连通性。
考虑如下图所示的以太网网络。
! !博斯曼! !广播网络
每台OSPF路由器加入IP组播组AllSPFRouters(224.0.0.5),然后路由器周期性地将Hello报文发送到IP地址224.0.0.5。所有加入同一组的其他路由器将收到一个多播Hello报文。通过这种方式,OSPF路由器通过发送单个报文而不是向该段上的每个邻居发送单独的报文来维持与所有其他OSPF路由器的关系。
这种方法有几个优点:
通过组播或广播Hello报文自动发现邻居。与其他子网类型相比,带宽占用更少。在broadcast段上,有n*(n-1)/2个邻居关系,但是这些邻居关系通过发送n个hello来维持。如果广播具有组播能力,则OSPF运行时不会干扰广播段上的非OSPF节点。如果不支持组播功能,所有的路由器都会收到广播的Hello报文,即使该节点不是OSPF路由器。
NBMA (Non-broadcast multiaccess)报文段与广播报文段类似。支持两台以上路由器,唯一的区别是NBMA不支持数据链路广播能力。因此,OSPF邻居必须先通过配置发现。在Rol雷竞技uterOS上,静态邻居配置是在/routing ospf static-neighbor
菜单。为了减少Hello流量,大多数NBMA子网下的路由器的Router优先级都应该设置为0 (RouterOS默认设置)。l雷竞技有资格成为指定路由器的路由器的优先级值不能为0。它保证在DR和BDR的选举过程中,hello报文只发送给符合条件的路由器。
点对多点将网络视为点对点链接的集合。
根据设计,PTMP网络不应该具有广播功能,这意味着OSPF邻居(与NBMA网络一样)必须首先通过配置发现,并且所有通信都是通过在邻居之间直接发送单播数据包进行的。在Rol雷竞技uterOS上,静态邻居配置是在/routing ospf static-neighbor
菜单。指定路由器和备份指定路由器在点到多点子网上不选举。
对于支持广播的PTMP网络,一种名为“ptmp-broadcast可以使用。该类型通过组播hello报文自动发现邻居,检测邻居之间的双向通信。邻居检测后ptmp-broacast直接向发现的邻居发送单播报文。该模式与RouterOS v6兼容。l雷竞技ptmp”类型。
在数据库同步开始之前,必须建立交换信息的层次顺序,这决定了哪个路由器发送信息数据库描述符(DD)数据包(主).选择主路由器最高优先级如果没有设置优先级,则路由器ID将被使用。请注意,这是一种基于路由器优先级的关系,用于安排邻居之间的交换数据,它不影响DR/BDR的选举(即博士不总是必须的吗主).
OSPF路由器之间的链路状态数据库同步非常重要。不同步的数据库可能导致路由表计算错误,从而导致路由循环或黑洞。
数据库同步有两种类型:
当两个邻居之间的连接第一次出现时,初始数据库同步将会发生。OSPF在邻居连接首次出现时显式下载数据库。这个过程叫做数据库交换.OSPF路由器在OSPF序列中只发送自己的LSA头,而不是发送整个数据库数据库描述(DD)包。只有当前一个DD报文被确认后,路由器才会发送下一个DD报文。当接收到整个DD报文序列时,路由器知道哪些lsa是最近的,哪些lsa是没有的。然后路由器发送链路状态请求(LSR)报文请求所需的lsa,邻居以泛洪的方式响应链路状态更新(LSU)包。在接收到所有更新后,邻居被称为完全相邻.
可靠泛洪是另一种数据库同步方法。当邻接关系已经建立,并且OSPF路由器希望将LSA的变化通知给其他路由器时,使用此命令。OSPF路由器接收到这种LSA更新后,会在链路状态数据库中安装一条新的LSA,并向发送方发送确认报文,并将LSA重新封装在新的LSU中,然后发送给除最初收到LSA的接口外的所有接口。
OSPF通过比较序列号来确定lsa是否是最新的。序号以0×80000001开头,序号越大表示LSA越新。每次淹没记录时,序列号递增,接收更新的邻居重置最大年龄定时器。LSA每30分钟刷新一次,如果不刷新,LSA在数据库中的最长保存时间为60分钟。
数据库并不总是在所有OSPF邻居之间同步,OSPF根据网段来决定是否需要同步数据库。例如,在点到点链路上,数据库总是在路由器之间同步,但在以太网网络中,数据库只在某些邻居对之间同步。
在广播段上,如果存在n*(n-1)/2个邻居,那么如果OSPF路由器试图与子网内的每台OSPF路由器同步,将会有大量的链路状态更新和确认报文通过子网发送。
这个问题通过选举一个人来解决指定路由器和一个备份指定路由器对于每个广播子网。所有其他路由器都只与这两个被选中的路由器同步并形成邻接关系。这种方法将邻接的数量从n*(n-1)/2减少到只有2n-3。
右图说明了广播子网上的邻接结构。路由器R1和R2分别为指定路由器和备份指定路由器。例如,如果R3想向R1和R2发送链路状态更新(Link State Update, LSU),则路由器将LSU发送到IP组播地址AllDRouters(224.0.0.6),只有DR和BDR会收听这个组播地址。然后,指定路由器发送LSU地址给AllSPFRouters,更新其余的路由器。
DR和BDR路由器是从Hello报文中接收到的数据中选出来的。子网中的第一个OSPF路由器总是被选为指定路由器,当添加第二个路由器时,它将成为备份指定路由器。当已有DR或BDR失效时,根据配置选择新的DR或BDR路由器优先.优先级最高的路由器成为新的DR或BDR。
指定路由器或备份指定路由器会消耗额外的资源。如果Router Priority设置为0,则表示该路由器不参与选举过程。如果某些较慢的路由器不能进行DR或BDR,这是非常有用的。
NBMA网络上的数据库同步与广播网络上的数据库同步相似。DR和BDR是由选举产生的,数据库最初只与DR和BDR路由器交换,洪水总是经过DR,唯一的区别是Link State update必须被复制并分别发送给相邻的每个路由器。
在PTMP子网中,OSPF路由器与所有可以直接通信的路由相邻。
OSPF的一个显著特点是可以将自治系统划分为多个路由区域,每个路由区域包含自己的一组邻居。
想象一个拥有300多个路由器的大型网络,它们之间有多条链路。每当网络中发生链路震荡或其他一些拓扑变化时,这种变化就会波及到网络中的所有OSPF设备,从而导致网络上相当重的负载,甚至停机,因为对于这样一个大型网络来说,网络收敛可能需要一些时间。
大型的单区域网络会产生严重的问题:
区域的引入允许更好的资源管理,因为一个区域内的拓扑变化不会淹没到网络中的其他区域。区域的概念简化了网络管理以及区域之间的路由汇总,大大减少了需要存储在每个OSPF邻居上的数据库大小。这意味着每个区域都有自己的链路状态数据库和相应的最短路径树。
一个区域的结构对其他区域是不可见的。如果使用多个区域,这种知识隔离使协议更具可扩展性;路由表计算占用的CPU资源减少,路由流量减少。
然而,多区域设置会带来额外的复杂性。不建议路由器数量少于50台的区域划分。一个区域内路由器的最大数量主要取决于您用于路由表计算的CPU能力。
OSPF区域具有唯一的32位标识(area ID),区域ID为0.0.0.0的区域称为骨干区域(Backbone area),是其他区域连接的主要区域。连接多个区域的路由器被称为路由器上区域边界路由器(Area Border Routers),其主要职责是在连接区域之间进行汇总和抑制更新。连接到另一个路由域的路由器被调用ASBR(自治系统边界路由器)。
每个区域都有自己的链路状态数据库,由路由器lsa和网络lsa组成,描述该区域内所有路由器的互连情况。区域拓扑的详细信息对所有其他区域都是隐藏的;router- lsa和network- lsa不会扩散到区域之外。区域边界路由器(上5)在OSPF summary- lsa中,地址信息从一个区域泄漏到另一个区域。这允许一个选择最好的区域边界路由器时,将数据转发到目的地从另一个区域和被调用内部路由.
区域之间的路由信息交换本质上是一种距离矢量算法,为了防止算法出现收敛问题,比如计数到无穷大,所有的区域都需要直接连接到骨干区域创建一个简单的轮辐拓扑。骨干区域的area- id始终为0.0.0.0,不可修改。
l雷竞技RouterOS区域配置在/ / ospf路由/面积
菜单。例如,ABR路由器配置多个附加区域、一个Stub区域和一个缺省区域:
/routing ospf area add name=backbone_v2 area-id=0.0.0.0 instance=v2inst add name=stub_area area-id=1.1.1.1 instance=v2inst type=stub add name=another_area area-id=2.2.2.2 instance=v2inst type=default
OSPF可以有5种类型的区域。每个区域类型定义了该区域支持的lsa类型:
在我们继续详细了解每个区域类型之前,让我们先熟悉一下LSA类型:
如果没有ASBR,则网络中没有类型4和类型5的LSA。
该区域支持1、2、3、4、5种lsa。
使用默认区域的简单多区域网络。本例中,来自area1的所有网络都被扩散到骨干网络,来自骨干网络的所有网络都被扩散到area1。
R1:
/ip地址add address=10.0.3.1/24 interface=ether1 /ip地址add address=10.0.2.1/24 interface=ether2 /路由ospf实例add name=v2inst version=2 router-id=1.0.0.1 /路由ospf区域add name=backbone_v2 area-id=0.0.0.0 instance=v2inst add name=area1 area-id=1.1.1.1 type=default instance=v2inst /路由ospf接口模板add networks=10.0.2.0/24 area=backbone_v2 add networks=10.0.3.0/24 area=area1
R2:
/ip地址add address=10.0.1.1/24 interface=ether2 /ip地址add address=10.0.2.2/24 interface=ether1 /路由ospf实例add name=v2inst version=2 router-id=1.0.0.2 /路由ospf区域add name=backbone_v2 area-id=0.0.0.0 /路由ospf接口模板add networks=10.0.2.0/24 area=backbone_v2 add networks=10.0.1.0/24 area=backbone_v2
R3:
/ip address add address=10.0.3.2/24 interface=ether2 /ip address add address=10.0.4.1/24 interface=ether1 /routing ospf instance add name=v2inst version=2 router-id=1.0.0.3 /routing ospf area add name=area1 area-id=1.1.1.1 type=stub instance=v2inst /routing ospf interface-template add networks=10.0.3.0/24 area=area1 add networks=10.0.4.0/24 area=area1
存根区域的主要目的是防止这些区域携带外部路由。从这些区域到外部世界的路由基于缺省路由。stub区域减少了区域内数据库的大小,降低了区域内路由器对内存的需求。
stub区域有一些限制,ASBR路由器不能进入该区域,stub区域不能作为虚连接的中转区域。由于stub区域主要配置为不承载外部路由,所以需要进行这些限制。
该区域支持1、2、3种lsa。
让我们考虑一下上面的例子。Area1被配置为stub区域,这意味着路由器R2和R3将不会从骨干区域接收到除缺省路由以外的任何路由信息。
R1:
/routing ospf instance add name=v2inst version=2 router-id=1.0.0.1 /routing ospf area add name=backbone_v2 area-id=0.0.0.0 instance=v2inst add name=area1 area-id=1.1.1.1 type=stub instance=v2inst /routing ospf interface-template add networks=10.0.0.0/24 area=backbone_v2 add networks=10.0.1.0/24 area=area1 add networks=10.0.3.0/24 area=area1
R2:
/routing ospf interface-template add name=v2inst version=2 router-id=1.0.0.2 /routing ospf area add name=area1 area-id=1.1.1.1 type=stub instance=v2inst /routing ospf interface-template add networks=10.0.1.0/24 area=area1
R3:
/routing ospf interface-template add name=v2inst version=2 router-id=1.0.0.3 /routing ospf area add name=area1 area-id=1.1.1.1 type=stub instance=v2inst /routing ospf interface-template add networks=10.0.3.0/24 area=area1
全短根面积是短根面积的延伸。一个完全粗短的区域阻止外部路由和汇总(区域间)路由进入该区域。只有区域内路由才能注入该区域。完全stub区域配置为带有附加的stub区域no-summaries
国旗。本区域支持配置缺省路由的Type 1、Type 2和Type 3 lsa。
/routing ospf area add name=totally_stubby_area area-id=1.1.1.1 instance=v2inst type=stub no- summary
当需要注入外部路由,但不需要注入type - 5 LSA路由时,NSSA (not -so-stubby area)非常有用。
该图显示了两个区域(骨干和area1)以及与位于“area1”的路由器的RIP连接。我们需要将“area1”配置为stub区域,但也需要在骨干区域注入外部RIP路由。此时应将Area1配置为NSSA。
配置示例不包括把配置。
R1:
/routing ospf instance add name=v2inst version=2 router-id=1.0.0.1 /routing ospf area add name=backbone_v2 area-id=0.0.0.0 instance=v2inst add name=area1 area-id=1.1.1.1 type=nssa instance=v2inst /routing ospf interface-template add networks=10.0.0.0/24 area=backbone_v2 add networks=10.0.1.0/24 area=area1
R2:
/routing ospf instance add name=v2inst version=2 router-id=1.0.0.2 /routing ospf area add name=area1 area-id=1.1.1.1 type=nssa instance=v2inst /routing ospf interface-template add networks=10.0.1.0/24 area=area1
NSSA区域不能使用虚连接。
在OSPF路由域的边缘,可以找到称为AS边界路由器(asbr)运行其他路由协议之一的。这些路由器的任务是将从其他路由协议中学到的路由信息引入OSPF路由域。外部路由可以根据度量类型在两个不同的级别上导入。
外部路由可以通过实例导入重新分配
参数。下面的例子将挑选并重新分配所有静态路由和RIP路由:
/routing ospf instance add name=v2inst version=2 router-id=1.2.3.4 redistribute=static,rip
重新分配缺省路由是一种特殊情况originate-default
该参数应使用:
/routing ospf instance set v2inst originate-default=if-installed
因为再分配是由originate-default
"和"重新分配
参数时,引入了缺省路由过滤的一些极端情况。
重新分配
,则选择所有匹配重分发参数的路由originate-default=从来没有
,默认路由将被拒绝out-select-chain
(如果配置)out-filter-chain
(如果配置)originate-default
设为总是
或if-installed
:out-filter-chain
可以应用属性,但忽略动作(总是accept);有关重新分配值的完整列表,请参阅参考手册。
路由摘要是将多条路由合并到一个单独的广告中。它通常在区域边界(区域边界路由器)完成。
最好是沿着主干的方向总结。这样主干接收到所有聚合的路由,并将它们注入到其他已经汇总的区域。聚合有两种类型:区域间聚合和外部路由聚合。
区域间路由聚合作用于区域边界(abr),不适用于通过重新分配注入OSPF的外部路由。缺省情况下,ABR为特定区域内的每条路由创建summary LSA,并在相邻区域发布。
使用范围可以为多条路由只创建一条summary LSA,并且只向相邻区域发送一条通告,或者完全抑制通告。
如果一个范围配置了'做广告
参数,如果该区域内存在该范围下的路由,则对每个范围发布一条summary LSA。否则(当)做广告
参数disable)则不会在区域边界外创建和发布summary lsa。
区域间路由聚合可以从OSPF区域范围菜单。
假设我们有两个区域backbone和area1, area1有几条来自10.0.0.0/16范围的/24路由,如果可以总结,就不需要用每个/24子网淹没骨干区域。在连接area1和骨干网络的路由器上,我们可以设置区域范围:
/routing ospf area range add prefix=10.0.0.0/16 area=area1 advertise=yes cost=10
对于一个活动范围(即至少有一条来自指定区域的OSPF路由落在它下面),创建一条“黑洞”类型的路由并安装在路由表中。
外部路由聚合可以使用路由过滤器来实现。让我们考虑与上面相同的例子,只是area1重新分配了来自其他协议的/24路由。要发送一条summary - LSA,必须添加一条黑洞路由,并添加适当的路由过滤器,只接受summary - LSA:
/ip route add st-address=10.0.0.0/16 blackhole /routing instance set v2inst out-filter-chain=ospf_out /路由过滤规则add chain=ospf_out规则="if (dst == 10.0.0.0/16) {accept} else {reject}"
正如前面提到的,所有OSPF区域都必须连接到骨干区域,但有时物理连接是不可能的。为了克服这个问题,可以使用虚拟链接.
使用虚连接的常见场景有两种:
OSPF允许骨干区域中不连续的部分通过虚连接连接起来。当两个独立的OSPF网络合并为一个大网络时,可能需要这样做。可以在各个abr之间配置虚连接,这些abr与骨干区域相互接触,并且有一个公共区域。
如上图所示,当公共区域不存在时,额外的区域可以被创建为过境区域。
对非骨干区域进行分区时,不需要虚连接。OSPF不主动尝试修复区域分区,当一个区域被分区时,每个组件只是成为一个单独的区域。主干网在新区域之间进行路由。有些目的地可以通过内部路由时,需要划分区域inter-area路由。
但是,为了在分区后保持完整的路由,地址范围不能在区域分区的多个组件之间分割。
当一个区域与骨干网没有物理连接时,虚连接可以为断开的区域的骨干网提供一条逻辑路径。必须在两个ABR之间建立一条链路,这些ABR有一个公共区域,其中一个ABR连接到主干。
可以看到R1和R2都是abr, R1连接到骨干区域。a2将用作a交通领域R1是入口点进入骨干区。两台路由器上都需要配置虚连接。
OSPF接口模板中添加虚连接配置。如果我们从“无物理连接”的例子中选择设置,那么虚拟链路的配置看起来是这样的:
R1:
/routing ospf interface-template add vlink-transit-area=area2 area=backbone_v2 type=virtual-link vlink-neighbor-id=2.2.2.2
R2:
/routing ospf interface-template add vlink-transit-area=area2 area=backbone_v2 type=virtual-link vlink-neighbor-id=1.1.1.1
子菜单:/ / ospf路由/实例
财产 | 描述 |
---|---|
域名是(十六进制|地址) | MPLS-related参数。标识实例所属的OSPF域。该值附加在作为VPNv4路由在BGP中重新分发的OSPF路由上,作为BGP扩展团体属性。当BGP VPNv4路由重新分发回OSPF时,使用该值来决定该路由是否生成区域间LSA或as -external LSA。缺省情况下,使用Null domain-id,如RFC 4577所述。 |
domain-tag(整数(0 . . 4294967295)) | 如果设置了该参数,则用于路由重新分配(在该路由器生成的所有外部lsa中作为route-tag)和路由计算(所有具有该路由标记的外部lsa都被忽略)。需要与旧的思科系统互操作性。缺省情况下不设置。 |
在滤波(字符串) | 名称路由过滤器用于输入前缀的链 |
mpls-te-address(字符串) | 用于MPLS流量工程的区域。TE Opaque lsa是在该区域生成的。配置mpls-te-area的OSPF实例不能超过一个。 |
mpls-te-area(字符串) | 用于MPLS流量工程的区域。TE Opaque lsa是在该区域生成的。配置mpls-te-area的OSPF实例不能超过一个。 |
originate-default(总是| if-installed |从不;默认值:从来没有) | 指定缺省路由(0.0.0.0/0)的分发方式。 |
out-filter-chain(名字) | 名称路由过滤器用于外发前缀过滤的链 |
out-filter-select(名字) | 路由过滤器选择链的名称,用于输出选择 |
重新分配(边界网关协议、连接、复制、dhcp、幻想,调制解调器,ospf,撕裂,静态的,vpn;) | 启用特定路由类型的重分发。 |
路由器id(IP |名称;默认值:主要) | OSPF路由器ID。可以显式设置为IP地址,也可以设置为router-id实例的名称。 |
版本(2 | 3;默认值:2) | 本实例运行的OSPF版本号(IPv4为v2, IPv6为v3)。 |
多联机(路由表名;默认值:主要) | 该OSPF实例运行的VRF表 |
use-dn(是|否) | 强制使用或忽略DN位。在某些CE - PE场景下,可以将区域内路由注入VRF。如果不设置参数,则根据RFC使用DN位。从v6rc12开始可用。 |
OSPF协议支持两种类型的度量:
子菜单:/ / ospf路由/面积
财产 | 描述 |
---|---|
区域id(IP地址;默认值:0.0.0.0) | OSPF区域标识符。如果路由器在多个区域中有网络,则必须始终存在一个area-id=0.0.0.0(骨干)的区域。主干总是包含所有的区域边界路由器。骨干网负责在非骨干区域之间分发路由信息。骨干网必须是连续的,即不能有断开的网段。但是,区域边界路由器不需要与骨干网进行物理连接,可以使用a虚拟链接。 |
违约成本(整数;设置) | 区域内注入lsa的缺省开销。如果不设置该值,则不会产生stub区域type-3缺省LSA。 |
实例(名字;强制性的) | 该区域所属的OSPF实例名称。 |
no-summaries() | 标志参数,如果设置了该参数,则不扩散stub区域内的summary lsa。 |
名字(字符串) | 区域的名称 |
nssa-translate(是|否|候选人) | 该参数表示将使用哪个ABR作为type7到type5 LSA的转换器。仅当区域类型为NSSA时适用
|
类型(默认值| nssa | stub;默认值:默认的) | 区域类型。阅读更多关于OSPF案例研究中的区域类型。 |
子菜单:/ / ospf路由/区域/范围
财产 | 描述 |
---|---|
做广告(是|否;默认值:是的) | 是否创建summary LSA并发布到邻近区域。 |
区域(名字;强制性的) | 与此范围相关联的OSPF区域 |
成本(整数(0 . . 4294967295)) | 此范围将创建的summary LSA的开销 Default -使用开销最大的路由(即在此范围内的路由) |
前缀(IP前缀;强制性的) | 该范围的网络前缀 |
子菜单:/ / ospf路由/接口
只读匹配接口菜单
子菜单:/ / ospf路由/ interface-template
接口模板定义了常见的网络和接口匹配,以及为匹配的接口分配的参数。
财产 | 描述 |
---|---|
接口(名字) |
匹配的接口。接受指定的接口名称或接口列表的名称。 |
网络(IP前缀) | 与该区域关联的网络前缀。在此范围内至少有一个地址的所有接口都会启动OSPF。请注意,此检查使用地址的网络前缀(即不是本地地址)。对于点到点接口,这意味着远程端点的地址。 |
财产 | 描述 |
---|---|
区域(名字;强制性的) | 匹配接口要关联到的OSPF区域。 |
身份验证(Simple | md5 | sha1 | sha256 | sha384 | sha512) | 指定OSPF协议消息的认证方式。
如果未设置该参数,则不使用身份验证。 |
auth-id(整数) | 密钥id用于计算消息摘要(启用MD5或SHA认证时使用)。该值应该匹配同一区域内的所有OSPF路由器。 |
认证密钥(字符串) | 要使用的认证密钥必须与网段的所有邻居匹配。 |
评论(字符串) | |
成本(整数(0 . . 65535]) | 以链路状态度量表示的接口开销。 |
dead-interval(时间;默认值:40年代) | 指定邻居被宣布死亡的时间间隔。该时间间隔在hello报文中发布。对于同一网络中的所有路由器,该值必须相同,否则不会形成邻接关系 |
禁用(是|否) | |
hello-interval(时间;默认值:十年代) | 之间的间隔你好路由器从该接口发出的报文。该间隔越小,检测到拓扑变化的速度越快,权衡的是更多的OSPF协议流量。同一网络中的所有路由器必须设置相同的值,否则路由器之间不会形成邻接关系。 |
实例id(我nteger [0 . . 255];默认值:0) | |
被动() | 如果使能,则在匹配的接口上不发送或接收OSPF流量 |
prefix-list(名字) | 包含要发布到v3接口的网络的地址列表名称。 |
优先级(整数:0 . . 255;默认值:128) |
路由器的优先级。用于确定广播网络中指定的路由器。优先级高的路由器优先。优先级值为0表示路由器根本没有资格成为指定或备份指定路由器。 ROS v7的默认值是128(在RFC中定义),而ROS v6的默认值是1,如果您为DR/BDR选举设置了严格的优先级,请记住这一点。 |
retransmit-interval(时间;默认值:5 s) | 重发丢失的链路状态通告的时间间隔。当一台路由器向它的邻居发送一条LSA (link state advertisement)时,该LSA将一直保存到收到确认为止。如果未及时收到确认(参见transmit-delay),路由器将尝试重传该LSA。 |
transmit-delay(时间;默认值:1) | 链路状态发送延迟是指在接口上发送链路状态更新报文所需的估计时间。 |
类型(广播| nbma | PTP | PTMP | PTP -unnumbered | virtual-link;默认值:广播) | 接口上的OSPF网络类型。注意,如果没有接口配置,则PtP接口的默认网络类型为“点对点”,其他所有接口的默认网络类型为“广播”。
|
vlink-neighbor-id(知识产权) | 指定了路由器id需要通过虚连接连接的邻居的名称。 |
vlink-transit-area(名字) | 两台路由器共有的非骨干区域,虚连接将在该区域上建立。stub区域不能建立虚连接。 |
子菜单:/ / ospf路由/救生设备
当前在LSA数据库中的所有LSA的只读列表。
财产 | 描述 |
---|---|
年龄(整数) | 上次更新发生在多久以前(以秒为单位) |
区域(字符串) | LSA所属的区域。 |
身体(字符串) | |
校验和(字符串) | LSA校验和 |
动态(是|否) | |
冲洗(是|否) | |
id(知识产权) | LSA记录ID |
实例(字符串) | LSA所属的实例名。 |
链接(字符串) | |
link-instance-id(知识产权) | |
发起者(知识产权) | LSA记录的发起者。 |
self-originated(是|否) | LSA是否来源于路由器本身。 |
序列(字符串) | 日志含义一条链路的LSA更新次数。 |
类型(字符串) | |
包着的(字符串) |
子菜单:/ / ospf路由/邻居
当前激活的OSPF邻居的只读列表。
财产 | 描述 |
---|---|
地址(知识产权) | OSPF邻居路由器的IP地址 |
邻接(时间) | 邻接关系形成后经过的时间 |
区域(字符串) | |
bdr(字符串) | 备份指定路由器的IP地址 |
评论(字符串) | |
db-summaries(整数) | |
博士(知识产权) | 指定路由器的IP地址 |
动态(是|否) | |
不活跃的(是|否) | |
实例(字符串) | |
ls-requests(整数) | |
ls-retransmits(整数) | |
优先级(整数) | 邻居配置的优先级 |
路由器id(知识产权) | 邻居路由器的RouterID |
状态(down | attempt | init | 2-way | ExStart | Exchange | Loading | full) |
|
状态改变(整数) | OSPF自邻居识别以来状态变化的总数 |
子菜单:/ / ospf路由/ static-neighbor
OSPF邻居的静态配置。适用于非广播多址网络。
财产 | 描述 |
---|---|
地址(IP % iface;强制性的) | 单播IP地址和接口,用来到达邻居的IP地址。例如,地址=1.2.3.4%ether1 表示有IP地址的邻居为1.2.3.4可在ether1接口。 |
区域(名字;强制性的) | 邻居所属区域的名称。 |
评论(字符串) | |
禁用(是|否) | |
实例id(整数(0 . . 255];默认值:0) | |
轮询间隔(时间;默认值:2米) | 多长时间向处于“down”状态(即没有来自它们的流量)的邻居发送hello消息? |