HCIP—BGP路由聚合

        在大型网络中,路由条目通常多达成千上万条,甚至几十万条,这给路由设备带来的挑战是:如何存储并有效管理如此众多的路由信息?
        BGP是一种无类路由协议,支持CIDR、VLSM和路由聚合。路由聚合技术的使用,可以在一定程度上缩减路由条目的数量,同时还可以减轻路由震荡导致的网络不稳定的问题。BGP的路由聚合有两种方式,一种是自动路由聚合,一种是手动路由聚合。
        自动路由聚合是在自然网络边界路由器上自动执行的。在默认情况下,BGP的自动路由聚合功能是关闭的,并且BGP不会自动聚合BGP邻居发送的路由以及使用network命令通告的路由。使用BGP自动路由聚合时,需要进行严谨的IP地址规划。在一个地址规划杂乱无序的网络中,自动路由聚合可能会产生许多意想不到的问题。例如,在采用不连续子网规划的网络中,自动路由聚合可能会导致报文转发出现选路问题,或者是产生路由环路

        BGP手动路由聚合时,可以手动控制聚合路由的掩码长度,修改聚合路由属性等。手动路由聚合又有两种方法,一种是配置一条静态路由,然后用network命令进行通告;另一种是使用aggregate命令进行聚合。

        BGP手动路由聚合时采用第一种方法时,无法对通告的静态路由加以控制,并且明细路由仍然会被通告出去。如要抑制明确路由,则需使用Route-Policy来对明细路由进行过滤,实现起来配置命令较多,同时还会丢失明细路由的某些BGP属性。

        则采用第二种方法时,缺省情况下明细路由和聚合路由也都会被发送出去,但是可以置命令较多,可以的通过关键字对全部或部分明细路由进行抑制,另外还可以对聚合路由的属性进行修改。和第一种方法相比,第二种方法对路由聚合的控制以及对路径选择的控制会更加灵活。

一:BGP自动路由聚会合

        实验拓扑所示,本实验模拟了3个运营商网络,R1属于ISP-A,R2属于ISP-B,R3属于ISP-C。三台路由器都使用直连的物理接口IP地址来建立EBGP邻居关系,R2和R3的Loopback1接口用来模拟各自ISP中的一个网段。R1、R2、R3上将开启自动路由聚合功能,R3的Loopback1接口所在网段将使用network命令通告给BGP进程,R2的Loopback1接口所在网段将被引入到BGP进程中,最终实现R2的Loopback1与R3的Loopback1之间可以互相通信。

1:对接口进行基础的IP地址配置,保证直连网段的PING通

2:配置BGP路由协议

配置BGP邻居关系,每台路由器均使用Lookback 0接口的IP地址作为自己的Router-ID。

[R1]bgp 100
[R1-bgp]router-id 10.0.1.1 
[R1-bgp]peer 10.0.12.2 as-number 200
[R1-bgp]peer 10.0.13.3 as-number 300

 

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

[R3]bgp 300
[R3-bgp]router-id 10.0.3.3 
[R3-bgp]peer 10.0.13.1 as-number 100

R1查看BGP邻居关系

邻居状态都为Established,表示邻居关系建立成功

3:开启BGP自动路由聚会功能

缺省情况下,华为的BGP自动路由聚合功能是关闭的,开启BGP自动路由聚合功能。

[R1]bgp 100
[R1-bgp]ipv4-family unicast   
[R1-bgp-af-ipv4]summary automatic 

[R2]bgp 200
[R2-bgp]ipv4-family unicast 
[R2-bgp-af-ipv4]summary automatic 

[R3]bgp 300 
[R3-bgp]ipv4-family unicast 
[R3-bgp-af-ipv4]summary automatic 

当路由器的BGP路由聚合功能打开时,系统会出现如下提醒

表述:BGP自动路由聚合只适用于通过路由引入方式引入的路由。

4:通告路由进入BGP中

使用ntework命令,将R3的Loopback 1接口所在网段通告进入BGP进程

[R3]bgp 300
[R3-bgp]ipv4-family unicast 
[R3-bgp-af-ipv4]network 33.33.33.0 24

在R1,R2,R3上使用dis bgp routing-table 命令,查看进入BGP进程。

R1,R2,R3的路由表中,33.33.33.0/24路由没有被聚合。使用Network命令宣告时R3 33.33.33.0/24通告给R1,R1再宣告给R2,整个过程中没有路由被聚合。说明自然网络边界处,BGP不会自动聚合。

5:引入外部路由到BGP的路由表中

R2使用命令import-route引入直连路由中

[R2]bgp 200  
[R2-bgp]ipv4-family unicast 
[R2-bgp-af-ipv4]import-route direct 

配置完成后,再次查R1,R2,R3的BGP路由表信息

可以看出,在R1和R3的BGP路由表中,都出现22.0.0.0,且没有显示掩码信息,这正是一个聚合成功后的一个A类自然网段。 

        由于BGP路由自动聚合对IP地地址规划的要求比较苛刻,在BGP网络中,IP地址的规划难以做的整齐有序,在实际项目中很少使用BGP指自动聚合功能。只需了解BGP自动聚合,重点掌握BGP手动聚合。

二:BGP手工路由聚合

        BGP的路由聚合有两种方式:一种是自动路由聚合,一种是手动路由聚合。相对于自动路由聚合来讲,手动路由聚合具有更高的灵活性和可控性。BGP手动路由聚合时,可以手动控制聚合路由的掩码长度,修改聚合路由属性等。
        手动路由聚合又有两种方法,一种是配置一条静态路由,然后用network命令进行通告,另一种是使用aggregate命令进行聚合。

       实验拓扑如图所示: R1属于AS100,R2属于AS200,R3和R4属于AS300,R5和R6属于AS400,每台路由器都使用自己的Loopbsack0接口IP地址作为Router-ID,并且都使用直连物理接口建立邻居关系,整网运行BGP协议。在5和R6上使用network命令通告Loopback1至Loopback7接口所在网络到BGP进程中,在R5上用aggregate命令聚合这些Loopback接口所在网络的路由,在R6上配置一条静态路由,并且使用network命令通告这条静态路由来实现路由聚合。实验过程中,在R5上还存在一些具体的路由控制需求,这些需求将采用aggregate命令结合一些关键字来实现。

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

2:配置BGP路由协议

        每台路由器都使用自己的Loopback 0接口IP地址作为Router-ID,并且都使用直连物理接口进建立BGP邻居关系。

[R1]bgp 100
[R1-bgp]router-id 10.0.1.1  
[R1-bgp]peer 10.0.12.2 as-number 200
[R1-bgp]peer 10.0.13.3 as-number 300

[R2]bgp 200
[R2-bgp]router-id 10.0.2.2
[R2-bgp]peer 10.0.12.1 as-number 100
[R2-bgp]peer 10.0.24.4 as-number 300

[R3]bgp 300
[R3-bgp]router-id 10.0.3.3
[R3-bgp]peer 10.0.13.1 as-number 100
[R3-bgp]peer 10.0.34.4 as-number 300
[R3-bgp]peer 10.0.35.5 as-number 400

[R4]bgp 300
[R4-bgp]router-id 10.0.4.4
[R4-bgp]peer 10.0.24.2 as-number 200
[R4-bgp]peer 10.0.34.3 as-number 300
[R4-bgp]peer 10.0.46.6 as-number 400

[R5]bgp 400
[R5-bgp]router-id 10.0.5.5   
[R5-bgp]peer 10.0.35.3 as-number
[R5-bgp]peer 10.0.35.3 as-number 300
[R5-bgp]peer 10.0.56.6 as-number 400

将R5的Loopback 0至Loopback 7接口所在的网络使用network命令进行宣告。

[R5-bgp]network 172.16.1.0 255.255.255.0
[R5-bgp]network 172.16.2.0 255.255.255.0
[R5-bgp]network 172.16.3.0 255.255.255.0
[R5-bgp]network 172.16.4.0 255.255.255.0
[R5-bgp]network 172.16.5.0 255.255.255.0
[R5-bgp]network 172.16.6.0 255.255.255.0
[R5-bgp]network 172.16.7.0 255.255.255.0

[R6]bgp 400
[R6-bgp]router-id 10.0.6.6
[R6-bgp]peer 10.0.56.5 as-number 400
[R6-bgp]peer 10.0.46.4 as-number 300

将R6的Loopback 0至Loopback 7接口所在的网络使用network命令进行宣告。

[R6-bgp]network 192.168.1.0 255.255.255.0
[R6-bgp]network 192.168.2.0 255.255.255.0
[R6-bgp]network 192.168.3.0 255.255.255.0
[R6-bgp]network 192.168.4.0 255.255.255.0
[R6-bgp]network 192.168.5.0 255.255.255.0
[R6-bgp]network 192.168.6.0 255.255.255.0
[R6-bgp]network 192.168.7.0 255.255.255.0

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

R1已经收到了BGP路由协议的明确路由。R6使用PING命令测试Loopback 1和R5的Loopback 1之间的连通性

3:配置BGP路由聚合

R5和R6的loopback 1至loopback 7接口所在的网络已经被宣告到BGP进程中,且每台路由器都可以查看到R5和R6的loopback 1至loopback 7接口所在的网络的路由,现在在R5和R6的路由上配置路由聚合,将明确路由情况隐藏到AS号内部。

R6上配置静态路由,然后使用network命令通告出去。

[R6]ip route-static 192.168.0.0 21 null 0
[R6]bgp 400
[R6-bgp]network 192.168.0.0 21

静态路由将指向null 0的目的防止网络中产生环路

R5使用aggregate命令进行宣告

[R5]bgp 400
[R5-bgp]aggregate 172.16.0.0 21

R5使用aggregate命令进行聚合,要求BGP路由表中信息至少存在一条属于聚合后的路由子网路由。否则无法聚合。

R1使用命令查看BGP路由信息

可以看出R1的BGP路由表中已经包含了聚合后的路由。

4:使用No-advertise关键字控制路由聚合

在R5和R6上使用前缀列表和Router-Policy给这些路由添加No-Advertise团体属性,并通告R3,R4

[R5]ip ip-prefix no-adver permit 172.16.1.0 24
[R5]ip ip-prefix no-adver permit 172.16.2.0 24
[R5]ip ip-prefix no-adver permit 172.16.3.0 24
[R5]ip ip-prefix no-adver permit 172.16.4.0 24
[R5]ip ip-prefix no-adver permit 172.16.5.0 24
[R5]ip ip-prefix no-adver permit 172.16.6.0 24
[R5]ip ip-prefix no-adver permit 172.16.7.0 24
[R5]ip ip-prefix no-adver permit 192.168.1.0 24
[R5]ip ip-prefix no-adver permit 192.168.2.0 24
[R5]ip ip-prefix no-adver permit 192.168.3.0 24
[R5]ip ip-prefix no-adver permit 192.168.4.0 24
[R5]ip ip-prefix no-adver permit 192.168.5.0 24
[R5]ip ip-prefix no-adver permit 192.168.6.0 24
[R5]ip ip-prefix no-adver permit 192.168.7.0 24

[R5]route-policy no-adver permit node 10
[R5-route-policy]if-match ip-prefix no-adver  
[R5-route-policy]apply community no-advertise
[R5-route-policy]route-policy no-adver permit node 20

[R5]bgp 400
[R5-bgp]peer 10.0.35.3 route-policy no-adver export 
[R5-bgp]peer 10.0.35.3 advertise-community
 

[R6]ip ip-prefix no-adver permit 192.168.1.0 24
[R6]ip ip-prefix no-adver permit 192.168.2.0 24
[R6]ip ip-prefix no-adver permit 192.168.3.0 24
[R6]ip ip-prefix no-adver permit 192.168.4.0 24
[R6]ip ip-prefix no-adver permit 192.168.5.0 24
[R6]ip ip-prefix no-adver permit 192.168.6.0 24
[R6]ip ip-prefix no-adver permit 192.168.7.0 24
[R6]ip ip-prefix no-adver permit 172.16.1.0 24
[R6]ip ip-prefix no-adver permit 172.16.2.0 24
[R6]ip ip-prefix no-adver permit 172.16.3.0 24
[R6]ip ip-prefix no-adver permit 172.16.4.0 24
[R6]ip ip-prefix no-adver permit 172.16.5.0 24
[R6]ip ip-prefix no-adver permit 172.16.6.0 24
[R6]ip ip-prefix no-adver permit 172.16.7.0 24

[R6]route-policy no-adver permit node 10
[R6-route-policy]if-match ip-prefix no-adver
[R6-route-policy]apply community no-advertise
[R6-route-policy]route-policy no-adver permit node 20

[R6]bgp 400       
[R6-bgp]peer 10.0.46.4 route-policy no-adver export     
[R6-bgp]peer 10.0.46.4 advertise-community
 

配置完成后在R1和R3查看BGP路由表

5:使用Detail-Suppressed关键字控制路由聚合

通过aggregate命令结合Detail-Suppressed实现路由抑制,只将聚合后的路由发送出去

[R5]bgp 400
[R5-bgp]aggregate 172.16.0.0 255.255.248.0 detail-suppressed

R1和R2查看BGP路由表

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

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

相关文章

[Linux开发工具]——gcc/g++的使用

Linux编译器——gcc/g的使用 一、快速认识gcc/g二、程序的翻译过程2.1 预处理(.i文件)2.2 编译(.s文件)2.3 汇编(.o文件)2.4 链接(生成可执行文件或库文件) 三、认识函数库3.1 静态库…

微调alpaca-lora遇到的一些问题

1、环境简介 环境: 系统:Ubuntu torch:2.2.1 python:3.10 gpu:V100 16g peft:0.9.0 使用PEFT中的lora方式微调llama-2-7b-hf,项目地址:alpaca-lora 2、混合精度训练Tensor相互计算会…

Linux hdparm命令教程:优化硬盘性能和读写速度(附实例详解和注意事项)

Linux hdparm命令介绍 hdparm 是一个用于控制和配置硬盘驱动器的命令行工具。它允许您查看和修改硬盘的参数,包括缓存设置、高级电源管理、硬盘性能等。通过 hdparm,您可以优化硬盘的读写速度和性能。 Linux hdparm命令适用的Linux版本 hdparm 在大多…

springboot/ssm小区家政服务预约平台统Java家政在线预约管理系统web

springboot/ssm小区家政服务预约平台统Java家政在线预约管理系统web 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&#…

【RH134问答题】第十三章 运行容器(上)

系列文章 第一章 提高命令行生产效率 第二章 计划将来的任务 第三章 调优系统性能 第四章 使用ACL控制对文件的访问 第五章 管理SELinux安全性 第六章 管理基本存储 第七章 管理逻辑卷 第八章 实施高级存储功能 第九章 访问网络附加存储 第十章 控制启动过程 第十一章 管理网络…

Redis Lua脚本:赋予Redis更强大的逻辑与功能

Redis 脚本是一种用 Lua 编写的脚本,可以在 Redis 服务器端执行。脚本能够原子地执行多个 Redis 命令,并且通过 EVAL 和 EVALSHA 命令进行调用。Redis 脚本通常用于实现复杂的逻辑操作,例如事务、原子性操作和复杂的数据处理。 Redis脚本的详…

[json.exception.type_error.316] invalid UTF-8 byte报错

[json.exception.type_error.316] invalid UTF-8 byte at index 1: 解决方法重新编译程序即可。

六、大模型-Prompt-API介绍

GPT-3.5 API 提供了一个名为 openai.ChatCompletion.create() 的端点,您可以使用该端点来与 ChatGPT 进行交互。以下是 openai.ChatCompletion.create() 的详细 API 说明: 请求参数: messages:一个数组,包含对话中的消…

[接口生成] 1. 数据库生成

我们在做页面的时候, 一般都要和数据相适应,这个时候就需要去修改数据库, 至少需要数据库相关的人员配合, 改来改去的容易产生一些版本遗留问题。 就算是我一个人开发, 一会儿搞前端,一会儿搞后台&#xf…

Jupyter Notebook介绍、安装及使用教程

Jupyter Notebook介绍、安装及使用教程 一、什么是Jupyter Notebook?简介组成部分网页应用文档Jupyter Notebook的主要特点 二、安装Jupyter Notebook先试用,再决定安装安装前提使用Anaconda安装使用pip命令安装 三、运行Jupyter Notebook帮助启动默认端…

Python 解决大文件的写入但查看却生效不及时的问题

文章目录 1. 问题2. 原因3. 解决方法4. 补充 flush() 介绍4.1 语法4.2 说明4.3 示例4.4 使用场景 1. 问题 在写入大文件内容时,程序还没有结束,如下在运行: with open("xxx", "a") as f:... # 你的逻辑f.write("x…

macOS 通过 MacPorts 正确安装 MySQL 同时解决无法连接问题

如果你通过 sudo port install 命令正常安装了 MySQL,再通过 sudo port load 命令启动了 MySQL Server,此刻却发现使用 Navicat 之类的 GUI 软件无法连接,始终返回无法连接到 127.0.0.1 服务器。这是一个小坑,因为他默认使用了 So…

Linux创建软连接后,无法直接调用的原因和解决办法

我自己遇到的问题: 进入到主目录: cd 创建一个main软连接后: ln -s /home/user01/demo01.py main 执行: main 没反应。 试了下发现是调用方法的问题,因为main是主目录下的一个软链接,所以调用方式应该是&…

linux 串口通讯模板

RAW模式与非RAW模式 RAW 模式: 简单的来说,就是发送端发动的二进制码原封不动的被接收端接收。 若干年前使用Windows下的串口调试助手对单片机串口进行调试就是使用的 RAW 模式, 单片机发送的数据被原封不动的发送给 PC 端,PC 端…

零代码编程:用kimichat将srt字幕文件进行批量转换合并

文件夹里面有多个srt字幕文件,借助kimichat可以很方便的对其进行批量合并。 在kimichat中输入提示词: 你是一个Python编程专家,写一个Python脚本,完成一个处理整理文档内容的任务,具体步骤如下: 打开文件…

更新数据库表中的数据

目录 update 加上各种限制条件 update update 表名set 列名1xx,列名2xx 指定更新某列数据如果不添加where子句,则为全列更新 也可以在原有基础上更新: 注意,mysql语法里不支持,必须是列名列名数值 加上各种限制条件 比如加上order by子句,where子句,limit等 这些条件对于up…

【FLOOD FILL专题】【蓝桥杯备考训练】:扫雷、动态网格、走迷宫、画图、山峰和山谷【已更新完成】

目录 1、扫雷(Google Kickstart2014 Round C Problem A) 2、动态网格(Google Kickstart2015 Round D Problem A) 3、走迷宫(模板) 4、画图(第六次CCF计算机软件能力认证) 5、山…

政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(四)—— 过拟合和欠拟合

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 通过增加容量或提前停止来提高性能。 在深度学习中&#…

2024年奥莱利科技趋势报告解析

2024年O’Reilly技术趋势报告解读 概述 在快速发展的技术领域,跟上最新趋势对行业内的任何人来说都至关重要。2024年O’Reilly技术趋势报告在此方面提供了关键的指导,全面概述了最重要的技术进步和模式。该年度报告基于O’Reilly著名在线学习平台280万…

C#对于文件中的文件名判断问题

C#中对于文件名的判断问题,我们使用bool值进行值的传递,首先我们使用内置方法进行文件字符串匹配的bool值回传,我们打印出文件名以及相对应的bool,即可知道文件名是否真正生效 bool isHave fileName.Contains("Hello"…