您的位置:首页 > 其它

BGP 学习第一课

2014-04-16 08:04 204 查看
一。什么时候要使用BGP路由

1.给运营商使用的

2.成担互联网的传输与业务。

3.如果企业要使用BGP,

1)如果是一个传输AS,(可能要成担互联网的流量)

2)连接不同的网络(比如连接了联通,又连接到了电信,以保安全)单位使用的就这种。

3)希望流量是可以控制的。

如果一个连电信一个连网通,可以使用 ROUTE MAP 进行判断目的地址,如果是电信走电信,如果是网通走网通。但是性能会降低,因为这台设备就会是边界路由,要使用NET,转发,判断每个包的走向,是没有办法的办法,效率底。

BGP 围绕的主要是 AS,将整个互联网分成了几个若干的管理域。

多个AS之间做路由使用 BGP,但AS内部还是使用 OSPF RIP 等。

一个AS 是一个单独的技术管理下的路由器,

AS号是IANA来管理和分配,是个组织。

私有的AS号 64512 - 65535 可以内部自己使用。

path-vector 路径矢量 bgp新的特性。经过AS最少的就是优先使用的路径

BGP依赖管理员分配的属性,依据属性进行操作和寻径。

BGP只能影响自己的决策,不能影响邻居(AS)做决策。

什么时候不能用

硬件不行不能用

只有一个出口不能用

BGP传输的前提,必须要建立一条TCP会话,要想两个路由器建立一个BGP会话,就必须要先建立一个TCP会话,使用端口179

促发更新,只有产生变化时才会向外发送更新。

周期性发送保活信息,确认双方是正常的。

OSPF 使用 IP 包

EIGRP 使用 IP 包

RIP 使用 UDP 520端口

使用TCP的意义。BGP使用TCP 179 ,因为TCP可靠,有窗口机制传大包有保障,有流控,有重传输机制。

BGP也是三张表

邻居表

要建立邻居表先要建议TCP的会话,然后建议BGP的邻居关系 ,在周期性发送保活信息。会把邻居关系记录邻居表中。

转发表

也叫转发数据库。从每个邻居里学到的所有网络的列表。取最优的路径放IP路由表里

IP路由表

记录路由

BGP是有管理距离的

IBGP 是 内部BGP 管理距离是200

EBGP 是外部BGP 管理距离是 20

建议通信时使用四个消息

先建立一条TCP连接

OPEN

发送一个OPEN消息 ,如果收到,就每60秒发送KEEPALIVE

OPEN消息包括

version number : 4 如果版本不同,就互相协商,

AS Number :

Hold time : 建议秒数 可以是0 但最少是3

route id : 路由器的名子,建议手动设置,如果没有环回口最高,如果没有环回口,就是物理口的最高地址

optional parameters : 可选字段,一般用不上

Keepalive

就成功建立了,周期发送保活消息,

update

进行更新

网络号:network-layer reachability information 网络层可达性信息 就是IP的前缀信息,就是网络号

度量 :PATH attribmtes 路径属性

withdraum routes 撤销的路由,就是发要删除的路由

notification

有错误的时候发送

包含一个error code 信息

error subcode & data

如果路由器收到了,就会关闭和对方的bug链接。

EBGP & IBGP

EGBP 也叫外部BGP,是工作在两个AS之间的BGP

需要被直连,因为要建立TCP会话,如果不直连,就PING不通,没有TCP会话

IBGP

可以不直连

把一个运行一个BGP路由的叫 “讲者”

建议了邻居的 BGP路由器叫 ”对等体“

IBGP,

一台路由器只能存在于一个AS,也就是只能起一个BGP



看红线处 如果是 external link 就是 EBGP , 在AS 之间使用的 BGP 比如AS 100与AS200 或AS 65535 与AS65534

如果是 internal link 就是IBGP,一共是AS内部,比如都是AS100之间建立的BGP

BGP neighbor is 1.1.1.1, remote AS 100, internal link

BGP version 4, remote router ID 1.1.1.1

BGP state = Established, up for 00:29:34

Last read 00:00:34, last write 00:00:34, hold time is 180, keepalive interval is 60 seconds

Neighbor capabilities:

Route refresh: advertised and received(old & new)

Address family IPv4 Unicast: advertised and received

Message statistics:

InQ depth is 0

OutQ depth is 0

Sent Rcvd

Opens: 1 1

Notifications: 0 0

Updates: 4 3

Keepalives: 31 31

Route Refresh: 0 0

Total: 36 35

Default minimum time between advertisement runs is 0 seconds



二 建立BGP

R1

router bgp 100

no synchronization

bgp router-id 1.1.1.1

bgp log-neighbor-changes

neighbor 12.1.1.2 remote-as 200

no auto-summary

R2

router bgp 200

no synchronization

bgp router-id 2.2.2.2

bgp log-neighbor-changes

neighbor 12.1.1.1 remote-as 100

no auto-summary

这样 R1 R2 的EBGP就起来了。

宣告网络

1,可宣告非直连的网络,与其它的不一样,以前的是哪些接口参与就宣哪个,

而现在是哪一个网络在哪里做一个起源,

2. 条件是,他必须存在IP路由表中,不管用什么方式得取的,只要在路由表就行

R1(config)#route bgp 100

R1(config-router)#network 1.1.1.0 mask 255.255.255.0 //掩码是正常的掩码
这里接的掩码一定要

和路由表里的掩码是一样的,否则不生效,子网一定要是网络号,如果是其它的也不好使。

R1#show ip bgp

BGP table version is 2, local router ID is 1.1.1.1

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

*> 1.1.1.0/24 0.0.0.0 0 32768 i

宣告后,要等一段时间,不是立即响应。

在R2上 执行下面的命令,就会发现 因为是 EBGP 所以管理距离是 20



三 AS200中的三个ROU 都启OSPF

在使用 BGP(IBGP)把 2与3,3与4起IBGP,

建立好后



这是注意R1发送 1.1.1.1 10.10.10.0 这两条路由

R2能学到 R3能学到 但R4不能学到,这是为什么呢。

因为BGP的一个特性(BGP的水平分割),就是我从一个IBGP邻居里收到的路由更新不会

发给另外一个IBGP邻居。就是R3收到了R2的路由更新信息,不会发给R4。

所以BGP要求全互联的,就是2 - 4 也要建立邻居

因为使用了OSPF,所以2与4的任何接口地址都是互通的,所以很轻松的就建议了BGP,

就会学到路由信息。

当我们去往目地地的时候,如果有冗余路径,建立关系就要指定 环回口,

比如下图,如果A与D建立关系,IP就是指向 4,这样B C哪个断了都不影响使用。



如何 才能避免这种构架呢,就是建立邻居的时候,使用环回口来指定邻居,

R2(config-router)#neighbor 3.3.3.3 remote-as 200

但是数据是不会用环回口来进行向对方发包的,因为使用三层接口地址,如果还要指定一下

neighbor 3.3.3.3 update-source loopback 0

这样就没问题了。

在ebgp与ebgp中也要使用环回口建立,之间使用静态进行指一下路由,

如果多条路径就指多条静态。

在最后要写这下面这条命令

neighbor 3.3.3.3 ebgp-multihop 2

就是最多的跳数,如果不保险就写大点。

在IBGP与IBGP不用写。

如下图


R2如果是 AS 100 R3 R4 是AS 200, 如果使用 LOOPBACK地址让R2与R3 R4之间建立邻居时,就要使用这个命令 neighbor XXX ebgp-multihop 2 ,否则建立邻居无效,但如果使用接口地址进行的话,就可以。

BGP又一个特性,看下图,

当 2和3,2和4,3和4 都建立了IBGP,1和2之间是EBGP。是你会发现

1,2,3,4,在show ip bgp时都会学到 Bgp发布的路由

但3和4在 show ip route 的时候就没有bgp路由,

这是因为bgp的又一个特性,就是发布路由信息的时候,下一跳是不会变的

比如2从1那学到一条路由,下一跳就是1,这时可以PING通1,

但3从2那又到1发布的路由,下一跳信息仍然还是1,但3还没有到1的路由信息。导致不在 ip route 中体现,因为无法到达。



解决这个问题,使用一个命令。

R2(config-router)#neighbor 4.4.4.4 next-hop-self

把自己做为下一跳的地址。

neighbor soft-reconfiguration inbound告诉BGP进程保存从指定邻居那里获悉的所有更新
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: