OSPF多实例路由防环检测功能介绍

  • 普通OSPF防环功能
  • 新的改变,引入新的问题
  • BGP/MPLS/VPN组网环境
    • 1、 Domain ID
      • 什么是Domain ID?
      • BGP传这个值有什么用?
      • 这个值如何得来?
    • 2、 OSPF 路由类型
      • (1) 区域(Area)号: 4字节
      • (2) OSPF路由类型:
      • (3) Option选项:
    • 3、 OSPF Router ID:
  • OSPF如何从BGP接收路由
    • 1. 判断OSPF路由类型属性,如果是5类或者7类外部路由:
    • 2. 判断OSPF路由类型属性,如果是1/2/3类内部路由:
  • 什么是VPN-route-TAG和DN位?
    • VPN-route-TAG
    • DN位
    • 举例说明
      • 第一种情况:
      • 第二种情况:

普通OSPF防环功能

一、区域防环
为了避免区域间的环路,ospf规定不允许直接在两个非骨干区域之间发送路由信息,只允许在一个区域内部或者骨干区域和非骨干区域之间发布路由信息。因此,每个区域边界路由器都必须连接到骨干区域。

二、区域间水平分割
ABR只会将三类LSA转发到骨干区域,如果始发的是本区域的路由是不会被再次注入进来的,目的是为了阻止环路。

三、LSA三类防环
ABR不会向区域0传播它在区域0中学习到的类型为三类LSA的路由,因为这本来就是从区域0传来的,ABR不会计算从非骨干区域来的三类LSA,防止次优路径。

新的改变,引入新的问题


上图所示用户的某一个VPN site采用PE双归属,CE设备分别与PE1和PE2之间运行OSPF路由协议,这是PE n向VPN内引入一条直连路由至BGP4+中发布,PE1学习到以后,会将这了路由告诉给下面的CE。思考这种组网中会有环路么?

首先可以确认PE1会将BGP路由转换成LSA发送给CE,CE又通过LSA传递给PE2,PE2一旦通过LSA计算出路由,那么就会形成路由环路,并且造成路由震荡。出现这种情况后,通过OSPF原有的防环路机制是无法解决的,由此OSPF多实例中新加了相关特性来解决这个问题。

BGP/MPLS/VPN组网环境


在BGP协议产生之后,OSPF要求BGP将OSPF路由从用户的一个SITE穿越骨干网传到另外一个SITE的时候,要保留OSPF的拓扑信息。
属性OSPF协调的我们知道OSPF的拓扑信息包含在OSPF的intra-LSA里面,要想保留拓扑信息,BGP最好就是能够将OSPF的LSA传到对端,而不是将OSPF路由传到对端。BGP4+的RT属性是作为BGP的扩展属性放在BGP的一个叫Extended Community的地方,其实BGP的Extended Community不只是用来放RT属性,还可以用来携带OSPF的LSA信息,我们可以将他称为OSPF属性,下面以一个BGP路由举例说明:

[h3c]display bgp routing-table ipv4 vpn-instance vpn 1.1.1.5 BGP local router ID: 1.1.1.2Local AS number: 100Paths:   1 available, 1 bestBGP routing table information of 1.1.1.5/32:From            : 1.1.1.4 (1.1.1.4)Rely nexthop    : 11.1.1.2Original nexthop: 1.1.1.4OutLabel       : 1277==Ext-Community== : <OSPF Domain Id: 0.0.0.0:0>, <OSPF ==Router Id:1.1.1.4:0:0==>, <OSPF  ==AreaNum: 0.0.0.0==  ==RouteType: 5== Option: 1>, <RT: 1:1>AS-path         : (null)Origin          : incompleteAttribute value : MED 2, localpref 100, pref-val 0State           : valid, internal, best IP precedence   : N/AQoS local ID    : N/ATraffic index   : N/A

1、 Domain ID

什么是Domain ID?

Domain ID是一个用来表示OSPF域标识符。不同的域之间属于不同的OSPF进程管理范围,不同的域之间的OSPF路由以外部路由形式交互。OSPF Domain Identifier扩展团体属性,OSPF进程被绑定到VRF后就有一个Domain ID,该ID在PE将OSPF路由引入到BGP时,域标识符被附加到BGP VPNv4路由上,作为BGP的扩展团体属性传递给对端PE。对端PE接收到BGP路由后,将本地配置的OSPF域标识符和路由中携带的OSPF域标识符进行比较, 判断是否是一个域的路由,不是一个域(即Domain ID不同)则直接转换成AS-External路由。该属性可以更灵活的控制站点间的路由是AS-External 路由还是Type3路由
h3c设备默认该Domain ID为0,可以通过domain-id命令用来配置OSPF域标识符。

[h3c]display ospf verboseOSPF Process 1 with Router ID 1.1.1.4OSPF Protocol InformationRouterID: 1.1.1.4          Router type:  ABR  ASBR Route tag: 3489661028  PE Router, Multi-VPN-Instance is enabled Ext-community type: Domain ID 0x5, Route Type 0x306, Router ID 0x107Domain ID: 0.0.0.0

BGP传这个值有什么用?

用他来判断用户同一VPN的不同SITE是否属于同一个域。当BGP将OSPF路由从一个SITE传到另一个SITE时,如果两端SITE的OSPF的Domain ID值相同,那么这条路由将作为OSPF的intra(内部)路由;当BGP将OSPF路由从一个SITE传到另一个SITE时,如果两端SITE的OSPF的Domain ID值不相同,那么这条路由将作为OSPF的inter(外部)路由。

这个值如何得来?

Domain ID(共8个字节)一般采用如下得格式:

类型 Global administrator Local administrator
2 4 2

其中最前面2个字节表示Domain ID的类型,缺省我司采用类型0x0005

2、 OSPF 路由类型

这个部分包含三个内容,格式如下:

(1) 区域(Area)号: 4字节

区域号的来源非常简单,如果这条路由是OSPF的外部路由,区域号统一填写0;OSPF的内部路由,
填写这条路由所属的OSPF区域号即可。

(2) OSPF路由类型:

** 1 or 2 intra-area routes
** 3 summary routes
** 5 external routes (area number must be 0)
** 7 NSSA routes
注:――OSPF的1和4类LSA不会通过BGP携带至远端,所以所有的1和4类LSA都会直接被过滤掉不会引入BGP。

(3) Option选项:

目前用来表示5类LSA和7类LSA选用type1还是type2的metric度量方式。

3、 OSPF Router ID:

这部分是一个可选项,可传可不传,目的就是用来让接收者知道这条路由的发送者是谁。

OSPF如何从BGP接收路由

上述就是BGP协议在MPLS VPN实现中为OSPF特别作出的贡献,多携带了一些属性,那么OSPF是如何从BGP接收这样的路由的呢?这就是下一部分我们要给大家讲的内容。

当OSPF从BGP得到一条带着OSPF属性的路由,他会做如下的处理:

1. 判断OSPF路由类型属性,如果是5类或者7类外部路由:

那么将其用5类LSA作为ASE路由发给他的OSPF邻居(CE设备),并且将LSA的tag位改成VPN-route-TAG

[h3c]display ospf lsdb ase 1.1.1.5OSPF Process 1 with Router ID 1.1.1.2Link State DatabaseType      : ExternalLS ID     : 1.1.1.5Adv Rtr   : 1.1.1.2LS Age    : 1371Len       : 36Options   : O E Seq#      : 80000002Checksum  : 0x24bNet Mask  : 255.255.255.255TOS 0  Metric: 2E Type    : 2Forwarding Address : 0.0.0.0Tag       : 3489661028

2. 判断OSPF路由类型属性,如果是1/2/3类内部路由:

那么判断Domain ID属性是否与本地相同,判断方法如下:

1) 本地Domain ID为非空值,则收到的路由Domain ID与本地完全一致是认为相同(不能为空),否则认为不同;

2) 本地Domain ID为空,则收到任意Domain ID值认为与本地相同(也可以为空)。

如果Domain ID属性与本地不相同,则将其用5类LSA作为ASE路由发给他的OSPF邻居(CE设备),并且将LSA的tag位改成VPN-route-TAG

[h3c]display ospf lsdb ase 100.1.1.1OSPF Process 1 with Router ID 1.1.1.2Link State DatabaseType      : ExternalLS ID     : 100.1.1.1Adv Rtr   : 1.1.1.2LS Age    : 22Len       : 36Options   : O E Seq#      : 80000001Checksum  : 0x16d9Net Mask  : 255.255.255.255TOS 0  Metric: 1E Type    : 2Forwarding Address : 0.0.0.0Tag       : 3489661028
[h3c]display ospf routingOSPF Process 1 with Router ID 1.1.1.3Routing TableRouting for networkDestination        Cost     Type    NextHop         AdvRouter       Area3.3.3.0/24         2        Transit 2.2.2.2         1.1.1.2         0.0.0.02.2.2.0/24         1        Transit 0.0.0.0         1.1.1.3         0.0.0.0Routing for ASEsDestination        Cost     Type    Tag         NextHop         AdvRouter99.1.1.1/32        2        Type2   3489661028  2.2.2.2         1.1.1.24.4.4.0/24         1        Type2   3489661028  2.2.2.2         1.1.1.2100.1.1.1/32       1        Type2   3489661028  2.2.2.2         1.1.1.288.1.1.1/32        2        Type2   3489661028  2.2.2.2         1.1.1.21.1.1.5/32         2        Type2   3489661028  2.2.2.2         1.1.1.2

如果Domain ID属性与本地相同,则将其用3类LSA作为Summary路由发给他的OSPF邻居(CE设备),并将LSA的DN位置位。

[h3c]display ospf lsdb summary 100.1.1.1 OSPF Process 1 with Router ID 1.1.1.2Area: 0.0.0.0Link State DatabaseType      : Sum-NetLS ID     : 100.1.1.1Adv Rtr   : 1.1.1.2LS Age    : 341Len       : 28Options   : O E DN Seq#      : 80000001Checksum  : 0xcb63Net Mask  : 255.255.255.255Tos 0  Metric: 1
[h3c]display ospf routingOSPF Process 1 with Router ID 1.1.1.3Routing TableRouting for networkDestination        Cost     Type    NextHop         AdvRouter       Area100.1.1.1/32       2        Inter   2.2.2.2         1.1.1.2         0.0.0.04.4.4.0/24         2        Inter   2.2.2.2         1.1.1.2         0.0.0.03.3.3.0/24         2        Transit 2.2.2.2         1.1.1.2         0.0.0.02.2.2.0/24         1        Transit 0.0.0.0         1.1.1.3         0.0.0.0Routing for ASEsDestination        Cost     Type    Tag         NextHop         AdvRouter99.1.1.1/32        2        Type2   3489661028  2.2.2.2         1.1.1.288.1.1.1/32        2        Type2   3489661028  2.2.2.2         1.1.1.21.1.1.5/32         2        Type2   3489661028  2.2.2.2         1.1.1.2

什么是VPN-route-TAG和DN位?

看了上面的介绍,大家对哪一类路由转变成3类LSA,哪一类路由转变成5类LSA,OSPF将用户的同一VPN的多个SITE整合成一个整体应该没有太大的异议和困惑了,但是我们提出了两个新的概念那就是:VPN-route-TAGDN位。他们从何而来,又因何而来呢?

其实这两个概念都是OSPF为了适应MPLS VPN的特殊组网而新提出来的东西,他们的目的基本一致,都是为了防止路由环路。

VPN-route-TAG

首先是VPN-route-TAG,他的概念是:当一个VPN实例与某个OSPF绑定以后,设备就要给这个VPN实例分配一个Tag值,称为VPN-route-TAG。从它的概念我们可以看出这个值属于某一个VPN实例,无论OSPF有没有用到这个值这个值固定存在。

OSPF什么时候用这个值呢?当PE设备作为ASBR始发一条外部路由给CE设备时,要将VPN-route-TAG放在5类或7类LSA的tag位置再发给CE设备(注意包含了上述的加VPN-route-TAG的情况,也就是说从BGP4+重分布到OSPF,经过判断为5类。也包含在PE上引入其他类型的路由);

这个值又如何发挥防止路由环路的作用呢?这一点非常重要,OSPF规定,当PE设备的某一OSPF实例从其ospf邻居收到一条5类LSA时,则比较这条LSA所携带的tag值,如果这个值与本OSPF实例所绑定的VPN实例的VPN-route-TAG值相同则在SPF计算期间忽略该LSA,并不把这条LSA重发布到BGP4+中去。

VPN-route-TAG的值是多少呢?我们可以先看一看他的格式:

1 1 0 1 任意标记 自治系统号
1bit 1bit 1bit 1bit 12bit 16bit

前面4bit是表示tag类型;
中间12bit的任意标记缺省为0;
后面16bit为自治系统号。

DN位

另外一个类似的可以起到防止环路的新名词被成为DN位,他的概念是:它用来表示一个方向(down),当DN位被置位时说明这条LSA由PE发给CE。值得注意的是DN位只存在于3类LSA中;
OSPF什么时候将DN位置位呢?当PE路由器向CE路由器产生3类LSA时,将这种LSA的DN位置位(注意包含了上述的DN置位的情况,也就是说从BGP4+重分布到OSPF,经过判断以3类);
这个置位的动作又如何发挥防止路由环路的作用呢?OSPF规定,PE在接收到DN位已经置位了的LSA之后,PE路由器在OSPF路由的SPF计算期间忽略该LSA,并不把这条LSA重发布到BGP4+中去。

举例说明

为了更好的理解VPN-route-TAG和DN位,以一个简单的组网看一看他们是如何发挥作用的:

上图所示用户的某一个VPN site采用PE双归属,CE设备与PE1和PE2之间运行ospf路由协议,这是PEn向VPN内引入一条直连路由至BGP4+中发布,PE1学习到以后,会将这了路由告诉给下面的CE。

第一种情况:

假设CE学习到一条5类的OSPF路由10.0.0.1/24,CE又会将这条路由告诉给PE2,PE2也从PEn学到了一条10.0.0.1/24的BGP路由,但是因为ospf路由的优先级高,PE2会优选CE发给他的10.0.0.1/24的路由,并将这条由引入BGP发不给PE1和PEn。当然大家也看出来这时候有次优路由的问题,PE2会从CE绕一圈去访问PEn,但是更严重的问题是,如果这时候PEn处的10.0.0.1/24网段断开了,这是PEn会发一条BGP路由撤销消息给PE1和PE2,但是这时候PE1发现PEn的10.0.0.1/24路由是撤销了,但是自己还从PE2学到10.0.0.1/24的路由,所以PE1认为10.0.0.1/24网段仍然可达,当然PEn也会认为这个网段可达,那么我们想象PE2会不会撤销这条路由呢,PE2的这条路由是从CE学过来的CE的这条OSPF路由是从PE1学过来的,PE1认为10.0.0.1/24网段仍然可达,所以这条路由在CE上没有任何变化,这时候就造成了路由环路,甚至有的时候在PEn处的10.0.0.1/24还没有断开的时候,PE1可能会优选PE2的10.0.0.1/24路由,一开始就造成了环路。
这是大家一定很担心我们在很多项目里面都用了PE双归属,会不会有环路存在呢?其实我们采用ospf多实例是不会有这种问题的,在上述的情况下起作用的就是VPN-route-TAG,当PE1再将从PEn处收到的10.0.0.1/24以ospf 5类路由形式发给CE的时候,会给他加上一个VPN-route-TAG,这个值再不做任何改动的时候只与AS号相关,PE2收到这条路由的时候自然得到结果是和自己的VPN-route-TAG一样,这条路由PE2根本不会加入自己的SPF计算,也不会引入BGP4+,上面的次优路由,成环的问题将都不会发生。

第二种情况:

假设PEn引入的这条路由,PE1在导入ospf的时候被认为是一个3类OSPF的路由,那么这个次优和环路的问题就有DN位来解决,因为CE发给PE2的10.0.0.1/24 的DN位被置位了,导致PE2根本不会加入自己的SPF计算,也不会引入BGP4+,也就不会出现次优和环路的问题。

OSPF多实例路由防环检测功能介绍相关推荐

  1. OSPF的区域间防环详解

    文章目录 OSPF的3-LSA防环 参考阅读 先说结论 1.传回给骨干域的情况 2.传回给非骨干域的情况 结合实验现象详解 实验拓扑 详解 传回a0 传回给ax OSPF的3-LSA防环 参考阅读 别 ...

  2. Karto的后端优化与回环检测功能对比测试与分析

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 上篇文章讲解了Karto的前端是如何工作的. 这篇文章将slam_karto中的后端优化部分的代码添加 ...

  3. 融云服务器实时消息路由,IM 北极星产品功能介绍

    IM 北极星 概述 IM 北极星主要为开发者提供了终端用户连接及消息发送状态查询功能:通过查看用户的连接日志,判断用户某时间段内是否可以正常使用融云服务,如:用户反馈消息发送不成功,可能是因为该用户在 ...

  4. 2023-01-20 网工进阶(三十九)MPLS 虚拟专用网络---概述、路由交互、CE接入PE方法、基本组网方案详解、团体属性、防环、MCE组网、伪连接方案、跨域组网详解、各种组网方案配置举例

    概述 VPN(Virtual Private Network,虚拟专用网络)指的是在一个公共网络中实现虚拟的专用网络,从而使得用户能够基于该专用网络实现通信的技术.MPLS VPN也是VPN技术中的一 ...

  5. 【ospf的三类LSA sum-net】(真假ABR、区域间防环机制、vlink)

    目录 一.3类LSA产生背景 1.ospf单区域的隐患: 2.多区域的产生 二.3类LSA的产生 1.3类LSA:边界路由器(ABR)产生,传递区域之间的路由 ABR维护区域间的每个区域的LSDB​ ...

  6. 华为HCIE RS笔记-21OSPF防环机制

    区域内防环: 区域内使用SPF算法,以自己为根,根据LSA的拓扑信息和路由信息,纯天然的防环机制 区域间防环: 从一个"真ABR"流出的Network Summary LSA不会 ...

  7. 储能逆变器防逆流检测解决方案

    安科瑞 华楠 Application 目前,电网公司通常要求光伏并网系统为不可逆流发电系统,即光伏并网系统所发的电由本地负荷消耗,多余的电不允许通过低压配电变压器向上级电网逆向送电.在并网发电系统中, ...

  8. 配置BGP SOO(防环)实例

    上次说到BGP的防环机制, AS之间使用AS_Path AS内部:IBGP水平分割(从IBGP邻居学到的路由不会传递给IBGP邻居) RR:originator-id属性,culture-list属性 ...

  9. ospf避免环路_OSPF路由协议的区域防环机制

    一.区域设计原则 为了避免区域间的环路,ospf规定不允许两个非骨干区域之间直接传递路由信息,只允许在一个区域内部或者骨干区域和非骨干区域之间发布路由信息.因此,每个区域边界路由器都必须连接到骨干区域 ...

最新文章

  1. 运维提升首选技能KubernetesPrometheus,你了解多少?(文末福利)
  2. sed替换每行最后一个字符
  3. Bagging和Boosting 概念及区别
  4. python yield遍历目录
  5. 前端学习(795):基本包装类型
  6. 视觉SLAM十四讲(2):初识SLAM
  7. 关于ZooKeeper的两点思考
  8. 《从零开始学Swift》学习笔记(Day 16)——字典集合
  9. 追本溯源:Oracle 只读表空间的探索实践
  10. c51单片机小车代码解释
  11. java qq 传送文件_java 传送文件
  12. GVM 内存结构 垃圾回收
  13. Springboot整合Netty,实现Socket通信
  14. 【考研资源】考研资料怎么找?这些资源网站一定要知道!
  15. Altera特殊管脚的使用(适用全系列Altera FPGA,MSEL区别除外)-来自altera论坛
  16. switch语句和for循环的认识与使用
  17. 引用 《大明宫词》经典台词89句
  18. 【李超线段树】BZOJ3165 [Heoi2013]Segment
  19. 【附源码】计算机毕业设计SSM物料追溯系统
  20. 将网页分享到微信带有缩略图和简介

热门文章

  1. 分布式数据结构与算法面试题
  2. 小米红米4(标准版)解BL锁教程申请BootLoader解锁教程
  3. 电脑计算机打不开显示远程过程,win10系统打不开图片提示“远程过程调用失败”的解决方法...
  4. 小红帽蜘蛛池租用百万蜘蛛秒收录
  5. 问题解决:ERROR: Cannot uninstall 'llvmlite'.
  6. 供参考的一些APP推广渠道
  7. 关于ISO26262功能安全管理的理解
  8. android 锁屏壁纸和桌面壁纸的设置实现
  9. STM32 Mbed系列-ADC参考电压设置
  10. 【项目实战】阿里云轻量云服务器中安装JDK1.8