九、BGP路由属性和选路

news2024/11/25 7:05:09

目录

一、属性分类

1.1、公认属性

1.2、可选属性

二、选路原则

0、丢弃不可达

取值越大越优

1、Preferred-Value

2、Local_Preference

取值越小越优

3、路由优先级

4、AS_Path

5、Origin

6、MED

7、路由来源

8、Next_Hop的IGP度量值

BGP路由等价负载分担:以上8条属性全部相同时可以形成路由负载分担

9、Cluster_List

10、Router ID(Orginator_ID)

11、IP地址


        BGP邻居之间传递的是路由信息,不是拓扑信息,所以无法防环等

一、属性分类

1.1、公认属性

        所有BGP路由器都必须能够识别的属性

        1、公认必遵
        Origin
        Local_Preference
        AS_Path   

        所有BGP设备都要认识这一类属性;

        而且这类属性必须存在于Update报文中;

        如果缺少这类属性,update报文不完整, 路由信息会出现错误;

        2、公认任意
        Atomic_aggregate
        Next_hop

        所有BGP设备认识此类属性

        这类属性不要求必须存在于Update报文中(可以在,也可以不在);

        如果缺少这类属性,路由信息不会出现错误;

1.2、可选属性

        可选属性不需要都被BGP路由器所识别

        1、可选过渡:BGP设备不识别此类属性依然会接受该类属性并通告给其他对等体
        MED
        Cluster-List
        Originator-ID

        所有BGP设备可以认识,也可以不认识此类属性;

        如果不认识,但仍然会接收此类属性,并且会通告给邻居;

        2、可选非过渡:BGP设备不识别此类属性会忽略该属性,且不会通告给其他对等体
        Aggregator
        Community

        所有BGP设备都可以认识,也可以不认识此类属性(可以认识,也可以不认识);

        如果不认识,会忽略此类属性,而且不会通告邻居。

二、选路原则

        IGP选路在AS内选路,BGP选路是在宏观AS层面选出口。

        当到达同一个目的网段存在多条路由时,BGP通过如下的次序进行路由优选:

0、丢弃不可达

        丢弃下一跳不可达的路由。

取值越大越优

1、Preferred-Value

        优选Preferred-Value(权重)属性值最大的路由,默认为0。     

        本地设备,只影响自己,也就是说,如果想要来自某邻居的路由被优选,就在本地设备上把邻居的权重增大,是一个入向策略。

bgp 200
    ##修改对等体3.3.3.3发布的路由权重为12
    ##在接收路由设备上配置
    peer 3.3.3.3 preferred-Value 1
给某些路由设置属性值
第一步:抓路由
##将10.0.45.0 24抓出来
ip ip-pretix l permit 10.0.45.0 24

第二步:写策略
route-policy fromR3 permit node 10
    ##如果匹配ip-prefix 1,应用preferred-value 1并执行permit
    if-match ip-prefix 1
    apply preferred-value 1
##默认其他拒绝,则允许所有
route-policy fromR3 permit node 100

第三步:调用
bgp 200
    ##入方向上对对等体3.3.3.3运行策略fromR3
    peer 3.3.3.3 route-policy fromR3 import

2、Local_Preference

        优选Local_Preference属性值最大的路由,默认为100。

        仅限AS内,即IBGP内有效,只发给IBGP邻居。

        决定流量从哪个边界(ASBR)出本AS。

        为ASBR设计冗余减轻负担使用。

        如上图,R1会分别收到来自R2的BGP路由10.0.45.0/24+172.16.45.0/24和来自R3的BGP路由10.0.45.0/24+172.16.45.0/24

##R3
bgp 200
    ##修改R3的本地优先属性值为130
    default local-preference 130

       在R3设置完本地优先后,R2上来自R4的BGP路由10.0.45.0/24+72.16.45.0/24,因为EBGP没有Local_Preference,所以默认为100,而此时来自R3的10.0.45.0/24+172.16.45.0/24的本地优先属性为130,所以R2优选了来自R3的路由,也就是说此时在R2上10.0.45.0/24+172.16.45.0/24的下一跳为3.3.3.3,优选了R3的路由后就不会传递给R1了,因为II不传。那下一跳为24.1.1.4的EBGP路由会发送给R1么?不会!因为BGP只发最佳路径。所以R1上看不到来自R2的BGP路由。10.0.45.0/24+72.16.45.0/24。

        如果想让R2还给R1发布10.0.45.0/24+172.16.45.0/24的路由,可以将下一跳为24.1.1.4的EBGP路由Preferred-Value属性增大变为优选路由。

##R3
给某些路由设置属性值
第一步:抓路由
##将10.0.45.0 24抓出来
ip ip-pretix l permit 10.0.45.0 24

第二步:写策略
route-policy toR1 permit node 10
    ##如果匹配ip-prefix 1,应用local-preference 130并执行permit
    if-match ip-prefix 1
    apply local-preference 130
##默认其他拒绝,则允许所有
route-policy toRl permit node 100

第三步:调用
bgp 200
    ##出方向上对对等体1.1.1.1运行策略fromR3
    peer 1.1.1.1 route-policy toR1 export

取值越小越优

3、路由优先级

        本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的。

        本地设备,只影响自己。


        手动聚合:R2中的BGP路由如上,对10.0.44.0/24和10.0.45.0/24进行聚合

##R2
bgp 200
    aggregate 10.0.0.0 16

        如上图,可以发现聚合后的路由下一跳为127.0.0.1为本地环回地址,代表聚合路由,并且明细路由仍然有效,并发送至邻居。如果觉得不需要发送,配置如下:

##R2
bgp 200
    ##加上detail-suppressed就不会给邻居发明细路由,只发聚合路由
    aggregate 10.0.0.0 16 detail-suppressed

        自动聚合:一般不用

        因为自动聚合只能按照A类/8、B类/16、C类/24聚合,范围太大

ip route-static 10.0.45.0 255.295.255.128 null0
ip route-static 10.0.45.128 255.255.255.128 null0
bgp 200
##自动聚合
    summary automatic
    import-route static

4、AS_Path

        优选AS_Path属性值最短的路由。

        记录前往目标网络的路由经过的AS号列表

        作用:防环

        注意:

  1. 只在发给EBGP邻居时添加新AS号信息,IBGP邻居之间传递不变。
  2. 修改AS_Path时只能在EBGP邻居之间改。

        使用Route-Policy修改BGP路由的AS_Path属性时,可以使用以下三种方式:

        增加AS:为避免增加AS导致路由不可达,建议增加本AS

        AS_Path:100—>apply as-path 100 additive—>AS_Path:100 100

        替换AS:有可能导致环路

        AS_Path:300 200 100—>apply as-path 400 overwrite—>AS_Path:400

        清空AS:有可能导致环路        

        AS_Path:300 200 100—>apply as-path none overwrite—>AS_Path:

第一步:抓路由
ip ip-prefix 172 index 10 permit 172.16.45.0 24
第二步:写策略
route-policy fromR4 permit node 10
    if-match ip-prefix 172
    apply as-path 100 additive
route-policy fromR4 permit node 100
第三步:调用
bgp 200
    peer 24.1.1.4 route-policy fromR4 import

5、Origin

        优选Origin起源属性最优的路由。Origin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete。

起源名称        标记描述
IGPi如果路由是由始发的BGP路由器使用network命令注入到BGP的,那么该
BGP路由的Origin属性为IGP
EGPe如果路由是通过EGP学习到的,那么该BGP路由的Origin属性为EGP
Incomplete?如果路由是通过其他方式学习到的,则Origin属性为Incomplete(不完整
的)。例如通过import-route命令引入到BGP的路由

6、MED

        优选MED(开销)属性值最小的路由;

        设计MED的目的:建议邻居AS(跨AS无法影响)的选路,并不是决定AS的选路;

        对于始发者,MED可以传给所有邻居保持不变;

        对于接收者,MED只能传给IBGP邻居不变,传递给EBGP邻居时为空;

        在ASBR配置策略,作为MED始发起作用;

        来自相同AS的路由才会比较MED。

第一步:抓路由
ip ip-prefix 172 index 10 permit 172.16.45.0 24
第二步:写策略
route-policy fromR4 permit node 10
    if-match ip-prefix 172
    apply cost 4
route-policy fromR4 permit node 100
第三步:调用
bgp 200
    peer 24.1.1.2 route-policy fromR4 export

7、路由来源

        优选从EBGP对等体学来的路由(EBGP路由优先级高于IBGP路由)。

8、Next_Hop的IGP度量值

        优选到Next_Hop的IGP度量值最小的路由。

        到达比较第8条时,前7条都一样,按照第7条,那么两条路由要么都是IBGP,要么都是EBGP,IBGP比内部开销,EBGP因为都是直连开销一般为0,无法对比出结果。

BGP路由等价负载分担:以上8条属性全部相同时可以形成路由负载分担

BGP路由等价负载分担(ECMP)
        在大型网络中,到达同一目的地通常会存在多条有效BGP路由,设备只会优选一条最优的BGP路由,将该路由加载到路由表中使用,这一特点往往会造成很多流量负载不均衡的情况。
        通过配置BGP负载分担,可以使得设备同时将多条等代价的BGP路由加载到路由表,实现流量负载均衡,减少网络拥塞。
        值得注意的是,尽管配置了BGP负载分担,设备依然只会在多条到达同一目的地的BGP路由中优选一条路由,并只将这条路由通告给其他对等体。
        在设备上使能BGP负载分担功能后,只有满足条件的多条BGP路由才会成为等价路由,进行负载分担。

        形成BGP路由等价负载分担的条件

  1. Preferred-Value属性值相同。
  2. Local_Preference属性值相同。
  3. 都是聚合路由或者非聚合路由。
  4. AS_Path属性长度相同。
  5. Origin类型(IGP、EGP、Incomplete)相同。
  6. MED属性值相同。
  7. 都是EBGP路由或都是IBGP路由。
  8. AS内部IGP的Metric相同。
  9. AS_Path属性完全相同。
bgp 200
    maximum load-balancing ibgp 2
    ##忽略AS号不一致
    load-balancing as-path-ignore

9、Cluster_List

        优选Cluster_List最短的路由;

        簇ID列表,类似水印。

        R2发送给R1的路由,经过R1反射给R3时除了添加Originator_ID之外还会添加Cluster_List:10.0.1.1。R3再次反射给R4时,Cluster_List值为:10.0.3.3 10.0.1.1,R4再次反射给R1时Cluster_List值:10.0.4.4 10.0.3.3 10.0.1.1。
        当R4将路由反射给R1时,R1发现Cluster_List包含了自身Cluster_ID,判断存在环路,从而忽略该路由更新。

10、Router ID(Orginator_ID)

        优选Router ID(Orginator_ID)最小的设备通告的路由。

        9、10条跟反射器有关。

        Originator_ID:发起者ID;

        将R1的router-id写在R2发给R1的路由条目中,反射器R2收到后将router-id改写为OID属性:2.2.2.2,且反射给R3时OID仍为2.2.2.2,R3收到后与自己router-id比较,一致丢弃,不一致传递。当同一AS内有多个RR,OID由第一个RR为路由条目写上OID。        

11、IP地址

        优选具有最小IP地址的对等体通告的路由。

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

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

相关文章

springboot景区寄存管理系统(源码+sql+论文报告)

针对传统人工行李寄存效率低和安全性不足等问题,设计并实现了一种由网页控制器组成的智能行李寄存系统。首先能够实现行李的寄存管理和行李柜管理以及记录查询和通知公告以及管理员等灵活控制菜单显示权限。经过研究和测试结果显示,该行李寄存系统实现了…

【什么!Grok记录被打破了】坏消息不是Meta的 llama3 400,好消息是Nvidia发布的Nemotron-4 340B且支持开源

Nvidia 发布了开创性的开放模型系列 “Nemotron-4 340B”,再次巩固了其作为人工智能创新领域无可争议的领导者的地位。这一发展标志着人工智能行业的一个重要里程碑,因为它使各行各业的企业能够创建功能强大的特定领域 LLM,而无需大量昂贵的真…

QT系列教程(11) TextEdit实现Qt 文本高亮

文本高亮 对于textedit里录入的部分单词我们可以实现高亮,实现高亮主要依赖于QSyntaxHighlighter。 我们先创建一个Qt Application类,类名MainWindow, 然后新增一个C类,类名为MySyntaxHighlighter。 #ifndef MYSYNTAXHIGHLIGHTER_H #define …

深入分析 Android BroadcastReceiver (三)

文章目录 深入分析 Android BroadcastReceiver (三)1. 广播消息的优缺点及使用场景1.1 优点1.2 缺点 2. 广播的使用场景及代码示例2.1. 系统广播示例:监听网络状态变化 2.2. 自定义广播示例:发送自定义广播 2.3. 有序广播示例:有序广播 2.4. …

yml配置文件快速上手

yml配置文件快速上手 springboot中,有三种文件可以作为配置文件 xml文件(不推荐,臃肿)application.propertis文件(层次不够分明)yml文件(推荐,层次分明,语法简洁) yml文件的基本语…

记录:利用 Agora 在 Unity3D MRTK场景中创建实时视频聊天应用

目录 准备1. 安装Agora_Unity_RTC_SDK2. 创建UI3. script具体内容4. 使用测试 本质是两部带摄像机的设备同时进入Agora聊天室内视频。 去年实现过一次这个功能,用的是Agora_Unity_RTC_SDK 4.2.2版本的,今年使用失败,遂重新安装最新版本Agora…

Github 2024-06-15Rust开源项目日报Top10

根据Github Trendings的统计,今日(2024-06-15统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10TypeScript项目1JavaScript项目1Deno: 现代JavaScript和TypeScript运行时 创建周期:2118 天开发语言:Rust, JavaScript协议类型:M…

浪潮信息打造业界首款50℃进液温度服务器 PUE逼近理论极限1.0!

在科技飞速发展的今天,浪潮信息以其前瞻性的技术创新思维,再次突破行业极限,推出业界首个支持50℃进液温度的浸没式液冷服务器NF5180G7。这一创新成果不仅展现了浪潮信息在液冷技术领域的深厚实力,更标志着服务器冷却技术的一次重…

SpringBoot使用jasypt实现数据库信息的脱敏,以此来保护数据库的用户名username和密码password(容易上手,详细)

1.为什么要有这个需求? 一般当我们自己练习的时候,username和password直接是爆露出来的 假如别人路过你旁边时看到了你的数据库账号密码,他跑到他的电脑打开navicat直接就是一顿连接,直接疯狂删除你的数据库,那可就废…

(南京观海微电子)——液晶屏显示不良及修复

TFT LCD信号驱动 屏横线 横暗线、暗带、竖线、竖带 原因: 1、COF与玻璃Bonding不良; 2、COF或玻璃遭到损伤(ESD或机械折伤); 3、ASG电路失效(仅对ASG技术panel而言) 解决方案&#xff1…

STM32定时器篇——Systick定时器的使用(实现delay延时函数)

一、Systick定时器的简介: Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器对于CM3,CM4内核芯片,都有Systick定时器。当Systick计到0时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中…

SpringBoot【2】集成 MyBatis Plus

SpringBoot 集成 MyBatis Plus 前言修改 pom.xml修改配置文件添加 实体类添加 持久层接口添加 持久层 XxxMapper.xml 文件添加 业务接口层添加 业务接口实现类添加 控制层添加 MyBatis 配置AutoFillMetaObjectHandlerMyBatisPlusConfig 验证 前言 由于 MySQL 备份/恢复测试&am…

LeetCode 算法:回文链表 c++

原题链接🔗:回文链表 难度:简单⭐️ 题目 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head…

如何用 Google Chrome 浏览器浏览经过 XSLT 渲染的 XML 文件

对于经过XSLT渲染的XML文件,本来,可以直接用 IE (Internet Explorer) 打开,就能看到渲染之后的样子,很方便。但是后来,微软把 IE 换成了 Microsoft Edge,按理说这是比 IE 更先进的浏览器,可是偏…

Swift 是 C++ 的最佳继任者

苹果称 Swift 是 C 的最佳继任者 Swift 是苹果公司在 2014 年推出的,一款旨在替代 Objective-C 的编程语言。但苹果语言和运行时总监 Ted Kremenek 在 WWDC24 的主题演讲中表示,Swift 也将取代 C。 “Swift 的安全性、速度和易用性,加上内…

期末复习6--链表头插法(逆序)尾插法(顺序)---输出链表

头插法 #include <stdio.h> #include <stdlib.h>struct Node //定义结构体 {char data; //数据域struct Node * next; //指针域 };/* 请在这里填写答案 */void PrintList (struct Node * head) {struct Node * s;if(head NULL){printf("None&qu…

Python基础教程(二十一):多线程

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

在ubuntu中启动docker的mysql8镜像

首先查看docker是否启动&#xff1a; docker ps #出现信息就是启动成功 启动命令&#xff1a; sudo systemctl start docker 设置开机自启&#xff1a; sudo systemctl enable docker 查询下载好的mysql8的镜像文件&#xff1a; docker images 在启动查询好的镜像文件&#…

StarNet实战:使用StarNet实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 https://arxiv.org/pdf/2403.19967 论文主要集中在介绍和分析一种新兴的学习范式——星操作&#xff08;Star Operation&#xff09;&#xff0c;这是一种通过元素级乘法融合不同子…

521. 最长特殊序列 Ⅰ(Rust单百解法-脑筋急转弯)

题目 给你两个字符串 a 和 b&#xff0c;请返回 这两个字符串中 最长的特殊序列 的长度。如果不存在&#xff0c;则返回 -1 。 「最长特殊序列」 定义如下&#xff1a;该序列为 某字符串独有的最长 子序列 &#xff08;即不能是其他字符串的子序列&#xff09; 。 字符串 s …