网络层7——外部网关协议BGP

embedded/2024/11/19 9:19:35/

首先我们来搞清楚一个问题:
那就是为什么要分内部和外部协议?
直接搞同一个协议不就行了吗?
好的,例如我们现在只有内部协议,RIP和OSPF
对RIP协议:最多支持15路由器,无法实现全球联网

对OSPF协议:每个路由器保存一个链路状态数据库
如果要将全世界划分为一个区域
想象一下,链路状态数据库得有多大?
数据分组每查找一次路由表,可能需要经过上千万乃至亿级别的查找
而且路由器的硬件成本也会很大!
所以,没法用
划分为内外协议的本质原因
还是全世界的网络太大了
规模很小时,暴露的问题并不多
但是,一旦规模变得很大时,涉及到的问题的复杂程度将以指数级别的速度增长
因此,需要将问题分割,化简,各司其职
于是,有了内外网络协议的划分和设计

目录

一、BGP协议的特点

1、运行环境

2、BGP路径选择必须解决的几个问题

二、BGP路由选择算法

1、eBGP和iBGP

2、iBGP 和 eBGP的区别

3、BGP路由信息格式

4、BGP路由器转发表的更新

三、三种不同自治系统AS

1、末梢AS

2、穿越AS

3、对等AS

四、BGP路由选择

1、选择本地偏好值高算法

2、选择AS跳数最少算法

3、热土豆路由选择算法

4、BGP标识符最小算法

五、BGP-4四种报文

1、open报文

2、update报文

3、keeplive报文

4、BGP报文格式


一、BGP协议的特点

1、运行环境

相对于内部网关协议RIP和OSPF,
BGP用于不同自治系统之间的路由通信
这就必须要解决一个问题:
那就是不同自治系统的差异问题
不同的自治系统评判路径好坏的标准不同
有的是路径长短、有的是速度、有的是带宽
因此,BGP无法使用任何一个自治系统的标准,也无法兼容
那应该用什么作为BFP寻找最佳路由的标准呢?
还需要考虑更多的因素,综合考量

2、BGP路径选择必须解决的几个问题

我们只是简单举几个例子,例如
政治与安全问题
我们国家的消息,最好不要绕过其他对我们有敌意的国家
否则有可能造成泄密问题

经济问题
路径算法的实现,需要考虑到经济成本
不能开销太大

综上,
到底用什么作为BGP寻找最佳路由的标准呢?
退而求其次,只能只用能否到达终点为标准
首先保证能不能到,其他的,管不了了
事实上,技术上也是可以办到的
但是那会使得BGP协议变得过于复杂
不利于该协议技术的普遍应用
应用成本会很高

二、BGP路由选择算法

1、eBGP和iBGP

一个自治系统有两个不同的路由器:边界路由器和内部路由器

两个边界路由器通信时,必须进行TCP链接(179号端口)
边界路由器之间进行的连接叫做:eBGP连接
他们之间互相发送的逻辑信息格式为:“X  AS1  R1”
    目的为X,AS1是自治系统,R1是边界路由器
意为:R1发送给其他边界路由器,告诉其他边界路由器,
       到达网络X,可以发送给R1路由器,经过AS1自治系统到达

但是,该路由不能仅仅让边界路由器知道
其他内部路由器也应该知道
因此,内部路由器之间也要进行连接
叫做iBGP连接,使用TCP连接
一个AS内部所有的iBGP必须连通
BGP协议不仅运行在AS之间,也运行在AS内部

2、iBGP 和 eBGP的区别

iBGP和eBGP遵循同样的协议BGP、报文格式和属性类型
只是通告方式不一样
对内部路由器来说:
GBP报文来自eBGP,报文可以接收,也可以发送
如果来自iBGP,就不会转发
因此,iBGP端口每收到一个BGP报文
首先判断该报文是来自eBGP还是iBGP

说人话就是:
对iBGP端口来说,内部不能互相传
你告诉我,就到我这就行了,不要再传了

3、BGP路由信息格式

BGP路由 = 前缀 + AS-path + next-path
前缀:目的网路
AS-path:需要途经的自治系统路径
next-path:下一跳,也是整个路径的起点

4、BGP路由器转发表的更新

设想一个情景,如图:


R1发送给R2一个eBGP报文:
“X,AS1,R1”(到达X,需要经过AS1,下一跳是R1)
对AS2的内部路由器R4来说
当收到该报文时,需要做的是:
1、将下一跳改为本自治系统的eBGP对等端口R2
2、在内部使用内部网关协议,找到R4到达R2的最短路径
3、根据最短路径更新下一跳
4、更新转发表
对于其他的内部路由器也是一样的道理
(下一跳使用IP地址)

三、三种不同自治系统AS

末梢、穿越、对等

1、末梢AS

人如其名,末梢AS是最后的网络终点,即不允许其他系统的分组通过自己,不会再传下去,我到头了
末梢AS只从直接连接的AS接收 / 发送分组
但是,末梢AS必须给人家付费才可

末梢系统可以连接多个网络
这种末梢系统交做多归属网络

2、穿越AS

人如其名
其他系统的数据分组可以通过穿越系统
穿越系统一般具有很好的高速通信干线
为其他系统提供有偿转发分组
注意,是有偿

3、对等AS

A和B之间约定,二者之间的数据分组互传免费
因此叫做对等

4、BGP路由兜圈子问题

为了避免分组在各个自治系统之间兜圈子
因此,对BGP路由信息中,如果AS-path有重复的自治系统
则删除该路由

四、BGP路由选择

1、选择本地偏好值高算法

在BGP路由中有一个属性值叫做本地偏好值
意思是:从本地AS开始,到达同一个网络
         选择一条最好的路径
至于路径好坏的标准,有管理员决定
标准可以是带宽速度、经济等

缺点:一定路径选定,全部的通信都通过该路径
    导致负荷过重,BGP协议无法自适应调整,只能人工修改

如果所有路径本地偏好值都相等,执行下一条算法
选择AS最少算法

2、选择AS跳数最少算法

哪条经过的AS少走哪条,不管AS的大小

缺点:AS少的路径不一定经过的路由器少
有可能只经过一个AS,但是该AS内有100万个路由器
那还玩个锤子

如果本地偏好值一样,经过的AS也一样,
就执行下一跳算法:热土豆路由算法

3、热土豆路由选择算法

核心算法:尽快让分组离开本AS,因此经过本地的路由器越少越好
这部分算法由内部网关协议执行
(其实按照中国人的说法,应该叫做烫手山芋算法,棘手)

如果本地偏好值一样,途径AS数量一样,内部转发出去也一样
上述三个算法都无法算出路径
则执行下一个算法:BGP标识符最小算法

4、BGP标识符最小算法

BGP报文中,首部有四个字节的字段,叫做BGP标识符,记作BGP ID
是一个无符号整数,作为运行BGP路由器的唯一标识
赋予它路由器所有接口中最大IP地址的值
于是,就转发给该接口

五、BGP-4四种报文

刚开始运行时,对等BGP端口交互整个BGP路由表
后期变化时,只更新变化部分

open(打开)、update(更新)、keeplive(保持连通)、notfication(通知)

1、open报文

用来建立BGP连接
建立TCP连接后发送

2、update报文

更新
用于撤销、添加新的BGP路由信息
每次可以撤销多条,但每次只能增加一条

3、keeplive报文

如何得知两个端口之间的TCP连接是否正常工作?
如果使用BGP路由表定期传送
不可取,因为BGP路由表很大
网络负担大
因此周期性互相传keeplive报文,表示正常工作
keeplive报文只包含BGP报文的通用首部(19字节)

那么隔多久发一次?
每个路由器有一个保持时间计时器
每收到一个BGP报文,该计时器置为0
如果约定时间内不能收到任何BGP报文,则认为对方不能工作

发送kepplive报文的时间为保持时间的1/3
如果对等端保持时间不一致,选小的

保持时间可以置为0,表示该链路总是正常工作
不会发送keeplive报文

BGP协议解决了RIP距离向量“坏消息传的慢”的问题
因为一个路由器可以从很多相邻路由器得到信息

4、BGP报文格式

四种类型的BGP报文使用相同的首部
BGP报文作为TCP报文的数据部分来传送


http://www.ppmy.cn/embedded/138736.html

相关文章

云原生周刊:Kubernetes v1.32 要来了

开源项目推荐 Woodpecker Woodpecker 是一款轻量级且功能强大的 CI/CD 引擎,以其高度可扩展性和易用性著称。它支持多种版本控制系统与编程语言,能够灵活适配不同开发流程,帮助团队实现高效的持续集成与交付。无论是个人项目还是大型团队&a…

STM32单片机锁死

自己画了一块stm32f407板子,外部晶振用了25MHz,烧写了8MHz的程序,第一次烧写成功,第二次开始识别不到芯片,第一次烧写成功由于外部晶振为25Hz,芯片内频率计算器却是按照8MHz写的,所以得出最后的…

智慧社区平台系统提升物业管理效率与居民生活质量

内容概要 智慧社区平台系统是为应对现代城市管理挑战而诞生的重要工具。随着城市化进程的加快,传统的物业管理方式已经难以满足日益增长的居民需求和管理复杂性。因此,引入智能化管理手段显得尤为重要。这个系统不仅仅是一个简单的软件,它是…

26-ES集群搭建、身份认证配置

虚机搭建 添加es用户 elasticsearch 默认不允许root用户启动,所以需要创建es用户 useradd elasticsearch passwd elasticsearch 解压安装包 #解压es tar -xvzf elasticsearch-7.14.2-linux-x86_64.tar.gz 将文件夹赋予es用户权限 #将文件夹赋予es用户权限 sud…

keil中char类型的默认取值范围

在编程时,注意他们的默认值(有符号类型或无符号类型) 正常声明时,char默认为无符号类型,给予-10时,得到的值不正确: 使用signed char声明后,就是有符号类型了:-10

px自动安装

px自动装机 pxe:自动安装系统必要的运行环境 无人值守:为系统定制化的安装需要的软件 优点 pxe的优点: 1、规模化:同时装配多台服务器(20-30) 2、自动化:系统安装和服务配置不需要人工干预 3…

大语言模型通用能力排行榜(2024年11月8日更新)

数据来源SuperCLUE 榜单数据为通用能力排行榜 排名 模型名称 机构 总分 理科 文科 Hard 使用方式 发布日期 - o1-preview OpenAI 75.85 86.07 76.6 64.89 API 2024年11月8日 - Claude 3.5 Sonnet(20241022) Anthropic 70.88 82.4…

实时通信协议概述:WebRTC、RTP/RTCP、RTMP、HLS 和 FLV 的比较与应用

总览 协议/格式细节对比适用场景用法WebRTC使用 UDP 传输协议,支持 P2P 通信,可以实现低延迟的实时通信。与其他需要服务器中转的协议相比,WebRTC 可以直接在客户端之间传输数据,降低了延迟和带宽消耗。适用于需要实时交互的场景…