BGP
  
  BGP(边界网关协议)和其他的内部路由协议(IGP)不同,它是属于外部网关路由协议(EGP)。
  它不像eigrp或ospf一样要求准确的路由信息,尽快的转发包,快速收敛。它主要的任务是通过策略对数据或路由经行控制。也不像eigrp和ospf那样根据成本值和度量值来判断。而是有点像rip,根据跳数判断。不同点是rip是每一个router是一跳,BGP每一个AS是一跳。
  另外BGP工作在传输层,靠tcp179端口传输。通过周期性发送keeplive保活。
  
  
  
  
  
  
  应该使用BGP的情况:
  1.服务供应商使用:当AS1的数据需要穿越AS2,但不允许AS1的用户访问AS2内部的时候。
  2.多宿主:同时连接到多个AS或服务供应商
  3.PBR:需要对BGP路由/数据,进行人为控制的时候
  不该使用BGP的情况:
  1.与ISP只有单连接,没有同时连接到多个ISP
  2.网络硬件设备的档次不够(内存/CPU)
  3.对BGP路由操纵理解有限,无法预计BGP的后果
  4.链路带宽不足
  
  
  
  
  
  
  BGP的基本概念
  
  1.BGP的选路规则:(1)最先收到路由优先于后收到的路由。(2)优先选择BGP的Router-ID较低的路由。
  
  2.EBGP和IBGP
  EBGP是指在不同AS里的BGP对等体,IBGP是指在同一个AS里的BGP对等体(不一定是直连的)
  
  3.BGP与IGP协议配置理念的不同:
  在IGP里路由协议是在接口上被激活并发送路由更新,同时将本接口上的网段进行路由。
  在BGP里路由协议是向BGP neighbor发送路由更新的,没有激活接口的概念。所以BGP需要先手动指定邻居再用network宣告要转发的条目
  BGP当检测到本地network命令,首先会检查路由表,查看是否此条路由存在,如果有,则将此条路由通过给对等体,否则忽略此条network命令
  
  4.BGP的自动汇总和水平分割:
  不像rip和eigrp那样在主类边界汇总,BGP将多个相同主类网络下的无类网络向主类网络进行汇总并向邻居通告,不管其本身是否处于主类边界。 这点通告有类网络时即可发现
  默认情况下通过IBGP邻居学到的路由是不会传给其他IBGP邻居的(直传一跳)
  
  5.BGP同步特性:
  如果一个AS要提供到达别的AS的穿越服务的话,BGP是不会宣告路由的,除非这个提供穿越服务的AS里的路由器都通过AS学到了这些路由。(不使用或不通告给任何EBGP邻居从IBGP邻居学到的路由,直到从IGP也学到相同的路由)
  如下情况可关闭同步:(1)不想让某个AS提供到达别的AS的穿越服务 (2)AS内所有穿越路由器都运行BGP
  
  6.BGP更新源规则:
  (1)默认情况下,BGP路由器以自己路由表中--到达对方地址的那条路由所指的出接口(物理接口)地址作为自己BGP更新源(源地址)
  (2)当BGP路由器收到邻居发来的BGP信息时,会检查其源地址,然后和自己宣告的neighbor目标进行比较,如果一直,则可建立BGP连接
  
  
  
  
  
  
  BGP的三张表
  1 邻居表(show ip bgp summary)
  BGP的邻居可以是直连设备,也可以跨越着建立
  EBGP邻居分别属于两个不同的AS 通常是直连的
  IBGP邻居同时属于一个AS 可以是直连的 也可以非直连
  2 转发数据库(show ip bgp)
  BGP路由器可以从多个邻居那里学到多条到达同一目标的路径,但是bgp默认是不会负载均衡的,也就是说只有一条可用路径,这条路径是靠“BGP属性”的优先顺序选出来的“优化路径”。只有获得“优化路径”(会标上一个>号)才能作为BGP选出的种子选手去参加 到达目标网络的“AD竞选”
  3 路由表
  选出AD竞选的路由,才能成功进入路由表
  
  
  
  
  
  
  BGP的属性:
  
  1.origin (源属性)
  (1)IGP:网络是通过IGP学到的,优先级最高
  (2)EGP:网络是通过EGP学到的,优先级次高
  (3)不完全:网络是通过其他方式学到的,如重分发,优先级最低
  
  2.AS_path (AS路径属性)
  AS_path属性使用AS号的顺序组合来决定AS间的路径。当BGP路由器在它自己的AS里宣告目标网络,AS号加进AS_path里。以此类推(IBGP的AS号不会被加进AS_path属性,只有EBGP的AS号才会被加进)
  ------ EBGP依靠AS_path防环,IBGP依靠IBGP水平分割防环 ------
  
  3.local_pref (本地优先级) <——在IBGP中影响离开AS的数据流
  local_pref属性只用于IBGP对等体之间,不会被传输到其他AS中去,它用于决定到达相同目标网络路径的优先级。值越高,优先级越高(默认100)
  local_pref属性是包含在BGP路由更新里的,会在整个AS的BGP的对等体之间进行交换
  
  4.MED (多出口鉴别器) <——在EBGP中影响进入AS的数据流
  Multi-exit-discriminator,定义了到达相同目标网络,AS之间多条路径的优先级,值越低优先级越高,默认是0.
  和本地优先级不同的是,MED属性是在AS之间交换的。进入一个AS里的MED属性是不会再离开该AS的。也就是说:当一个带有MED属性的BGP路由更新要发送到其他AS的时候,MED就会被重置为默认(0)。除非使用 bgp alway-compare-med命令
  
  5.admin weight (管理权重)
  只对本地BGP路由器生效,本地BGP路由器产生的管理权重默认是32768,从别的路由器所产生的路由管理权重默认是0,值越高优先级越高。