《OSPF和IS-IS详解》一2.4 理解内部BGP

2.4 理解内部BGP

BGP设计与实现
BGP被设计用来在Internet上的一系列自治系统之间提供无环路的路径。确保无环拓扑的机制就是AS_PATH属性。考虑图2-2,其中3个自治系统相互连接。如果AS 65000中的路由器R1通告一条前缀给AS 65001中的R3,那么在它发送前缀给R3时,它会把65000添加到这条前缀的AS_PATH列表前面。如果同样的前缀再次被AS 65000收到,那么边界BGP宣告者就会拒绝它,这是因为它在AS_PATH属性中检测到了环路。

继续考虑图2-2,假设R3需要向AS 65002中的R7传播前缀,那么这里有几种选择来完成这项任务。

一种方法是让R3把所有的BGP前缀重分布到IGP中,IGP把它们通告给R4、R5和R6。接着,让R5和R6把这些前缀重分布回BGP,并把它们分别通告给各自的eBGP邻居——R7和R8。但是,这种策略有一些问题。

IGP不是被设计用来处理这里可能包含的路由数量的。完全的Internet表已经超过了10万条前缀。很多IGP需要周期性地刷新前缀信息,这会进一步导致网络的不稳定和额外的系统资源消耗,并且给常规的路由选择更新带来显著的带宽需求。前缀数量的增长导致发生路由抖动(route flapping)的可能性更大,路由抖动会引起严重的稳定性和收敛性问题。

BGP信息被重分布进IGP后会丢失所有的BGP属性,包括AS_PATH属性。AS_PATH属性的丢失破坏了BGP环路防止机制。例如,当前缀在R4上被重分布回BGP时,同样的这条前缀也会被发送回R2,因为AS_PATH属性中只包含65001。重分布也会导致任何策略属性的丢失,这些策略属性是为BGP学到的前缀所设置的。

比较明智的选择是使用内部BGP(internal BGP,iBGP)。当R3通过iBGP把前缀通告给R5时,R3不会在AS_PATH中添加自己的AS号。事实上,如果更新来自于iBGP对等体,Cisco IOS甚至不检查AS_PATH环路。如果没有这个额外的AS_PATH信息,路由选择信息环路就会在iBGP域中形成。

如果允许R3把前缀通告给R5,但是不允许R5把它从iBGP学到的前缀通告给其他iBGP对等体,例如,R4和R6,那么就可以避免环路。但是,这样的解决办法需要所有的iBGP宣告者全连接(fully meshed)。例如,R3需要与R4、R5以及R6建立iBGP对等会话。在iBGP宣告者数目很大的自治系统中,全连接会带来扩展性的问题。这个问题的解决办法涉及第7章讲述的路由反射和联盟。

使用iBGP传送前缀信息会带来其他一些小问题。如果BGP能够传送所有的前缀,那么还需要IGP吗?

IGP肯定是需要的。图2-2中,R3并不与R6直连。如果没有某种形式的路由选择信息存在,那么R3如何与R6建立iBGP会话呢?答案就是让IGP为自治系统内部提供基础的路由可达性信息。内部BGP从未被设计成在没有IGP的情况下使用,而是与IGP配合使用。iBGP路由通常需要IGP来递归解析。表2-1说明了iBGP与IGP的一些不同之处。

在比较了iBGP和IGP之间的不同之处后,理解iBGP和eBGP之间的不同之处也是很重要的(见表2-2)。

时间: 2025-01-02 21:05:22

《OSPF和IS-IS详解》一2.4 理解内部BGP的相关文章

Android Loader 异步加载详解二:探寻Loader内部机制

Android Loader 异步加载详解二:探寻Loader内部机制 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70259914 本文出自[赵彦军的博客] Android Loader 异步加载详解一:基础概念 Android Loader 异步加载详解二:探寻Loader内部机制 在上一篇文章中,讲解了 Loader 的基本概念.这一篇将会用实战的方式来探寻 Android Loader的内部机制.我们准备做一个 读取手

详解Android中Handler的内部实现原理_Android

本文主要是对Handler和消息循环的实现原理进行源码分析,如果不熟悉Handler可以参见博文<详解Android中Handler的使用方法>,里面对Android为何以引入Handler机制以及如何使用Handler做了讲解. 概括来说,Handler是Android中引入的一种让开发者参与处理线程中消息循环的机制.我们在使用Handler的时候与Message打交道最多,Message是Hanlder机制向开发人员暴露出来的相关类,可以通过Message类完成大部分操作Handler的功

《OSPF和IS-IS详解》一2.3 BGP路径属性

2.3 BGP路径属性 BGP设计与实现BGP路径属性是一组描述BGP前缀特性的参数.由于BGP首先是一个路由选择策略工具,因此BGP在影响路径选择的时候,广泛地使用了这些属性.在设计一个有效率的BGP路由选择体系结构中,有效地利用这些属性是十分关键的.这一节将着重讲述一些通用的BGP属性,而在后面的章节中会作更为深入的讨论. Cisco IOS软件目前支持以下这些属性: ORIGIN(起源): AS_PATH(AS路径): NEXT_HOP(下一跳): MULTI_EXIT_DISC(多出口鉴

《OSPF和IS-IS详解》一2.6 BGP的能力

2.6 BGP的能力 BGP设计与实现按照RFC 1771的定义,BGP在对等体之间只能运载IPv4可达性信息.为了能够交换IPv4之外的网络前缀信息,BGP必须被扩展.这是通过能力(capability)交换和属性扩展来完成的.本节仅仅介绍能力交换,各种不同的属性扩展将在第10章开始讲述. 根据RFC 1771的定义,BGP支持下列4种类型的消息: Open--这种类型的消息用来建立最初的BGP连接: Update--对等体之间使用这些消息来交换网络层可达性信息: Notification--

《OSPF和IS-IS详解》一2.2 BGP进程和内存使用

2.2 BGP进程和内存使用 BGP设计与实现Cisco IOS软件有3种主要的BGP进程: 输入输出(I/O): 路由器(Router): 扫描仪(Scanner). 图2-1显示了3种BGP进程以及在IOS中所有主要的BGP组件之间的相互作用. BGP I/O进程处理读.写和执行BGP消息的任务.它为TCP和BGP之间提供了一个接口.一方面,它从TCP套接字(socket)中读取消息,并把它们放到BGP输入队列(Input Queue,InQ)中,以便被BGP Router进程操作.另一方面

百度Deep Voice详解分析:快速理解语音合成流程(Part I)

更多深度文章,请关注:https://yq.aliyun.com/cloud 作者介绍 Dhruv Parthasarathy:MIT毕业,曾经就职于Udacity,带领人工智能.自动驾驶.深度学习以及机器学习项目:目前就职于Athelas,研发副总裁. 领英:http://cn.linkedin.com/in/dhruv-parthasarathy Twitter: https://twitter.com/dhruvp 博客:https://blog.athelas.com/@dhruvp M

Git详解之九:Git内部原理

原文链接:http://blog.jobbole.com/26209/ 原文:<Pro Git> Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的,不过也有人认为这些内容对于初学者来说可能难以理解且过于复杂.正因如此我把这部分内容放在最后一章,你在学习过程中可以先阅 读这部分,也可以晚点阅读这部分,这完全取决于你自己.(伯乐在线注:如果你对Git

xcode工程配置文件详解,需要深入理解

http://www.cocoachina.com/ios/20150601/11969.html   project.pbxproj,最熟悉的"陌生人" http://www.bubuko.com/infodetail-1025831.html iOS程序支持64位以及project.pbxproj文件的介绍

android Handler机制之ThreadLocal详解

概述 我们在谈Handler机制的时候,其实也就是谈Handler.Message.Looper.MessageQueue之间的关系,对于其工作原理我们不做详解(Handler机制详解). Message:Handler发送.接收和处理的消息对象 Looper:每个线程只能拥有一个Looper.它的looper()方法负责循环读取MessageQueue中的消息并将读取到的消息交给发送该消息的handler进行处理. MessageQueue:消息队列,它采用先进先出的方式来管理Message.