九、BGP路由属性和选路

目录

一、属性分类

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并执行permitif-match ip-prefix 1apply preferred-value 1
##默认其他拒绝,则允许所有
route-policy fromR3 permit node 100第三步:调用
bgp 200##入方向上对对等体3.3.3.3运行策略fromR3peer 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的本地优先属性值为130default 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并执行permitif-match ip-prefix 1apply local-preference 130
##默认其他拒绝,则允许所有
route-policy toRl permit node 100第三步:调用
bgp 200##出方向上对对等体1.1.1.1运行策略fromR3peer 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 200aggregate 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 automaticimport-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 10if-match ip-prefix 172apply as-path 100 additive
route-policy fromR4 permit node 100
第三步:调用
bgp 200peer 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 10if-match ip-prefix 172apply cost 4
route-policy fromR4 permit node 100
第三步:调用
bgp 200peer 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 200maximum 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.rhkb.cn/news/350902.html

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

相关文章

音频处理软件adobe audition使用教程

教程1笔记 基本操作 点击文件-》新建-》多轨会话: 编辑-》首选项,设置自动保存时间: 导入素材,文件-》导入素材,或者直接拖动进来文件! 导出多轨混音: 更改为需要导出的格式wav,mp3等格式&am…

探索开源世界:2024年值得关注的热门开源项目推荐

文章目录 每日一句正能量前言GitCode成立背景如何使用GitCode如何把你现有的项目迁移至 GitCode?热门开源项目推荐actions-poetry - 管理 Python 依赖项的 GitLab CI/CD 工具项目概述技术分析应用场景特点项目地址 Spider - 网络爬虫框架项目简介技术分析应用场景项…

餐厅点餐系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,商品管理,用户管理,店家管理,广告管理 店家账户功能包括:系统首页,个人中心,商品管理,广告管…

机器学习:GANs网络在图像和视频技术中的应用前景

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

Qt creator day2练习

使用手动连接,将登录框中的取消按钮使用第二种方式,右击转到槽,在该函数中,调用关闭函数,将登录按钮使用Qt4版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为“admin”,密…

Swift 是 C++ 的最佳继任者

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

mongodb 集群安装

1. 配置域名 Server1: OS version: CentOS Linux release 8.5.2111 hostnamectl --static set-hostname mongo01 vi /etc/sysconfig/network # Created by anaconda hostnamemong01 echo "192.168.88.20 mong1 mongo01.com mongo02.com" >> /…

阿里云OSS对象存储服务使用

阿里云OSS对象存储服务使用 1、点击产品,然后找到并点击对象存储OSS 2、然后点击立即开通,如果只是为了学习,简单的使用还是可以的,不需要购买 3、开通后进入OSS管理控制台界面,点击进入Bucket列表,然后创建一个Bucket…

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

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

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

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

redis源码编译安装

源码下载地址http://download.redis.io/releases/ 1 环境准备 安装编译环境 sudo yum install gcc -y gcc -v 查看版本 sudo yum -y install centos-release-scl sudo yum -y install devtoolset-10-gcc devtoolset-10-gcc-c devtoolset-10-binutils scl enable devtool…

C语言之main函数的返回值(在linux中执行shell脚本并且获取返回值)

一:函数为什么要返回值 (1)函数 在设计的时候是设计了参数和返回值,参数是函数的输入,返回值是函数的输出 (2)因为函数需要对外输出数据(实际上是函数运行的一些结果值)…

如何区分人工智能生成的图像与真实照片(下)

4 功能上的不合理性 AI 生成的图像往往会因为缺乏对现实世界物体结构和相互作用的了解,而产生各种功能不合理之处。这些不合理之处主要表现在以下几个方面: 4.1 构图不合理 物体关系不合逻辑: AI 生成的图像中,物体和人物之间的关系可能不符…

【Unity】RPG2D龙城纷争(二)关卡、地块

更新日期:2024年6月12日。 项目源码:后续章节发布 索引 简介地块(Block)一、定义地块类二、地块类型三、地块渲染四、地块索引 关卡(Level)一、定义关卡类二、关卡基础属性三、地块集合四、关卡初始化五、关…

centos环境上:k8s 简单安装教程

本次演示安装3节点k8s环境,无需多言,直接上操作步骤: 1、环境准备 k8s部署前,首先需要准备好环境,除了1.4 步骤,其他步骤在所有(3个)节点上都要执行: 1.1 关闭防火墙 s…

如何定位检查不到的元素

光标离开输入框时,输入框立刻消失,导致无法查看该元素的html标签属性,如何定位这种元素呢?有两种方法,一种是通过事件监听器,另一种是通过网络接口抓包 1、首先定位到搜索按钮 这个搜索的按钮,当…

Elixir学习笔记——进程(Processes)

在 Elixir 中,所有代码都在进程内运行。进程彼此隔离,彼此并发运行并通过消息传递进行通信。进程不仅是 Elixir 中并发的基础,而且还提供了构建分布式和容错程序的方法。 Elixir 的进程不应与操作系统进程混淆。Elixir 中的进程在内存和 CPU…

OpenDevin 环境配置及踩坑指南

不惧怕任何环境配置 首先 clone 项目,然后查看开发者文档:https://github.com/OpenDevin/OpenDevin/blob/main/Development.md make setup-config 自定义 LLM 配置 首先这个 devin 写的是支持自定义的 LLM 配置,并且提供了交互式命令供我们…

【C语言】二维数组(详解)

目录 1. 二维数组的创建 1.1 二维数组的概念 1.2 二维数组的创建 2. 二维数组的初始化 2.1 不完全初始化 2.2 完全初始化 2.3 按照行初始化 2.4 初始化时能省略行,但不能省略列 3. 二维数组的使用 3.1 二维数组下标 3.2 二维数组…

【FreeRTOS】ARM架构汇编实例

目录 ARM架构简明教程1. ARM架构电脑的组成1.2 RISC1.2 提出问题1.3 CPU内部寄存器1.4 汇编指令 2. C函数的反汇编 学习视频 【FreeRTOS入门与工程实践 --由浅入深带你学习FreeRTOS(FreeRTOS教程 基于STM32,以实际项目为导向)】 https://www.…