大家好,欢迎来到IT知识分享网。
一、BGP协议基础
1、路由的分类
1)直连路由 2)⾮直连路由(间接路由) 静态路由 动态路由 IGP: 内⽹⽹关路由协议(在企业内部或数据中⼼内部使⽤) DV:距离⽮量路由协议 ——RIP(v1/v2) ——IGRP—⽹络直径:100—255(思科的私有协议) ——EIGRP—思科的私有 LS: 链路状态路由协议 ——ISIS- 中间系统到中间系统 ——OSPF —开放式最短路径优先 EGP : 外部⽹关路由协议:在不同公司之间使⽤,在不同的城市之间 BGP:边界⽹关协议 (路径⽮量路由协议)
2、为什么要使用BGP协议
我们要在不同 AS 之间实现⽹络通信,需要使⽤ EGP-BGP 协议,BGP还有⼀些更重要的优势
1)⾮常稳定 2)可以传输⼤量的路由,⽀持⼤规模⽹络 3)具有⾮常丰富的路由控制策略,可以实现灵活的选路
3、BGP概述
-BGP:边界⽹关协议 -BGP 是公有协议,任何⼚商的设备都⽀持 BGP -BGP 位于 OSI 的第 7 层 (应⽤层)
备注:
OSPF 基于 IP 协议,为了可靠性,数据库同步:协商主从关系,序列号、有确认机制
4、AS号
AS 号(Autonomous System Number): ⾃治系统:
——是互联⽹中的⼀种标识符,⽤于标识⼀个⾃治系统(AS)的唯⼀数字。⾃治系统是指由⼀组⽹络和路由器组成的⽹络。 ——AS 号可以帮助互联⽹中的路由器找到要到达⽬的地的 IP 地址的最短路径。 ——AS 号由互联⽹分配机构 IANA(互联⽹分配号码管理局)分配。 ——AS 号的范围被划分为两类:公共 AS 号和私有 AS 号 。 ——公共 AS 号是指由 IANA 分配的 AS 号,可⽤于在全球范围内标识⾃治系统。 ——私有 AS 号是指由互联⽹注册机构(IR)分配的 AS 号,⽤于在私有互联⽹中标识⾃治系统。 ——AS 通常使⽤“数字”来表示,称为 AS 号 ——AS 号的范围是从 0 到 65535,其中 0 被保留不使⽤
-AS 编号取值范围
之前 —2 字节表示,取值范围:1-65535
私有 AS 号:64512-65534,可以⽤于在私有互联⽹中标识⾃治系统, 但不会在公共互联⽹中出现。这些私有 AS 号通常⽤于连接组织的内部⽹络。
⽬前是 4 个字节:1-
4 字节 AS 号的范围是从 0 到 ,其中 0 号 AS 被保留不使⽤ ,私有 AS 号范围是 ⾄
4 字节 AS 号由 IANA 管理,并由全球 RIR(区域互联⽹注册局)负责分配
在国内,中国的运营商通常将 AS 号按照不同的地理区域划分。
⼆、BGP 协议概述
1、使用场景
⼀:遍布全国⼤型政企单位之间, 或⼤型数据中⼼ ⼆:运营商⻣⼲网络
2、作用
在AS之间动态的交互路由信息,实现公司与公司之间的互访
3、优势
1)稳定,基于 TCP 协议建⽴的,使⽤端⼝号 TCP179,所以⾮常稳定 2)传递⼤量路由,可以跨多跳建⽴邻居关系 3)路由控制策略丰富
4、BGP 邻居类型
EBGP: 运⾏于不同的 AS IBGP: 运⾏于同⼀ AS 内部
5、BGP 特征
——BGP 使⽤传输层协议为 TCP,TCP 端⼝号179。路由器之间的 BGP 会话基于 TCP 连接⽽建⽴。 ——运⾏ BGP 的路由器被称为 BGP 发⾔者(BGP Speaker),或 BGP 路由器。 ——两个建⽴ BGP 会话的路由器互为对等体(Peer),简单理解,就是 BGP 邻居 ——BGP 对等体之间交换 BGP 路由信息 , 简单理解,BGP 在邻居之间传递路由 ——BGP 路由器只发送增量的 BGP 路由更新,或进⾏触发式更新(不会周期性更新)。 ——BGP 能够传递⼤批量的路由,可在⼤规模⽹络中应⽤。
6、BGP 报⽂类型
-update : ⽤于传递路由和撤销路由 (类似于 LSU 报⽂)
-notification : 通知报⽂,⽤于通知 BGP 邻居之间的报错信息,⽤于断开BGP 连接
这里我把连接的路由器BGP协议关闭
-router-refresh : 重传报⽂,请求邻居重新发送路由信息
<R1>refresh bgp all { export | import } //手动重传BGP路由触发 {出 | 入} 方向的软复位 注意:配置peer keep-all-routes命令后,设备通过执行refresh bgp命令刷新路由表功能将不会生效
| 报文名称 | 作用 | 发送时刻 |
|---|---|---|
| Open | 协商BGP对等体参数,建⽴对等体关系 | BGP TCP 连接建⽴成功之后 |
| Update | 发送BGP路由更新 | BGP对等体关系建立之后有路由需要发送或路由变化时向对等体发送Update报文 |
| Notification | 报告错误信息,中⽌对等体关系 | 当BGP在运行中发现错误时,发送Notification报文将错误通告给BGP对等体 |
| Keepalive | 标志邻居建⽴,维持BGP邻居关系 | BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接 |
| Route-refresh | ⽤于在改变路由策略后请求对等体重新发送路由信息。只有⽀持路由刷新能⼒的 BGP 设备会发送和响应此报文 | 当路由策略发生变化时,触发请求对等体重新通告路由 |
7、BGP ⼯作过程
8、BGP 状态
1)idle :初始化状态
tcp 未连接状态,邻居的状态为 idle , 当 bgp 设备和邻居进⾏ tcp 连接时,会从当前的状态转为 connect 状态
2)connect 状态: tcp 连接状态
如果 tcp 建⽴连接成功,bgp 设备会向邻居发送 open 报⽂,状态也会转为 opensent 状态 如果 tcp 建⽴连接失败,bgp 设备的状态会转为 active 状态
3)active 状态:活跃状态
在当前状态下,bgp 设备依然没有放弃希望,依然试图继续建⽴ tcp 连接, 如果成功,状态依然可以转为 opensent 状态 如果依然失败,bgp 会停留在 active 状态
如果重传计时器超时,依然没有收到邻居回应,bgp 设备会⼼灰意冷的返回上⼀个状态,上⼀个是 connect 状态
4)opensent 状态: open 报⽂已发送状态,已向邻居发送 open 报⽂
如果 bgp 设备给邻居发送 open 报⽂后,如果收到来⾃邻居的回复,并且回复的报⽂是正确的,bgp 设备会继续发送报⽂, 发送 keepalive 报⽂,状态转为 open comfirm 状态 如果 bgp 设备给邻居发送 open 报⽂后,如果收到来⾃邻居的回复,但是回复的报⽂有错误,bgp 设备会向邻居发送 notification 报⽂(⽤于断开 bgp 连接状态),断开后会跳转到最初的 idle 状态
5)open comfirm : open 报⽂确认状态
如果收到邻居发来的 keep alive 报⽂,状态会转为 established 建⽴状态 如果收到邻居发来的 notification 报⽂,状态会跳转为 idle 状态
6)established : 连接已建⽴状态
如果收到邻居发来的正确的 update 报⽂或者 keepalive 报⽂,bgp 就会认为邻居是正常的 如果收到邻居发来的错误的 update 报⽂或者 keepalive 报⽂,bgp 设备会发送 notification 报⽂,通知邻居,我们结束吧,不做邻居了,会回到 idle初始化状态
9、BGP 的⼯作原理
建⽴邻居 传递路由
10、BGP 路由默认优先级为 255
IBGP 路由的默认优先级为 255 EBGP 路由的默认优先级为 255
11、BGP 邻居关系建⽴的完整流程
三、BGP 基础配置案例
1.BGP 实验1
需求
1)配置 EBGP 邻居关系 2)实现⽹络互通
配置步骤
1)配置接⼝ IP 地址 2)配置 EBGP 邻居 3)注⼊路由
R2:
sysname R2 # interface GigabitEthernet0/0/0 ip address 192.168.12.2 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 192.168.20.254 255.255.255.0 # bgp 200 router-id 2.2.2.2 peer 192.168.12.1 as-number 100 network 192.168.2.0
- 验证:查看邻居表
display bgp peer
邻居表解析
BGP local router ID : //表示的BGP给当前这台设备分配的名字
Local AS number : //表示的是当前这个设备所属的AS号
Total number of peers : //表示当前设备⼀共有多少邻居
Peers in established state : //表示当前设备有效的邻居
Peer : //表示的是对端邻居的IP地址
V : //表示的是版本
AS: //表示的是邻居设备所在的AS号
MsgRcvd: //表示的是从邻居设备收到的消息数⽬
MsgSent: //表示的是向邻居设备发送的消息数⽬
OutQ: //表示的是 出向队列 (等待发往指定邻居的消息—出向数据—排队的数据 )
bgp要求稳定,所以如果邻居设备无法向对端发送⼀个稳定的报⽂,那么这个报⽂就会被要求重传。 哪些需要重传的报⽂,就会放到这个出向队列中,所以正常情况下,这个参数的值是0, 如果这个参数不是0,说明和邻居之间的链路非常不稳定,容易出现⽹络拥塞和丢包
State: //表示的是邻居的状态,最完美的状态,就是established (建立)
PrefRcv: //表示的是从邻居设备所接受过来的路由条⽬的数量
⽬前这个值为0,就代表对端设备还没有给我们传递路由信息,就是没有给我们发路由 也可以这样理解:本段从对端设备上收到的路由前缀的数⽬(接收到的路由的数量)
- 验证:查看路由表
display bgp routing-table
路由表字段解析:
BGP Local router ID : 标识的BGP路由器⾃⼰的Router-id
Status codes : 状态代码
valid : 表示BGP路由是有效的,能⽤ > - best: 表示BGP路由是最优的,⾃⼰可以⽤,别⼈也可以⽤
Origin : 起源代码,表示该BGP路由是通过什么⽅式宣告进BGP协议的
i - IGP :最优的 (通过network注入) e - EGP :次优的 ? - incomplete :最差的 (import 引入)
Network :表示BGP路由⽹段和掩码
NextHop :表示BGP路由的下⼀跳地址(如果是0.0.0.0 表示该路由是⾃⼰产⽣的)
后面的都是BGP路由条⽬的属性
MED: 路由度量值,表示去往⼀个BGP路由的距离,类似于其他协议的cost LocPrf : 本地优先级,表明路由器的BGP本地优先级 PrefVal :协议⾸选值,表示的是⼀个BGP路由的优选值,最⾼的路由 协议⾸选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效 Path:AS路径,表示的是⼀个BGP路由AS_Path属性, AS_Path属性按顺序记录了⼀个BGP路由从本地到⽬的地址所要经过的所有AS编号。 Ogn:表示的是⼀个BGP路由的起源属性,主要⽤来定义路径信息的来源。
标记⼀条路由是怎么成为BGP路由的。它有以下3种类型:
IGP:具有最⾼的优先级。通过network命令注入到BGP路由表的路由,其Origin最高 EGP:优先级次之,通过EGP得到的路由信息,其Origin属性为EGP。 Incomplete:优先级最低。通过其他⽅式学习到的路由信息。 比如BGP通过import-route命令引入的路由
- 验证:PC1和PC2 可以ping通
如果按照这个拓扑和命令配置以后依然无法ping通可以查看IP路由表中有无EBGP的路由,
如没有可能是禁止BGP路由下发到IP路由表导致的(我配置完了以后后面导入打开top发现没有EBGP路由),可以在配置的命令中看是否有‘bgp-rib-only’,undo命令就可以了
bgp-rib-only //命令用来禁止BGP路由下发到IP路由表
四、IBGP 全互联案例:
1、IBGP 全互联实验
- 需求
实现 R4 的 10.10.4.4 和 R5 的 10.10.5.5 互通
思路: - 配置步骤
- 配置命令
[R4]int g0/0/0 [R4-G0/0/0]ip add 192.168.14.4 24 [R4-G0/0/0]int lo0 [R4-LoopBack0]ip add 10.10.4.4 32
2)R4的BGP配置:
[R4]bgp 100 [R4-bgp]router-id 4.4.4.4 [R4-bgp]peer 192.168.14.1 as 200 //和R1建立外部邻居 [R4-bgp]network 10.10.4.4 32 //注入路由
[R1]int g0/0/0 [R1-G0/0/0]ip add 192.168.12.1 24 [R1-G0/0/0]int g0/0/1 [R1-G0/0/1]ip add 192.168.14.1 24
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]quit [R1-ospf-1]quit
3)R1的BGP配置:
[R1]bgp 200 //开启BGP,配置AS200 [R1-bgp]router-id 1.1.1.1 [R1-bgp]peer 192.168.14.4 as 100 //和R4建立外部邻居 [R1-bgp]peer 192.168.12.2 as 200 //和R2建立内部邻居 [R1-bgp]peer 192.168.12.2 next-hop-local //修改下⼀跳 [R1-bgp]peer 192.168.23.3 as 200 //和R3建立内部邻居 [R1-bgp]peer 192.168.23.3 next-hop-local //修改下⼀跳
[R2]int g0/0/0 [R2-G0/0/0]ip add 192.168.12.2 24 [R2-G0/0/0]int g0/0/1 [R2-G0/0/1]ip add 192.168.23.2 24
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]quit
3)R2的BGP配置:
[R2]bgp 200 [R2-bgp]router-id 2.2.2.2 [R2-bgp]peer 192.168.12.1 as 200 //和R1建立内部邻居 [R2-bgp]peer 192.168.23.3 as 200 //和R3建立内部邻居
[R3]int g0/0/0 [R3-G0/0/0]ip add 192.168.23.3 24 [R3-G0/0/0]int g0/0/1 [R3-G0/0/1]ip add 192.168.35.3 24
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]quit [R3-ospf-1]quit
3)R3的BGP配置:
[R3]bgp 200 [R3-bgp]router-id 3.3.3.3 [R3-bgp]peer 192.168.23.2 as 200 //和R2建立内部邻居 [R3-bgp]peer 192.168.23.2 next-hop-local //修改下⼀跳 [R3-bgp]peer 192.168.12.1 as 200 //和R1建立内部邻居 [R3-bgp]peer 192.168.12.1 next-hop-local //修改下⼀跳 [R3-bgp]peer 192.168.35.5 as 300 //和R5建立外部邻居
[R5]int g0/0/0 [R5-G0/0/0]ip add 192.168.35.5 24 [R5-G0/0/0]int lo0 [R5-LoopBack0]ip add 10.10.5.5 32
2)R5的BGP配置:
[R5]bgp 300 [R5-bgp]router-id 5.5.5.5 [R5-bgp]peer 192.168.35.3 as 200 //和R3建立外部邻居 [R5-bgp]network 10.10.5.5 32 //注入路由
- 验证:
1)display ospf peer brief //在R2中查看ospf 邻居
2)<R1>ping 192.168.23.3 //在R1 ping R3 通
3)<R1>display bgp peer //R1和R2 R3 R4 都是BGP邻居
<R3>display bgp peer //R3和R1 R2 R5 都是BGP邻居
<R4>display bgp routing-table //所有的路由器都有这两条路由
<R4>ping -a 10.10.4.4 10.10.5.5 //可以通
- 解析修改下⼀跳: Next_Hop
2)从外部邻居哪⾥学来的路由,在传递给⾃⼰的内部邻居时,默认不修改下⼀ 跳地址
[R1]bgp 200 [R1-bgp]peer 192.168.23.3 next-hop-local //修改下⼀跳
4)外部邻居在传递路由的时候,默认修改下⼀跳地址
可以在下载里面下载和文章标题相同的TOP压缩包配合使用,请大家监督我学习
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/117676.html






















