BGP及基本配置

一、关于AS

BGP---边界网关协议

IGP----内部网关协议---OSPF  RIP  ISIS  ….

EGP---外部网关协议----EGP BGP

AS---自治系统:由单一的组织或者机构独立维护的网络设备以及网络资源的集合

版本:

BGPV4

BGPV4+ 版本兼容许多协议


二、BGP的一些特性

1、

IGP:考虑选路、收敛、资源占用,会 计算AS路由条目。

BGP:不需要计算路由,传递IGP算出来现成的路由。

2、

BGP传递一定是路由条目信息。

BGP没有使用周期更新传递路由信息 ---路由条目太多。

BGP存在触发更新。

3、

BGP在传输层使用TCP进行传输 :179

UDP的端口号:520

BGP建邻时必须指定建邻的对象,BGP支持非直连建邻。

4、

RIP---无类别的距离矢量路由协议

BGP----无类别的路径矢量协议

BGP在传递路由条目信息时携带子网掩码

5、

  •  ①、BGP默认情况下不支持负载均衡,BGP会根据传递过来的路由信息中携带的路径属性
  • 选择最优的路由信息加载到路由表中。
  • ②、BGP把一个AS看作一个整体
  • ③、RIP(IGP)实际上是一个算法的概念,BGP不是一个算法的概念,BGP也不需要计算
  • 路由信息,只负责转发路由信息er
  • 6、

  • ①、高可控性--路径属性BGP舍弃开销值,给每条路由信息赋予路由属性

///BGP设计了很多路径属性,可以通过路由策略关联这些属性达到路由控制的效果。BGP舍弃开销值,给每条路由信息赋予路由属性方便干涉选路。

②、高可靠性---TCP

                                                        ///TCP拥有​​​​​​​

 确认和重传机制   序列号和确认号
滑动窗口机制  流量控制和拥塞控制
数据校验和错误检测

③、AS-BY-AS---BGP把一个AS看作一个整体--属性不变

     ​​​​​​​​​​​​​将AS(应用服务器)看作一个整体有以下优点:

  1. 每个模块可以独立开发、测试和部署,提高开发效率和系统的可维护性。
  2. 可以使得各个模块之间的依赖关系更加清晰,提高了系统的可维护性和可测试性。
  3. 实现负载均衡和故障恢复等机制,提高了系统的可用性和稳定性。当一个模块出现故障时,整体系统可以继续运行,不会影响到其他模块的正常工作。
  4. 可以根据业务需求进行扩展,可以根据实际情况增加或减少模块的数量,以满足不同的业务需求。

7、

两种邻居关系--peer(对等体)

1、EBGP对等体:一般建议采用直连建立对等体关系--peer-----(两个AS之间的建邻)地理位置的AS边界路由器近中间不连设备--因为会有悖自治的本质

2、IBGP[对等体:-一般建议采用非直连建邻 --IGP内部--路由可达--就可以建立TCP会话

8、

BGP为了实现这两个规则:BGP规定EBGP对等体之间发送的数据包中携带的TTL值为1(发不出来广播域,保证直连)而IBGP对等体之间传递的数据包TTL值为255(建邻与传递数据包)​​​​​​​

9、

IGP协议不选择使用TCP的原因:

1、TCP传输效率较低

2、TCP传输占用资源较大

3、TCP协议只能实现单播,所以,无法通过组播或者广播的形式发送,则将导致IGP协议无法自动发现邻居关系,只能手工指定。

BGP选择使用TCP,所以BGP需要手工建立邻居关系。


三、BGP的数据包

Open包---应用层-报文--负责建立对等体关系

与hello报文相似--周期性发现建立维持邻居--双向

建邻失败--参数比对失败

BGP的公共头部(3个参数)

Marker--没啥用--兼容性

Length--长度字段--功能不一样

Type--类型报文--二进制形式数字

建立BGP对等体关系的数据报文(携带比对参数)

1、AS号--携带自己的AS号

有网络连通性才可以用TCP建邻--单播--手工指定建邻目标

双方互发open包-只需要看对端发来的参数

//比对逻辑对等体发过来的open报文中携带的AS号,必须和指定建邻的AS必须一致,否则会建邻失败

2、保活时间()180 s--收到keep live与update会刷新保活时间

类似OSPF的死亡时间,如果对等体双方保活时间不一致,按照时间更小的执行。

不同保活时间按小的来---TCP可以协商参数

3、Route-ID--建邻比较灵活--容易杂乱--

建邻双方的Route-id不能一致---否则会建邻失败。找接口最大的承受Route-id

4、可选参数--双方的认证---双方可用的协议--认证双方得对的上

KEEPLIVE包--收到并认可参数后发送

  1. 用于周期保活BGP对等体关系---默认1/3的保活时间--60s(一分钟)
  2. 用来open报文的临时确认包--确保对面收得到open包

TCP建立完成后才可以发送数据---发送

Update包--传递BGP路由信息的数据包

--自己的和没掉的路由条目信息

1、收发哪些数据是自己决定的--不需要Request包

2、网络层可达信息需要 1、目标网段和掩码 2、路由条目信息

2、撤销条目信息--触发更新---有个网段消失了就撤销--避免浪费资源造成黑洞

靠路径属性选出最佳路径。

Noicefication包--告警报文

某一工作环节有故障导致出现问题会发送这个报文告知问题原因

--方便排查错误--优化效果

--建邻失败--RID冲突--TcPj建立会话失败.......

Route-Refresh包

BGP出现问题后采用


四、BGP的状态机--建邻过程

BGP在建立对等体过程中会建立两次会话,会保留RID大的设备发起的 TCP会话

第0、:建立对等体之间的对话:指定建立对等体的对象--建立一次--双向对话

第一、Idle-起始状态--准备建立-----检测环节,看看本地是否可达指定对等体目标

         Idle状态下,启动BGP协议后必须指定建立对等体目标之后,进入下一个状态。前提必须 

         路由可达--依靠IGP协议或者静态路由--------指定之后才会进入connect状态 

        Idle--像是down状态--等待时间-(把建邻与发布路由分隔开)

第二、Connect状态下BGP对等体之间开始建立TCP会话连接。如果TCP会话建立成功则进入

       Open Sent状态,失败会进入Active状态---一直重来到超时回到IDLE

第三、OPen Sent状态下,开始发送OPEN报文去建立BGP对等体关系,如果认可对等体发过来的

       Open报文中的参数,首先会回复一个keeplive报文确认我已经认可。并且进入Open confirm

        状态

第四、Open confirm状态下,如果收到对等体发送的keep live报文则进入最终状态Established              状态


五、BGP的工作过程​​​​​​​

1,基于IGP(静态、直连、RIP、OSPF...)实现 路由可达 ,原因:BGP需要建立TCP会话(单播)
2,指定邻居关系,邻居之间单播传输,通过三次握手,建立TCP会话通道。之后所有的BGP通信都将基于TCP会话通道来传输。并且
依靠TCP提供传输的可靠性
3,使用OPEN报文和Keeplive报文进行邻居关系的建立。OPEN报文用来携带建邻使用的参数,keeplive报文用于OPEN报文参数的
确认。最终完成对等体关系的建立。生成 邻居表 ,存储BGP对等体关系信息。
4,建立邻居关系后,使用update报文来共享 路由条目信息 。信息中将携带目标网络号,掩码及路径属性;之后,将发送以及收集到
的路由信息记录在一张表中 --- BGP表
5,之后,会将BGP表中最优的路由信息(通过路径属性选择的结果)加载到 路由表 中。
6,收敛完成后,将使用keeplive报文进行对等体之间周期保活,默认的保活时间为180S(hold time),发送周期为60S。
7,如果这个过程中出现任何问题,都将使用notification报文进行告警。
8,如果出现结构突变(网段消失或者新增网段),则将使用update报文进行触发更新,并通告给其他的对等体。 ​​​​​​​

网段消失或新增网段


六、BGP的路由黑洞

控制层面可达

数据层面实际不可达

路径矢量--知道找谁

当IGP内部存在没有运行BGP的设备,当访问BGP的流量来到这些设备后,由于控制层面可达,数据层面不可达,(没有运行BGP,没有BGP网段路由信息)那么将丢弃。

  1. 所有设备运行BGP
  2. 重发布
  3. MPLS---标签转发-----穿路由靠网段--最早专门用来解决BGP路由黑洞----转发效率比路由快---封装

同步机制--当设备学到一条BGP路由,如果本地路由表(IGP路由表)认为下一跳不可达,将视该BGP路由为无效--默认关闭


七、BGP防环机制

EBGP的水平分割--解决IBGP对等体之间传递路由可能出现的问题

BGP为了解决BGP路由环路问题,设计了一个AS-PATH属性,设备在发出AS时会携带本号,当路由信息携带该AS号,那么对于该AS的设备不会接受该路由,同时AS-PATH也是BGP的一个选路依据,当其他属性一致时,会选择AS-PATH属性更短的路径。后转发的AS号在前面

IBGP的水平分割--解决EBGP对等体之间传递路由可能出现的问题

​​​​​​​

当运行BGP的设备从IBGP对等体处学习到一条IGBP路由,那么将不转发给其他IGP对等体

解决方案---在IBGP对等体之间构建全连的IBGP对等体关系,
1.增加拓扑的复杂性导致网络可拓 展性变差,2.增大了资源占用
已存在解决方案:联邦    反射器

 


八、基本配置实验

1、IP地址配置

R1

[R1]inter GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1]ip address 12.0.0.1 24 
[R1]inter LoopBack 0
[R1-LoopBack0]ip address 1.1.1.1 24
[R1]inter LoopBack 1
[R1-LoopBack0]ip address 172.16.0.1 24
[R1]inter LoopBack 2
[R1-LoopBack0]ip address 172.16.1.1 24
[R1]inter LoopBack 3
[R1-LoopBack0]ip address 172.16.2.1 24

R2

[R2]int GigabitEthernet 0/0/0	
[R2-GigabitEthernet0/0/1]ip ad 12.0.0.2 24
[R2]int GigabitEthernet 0/0/1	
[R2-GigabitEthernet0/0/1]ip ad 23.0.0.1 24
[R2]int l0
[R2-LoopBack0]ip address 2.2.2.2 24

R3

[R3]int GigabitEthernet 0/0/0	
[R3-GigabitEthernet0/0/1]ip ad 23.0.0.2 24
[R3]int GigabitEthernet 0/0/1	
[R3-GigabitEthernet0/0/1]ip ad 34.0.0.1 24
[R3]int l0
[R3-LoopBack0]ip address 3.3.3.3 24

R4

[R4]int GigabitEthernet 0/0/0	
[R4-GigabitEthernet0/0/1]ip ad 34.0.0.2 24
[R4]int GigabitEthernet 0/0/1	
[R4-GigabitEthernet0/0/1]ip ad 45.0.0.1 24
[R4]int l0
[R4-LoopBack0]ip address 4.4.4.4 24

R5

[R5]int GigabitEthernet 0/0/0	
[R5-GigabitEthernet0/0/1]ip ad 45.0.0.2 24
[R5]int l0
[R5-LoopBack0]ip address 5.5.5.5 24
[R5]int l1
[R5-LoopBack0]ip address 5.0.0.1 24


2、OSPF配置

R2

[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255

R3

[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0]network 23.0.0.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 34.0.0.0 0.0.0.255

R4

[R4]ospf 1 router-id 2.2.2.2
[R4-ospf-1]area 0
[R4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
[R4-ospf-1-area-0.0.0.0]network 34.0.0.0 0.0.0.255

检查:display ip routing-table protocol ospf  


3、BGP建邻

注意!!

①peer x.x.x.x next-hop-local ------当IBGP对等体学到一条EBGP路由,由于AS-BY-AS属性导致下一跳不可达,协议在传递这条IBGP路由的IBGP设备上修改下一跳为本地。把一个AS看作一个整体就是一个AS的属性基本不会变,AS内部中下一跳受属性不变影响不改变。

 

②peer x.x.x.x connect-interface  LoopBack 0 ---注意环回建邻必须改变跟新源
更新源地址不一致将导致建邻失败--一直在ACtive状态。eg:
BGP建立TCP会话是单播,所以建邻是双向
   基于IGP(静态、直连、RIP、OSPF...)实现路由可达,R4 与R5一开始没有对方的路由,推荐写静态路由,不占资源。不写静态等等,就会一直是Idle状态,因为指定对象不可达。

R2与R1(EBGP之间)

[R1]bgp  100 -----启动BGP协议,并指定自身AS号--一台设备不能处于多个AS了。
[r1-bgp]router-id 1.1.1.1---手工配置BGP RID
[R1-bgp]peer 12.0.0.2 as-number 200 -----直连建邻,指定建邻的IP地址和对应的as号
[R1-bgp]network  1.1.1.0  24
[R2]bgp  200
[r2-bgp]router-id 2.2.2.2
[R2-bgp]peer 12.0.0.1 as-number 100

R2与R3(IBGP之间)

[R2]bgp  200
[r2-bgp]router-id 2.2.2.2
[R2-bgp]peer 3.3.3.3 as-number 200
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0--环回建邻必须改变更新源
[r2-bgp]peer  3.3.3.3  next-hop-local--修改下一跳为本地
[R3]bgp  200
[r3-bgp]router-id 3.3.3.3
[R3-bgp]peer 2.2.2.2 as-number 200
[r3-bgp]peer 2.2.2.2 connect-interface LoopBack 0--环回建邻必须改变更新源
[r2-bgp]peer 2.2.2.2  next-hop-local--修改下一跳为本地

R3与R4(IBGP之间)

[R3]bgp  200
[r3-bgp]router-id 3.3.3.3
[R3-bgp]peer 4.4.4.4 as-number 200
[r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r3-bgp]peer 4.4.4.4  next-hop-local--修改下一跳为本地
[R4]bgp  200
[r4-bgp]router-id 4.4.4.4
[R4-bgp]peer 3.3.3.3as-number 200
[r4-bgp]peer 3.3.3.3connect-interface LoopBack 0
[r4-bgp]peer 3.3.3.3  next-hop-local--修改下一跳为本地

R4与R5(EBGP之间)

BGP为了实现这两个规则:BGP规定EBGP对等体之间发送的数据包中携带的TTL值为1 (直连只有1跳) 而IBGP对等体之间传递的数据包TTL值为255

[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2----修改EBGP数据包TTL值

[r5-bgp]peer 4.4.4.4 ebgp-max-hop ----默认直接回车将修改TTL值为25

[R4]bgp  200
[r4-bgp]router-id 4.4.4.4
[R4-bgp]peer 5.5.5.5 as-number 300
[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[R4]IP route-static 5.5.5.5 24 45.0.0.2
[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2----修改EBGP数据包TTL值 
[R5]bgp  300
[r5-bgp]router-id 5.5.5.5
[R5-bgp]peer4.4.4.4 as-number 200
[r5-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[R5]IP route-static 4.4.4.4 24  45.0.0.1
[r5-bgp]peer 4.4.4.4 ebgp-max-hop ----默认直接回车将修改TTL值为255 
[r5-bgp]network 5.5.5.0 24

...........................................................................................................................................................

  • 问题1:[R4]display bgp routing-table

        我们发现5.5.5.0 24网段在BGP路由表中不是有效的路由,问题在于宣告网段与下一跳相同,要获取5.5.5.0网段的信息,建邻要建立TCP的会话,已经先有了5.5.5.0网段的路由,建完会话又学一遍5.5.5.0网段,没有必要,BGP建邻网段不发布。所以在R5上重新写一条环回路由5.0.0.1 /24,与R4建邻并发布。

[R4-bgp]peer5.0.0.1 as-number 300
[r4-bgp]peer5.0.0.1 connect-interface LoopBack 0
[R4]IP route-static 5.0.0.1 24 45.0.0.2
[r4-bgp]peer 5.0.0.1 ebgp-max-hop 2----修改EBGP数据包TTL值 
[R5]bgp  300
[r5-bgp]network 5.0.0.0 24

...........................................................................................................................................................

  • 问题2:display bgp routing-table--查看R1、R4的BGP路由表

我们发现似乎前面的R1、R2、R3是一样的没有R5的发布路由,后面的R4、R5是一样的没有R1的发布路由。

 这是因为当运行BGP的设备从IBGP对等体处学习到一条IBGP路由,那么将不在转发给其他IBGP对等体。所以前面的路由发到R3就停了,R4、R5学不到。解决方法就是让R2与R4建邻。

R4与R2(IBGP之间)

[R2]bgp  200
[r2-bgp]router-id 2.2.2.2
[R2-bgp]peer 4.4.4.4 as-number 200
[r2-bgp]peer  4.4.4.4 connect-interface LoopBack 0
[r2-bgp]peer  4.4.4.4  next-hop-local

[R4]bgp  200
[r4-bgp]router-id 4.4.4.4
[R4-bgp]peer2.2.2.2 as-number 200
[r4-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[r4-bgp]peer 2.2.2.2 next-hop-local

于是乎看一下R4BGP路由表,有了R1的有效路由。


4、BGP发布

前面已经发布了5.5.5.0与5.0.0.0 和1.1.1.0网段,但是AS内部的路由发布也可以一条条去写,但是效率低,所以可以用重发布解决这个问题。

[r2-bgp]import-route ospf 1

查看R1 BGP路由表

我们可以将R1上的三条172.16 .0.0 /16网段 宣告在BGP上,也可以将直连重发布在BGP上。

[r1-bgp]import-route direct

我们可以看到关于172.16开头的网段 条目冗杂所以需要过滤。


5、BGP路由聚合(汇总)

①自动聚合--只能在重发布中应用,宣告的做不了。②手工聚合

在R1创建前缀列表,并设置路由策略

[r1]ip ip-prefix 1 permit 172.16.0.0 16 greater-equal 24 less-equal 24
[r1]route-policy 1 permit  node 10
[r1-route-policy]if-match ip-prefix 1

17.16网段路条目数量得到合理改善。 


6、了解参数 

​​​​​​​

  • 重发布的路由信息本地下一跳也是0.0.0.0相当于本地始发
  • Ogn------起源码:象征该路由通过何种方式学习到的
  • I---表示该路由是通过IBGP对等体学到的路由信息,包括Network宣告的路由
  • E--表示该路由是由EGP协议处学习到的路由信息,保留仅为了兼容性
  • --除了前两种都是?
  • Network----接收到的网段信息
  • NextHop----下一跳,如果是本地始发的BGP路由信息该字段为0.0.0.0
  • *>---状态码
  • *--valid----有效,首先当BGP设备接收到一条BGP路由信息,首先将验算下一跳是否可达,如果下一跳可达则代表该路由可用,如果下一跳不可达则认为该路由无效。注意:只有可用的路 由信息才会参与BGP路由的选举,并加载到路由表中
  • >--best---最优的路由信息最终根据路径属性选择的结果,只有最优的路由信息才会最终加载到 路由表中,并且只有最优的路由才会被BGP传递
  • I----internal内部通过IBGP对等体学到的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值