jjzjj

BGP属性基础知识

跑不过悲伤 2024-04-22 原文

BGP属性分类:

1,公认:所有运行BGP协议的路由都能理解的属性

2,可选:厂家开发的某些特殊需求的属性,但并不是所有运行BGP协议的路由器都理解的属性

公认必遵属性: next-hop,Orgin,AS-PATH

公认任意属性: Local_Preference,Atomic_aggregate

可选非过渡属性:MED,

可选过渡属性: Aggregator,Community

华为BGP路由下一跳特点:

@默认情况下,传给EBGP邻居的BGP路由的下一跳设置为自身向这个EBGP邻居发送BGP报文的源地址

@默认情况下,从EBGP邻居得到的路由再传给IBGP邻居时,此BGP路由的下一跳默认保持不变,

可以使用peer next--hop-local修改下一跳

@默认情况下,凡是自身启源BGP路由在传给任何BGP邻居时,总是把此路由的下一跳设置为向BGP邻居发送BGP报文的源地址

Origin(起源):定义路径信息的来源,标记一条路由是如何成为BGP路由的

起源属性共有3种

@ i 表明BGP路由是由network命令发出的

@ ? 表明BGP路由是由import-route发布的

@ e 表明BGP路由是从EGP协议引入的,EGP协议目前已经全面退出网络

起源属性可以被修改,一般起源属性是一种BGP选路属性,可以用于BGP路径的选路,通过修改起源属性可以控制BGP路径

i > e > ?

AS-PATH:

AS内部防环:IBGP的水平分割

1,选路,经过AS数量少的路径最优

2,在AS之间实现BGP环路的防范,从EBGP邻居得到路由时,检查该路由的AS_PATH属性,如果AS_PATH中存在自身的AS号,则丢弃该路由

当BGP路由传递给EBGP邻居时会将自己的AS号添加到AS_PATH属性的最前面

当BGP路由传递给IBGP邻居时不会添加自己的AS号

3,防环的检测机制:

EBGP邻居之间进行AS_PATH检查,IBGP邻居之间不做AS_PATH属性的最前面

4,AS_PATH可以在IBGP和EBGP邻居之间修改,思科只允许在EBGP邻居之间修改

peer 1.1.1.1 allow-as-loop //如果收到邻居1.1.1.1发来的EBGP路由中携带了自身的AS号我也接收

ip as-path-filter 通过对AS-path的属性匹配进行BGP路由的过滤,在router-policy中可以用if-match命令进行调用

用正则表达式的特点,一个正则表达式可以匹配多条路由,一条路由的AS-path也可能匹配多个正则表达式

Local_Preference :

仅传递给IBGP邻居,不会传递给EBGP邻居,即在AS内部传递,默认为100,越大越优先

控制本AS区域的流量访问其他AS

MED :

BGP的多出口路由器,也成为BGP的cost值,越小越优,在本AS设置,控制其他AS访问本AS

对于来自不同自治系统号的同一路由不比较MED属性,如果需要比较则需加命令:

思科命令:

community :

团体属性,限制BGP路由的传递范围,给BGP路由添加标记,方便扩展,管理的团体属性

不同于IGP TAG,TAG只能打一个,管理能力有限,不能多维度的标识路由。

Community属性分为两类,一类是公认团体属性,另一类是扩展的团体属性

公认团体属性分为4类,

1,Internet : 缺省属性,所有属性都属于Internet,此属性的路由可以通告给所有BGP邻居

2,No_Export : 收到此属性的路由后,不将该路由发布给其他 AS

3,No_Advertise : 收到此属性的路由后,不将该路由通告给任何BGP邻居

4,No_Export_Subconfed : 在联盟中使用,仅在成员 AS 内传递

当路由器存在多个公认团体属性时,传递范围最小的生效

扩展团体属性用一组4字节为单位的列表来表示,扩展团体属性的格式为 aa:nn 或团体号

@标记:aa :nn (0-65535 : 0-65535),aa通常为AS编号,nn是管理员定义的团体属性标识符

想要传递团体属性必须在BGP邻居之间配置传递团体属性的命令,将团体属性通告给指定邻居:

Aggregator :

Preference_Value是BGP的私有属性(华为私有):

仅在本地路由器生效,不会传递给任何邻居,越大越优先,最先比较的属性值

路由选路原则:

BGP路由汇总:

BGP网络面临的问题:

1,路由数量庞大,占用内存,消耗带宽

2,BGP网络震荡,到时稳定性下降

可利用静态路由执行汇总,写一条汇总后的静态路由通告给邻居,并通告路由策略抑制明细路由发布给邻居

@会丢失明细路由的BGP属性,存在路由环路风险

@明细路由和汇总路由间不存在依赖关系,明细路由失效,汇总路由依然存在

BGP自动汇总:

命令 :summary automatic ,//只能对引入import的路由做过滤,只能汇总成主类网络号,明细路由被一致,一般不用

BGP手动汇总:

命令:aggregate 192.168.0.0 255.255.248.0 as-set detail-suppressed

参数 as-set : 区分汇总的路由的AS-PATH属性,(明细路由的属性)

参数 detail-suppressed : 仅通告聚合后的路由,不通告汇总前的明细路由

有关BGP属性基础知识的更多相关文章

  1. ruby-on-rails - 如果为空或不验证数值,则使属性默认为 0 - 2

    我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val

  2. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  3. ruby - 多个属性的 update_column 方法 - 2

    我有一个具有一些属性的模型:attr1、attr2和attr3。我需要在不执行回调和验证的情况下更新此属性。我找到了update_column方法,但我想同时更新三个属性。我需要这样的东西:update_columns({attr1:val1,attr2:val2,attr3:val3})代替update_column(attr1,val1)update_column(attr2,val2)update_column(attr3,val3) 最佳答案 您可以使用update_columns(attr1:val1,attr2:val2

  4. ruby - Nokogiri 剥离所有属性 - 2

    我有这个html标记:我想得到这个:我如何使用Nokogiri做到这一点? 最佳答案 require'nokogiri'doc=Nokogiri::HTML('')您可以通过xpath删除所有属性:doc.xpath('//@*').remove或者,如果您需要做一些更复杂的事情,有时使用以下方法遍历所有元素会更容易:doc.traversedo|node|node.keys.eachdo|attribute|node.deleteattributeendend 关于ruby-Nokog

  5. ruby-on-rails - Rails 模型——非持久类成员或属性? - 2

    对于Rails模型,是否可以/建议让一个类的成员不持久保存到数据库中?我想将用户最后选择的类型存储在session变量中。由于我无法从我的模型中设置session变量,我想将值存储在一个“虚拟”类成员中,该成员只是将值传递回Controller。你能有这样的类(class)成员吗? 最佳答案 将非持久属性添加到Rails模型就像任何其他Ruby类一样:classUser扩展解释:在Ruby中,所有实例变量都是私有(private)的,不需要在赋值前定义。attr_accessor创建一个setter和getter方法:classUs

  6. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  7. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  8. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  9. ruby - Chef Ruby 遍历 .erb 模板文件中的属性 - 2

    所以这可能有点令人困惑,但请耐心等待。简而言之,我想遍历具有特定键值的所有属性,然后如果值不为空,则将它们插入到模板中。这是我的代码:属性:#===DefaultfileConfigurations#default['elasticsearch']['default']['ES_USER']=''default['elasticsearch']['default']['ES_GROUP']=''default['elasticsearch']['default']['ES_HEAP_SIZE']=''default['elasticsearch']['default']['MAX_OP

  10. ruby - 获取数组中的值并最小化某个类属性的最优雅的方法是什么? - 2

    假设我有以下类(class):classPersondefinitialize(name,age)@name=name@age=ageenddefget_agereturn@ageendend我有一组Person对象。是否有一种简洁的、类似于Ruby的方法来获取最小(或最大)年龄的人?如何根据它对它们进行排序? 最佳答案 这样做会:people_array.min_by(&:get_age)people_array.max_by(&:get_age)people_array.sort_by(&:get_age)

随机推荐