HCIP—BGP邻居关系建立实验

BGP的邻居称为:IBGP对等体 EBGP对等体

1.EBGP对等体关系:

位于 不同自治系统 的BGP路由器之间的BGP对等体关系

EBGP对等体一般使用 直连建立 对等体关系,EBGP邻居之间的报文 TTL中值设置为1

两台路由器之间建立EBGP对等体关系,满足如下关系: 两个路由器属于不同AS 。在配置时,peer命令所指的对等体的IP地址可达, TCP连接必须正常建立

2.IBGP对等体关系:

位于 相同自治系统 的BGP路由器之间对等体关系

IBGP对等体一般使用 非自连建邻 。IBGP邻居建邻之间的报文中 TTL值被设置为255

在BGP对等体中,常常使用环回接口地址作为源目IP地址,原因环回接口稳定

并且可以借助AS内部的IGP的冗余拓扑来保证可靠性

实验拓扑如图所示,R1与R2属于同一个运营商网,AS编号为100,R1与R2之间的邻居关系为IBGP邻居关系。R3属于另一个运营商网络,AS编号为200,R3与R2之间的邻居关系为EBGP邻居关系。本实验中,路由器将分别采用物理接口和Loopback接口来进行IBGP和EBGP邻居关系的建立。

一:进行基础的IP地址配置,保证直连网段的ping通

二:R1和R2配置IBGP邻居

1.使用物理接口配置

R1和R2之间使用物理接口来配置IBGP邻居关系。R1和R2之间部署两条链路,其中一条物理出现故障时,另一条链路可以提供连通性

[R1]bgp 100
[R1-bgp]router-id 10.0.1.1
[R1-bgp]peer 10.0.12.2 as-number 100
[R1-bgp]peer 10.0.21.2 as-number 10

[R2]bgp 100
[R2-bgp]router-id 10.0.2.2 
[R2-bgp]peer 10.0.12.1 as-number 100
[R2-bgp]peer 10.0.21.1 as-number 100

配置完成后在R2上使用dis bgp peer命令,查看BGP邻居关系

R2现在有两个BGP的邻居,分别为R1的两个接口IP地址10.0.12.1和10.0.21.1 ,AS号都为100,与R2的AS号相同,当前的邻居状态为Established,表示邻居关系建立成功。

R1将Loopback 0接口IP地址通告在BGP进程中
[R1]bgp 100  
[R1-bgp]network 10.0.1.1 32

配置完成后在R2上查看BGP路由表

R2的BGP路由表中去往10.0.1.1/32的路由,可以通过下一跳R1的两个接口的IP地址10.0.12.1和10.0.21.1,实现BGP路由冗余。

2.使用LoopBack 0接口进行配置

        由于BGP是运行在TCP之上的,可以让R1的Loopback 0接口和R2的Loopback 0接口建立会话,并使用Loopback 0接口IP建立BGP邻居关系,则R1和R2之间只维护一个BGP邻居关系。当R1和R2之间的一条链路出现故障时,TCP直接通过另外一条物理链路继续维持会话关系,这效果比直接使用物理接口更具优势。

        R1的Loopback 0接口和R2的Loopback 0接口建立会话前,双方配置静态路由到达对方的Loopback 0接口。

[R1]ip route-static 10.0.2.2 32 10.0.12.2
[R1]ip route-static 10.0.2.2 32 10.0.21.2

[R2]ip route-static 10.0.1.1 32 10.0.12.1
[R2]ip route-static 10.0.1.1 32 10.0.21.1

删除之前使用物理接口配置IBGP邻居关系的命令,并使用Loopback 0接口重新建立IBGP邻居关系

[R1-bgp]undo  peer 10.0.12.2
[R1-bgp]undo  peer 10.0.21.2#删除使用物理接口配置IBGP邻居关系的命令
[R1-bgp]peer 10.0.2.2 as-number 100
#使用Loopback 0接口重新建立IBGP邻居关系


[R2-bgp]undo peer 10.0.12.1
[R2-bgp]undo peer 10.0.21.1
[R2-bgp]peer 10.0.1.1 as-number 100

R1使用dis bgp peer查看BGP邻居关系

        发现R1和R2的邻居关系为Active,说明R1和R2之间尚未成功建立IBGP邻居关系。由于BGP邻居在检测地址时,双方的目标IP地址都与对方的BGP源IP地址相同,才可以正常建立邻居。

        默认情况下BGP前往邻居路由器的出接口作为源IP地址,R1指定邻居地址10.0.2.2作为目的IP地址,R1出接口10.0.12.1源IP地址,。R2指定邻居地址10.0.1.1作为目的IP地址,R2出接口IP地址10.0.12.2作为源IP地址。因为双方的出接口IP地址和目的IP地址都不相同,故无法正常建立邻居。

        为了使数据包的目标IP与对方的BGP源地址相同,所以邻居也要将BGP源地址更改为自己的loopback接口地址。 由于R1发出的数据包目标IP10.0.2.2与R2的BGP源地址10.0.2.2完全相同,所以最终能够正常建立BGP邻居。R1在检测地址时,R2的目标IP10.0.1.1与R1的源10.0.1.1也完全相同。

R1使用命令peer 10.0.2.2 connect-interface LoopBack 0 强制指定LoopBack 0接口地址作为发送BGP报文的源IP地址,R2也一样

[R1-bgp]peer 10.0.2.2 connect-interface LoopBack 0

[R2-bgp]peer 10.0.1.1 connect-interface LoopBack 0

R2使用dis bgp peer查看BGP邻居关系

当前的邻居状态为Established,表示邻居关系建立成功。

R2使用命令dis ip routing-table查看路表。 

R2去往10.0.1.1/32的路由有两条,下一跳10.0.12.1和10.0.21.1,其中一条链路重新问题时,不会影响另一条链路。R1和R2的BGP邻居关系也不会有影响。

三:配置EBGP邻居

配置BGP邻居关系时使用物理接口建立,容易产生两个TCP会话和两个BGP邻居关系,当有较多设备时,这样配置容易导致网络不稳定,消耗设备资源。

        我们以R2的LoopBack 0和R3的LoopBack 0接口来配置EBGP邻居关系,先R2和R3上配置到达对方的LoopBack 0接口的静态路由。

[R2]ip route-static 10.0.3.0 255.255.255.0 10.0.23.3
[R2]ip route-static 10.0.3.0 255.255.255.0 10.0.32.3

[R3]ip route-static 10.0.2.0 255.255.255.0 10.0.23.2
[R3]ip route-static 10.0.2.0 255.255.255.0 10.0.32.2

R2和R3上使用LoopBack 0接口建立EBGP邻居关系,使用命令connect-interface LoopBack 0 强制指定LoopBack 0接口地址作为发送BGP报文的源IP地址

[R2]bgp 100
[R2-bgp]peer 10.0.3.3 as-number 200
[R2-bgp]peer 10.0.3.3 connect-interface LoopBack 0

[R3]BGP 200
[R3-bgp]router-id 10.0.3.3 
[R3-bgp]peer 10.0.2.2 as-number 100
[R3-bgp]peer 10.0.2.2 connect-interface LoopBack 0

R3查看BGP邻居关系

当前的邻居状态为idle,表示邻居关系建立不成功。

        默认情况下,EBGP邻居之间发送BGP报文时,TTL值默认为1,则EBGP要求邻居关系之间必须使用物理接口必须直连。我们使用的地址不是直连地址,那么这个时候我们就需要开启EBGP多跳,否则将无法正常建立BGP邻居。可以通过修改TTL值,使报文TTL值大于1。

R2和R3上使用命令ebgp-max-hop 2,配置TTL值为2

[R2-bgp]peer 10.0.3.3 ebgp-max-hop 2

[R3-bgp]peer 10.0.2.2 ebgp-max-hop 2

R3查看BGP邻居关系

当前的邻居状态为Established,表示EBGP邻居关系建立成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/277641.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLiteC/C++接口详细介绍之sqlite3类(十三)

返回目录:SQLite—免费开源数据库系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(十二) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(十四)(未发表) 40.sqlite3…

【算法】一类支持向量机OC-SVM(1)

【算法】一类支持向量机OC-SVM 前言一类支持向量机OC-SVM 概念介绍示例编写数据集创建实现一类支持向量机OC-SVM完整的示例输出 前言 由于之前毕设期间主要的工具就是支持向量机,从基础的回归和分类到后来的优化,在接触到支持向量机还有一类支持向量机的…

Redis Desktop Manager:一站式Redis数据库管理与优化

Redis Desktop Manager是一款功能强大的Redis桌面管理工具,也被称作Redis可视化工具。以下是其主要的功能特色: 连接管理:Redis Desktop Manager支持连接多个Redis服务器,用户可以在同一界面下管理多个数据库,大大提高…

通用的springboot web jar包执行脚本,释放端口并执行jar包

1、通用的springboot web jar包执行脚本,释放端口并执行jar包: #!/bin/bash set -eDATE$(date %Y%m%d%H%M) # 基础路径 BASE_PATH/data/yitu-projects/yitu-xzhq/sftp # 服务名称。同时约定部署服务的 jar 包名字也为它。 SERVER_NAMEyitu-server # 环境…

数据仓库数据分层详解

数据仓库中的数据分层是一种重要的数据组织方式,其目的是为了在管理数据时能够对数据有一个更加清晰的掌控。以下是数据仓库中的数据分层详解: 原始数据层(Raw Data Layer):这是数仓中最底层的层级,用于存…

计算机二级Python题目13

目录 1. 基本题 1.1 基本题1 1.2 基本题2 1.3 基本题3 2. turtle画图 3. 大题 3.1 大题1 3.2 大题2 1. 基本题 1.1 基本题1 lseval(input()) s"" for item in ls:if type(item)type("香山"):s item print(s) 1.2 基本题2 import random random.se…

android MMKV数据持久化缓存集合

前言 最近在使用mmkv缓存的时候 发现没有集合缓存 非常不方便 自己写一个方法 MMKV public class MmkvUtils {private MmkvUtils() {throw new UnsupportedOperationException("u cant instantiate me...");}public static void init() {MMKV.initialize(LeoUtils…

RTP 控制协议 (RTCP) 反馈用于拥塞控制

摘要 有效的 RTP 拥塞控制算法,需要比标准 RTP 控制协议(RTCP)发送方报告(SR)和接收方报告(RR)数据包提供的关于数据包丢失、定时和显式拥塞通知 (ECN) 标记的更细粒度的反馈。 本文档描述了 RTCP 反馈消息,旨在使用 RTP 对交互式实时流量启用拥塞控制…

【安全类书籍-3】XSS跨站脚剖析与防御

目录 内容简介 作用 下载地址 内容简介 这本书涵盖以下几点: XSS攻击原理:解释XSS是如何利用Web应用未能有效过滤用户输入的缺陷,将恶意脚本注入到网页中,当其他用户访问时被执行,实现攻击者的目的,例如窃取用户会话凭证、实施钓鱼攻击等。 XSS分类:分为存储型XSS(…

【热门话题】前端框架发展史

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 前端开发的历史演变引言第一章:起源与基础建设 - HTML与CSS时代1.1 …

蓝桥杯刷题(九)

1.三国游戏 代码 #输入数据 nint(input()) Xlilist(map(int,input().split())) Ylilist(map(int,input().split())) Zlilist(map(int,input().split())) #分别计算X-Y-Z/Y-Z-X/Z-X-Y并排序 newXli sorted([Xli[i] - Yli[i] - Zli[i] for i in range(n)],reverseTrue) newYli …

C#控制台贪吃蛇

Console.Write("");// 第一次生成食物位置 // 随机生成一个食物的位置 // 食物生成完成后判断食物生成的位置与现在的蛇的身体或者障碍物有冲突 // 食物的位置与蛇的身体或者障碍物冲突了,那么一直重新生成食物,直到生成不冲突…

Android 系统的启动过程

Android 系统的启动流程: RomBoot(只读存储器引导程序):这是设备上电时运行的初始软件。RomBoot执行基本的硬件初始化,确保硬件处于可以运行后续启动阶段的状态。这一阶段非常重要,因为它为整个启动过程奠定…

【JAVA】JAVA方法的学习和创造

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不…

软考高级:软件工程单元测试(驱动模块、被测模块、桩模块)概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

手撕算法-最长公共子序列(二)

最长公共子序列(二) 分析:典型的动态规划,直接看代码了。 代码: import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** longest common sub…

【Python】新手入门学习:详细介绍接口分隔原则(ISP)及其作用、代码示例

【Python】新手入门学习:详细介绍接口分隔原则(ISP)及其作用、代码示例 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、Py…

【SpringCloud微服务实战07】Sentinel 服务保护

Sentinel 是阿里巴巴开源的一款微服务流量控制组件。主要作用: 流量控制:避免因瞬间高并发流量而导致服务故障流。超时处理、线程隔离、降级熔断:避免因服务故障引起的雪崩问题。一、Sentinel 安装 1、安装Sentinel控制台,下载jar包并启动:Releases alibaba/Sentinel G…

Day38:安全开发-JavaEE应用SpringBoot框架MyBatis注入Thymeleaf模版注入

目录 SpringBoot-Web应用-路由响应 SpringBoot-数据库应用-Mybatis SpringBoot-模版引擎-Thymeleaf 思维导图 Java知识点 功能:数据库操作,文件操作,序列化数据,身份验证,框架开发,第三方库使用等. 框架…

SpringMVC基础之工作流程

文章目录 SpringMVC 的工作流程1. 总图2. DispatcherServlet3. 必需的配置4. 加载配置文件的两个时机5. 定义控制器6. 创建 JSP 视图 SpringMVC 的工作流程 1. 总图 如上图,Spring MVC 程序的完整执行流程如下: 用户通过浏览器发送请求,请求…