有条件的打破IBGP水平分割----反射规则和联邦+实验举例

背景:在一个AS中的设备运行了BGP协议,那么正常应该都连接了其他的AS,存在EBGP邻居关系;又由于IBGP的水平分割规则,导致从外部学习到的路由传递给本地AS时,需要和本地AS中运行BGP协议都要建立IBGP邻居关系,就会导致建立数量成指数上升,配置起来很麻烦

所谓有条件的打破,是指在保障无环前提下消除IBGP水平分割机制;AS-BY-AS

1.路由反射器

角色:RR反射器 客户端 非客户端

无邻居; 由RR作为中心点与多个客户端、非客户端构成一个簇(组);在一个簇内存在一台RR和至少一台客户端;也可以一台RR和多个客户端、多个非客户端;或者一个RR与多个客户端,没有非客户端;

反射规则:不优路由不能被传递,自然也不能被反射;

1、 RR从一个EBGP邻居处学习到的路由,可以传输给客户端、非客户端,以及本地的其他EBGP邻居;

2、 RR从一个客户端学习到的路由,可以传递给本地其他的客户端、非客户端、其他的EBGP邻居;

3、 RR从一个非客户端学习到的路由,可以传递给本地的其他客户端、EBGP邻居;不能传递给其他的非客户端;(非非不传!!!)

[r3-bgp]peer 2.2.2.2 reflect-client 邻居2.2.2.2成为本地的客户端,同时本地成为RR

2.联邦

将一个AS,逻辑的分为多个小AS;对外依然遵循大AS号传递规则;

但小AS间为联邦内的EBGP邻居关系,可以像EBGP关系一样传递路由,但默认不对属性进行修改;

1) 所有操作基于小AS号进行;

2) AS内所有设备需要定义自己所在的大AS号

3) 小AS间的BGP设备需要告知对端的小AS号

[r3]bgp 64512

[r3-bgp]router-id 3.3.3.3

[r3-bgp]confederation id 2 申明本地的大AS号

[r3-bgp]confederation peer-as 64513 告知本地直连的其他小AS号,若没有直连到其他小

AS不用配置

[r3-bgp]peer 2.2.2.2 as-number 64512

[r3-bgp]peer 2.2.2.2 connect-interface LoopBack 0

[r3-bgp]peer 4.4.4.4 as-number 64513

[r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0

[r3-bgp]peer 4.4.4.4 ebgp-max-hop

相关实验

基本配置

如图:r1在AS1区域,R2-R7在AS2区域,R8在AS3区域

R2-R7在一个AS2区域,先通过ospf宣告,然后就搭BGP(搭地址这些在这里就不用多说了)

R1和R2 EBGP连接,R7和R8通过EBGP 连接,用的是实际接口地址

联邦

R2,R3,R4联邦,在同一个小号AS为64512

R2上:

r2]bgp 64512  
[r2-bgp]router-id 2.2.2.2 
[r2-bgp]confederation id 2     申明本地的大AS号为2
[r2-bgp]confederation  peer-as 64513  告知本地直连的其他小AS号,若没有直连到其他小

AS不用配置 ,R5和R2直连,R5的小号是64513,要宣告一下R5的小AS

[r2-bgp]peer 12.1.1.1 as-number 1  
[r2-bgp]peer 172.16.1.3 as-number 64512    和R3的环回建,R3的小号也是64512
[r2-bgp]peer 172.16.1.3 connect-interface LoopBack 0  源地址是环回接口

[r2-bgp]peer 172.16.1.5 as-number 64513   宣告一下R5的小AS
[r2-bgp]peer 172.16.1.5 connect-interface LoopBack 0 和R5的环回接口建
[r2-bgp]peer 172.16.1.5 ebgp-max-hop 2 环回建的,要改下一跳

为什么要改ebgp-max-hop?

通常情况下,EBGP对等体之间必须具有直连的物理链路,如果不满足这一要求,则必须使用 peer ebgp-max-hop 命令允许它们之间经过多跳建立TCP连接。 BGP使用Loopback口建立EBGP邻居时,必须配置命令 peer ebgp-max-hop (其中 hop-count ≥2),否则邻居无法建立

R3上

[r3]bgp 64512
[r3-bgp]router-id 3.3.3.3
[r3-bgp]confederation  id 2 申明本地的大AS号为2
[r3-bgp]peer 172.16.1.2 as-number 64512           告知R2的小AS号
[r3-bgp]peer 172.16.1.2 connect-interface  LoopBack 0   和R2的环回接口建
[r3-bgp]peer 172.16.1.4 as-number 64512      告知R3的小AS号
[r3-bgp]peer 172.16.1.4 connect-interface LoopBack 0  和R3的环回接口建

R4上

[r4]bgp 64512
[r4-bgp]router-id 4.4.4.4
[r4-bgp]confederation id 2
[r4-bgp]confederation peer-as  64513   R7在AS 64513,要宣告一下64513
[r4-bgp]peer 172.16.1.3 as-number 64512 告知R3的小AS号
[r4-bgp]peer 172.16.1.3 connect-interface  LoopBack 0 
[r4-bgp]peer 172.16.1.7 as-number 64513  告知R7的小AS号
[r4-bgp]peer 172.16.1.7 connect-interface  LoopBack 0
[r4-bgp]peer 172.16.1.7 ebgp-max-hop 2 在不同的as,要改下一跳

同理,R5,R6,R7联邦,在同一个小号AS为64513,命令差不多,就不写出来了

修改下一跳操作

要想 R1的路由传给as2内部,还需要再AS边界如R2和R7上修改下一跳为本地

[r2]bgp 64512
[r2-bgp]peer 172.16.1.3 next-hop-local
[r2-bgp]peer 172.16.1.5 next-hop-local

[r7]bgp 64513
[r7-bgp]peer 172.16.1.4 next-hop-local
[r7-bgp]peer 172.16.1.6 next-hop-local

这样,R2可以传给R3,但R4还是学习不到,因为R4和R3在同一个as内,由于水平分割,R3不能发给R4,所以在这里让R3作为R4的路由发射器,RR,把R3学习到的传给R4

命令:

[r3]bgp 64512
[r3-bgp]peer 172.16.1.4 reflect-client 

同理;R6也要做为RR

[r6]bgp 64513 
[r6-bgp]peer 172.16.1.7 reflect-client 

在R1和R8上宣告一下环回,as2内都能学习到

BGP汇总

方法一:NULL空接口防环

宣告R2-R7

[r2]ip route-static 172.16.0.0 21 NULL  0  空接口防环
[r2]bgp 64512
[r2-bgp]network 172.16.0.0 21 全部宣告

此时,R1和R8都能学习到AS2内部的路由

但是存在不好的地方,空接口写在R2上,如果R8访问一个AS内没有的地址如172.16.0.8(在172.16.0.0范围),会先去R7上查,有没有这个地址,R7一查路由表,发现R2有一个172.16.0.0的路由,R7就会把这个地址发给R2, 而不是丢弃,R2就会成为一个黑洞。

所以R7上也要汇总(这里记住,要重分布,所有边界都重分布,要汇总,所有边界都汇总)

方法二:在R7换一种明细路由配置

[r7]bgp 64513

[r7-bgp]network 172.16.2.0 24
[r7-bgp]network 172.16.3.0 24
[r7-bgp]network 172.16.4.0 24
[r7-bgp]network 172.16.5.0 24
[r7-bgp]network 172.16.6.0 24
[r7-bgp]network 172.16.7.0 24

[r7]bgp 64513  
[r7-bgp]aggregate 172.16.0.0 21 detail-suppressed  仅传递聚合条目,所有明细路由被抑制,同时自动产生空接口防环路由

s>    表示被抑制了,转发出去的还是172.16.0.0 这条路由

内容有点长,希望对你有所帮助

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ 一些编程问题解决 (C++ some programming error solutions)

电脑配置:window10, 64位操作系统,基于x64的处理器,Microsoft Visual Studio Community 2019 Version 16.4.5 问题1:Unhandled exception at 0x00007FFDB39AA839 in TesseractLACadd1.exe: Microsoft C exception: boost::filesy…

移动端双验证码登录实现

说明:本文介绍如何用图形验证码短信验证码实现移动端登录思路; 分析 通过手机号图形验证码手机验证码实现登录的时序图如下: 说明: (1)用户进入登录界面,出现图形验证码,可点击图形…

外贸人寻找客户的6大锦囊 | 进出口的贸易数据服务 | 箱讯科技

一信息特征法---培养一双善于甄别的眼 1、客户的询盘,每个客户在写询盘时用的语言是不一样的,这就构成了客户语言的特征。有的朋友可能发现有的客户英语差的太狠,写出来的询盘很简单很搞笑。如果你一笑而过,那么就太可惜了。这个…

活动的生命周期

返回栈 Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack )。系统总是会显示处于栈顶的活动给用户 活动状态 运行状态当一个活动位于返回栈的栈顶时,这时活动就处于运行状态…

音乐小程序|基于微信开发音乐小程序的系统设计与实现(源码+数据库+文档)

音乐小程序目录 基于微信开发音乐小程序的系统 一、前言 二、系统设计 三、系统功能设计 小程序端: 后台 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师…

广西建筑模板批发供应,工厂直销

随着广西地区基础设施建设的不断加速,建筑模板作为工程施工的重要辅材,其需求也在持续攀升。在众多建筑模板生产企业中,贵港市能强优品木业有限公司以其25年的丰富生产经验和卓越的产品品质,脱颖而出,成为了广西知名的建筑模板供应商。 能强优品木业公司专注于建筑模板的生产与…

mac IDEA激活 亲测有效

1、官网下载mac版本IDEA并安装 2、打开激活页面 3、下载脚本文件 链接: https://pan.baidu.com/s/1I2BqdfxSJv1A96422rflnA?pwdm494 提取码: m494 4、命令行到该界面,执行 sudo bash idea.sh 可能出现的问题: 查看sh文件,targetFilePath…

西瓜书学习——第一、二章笔记

[] 什么是机器学习? 研究关于“学习算法”(一类能从数据中学习出其背后潜在规律的算法)的一门学科。 PS:深度学习指的是神经网络那一类学习算法,因此是机器学习的子集。 假设空间和版本空间 举个栗子:假设现已收集到某地区近几年的房价和学校数量数据&#xf…

[Java EE] 多线程(二): 线程的创建与常用方法(下)

2.3 启动一个线程–>start() 之前我们已经看到了如何通过重写run()方法来创建一个线程对象,但是线程对象被创建出来并不意味着线程就开始运行了. 覆写run方法是给线程提供了所要做的事情的指令清单创建线程对象就是把干活的人叫了过来.而调用start方法,就是喊一声"行…

国产主流数据库存储类型简析

国产数据库在技术架构上主要分为集中式、基于中间件分布式和原生分布式架构,衍生出集中式架构和分布式架构。那么在这些部署架构中,从数据分布的视角来看,在数据库中数据分布的形态是怎样的。本文将简要分析OceanBase、PolarDB、OpenGauss、G…

【Spring】-编程式事务和声明式事务

spring中控制事务的方式有两种:编程式事务和声明式事务,今天我以两种事务出发,对spring中实现事务的EnableTransactionManagement和Transaction两个注解的底层原理进行讨论。 一、编程式事务 什么是编程式事务? 硬编码的方式实现…

牛客NC197 跳跃游戏(一)【中等 动态规划 Java、Go、PHP】

题目 题目链接: https://www.nowcoder.com/practice/23407eccb76447038d7c0f568370c1bd 思路 答案说的merge区间就是每个A[i]的地方能跳到的最远坐标是A[i] [i], 有一个maxReach,遍历一遍A[i], 不断刷新MaxReach, 如果某个i 位置比maxReac…

MT3023 歌词中找单词

1.暴力 10/12 #include <bits/stdc.h> using namespace std; int n; string a[10005]; int main() {cin >> n;for (int i 0; i < n; i)cin >> a[i];string ll;cin >> ll;for (int i 0; i < n; i){string u a[i];int num 0;int j 0;for (in…

ssm056基于Java语言校园快递代取系统的设计与实现+jsp

校园快递代取系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本校园快递代取系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短…

【在线OJ】雪花算法代码实现

雪花算法 用一个64比特位的long类型来作为生成id的类型&#xff0c;首先我们要了解哪些位置对应的意义&#xff0c;其中在本项目中10位的工作机器id被细分位5bit的机房id与5bit的机器id。雪花算法支持每毫秒生成2的12次方-1个id。 用一个64比特位的long类型来作为生成id的类型…

unity制作拼接地图

前段时间有个朋友问我想要制作一款地图编辑器&#xff0c;最开始我还想着在一个平面用节点切割制作地图编辑器这倒是也行&#xff0c;但不太好控制每一个点&#xff0c;如果未来项目大了&#xff0c;更加不好维护。 偶然间翻到一篇文章&#xff1a;unity地图边缘检测 或许我们…

upload-labs第七八关

第七关 $is_upload false; $msg null; if (isset($_POST[submit])) {if (file_exists(UPLOAD_PATH)) {$deny_ext array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml"…

SaaS智慧工地云平台源码 支持二次开发、支持源码交付

目录 智慧工地云平台功能模块 一、劳务管理系统 二、视频监控系统 三、危大工程管理 四、环境监测系统 五、材料管理系统 六、进度管理系统 通过人员管理、车辆管理、视频监控、施工质量、设备管理、环境监测、能耗监测七大维度提供面向工程管理人员的现场综合指挥管理平…

51单片机工程模板的建立(基于STC15系列库)

一、开启前准备 1.STC15官方库文件 1.1 stc15-software-lib-v1.0.rar&#xff1b;下载地址&#xff1a;STC15系列库&#xff08;带使用手册&#xff09;资源-CSDN文库 2.Keil4_C51软件&#xff0c;或其它版本&#xff1b; 二、创建工程模板 1.建立文件分类 listing&#xf…

PyTorch深度学习之旅:从入门到精通的十个关键步骤

在人工智能的浪潮中&#xff0c;深度学习框架扮演着至关重要的角色。PyTorch作为其中的佼佼者&#xff0c;以其简洁、直观和灵活的特性&#xff0c;吸引了众多开发者与研究者。本文将引导您逐步掌握PyTorch&#xff0c;从基础概念到高级应用&#xff0c;让您在深度学习的道路上…