1.BGP同步IBGP水平分割
- 格式:pdf
- 大小:180.10 KB
- 文档页数:7
IBGP_EBGP_IGP_BGP区别IBGP、EBGP、IGP、BGP区别我们知道,在自治系统内部使用IGP路由协议,而在不同自治系统之间使用BGP路由协议(严格来讲,BGP不是路由协议).BGP产生的原因是为了在不同自治系统(AS)之间进行路由转发,而其中又提出了EBGP 和IBGP两种,EBGP用于在不同自治系统之间,但IBGP,书上说它是应用于自治系统内部,可是在自治系统内部我们是使用IGP.这就和"BGP是应用于不同自治系统之间"产生矛盾,那么IBGP存在的意义,比如说某种情况,需要使用到IBGP,它在网络中起到的作用.EBGP与IBGP之间的区别,EBGP在网络中又起什么作用?为什么要有IBGP,原因如下:1、IGP的能力限制,IGP处理路由的条目有限,而目前internet 上核心路由器的路由表已经超过10万条。
假如没有IBGP,那么这些路由只能采取重分发的方式直接导入到IGP 中,这样做的缺点很明显:第一,IGP协议的作者并没有打算让IGP来处理如此大量的路由,IGP 本身也无法处理这样大的路由数量;第二,如果非要让IGP来处理,那么根据IGP的处理原则,假如这10万路由中任何一条路由发生变化,那么运行IGP的路由器就不得不重新计算路由,更为严重的是,假如其中某一条路由出现路由抖动的情况,例如端口反复UP/DOWN,这会导致所有的IGP路由器每时每刻都不得不把10万条路由重新计算一遍,这种计算量对于绝大多数路由器来说是无法负担的。
另外对于运行RIP V1的路由器来说,10万条路由的定期更新,这根本就是无法接受的事情,除去带宽占用率不谈,我想,也只有少量高端的GSR 以及TSR能够有这样的性能吧。
很显然,我们不可能让网络中所有的路由器都是GSR和TSR,如果真是这样,那么Cisco、juniper以及华为等厂家就要偷笑了。
例如:AS100----AS200---AS300,假定AS100/200/300各有100台路由器,而AS100中有1W 条路由要传递要AS300中,而AS200的路由器不需要学习AS100的路由。
BGP路由协议的基本原理分析蒋磊【摘要】路由协议根据其作用的范围被划分成IGP协议和EGP协议,IGP协议是指内部网关路由协议,我们通常所熟悉的RIP,OSPF,ISIS和EIGRP协议都是IGP路由协议,它们的工作范围往往是在一个AS内部,通过各自的路由算法来实现去往AS 内部的各条路由,这样在AS内部便实现了全网互通.但仅仅考虑AS内部互通是不行的,要实现全球范围内的网络互联,这就要求数量众多的AS之间实现互连,这时就需要EGP协议来完成此任务,EGP协议是指外部网关路由协议,BGP是目前应用最广的EGP协议,它的侧重点不在于计算路由,而是在于AS之间传递路由和控制路由.文章对BGP路由协议的概念、原理和应用场合进行了介绍.【期刊名称】《江苏科技信息》【年(卷),期】2018(035)031【总页数】3页(P35-37)【关键词】BGP;EGP;外部网关路由协议;选路原则【作者】蒋磊【作者单位】南京城市职业学院,江苏南京 210000【正文语种】中文【中图分类】TN0 引言在早期的APPANet网络时代,网络规模有限,路由数量也不多,因此,所有的路由器应用较简单的路由协议如RIP,IS-IS,OSPF就可以满足需求。
然而在过去几十年里,APPANet脱胎换骨,经历了举世瞩目的高速增长,逐渐演变成当今的互联网(Internet),网络规模的扩大导致路由数量越来越多,路由表体积越来越臃肿,路由器计算到达目的网络的开销越来越大,原有的路由协议不堪重负。
为了解决此问题,管理者把网络划分成一个个独立的管理单元,提出了自治系统(Autonomous System,AS)的概念,又称路由域。
通过在域内运行内部路由协议来学习和维护域内的路由信息,在域间运行外部路由协议来交换和管理域间的路由信息。
这种域间路由交换和管理的需求,推动产生了外部网关协议(Exterior Gateway Proto⁃col,EGP)。
概述BGP协议同步规则(图)一.理解bgp同步及其基本需求1.BGP同步规则的定义:在bgp同步打开的情况下,一个BGP路由器不会把那些通过ibgp邻居学到的bgp路由通告给自己的ebgp邻居;除非自己的igb路由表中存在这些路由,才可以向ebgp路由器通告2.BGP同步规则的目的:防止一个AS(不是所有的路由器都运行bgp)内部出现路由黑洞,即向外部通告了一个本AS不可达的虚假的路由.BGP同步规则的拓扑示意3.BGP同步规则的基本需求如果一个AS内部存在非bgp路由器,那么就出现了bgp和igp的边界,需要在边界路由器将bgp路由发布到igp中,才能保证AS所通告到外部的bgp路由在AS内部是连通的.实际上是要求bgp路由和igp路由的同步.4.满足BGP同步规则的基本需求的结果如果将bgp路由发布到igp中,由于bgp路由主要是来自AS外部的路由(来自internet),那么结果是igp路由器要维护数以万计的外部路由,对路由器的cpu和memeory以及AS 内部的链路带宽的占用将带来巨大的开销.5.结论通常bgp协议的运行需要关闭同步.二.bgp同步的解决方案1.full mesh ibgp解决方案AS内部的所有路由器都运行full mesh ibgp,就可以关闭所有路由器的同步而不影响路由的通告和连通性.问题:当as内部路由器数量很多时,需要建立N*(N-1)/2个ibgp会话,带来过度的系统开销,扩展性不好.Full-Mesh IBGP拓扑示意:15个路由器的AS,需要建立15(15-1)/2=105个ibgp会话2.路由反射器解决方案AS内部的所有路由器都运行bgp,在AS内部部署路由反射器,构建hub and spoke的ibgp(会话数为N-1),然后关闭所有bgp路由器的同步.问题:此方案可以使bgp路由器传递ibgp路由到ebgp,并保证bgp路由的连通性.但是对物理拓扑有很大的限制(要求是星型拓扑)2.路由反射器解决方案AS内部的所有路由器都运行bgp,在AS内部部署路由反射器,构建hub and spoke的ibgp(会话数为N-1),然后关闭所有bgp路由器的同步.问题:此方案可以使bgp路由器传递ibgp路由到ebgp,并保证bgp路由的连通性.但是对物理拓扑有很大的限制(要求是星型拓扑)3.bgp联盟解决方案:AS内部的所有路由器都运行bgp,把一个原始的AS基于网络拓扑划分为若干个sub-AS(又称联盟AS),联盟AS之间的bgp邻居叫做联盟ebgp,不需要full mesh bgp会话;在每个联盟AS内部运full mesh ibgp或者hub and spoke反射器,然后就可以关闭所有路由器的bgp 同步功能.结论:bgp联盟结合路由反射器的方式较好的解决了bgp的同步规则带来的需求,是最为有效的解决方案.三.BGP同步规则的总结1.在所有的方案中,既要保证传递bgp路由,还要保证bgp路由的连通性.2.关闭同步能够实现bgp路由的传递,不一定能保证as内部连通性,除非as内所有路由器都运行bgp才可以保证连通性;否则,仍然需要路由再发布(bgpàigp)3.最后,在as内部一般需要部署igp来维持AS内部网络路径的连通性,以保证as内部的所通告的bgp路由的下一跳的可达性.这样bgp网络就具有更好的灵活性和扩展性.。
BGP 概念BGP 术语概念和工作原理:BGP(Border Gateway Protocol )边界网关协议,用来连接Internet 上独立系统的路由选择协议。
它是Internet工程任务组制定的一个加强的、完善的、可伸缩的协议。
BGP4支持CIDR寻址方案,该方案增加了Internet上的可用IP地址数量。
BGP是为取代最初的外部网关协议EGP设计的,也被认为是一个路径矢量协议。
1 自主系统(AS)定义:一组被统一管理的路由器,它们使用相同的内部网关协议和统一的度量值来决定如何在AS内部路由分组,并使用AS间路由选择协议来决定如何分组路由到其他自助系统。
自主系统----内部网关协议(IGP):用于AS内部交换路由选择信息。
(RIPOSPF IS-IS EIGRP)----外部网关协议(EGP):这种协议用于连接不同的AS。
(BGP4) 自主系统是一个16位的数字(1-65535),64521-65535为私有AS号。
2 BGP4应用:AS间运行BGP被称之为外部BGP(EBGP)。
AS内运行BGP被称之为内部BGP(IBGP)。
AS间使用BGP----BGP提供域间路由选择功能。
----确保AS只能够无环路地交换路由选择信息。
----比以前版本增加变长子网掩码(VLSM)和域间路由选择(CIDR),VLSM和CIDR一起使用防止internet路由表过大。
BGP4同其他路由协议比较:OSPF度量值 RIP跳数 IS-IS带宽 BGP路径矢量。
BGP在确定最佳路径是不考虑速度,它是一种基于策略的路由选择协议,让AS根据多种BGP属性来控制数据流的传输。
企业中使用BGP:公司有多条到一家或多家ISP的线路,BGP允许对路径属性进行操纵,以帮助选择最佳路径。
BGP多宿主选项:AS多条路径连接internet。
---提高internet连接的可靠性和连接性能(最佳路径)。
AS多条路径连接ISP。
1.BGP总结1.BGP协议2.IPv6协议(与IPv4相应)3.MPLS协议4.MPLS/vpn协议5.IPSEC vpn协议(加密)6.Dm vpn(动态多点VPN)(需要使⽤Ipsec VPN)7.Multicast协议IGP/EGP/egpBgpBGP协议AS:⾃制系统autonomous system处在⼀个共同的管理域下的⼀组路由器的集合。
范围:1-65535;1-64511/公有的AS号64512-65535/私有的AS号注:*BGP永远只通告最优路径(带>的路径)*BGP打开同步(syn)时,第⼀步需要IGP可达,第⼆步需要BGP和IGP的router-id相同。
*BGP将⼀条路由宣告进协议,若打开汇总可以宣告⽹段(模糊);若关闭汇总的情况下,必须精确匹配(100%正确)。
*IBGP不允许被重分发进OSPF协议,防⽌环路产⽣;打破这⼀机制的命令:在bgp模式下Bgp redistribute-internal1.基础理论知识1)Ebgp/Ibgp(⾃治区域间协议/⾃治区域内协议)IBGP:建⽴⾃治区域内的邻居关系的前提是需要建⽴IGP,因为需要先建⽴邻居。
(没有IGP,IBGP邻居起不来)在AS内运⾏IGP协议的⽬的是为了上层IBGP邻居关系的建⽴,先打通底层的通道。
EBGP:默认情况下:EBGP只能建⽴在直连的物理端⼝上,IBGP建⽴在IGP可达的任何地⽅。
若EBGP使⽤环回⼝建⽴邻居:如neighbor 15.0.0.1 ebgp-multihop 255(EBGP建⽴邻居关系的跳数默认是1,最⼤是255) 2)Full-mesh(全⽹状结构):⽤来解决IBGP的⽔平分割问题。
路由反射器:在路由反射器条件下,IBGP⽔平分割原则失效命令:neighbor 1.1.1.1 route-reflector-client3)同步原则4)⽔平分割原则⼀条通过⼀个IBGP邻居学来的路由,不会被传递给另⼀个IBGP邻居。
RIP 防环机制:
1.设置最大跳数(默认15,16条为不可达);
2.水平分割:从某接口收到的路由信息不会再从该接口发送出去;
3.毒性逆转:从某接口收到的路由信息会从该接口发送出去,但是该路由信息被设置
为不可达;
4.路由毒化
5.触发更新;
EIGRP 防环机制:
1.在主网络边界将自动汇总,同时在路由器上将产生一条指向NULL 0的路由;
2.水平分割;
BGP 防环机制:
1.AS-PATH:当收到的BGP路由信息中AS-PATH列表中包含自己的AS号,回丢弃该路
由;
2.IBGP水平分割:不把从IBGP邻居学到的路由信息发送给其他IBGP邻居;
3.cluster_list:是一种可选非传递性属性,用于记录簇ID,就像AS-PATH记录AS号一样,
当RR将来自客户的路由反射给给客户时,同时将其簇ID附加到cluster_list中,如果cluster_list为空,则RR将创建一个cluster_list。
RR接受到update消息后,就会检查cluster_list,如果发现其簇ID位于簇列表中,则知道已经出现了路由环路,从而忽略该update消息;
4.BGP同步:开启同步时,BGP路由器不会把从IBGP邻居收到的路由信息放入自己的
路由表或发送给其他EBGP邻居,除非该路由信息已经存在于IGP路由表中;
OSPF 防环机制:
1.区域内SPF算法保证区域内无环;
2.区域间:其他区域必须和区域0相连,区域间的通信需要通过区域0来进行通信;。
IBGP、EBGP、IGP、BGP区别我们知道,在自治系统内部使用IGP路由协议,而在不同自治系统之间使用BGP路由协议(严格来讲,BGP不是路由协议).BGP产生的原因是为了在不同自治系统(AS)之间进行路由转发,而其中又提出了EBGP和IBGP两种,EBGP用于在不同自治系统之间,但IBGP,书上说它是应用于自治系统内部,可是在自治系统内部我们是使用IGP.这就和"BGP是应用于不同自治系统之间"产生矛盾,那么IBGP存在的意义,比如说某种情况,需要使用到IBGP,它在网络中起到的作用.EBGP与IBGP之间的区别,EBGP在网络中又起什么作用?为什么要有IBGP,原因如下:1、IGP的能力限制,IGP处理路由的条目有限,而目前internet上核心路由器的路由表已经超过10万条。
假如没有IBGP,那么这些路由只能采取重分发的方式直接导入到IGP 中,这样做的缺点很明显:第一,IGP协议的作者并没有打算让IGP来处理如此大量的路由,IGP本身也无法处理这样大的路由数量;第二,如果非要让IGP来处理,那么根据IGP的处理原则,假如这10万路由中任何一条路由发生变化,那么运行IGP的路由器就不得不重新计算路由,更为严重的是,假如其中某一条路由出现路由抖动的情况,例如端口反复UP/DOWN,这会导致所有的IGP路由器每时每刻都不得不把10万条路由重新计算一遍,这种计算量对于绝大多数路由器来说是无法负担的。
另外对于运行RIP V1的路由器来说,10万条路由的定期更新,这根本就是无法接受的事情,除去带宽占用率不谈,我想,也只有少量高端的GSR以及TSR能够有这样的性能吧。
很显然,我们不可能让网络中所有的路由器都是GSR和TSR,如果真是这样,那么Cisco、juniper以及华为等厂家就要偷笑了。
例如:AS100----AS200---AS300,假定AS100/200/300各有100台路由器,而AS100中有1W 条路由要传递要AS300中,而AS200的路由器不需要学习AS100的路由。
IBGP水平分割:从一个IBGP学到的BGP路由不会传到另一个IBGP解决办法RR(路由反射器)可以指定他的客户1、如果一条路由通过客户学习到,那么会反射到客户、非客户、EBGP邻居2、如果一条路由通过EBGP邻居学习到,那么会反射给客户、非客户、EBGP邻居3、如果一条路由通过非客户学习到,那么会反射给客户和EBGP邻居,不会反射给非客户R1(config)#int s2/1R1(config-if)#ip add 12.0.0.1 255.255.255.0R1(config-if)#no shuR1(config-if)#int lo0R1(config-if)#ip add 1.1.1.1 255.255.255.0R1(config-if)#do ping 12.0.0.2Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 12.0.0.2, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 24/58/96 msR1(config-if)#router bgp 100R1(config-router)#bgp router-id 1.1.1.1R1(config-router)#nei 12.0.0.2 remote-as 234R1(config-router)#net 1.1.1.0 mask 255.255.255.0R1(config-router)#*Sep 12 19:39:51.659: %BGP-5-ADJCHANGE: neighbor 12.0.0.2 UpR1(config-router)#do sh ip bgpBGP table version is 3, local router ID is 1.1.1.1Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incompleteNetwork Next Hop Metric LocPrf Weight Path*> 1.1.1.0/24 0.0.0.0 0 32768 i*> 5.5.5.0/24 12.0.0.2 0 234 500 iR1(config-router)#do sh ip routeCodes: C - connected, S - static, R - RIP, M - mobile, B - BGPD - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter areaN1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2E1 - OSPF external type 1, E2 - OSPF external type 2i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2ia - IS-IS inter area, * - candidate default, U - per-user static routeo - ODR, P - periodic downloaded static routeGateway of last resort is not set1.0.0.0/24 is subnetted, 1 subnetsC 1.1.1.0 is directly connected, Loopback05.0.0.0/24 is subnetted, 1 subnetsB 5.5.5.0 [20/0] via 12.0.0.2, 00:05:0612.0.0.0/24 is subnetted, 1 subnetsC 12.0.0.0 is directly connected, Serial2/1R2(config)#int s2/1R2(config-if)#ip add 12.0.0.2 255.255.255.0R2(config-if)#no shuR2(config-if)#int s2/2R2(config-if)#ip add 23.0.0.2 255.255.255.0R2(config-if)#no shuR2(config-if)#do ping 23.0.0.3Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 23.0.0.3, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 12/65/144 msR2(config)#router eigrp 90R2(config-router)#no auR2(config-router)#net 23.0.0.0 0.0.0.255R2(config-router)#net 2.2.2.2 0.0.0.0R2(config-router)#int lo0R2(config-if)#ip add 2.2.2.2 255.255.255.255R2(config)#router bgp 234R2(config-router)#bgp router-id 2.2.2.2R2(config-router)#no synR2(config-router)#no auR2(config-router)#nei 3.3.3.3 remote-as 234R2(config-router)#nei 3.3.3.3 up lo0R2(config-router)#nei 12.0.0.1 remote-as 100R2(config-router)#*Sep 12 19:39:54.599: %BGP-5-ADJCHANGE: neighbor 12.0.0.1 UpR2(config-router)#exit*Sep 12 19:42:41.763: %BGP-5-ADJCHANGE: neighbor 3.3.3.3 UpR2(config-router)#do sh ip bgp sumBGP router identifier 2.2.2.2, local AS number 234BGP table version is 2, main routing table version 21 network entries using 101 bytes of memory1 path entries using 48 bytes of memory1 BGP path attribute entries using 60 bytes of memory1 BGP AS-PA TH entries using 24 bytes of memory0 BGP route-map cache entries using 0 bytes of memory0 BGP filter-list cache entries using 0 bytes of memoryBGP using 233 total bytes of memoryBGP activity 1/0 prefixes, 1/0 paths, scan interval 60 secsNeighbor V AS MsgRcvd MsgSent TblV er InQ OutQ Up/Down State/PfxRcd 3.3.3.3 4 234 6 7 2 0 0 00:02:35 012.0.0.1 4 100 10 9 2 0 0 00:05:23 1R2(config-router)#do sh ip bgpBGP table version is 2, local router ID is 2.2.2.2Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incompleteNetwork Next Hop Metric LocPrf Weight Path*> 1.1.1.0/24 12.0.0.1 0 0 100 iR2(config)#router bgp 234R2(config-router)#nei 3.3.3.3 next-hop-self /R3开始学到了1.1.1.0/24没有优化的路由,因为下一跳不可达,要在R2上给R3指明next-hop-self *Sep 12 19:48:50.667: %BGP-5-ADJCHANGE: neighbor 3.3.3.3 UpR2(config-router)#do sh ip bgpBGP table version is 3, local router ID is 2.2.2.2Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incompleteNetwork Next Hop Metric LocPrf Weight Path*> 1.1.1.0/24 12.0.0.1 0 0 100 i*>i5.5.5.0/24 4.4.4.4 0 100 0 500 iR3(config)#int s2/1R3(config-if)#ip add 23.0.0.3 255.255.255.0R3(config-if)#no shuR3(config-if)#ip add 34.0.0.3 255.255.255.0R3(config-if)#no shuR3(config-if)#do ping 34.0.0.4Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 34.0.0.4, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 20/68/112 msR3(config-if)#router eigrp 90R3(config-router)#no auR3(config-router)#net 23.0.0.0 0.0.0.255R3(config-router)#net 34.0.0.0 0.0.0.255R3(config-router)#net 3.3.3.3 0.0.0.0R3(config-router)#int lo0R3(config-if)#ip add 3.3.3.3 255.255.255.255R3(config-if)#router bgp 234R3(config-router)#bgp rouR3(config-router)#bgp router-id 3.3.3.3R3(config-router)#no synR3(config-router)#no auR3(config-router)#nei 2.2.2.2 remote-as 234R3(config-router)#nei 2.2.2.2 up lo0R3(config-router)#nei 4.4.4.4 remote-as 234R3(config-router)#nei 4.4.4.4 up lo0*Sep 12 19:42:54.131: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 UpR3(config-router)#*Sep 12 19:43:06.723: %BGP-5-ADJCHANGE: neighbor 4.4.4.4 UpR3(config-router)#do sh ip bgp/因为下一跳不可达BGP table version is 1, local router ID is 3.3.3.3Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incompleteNetwork Next Hop Metric LocPrf Weight Path * i1.1.1.0/24 12.0.0.1 0 100 0 100 i * i5.5.5.0/24 45.0.0.5 0 100 0 500 i R3(config-router)#do sh ip bgpBGP table version is 2, local router ID is 3.3.3.3Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incompleteNetwork Next Hop Metric LocPrf Weight Path *>i1.1.1.0/24 2.2.2.2 0 100 0 100 i* i5.5.5.0/24 45.0.0.5 0 100 0 500 iR3(config-router)#do sh ip bgp/下一跳可达,在R2和R4上做next-hop-selfBGP table version is 3, local router ID is 3.3.3.3Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incompleteNetwork Next Hop Metric LocPrf Weight Path*>i1.1.1.0/24 2.2.2.2 0 100 0 100 i*>i5.5.5.0/24 4.4.4.4 0 100 0 500 iR3(config)#router bgp 234R3(config-router)#nei 2.2.2.2 route-reflector-client /指明R2为自己的客户,符合第一条R3(config-router)#*Sep 12 19:48:33.619: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Down RR client config change R3(config-router)#*Sep 12 19:49:03.139: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 UpR3(config-router)#R4(config)#int s2/1R4(config-if)#ip add 34.0.0.4 255.255.255.0R4(config-if)#no shuR4(config-if)#int s2/2R4(config-if)#ip add 45.0.0.4 255.255.255.0R4(config-if)#no shuR4(config-if)#do ping 45.0.0.5Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 45.0.0.5, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 4/66/156 msR4(config-if)#router eigrp 90R4(config-router)#no auR4(config-router)#net 34.0.0.0 0.0.0.255R4(config-router)#net 4.4.4.4 0.0.0.0R4(config-router)#int lo0R4(config-if)#ip add 4.4.4.4 255.255.255.255R4(config-if)#router bgp 234R4(config-router)#bgp rouR4(config-router)#bgp router-id 4.4.4.4R4(config-router)#no synR4(config-router)#no auR4(config-router)#nei 3.3.3.3 remote-as 234R4(config-router)#nei 3.3.3.3 up lo0R4(config-router)#nei 45.0.0.5 remote-as 500R4(config-router)#*Sep 12 19:41:59.647: %BGP-5-ADJCHANGE: neighbor 45.0.0.5 UpR4(config-router)#*Sep 12 19:43:10.147: %BGP-5-ADJCHANGE: neighbor 3.3.3.3 UpR4(config-router)#do sh ip bgpBGP table version is 2, local router ID is 4.4.4.4Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incompleteNetwork Next Hop Metric LocPrf Weight Path *> 5.5.5.0/24 45.0.0.5 0 0 500 i R4(config-router)#exitR4(config)#router bgp 234R4(config-router)#nei 3.3.3.3 next-hop-selfR4(config-router)#do sh ip bgpBGP table version is 3, local router ID is 4.4.4.4Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incompleteNetwork Next Hop Metric LocPrf Weight Path *>i1.1.1.0/24 2.2.2.2 0 100 0 100 i *> 5.5.5.0/24 45.0.0.5 0 0 500 iR5(config)#int s2/2R5(config-if)#ip add 45.0.0.5 255.255.255.0R5(config-if)#no shuR5(config-if)#int lo0R5(config-if)#ip add 5.5.5.5 255.255.255.0R5(config-if)#router bgp 500R5(config-router)#bgp rouR5(config-router)#bgp router-id 5.5.5.5R5(config-router)#no synR5(config-router)#no auR5(config-router)#nei 45.0.0.4 remote-as 234R5(config-router)#net 5.5.5.0 mask 255.255.255.0R5(config-router)#do sh ip bgpBGP table version is 3, local router ID is 5.5.5.5Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,r RIB-failure, S StaleOrigin codes: i - IGP, e - EGP, ? - incompleteNetwork Next Hop Metric LocPrf Weight Path *> 1.1.1.0/24 45.0.0.4 0 234 100 i *> 5.5.5.0/24 0.0.0.0 0 32768 iR5(config-router)#do sh ip routeCodes: C - connected, S - static, R - RIP, M - mobile, B - BGPD - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter areaN1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2E1 - OSPF external type 1, E2 - OSPF external type 2i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2ia - IS-IS inter area, * - candidate default, U - per-user static routeo - ODR, P - periodic downloaded static routeGateway of last resort is not set1.0.0.0/24 is subnetted, 1 subnetsB 1.1.1.0 [20/0] via 45.0.0.4, 00:05:295.0.0.0/24 is subnetted, 1 subnetsC 5.5.5.0 is directly connected, Loopback045.0.0.0/24 is subnetted, 1 subnetsC 45.0.0.0 is directly connected, Serial2/2。
IBGP、EBGP、IGP、BGP区别我们知道,在自治系统内部使用IGP路由协议,而在不同自治系统之间使用BGP路由协议(严格来讲,BGP不是路由协议).BGP产生的原因是为了在不同自治系统(AS)之间进行路由转发,而其中又提出了EBGP和IBGP两种,EBGP用于在不同自治系统之间,但IBGP,书上说它是应用于自治系统内部,可是在自治系统内部我们是使用IGP.这就和"BGP是应用于不同自治系统之间"产生矛盾,那么IBGP存在的意义,比如说某种情况,需要使用到IBGP,它在网络中起到的作用.EBGP与IBGP之间的区别,EBGP在网络中又起什么作用?为什么要有IBGP,原因如下:1、IGP的能力限制,IGP处理路由的条目有限,而目前internet上核心路由器的路由表已经超过10万条。
假如没有IBGP,那么这些路由只能采取重分发的方式直接导入到IGP 中,这样做的缺点很明显:第一,IGP协议的作者并没有打算让IGP来处理如此大量的路由,IGP本身也无法处理这样大的路由数量;第二,如果非要让IGP来处理,那么根据IGP的处理原则,假如这10万路由中任何一条路由发生变化,那么运行IGP的路由器就不得不重新计算路由,更为严重的是,假如其中某一条路由出现路由抖动的情况,例如端口反复UP/DOWN,这会导致所有的IGP路由器每时每刻都不得不把10万条路由重新计算一遍,这种计算量对于绝大多数路由器来说是无法负担的。
另外对于运行RIP V1的路由器来说,10万条路由的定期更新,这根本就是无法接受的事情,除去带宽占用率不谈,我想,也只有少量高端的GSR以及TSR能够有这样的性能吧。
很显然,我们不可能让网络中所有的路由器都是GSR和TSR,如果真是这样,那么Cisco、juniper以及华为等厂家就要偷笑了。
例如:AS100----AS200---AS300,假定AS100/200/300各有100台路由器,而AS100中有1W 条路由要传递要AS300中,而AS200的路由器不需要学习AS100的路由。
BGP简介BGP 属于路径矢量协议他和距离矢量路由协议的区别是:距离矢量强调的是一个距离,即下一跳路由器,因为一台路由器下一跳地址总是他的邻居路由器路径矢量强调的是一个下个AS,即下一跳AS。
他的选路也是基于AS不同的ISP之间有不同的AS号,不同的AS主要目的是基于管理,电信和网络各自管理各自AS内部的IGP,而AS和AS之间的路由则基于BGP,同时也是为了减少路由条目。
BGP更新利用TCP 端口179 所以更新是可靠的更新基础概念一些名词peer=neighborBgpspeakers= 运行BGP的路由器BGP管理距离IBGP 200 IBGP是就是同一个AS之中建立的bgp邻居关系EBGP 20 EBGP就是在不同as之间所建立的bgp邻居关系用EBGP是为了提供AS之间的路由,单既然用IGP就可以在一个AS内部通告路由问什么要再搞个IBGP出来答:IBGP的作用就是为了在同一个AS内的边界路由器上互相通告更新信息,必须有个机制能让同一个AS内的BGP路由器来互相通告更新信息BGP中的建立邻居不需要有直连的链路(这点和IGP的不同)原因是BGP使用的TCP协议,TCP是个点到点的协议他不支持组播,所以他是单播的,单播是可以被路由器转发的。
由此我推理出BGP的所有报文都是单播的,因为他的邻居不直连所以无法通告组播来传递BGP是路劲矢量协议凡矢量协议必有水品分割,BGP的水品分割分为EBGP和IBGP的水品分割EBGP水平分割:主要依赖AS号来防止环路(例如从某个EBGP邻居学到路由会再通告给此邻居通告命令sh ip bgp nei x.x.x.x advertised-route 查看,单对方不会接收而已),在路由被传播过程中每个传播者都加入自身的AS进去.(AS是bgp的属性之一)IBGP水平分割: 默认的通过IBGP学到的路由不会再通告给其他的邻居,所以必须保证网络是全网状的或者通过其他手段来通告给其他IBGP)BGP的边界网关路由器从EBGP学到的路由通告给IBGP的邻居,通过IBGP接收到的路由的路由器默认不再通告给其他IBGP邻居了,所以要保持一个full mesh接口,(但是如果此路由器也是BGP的边界网关路由器,则可以通告给其他的EBGP邻居)有个例外是通告的路由如果不在路由表中的则不会通告此路由BGP的route-id 建议和OSPF的一致不然会出问题BGP的用环回口建立邻居的时候neighbor x.x.x.x update-source 虽然理论上只要一边设置就可以但是建议两边都设置BGP的neighbor 和network 是分开的neighbor 命令用来建立邻居,而network命令仅用来传路由(通告路由)BGP中三张表?BGP表是什么?答1 路由表,bgp表,邻居表 2 sh ip bgp 可查看被注入(用network命令)BGP的路由BGP默认不负载均衡BGP传播和下一跳;BGP传播的是AS的路径,所以实际的下一跳地址是通告AS路劲的bgp路由器,不像IGP 总是相邻的邻居路由器,所以必须保证通过递归让bgp路由器能有下一跳地址。
BGP的同步问题
BGP路由优的条件:
1:同步(在默认情况下从一个IBGP邻居学到的路由不通告给其他EBGP或者IBGP 邻居也不放进路由表,直到IGP邻居学到这个路由条目,目的就是防止路由黑洞,针对与IBGP的EBGP传过来就是默认最优的 同步仅仅是IBGP的一个规则)
2:下一跳
Next-hop-self
R1配置BGP表,路由表
router bgp 1
bgp log-neighbor-changes
network 1.1.1.0 mask 255.255.255.0
neighbor 172.16.1.2 remote-as 2
1.0.0.0/24 is subnetted, 1 subnets
C 1.1.1.0 is directly connected, Loopback0
3.0.0.0/24 is subnetted, 1 subnets
B 3.3.3.0 [20/0] via 172.16.1.2, 00:01:52
172.16.0.0/24 is subnetted, 1 subnets
C 172.16.1.0 is directly connected, FastEthernet0/0
*> 1.1.1.0/24 0.0.0.0 0 32768 i *> 3.3.3.0/24 172.16.1.2 0 2 i R2配置BGP表,路由表
router rip
version 2
network 2.0.0.0
network 10.0.0.0
router bgp 2
no synchronization
bgp log-neighbor-changes
neighbor 10.1.1.2 remote-as 2
neighbor 10.1.1.2 next-hop-self
neighbor 172.16.1.1 remote-as 1
1.0.0.0/24 is subnetted, 1 subnets
B 1.1.1.0 [20/0] via 172.16.1.1, 01:08:19
2.0.0.0/24 is subnetted, 1 subnets
C 2.2.2.0 is directly connected, Loopback0
3.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
B 3.3.3.0/24 [200/0] via 10.1.1.2, 00:03:29
R 3.0.0.0/8 [120/1] via 10.1.1.2, 00:00:16, Serial1/1 172.16.0.0/24 is subnetted, 1 subnets
C 172.16.1.0 is directly connected, FastEthernet0/0
10.0.0.0/24 is subnetted, 1 subnets
C 10.1.1.0 is directly connected, Serial1/1
*> 1.1.1.0/24 172.16.1.1 0 0 1 i *>i3.3.3.0/24 10.1.1.2 0 100 0 i R3配置BGP表,路由表
router rip
version 2
network 3.0.0.0
network 10.0.0.0
!
router bgp 2
no synchronization
bgp log-neighbor-changes
network 3.3.3.0 mask 255.255.255.0
neighbor 10.1.1.1 remote-as 2
1.0.0.0/24 is subnetted, 1 subnets
B 1.1.1.0 [200/0] via 10.1.1.1, 00:05:02
R 2.0.0.0/8 [120/1] via 10.1.1.1, 00:00:04, Serial1/0
3.0.0.0/24 is subnetted, 1 subnets
C 3.3.3.0 is directly connected, Loopback0
10.0.0.0/24 is subnetted, 1 subnets
C 10.1.1.0 is directly connected, Serial1/0
*>i1.1.1.0/24 10.1.1.1 0 100 0 1 i
*> 3.3.3.0/24 0.0.0.0 0 32768 i
同步主要是为了防止路由黑洞以免出现路由表中存在路由但是数据包不可达的情况,如果一个路由条目在路由表中没有显示*或者>,我们检查的方向就是是否关闭同步,检查下一条是否可达!~
r1#ping 3.3.3.3 source 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds: Packet sent with a source address of 1.1.1.1
!!!!!
r3#ping 1.1.1.1 source 3.3.3.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 3.3.3.3
!!!!!
要求:R1,R2建立IBGP邻居R2,R3建立IBGP邻居宣告R1上1.1.1.0/24 在看R3上的BGP表有什么变化当然保证底层可达使用静态路由!
R1配置
router bgp 1
bgp log-neighbor-changes
network 1.1.1.0 mask 255.255.255.0
neighbor 172.16.1.2 remote-as 1
ip classless
ip route 10.1.1.0 255.255.255.0 172.16.1.2
R2配置
router bgp 1
no synchronization
bgp log-neighbor-changes
neighbor 10.1.1.2 remote-as 1
neighbor 172.16.1.1 remote-as 1
R3配置
router bgp 1
bgp log-neighbor-changes
neighbor 10.1.1.1 remote-as 1
ip classless
ip route 172.16.1.0 255.255.255.0 10.1.1.1
在这种情况下:R1和R3没有建立IBGP邻居 在R2上关闭同步以后可以学习到1.1.1.0/24(因为有同步的出现在IGP中无法学到
1.1.1.0/24所以BGP路由会认为可能产生黑洞将路由表示为不优!)路由并且也放进了R2的路由表中 但是在R3的BGP表中却没有
1.1.1.0/24的路由 所以可以说明IBGP水平分割。
当一个IBGP收到一个IBGP邻居的路由时他不会再将这条路由传递给下一个IBGP邻居!
解决办法:BGP邻居全互联!路由放射器!联邦!都可以解决!依照上面的试验说明:
同步:是R2上可以收到路由但是由于IGP没有可达的1.1.1.0/24的路由所以R2认为次路由不优 不放进R2的路由表中
水平分割:只可能存在于IBGP邻居中,R2可以收到路由但是这条路由是从另一个IBGP邻居R1那里收到的R2不会再把这条路由传递给R3更不会出现在R3的路由表中,就算R2的同步关闭R2的路由表中又这条1.1.1.0/24的路由R2也不回将它在传给R3。