“网络巨轮”BGP的小秘密
引入
为啥会有BGP呢,既然OSPF这么强大,只用OSPF不就可以了吗,因为在以前网络规模不大的时候,OSPF、RIP这种简单路由协议就够用了,但是随着网络发展越来越快,路由信息也越来越多,这种
简单的路由协议就不能很好的运行了
------比如一般OPSF能承载最大的路由信息条目差不多就是9000左右,但是如果这个路由条目上万之后,因为OSPF的路由算法是SPF以自己为根生成树计算 ,会耗费大量的资源,路由器就支持不了,而BGP做了距离矢量协议,就能运行几十万条
路由引入的时候一般情况都是单向引入到BGP,因为BGP能容纳很多的路由,其他的IGP不行
什么是BGP
BGP(Border Gateway Protocol,边界网关协议)是一种用于自治系统间的动态路由协议;
前身是EGP,因为EGP过于简单就被BGP替代了;
特性:
BGP是自治系统外部路由协议,用来在AS之间传递路由信息;
路径矢量路由协议,从设计上避免了环路的发生;
由TCP协议承载,端口号是179;
支持CIDR和路由聚合;
路由附带丰富的属性;
只发送增量路由更新;
路由过滤和路由策略;
角色内容:
BGP发言者(BGP speaker)---运行了BGP的路由器或者三层交换机就叫BGP发言者;
Route-ID------在同一个AS标识唯一的路由器,运行BGP一定要Route-ID,可手动可协议自动生成;
BGP对等体(BGP Peer)-----相互之间建立的TCP连接、相互交换路由信息的BGP发言者;
IBGP对等体(Internal BGP Peer)------在同一个AS自治区域的BGP对等体;
EBGP对等体(External BGP Peer)-------在不同AS自治区域的BGP对等体;
补充说明:
如图,对等体也叫邻居,一般情况下,EBGP邻居之间上是物理直连,因为网络IP报文有个TTL跳数
EBGP建立的时TTL值是1,所以一般情况是物理直连,也不能用回环接口Loopback去相互建立
邻居,因为TTL为1,两个Loopback是两条,当然,可以人工配置TTL值,这样就可以更远一点的距离
建立EBGP邻居了;
从EBGP邻居收到的路由,BGP发言者会向其他所有邻居发送(EBGP邻居、IBGP邻居);
如图,IBGP邻居建立是在同一个AS里面,默认情况下,IBGP在建立邻居的时候TTL值为255,而且一般
建立IBGP邻居不用物理直连,但一定要能互通,因为这样才能建立TCP连接,而且一般用本地回环接口Loopback,因为Loopback接口是虚拟接口,在一台设备上面,只要有一个物理接口是UP的,那么Loopback就是打开的,所以Loopback接口就相对更稳定;
从IBGP邻居收到的路由,BGP发言者不会向IBGP邻居发送,例如,RTA收到RTB的BGP路由,RTA不会发给RTC,如果RTC想要RTB发送的路由,得让RTC和RTB在建立连接,这也是BGP的一种防环机制;
BGP的报文消息:
BGP一共有五种报文消息,采用的报文格式是“报文头+报文体”
消息类型 |
消息作用 |
Open |
建立邻居关系,有验证功能 |
Keepalive |
周期给对等体发送Keepalive消息,确认连接有效性,只有消息头,默认60s |
Update |
携带路由的更新消息 |
Notification |
检测到错误的时候,发送Notification报文,然后立即关闭BGP连接,Notification报文有很多种类型 |
Route-refresh |
指定对等体从新发送指定地址族的消息 |
BGP状态机:
如图
1、Idle状态(空闲状态):
BGP协议初始时是处于Idle状态。在这个状态时,系统不分配任何资源,也拒绝所有进入的BGP连接。默认两个路由器之间两端都能主动建立TCP连接,也可以配置只被动建立,只有收到Start事件产生时,才分配BGP资源,启动ConnectRetry计时器,启动对其它BGP对等体的传输层连接,同时也侦听是否有来自其它对等体的连接请求;
2、Connect状态(连接状态):
这个状态下,BGP等待TCP完成连接。若连接成功,本地清空ConnectRetry计时器,并向对等体发送OPEN报文,然后状OpenSent状态;否则,本地重置ConnectRetry计时器,侦听是否有对等体启动连接,并移至Active状态;
3、Active状态(活跃状态):
有start时间,但未TCP建立成功,就处于Active状态。这个状态下, BGP初始化TCP连接来获得一个对等体。如果连接成功,本地清空ConnectRetry计时器,并向对等体发送OPEN报文,并转至OpenSent状态;
4、Open-sent(Open消息以发送):
这个状态已经发送了Open到对等体这个状态下,BGP等待对等体的OPEN报文。收到报文后对报文进行检查,如果发现错误,本地发送NOTIFICATION报文给对等体,并改变状态为IDLE。如果报文正确,BGP发送KEEPALIVE报文,并转至OpenConfirm状态;
5、Open-Confgirm状态(Open消息确认):
表示自己已经发送Keepalive报文,这个状态下,BGP等待KEEPALIVE或NOTIFICATION报文。如果收到KEEPALIVE报文,则进入Established状态,如果收到NOTIFICATION报文,则变为Idle状态;
6.Established状态(建立连接)
这个状态下, BGP可以和其他对等体交换UPDATE,NOTIFICATION,KEEPALIVE报文。如果收到了正确的UPDATE或KEEPALIVE报文,就认为对端处于正常运行状态,本地重置HoldTimer。如果收到NOTIFICATION报文,本地转到Idle状态。如果收到错误的UPDATE报文,本地发送NOTIFICATION报文通知对端,并改变本地状态为Idle。如果收到了TCP拆链通知,本地关闭BGP连接,并回到Idle状态;
工作内容
BGP路由属性:把BGP的属性分为4类
公认必遵 |
Origin属性、AS-Path属性、NEXT_HOP属性 |
所有BGP路由器必须都能识别,而且必须存在Update消息中 |
公认可选 |
Local_Pref属性、Atomic_aggregate属性 |
BGP路由器都能识别,但是不一定要在Update消息中 |
可选传递 |
Communit属性、Aggregate属性 |
在AS之间具有可传递属性,可以不会识别但会传递可通告给别的 |
可选非传递 |
Med属性、Cluster_List属性、Originator_ID |
可以不支持,就会被忽略 |
BGP是距离矢量协议,同一条路由一定会选出最优路由,路由负载分担得通过特殊配置
1.AS-Path属性:公认必遵属性,一个路由到达一个目的地所经过的一系列的自治系统的有序列表
每当BGP将一条路由通告到其他AS就会,加上自己的AS,加在AS_Path最前面
----作用:路由选择和过滤,在其他因素相同的情况下,下图AS100区域会收到RTD和RTC两条去往AS65101的路由优先接受RTC的路由,RTD会被拒绝,也可以通过路由策略在RTA发送路由的时候加上多个AS达到接受RTD的路由
2.NEXT-HOP属性:公共必遵属性,BGP发言者去往目的地的下一跳,在发送路由的时候默认情况下
下一跳地址是出接口的地址,传递路由的时候如果不做配置,传递下一跳的信息
配置不会更改,配置next-hop-local就会更改路由中下一条信息,未本地接口的
下一跳
3.Origin属性:公认必遵属性说明BGP路由来源
三种类型------IGP:通过Network命令宣告或者路由聚合,AS内部产生的路由
----EGP:路由信息是通过EGP协议引入的
----Incomplete:其他方式而来,一般是import或者静态路由
在选路因素相同的情况下,IGP>EGP>Incomplete
4.Local_pref属性:公认可选属性,用在同一个AS里面传播,在IBGP邻居之间传播,不会该属性传递或
通告给EBGP邻居,Local_pref值越大越优先
例:当RTA的8.0.0.0/24路由进入AS65101 的时候,有两个出口进入,RTB会打上
Local_pref值未100,RTC打上200, ,所有RTD从邻居RTC收到的路由更优先
去往8.0.0.0/24的路由优先走RTC
5.Med属性:可选非传递属性,路由器表示一定要支持,不支持就忽略该属性,相当于IGP 的度量值
当9.0.0.0/24的路由在AS65101有两个出口,到AS65330的时候,可以设置Med值来
进行最优路径选择,Med值只在两个相邻的AS之间传递,不会收到这条属性的AS不会
再传给第三个AS,通常情况只比较来自同一个AS的Med值,可以特殊配置比较不同AS
6.Preferred-value属性:私有BGP属性,从多个EBGP而来的路由,系统会默认Preferred-value值为0,当
从不同的EBGP邻居收到更大值的属性,就会优先被选择,只对本地有效
选路规则:
发布策略:
走过路过,点个三连,十分感谢
一起学习,一起进步
技术交流:QQ---1740602259
“网络巨轮”BGP的小秘密相关推荐
- “网络巨轮”BGP基本实验演示
通过上一篇文章,我们了解到了BGP的四类公认属性,和选路规则,发布策略,下面我们进行实验演示 如图,我们现在在r1和r2建立EBGP邻居,r2和r4建立IBGP邻居,然后观察路由表和BGP各种表项 第 ...
- “网络巨轮”BGP的高级装备(增强配置)
引入 如下图在很多时候,BGP建立对等体的时候,要去建立大量的EBGP和IBGP对等体,IBGP还要全连接,这就给我们带来了大量重复的工作,路由表就会变得很庞大,区域内和区域之间就会很难管理,以下这些 ...
- “网络巨轮”BGP的区别对待手段
引入 BGP从路由的产生方面来说,可以说是路由的搬运工,它一般不生产路由,都是引入外来的路由进行传递,所以他也和IGP路由的着重点不一样,IGP重在路由的计算和发现,但是BGP作为EGP,它则是通过它 ...
- 18.网络技术——BGP的原理+实验题(后附练习题)
目录 1. BGP的概述 1.1 BGP消息类型及状态转换 1.2 BGP路由通告原则 1.3 BGP路径矢量特征 1.4 BGP协议特征 1.5 BGP Peer 1.6 IBGP 水平分割规则 1 ...
- calico的两种网络模式BGP和IP-IP性能分析
目前使用较多的网络插件有 flannel,calico,canel等,但是如果对比以上几种网络插件的性能,还是calico最受欢迎 一.calico概述 二.性能评测指标 三.物理机性能评测 四.物理 ...
- 大型网络之BGP路由通告路由传递配置
一.BGP路由传递回顾 1.BGP只传递最优的路由 2.IBGP防环 IBGP水平分割,从IBGP邻居学到的,不在更新给IBGP邻居.用于路由防环 3.EBGP防环 通过AS号防环,如果AS-Path ...
- 华为网络配置(BGP)
目录 前言 一.BGP概述 1.BGP介绍 2.BGP的起源 3.BGP作用 4.BGP的特点 5.BGP的分类和区别 (1)分类 (2)区别 6.BGP报文交互中的角色 7.BGP的路由器号(Rou ...
- BGP in the datacenter, 数据中心的BGP,数据中心网络架构,Clos网络架构
数据中心的BGP 说明: 这是最近在学习<BGP in the datacenter>.由于原文是全英文.所以在学习过程中,利用谷歌翻译和网易翻译,再把翻译不通的地方,加上自己理解稍微改了 ...
- 在internet网络的某自治系统内交换到达其他自治系统网络可达性信息的协议是_详解:BGP路由协议...
BGP简介 介绍BGP的定义.目的和受益. 定义 边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择 ...
最新文章
- 使用代码判断某个note是否已经implemented
- adf开发_ADF BC:创建绑定到业务组件的UI表
- 用C#开发Windows应用程序
- 一个指针变量到底占几个字节
- 数据结构之图的存储结构:邻接多重表
- flex和java_flex和java相结合准备工作和一个实例
- 【训练题】分队 P1672
- shop++ jtm2.5最新版本发布
- 关于职业规划最好最全面的一篇文章
- 免费证件照换底色微信小程序
- 三国论(16-20章)
- 阿里巴巴 29 个屌炸天的开源项目
- YIT-CTF—隐写术
- Arturia Sound Explorers Collection Belledonne现已上市
- esp8266解析php,ESP8266 Bootloader开源代码解析之rboot(一)
- c语言运算符 4,C语言运算符
- php 微信公众号客服,微信公众平台开发 多客服
- 离散小波matlab程序,三维离散小波变换matlab实现.pdf
- 光电耦合器型号(FOD3120,TLP350,TLP250)介绍应用实例精讲
- 王者荣耀QQ区和微信区怎么充值点券