BGP(边界网关协议)

news/2024/10/18 11:24:01/

1、网络AS(自治系统)

边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。

AS是指在一个实体管辖下的拥有相同选路策略的IP网络。BGP网络中的每个AS都被分配一个唯一的AS号,用于区分不同的AS。AS号分为2字节AS号和4字节AS号,其中2字节AS号的范围为1至65535,4字节AS号的范围为1至4294967295。支持4字节AS号的设备能够与支持2字节AS号的设备兼容。

在统一的管理机构、统一的路由策略之下的一系列网络产品组成的网络实体,被称为一个网络的自治系统。BGP协议用于AS之间,而IGP用于AS内部。

2、BGP特征 不能注入igp 通信靠默认路由 igp注入bgp实现和互联网通信

(1)使用BGP的条件(情况)

一个AS允许数据穿过它到达其他AS

一个AS与其他AS有多条连接   

数据报文在进入或者离开AS时,需要对其进行策略处理

(2)BGP是路径矢量协议,是对距离矢量协议的增强

可靠更新:使用TCP179端口发送更新 *** 不能自动发现邻居

只采用触发的、增量更新

周期性的保活消息(keepalive message)维持TCP连接(默认60秒间隔,保持时间3倍)

丰富的度量值(也被称为路径矢量或路径属性)

3、BGP数据库结构(BGP有几张表)

(1)邻居表

(2)BGP表(拓扑表)

从每个邻居学习到的所有网络的列表

到达每个网络的多条路径

每个路径的BGP属性

(3)IP路由表

4、BGP消息类型

(1)Open

自治系统号(AS号):AS号范围1-65535(其中64512-55535为私有AS号)

保持时间(Holdtime):默认3min

BGP标识符(BGP的router-id)

可选参数(多协议扩展,路由刷新,优雅重启,路由刷新新旧格式,出站路由过滤)

(2)Keepalive:默认60s

(3)Update(更新)

NLRI(网络层可达信息)

路由属性

撤销路由

(4)Notification(通告)

当检测到错误时,会发送此消息并关闭BGP连接

5、BGP邻居关系的种类

(1)IBGP(Internal BGP)

建立BGP邻居(对等体)的路由器在同一个AS里,通常情况下,IBGP对等体不需要直接相连

(2)EBGP(External BGP)

建立BGP邻居(对等体)的路由器不在同一个AS里,通常情况下,EBGP对等体之间需要直连

As内部并且不知道 其他As网段

基础实验:R1,R2分别启用环回口,然后直连建立bgp,再宣发环回口进入bgp

[Huawei]bgp 1

[Huawei-bgp]router-id 2.2.2.2

[Huawei-bgp]peer  12.1.1.1 as-number 1  //对方所属的ip,as区域

Ibgp 建立

[Huawei-bgp]network  10.1.4.0 24  //宣发其他网段进入bgp

验证:

sike:

R1(config)#router bgp 1

R1(config-router)#bgp router-id 1.1.1.1

R1(config-router)#no bgp  default ipv4-unicast  //关闭消息设置

R1(config-router)#neighbor 12.1.1.2 remote-as 1   // 发现邻居   remote-as 1 邻居的as号

R1(config-router)#address-family ipv4              //进入到IPv4地址簇

R1(config-router-af)#nei 12.1.1.2 activate       //激活邻居12.1.1.2

宣发进入bgp

R1(config)#router bgp 1

R1(config-router)#address-family  ipv4

R1(config-router-af)#network 10.1.1.0 mask 255.255.255.0

实验:igp注入bgp(反之万万不可以bgp路由表巨大

[Huawei]bgp 1  //注意不同as 的bgp进程号不同

[Huawei-bgp]router-id 2.2.2.2

[Huawei-bgp]peer  12.1.1.1 as-number 1

注入ospf

[Huawei]bgp 1

[Huawei-bgp]ipv4-family unicast

[Huawei-bgp-af-ipv4]import-route  ospf 1

验证:R3,R4都有了全路由

sike: 

注入ospf

R1(config)#router bgp 1

R1(config-router)#address-family ipv4

R1(config-router-af)#redistribute  ospf  100 match internal external

实验:使用环回口建立ebgp关系

要写静态路由 因为是环回口

[Huawei]ip route 2.2.2.2 255.255.255.255 21.1.1.2

[Huawei]ip route 1.1.1.1 255.255.255.255 12.1.1.1

ebgp一般是直连接口建立

[Huawei-bgp]peer  1.1.1.1 connect-interface LoopBack 0  //数字代表建立关系的环回口

不在同一个as 使用环回口 会增加TTL bgp 默认max是1 所以无法到达 用下面指令修改 max为255

[Huawei-bgp]peer 1.1.1.1 ebgp-max-hop 2  //不使用环回口也会有跳数问题所以尽量拉高

验证:使用环回口建立ebgp关系成功

sike:

R1(config-router)#nei 2.2.2.2 update-source loopback0

R1(config-router)#neighbor  2.2.2.2 ebgp-multihop 255

BGP下一跳行为:

BGP的下一跳为AS的一跳,因此AS边界的BGP路由器,向它的IBGP对等体发送从它的EBGP对等体学习到的路由时,由于AS之间的网段不宣告到AS内部,因此会导致它的IBGP对等体学习到的外部AS的路由的下一跳不可达。

实验:目的使R1到R3路由下一跳为R2 不是R3

R1,R2建立igbp和ospf R2,R3建立ebgp,同时三台都起环回口用于验证

直接查看R1路由表无法看到R3环回口,使用如下命令验证

[Huawei-bgp]peer 12.1.1.1 next-hop-local //在R2上

验证:下一跳更改为了R2对应接口

sike:

R2(config)#router bgp 1

R2(config-router)#add ipv4

R2(config-router-af)#nei 1.1.1.1 next-hop-self

BGP的选路原则 *****(同步端口号179)

1Prefer highest weight (local to router). --思科私有,作用范围本路由器(最高的权重优先)

2、Prefer highest local preference (global within AS).(最大的本地优先级优先)

3、Prefer route originated by the local router (next hop = 0.0.0.0).(起源路由器优先)

4Prefer shortest AS path.(最短的AS-PATH优先)as个数

5、Prefer lowest origin code (IGP < EGP < incomplete).(最低的起源代码)

6、Prefer lowest MED (exchanged between autonomous systems).(最小的MED优先)

IGP的选路原则:

1、下一跳可达

2、最长掩码匹配  //同路由掩码越长越优先

3、最优管理距离

4、最小的度量值

实验:修改属性实现指定选路(这里只教一种方法很多大差不差)

上图中R1与R2以及R1与R3之间是EBGP关系,R2与R3之间是IBGP关系

在R1上启用Lo1:11.11.11.11/32,宣告到BGP中

在R2上启用Lo1:22.22.22.22/32,宣告的BGP中

要求在完成以上配置后,通过相关的修改,实现

在R2上:

traceroute 11.11.11.11 source 22.22.22.22

经过的路径是R2-->R3-->R1

注意:R2,R3必须是环回口建立邻居关系,不然修改 preferred-value无效

基本配置后

[Huawei]ip ip-prefix abc permit 11.11.11.11 32 //抓取目标流量

[Huawei]route-policy f1 permit node 10

[Huawei-route-policy]if-match ip-prefix abc

[Huawei-route-policy]apply  preferred-value 500 // 赋予PrefVal值越大越优先

[Huawei]route-policy f3 permit node 10

[Huawei-route-policy]if-match ip-prefix abc

[Huawei-route-policy]apply  preferred-value 1000

[Huawei]bgp 2
[Huawei-bgp]peer  12.1.1.1 route-policy f1 import  //导入

[Huawei-bgp]peer 3.3.3.3 route-policy f3 import

验证:R1,与2 3 不是通过环回口建立但可用此方法(懂得大佬评论区解答以下)

sike:

Weight 优先级

R2(config)#ip prefix-list 10 permit 11.11.11.11/32 抓住这段流量

R2(config)#route-map fromr1 permit 10

R2(config-route-map)#match ip address prefix 10

R2(config-route-map)#set weight 500  //weight值越大越优先

R2(config-route-map)#exit

R2(config)#route-map fromr3 permit 10

R2(config-route-map)#match ip add pre 10

R2(config-route-map)#set wei 1000

R2(config-route-map)#exit

R2(config)#router bgp 2

R2(config-router)#add ipv4

R2(config-router-af)#nei 12.1.1.1 route-map fromr1 in

R2(config-router-af)#nei 3.3.3.3 route-map fromr3 in

汇总(聚合)

聚合

huawei :

aggregate 192.168.0.0 255.255.248.0 as-set detail-suppressed 

sike : 

R2(config-router)#address-family ipv4

R2(config-router-af)#aggregate-address 10.1.8.0 255.255.252.0 summer-only as-set

BGP联盟(联邦)

相当于As 之上又嵌套一个As,便于网络管理

BGP联盟使管理者可以将大型AS分割成子AS,从而使大型AS更容易管理。被分割的AS本身是联盟,那些子AS是该AS的成员,在联盟以外的AS将整个联盟看作一个AS,它们看不到联盟内部的成员AS,因为这些成员AS对外部是隐藏的,因此成员AS可以使用公共AS号,也可以使用私有AS号,在实际生产环境中,建议使用私有AS号作为成员AS号。

实验时先建立联盟再peer邻居

不在联盟内peer联盟 直接peer联盟号 As号联盟内用

huawei:

[Huawei-bgp]confederation id  1

[Huawei-bgp]confederation peer-as  65002  //发现同联盟并相连的AS

sike:

R2(config-router)#bgp confederation identifier 1 //定义联盟AS

R2(config-router)#bgp confederation peers 65002 //定义域本AS相连的其他联盟成员AS

路由反射器:

bgp水平分割:同一个As内部的ibgp对等体A从B学习到的路由不会传给C(从ibgp对等体学习的路由不会向其他对等体转发)

解决方法:1.A与C同样建立对等体关系使得C可以从A学习路由(关系复杂不利于网络管理)

                  2.使B成为路由反射器会将其他客户反射给客户以及非客户,路由反射后的所有属性不发生变化(包括下一跳属性)

R2,R3起环回口宣发进bgp但因为水平分割R2看不到R3路由

[Huawei-bgp]peer  2.2.2.2 reflect-client

[Huawei-bgp]peer  3.3.3.3 reflect-client

验证:

sike:

R1(config)#router bgp 1

R1(config-router)#add ipv4

R1(config-router-af)#nei 2.2.2.2 route-reflector-client

R1(config-router-af)#nei 3.3.3.3 route-reflector-client


http://www.ppmy.cn/news/1539985.html

相关文章

【后端开发】自动化部署、服务管理、问题排查工具(cicd流水线,k8s集群,ELK日志)

【后端开发】自动化部署、服务管理、问题排查工具&#xff08;cicd流水线&#xff0c;k8s集群&#xff0c;ELK日志&#xff09; 文章目录 1、Devops与CICD流水线(TeamCity, Jenkins&#xff0c;GitHub Actions)2、Kubernetes 集群的管理和操作&#xff08;对比Portainer&#x…

Unity网络开发基础 —— 实践小项目

概述 接Unity网络开发基础 导入基础知识中的代码 需求分析 手动写Handler类 手动书写消息池 using GamePlayer; using System; using System.Collections; using System.Collections.Generic; using UnityEngine;/// <summary> /// 消息池中 主要是用于 注册 ID和消息类…

MySQL数字函数详细学习要点

在MySQL中&#xff0c;数字函数是用于处理数值数据的强大工具&#xff0c;它们可以执行各种数学计算&#xff0c;包括四舍五入、取整、平方根、对数、三角函数等。以下是MySQL数字函数详细学习的一些要点&#xff1a; 1. 数学函数 - 绝对值函数&#xff1a;ABS(x)&#xff0c…

实验五 JSP编程

实验五 JSP编程 目的&#xff1a; 1、理解和掌握JSP基本语法 2、掌握JSP表单元素及表单传值过程中的中文编码处理 3、掌握JSP的指令和动作&#xff0c;熟练掌握page指令的下面的属性&#xff1a;import、 errorPage、isErrorPage、contentType、pageEncoding。 实验要求&…

vue项目中使用websocket

一、单文件中引入使用 <template></template> <script>export default {websocket: true, // 标志需要使用WebSocketdata () {return {ws: null}},created () {this.ws new WebSocket(ws://127.0.0.1:8000); // ws服务地址this.ws.onopen () > {// 接收…

使用Three.js和Force-Directed Graph实现3D知识图谱可视化

先看样式&#xff1a; 在当今信息爆炸的时代&#xff0c;如何有效地组织和展示复杂的知识结构成为一个重要的挑战。3D知识图谱可视化是一种直观、交互性强的方式来呈现知识之间的关系。本文将详细介绍如何使用HTML、JavaScript、Three.js和Force-Directed Graph库来实现一个交互…

网页复制粘贴助手,Chrome网页复制插件(谷歌浏览器复制插件)

一款解决网页限制复制问题的插件&#xff0c;当你遇到限制复制粘贴和右键的网页是不是很头痛&#xff1f;安装这个插件后&#xff0c;点下插件按钮就能解决了 碰到这种情况 也是非常头疼 chrome拓展-chrome插件-强制复制 当我们浏览网页的时候&#xff0c;看到感兴趣的内容就…

华为云Flexus云服务:性能倍增、体验跃级

在数字化转型的浪潮中&#xff0c;企业对云计算的需求日益增长&#xff0c;尤其是在性能和体验方面。华为云Flexus云服务应运而生&#xff0c;为企业提供了一个性能倍增、体验跃级的云计算解决方案。下面九河云就来给大家介绍一下华为云Flexus云服务吧。 1. 性能倍增 华为云…