技术标签: 路由交换基础&路由协议 路由协议 BGP
BGP:边界网关路由协议 -
典型的EGP协议,用于AS和AS之间;
协议更新中是否携带网络掩码:携带网络掩码
协议算法:无算法 ,规则 ,路径矢量型
协议封装:基于TCP封装 ,端口号 179
特性:
1、可靠性--不能周期更新,增量更新;-TCP
2、可控性--该协议的真正意义,
在于AS间共享路由条目时更加方便快捷的干涉选路
3、AS-BY-AS 以一个AS为单位进行计数
IGP -hop-by-hop 一个路由器为一个单位
1.BGP版本 V1 V2 V3 V4 V4+ --MP-BGP(支持多种协议) |
---|
2.BGP一般被用于大型网络,无类别路径矢量 -----距离矢量的升级版—AS-BY–AS |
3.BGP更新方式:触发更新 |
4.具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议 |
5.默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径 |
6.可以在进项和出项对流量实施强大的策略–可控性 |
7.BGP使用open报文建立邻居,使用keepalive 报文维持邻居关系 |
8.keepalive 周期间隔60s hold 时间为180s |
9.BGP支持路由聚合(汇总),支持VLSM CIDR |
10.BGP支持路由认证 |
11.BGP非常消耗路由器资源(一个路由器只能运行1个BGP进程) |
AS自治系统--as编号
0-65535 1-64511公有
64512-65535私有
IBGP:内部BGP邻居关系,同一个AS之内建立BGP邻居
EBGP:外部BGP邻居关系,在不同AS之间建立BGP邻居
IBGP邻居学习到路由的AD: 200
EBGP邻居学习到路由的AD:20
Local BGP 路由=本地BGP路由值 200
open | Open包中存在hold time 和 RID;用于邻居关系建立;默认仅收发一次即可 |
---|---|
keeplive | Keeplive 保活 周期60s 保活 TCP会话 hold time 180s |
update | 更新包 路由条目:目标网络号+属性 路由更新,用于通告路由;用于撤销路由路由通告,使用TCP 中的ACK进行确认 |
notification | Notification 报错包 错误信息出现时发送 |
BGP邻居关系建立的条件:1.AS号 2. BGP router-ID必须不一致3.认证一致
1、启动配置完成后,本地和对端先单播进行TCP的三次握手,建立TCP的会话;
2、会话建立后,使用open报文进行邻居关系的建立,正常收发一次open报文即可;建立关系后生成邻居表;
3、邻居关系建立后,用户进行路由宣告;宣告配置完成后,BGP使用update包进行路由条目的传递---目标网络号+属性
4、本地接收到的所有路由条目均存储在BGP表中;--装载本地发出和接收到的所有路由
5、默认仅从BGP表中挑选一条最优路径到路由表内;
6、收敛完成,仅keeplive包继续周期保活TCP会话即可;
注:所有BGP协议的数据包均基于TCP的会话传递;TCP会保证这些数据包的可靠性-确认、重传、排序、流控(窗口机制)
1、新增网段--BGP路由上出现了新的宣告路由,使用更新包更新即可
2、断开网段--BGP路由上出现断开路由,若本地给邻居发送的是汇总路由;那么只要所有明细没有全部断开,将不进行BGP更新;若明细全部消失,使用更新包告知即可;对端删除该信息即可;
3、无法沟通---hold time到时时,断开邻居关系,删除所有通过该邻居学习到的信息;
黑洞产生的原因 :BGP可以非直连建邻,非直连传递路由信息;导致所有运行了BGP协议的路由器均学习到路由条目;但是数据层面流量在传输时所需要经过没有运行BGP协议的路由器时,将出现不可达现象;
解决方案:
1、物理链路全连或者vpn
2、邻居关系全连—所有设备运行BGP
3、将BGP的路由重发布IGP(LAB)
4、最佳解决方案---MPLS多协议标签交换
1、ebgp邻居间的水平分割–防止ebgp邻居关系间的环路
AS-PASH 属性 ----记录所有经过的AS的编号;接收的条目中若存在本地的AS号,拒绝接收;
2、IBGP水平分割
从一个IBGP邻居处学习到的路由条目,不得传递另一台IBGP邻居;
影响:该规则迫使同一个as内所有的BGP设备间建立邻居关系,关系建立数量成指数上升;
解决办法:故使用联邦、路由反射器来传递路由打破该规则;
r1(config)#router bgp 1 | 启动时携带真实的as号,无多进程概念 |
---|---|
r1(config-router)#bgp router-id 1.1.1.1 | 顺序:手工—环回接口最大地址—物理接口最大地址 |
BGP协议需要宣告的路由,不仅仅是本地的直连路由,而是本地路由表中通过所有方式产生的信息;
故在BGP协议中,邻居关系的建立与路由条目的宣告是分开进行;
由于IBGP邻居处于同一个as内,存在大量的可达路径;建议使用环回接口地址作为会话的源和目标地址,启用设备间所有可达链路;
r2(config-router)#neighbor 4.4.4.4 remote-as 2
切记环回建邻时,需要将更新源地址也修改为环回接口;
r2(config-router)#neighbor 4.4.4.4 update-source loopback 0
r4(config)#ip route 5.5.5.0 255.255.255.0 45.1.1.2
r4(config)#ip route 5.5.5.0 255.255.255.0 54.1.1.2
r4(config)#router bgp 2
r4(config-router)#neighbor 5.5.5.5 remote-as 3
r4(config-router)#neighbor 5.5.5.5 update-source loopback 0
默认EBGP邻居间数据包的TTL值为1,ibgp间为255; 故若使用环回来建立ebgp邻居关系,必须修改TTL值
r4(config-router)#neighbor 5.5.5.5 ebgp-multihop ?
<1-255> maximum hop count
255
r4(config-router)#neighbor 5.5.5.5 ebgp-multihop
建邻配置完成后,两端进行TCP的三次握手行为;建立TCP的会话
r1#show tcp brief
如果后边端口号黄标为179 则表示另一个IP向这个IP主动发起TCP会话
当TCP会话建立后,邻居间使用open报文来进行邻居关系;生成邻居表:
r1#show ip bgp neighbors 查看BGP的邻居关系–该表过大,不易查看
r1#show ip bgp summary 查看信息简报
State/PfxRcd状态处显示阿拉伯数字标识邻居关系已经建立,该数值标识通过该邻居学习到的路由条目数量;
BGP协议不计算产生路由条目,而是将本地路由表中的路由条目共享到BGP来;这些路由是通过什么方式获取的不关注;
规则:宣告时所填写的条目内容必须和路由表中的记录完全一致
r1(config)#router bgp 1
r1(config-router)#network 1.1.1.0 mask 255.255.255.0
宣告条目后,本地将生成BGP表—本地收发的所有路由信息;
r1#show ip bgp 查看BGP表
状态注解:
* 标识条目可用--可以加载到路由表
不可用的情况:
1、*被r取代 ---不装载--本地路由表中通过其他更好的方法已经拥有了该路由
2、*被s取代 ---被抑制--被管理员策略了,该条目不得传输给邻居;
>标识条目是优秀的---可以加载路由表,可以传输给邻居
优的条件:1、同步问题---本地必须通过igp也学习到该条目,BGP才能优
该规则在高版本设备默认关闭
2、下一跳可达问题;AS-BY-AS--规定条目在一个AS内部传递,其属性不变化;
将路由条目传递给IBGP邻居时,下一跳默认不修改的;可能导致下一跳不可达
解决方法:
r2(config)#router bgp 2
r2(config-router)#neighbor 4.4.4.4 next-hop-self
将路由传递给邻居4.4.4.4时修改下一跳地址为本地
当条目传输给EBGP邻居时,进入下一个AS了,过程中修改属性(包括下一跳)
注:一条条目必须优且可用才能加表;只有优同时没有被抑制(人为)就可以传递;
i标识该条目通过IBGP邻居学习
全角:是指中GB2312-80(《信息交换用汉字编码字符集·基本集》)中的各种符号。半角:是指英文件ASCII码中的各种符号。全角状态下字母、数字符号等都会占两个字节的位置,也就是一个汉字那么宽,半角状态下,字母数字符号一般会占一个字节,也就是半个汉字的位置,全角半角对汉字没有影响。现在我们来看一下在java编程语言中如何来判断字符串中的全角半角符号?有两种方式可以判断: ...
1、 Apache HBase HBase :就是bigTable 支持数十亿列 Apache HBase是一个使用Java语言编写的、 以谷歌BigTable技术为基础的开源非关系型列式分布数据库, 可运行在HDFS文件系统之上。HBase提供了很好的存储容错能力和快速访问大量稀疏文件的能力。HBase遵循Apache 2许可证。Hbase的优点:1 列的可以动态增加, 并且列为空就...
为什么80%的码农都做不了架构师?>>> ...
有时候需要label,比如强化学习的离散动作空间,输出动作索引;有时候需要one-hot,比如训练数据或者输入上一个状态的动作,简单的互相转换还是重要的。通过 快速生成:one-hot 转labelnumpy可以通过 实现,pytorch 可以通过 实现:...
安卓7.0开始以及以上抓包的时候都要处理一下证书。改apk包、在电脑上上输入下面命令。openssl x509 -inform PEM -subject_hash_old -in getssl.crt | head -1 //得到类似字符串:f8ccc956cat getssl.crt > f8ccc956.0openssl x509 -inform PEM -text -in ...
1.首先定义一个div &lt;div title="统计表" data-options="region:'center'"&gt; &lt;p id="firstPieChart" style="width:100%; height:470px;"&gt;&lt;/p&gt; &lt;/div&gt;2.//加载饼状图
kafka运行了一段时间,有一天突然发现kafka服务停了。看日志more logs/server.log.2020-04-20-11如下:./server.log.2020-04-20-11:java.nio.file.NoSuchFileException: /tmp/kafka-logs/__consumer_offsets-49/00000000000000000000.log.sw...
在pygame 编写的飞机大战里,可以用鼠标来移动,鼠标左右键来发射子弹。这个相对来说容易写。经过多次实践,实现如下功能:用 ASDW来控制飞机移动,用J来控制子弹发射。当然键是可以随意定义的,用这些是因为个人习惯。为了简单化,只是让程序 print() 输出信息来表示实现的功能。1、最简单的实现方法import pygamefrom sys import exit #用...
上面是我创建的群聊,欢迎新朋友的加入。最近研究USB复合设备主要是把键盘和电脑音量控制两个东西给合并成一个设备首先要知道的一点的是,不论是键盘、鼠标、或者这个标准的HID用户控制设备,本质都是HID设备所以对于这个类型的复合设备,只要端点大小足够,其他没什么变动的,无非是修改下报告描述符因为都是HID设备,也不需要额外的端点关于报告描述符,我这不多解释,可以参考http...
总目录详见https://blog.csdn.net/mrcrack/article/details/84471041做题原则,找不到测评地址的题不做。2018-11-28重走长征路---OI每周刷题记录---12月14日 2013本周共计25题测评地址:模拟1.银翼の舞 2.Victoria的舞会1 3.Cantor表 4.计数的梦 5.神风堂人数 ...
这篇文章是实现了百度贴吧一个老版本的悬浮式顶部和底部的标题栏效果,觉得还挺有意思的就想跟大家一起分享一下,也算是对前面学过的UI设计知识的一个总结吧。好的,话不多说,请大家先看效果图。一、实现效果图 二 、项目结构图三 、详细代码编写1、主布局Tab选项卡页面,mai
cvx 是一个凸优化的包(下载页面:http://cvxr.com/cvx/download/),这里介绍一下如何给 matlab 安装 cvx,并且安装 mosek 和 gurobi 求解器。当然,安装 mosek 和 gurobi 求解器需要 profeesional license。如果你有教育邮箱的话,是可以直接获得这两个 license 的。其实安装过程并不复杂,只要按照官网上的要求一步步