乾颐堂军哥HCIE8-BGP工作原理以及更新机制(含下一跳解析)[通俗易懂]

乾颐堂军哥HCIE8-BGP工作原理以及更新机制(含下一跳解析)

大家好,又见面了,我是全栈君。

BGP(规则)乾颐堂军哥HCIE8-BGP工作原理以及更新机制(含下一跳解析)
1.BGP基本的工作机制

dis bgp routing //验证BGP路由的手段
<R1>dis ip routing-table protocol bgp //目的是通过BGP更新路由
已经在AS内部存在了IGP,为什么还要使用iBGP呢? 逐跳转发、BGP黑洞、路由操控
构建环回接口来建立iBGP邻居的前提条件:源目IP可达
[R1-bgp]ping -a 11.1.1.1 15.15.15.15
PING 15.15.15.15: 56 data bytes, press CTRL_C to break
Reply from 15.15.15.15: bytes=56 Sequence=1 ttl=254 time=30 ms
Reply from 15.15.15.15: bytes=56 Sequence=2 ttl=254 time=50 ms
R1:
bgp 10
peer 10.1.12.2 as-number 20
peer 15.15.15.15 as-number 10
peer 15.15.15.15 connect-interface LoopBack0
SW3:
[SW3-bgp]dis th
#
bgp 10
peer 11.1.1.1 as-number 10
peer 11.1.1.1 connect-interface LoopBack0 //指定本端的去建立TCP连接的源IP地址
验证邻居关系:
[SW3-bgp]display bgp peer

BGP local router ID : 10.1.15.3
Local AS number : 10
Total number of peers : 1 Peers in established state : 1

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv

11.1.1.1 4 10 3 3 0 00:00:33 Established 1

采用非直连的方式构建eBGP邻居关系
备份
eBGP报文中的TTL=1,所以需要修改TTL
bgp 60
peer 55.1.1.1 as-number 345
peer 55.1.1.1 ebgp-max-hop 255 //修改ebgp报文的TTL为255,
peer 55.1.1.1 connect-interface LoopBack0 //使用环回接口0作为建立TCP会话的源地址

2.BGP的报文类型
先建立TCP链接,之后再发送BGP的报文
OPEN(扩展能力:多协议BGP的能力、路由刷新能力、4字节AS号码的能力)
Keepalive ([R6-bgp]timer keepalive 50 hold 150 //针对所有邻居 ;[R6-bgp]peer 55.1.1.1 timer keepalive 40 hold 120 //针对某个邻居做出参数修改 )
UPdate,承载NLRI(网络层可达信息,即路由条目属性,公认必遵属性:1.起源(出身i,e和?);2.as-path;3.下一跳)
Notification
Route-refresh,(<R6>refresh bgp all import //发出去该种报文,请求对端发送更新-update报文给本端,import才会触发route-refresh报文)
3.BGP的邻居状态机
6种状态
IDLE
connect
active
opensent
openconfirm
est

常见的问题:指定的错误的邻居AS;指定了错误的邻居的地址;没有到达对端源地址的路由;本设备指定了错误的源地址;认证错误
为什么R1和R2之间没有指定“连接接口呢”
从邻居处得到bgp表(dis bgp routing)–过滤、策略,选出最优的路由–全局路由表(dis ip rou)
4.BGP路由的更新(通告)原则
4.1
BGP仅仅向邻居通告最优的路由;如果存在多路径(没有开启负载均衡的情况下),BGP选取最优的放入路由表
[R5]dis bgp routing-table peer 44.1.1.1 advertised-routes

BGP Local router ID is 10.1.35.5
Status codes: * – valid, > – best, d – damped,
h – history, i – internal, s – suppressed, S – Stale
Origin : i – IGP, e – EGP, ? – incomplete

Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn

> 5.5.5.5/32 55.1.1.1 0 100 0 i
> 6.6.6.6/32 66.1.1.1 0 100 0 60i
*> 55.1.1.1/32 55.1.1.1 0 100 0 i
[R5]
4.2
从ebgp邻居得到的路由会向所有的BGP邻居通告(ibgp和ebgp),除了得到该路由的eBGP邻居(水平分割)
下一跳的议题,下一跳在bgp中指到达其他AS的一个转发地址
1)iBGP环境下的下一跳
BGP路由最优的2个基本条件:A 下一跳可达性 B 同步关闭
[R1-bgp]peer 15.15.15.15 next-hop-local //从ebgp邻居处得到的路由,更新给ibgp邻居,会保持原来的下一跳(会导致下一跳不可达),ASBR针对ibgp邻居修改下一跳为本设备
[SW3]dis bgp routing-table

BGP Local router ID is 10.1.15.3
Status codes: * – valid, > – best, d – damped,
h – history, i – internal, s – suppressed, S – Stale
Origin : i – IGP, e – EGP, ? – incomplete

Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn

>i 5.5.5.5/32 11.1.1.1 100 0 20 345i
>i 6.6.6.6/32 11.1.1.1 100 0 20 345 60i
*>i 22.1.1.1/32 11.1.1.1 0 100 0 20i
2)eBGP多跳环境下的下一跳
3)多点接入网络环境的下一跳
BGP自动优化多点接入网络的下一跳(类似OSPF的转发地址技术)
在SW3和R5之间新建一个ebgp邻居
<R2>tracert 5.5.5.5
traceroute to 5.5.5.5(5.5.5.5), max hops: 30 ,packet length: 40,press CTRL_C to break
1 10.1.12.1 40 ms 10 ms 20 ms
2 10.1.15.5 60 ms 40 ms 30 ms
和重定向没有关系(ICMP重定向要经过报文触发)
4)RR(路由反射器)情况下的下一跳
敬请期待
4.3 iBGP的防环机制
从ibgp邻居处得到的iBGP路由不会再更新给iBGP邻居(铁公鸡,ibgp路由更新一跳-指一个ibgp邻居)
造成路由黑洞(由于某些设备没有运行bgp,而导致该设备缺少路由,而IP转发是逐跳转发)
解决方案:设备之间两两互联(所有设备都存在邻居关系)

作业:
1.在R1、R5和SW3之间观察MA网络的bgp下一跳自动优化,主要看R1到R5的路由
之后拿掉SW3和R5的邻居
2)构建ebgp邻居以及配置下一跳本地:
eBGP:2+4;1+2;5+6
iBGP:4+5;1+SW3
下一跳本地:R1\R5\R4

转载于:https://blog.51cto.com/enderjoe/2058348

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107769.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • USES_CONVERSION宏定义

    USES_CONVERSION宏定义USES_CONVERSION是用来转换类型的(比如T2A等转换需用此宏),比如我们很常见的问题:在Socket编程时候,我们的IP地址从界面上输进去一般都使用CString类型的,可是在SOCKADDR_IN中的inet_addr却是const char *我们就不能直接用CString来用。我们就可以使用T2A()宏了。 SOCKADDR_IN localaddr; …

  • xcode armv7 armv7s arm64

    armv6armv7armv7sarm64引起编译包翻倍增大的问题,下边来说一下关于ios这个指令集目前ios的指令集有以下几种:armv6iPhoneiPhone2iPhone3G第一代和第二代iPodToucharmv7iPhone4iPhone4Sarmv7siPhone5iPho

  • ubuntu18.04安装虚拟显示器,不接显示器可远程桌面

    ubuntu18.04安装虚拟显示器,不接显示器可远程桌面Overview主机配置启用远程控制安装软件和支持其它注意事项Reference主机配置系统:Ubuntu18.04显卡…

  • Java线程池参数配置

    Java线程池参数配置在线程池的实际使用中,参数的配置总让人难以把握。在网上搜了一下,主要有以下的方案。跟大家分享。1.基本概念1.1ThreadPoolExecutor的重要参数corePoolSize:核心线程数核心线程会一直存活,及时没有任务需要执行 当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理 设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭queueCapacity:任务队列容量(阻塞队列)当核心线程数达到最大时,

  • java版我的世界免费获取,持续更新~

    java版我的世界免费获取,持续更新~我的世界:Java版将与基岩版”地形”生成统一!1.18的隐藏更新!保持了JAVA版一致?事实上若你足够了解JAVA版的种子,你会发现其实很多不同的种子代码,会得到的是一个完全一致的世界。04问题四:未来未来JAVA版我的世界,和基岩版的Minecraft,它们真的可能变得完全一致!05问题五:Mojang为什么要让地形统一?一直以来,基岩版最大的魅力就。我的世界:java版免费披风,账号迁移轮到我了,快来看看怎么操作导致启动器显示我没有购买Minecraft,只有试玩资格。只有你选择微软账

  • python如何使用继承

    python如何使用继承#-*-coding:utf-8-*-'''使用继承'''classSchoolMember:def__init__(self,name,age,

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号