路由引入问题(双点双向路由回馈问题)
简介
总所周知,路由引入import又称路由重分发redistribute,为了解决不同路由协议进程间路由信息不互通而使用的技术,由于不同路由协议的算法、机制、开销等因素的差异,它们之间无法直接交换路由信息。因此,路由引入技术的作用是将一个路由协议的路由信息引入到另一个路由协议中,以实现路由信息的互通。
一般下,可引入static静态路由,direct直连路由,ospf,isis,bgp等动态路由协议
被引入的路由会被进程学习并计算加入自己的路由表中
引入方式
单点单向
AR2上OSPF1引入OSPF2,单边引入,需下发缺省路由,OSPF1通过缺省路由访问OSPF2
单点双向
(以双点为例)
AR2上OSPF1引入OSPF2,OSPF2引入OSPF1
多点单向
AR2上OSPF引入ISIS
AR3上OSPF引入ISIS
同上需要下发缺省路由
多点双向
(以双点为例)
AR2上ISIS引入OSPF,OSPF引入ISIS
AR3上ISIS引入OSPF,OSPF引入ISIS
问题分析
引入导致的问题可能有路由回馈,次优路径和环路风险
路由回馈:由于双向引入,如图,假设我们从R2出发,把OSPF引入ISIS被引入的路由被通告至该协议下成员即通告到ISIS下,其中包括另一台引入路由的路由器即R3,当R3收到这些路由,此时路由器R3误以为是新的路由,又把这些路由引入自己所在的路由区域即OSPF。再经过通告又回到R2
次优路径:由于路由协议间度量值和路由优先级不同而导致,当路由优先级低的被引入至路由优先级高的时候,就可能产生此情况
环路风险:由于路由协议间度量值和路由优先级不同而导致, 通常与次优路径同时存在
单点单向
次优路径
我们把isis引入ospf,由于优先级问题R3访问R4会走R1-R2-R4,而不是直接到R4
单点双向
次优路径
同上不过多叙述
多点单向
(以双点为例)
路由反馈:由于双向引入的缘故,AR2通告的引入路由会通过网络在被AR3传回来通过一次
次优路径
环路风险:当5.5.5.5通过直连引入且cost改为2,type为2,又在R2把OSPF引入ISIS,在R3把ISIS引入OSPF,此时R3访问5.5.5.5就会环路
因为OSPF外部路由优先级为150,当5.5.5.5的路由被引入ISIS中,其优先级会被置换为15,于是在R3上就会出现违背管理原则的情况,此时,R3访问5.5.5.5会访问R4,而R4查表发现要去5.5.5.5得去R2,R2得去R1,R1因为引入的问题,直接发给R5cost为2,而去R3的cost为1,此时去R3反而成了最优路径,于是自此开始循环,环路形成
多点双向
(以双点为例)
路由反馈
次优路径
解决方案(以双点双向为例)
实验拓扑
在R5上引入直连192.168.1.0/24,R1,R2,R3运行OSPF,R2,R3,R4运行ISIS且开销改为宽,R2,R3上相互引入
实验要求
解决路由反馈和次优路径的问题
路由反馈:将自身发送的路由打上tag,通过route-policy进行筛选并选择适当操作(不让你传回来)
次优路径:改cost通过创建route-policy将ospf外部路由150的优先级转化为比isis优先级小的(改优先级让你无法选中)
实验配置
由于双向引入,我们可以看成两个环,顺时针一个逆时针一个,因此2X2+2=6个路由route-policy
1.配置IP(省略)
2.宣告相关网段(省略)
3.将192.168.10.0/24网段引入,在AR3和AR2上配置route-policy,并在引入时调用
直连引入需修改优先级,使得OSPF去5.5.5.5不会发给ISIS
这样改还是不妥,因为去往4.4.4.4的网段就会走R1内部而不是直接发给R4,所以需要将打tag30的标签选择比15大的优先级(tag只是不发布给其他路由域,本机还是又这些路由的)
顺时针的环可以这样处理,逆时针同理
R2
isis 1
is-level level-2
cost-style wide
network-entity 49.0001.0000.0000.0002.00
import-route ospf 1 route-policy o2is //引入路由时调用相关策略(顺时针的环)
interface GigabitEthernet0/0/0
ip address 10.1.12.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.1.24.2 255.255.255.0
isis enable 1
#
interface NULL0
#
ospf 1 router-id 2.2.2.2
import-route isis 1 route-policy is2o //引入路由时调用相关策略(逆时针的环)
preference ase route-policy cost1 14 //调用并修改引入优先级为14,比isis低确保被选路的时候被选上
area 0.0.0.0
network 10.1.12.2 0.0.0.0
#
route-policy is2o deny node 5 //不允许引入tag300的包,来自R3上ospf引入isis的路由
if-match tag 300
#
route-policy is2o permit node 10 //isis引入ospf的路由打上tag100
apply tag 100
#
route-policy cost1 permit node 10 //防止次优路径,将来自R3上isis引入ospf的路由进行修改
if-match tag 30
apply preference 200
#
route-policy o2is deny node 5 //不允许引入tag30的路由,来自R3上ospf引入isis的路由
if-match tag 30
#
route-policy o2is permit node 10 //ospf引入isis的路由打上tag10
apply tag 10
#
R3
#
isis 1
is-level level-2
cost-style wide
network-entity 49.0001.0000.0000.0003.00
import-route ospf 1 route-policy o2is //引入时调用策略(顺时针的环)
interface GigabitEthernet0/0/0
ip address 10.1.34.3 255.255.255.0
isis enable 1
#
interface GigabitEthernet0/0/1
ip address 10.1.13.3 255.255.255.0
#
interface NULL0
#
ospf 1 router-id 3.3.3.3
import-route isis 1 route-policy is2o//引入时调用策略(逆时针的环)
preference ase route-policy cost1 14
area 0.0.0.0
network 10.1.13.3 0.0.0.0
#
route-policy is2o deny node 5 //如果标签是tag10则不允许引入,来自R2的ospf引入isis
if-match tag 10
#
route-policy is2o permit node 10 //如果是被引入的路由打上标签tag30
apply tag 30
#
route-policy o2is deny node 5 //如果是tag100则不允许引入,来自R2的isis引入ospf
if-match tag 100
#
route-policy o2is permit node 10 //ospf引入isis的路由则打上tag300
apply tag 300
#
route-policy cost1 permit node 10 //防止次优路径,将来自R2isis引入ospf的路由修改
if-match tag 100
apply preference 200
总结
路由引入实现了路由信息共享,但由于不同协议间的设计不同,出现的一些不符合管理的问题需要认为解决,一项技术的出现必定有其弊端和优势。对我而言,我觉得解决这个问题的方法非常巧妙,通过打tag的方式标记流量来源,从中也可以看到设计者解决问题的思路,打标签就让我想到BGP的12条路径属性还有VLAN标签等技术。
相关文章:

路由引入问题(双点双向路由回馈问题)
简介 总所周知,路由引入import又称路由重分发redistribute,为了解决不同路由协议进程间路由信息不互通而使用的技术,由于不同路由协议的算法、机制、开销等因素的差异,它们之间无法直接交换路由信息。因此,路由引入技…...
设计模式之 适配器模式 C# 范例
在 C# 中,适配器模式(Adapter Pattern)是一种结构型设计模式,旨在将一个类的接口转换成客户端所期待的另一个接口。适配器模式允许你将现有的类包装起来,使其能够与其他接口兼容。 适配器模式的使用场景: …...
LabVIEW实现GPS通信
目录 1、GPS通信原理 2、硬件环境部署 3、程序架构 4、前面板设计 5、程序框图设计 6、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用模块实现物联网系…...
[leetcode100] 543. 二叉树的直径
https://leetcode.cn/problems/diameter-of-binary-tree/description/?envTypestudy-plan-v2&envIdtop-100-liked 题目描述:给一个二叉树,返回二叉树直径最大值。直径指的是二叉树中任意一个结点到另外一个结点产生路径的长度。而长度由边来代表。…...

嵌入式学习(18)-stm32F407串口接收空闲中断+DMA
一、概述 在一些一次性接收大批量数据的引用场合,如果使用接收中断会频繁的进入接收中断影响代码的运行效率。为了解决这个问题可以使用串口的空闲中断DMA实现。 二、应用 在网上招了一些例程在STM32F407的平台上都没有跑通会出现各种异常,主要原因还…...
b站视频爬虫-词云分析
一、设置爬虫程序 # requests 请求b站视频 import jsonimport fake_useragent import requests from lxml import etreeif __name__ == __main__:# UA伪装head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like …...

如何防止订单二次重复支付?
如何防止订单二次重复支付? 在电商平台和支付系统中,防止订单二次重复支付是一个至关重要的功能。以下是一些常见的策略和技术手段,用于确保订单支付的幂等性和一致性。 目录 唯一订单号订单状态检查数据库事务乐观锁悲观锁支付渠道状态核查…...
LeetCode 24反转链表
单链表反转:详细解析与代码实现 在数据结构的学习过程中,链表是一个非常重要且有趣的部分,而单链表的反转操作更是常考的基础知识点。今天就来和大家详细讲讲如何实现单链表的反转,并通过代码示例来加深理解呀。 题目 给定单链…...
用python的flask写的一个MQTT中转功能,http的方式发送数据和接收数据
需求背景 给一个客户对接人脸识别的设备,最后需要通知服务端进行一些消息推送。 简单例子 # 作者 陈老师 # https://v.iiar.cn import json import paho.mqtt.client as mqtt import requests from flask import Flask, requestapp Flask(__name__)# MQTT配置 mq…...
img引入svg如何修改颜色
方法1:通过css中filter:drop-shadow 首先需要一个容纳图标的父盒子(下方实例中的.svg-img),通过css造一个图标的‘影子’(.svg-color中的drop-shadow),然后设置‘影子’的颜色,再把图标本体移出父盒子&…...

计算机毕业设计PySpark+PyFlink+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Hadoop 机器学习 深度学习
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
【Python】使用Numpy实现余弦相似度计算
本文详细介绍了如何使用 NumPy 实现两个向量之间的余弦相似度计算,帮助理解向量相似度在推荐系统、文本处理等领域的应用。 1. 余弦相似度定义 余弦相似度是衡量两个向量在高维空间中夹角大小的指标,其公式为: c o s ( θ ) A ⋅ B ∥ A ∥…...

nginx中的root和alias的区别
alias 在E:\\test\\目录下创建一个index.html文件 在nginx.conf文件配置alias,路径填写为绝对路径,但是要注意,这里结尾是文件夹的名字 然后下面的/aa/ 是随便起的名字,也不是文件夹的名字,在浏览器访问的使用的 在浏览器使用 …...

探索Telnet:实现Windows远程登录Ubuntu的实践指南
前言 在互联网技术日新月异的今天,远程登录已经成为许多开发者和系统管理员日常工作中不可或缺的一部分。虽然SSH已经成为远程登录的首选协议,但了解并掌握Telnet这一经典协议仍然具有重要意义。本文将带您一起探索如何使用Telnet实现Windows远程登录Ub…...
在 Vue 2 中隐藏页面元素的方法
目录 在 Vue 2 中隐藏页面元素的方法 引言 1. 使用 v-if 指令 2. 使用 v-show 指令 3. 使用自定义类名与 v-bind:class 4. 使用内联样式与 v-bind:style 5. 使用组件的 keep-alive 和条件渲染 在 Vue 2 中隐藏页面元素的方法 引言 在开发 Web 应用时,我们经…...

【Java】Java8的4个函数式接口简单教程
什么是函数是接口? 函数式接口是一个包含 单个抽象方法 的接口,且可以有任意多个默认方法或静态方法。为了增强可读性,Java 8 引入了 FunctionalInterface 注解,用于标识该接口是一个函数式接口,编译器会帮助我们检查…...

计算机组成原理与系统结构——微程序控制
笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt,仅供学习交流使用,谢谢。 基本概念 微指令 将控制单元实现为基本逻辑单元之间的互连并非易事,且设计相对呆板,难以灵活地改变,因此实现微程序控制…...

【Swift】集合类型 - 数组、集合、字典
文章目录 集合的可变性数组数组类型简写语法创建空数组使用默认值创建数组通过合并两个数组创建一个新数组使用数组字面量创建数组访问和修改数组 Swift 提供了三种主要的 集合类型,分别是数组、集合和字典,用于存储值集合。数组是有序的值集合。集合是无…...

3D 视觉定位技术:汽车零部件制造的智能变革引擎
在汽车零部件制造领域,传统工艺正面临着前所未有的挑战。市场对于零部件精度与生产效率近乎苛刻的要求,促使企业寻求突破之道。而 3D 视觉定位技术,为汽车零部件制造开启了精准定位与智能化生产的新纪元。 3D 视觉定位系统的核心技术原理 3…...

操作系统的基本认识
操作系统的感性认识 操作系统这个词可能或多或少听说过,比如windows, linux, macOS。这些其实都是工程师们经过实践后的具象化产物。而操作系统原理这六个字就是操作系统的抽象化,更准确的说,操作系统原理是很理论化的东西。举一个不是很恰当…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...