BGP学习笔记

2018年6月23日23:27:05 发表评论 920 views

BGP学习笔记

 一、概念
BGP(interior Gateway Protocols):边界网关协议,是一种在自治系统之间动态交换路由信息的路由协议.

IGP(interior Gateway Protocols):内部网关协议在同一个自治系统内交换路由信息,RIP,OSPF和IS-IS都属于IGP。IGP的主要目的是发现和计算自治域内的路由信息。

IGP是在AS内运行,而BGP用于AS之间的操作,是一种 无环路的路由协议。
BGP是一种距离矢量协议,严格说来是一种路径矢量。

IGP宣告网络的可达性以及链路的开销;BGP宣告到达每个可达的AS的路径的信息,它是使用路由策略来控制数据经过AS的走向,(联系到前面学的route-map )

1. 应用到穿越AS数据包的时候:一个AS有多条连接到达另一个AS;
2. 对路由器的内想出和CPU资源要求高
3. 可靠的路由更新,触发式增量更新;运行于TCP的端口179
4. 运用于大型的网络,如internet .
5. 周期性的keeppalive信息保证TCP的连接是否存活

BGP的三张表和OSPF有所不同
1,邻居表  2,BGP转发表  3,IP路由表

二、BGP的四种包:
open 包:包括holptime 和 BGP的RID
keepalive : 保活计时器
update : 每条路径的信息,网络信息
notification :检测到错误之后发送给对方的邻居,发出这种包后,那么BGP的连接断开

三、BGP的分类:
当形成了邻居关系的两台路由器分别位于不同的AS,这叫EBGP;两台路中默认是直连的(外部BGP)
当形成了邻居关系的两台路由器分别位于相同的AS
这叫IBGP(内部BGP) 可以不是直连 ,(IBGP的信息只传递一跳,也就是说,在默认情况下路由器通过IBGP学习到的路由不会再传给别的IBGP邻居)————防止环路的一种机制
四、BGP的同步(重点)

BGP的下一跳属性
下一跳:描述了宣告到达某个目标地址的路径上,下一跳路由器的IP地址(当然对于EBGP来说,下一跳就为它的EBGP邻居的IP地址)

重点: BGP路由器不会把那些通过IBGP邻居学到的BGP路由宣告给自己的EBGP邻居。除非自己的IBGP路由表中存在了这些路由,才可以向EBGP邻居宣告这些路由。

五、BGP 的属性

1, origin 属性
IGP:网络层路由信息(NLRI)是通过IGP学习到的,优先级最高
EGP : NLRI的通过EGP学习到的,优先级次高,
incomplete : NLRI是通过其他或别的方式学习到的,比如:路由的再发布,这个优先级最低。

2, as_path属性
EBGP利用as_path来防止环路(IBGP的防环只传一跳)只有EBGP的AS号才会被加入进AS_PATH的属性里
而IBGP是利用下一跳防止环路

3,next_hop 属性
对等体之间的路由选择 EBGP的下一路是一个实体(直连),而IBGP的对等体之间可以是不直连的

4,本地优先级
只有于IBGP对等体之间 本地优先级默认为100,应用于到达不同AS之间有多条路径,相同AS的多出口

5,MED属性
bgp 的metric值就是med属性,定义了到达相同目标网络,AS之间的多条路由的优先级,值越低的优先级越高,默认为0   不同AS之间的多出口

6,管理权重属性
cisco私有一属性,只对本地的BGP路由器生效,值越高优先级越高;本地产生默认为32768,从别的学习到的默认为0

BGP的选路策略
1.管理权重
2.本地优先级
3.AS-PATH
4.ORIGIN
5.MED
6.离自己最过的IGP邻居
7.选择RID最低的

六、BGP的基本配置

router bgp {as-number}//启用BGP进程,一台路由器上只能启用一个BGP进程
neighbor {ip-address} remote-as {as-number}  //指定BGP的邻居
network { network-number } [ mask ]//定义要宣告的网络

R(config)#no synchronization   //关闭同步特性

利用回环接口建 立BGP的邻居关系:

router (config-route)#neighbor { ip-address } ebgp-multhop [ TTL ] //定义跳数,默认值为255
neighbor { ip-address } update-source loopback (nubmer)  //使用回环接口建立TCP连接
启用IGP来保证下一跳的可达性(包括静态路由,最好不用默认路由)

注意:
1、使用回环接口建立邻居关系时,对于EBGP要指定多跳关系
2、 要确保本地BGP路由器的IGP路由表中有到邻居加环接口的路由
3、为了防止环路,遇上默认路由时,邻居关系将不会被建立

更改下一跳:
neighbor { ip-address } next-hop-self   //告诉我的邻居,我就是你的下一跳

BGP的路由自动汇总
no auto-summary //关闭自动汇总
aggregate-address {ip address }{mask}[summary-only] [route-map] //手动汇总

配置管理权重:

router (config-route)#neighbor { ip-address } weight ( weight) // 多条路径优先选择AS,值越高越优先

配置BGP的本地优先级:

router (config-route)#bgp default local-preference ( local-preference ) //默认值为100,值越高越优先(对于同一个AS有多条路径)

配置BGP的MED属性 (metric值)

router (config-route)# default-metric (metric) 值越低越优先
router (config-route)# bgp always-compare-med //启用来自不同的AS的BGP路由的更新的MED属性

配置BGP对等体组
router (config-route)# neighbor (group-name) peer-group   //定义一个对等体组
router (config-route)# neighbor (ip-address ) peer-grouup ( group-name )

在一个AS内,为了避免路由环路的产生, BGP则不会将自己学到的IBGP路由再转发,也就是说在IBGP在AS内只能传一跳,导致产生路由黑洞,为了解决这个问题,可以有两钟方法(经自己实验总结出来,不知道正不正确,):
方法一:
在一个AS内所有的路由器建立BGP全互联,关闭同步;
命令:c(config-route)#no synchronization

方法二:
利用路由反射使得区域里的不是直连的路由器学习到IBGP路由器传来的BGP信息在中间路由器上做
router bgp 200
neighbor 193.1.1.2 route-reflector-client
neighbor 194.1.1.2 route-reflector-client

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: