一。什么时候要使用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进程保存从指定邻居那里获悉的所有更新