BGP边界网关协议(Border Gateway Protocol)路由引入、路由反射器

一、路由引入背景

        BGP协议本身不发现路由,因此需要将其他协议路由(如IGP路由等)引入到BGP路由表中,从而将这些路由在AS之内和AS之间传播。

BGP协议支持通过以下两种方式引入路由:

  • Import方式:按协议类型将RIP、OSPF、IS-IS、静态路由和直连路由等协议的路由引入到BGP路由表中。

  • Network方式:将指定前缀和掩码的一条路由引入到BGP路由表中,该方式比Import更精确。

1、network引入

        1)主类引入(A\B\C段)该方式为聚合路由,为防止环路,需增加一条黑洞路由防环

AR1BGP as-numbernetwork ipv4-address [ mask | mask-length ] [ route-policy route-policy-name ]ip route-static 10.0.0.0 255.0.0.0 NULL 0

        2)无类引入(指定掩码),默认产生黑洞路由

AR1BGP as-numbernetwork ipv4-address [ mask | mask-length ] [ route-policy route-policy-name ]

2、import-route引入

        1)无类引入

AR1BGP as-numberimport-route { direct | isis process-id | ospf process-id | rip process-id | static } [ med med | route-policy route-policy-name ] *当引入RIP、OSPF、IS-IS等动态路由协议发现的路由时,需要指定协议进程号。

        2)主类引入

AR1BGP as-numberimport-route { direct | isis process-id | ospf process-id | rip process-id | static } [ med med | route-policy route-policy-name ] *summary automatic    自动聚合当引入RIP、OSPF、IS-IS等动态路由协议发现的路由时,需要指定协议进程号。

二、路由表项参数

[AR5]dis bgp routing-tableBGP Local router ID is 5.5.5.5Status codes: * - valid, > - best, d - damped,h - history,  i - internal, s - suppressed, S - StaleOrigin : i - IGP, e - EGP, ? - incompleteTotal Number of Routes: 7Network            NextHop        MED        LocPrf    PrefVal Path/Ogn*>i  10.1.1.0/24        10.1.123.1      0          100        0      1?* i                     10.1.1.1        0          100        0      1?*>i  10.1.111.0/24      10.1.123.1      0          100        0      1?* i                     10.1.1.1        0          100        0      1?*>i  10.1.123.0/24      10.1.1.1        0          100        0      1?*>   55.5.5.0/24        0.0.0.0         8                     0      ?*>   55.5.5.5/32        0.0.0.0         8                     0      ?

1、Status codes

        状态代码(标识BGP路由的状态)

        1)*(valid):下一跳可达,如不可达则没有*

        2)>(best):最优路径,下一跳可达的前提下,通过十二条选路原则比较产生,最优的放入路由表

        3)d(damped):路由衰减,路由惩罚,路由发生抖动会标识为d,多次抖动不会放入路由表,主要针对EBGP

        4)h(history):抖动记录,抖动一次就会被标记为h

        5)i(internal):IBGP的路由标识,从IBGP邻居来的路由标记为i

        6)s(suppressed):抑制,当产生聚合路由,明细被抑制时,产生该标识

        7)S(stale):陈旧,老化路由标识

2、Origin

        路由的起源代码

        1)i:network的方式引入进来的

        2)e:import-route egp

        3)?:incomplete, import-route 其他路由协议

        注:上图的55.5.5.0 的网段是通过import-route direct引入的

三、BGP  组网方式

1、全互联场景

        1)全互联场景下IBGP路由信息默认不改变下一跳

              去往AR1的路由信息通过IBGP的邻居关系学习到,此时下一跳不改变

              可以同通过配置使得学习到的路由修改下一跳

<AR5>dis bgp routing-table | inc 10.1.1.0BGP Local router ID is 5.5.5.5Status codes: * - valid, > - best, d - damped,h - history,  i - internal, s - suppressed, S - StaleOrigin : i - IGP, e - EGP, ? - incompleteTotal Number of Routes: 7Network            NextHop        MED        LocPrf    PrefVal Path/Ogn*>i  10.1.1.0/24        10.1.123.1      0          100        0      1?
<AR5>

        2)EBGP路由默认修改下一跳

              表项可知AR4与AR5之间建立EBGP的邻居关系,学习到的EBGP路由下一跳改变

<AR4>dis bgp routing-table | inc 10.1.1.0BGP Local router ID is 4.4.4.4Status codes: * - valid, > - best, d - damped,h - history,  i - internal, s - suppressed, S - StaleOrigin : i - IGP, e - EGP, ? - incompleteTotal Number of Routes: 4Network            NextHop        MED        LocPrf    PrefVal Path/Ogn*>   10.1.1.0/24        10.1.5.5                              0      235 1?
<AR4>

        3)优缺点

              优点:路由传递正常,转控平面正常

              缺点:资源消耗大,成本较高

2、部分互联场景(联盟)

注:图片为产品文档当参考图片,仅供联盟拓扑理解使用

        1)部分互联场景下,在AS内部的IBGP邻居关系会产生水平分割的现象,导致路由传递失败,业务中断,可使用联盟(Confederation),与路由反射器相比,BGP联盟更便于实现IGP扩展。

        2)配置

system-viewbgp as-numberconfederation id as-numberconfederation peer-as as-number &<1-32>peer xx.xx.xx.xx as-number xxxx配置属于联盟的子自治系统时使用的as-number在联盟内部有效。

为了提升安全性,推荐部署BGP安全性措施(参见“配置BGP认证”)。其中,以配置Keychain认证方式为例,详细配置方法请参见“举例:配置BGP使用Keychain认证”

3、部分互联场景(路由反射器)

        1)配置路由反射器时,必须具备反射器和客户端之间的IBGP邻居关系,该方式主要为打破IBGP之间的水平分割问题

        2)角色

                RR:route-reflector 路由反射器(服务器端)

                RR-C:client 路由反射器的客户端

                cluster:路由反射簇(列表)

                Non-Client:不是反射器也不是客户机的BGP设备被称为非客户机

        3)配置

bgp 235router-id 5.5.5.5peer 10.1.2.2 as-number 235peer 10.1.2.2 connect-interface LoopBack1
#ipv4-family unicastundo synchronizationimport-route direct route-policy loop55peer 10.1.2.2 enablepeer 10.1.2.2 reflect-clientpeer 10.1.4.4 enablepeer 10.1.234.3 enable
#
return

        4)表项

        根据表项可知,从2.2.2.2 来的路由通过RR(5.5.5.5)反射过来使得3.3.3.3学习到了,虽然此路由没有被优选

<AR3>dis bgp routing-table 10.1.1.1BGP routing table entry information of 10.1.1.0/24:From: 10.1.45.5 (5.5.5.5)Route Duration: 00h02m30sRelay IP Nexthop: 0.0.0.0Relay IP Out-Interface: GigabitEthernet0/0/0Original nexthop: 10.1.123.1Qos information : 0x0AS-path 1, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, not preferred for Cluster ListOriginator:  2.2.2.2Cluster list: 5.5.5.5Not advertised to any peer yet

        5)路由反射器的规则

                来自client的路由可以向客户端、EBGP邻居、非客户端进行传递

                来自EBGP邻居的路由信息可以向客户端、EBGP邻居、非客户端进行传递

                来自非客户端的的路由信息可以向客户端、EBGP邻居进行传递,但是不可以向非客户端传递路由

                配置RR指定客户端后,客户端的路由器设备并不清楚自己为客户端,只有RR设备知道

4、路由反射器防环

        因为路由反射器打破了IBGP之间的水平分割规则,可能产生环路。

        1)Originator_ID属性

                由路由的始发路由器产生,携带了本地AS内部路由发起者的Router ID

#
bgp 1router-id 1.1.1.1peer 10.1.3.3 as-number 235peer 10.1.3.3 ebgp-max-hop 255peer 10.1.3.3 connect-interface LoopBack1peer 10.1.123.2 as-number 235#ipv4-family unicastundo synchronizationimport-route direct route-policy loop111peer 10.1.3.3 enablepeer 10.1.123.2 enable
#<AR3>dis bgp routing-table 10.1.111.0BGP routing table entry information of 10.1.111.0/24:From: 10.1.45.5 (5.5.5.5)Route Duration: 00h19m14sRelay IP Nexthop: 0.0.0.0Relay IP Out-Interface: GigabitEthernet0/0/0Original nexthop: 10.1.123.1Qos information : 0x0AS-path 1, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, not preferred for Cluster ListOriginator:  2.2.2.2Cluster list: 5.5.5.5Not advertised to any peer yet<AR3>

        从路由表中可以看到,AR3从AR5那里学到了AR1通告的路由,而且还可以看到该路由的Originator和Cluster_ID属性。因为AR2和AR1之间为EBGP邻居关系,所以在AS235内默认2.2.2.2为路由始发路由器。

        当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起设备。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID。

        当其他BGP Speaker接收到这条路由的时候,将比较收到的Originator_ID和本地的Router ID,如果两个ID相同,BGP Speaker会忽略掉这条路由,不做处理。

        2)Cluster_List属性

        经过一个路由反射器反射的路由,会把路由反射器cluster-id记录下俩,形成cluster-list

        默认cluster-id= router-id

        但是可以修改成不是router-id

#
bgp 235ipv4-family unicastreflector cluster-id 55.5.5.5
#
<AR3>dis bgp routing-table 10.1.111.0BGP routing table entry information of 10.1.111.0/24:From: 10.1.45.5 (5.5.5.5)Route Duration: 00h00m47sRelay IP Nexthop: 0.0.0.0Relay IP Out-Interface: GigabitEthernet0/0/0Original nexthop: 10.1.123.1Qos information : 0x0AS-path 1, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, not preferred for Cluster ListOriginator:  2.2.2.2Cluster list: 55.5.5.5Not advertised to any peer yet<AR3>

        关于RR还有其他类似备份RR等等其他应用,路由引入也可以修改许多的属性,本文仅作基本的使用了解,后续文章会慢慢深入了解。

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

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

相关文章

使用FFmpeg和Python将短视频转换为GIF的使用指南

使用FFmpeg和Python将短视频转换为GIF的使用指南 在数字时代&#xff0c;GIF动图已成为表达情感和分享幽默的重要媒介。无论是社交媒体上的搞笑片段还是创意项目中的视觉效果&#xff0c;GIF都能迅速抓住观众的注意力。然而&#xff0c;很多人不知道如何将短视频转换为GIF。本…

正则表达式基础知识及grep、sed、awk常用命令

文章目录 前言一、正则表达式元字符和特性1. 字符匹配2. 量词3. 字符类4. 边界匹配5. 分词和捕获6. 特殊字符7. 位置锚定 二、grep常用参数1. -n额外输出行号2. -v 排除匹配的行3. -E 支持扩展正则匹配4. -e进行多规则匹配搜索5. -R 递归匹配目录中的文件内容6. -r递归地搜索目…

工作中redis常用的5种场景

在日常开发工作中&#xff0c;Redis作为一款高性能的内存数据库&#xff0c;凭借其强大的功能特性和卓越的性能表现&#xff0c;已经成为了许多项目中不可或缺的组件。本文将详细介绍Redis在实际工作中最常见的5种应用场景&#xff0c;并附上具体的代码实现。 1. 缓存热点数据…

LLM - 大模型 ScallingLaws 的迁移学习与混合训练(PLM) 教程(3)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145212097 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Scalin…

深入浅出 Go语言并发安全字典 sync.Map:原理、使用与优化

深入浅出 Go语言并发安全字典 sync.Map:原理、使用与优化 背景介绍 Go语言作为一种高效的并发编程语言,其标准库中提供了丰富的并发工具,如sync.WaitGroup、sync.Mutex等。然而,在实际开发中,我们经常需要在多个goroutine之间共享数据,这就涉及到并发安全的问题。传统的…

解决leetcode第3418题机器人可以获得的最大金币数

3418.机器人可以获得的最大金币数 难度&#xff1a;中等 问题描述&#xff1a; 给你一个mxn的网格。一个机器人从网格的左上角(0,0)出发&#xff0c;目标是到达网格的右下角(m-1,n-1)。在任意时刻&#xff0c;机器人只能向右或向下移动。 网格中的每个单元格包含一个值coin…

蓝桥杯 Python 组知识点容斥原理

容斥原理 这张图初中或者高中数学课应该画过 也就是通过这个简单的例子引出容斥原理的公式 这张图的面积&#xff1a;s1 s3 s7 - 2 * s2 - 2 * s4 - 2 * s6 3 * s5 通过此引导出容斥原理公式 那么下面来一起看看题目 题目描述 给定 n,m 请求出所有 n 位十进制整数中有多…

GitLab:添加SSH密钥之前,您不能通过SSH来拉取或推送项目代码

1、查看服务器是否配置过 [rootkingbal-ecs-7612 ~]# cd .ssh/ [rootkingbal-ecs-7612 .ssh]# ls authorized_keys id_ed25519 id_ed25519.pub id_rsa id_rsa.pub2、创建密钥 $ ssh-keygen -t rsa -C kingbalkingbal.com # -C 后写你的邮箱 一路回车 3、复制密钥 [rootk…

Rust:指针 `*T` 和引用 `T`的区别

在 Rust 编程语言中&#xff0c;*T 和 &T 是两种不同类型的指针&#xff0c;它们各自代表了不同的内存访问方式和所有权模型。 *T&#xff08;原始指针或裸指针&#xff09;&#xff1a; *T 是一个原始指针&#xff08;也称为裸指针或裸引用&#xff09;&#xff0c;它可以…

day10_Structured Steaming

文章目录 Structured Steaming一、结构化流介绍&#xff08;了解&#xff09;1、有界和无界数据2、基本介绍3、使用三大步骤(掌握)4.回顾sparkSQL的词频统计案例 二、结构化流的编程模型&#xff08;掌握&#xff09;1、数据结构2、读取数据源2.1 File Source2.2 Socket Source…

华为OD机试E卷 ---最大值

一、题目描述 给定一组整数(非负)&#xff0c;重排顺序后输出一个最大的整数。 二、示例1 用例1 输入 10 9输出 910说明:输出结果可能非常大&#xff0c;所以你需要返回一个 字符串只而不是整数。 三、输入描述 数字组合 四、输出描述 最大的整数 五、解题思路 字符…

Elasticsearch容器启动报错:AccessDeniedException[/usr/share/elasticsearch/data/nodes];

AccessDeniedException 表明 Elasticsearch 容器无法访问或写入数据目录 /usr/share/elasticsearch/data/nodes。这是一个权限问题。 问题原因&#xff1a; 1、宿主机目录权限不足&#xff1a;映射到容器的数据目录 /data/es/data 在宿主机上可能没有足够的权限供容器访问。 …

设计模式-结构型-装饰器模式

装饰器模式&#xff08;Decorator Pattern&#xff09;是结构型设计模式中的一种&#xff0c;它允许你通过将对象封装在一个新的对象中&#xff0c;来动态地添加新的功能&#xff0c;而无需改变原对象的结构。装饰器模式的核心思想是“将功能附加到对象上”&#xff0c;它是一种…

第8篇:从入门到精通:掌握Python异常处理

第8篇&#xff1a;异常处理 内容简介 本篇文章将深入探讨Python中的异常处理机制。您将学习异常的基本概念与类型&#xff0c;掌握使用try-except块处理异常的方法&#xff0c;了解finally语句的作用&#xff0c;以及如何抛出和定义自定义异常。通过丰富的代码示例&#xff0…

Ubuntu20.4和docker终端指令、安装Go环境、安装搜狗输入法、安装WPS2019:保姆级图文详解

目录 前言1、docker、node、curl版本查看终端命令1.1、查看docker版本1.2、查看node.js版本1.3、查看curl版本1.4、Ubuntu安装curl1.5、Ubuntu终端保存命令 2、安装docker-compose、Go语言2.1、安装docker-compose2.2、go语言安装步骤2.3、git版本查看 3、Ubuntu20.4安装搜狗输…

【PHP】双方接口通信校验服务

请求方 使用 ApiAuthService::buildUrl($domain, [terminal > 1, ts > time()]); //http://域名/adminapi/login/platformLogin?signF7FE8A150DEC18BE8A71C5059742C81A&terminal1&ts1736904841接收方 $getParams $this->request->get();$validate ApiA…

【设计模式】 单例模式(单例模式哪几种实现,如何保证线程安全,反射破坏单例模式)

单例模式 作用&#xff1a;单例模式的核心是保证一个类只有一个实例&#xff0c;并且提供一个访问实例的全局访问点。 实现方式优缺点饿汉式线程安全&#xff0c;调用效率高 &#xff0c;但是不能延迟加载懒汉式线程安全&#xff0c;调用效率不高&#xff0c;能延迟加载双重检…

无公网IP 实现外网访问本地 Docker 部署 Navidrome

Navidrome 是一款可以在 macOS、Linux、Windows以及 Docker 等平台上运行的跨平台开源音乐服务器应用&#xff0c;它支持传输常见的 MP3、FLAC、WAV等音频格式。允许用户通过 Web 界面或 API 进行音乐库的管理和访问。本文就介绍如何快速在 Linux 系统使用 Docker 进行本地部署…

从零开始,掌握Django Web开发

1. Django简介 Django是一个强大的Python Web框架,它使开发人员能够快速构建安全、可扩展的Web应用程序。让我们深入了解Django的特性和优势。 1.1 什么是Django? Django是一个高级Python Web框架,于2005年首次发布。它由新闻网站的开发人员创建,旨在处理快节奏的新闻编辑室…

解决conda create速度过慢的问题

问题 构建了docker容器 想在容器中创建conda环境&#xff0c;但是conda create的时候速度一直很慢 解决办法 宿主机安装的是anaconda 能正常conda create,容器里安装的是miniforge conda create的时候速度一直很慢&#xff0c;因为容器和宿主机共享网络了&#xff0c;宿主机…