可运行BGP的Linux,Linux之BGP基础部分

BGP概述

BGP是运行在AS之间的路由协议,IGP是hop-by-hop,BGP是AS-by-AS。BGP是一种路径矢量路由协议:记录AS-PATH。

公有AS:1-64511  私有AS:64512-65534

中国电信AS号:4134  中国网通:9929

为什么要使用BGP?

AS是一个自治域,管理自己内部的网络。

支持的路由条目(route-views3.routeviews.org)

策略选路

BGP建立邻居

BGP到每一个运行BGP的对端都形成一个独特的、基于单播的连接,为了提高可靠性,BGP使用了TCP(179)作为传输机制。

1433159dd184ee43e2d9b11d7ccd1a7a.png

BGP消息类型

在建立一个BGP对等体连接之前,两个邻居必须执行标准的TCP三次握手,并且打开一个端口为179的TCP连接。TCP提供可靠连接所需要的分段、重传、确认及排序功能。所有BGP消息都是通过TCP连接单播给一个邻居。

open

keepalive

update

notification

Open消息

TCP会话建立起来以后,两个邻居都要发送一个Open消息。每个邻居都用该消息来标识自己,并规定自己的BGP参数。Open消息包含以下信息:

BGP版本号-----目前所有的版本为版本4。可以协商直到两边版本达到一致。

Hold time-----路由器收到一个keepalive或是更新消息之前所允许经过的最大秒数。Cisco缺省的保持时间为180秒。如果两邻居的保持时间不匹配,那么会协商为较短的那个保持时间。

BGP 标识符-----bgp router-id。和ospf选择router-id的方式类似,1.人工指定2.使用最大的loopback地址3.如果没有loopback地址选择最大的物理接口地址。

Keepalive消息

如果路由器接受了邻居在open消息中的参数,它就会应答一个keepalive消息。Cisco的缺省情况下是60s发送一个keepalive消息。

Update消息

Update消息用来公布可用的路由、撤销的路由。

网络层可达信息(NLRI)----这是一个或多个用来公布IP地址前缀和前缀长度的字节组。例如:206.193.160.0/19

路径属性----该属性为BGP提供最短路径、检查路由环路及决定路由策略的信息。

撤销路由----用来描述已经变成不可达并正在撤销的目的地。

Notification消息

当检查到差错的时候就会发送notification消息,通常这会导致BGP连接的终止。

68c45dcfec1dcb2e7e170893252d0abb.png

BGP有限状态机

空闲状态(Idle)

BGP通常以空闲状态开始。在该状态下,它拒绝接收所有入连接。当bgp开始初始化资源,打开重试连接计时器、初始化TCP连接、接听来自己邻居的TCP初始化消息并将它的状态转到连接状态。

一个差错的出现会将bgp的状态转为空闲状态。路由器自动重新发起另一个初始连接。在持续差错条件下,需要对此进行限制,因此在第一次回到空闲状态后,路由器会启动重试连接计时器,当计时器终止后,路由器就会放弃重新开始BGP。Cisco的重试连接计时器的时间是60S,下一次重试连接计时器是前一次的两倍,以此类推。

连接状态

在这种状态下,BGP会等到TCP连接完成以后再决定后续的动作。如果TCP连接建立成功,BGP将重试连接计时器清零,完成初始化过程,给邻居发送一个open消息,并转到opensent状态。如果TCP连接建立失败。BGP过程会继续监听由邻居发起的连接、重置重试连接计时器并转入active状态。

如果在连接状态下,重试连接计时器超时了,计时器重新开始计时,并再一次试图与邻居建立一个tcp连接,bgp状态继续持续在连接状态。

active状态

在这个状态下,bgp试图与邻居建立一个tcp连接,如果tcp连接建立成功,bgp将重试连接计时器清零,完成初始化工作,给邻居发送一个open消息并转到opensent状态。

opensent状态

在这种状态下,已经发送了open消息,bgp正在等待从邻居发来的open消息。当收到一个open消息以后,检查该消息所有的字段。如果发现了差错,会给它的邻居发送一个notification消息并且将状态转到空闲;如果接收到open消息中没有发现差错,协商keepalive计时器,bgp给邻居发送一个keepalive消息。

openconfirm状态:

这种状态下,BGP过程会等待一个keepalive或者notification消息,如果收到keepalive消息,转到已建立状态。如果收到notification消息或tcp断开消息,转台空闲状态。

established状态

在这种状态下,bgp对等体的连接已经建立起来,对等体之间可以交换update、keepalive和notification消息,如果收到update或者keepalive消息,重置hold计时器,如果收到notification消息,则转到空闲状态。

1a167f2553726c0f4cdc3836e395500a.png

BGP建立对等体关系

EBGP对等体关系:AS与AS之间的边界路由器建立的BGP对等体关系,建立EBGP对等体关系一般使用直连网段进行tcp连接;

IBGP对等体关系:AS内部路由器建立的BGP对等体关系,建立IBGP对等体关系一般使用环回口进行tcp连接。

正常BGP对等体的建立,双方都向对等体发起目标端口为179的tcp连接,然后随机断掉一条连接,使用另一条连接。

注:BGP不能使用默认路由建立对等体关系

bgp建立对等体关系实验:

R1(config)#router bgp 1

R1(config-router)#neighbor 23.1.1.3 transport connection-mode active (默认就是主动发起bgp连接)

ba3f5ac2b6da64052ec5255ae664dd0f.png

图 41 BGP建立对等体关系实验拓扑

R1和R2建立EBGP对等体关系

R1(config)#router bgp 1

R1(config-router)#neighbor 12.1.1.2 remote-as 234

R2(config)#router bgp 234

R2(config-router)#neighbor 12.1.1.1 remote-as 1

R2和R4建立IBGP对等体关系

R2(config)#router bgp 234

R2(config-router)#neighbor 4.4.4.4 remote-as 234

R2(config-router)#neighbor 4.4.4.4 update-source lo0-----指定lo0为更新源

R4(config)#router bgp 234

R4(config-router)#neighbor 2.2.2.2 remote-as 234

R4(config-router)#neighbor 2.2.2.2 update-source lo0

查看bgp对等体关系:

R2#show ip bgp summary

BGP router identifier 2.2.2.2, local AS number 234

Neighbor V AS MsgRcvd MsgSent  TblVer InQ OutQ Up/Down  State/PfxRcd

4.4.4.4  4  234   25    26    23    0    0 00:00:23        1

12.1.1.1  4  1    29    29    3    0    0 00:25:30        1

EBGP使用环回口建立对等体关系

R4(config)#ip route 5.5.5.5 255.255.255.255 45.1.1.5----保证路由可达,tcp才可达

R4(config)#router bgp 234

R4(config-router)#neighbor 5.5.5.5 remote-as 5

R4(config-router)#neighbor 5.5.5.5 update-source lo0---指定更新源

R4(config-router)#neighbor 5.5.5.5 ebgp-multihop----EBGP默认跳数只传1跳,更改ebgp传递跳数,不设置跳数默认为255

R5(config)#ip route 4.4.4.4 255.255.255.255 45.1.1.4

R5(config)#router bgp 5

R5(config-router)#neighbor 4.4.4.4 remote-as 234

R5(config-router)#neighbor 4.4.4.4 update-source lo0

R5(config-router)#neighbor 4.4.4.4 ebgp-multihop

BGP宣告路由

BGP路由宣告

BGP通过network宣告路由,而不是直连网络(必须是路由表中包含的路由才能被宣告,掩码要匹配)

R1#show ip route

1.0.0.0/32 is subnetted, 1 subnets

C       1.1.1.1 is directly connected, Loopback0

R1(config)#router bgp 1

R1(config-router)#network 1.1.1.1 mask 255.255.255.255(如果不加子网掩码,则使用主类掩码)

BGP路由表

查看bgp路由表:

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.1/32    0.0.0.0       0            32768     i

*代表路由可用,可以放入路由表

>代表最优,多条相同bgp路由时,该条为最优的路由

后面的i代表起源为IGP,即通过network宣告进bgp的。

R2#show ip bgp

BGP table version is 725, 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

*> 1.1.1.1/32   12.1.1.1       0              0      1 i

Next hop是下一跳为AS1的边界路由器的ip地址

Path=1,表示路由经过了AS 1

BGP路由不优的原因及解决办法

R4#show ip bgp

BGP table version is 725, local router ID is 4.4.4.4

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

* i1.1.1.1/32   12.1.1.1      0     100      0      1 i

前面的i表示该路由为IGP对等体传递的路由

没有>表示路由不优,原因:

下一跳不可达,这里next hop为12.1.1.1,R4的路由表里没有12.1.1.0/24的路由。

解决方法:

在R2上指定下一跳自我,让R2发出的bgp路由的下一跳都为R2自己

将R2的外部直连网络宣告进IGP

将R2的外部直连网络重分布进IGP

在R4上使用route-map指定路由的下一跳为R2

在R4上使用静态路由使下一跳可达

同步问题:

同步的条件:bgp路由器收到ibgp对等体传递的路由必须在ibgp路由表里也存在该路由,否则不会再传给ebgp对等体。

同步的目的:防止路由黑洞。由于bgp可以非直连建立对等体关系,通过tcp传递路由更新,以上图为例,R2与R4为ibgp对等体关系,但R3不运行bgp,R4会接收到1.1.1.1/32的ibgp路由,而R3不会收到1.1.1.1/32的路由。而R4去往目标1.1.1.1的物理下一跳为R3,R3没有路由将选择丢包,因此R4不会再将路由传递给R5。如果R4的igp路由表包含1.1.1.1/32的路由,即ibgp和igp同步,则R3的igp路由表也应该包含1.1.1.1/32的路由,那么就不会形成路由黑洞,那么R4就会将路由传递给R5。

7876850235ab01b74bcd2caba0a55b80.png

本文作者:Lee Xu

CCIE-R&S、CCIE-Security、HCIP

个人介绍:

具有丰富的企业实战项目经验及教学经验。

专业知识的学习以及系统实践,

使李老师在IE级别高级工程师项目经验和IE级别

教学经验方面积累了丰富扎实的工作经验。

讲授课程:

CCNA、CCNP、HCNA、HCNP、MCSE、RHCE

项目经验:

孝感市土地局项目实施

长江航道局宜昌分局项目实施

武汉市公路归费征稽处项目实施

湖北省劳动教养工作管理局项目实施

湖北省国土资源厅项目实施

教学理念:

致力于培养学员的个人技术、独立思考能力、

反应能力、工作及适应能力。

“知行合一,止于至善”是李老师的信条。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值