BGP简介、BGP与IGP的区别、BGP的优势有哪些?

2023-11-08 23:59
文章标签 优势 区别 简介 bgp igp

本文主要是介绍BGP简介、BGP与IGP的区别、BGP的优势有哪些?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BGP的背景

 为方便管理规模不断扩大的网络,网络被分成了不同的AS(Autonomous System,自治系统)。

 早期,EGP(Exterior Gateway Protocol,外部网关协议)被用于实现在AS之间动态交换路由信息。但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求。

 BGP(Border Gateway Protocol,边界网关协议)是为取代最初的EGP而设计的另一种外部网关协议。不同于最初的EGP,BGP能够进行路由选路避免路由环路更高效率的传递路由维护大量的路由信息

 BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的路径矢量路由协议(Path-Vector Routing Protocol)。

在这里插入图片描述

BGP的优势

相较于传统的IGP协议:

1、BGP使用TCP作为其传输层协议(端口号为179),使用触发式增量路由更新,而不是周期性路由更新。

 这一点就注定了BGP在运行商及公网环境下的地位会比IGP高,因为IGP协议路由更新之后可能会造成网络的波动,甚至可能影响正常业务的转发。

2、只传递路由信息,不会暴露AS内的拓扑信息。

3、BGP能够承载大批量的路由信息,能够支撑大规模网络。

 IGP协议均共用一个IGP路由表,而BGP单独使用一个BGP路由表,两表之间互不关联。

4、BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导对等体按策略发布路由。

5、BGP能够支撑MPLS/VPN的应用,传递客户VPN路由。

6、BGP提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性。

总结:BGP更安全可靠、增量路由更新、支持超大型网络、具备更多的选路工具

IGP与BGP

BGP的建立与路由交互大致过程是怎样的?与IGP路由协议的邻居建立与交换路由过程有何区别?

1、BGP通过TCP报文建立邻居与发送路由信息,因为基于TCP建立邻居,所以只要两个路由器底层路由可达都有建立BGP邻居并交互路由。

2、BGP建立优先发起TCP建立连接,连接成功之后发送相关BGP报文请求建立BGP邻居,建立成功之后再发送BGP路由。

IGP协议通常都是完成邻居建立之前就已经交互完了路由信息,如OSPF建立完成邻接状态之后路由也完成了收敛。

而BGP是先建立好关系之后,再发送路由。因为BGP路由条目居多如果在建立过程中就发送路由,将会消耗大量时间在关系建立上。

如果要跨设备建立邻居的话,说明跨设备的底层路由已经打通了,那为何要在已经建立了底层IGP的网络上再建立一个BGP邻居呢?

1、论应用场景而定,如果是在企业内部网络部署IGP,的确已经足够。

2、但如果是运营商或一些大型网络中,路由条目较多,网络拓扑较为复杂的场景。使用IGP协议虽然可以运行,但网络拓扑发生细微变更将会导致整个网络拓扑变更,造成网络动荡,路由条目越多,收敛时间越慢。

3、而如果使用IGP为基础建立BGP邻居,相互学习BGP路由。当网络拓扑变更的时候,受到影响的设备只需要发送变更的路由条目发送给其它BGP邻居即可,稳定性显而易见。

BGP的基础名词

AS自治系统

 autonomous system,在互联网中,一个自治系统(AS)是一个有权自主地决定在本系统中应采用各种路由协议的小型单位。可理解为网络中的一个小帮派。

 不同AS通过AS号区分,AS号存在16bit、32bit两种表示方式。

在长度为16bit的AS号表示方式中:64512-65534为私有AS号。
在长度为32bit的AS号表示方式中:4200000000-4294967294为私有AS号。

 由IANA负责AS号的分发(同时它也是分发公网IP地址的那个组织)。

IANA的所有任务可以大致分为三个类型:
一、域名。IANA管理DNS域名根和.int,.arpa域名以及IDN(国际化域名)资源。
二、数字资源。IANA协调全球IP和AS(自治系统)号并将它们提供给各区域Internet注册机构。
三、协议分配。IANA与各标准化组织一同管理协议编号系统。

 当不同AS之间需要进行通信时,在AS之间使用BGP路由协议进行路由的传递。

BGP发言者(BGP Speaker)

 运行BGP的路由器都被称为BGP发言者或BGP路由器

BGP对等体(Peer)

 两个建立了BGP会话的路由器互为对等体,也称BGP邻居。

 BGP存在两种对等体关系类型:EBGP与IBGP对等关系

 1、EBGP(External BGP):位于不同自治系统的BGP对等体关系。

 2、IBGP(Internal BGP):位于相同自治系统的BGP对等体关系。

BGP路径属性(Path attribute)

 每条BGP路由都携带多种路径属性,BGP可以通过这些路径属性控制路径选择,而不像IS-IS、OSPF只能通过Cost控制路径选择,因此在路径选择上,BGP具有丰富的可操作性,可以在不同场景下选择最合适的路径控制方式。
在这里插入图片描述

更多相关笔记,观看CSDN:HCIA~HCIE个人笔记

这篇关于BGP简介、BGP与IGP的区别、BGP的优势有哪些?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373159

相关文章

java中的HashSet与 == 和 equals的区别示例解析

《java中的HashSet与==和equals的区别示例解析》HashSet是Java中基于哈希表实现的集合类,特点包括:元素唯一、无序和可包含null,本文给大家介绍java中的HashSe... 目录什么是HashSetHashSet 的主要特点是HashSet 的常用方法hasSet存储为啥是无序的

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

Python中@classmethod和@staticmethod的区别

《Python中@classmethod和@staticmethod的区别》本文主要介绍了Python中@classmethod和@staticmethod的区别,文中通过示例代码介绍的非常详细,对大... 目录1.@classmethod2.@staticmethod3.例子1.@classmethod

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Golan中 new() 、 make() 和简短声明符的区别和使用

《Golan中new()、make()和简短声明符的区别和使用》Go语言中的new()、make()和简短声明符的区别和使用,new()用于分配内存并返回指针,make()用于初始化切片、映射... 详细介绍golang的new() 、 make() 和简短声明符的区别和使用。文章目录 `new()`

Python中json文件和jsonl文件的区别小结

《Python中json文件和jsonl文件的区别小结》本文主要介绍了JSON和JSONL两种文件格式的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下... 众所周知,jsON 文件是使用php JSON(JavaScripythonpt Object No

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

python中json.dumps和json.dump区别

《python中json.dumps和json.dump区别》json.dumps将Python对象序列化为JSON字符串,json.dump直接将Python对象序列化写入文件,本文就来介绍一下两个... 目录1、json.dumps和json.dump的区别2、使用 json.dumps() 然后写入文