首页 > 代码库 > BGP

BGP

公有AS:0-64511

私有AS:64512-65535

它是一个路径矢量协议

IGP是以路由器为一个节点的,也就是hop-by-hop

BGP是以AS号为一个节点,as-by-as


特点:

1、基于TCP 端口为179,可靠的更新机制

2、触发更新机制

3、keepalive 每60秒发送一次,holdtime是180秒

  IGP中hello的作用:

  1、就是建立邻居

  2、和keepalive一样的作用

  BGP发送OPEN报文,建立邻居,之后周期发送keepalive报文

4、具有更多的属性

5、设计用于大型网络


BGP有三张表:

1、邻居表  show ip bgp summary

2、BGP表   show ip bgp

3、路由表  show ip route b


IBGP的AD为200 EBGP的AD为20


BGP的报文类型:

1、open报文

2、keepalive报文

3、update报文

4、Notification报文:发送错误的时候


Peers=neighbors    speeker就是运行BGP的路由器


EBGP:AS之间建立的BGP邻居关系

IBGP:一个AS内建立的BGP关系

为什么需要有IBGP呢?

   很简单,位于一个AS内的两个运行BGP协议的路由器不运行IBGP的话,两者之间是没有办法交互BGP更新的。


问题:路由控制层面已经通了,为什么数据层面不通呢?

     那是因为控制层面进行交互的时候,传送报文的源目IP地址都是变化的,每经过一跳,都是有

直连路由来转发报文的。

     而数据层面的转发的源目IP地址都不是不变的,所以不是直达的路由,从而因为缺乏必要的路

由转发而失败。


解决的办法:

1、添加物理链路

2、BGP邻居的full mesh

3、将bgp重分布到IGP中,只能在实验室环境

4、MPLS,AS边界之间运行BGP,而AS内的路由器之间根据标签进行转发


EBGP的水平分隔:通过AS号来防环,到一个AS就记录一个AS号,如果接受到的报文中含有自己的

AS号,说明产生环路

IBGP的水平分隔:从IBGP邻居学习到IBGP路由,不会通告给其他的BGP邻居

wKioL1NzarLA4xxvAAEZKnFx-fM620.jpg

将R2上的2.2.2.0 /24通告出去

IGP的network的作用:

1、发送hello数据包,建立邻居

2、通告路由

而在BGP中是分开实现的

1、neighbor 建立邻居

2、network 通告本地有的路由

R2:

 router bgp 2

 bgp router-id 2.2.2.2

 network 2.2.2.0 mask 255.255.255.0

 show ip bgp

R2(config-router)#do show ip bgp

BGP table version is 2, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

             r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete


  Network          Next Hop            Metric LocPrf Weight Path

*> 2.2.2.0/24       0.0.0.0                  0         32768 i

*代表可用 >代表最优的路由   next hop 0.0.0.0 代表是自己通告的

R3(config)#do show ip bgp

BGP table version is 1, local router ID is 3.3.3.3

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

             r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete


  Network          Next Hop            Metric LocPrf Weight Path

* i2.2.2.0/24       12.1.1.2                 0    100      0 2 i

说明这个不是跳最优的路由

1、不能放入路由表

2、不会传递给其他BGP邻居


优化该类路由的条件:

1、同步,通过IBGP学习到IBGP路由不能用,除非通过IGP学习到该路由

  所以no synchronization 也就是关闭同步就好了

2、下一跳不达,通过使用next-hop-self告知对端用自己为下一跳

  R1:

    router bgp 1

    neighbor 3.3.3.3 next-hop-self

R3(config)#do show ip bgp

BGP table version is 2, local router ID is 3.3.3.3

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

             r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete


  Network          Next Hop            Metric LocPrf Weight Path

*>i2.2.2.0/24       1.1.1.1                  0    100      0 2 i

看到了吧,