草庐IT

HCIP-12

王纯粹 2023-10-31 原文

BGP的基本配置

1.bgp的路由黑洞
优于BGP协议可以非直连建林,故可能出现BGP协议跨越为运行BGP协议的路由器,导致BGP路由传递后,显示控制层面可达,但是,数据层面,流量未运行BGP协议的路由器时,无法通过,形成路由黑洞。

解决方案:

​ 1.让AS内所有设备都运行BGP协议

​ 2.可以在运行BGP的设备上向AS内部使用的IGP协议中进行重发布

​ 3.MPLS多协议标签交换技术—是当前工程中主要是用的解决BGP路由黑洞的方案。

​ 为了防止BGP路由黑洞的产生,退出了BGP同步机制—即当一台路由器从自己IBGP对等体粗恶习到一条BGP路由是米它不能将这条路由通告给自己的EBGP邻居对等体,除非他有从IGP协议中(包含静态)学习到这条路由,也就是要求IBGP路由和IGP路由同步。

​ 华为设备默认关闭BGP的同步规则。

2.BGP的防环机制

​ BGP使用的防环机制—水平分割

​ 在BGP中的水平分割分为2种:

​ 1.EBGP水平分割—专门解决EBGP对等体可能出现的环路问题

​ 2.IBGP水平分割—专门解决IBGP对等体之间可能出现的环路问题。

​ EBGP水平分割:

​ BGP协议在路由条目中记录所经过的AS编号—AS_PATH属性(记载所有经过AS编号的属性,该属性除了可以用来进行EBGP对等体的防环外,还可以在特定情况下进行路由选路。)。接受到的BGP路由条目中的AS——path中弱包含本地的AS好,则将拒绝接受,避免环路产出。

​ AS_PATH
因为BGP的AS-BY-AS的特性,导致AS内部被认为是一个整体,在默认情况下,陆游的属性是不会发生变化的,所以,呜啊通过属性来进行防环。

​ 所以,IGP水平分割的做法—当一个路由器从一个IBGP对等体处学到某一条路由是,他讲不再把这条路有信息通告给其他IBGP对等体。


IBGP水平分割可以有效地解决IBGP邻居之间对等体之间路由回传在成的环路问题,但是也会引发路由信息传递障碍问题(如上图)。想要避免水平分割带来的问题,可以让所有AS内部运行BGP的路由器均建立IBGP对等体关系。

​ 这种建立全连的IBGP对等体的方案也存在问题,并不是最佳的解决方案,当一个网络中AS运行的BGP协议的路由器数量较多时,建立全连的邻居关系将造成较大的资源浪费,并且降低网络的可扩展性。

​ 所以BGP专门存在两个技术用于IBGP水平分割带来的问题—1.路由反射器

​ 2.联邦

3.BGP的基本配置
BGP邻居建立过程、

​ (1)EBGP对等体直连

​ 1.启动BGP进程
2.配置RID
3.指定建立邻居关系
​ 优于IBGP邻居处于同一个AS中,正常一个AS中存在大量的备份路径,若使用物理接口建立邻居关系,将浪费这些备份或者负载均衡的路径,所以建议使用环回接口来进行IBGP对等体关系的建立。

​ IBGP建立邻居过程

​ (2)IBGP对等体环回建邻
切记:一旦使用环回地址作为建邻地址,同时需要修改源IP地址为本地环回地址。

​ (3)EBGP对等体环回建邻
总结:在建立EBGP对等体欢喜是,建议使用第一种方法,EBGP对等体间智联简邻;IBGP对等体间建议使用环回接口进行建邻,即使用方法二。

BGP路由发布

​ (1)通过Network命令进行发布

​ BGP可以将路由表中存在的路由条目通过NETwork命令进行发布。总结:在建立EBGP对等体欢喜是,建议使用第一种方法,EBGP对等体间智联简邻;IBGP对等体间建议使用环回接口进行建邻,即使用方法二。

BGP路由发布

​ (1)通过Network命令进行发布

​ BGP可以将路由表中存在的路由条目通过NETwork命令进行发布。

Nextwork—目标网段及掩码信息

​ NextHop—下一跳—属于BGP的路由属性—谁通告的,谁就是下一跳;如果是自己发布的,则吓一跳属性0.0.0.0

​ 在Network前面出现的符号称为这条路由的状态码。

​ *—代表可用—BGP设备每收到一条路由信息都会检查其下一条属性的可达性(通过路由表查询),如果下一条的地址是可达的,则代表路由可用;如果不可用,则该路由信息将不被接纳,直接不参与选择。

​ >—代表优选—当收到多条到达相同网段的路由信息时,BGP将会在其中根据路由属性选择最优的作为优选路由,只有优选路由才会被加载到路由表中,并且被传递给其他BGP邻居,不优选的则不传递。

​ 当一台路由器收到来自EBGP对等体发送的路由信息正常加表后,该陆游的洗衣类型为:EBGP,优先级为:255

​ I—状态码为I—则代表该路由信息是从IBGP对等体处学来的路由。
(3)通过重发布来发布BGP路由
​ 、OGN—起源码—1。通过NETWORK发布的路由—I代表改路由起源于IGP协议(包括静态路由和直连路由)

​ 2.通过EGP协议发布的路由—e---指的是BGP协议之前的外部网关协议—EGP协议,因为目前协议 基本上不用了,所以,E标记很少见。

​ 3.通过除了以上两种方式发布的路由—?---重发布路由的起源码标记就是问号。

4.BGP路由聚合

​ BGP的路邮局和—自动聚合—仅针对重发布的路由

​ 在R1上建立2条172.16.1.0/24和172.16.2.1/24直连路由之后,通过重发布发布到BGP中。步骤如下:
​ S—状态码—SUPPRESSED—抑制—一旦由前面的状态码中添加S标记,则代表该路由被抑制,将不再加标和传递。

​ 自动聚合完成后会自动生成一条指向汇总的空接口路由进行防环。

​ 因为我们自动汇总的问题,所以当我们需要对路易欧汇总进行精准把控时,手工聚合将是个理想的解决方案。

​ —手工聚合
​ 手工聚合的问题—1.手工聚合是没有抑制明细路由导致传递的路由条目没有减少反而增加

​ 2.手工聚合的路由条目存在户型缺失的问题,尤其是不懈怠明细路由中的AS_PATH属性,因为该属性是用来防环的,不携带可能会导致环路的产生。
但是,因为BGP协议的特殊性导致在一些环境下,往往不能将所有明细路由全部抑制。所以,我们在做BGP的聚合时,往往仅抑制一部分路由信息,而实现这个效果,需要用到抑制列表suppressed-policy—抑制策略。

1.先抓流量
2.使用路由策略匹配流量
3.使用抑制策略进行调用

正因为聚合后的路由存在属性了丢失的情况,所以这样的汇总路有需要格外关注,为此BGP专门设计了两个聚合相关的属性—ATOMIC_AGGREGATE,AGGREGATOR—是纯粹的预警属性,聚合路由将会携带(只有将所有明细路由全部抑制的汇总路由才会携带),意图是提醒该路由为聚合路由,可能存在属性丢失问题。

AGGRGATOR—将会记录执行汇总路由器所在的AS好及RID。

有关HCIP-12的更多相关文章

  1. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  2. ruby-on-rails - 无法构建 gem native 扩展 (mkmf (LoadError)) - Ubuntu 12.04 - 2

    这个问题在这里已经有了答案:Unabletoinstallgem-Failedtobuildgemnativeextension-cannotloadsuchfile--mkmf(LoadError)(17个答案)关闭9年前。嘿,我正在尝试在一台新的ubuntu机器上安装rails。我安装了ruby​​和rvm,但出现“无法构建gemnative扩展”错误。这是什么意思?$sudogeminstallrails-v3.2.9(没有sudo表示我没有权限)然后它会输出很多“获取”命令,最终会出现这个错误:Buildingnativeextensions.Thiscouldtakeawhi

  3. ruby - 使用 OpenSSL ruby​​ 从一个 .p12 文件中提取多个 key - 2

    我想知道如何从Apple.p12文件中提取key。根据我有限的理解,.p12文件是X504证书和私钥的组合。我看到我遇到的每个.p12文件都有一个X504证书和至少一个key,在某些情况下有两个key。这是因为每个.p12都有一个Apple开发人员key,有些还有一个额外的key(可能是Appleroot授权key)。我只考虑那些具有两个key的.p12文件是有效的。我的目标是区分具有一个key的.p12文件和具有两个key的.p12文件。到目前为止,我已经使用OpenSSL来检查X504文件和任何.p12的key。例如,我有这段代码可以检查目录中的所有.p12文件:Dir.glob(

  4. ruby - 为什么 openssl 在 windows 上产生错误但在 centos 上不产生错误:PKCS12_parse: mac verify failure (OpenSSL::PKCS12::PKCS12Error) - 2

    require'openssl'ifARGV.length==2pkcs12=OpenSSL::PKCS12.new(File.read(ARGV[0]),ARGV[1])ppkcs12.certificateelseputs"Usage:load_cert.rb"end运行它会在Windows上产生错误,但在Linux上不会。错误:OpenSSL::PKCS12::PKCS12Error:PKCS12_parse:macverifyfailurefrom(irb):21:ininitializefrom(irb):21:innewfrom(irb):21fromC:/Ruby192/

  5. ruby-on-rails - macOS 10.12 Sierra 上的 bundle 错误 - 2

    Ignoringbinding_of_caller-0.7.2becauseitsextensionsarenotbuilt.Try:gempristinebinding_of_caller--version0.7.2Ignoringbyebug-9.0.6becauseitsextensionsarenotbuilt.Try:gempristinebyebug--version9.0.6Ignoringcapybara-webkit-1.11.1becauseitsextensionsarenotbuilt.Try:gempristinecapybara-webkit--versio

  6. ruby - 如何在 ubuntu 12.0.4 上将 usr/local/bin 添加到路径环境变量? - 2

    我刚刚在Ubuntu12.0.4上安装了ruby​​.1.8.6。我正在从一本书中学习ruby​​,在安装过程之后它说"Onceit'scompleted,youshouldadd/usr/local/bintoyourPATHenvironmentvariable.I'llassumethat,beingaLinuxuser"我被困住了,因为这个人的假设是错误的。如何将usr/local/bin添加到路径环境变量中? 最佳答案 您可以将此添加到您的~/.bashrc文件中:PATH=$PATH:/usr/local/bin如果你不

  7. ruby - IntelliJ IDEA 12 不会在 rails/ruby 的断点处停止 - 2

    我有IDEA12,无法在Rails/Ruby中正确使用调试器[类似的问题是这个Idea11breakpoints&ruby].当我第一次在rails/ruby应用程序上按下DEBUG时,它正确地安装了ruby​​-debug-base19x和ruby​​-debug-ide。发布一个gem列表|grepdebug显示这些gem:debugger-ruby_core_source(1.2.2)ruby-debug-base19x(0.11.30.pre12)ruby-debug-ide(0.4.17.beta16)调试[localdebug]正在成功启动,我在控制台中有这个:/home/

  8. ruby - 在 Ubuntu 12.04 上安装 compass 和 Susy - 2

    我正在尝试在我的Ubuntu12.04上安装Compass和Susy。我在控制台上尝试了以下步骤:sudoapt-getinstallrubygems1.8sudogeminstallrubygems-update#Insteadofsudogemupdate--systemsudoupdate_rubygemssudogeminstallcompass#InstallingCompass&Sasssudogeminstallsusy因此,当我执行以下命令时,gems已安装并将列出:gemlist但是现在,当我尝试创建一个新的compass项目时compasscreateproject

  9. ruby - 在 Ruby 中将 12 小时制转换为 24 小时制 - 2

    如何将“11am”和“10pm”转换为“11:00”和“22:00”?有使用日期和时间类的简单方法吗? 最佳答案 我会先用Time#strptime解析字符串,然后用Time#strftime输出它。这也确保了对原始格式的严格检查。require'time'Time.strptime("10pm","%I%P").strftime("%H:%M")=>"22:00" 关于ruby-在Ruby中将12小时制转换为24小时制,我们在StackOverflow上找到一个类似的问题:

  10. ruby - 如何让 rspec 不显示数据库查询而只显示带有 rails_12factor 的点? - 2

    ruby:2.0rails:3.2.17rspec:2.14.8Database:mysqlrspecspec用于仅输出点。当我推送到Heroku并且最近添加了rails_12factorgem来绕过它时,我收到了弃用警告。但是,现在在本地运行规范时,我会得到每个事务的详细数据库输出。当我需要它时这是一个很好的选择,否则它会产生很多不需要和分散注意力的输出。所以我想要一个将它用于Heroku而不是本地的选项。请注意,这不会通过使用格式化程序来解决,例如rspecspec-fd此外,如果出现错误,在这种冗长程度下,错误几乎总是滚出当前页面...09:50:39durrantmCastle

随机推荐