个人总结的BGP心得包含大量实验环境和配置案例.docx
- 文档编号:28930741
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:73
- 大小:388.40KB
个人总结的BGP心得包含大量实验环境和配置案例.docx
《个人总结的BGP心得包含大量实验环境和配置案例.docx》由会员分享,可在线阅读,更多相关《个人总结的BGP心得包含大量实验环境和配置案例.docx(73页珍藏版)》请在冰豆网上搜索。
个人总结的BGP心得包含大量实验环境和配置案例
<BGP(BorderGatewayProtocol)理论部分>
·BGP属于EGP,是高级DV协议,也被称为路径矢量协议,基于TCP179端口。
·现在使用版本BGP4。
第一次做完整更新,以后就只增量更新
·AutonomousSystems:
运行同一种选路策略,由统一管理者管理。
1-64511 (公有)
64512-65535 (私有)
电信AS号:
4134网通AS号:
9929
B一个好的网站,可以了解到关于AS号的一些信息
Telnetroute-这一地址可以看到公网上的路由条目数
·IGP支持的路由条目有限
运行IGP不利于管理,
做路由聚合、选路。
·BGP路由器只能将其使用的路由通告给他的邻居。
BGP用Open报文建邻居,用KL报文做日常联系
·Neighbortable:
ListofBGPneighbors
·BGPforwardingtable/database
Listofallnetworkslearnedfromeachneighbor
Cancontainmultiplepathwaystodestinationnetworks
DatabasecontainsBGPattributesforeachpathway
·IProutingtable
Listofbestpathstodestinationnetworks
BGP表和路由表是独立的,同样遵循AD小的进入路由表。
BGP默认不做负载均衡
·Router-ID选举和OSPF一致。
四种报文:
Open---includesholdtimeandBGProuterID
(用于建立TCP连接后,发起BGP会话,每个邻居都用该消息来标识自己,并且规定自己的BGP运行参数)
Keepalive—
(用于保持BGP会话,每隔60秒发送一次,holdtime为180S)
Update---informationforonepathonly(couldbetomultiplenetworks)
---Includespathattributesandnetworks
·一个UPDATE消息一次只能通告一条路由,但它可以携带多个属性。
一个UPDATE消息一次也可通告多条路由,但它的属性必须相同。
一个UPDATE消息可以同时撤消多条路由。
Notification
---whenerrorisdetected
---BGPconnectionisclosedaftersent
(当检测到错误的时候就会发起Notification消息。
通常会导致BGP连接的终止)
> 1,空闲状态: BGP通常以空闲状态开始。 在该状态下,它拒绝接收所有入连接。 当一个开始时间出现的时候,BGP过程初始化所有的BGP资源,打开重试连接计时器、初始化到邻居的TCP连接,接听来自邻居的TCP初始化消息并将它的状态转到接连状态。 开始事件是又一个操作者配置BGP的一个过程。 2,连接状态: 在这种状态下,BGP过程会等到TCP连接完成以后再决定后续的动作。 如果连接建立成功,BGP连接将ConnectRetry清零,完成初始化过程,给邻居发送一个Open消息并转移到发送Open消息状态。 如果TCP连接失败,BGP过程会继续监听由邻居发起的连接,重置ConnectRetry计时器并转移到激活状态。 3,激活状态: 在这个状态下,BGP过程试图及邻居建立一个TCP连接。 如果连接建立成功,BGP连接将ConnectRetry清零,完成初始化过程,给邻居发送一个Open消息并转移到发送Open消息状态。 如果在激活状态时,ConnectRetry计时器超时,该过程回到连接状态。 4,发送Open消息状态: 在这种状态下,已经发送了Open消息,BGP正在等待从邻居发来的Open消息。 当收到一个Open消息后,检查该消息所有的字段。 如果发现了差错,会给它邻居发送一个Notification消息并且将状态转移到空闲。 如果在接收到的Open消息中没有发现差错,BGP给邻居发送一个Keepalive消息并且将Keepalive计时器置位。 邻居之间协商一个Hold时间,它们会选用较小的值。 如果协商的Hold时间是0,则没有启动Hold和keepalive计时器。 根据对等的AS号,决定该连接是内部的还是外部的,并且将状态转移到Open消息确认。 5,Open消息确认状态: 在这种状态下,BGP过程会等待一个Keepalive或者Notification消息。 如果收到了Keepalive消息,转移到建立状态,如果收到了Notification消息或者TCP断开消息,转移到空闲状态。 6,建立状态: 在这种状态之下,BGP对等之间的连接完全建立起来了。 对等之间可以交换Update,Keepalive和Notification消息。 如果收到了Update或Keepalive消息,重新启动Hold计时器。 如果收到Notification消息。 状态会转移到空闲。 ·ORIGIN属性 ORIGIN是一个公认必选的属性,它明确了路由更新消息的来源。 当BGP有多条路由时,它会将ORIGIN当作一个决定较优路由的因素。 它规定了以下几种源: ·IGP—一个IGP源会得到ORIGIN值中的最佳的选项。 ·EGP—NLRI是从EGP学习到的。 相对于IGP,EGP是第2选择。 ·Incomplete—NLRI是通过其他手段学习到的。 是ORIGIN最低的选择。 ·AS-PATH属性 AS-PATH是一个公认必选属性。 它用AS号的顺序来描述AS间的路径或者到NLRI所明确的目的地的路由。 AS-PATH属性的另外一个功能就是避免环路,如果BGP路由器从它的外部对端处收到了一条路由,而该路由的AS-PATH包含这个BGP路由器自己的AS号,于是该路由器就知道是条环路路由,从而将这样的路由丢弃掉。 R1(config)#route-mapAS R1(config-route-map)#setas-pathprepend789设置虚拟的AS号 通常都会这样加setas-pathprepend444加自已的AS号,不易搞混 ·NEXT_HOP属性 NEXT_HOP是一个公认必选属性。 描述了公布目的地的路径下一跳路由器的IP地址。 由BGPNEXT_HOP属性所描述的IP地址不经常是邻居路由器的IP地址。 要遵循下面的规则: ·如果正在进行的路由宣告的路由器和接收的路由器在不同的AS中,NEXT_HOP地址为正在宣告路由的路由器接口IP地址。 ·如果正在进行宣告路由的路由器和接收的路由器在同一个AS里,并且更新消息的NLRI指明目的地是同一个AS内,那么NEXT_HOP就是已经宣告路由的邻居的IP地址。 ·如果正在宣告的路由器和接收的路由器是内部对等实体,并且更新消息的NLRI指明目的地在不同的AS内。 NEXT_HOP是外部对等的接口地址。 ·LOCAL_PREF属性 LOCAL_PREF是公认自选属性。 只用在内部网关对端之间的更新消息中。 它不会传递给其他的AS。 如果一个内部运行BGP的路由器收到了一个目的地的多条路由。 它将这些路由的LOCAL_PREF进行比较,选择具有最高优先级的路由。 它只能影响离开AS的业务量。 R1(config)#route-mapWE R1(config-route-map)#setlocal-preference101 R1(config-router)#bgpdefaultlocal-preference101会影响所有路由 打上这一命令后---- ·对"EBGP传过来的路由"\"自己network的路由"起效,要show明细才能看到。 ·对"IBGP传过来的路由"不起效。 ·MED属性 MED属性是一个任选非传递属性。 这个任选非传递属性及EBGP的Update消息中携带,它允许一个AS将它的首选的入口点通知另外一个AS。 如果其他参数都相同,则收到同一个目的地的多条路由的AS将这些路由的MED进行比较,具有最低MED值的路由为首选。 这是因为将MED看成一个度量,并且最低的度量----最短的距离----是首选。 MED值只会传递给配置MED值的对端AS,从而使他们知道优先的路由,但是接收的AS不会在继续传递给下一个AS。 如果同一个目的地的两条路由来自两个不同的AS,也不进行MED值的比较。 MED值只对单一的AS有意义,当该AS有多个入口点时,它用来说明首选项的等级。 R1(config)#route-mapMED R1(config-route-map)#setmetric1 R1(config-router)#neighbor24.1.1.4route-mapMEDout 测试方法: 扩展ping/debugipbgpupdates ·默认比较从不同AS传来路由的MED。 R2(config-router)#bgpalways-compare-med ·ATOMIC_AGGREGATE属性 ATOMIC_AGGREGATE属性是一个公认必选的属性,它用来警告下游路由器出现了路径信息丢失。 当一个BGP路由器将更具体的路由聚合后,而且已经出现了路径信息丢失时,运行BGP的路由器必须将该属性附加到聚合路由中。 任何一台下游路由器收到后,不能使这条NLRI信息更详细。 并且当该路由公布给其他对端时,必须也附带该属性. ·AGGREGATOR属性 当设置了ATOMIC_AGGREGATE属性,运行BGP的路由器可以选择附加AGGREGATOR属性。 这个任选可透明传递属性包括发起聚合路由的路由器的AS号以及IP地址,从而提供了执行聚合的地点的信息。 ·Community属性 COMMUNITY是一个人选可透明传递的属性。 COMMUNITY属性标明一个目的地作为一些目的地团体中的一个成员,这些目的地共享一个或者多个共同的属性。 “可选”: BGP的所有邻居都有可能不识别社团属性。 (是可选的,路由器默认不认识) R2(config-router)#neighbor1.1.1.1send-community “传递”: 社团属性只会传给指定的邻居,并只在此邻居上起效。 比如上例: 就只传给1.1.1.1这一邻居,并只在它上面起效,不会再向后传 ·no-advertise: 携带此属性的路由不会通告给任何BGP邻居。 ·no-export: 携带此属性的路由不会传出本AS外,只会传给IGP。 (联邦中的小AS会传递)。 ·local-AS: 携带此属性的路由不会传出小AS。 R1(config-route-map)#setcommunityno-advertise/no-export/local-AS ·Weight属性 Weight属性是Cisco私有的属性。 只适用于一台路由器中的路由。 该参数不会传递给其他的路由器。 Weight值越高,优先级就越高。 当一个路由有多条路径的时候,路由器选择Weight值最高的那条路由。 由本地路由器产生的所有路由Weight值都是32768。 修改Weight--- R1同时从R3和R2学到同一条BGP路由,在R1上改: Neighbot3.3.3.3weight1 R1(config)#route-mapWE R1(config-route-map)# R1(config-route-map)#setweight8 R1(config-router)#neighbor2.2.2.2weight8 ·AS-SET属性 AS-SET属性的作用是在当路由聚合以后,NRLI信心产生了丢失,通过使用AS-SET属性,可以修复原来丢失的属性。 如聚合后,路由经过的AS号丢失,通过使用AS-SET,可以还原原来丢失的AS号。 防止环路的产生。 ·BGP路径抉择的过程: 1,首选具有最高Weight值的路由。 2,如果Weight相同,那么选择具有最高LOCAL_PREF值的路由。 3,如果LOCAL_PREF值相同,首选逻辑上在该路由器上发起的路由。 也就是说,首选从同一个路由 器上起源于IGP学习到的路由。 4,如果LOCAL_PREF值相同,而且没有逻辑上发起的路由,首选具有最短AS-PATH的路由。 5,如果AS-PATH相同,首选具有最低ORIGINCODE的路由,IGP 6,如果ORGIGN相同,首选具有最低MED值的路由。 7,如果MED相同值,在EBGP路由和联盟EBGP中,首选EBGP路由,在联盟EBGP路由和IBGP路由中首 选联盟EBGP路由。 8,如果路由相同,首选到BGP下一跳最短的路径。 9,如果路由相同,首选具有最低路由器ID的BGP路由。 10,如果路由器ID相同,首选具有最低IP地址的接口地址的路由。 ·BGP路由黑洞的解决方法: 1)物理线路的FullMesh(成本高,不可取) 2)BGP重分布进IGP(不可取) 3)BGP'sFullMeshIGP内所有路由器都运行BGP(不可取) 4)BGP'sPartialMesh(路由反射器/联邦) ·BGP'sSplitHorizonRule: IBGP: 从IBGP邻居收到的路由不再传给其他的IBGP邻居。 EBGP: 不接收携带本AS号的路由更新。 EBPG之间用直连接口来建邻居 IBGP中用环回口建邻居 <Synchronization>同步。 只针对IBGP邻居 BGP的同步仅限于IBGP的邻居,BGP同步的默认情况下,AS内的一个路由器从IBGP学到一条路由,不使用也不传,除非是从IGP也学习到该路由。 如果这个时候关闭BGP同步规则,就会产生一个路由黑洞。 例如: 假如同步关闭的情况下,IGP并不知道AS100和AS300的路由,当R1从AS100学过来一条路由,并且使用next-hop-self命令将下一跳改成自己的接口(EBGP默认学习过来的下一跳是对端路由器的接口)发布给IBGP邻居R4时,R4因为下一跳可达(IGP知道),所以将该路由加入路由表,并且发布给AS300,当AS300要去这个目的地时,它会将数据传给R4,R4收到这个数据包后,查看目的地址发现是去AS100的,它查看自己的路由表发现下一跳是R1的接口地址,于是继续查看路由表发现要去R1首先得经过R3,于是它把数据传送给了R3,由于R3运行的是IGP,并且它不知道AS100里的路由情况,所以它没有到达这个目的地的路由表,它会丢弃该路由,这样就造成了一个路由黑洞。 如果同步开启的情况下,R1收到了来自AS100的路由后,由于R1没有将BGP重发布进IGP,所以R1的IGP并不知道AS100里的路由情况,所以R1不会使用这一条路由,也不会传递给其他邻居。 所以路由黑洞不会产生。 解决IBGP路由器收到更新不会转发给其他IBGP邻居的方法: <Reflector> ·打破IBGP的水平分割规则。 ·如果路由是从非客户的IBGP对等学习到的,只将它反射给客户。 ·如果路由是从客户处学习到的,将它反射给除了发起该路由的客户外的所有非客户及客户。 ·如果路由是从EBGP对等处学习到的,将它反射给所有的客户和非客户。 <Confederation> 联邦 联盟是控制大型IBGP对等的另一条途径。 在联盟内的运行BGP的路由器和在同一个联盟AS内的对端之间使用IBGP,和其他联盟对端之间使用EBGP。 给每个联盟分配一个联盟ID。 对外部联盟内的对端来讲,这个联盟ID代表整个联盟AD号,外部对端看不到联盟的内部结构,只看到这些联盟所在的AS。 ·将大AS划分成若干个小AS,小AS之间是EBGP关系。 ·1、联邦中的所有路由器都必须用起小AS号。 (Routebgp小AS) R2#showipbgpneighbor12.1.1.1adverised-routes ·2、联邦中的所有路由器都必须声明大AS号 R1(config-router)#bgpconfederationidentifier1 ·3、连接小AS的边界路由器要互相指peers: 联邦中的小AS号(64512)不算作比较,只算作一个 R1(config-router)#bgpconfederationpeers64512 (对端小AS号) ·联邦外路由器和联邦的边界路由器建立邻居关系时,neighbor大AS号。 在shipbgp中,小AS号会用括号括住,并且不算做一个进行路径比较的AS号 <BGP基础配置部份> R4(config)#routerbgp64512 R4(config-router)#bgprouter-id94.4.4.4 R4(config-router)#neighbor24.1.1.2remote-as64513(EBGP邻居) R2(config)#routerb64513 R2(config-router)#neighbor3.3.3.3remote-as64513 (IBGP邻居) R2(config-router)#neighbor3.3.3.3update-sourceloopback0(更新源是环回口) R3(config)#iproute5.5.5.0255.255.255.0serial0 R5(config)#iproute3.3.3.0255.255.255.0serial0 R5(config-router)#neighbor3.3.3.3update-sourceloopback0 R3(config-router)#neighbor5.5.5.5ebgp-multihop2(EBGP设置多跳,环回口才用得上) R5(config-router)#neighbor3.3.3.3ebgp-multihop(默认255) R2#showipbgpsummary(摘要的邻居邻居信息) R2#showtcpbrief R2#showipbgpneighbors(详细的邻居信息) R4(config-router)#network4.4.4.0mask255.255.255.0 (严格按照IP地址掩码通告) R4(config-router)#network100.0.0.0 (在auto-summary时,也可以主类方式通告) 重发布BGP进入IGP 将BGP重发布进IGP的时候,只能发布EBGP学来的路由和自己宣告的路由进入IGP,从IBGP学来的路由不能发布进去,应为IBGP默认不转发给其他IBGP邻居,从发布进IGP的话就等于延长了传播,容易造成环路,而且IBGP的路由都在同一个AS类,推荐使用IGP来完成。 如果要强行发布IBGP路由进入IGP,那么在BGP下打Bgpredistribute-internal <Peer-Group> BGP为每个邻居都占用一个Buffer,使用Peer-Group可以使多个邻居共用一个Buffer。 针对多的邻居关系,减少配置量。 R1(config-router)#neighborWOLFpeer-group R1(config-router)#neighborWOLFremote-as64513 R1(config-router)#neighborWOLFupdate-sourceloopback0 调用: neighbor2.2.2.2peer-groupWOLF R1,R2通过EIGRP100和IBGP互联,EIGRP100通告环回接口192.168.192-199段进入BGP。 那么汇总的路由要发布给其他AS可以有下面的方法和问题。 1,使用静态路由聚合。 Iproute192.168.192.0255.255.248.0null0 Routerbgp100 Network192.168.192.0mask255.255.248.0 通过使用上面的配置来宣告汇总路由。 这样不用将EIGRP重发布进BGP也能通告一个汇总路由给其他AS。 2,抑制更具体的路由。 Routerbgp100 Aggregate-address192.168.192.0255.255.248.0summary-only Redistributeeigrp100 在R1,R2上重发布EIGRP100进入BGP,要使用aggregate-address命令前提是bgp路由表里面必须得有需要聚合的路由详细条目。 通过配置aggregate-address命令可以代替用静态路由方法通告汇总路由,后面如果跟summary-only命令的话,那么就会抑制具体的路由,只发布汇总后的路由。 如果不加上一个summary-only的话就会连具体路由一起通告出去,这样对方AS会更方便的控制路由。 s>192.168.192.00.0.0.0032768? *>192.168.192.0/210.0.0.032768i *i60.1.1.201000i s>192.168.193.00.0.0.0032768? s>192.168.194.00.0.0.0032768? s>192.168.195.00.0.0.0032768? s>192.168.196.060.1.1.2229785632768? s>192.168.197.060.1.1.2229785632768? s>192.168.198.060.1.1.2229785632768? s>192.168.199.060.1.1.2229785632768? 加上summary-only之后,在showipbgp时会显示出以上表格,前面的S代表抑制后的路由。 不会发给对方AS。 3,公布具体地址以及聚合路由。 在上面拓扑中,要满足将聚合路由和具体的地址通告给AS200,方便AS200控制具体的路由,又要满足AS300只能收到聚合的路由,可以通过以下几种方法来满足。 在R1上配置: Routerbgp100 Aggregate-address192.168.192.0255.255.248.0 Neighbor10.1.1.2route-mapcommunityout Neighbor10.1.1.2send-community access-list101permitiphost192.168.192.0host255.255.248.0(精确匹配聚合路由) route-map
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 个人 总结 BGP 心得 包含 大量 实验 环境 配置 案例