BGP与IGP交互

2023-11-08 23:59
文章标签 交互 bgp igp

本文主要是介绍BGP与IGP交互,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BGP与IGP在设备中使用不同的路由表,为了实现不同AS间相互通讯,BGP需要与IGP进行交互,即BGP路由表和IGP路由表相互引入。

BGP引入IGP路由

BGP协议本身不发现路由,因此需要将其他路由引入到BGP路由表,实现AS间的路由互通。当一个AS需要将路由发布给其他AS时,AS边缘路由器会在BGP路由表中引入IGP的路由。为了更好的规划网络,BGP在引入IGP的路由时,可以使用路由策略进行路由过滤和路由属性设置,也可以设置MED值指导EBGP对等体判断流量进入AS时选路。

BGP引入路由时支持Import和Network两种方式:

  • Import方式是按协议类型,将RIP、OSPF、ISIS等协议的路由引入到BGP路由表中。为了保证引入的IGP路由的有效性,Import方式还可以引入静态路由和直连路由。

  • Network方式是逐条将IP路由表中已经存在的路由引入到BGP路由表中,比Import方式更精确。

IGP引入BGP路由

当一个AS需要引入其他AS的路由时,AS边缘路由器会在IGP路由表中引入BGP的路由。为了避免大量BGP路由对AS内设备造成影响,当IGP引入BGP路由时,可以使用路由策略,进行路由过滤和路由属性设置。

BGP和IGP互相引入产生的问题及解决方法

当需要在AS之间传递路由的时候,经常会通过BGP和IGP互相引入来实现,但是这种实现方式存在如下问题:

  • 如果BGP路由数量较大,那么AS内部的低端设备可能不能装载如此大规模的路由,造成路由丢失。
  • 如果某条路由不稳定(例如端口频繁UP/DOWN),可能会导致整个AS的路由震荡,影响网络的稳定性。
  • BGP是靠路由属性来防止路由环路的,例如AS_PATH属性,当所有BGP路由重分布到IGP中后,路由属性就会丢失,这就破坏了BGP的路由防环机制,产生了路由环路的隐患。

在较大规模的IP网络中,一般情况下BGP路由的规模会远远大于IGP路由,因此当涉及到将BGP路由引入IGP的时候,请务必慎重操作,防止大量BGP路由引入IGP,影响到IGP路由的运行。可以考虑通过缺省路由、路由汇总等手段减少路由的数量。

图9-3  使用EBGP+IBGP实现AS之间的路由传递

 

如图1所示,这是一个常见的IP骨干网的拓扑结构,骨干层和汇聚层分别是两个自治系统,AS100有两个出口设备SwitchC和SwitchD,两个AS之间需要进行路由互通。用户的需求如下:

  • 两个自治系统之间的地位是非对称的,用户不希望汇聚层的设备了解骨干层的路由细节。
  • 汇聚层的设备性能较低,因此,用户不希望汇聚层的设备接收来自骨干层的大量的BGP路由。
  • 骨干层设备的性能较高,因此,用户希望骨干层的设备要了解汇聚层的路由细节。

图1所示的场景中,如果在汇聚层的出口设备SwitchC和SwitchD上将BGP路由引入OSPF,那么会有大量的BGP路由从骨干层传递到汇聚层。这样一方面会导致汇聚层AS接收到大量的BGP路由,另一方面也会导致汇聚层设备了解到了骨干层的路由细节,因此不能满足用户的需求。要满足用户的需求,建议通过如下方案实现:

  • 骨干层的两台设备SwitchE和SwitchF分别通过BGP下发缺省路由给汇聚层的出口设备SwitchC和SwitchD,这样能保证汇聚层的设备不需要接收来自骨干层的大量BGP路由,同时汇聚层也不会了解到骨干层的路由细节。
  • 在汇聚层的出口设备SwitchC和SwitchD上,仅将OSPF路由引入BGP,而BGP路由不引入OSPF,这样能保证骨干层的设备了解汇聚层的路由细节。
  • 两个AS的边缘设备之间分别建立IBGP邻居关系,即SwitchC和SwitchD,SwitchE和SwitchF之间建立IBGP邻居关系,这样能保证AS的双出口的路由备份,实现可靠性。

这篇关于BGP与IGP交互的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373157

相关文章

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

Kubernetes 之 kubelet 与 CRI、CNI 的交互过程

序言 当一个新的 Pod 被提交创建之后,Kubelet、CRI、CNI 这三个组件之间进行了哪些交互? Kubelet -> CRI -> CNI 如上图所示: Kubelet 从 kube-api-server 处监听到有新的 pod 被调度到了自己的节点且需要创建。Kubelet 创建 sandbox 并配置好 Pod 的环境,其中包括: Kubelet 通过 gRPC 调用 C

【SpringMVC学习07】SpringMVC与前台的json数据交互

json数据格式在接口调用中、html页面中比较常用,json格式比较简单,解析也比较方便,所以使用很普遍。在springmvc中,也支持对json数据的解析和转换,这篇文章主要总结一下springmvc中如何和前台交互json数据。 1. 两种交互形式  springmvc和前台交互主要有两种形式,如下图所示: 可以看出,前台传过来的方式有两种,一种是传json格式的数据过来,另一种

【Qt】Qt与Html网页进行数据交互

前言:此项目使用达梦数据库,以Qt制作服务器,Html制作网页客户端界面,可以通过任意浏览器访问。 1、Qt与网页进行数据交互 1.1、第一步:准备qwebchannel.js文件 直接在qt的安装路径里复制即可 1.2、第二步:在Qt的.pro文件加载webchannel组件 在.pro文件添加如下组件: QT += core gui sql webchannel wi

android 的webView加载h5,和h5的交互(java和JavaScript的交互)

Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。(通俗点说就是,点击那个Web页面的按钮啥的,可以传到原生app;或者原生app调用Web页面的js方法) 如何实现 实现Java和js交互十分便捷。通常只需要以下几步。 WebView

Java-IDEA模拟一个Redis服务器,与Redis客户端进行一次简单的交互。默认端口号:6379

首先要了解Redis的交互协议。 摘抄: 简单字符串(Simple Strings): 以 “+” 开头,例如 “+OK\r\n” 表示一个成功的响应。错误(Errors): 以 “-” 开头,例如 “-ERR unknown command\r\n” 表示一个错误响应。整数(Integers): 以 “:” 开头,例如 “:1000\r\n” 表示整数1000。批量字符串(Bulk St

Result 和 自定义异常 在前后端交互中的作用

Result 和自定义异常在前后端交互中扮演着重要的角色。它们可以帮助我们规范化接口返回值,提高错误处理的可读性和可维护性。 Result的作用 Result通常是一个封装了请求结果的类,它包含了请求的状态码、消息和数据。在前端和后端的交互中,Result的作用主要体现在以下几个方面: 统一返回格式:通过Result类,后端可以将请求的结果统一封装成一个固定的格式返回给前端,这样前端可以更

使用Node-API实现跨语言交互开发流程

一、前言         使用Node-API实现跨语言交互,首先需要按照Node-API的机制实现模块的注册和加载等相关动作。 ArkTS/JS侧:实现C++方法的调用。代码比较简单,import一个对应的so库后,即可调用C++方法。 Native侧:.cpp文件,实现模块的注册。需要提供注册lib库的名称,并在注册回调方法中定义接口的映射关系,即Native方法及对应的JS/ArkT

flutter的入口和原生交互

从今天起,笔者要开始从flutter列表页面向原生页面跳转了 首先遇到了N个No such module "Flutter" 因为笔者的公司其实是从前往后改造Flutter的,所以也不需要引擎组,但是笔者搞不懂,只能照着葫芦画瓢,以后等笔者Flutter技术日渐精进,一定回过来更新怎么单个页面嵌入flutter。 在Appdelegate里还有很多_lifeCycleDelega

uniapp交互反馈

页面交互反馈可以通过:uni.showToast(object)实现,常用属性有 ioc值说明 值说明success显示成功图标,此时 title 文本在小程序平台最多显示 7 个汉字长度,App仅支持单行显示。error显示错误图标,此时 title 文本在小程序平台最多显示 7 个汉字长度,App仅支持单行显示。fail显示错误图标,此时 title 文本无长度显示。exception