超大型网络--BGP

本文介绍了BGP的基础知识,包括其应用场景、协议特点和用途。详细阐述了BGP的报文类型、状态机以及配置示例,如单区域配置和IBGP全互联。同时,讨论了路由反射器和BGP联盟的概念,以及BGP的选路原则。内容涵盖从BGP协议的基本原理到实际网络环境中的配置策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

bgp的基础知识

bgp的报文和状态

bgp单区域配置

ibgp全互联

路由反射器

bgp联盟

bgp选路的原则


bgp的基础知识

bgp出现的背景,应用场景

1.总公司要和分公司相互通信,总公司在北京,分公司在天津,他们属于不同的as,这时候就需要用到bgp

2.运营商骨干网络

3.数据中心或者大型政企单位 

注:as(自治系统)内部的称为ibgp不同as之间的称为ebgp

ibgp内网网关路由协议  内部使用的协议是isis ospf rip

ebgp外部网关路由协议,在不同公司之间,城市之间  使用的协议只有bgp

为什么使用bgp协议:

1.他可以让不同的as之间通信

2.可以传递大量的路由(百万为单位)

3.非常的稳定

4.具有很多的路由控制策略,可以灵活的选路

bgp概述

是应用层协议,基于tcp协议,所以很稳定,端口号是179

注:OSPF基于IP协议,为了可靠性,数据库同步:协商主从关系,序列号、有确认机制

bgp的作用

可以传递大量的路由,以百万为单位

基于tcp协议(三次握手 四次挥手)非常的稳定

具有很多的路由控制策略,可以进行灵活的选路

bgp的报文和状态

bgp报文

open报文:用于建立bgp邻居(hello报文)

keepalive报文:用于维护邻居关系(hello报文)

update报文:用于传递和撤销bgp路由条目(lsu报文)

notification报文:用于传递bgp报错信息

refresh报文:用于重传路由

bgp的状态

idle:最开始的状态,tcp连接并未建立

connect:tcp连接正在进行,如果连接失败会转变为active状态,成功会变成opensent状态

active:tcp连接仍然在尝试,仍然失败还是active状态 如果超时,会变为connect状态,如果成功会变为opensent状态

opensent:open报文已发送状态

已向邻居发送open报文,如果收到邻居的回复报文,且报文正确,则会继续发送keepalive报文,然后会转变为opencomfirm状态,如果回复的报文错误,将会发送notification报文,告知对方,发送的报文错误,然后断开连接 回到idle状态

open comfirm : open报文确认状态

如果收到邻居发来的keep alive 报文,状态会转为established 建立状态

如果收到邻居发来的notification 报文,状态会跳转为 idle 状态

establish:完全建立连接

工作过程:

建立邻居---传递路由

注:bgp只传递路由 而不产生路由,ospf isis这些在ibgp里面才是生产最优路由

bgp单区域配置

拓扑图

 需求:使用bgp实现互联 

配置:

R1:
bgp 100         //进入AS100
 router-id 1.1.1.1          //设置router-id
 peer 192.168.12.2 as-number 100    //指定邻居的IP地址与邻居所在的AS号
 

R2:
bgp 100
 router-id 2.2.2.2
 peer 192.168.12.1 as-number 100



R1:将路由表中的路由条目搬进BGP路由表发送给邻居
bgp 100
   network  192.168.1.0 24


R2:
bgp 100
   network  192.168.2.0 24

ibgp全互联

拓扑图:

 需求:实现全互联,bgp不同as号之间通信

配置:


第一步: 配置R4

R4的配置:
1)配置R4的接口IP地址
[R4]int g0/0/0
[R4-GigabitEthernet0/0/0]ip add 192.168.14.4 24
[R4-GigabitEthernet0/0/0]int lo0
[R4-LoopBack0]ip add 10.10.4.4 24
[R4-LoopBack0]quit

2)配置R4和R1的EBGP,并注入路由
[R4]bgp 100                    //打开bgp功能,进入as100
[R4-bgp]router-id 4.4.4.4       //配置router-id 
[R4-bgp]peer 192.168.14.1 as 200   //和R1建立EBGP邻居关系
[R4-bgp]network 10.10.4.0 24        //把已经存在的直连路由注入到BGP路由表


第二步: 配置R1
1)配置R1的接口IP地址
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.14.1 24
[R1-GigabitEthernet0/0/0]int g0/0/1 
[R1-GigabitEthernet0/0/1]ip add 192.168.12.1 24
[R1-GigabitEthernet0/0/1]int lo0
[R1-LoopBack0]ip add 10.10.1.1 24
[R1-LoopBack0]quit

2)配置R1的ospf 
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0  
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255  
[R1-ospf-1-area-0.0.0.0]network 10.10.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]quit
[R1-ospf-1]quit

3) 配置R1和R4建立外部邻居-EBGP邻居
[R1]bgp 200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4  as 100

4) 配置R1和R3建立内部邻居-IBGP邻居
[R1-bgp]peer 10.10.3.3 as 200      //R1和R3建立IBGP邻居
[R1-bgp]peer 10.10.3.3 connect-interface LoopBack 0   //R1使用loopback接口和R3建立邻居
[R1-bgp]peer 10.10.3.3 next-hop-local    
//R1在给R3传递路由的时候会修改路由的下一跳地址为R1的本地地址(也就是10.10.1.1)

5)配置R1和R2建立内部邻居-IBGP邻居-为了解决路由黑洞问题
[R1-bgp]peer 10.10.2.2 as 200  
[R1-bgp]peer 10.10.2.2 connect-interface LoopBack 0
[R1-bgp]peer 10.10.2.2 next-hop-local


第三步:验证一下:
========================================================================
验证结果:
<R4>display bgp  peer     //R4和R1是好邻居
<R1>display bgp  peer     //R1和R4是好邻居

<R4>display bgp routing-table       //R4中注入了路由,并且是最优的
 Total Number of Routes: 1
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>   10.10.4.0/24       0.0.0.0         0                     0      i

<R1>display bgp routing-table    //从EBGP邻居学来的路由是最优的
 Total Number of Routes: 1
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>   10.10.4.0/24       192.168.14.4    0                     0      100i

=============================================================================

第四步: 配置R2
R2的配置:
1) 配置R2的接口IP地址:
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 192.168.12.2 24
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 192.168.23.2 24
[R2-GigabitEthernet0/0/1]int lo0
[R2-LoopBack0]ip add 10.10.2.2  24
[R2-LoopBack0]quit

2)配置R2的ospf:
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255  
[R2-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255 
[R2-ospf-1-area-0.0.0.0]network 10.10.2.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]quit
[R2-ospf-1]quit

3)配置R2的BGP-R2和R1/R3分别建立IBGP邻居关系:
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 10.10.1.1 as 200  
[R2-bgp]peer 10.10.1.1 connect-interface LoopBack 0
[R2-bgp]peer 10.10.3.3 as 200
[R2-bgp]peer 10.10.3.3 connect-interface LoopBack 0


第五步: 配置R3
1)配置R3的接口
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ip add 192.168.23.3  24
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]ip add 192.168.35.3 24
[R3-GigabitEthernet0/0/1]int lo0
[R3-LoopBack0]ip add 10.10.3.3 24
[R3-LoopBack0]quit

2) 配置R3的OSPF
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network  192.168.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 10.10.3.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]quit

3)配置R3和R2建立IBGP邻居关系
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 10.10.2.2 as 200  
[R3-bgp]peer 10.10.2.2 connect-interface LoopBack 0
[R3-bgp]peer 10.10.2.2 next-hop-local

4)配置R3和R1建立IBGP邻居关系
[R3-bgp]peer 10.10.1.1 as 200  
[R3-bgp]peer 10.10.1.1 connect-interface LoopBack 0
[R3-bgp]peer 10.10.1.1 next-hop-local

5)配置R3和R5建立EBGP邻居关系
[R3-bgp]peer 192.168.35.5 as 300


第六步: 配置R5
R5的配置:

1)配置R4的接口IP地址
[R5]int g0/0/0
[R5-GigabitEthernet0/0/0]ip add 192.168.35.5 24
[R5-GigabitEthernet0/0/0]int lo0
[R5-LoopBack0]ip add 10.10.5.5 24
[R5-LoopBack0]quit

2)配置R5和R3的EBGP,并注入路由
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200
[R5-bgp]network 10.10.5.0 24


第七步:验证
1)查看R1-R2-R3的ospf 邻居关系
<R1>display ospf peer brief 
<R2>display ospf peer brief 
<R3>display ospf peer brief 

2)查看R1/R2/R3/R4/R5的BGP邻居关系
<R1>display bgp peer 
<R2>display bgp peer 
<R3>display bgp peer 
<R4>display bgp peer 
<R5>display bgp peer 


3)查看R1/R2/R3/R4/R5的BGP路由表
<R1>display bgp routing-table
<R2>display bgp routing-table
<R3>display bgp routing-table
<R4>display bgp routing-table
<R5>display bgp routing-table

4)验证网络连通性
<R4>ping -a 10.10.4.4 10.10.5.5

注:

这里小主 就将命令和验证方式都放在这里了

1.bgp只会将最好的路由传递给邻居

2.为什么建议使用loopback建立邻居:loopback接口永远不会down,有一条线路完好的时候,loopback接口都可以使用

更新源机制

-当使用逻辑接口,建立IBGP时,需要考虑,更新源检查机制

-R1和R3建立IBGP邻居关系时,如果是使用loopback 接口建立邻居关系,就要告诉路由器使用loopback接口的IP地址,封装BGP报文,不然他是会用上面的接口地址进行发送,我们用loopback接口就会失败(抓包即可看到)

配置:

[R1-bgp]peer 10.10.3.3 as 200      //R1和R3建立IBGP邻居
[R1-bgp]peer 10.10.3.3 connect-interface LoopBack 0   //R1使用loopback接口和R3建立邻居

修改下一跳

BGP路由器从外部邻居-EBGP邻居哪里学来的路由,在传递给自己的内部邻居-IBGP邻居时,默认不修改下一跳地址,会保持路由的下一跳地址不变,下一跳不改变,会导致路由实效

配置:

[R1]bgp  200
[R1-bgp]peer 10.10.3.3 next-hop-local   
//R1在给R3传递路由的时候会修改路由的下一跳地址为R1的本地地址(也就是10.10.1.1)

bgp的通告原则

BGP通告原则之一 : 仅将自己最优的路由发布给邻居  

说人话:BGP路由器只会将自己认为最好的路由传递给自己的邻居

BGP通告原则之二 : 通过EBGP获得的最优路由发布给所有BGP邻居

说人话:从外部邻居学来的路由,会传递给自己所有的邻居

BGP通告原则之三 : 通过IBGP获得的最优路由不会发布给其他的IBGP邻居 

说人话:BGP路由器从内部邻居学来的路由不会再传递自己的内部邻居                                          这叫内内不相传:也就是传说中的 IBGP水平分割  

为什么IBGP要这么搞,防止路由环路

但是我们要他互联互通,就要解决水平分割,这里介绍三种解决办法:ibgp全互联(上面介绍就是),路由反射器路由联盟

路由反射器

反射器角色:客户机/非客户机/路由反射器rr

原理:

客户机只需要与反射器建立IBGP邻居,客户机之间不需要建立邻居,减少了邻居关系的数量,通过RR将自身学习到的路由反射给邻居,实现路由的传递;

反射器通过命令指定自己的客户弃,客户机不知道谁是反射器,只有反射器知道谁是客户机,没有指定为客户机的路由器,就是非客户机

反射器打破了水平分割的限制,让IBGP邻居之前路由可以传递,不需要改变原有拓扑结构,配置简单,较为常用

反射的原则:

RR从客户学到的路由,会反射给客户和非客户

RR从非客户学到的路由,会反射给客户

RR从EBGP邻居学到的路由,会反射给客户机和非客户机

RR从非客户机学到的路由不会在反射给非客户机,(非非不反射

拓扑:

 配置(就相当于配置反射器不需要配置更新源检测机制,不需要修改下一跳,指定客户机即可实现全互联):

r2上面的配置:
 peer 10.10.1.1 reflect-client    //指定R1为我的客户机
  
  备注:如果配置下面这条命令:
  peer 10.10.3.3 reflect-client    //代表指定R3为我的客户机
  如果没有配置这条命令: 代表,R3是我的非客户机

注:十分推荐,工作里用的最多的也是反射器

bgp联盟

概念:

将一个大的as号分割成多个小的as号,对外呈现的是大的as号,对内呈现的是子as号

原理:

子AS内部如超出3台路由器,依然有水平分割限制,在子AS内也可以配置路由反射器

联盟配置复杂,需要所有路由器都支持该功能,适合特别大的网络

拓扑:

 配置有点多,我把他打包成文档在文章的开头,如果有需要就自取

bgp选路

公认必遵:所有bgp设备都要认识这个属性,这些属性都在update报文,如果不存在,就会存在路由错误,例如:as-path origin next-hop

公认任意:这类属性不一定在update报文里面,可以在也可以不在,例如:local-pref(当地优先级)

可选过渡:bgp设备可以认识也可以不认识,如果不认识会接受,将会传递给邻居,例如:community(团体属性)

可选非过渡:bgp设备可以认识也可以不认识,如果认识会忽略这个属性,并且不会传递给邻居

例如:med值(开销值)

bgp选路的原则

第一个:丢弃下一跳不可达的路由

然后进行选路:

1、比较“协议首选值-pref-val”属性,数值越大越好,默认值是0,只在本设备生效,不会传递(华为设备私有的)

2、比较“本地优先级-local_pref”属性,数值越大越好,默认值是100

3、比较“as-path” 属性-as号越短越好

4、比较“起源属性”-指的是已什么方式注入进BGP协议的

5、比较“MED”属性,指的是一个路由器去往一个BGP路由网段的距离,类似cost

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值