Juniper-R&S-BGP:一些写在前头的基础知识

AS (autonomous system)自治系统

BGP提供环路防护机制(使用AS-Path属性)

一个AS,实际上就是路由器设置的一个控制和管理域。一个单独的管理域可以使用一个AS号来定义,并且只能赋予一个AS号。

应为BGP使用AS这个属性来标示路线,所以BGP又叫路径矢量路由协议Path-Vector Protocols。

BGP路由协议的特性(待补充)

  • BGP路由协议由很强的操控性
  • 可靠传输:BGP使用TCP协议(TCP 179端口),TCP本身的特性(三次握手、ACK、序列号、校验和、流控等)保证了BGP的可靠性。
  • 路由表的可扩展性:BGP对等体建立连接后,初始通告是整张路由表,然后就是根据需要发送路由更新了。

BGP的对等体Peer

BGP的对等体分为两种 IBGP和EBGP。

EBGP:当两个BGP路由器在不同AS网络时,他们之间的Session就是使用EBGP连接。

默认一个EBGP连接的Peer必须是直连:也就是IP头部TTL值被置为1.因此中间不允许存在其他三层设备。

IBGP:当两个NBGP路由器在相同的AS网络,他们之间的Session就是成为IBGP连接。

IBGP邻居不需要物理直连,BGP数据包的IP首部TTL值被设置为64 ,只要TCP的179端口可达,IBGP邻居关系就能建立,IBGP连接的建立依赖于AS网络中的IGP(静态、直连也算在内)产生的路由。

IBGP邻居有个重要的特性:IBGP邻居不会把从IBGP邻居学到的路由再发给一个IBGP邻居,但是会把从EBGP邻居处学到的路由发给IBGP邻居。


BGP 连接

BGP是增量(incremental)更新

不会定期的刷新全部路由信息

解决路由黑洞的方法。。

(详见专题)

BGP邻居状态

BGP邻居状态一共6种

----------------前三种属于TCP连接部分

  • Idle :这是邻居的初始化状态,在这个状态路由器将拒绝所有进入的TCP会话请求,当BGP进程启动后,路由器会向对等体发送TCP请求,然后本地路由器切换到Connect状态,并监听远程路由器的初始连接请求。
  • Connect:在Connect状态,本地路由器等待TCP会话建立完成。
  • Active

----------------后三种属于BGP连接部分

  • OpenSent
  • OpenConfirm
  • Established



基本的路由信息

各个BGP路由器使用本地内存来存放路由信息,这总的来说称为 RIB(Routing Information Base),一个BGP对等体维持三种类型的RIBs

  • Adjacency-RIB-in
  • Local-RIB
  • Adjacency-RIB-out

Adjacency-RIB-in

adjacency-RIB-in 是本地路由为每一个BGP对等体创建的。从对等体接收到的所有路由都被存在合适的内存列表里。

--在这里需要注意:本地路由器会丢弃包含 AS Path环路的路由。

Local-RIB

到达每个目的地的最佳路由被存放在Local-RIB列表里,这些路由是本地路由器用来转发数据流量的。在这个RIB里,基于每个目的地,只有单一的路径通告(最优的)

Adjacency-RIB-out

每个BGP对等体同样创建一个属于自己的Adjacency-RIB-out表为outbound路由通告(所有outbound路由通告被存放在adjacency-RIB-out列表)。只有在Local-RIB 里面的路由才有资格被放进outbound数据库,换句话说,一个BGP路由器通告最佳路由(被用作流量转发的路由)

默认所有Local-RIB路由都被放置到adjacency-RIB-out列表。当然,你可以通过export路由策略修改这个默认的行为,一个策略可以添加、修改或者移除各个路由的属性,此外,一个策略可以防止某些路由别通告到指定的对等体。



BGP 路由选择进程

本地路由器会基于Adjacency-RIB-in 列表的路由信息,使用一个路由选择算法确定到达各个目的地的最佳路由。这个路由选择算法的主要依据是各种BGP属性值

  • 如果在Inbound中只有单条到达某一目的地的路由,那么该路由会直接放到Local-RIB列表,同时被用于数据包的转发。
  • 当到达同一目的地有多条路由时,就需要比较他们的属性值,在选择算法的每个步骤里,都是为了淘汰到达目的地的次优路由,如果还是存在多条路由,那么选择一个算法再进入到下一个步骤,一直到选出最优路由。

BGP选择算法步骤

  1. 各个路由的Next-Hop属性在本地路由表中必须可达的,如果不可达,本地路由器会丢弃该路由。
  2. 路由器会选择最佳(Local-Preference属性值得路由。
  3. 路由器会选择具有最短 AS Path 长度的路由。
  4. 路由器会选择具有最优 Origin属性的路由。(Origin属性值有三种,IGP,EGP,Incomplete,优先顺序是IGP(i)>EGP(e)>Incomplete(?))。
  5. 路由器会选择具有最小 MED(Multiple Exit Discriminator)属性值的路由。
  6. 路由器会优选基于EBGP对等体学习到的路由(相比从IBGP对等体学习到的路由)。
  7. 路由器会选择到达BGP Next Hop具有最小 IGP Metric值得路由。
  8. 如果在IBGP对等体使用RR(路由反射器),那么路由器会选择具有最短Cluster-List长度的路由。
  9. 路由器会选择具有最小RID(BGP对等体)通告的路由。
  10. 路由器会选择具有最小对等体地址(BGP对等体)通告的路由。

BGP的属性

1、Next Hop属性

属性代码 3

公认强制属性

BGP路由器学习到的到达目的地的下一跳

0.0.0.0 代表 是自己产生的路由,其他代表是别人产生的路由(自己产生的路由优先)

Juniper路由器将标记出来的路由隐藏起来,可以使用show route hidden查看

利用BGP Next Hop有五种可行的方法。

  • 设置下一跳属性。许多人认为这是一个IBGP Peer会话的最佳实现方式,这个方法允许通过路由器改变下一跳属性。
  • 使用一个IGP被动接口。在这个方式,EBGP对等体连接接口被配置为AS里IGP的被动接口,这允许IGP通告外部子网像内部路由一样在EBGP邻居还没有建立时。在AS的所有路由器就能找到通过下一跳的EBGP-speaking router.
  • 配置一个export policy,使用export 策略配置将直连路由通告给IGP,这样内部AS路由器就知道EBGP-Speaker路由器在哪里(Next-Hop
  • 建立一个IGP邻接。
  • 利用静态路由。

2、Local-Preference 本地优先级

属性类型代码 5

公认自决属性

所有BGP路由器必须识别本地优先级属性。

本地优先级用于AS内部(常被用于选择出口路由器)

默认本地优先级值为100

取值范围 1- 4294967295

3、AS-Path

属性代码2

公认强制属性

防止路由环路

路由经过一个AS时,会自动添加这个AS号到BGP的路由AS列表中

只有在EBGP邻居之间通告的时候,AS号才会被添加,IBGP邻居通告时不会添加

4、Origin 起源属性

属性代码 1

公认强制属性

起源属性描述了BGP路由的起源

BGP路由的起源有三种

  1. IGP有IGP路由学来的,      使用“I”标识,并且编码值设置为0。
  2. EGP                                   使用“E”标示,编码值设置为1。
  3. Incomplete 路由源未知的 使用“?”标识,并且编码值设置为2。

IGP最优,EGP其次,?最差(重分布过来的路由标示就是“?”)

JunOS软件总是设置一个Origin值给所有使用export策略通告的IGP路由。


5、MED属性

属性代码 4

相当于IGP的metric值

JunOS软件解释不存在的MED值为0。


6、Community 团体属性

属性代码 8

可选的可传递的属性

该属性为4字节格式是 65001:1001 (前面是AS号,后面为属性值)

Juniper-R&S-BGP:一些写在前头的基础知识

时间: 2024-08-10 18:18:42

Juniper-R&S-BGP:一些写在前头的基础知识的相关文章

GVRP、RIP、VRRP、OSPF、BGP、NAT、ACL一些基础知识

GVRP 1.GVRP的作用是什么?GVRP,通用VLAN注册协议,是一种公有协议. 主要是用于在交换机之间自动同步 VLAN 信息,为确保 交换机上 VLAN 信息数据库的一致 DHCP 1.DHCP的作用是什么?通过架设 DHCP 服务器,自动的为终端主机分配IP地址等相关参数, 从而实现IP地址的批量分配与管理,提高管理效率. RIP 1.RIP分为几个版本,工作原理是什么?RIP有:RIP1原理:路由器运行 RIP 协议后,会在启动进程的端口上周期性的发送RIP更新报文,确保路由器之间保

js/jquery 页面分页(看别人写的看不懂,自己写了一个---仅基础知识) 另自己倒一个jquery的.jar包即可使用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

R语言教程:写给高级入门者的数据打理攻略

http://developer.51cto.com/art/201312/423612_all.htm 原文地址 如果大家还未完全熟悉R语言.甚至不能轻松利用它实现最基本的处理任务,我建议各位先查阅其它指导文章.帮助自己积累对R语言的认识.但如果大家已经拥有一定的背景知识,希望能够进一步提升自己的开发技能——或者单纯只是想看看R语言如何完成文章中罗列的四项任务——那么请跟着我继续阅读. 学习如何添加column.计算总和.对结果排序以及数据改造. 强大的能力在带来责任之外,也给我们增添了恼人的

R语言常用基础知识

seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),    length.out = NULL, along.with = NULL, ...) 举例----------Examples----------seq(0, 1, length.out=11) seq(stats::rnorm(20)) #  seq(1, 9, by = 2)     #  seq(1, 9, by = pi)    #  seq(1, 6, by =

写kibana4插件——基础知识

Writing Kibana 4 Plugins – Basics 从kibana4.2.0以上,可以为kibana编写自定义插件,并未所有kibana用户提供.本教程系列将引导您完成编写第一个插件的过程,并向您展示插件提供的一些可能性,例如添加自定义可视化,编写新的"应用程序"(从4.2.0开始,就你所知,Kibana本身和你喜欢它仅仅作为框架中的一个应用程序),或者在可视化的检查窗格中添加新的选项卡. 严重警告:Kibana提供了一个关于如何从4.2.0安装插件的界面.它不提供公共

纯CSS写三角形-border法[基础篇]

纯CSS写三角形-border法[基础篇] 注意:所有知识点将不考虑IE6 ( ̄▽ ̄") 在制作如上图所示的三角形时,我们基本采用PNG或GIF图片来实现,这种形式在编写代码时较容易掌握,所以得到普遍制作者的认可.但涉及到后期优化维护的话,就需要不断的修改图片,在图形编辑器和代码编辑器之间来回切换,这无疑是加大了工作量.所以,如果单纯利用CSS来写的话,不但可以减少网站零碎图片的数量.减少了加载图片的时间,而且在修改时不用再重新切图,减少工作量. CSS3出现以后,“方形旋转45度”制作三角形的

基础知识漫谈(1): 想到哪儿写到哪儿

一.想到哪儿写到哪儿 给公司新员工培训,和网上的新手做交流,我最先强调的都是基础. 基础有什么用? 1.节省沟通成本 有天,java群里来了个新人,上来就提了一个问题: “我代码跑不起来,怎么办?” 这一看就是还没入门,没办法提供具体的信息. 于是有个有耐心的老鸟出来了,开始了一连串提问:异常栈看一下?有编译期异常吗?贴出你的main函数看看? 新人收到了问题并且抛出了你都在说什么异常. “你还是截图吧.”老鸟说. 这里涉及到了异常栈,编译期,main函数等等再基础不过的知识,有那么部分毫不客气

[转]基础知识漫谈(1): 想到哪儿写到哪儿

[转]基础知识漫谈(1): 想到哪儿写到哪儿 本文转自(http://www.cnblogs.com/anrainie/p/5606570.html) 一.想到哪儿写到哪儿 给公司新员工培训,和网上的新手做交流,我最先强调的都是基础. 基础有什么用? 1.节省沟通成本 有天,java群里来了个新人,上来就提了一个问题: “我代码跑不起来,怎么办?” 这一看就是还没入门,没办法提供具体的信息. 于是有个有耐心的老鸟出来了,开始了一连串提问:异常栈看一下?有编译期异常吗?贴出你的main函数看看?

嵌入式中烧写程序的基础知识有哪些

在嵌入式的基础知识学习中,烧写程序是必备的知识点之一,需要把写的程序代码烧写到单片机上,在单片机上检验写的程序代码是否正确,是否能够正常运行,下面我们来学习下什么是烧写和固件.常见的几种烧写方式.三种编程方式的区别. 简单整理下固件.烧写的定义以及烧写过程的几种方式. 一.什么是烧写(下载)和固件 嵌入式系统需要预先将程序写入ROM/FLASH中,在启动时载入运行这些程序,将已经生成的程序写入ROM/FLASH的过程叫做烧写.这样固化在存储介质上的文件叫固件(firmware).那么烧写即为更新