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

首先我们来搞清楚一个问题:

那就是为什么要分内部和外部协议?

直接搞同一个协议不就行了吗?

好的,例如我们现在只有内部协议,RIP和OSPF

对RIP协议:最多支持15路由器,无法实现全球联网

对OSPF协议:每个路由器保存一个链路状态数据库

如果要将全世界划分为一个区域

想象一下,链路状态数据库得有多大?

数据分组每查找一次路由表,可能需要经过上千万乃至亿级别的查找

而且路由器的硬件成本也会很大!

所以,没法用

划分为内外协议的本质原因

还是全世界的网络太大了

规模很小时,暴露的问题并不多

但是,一旦规模变得很大时,涉及到的问题的复杂程度将以指数级别的速度增长

因此,需要将问题分割,化简,各司其职

于是,有了内外网络协议的划分和设计

目录

一、BGP协议的特点

1、运行环境

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

二、BGP路由选择算法

1、eBGP和iBGP

[2、iBGP 和 eBGP的区别](#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报文的数据部分来传送

相关推荐
ProcessOn官方账号38 分钟前
如何绘制网络拓扑图?附详细分类解说和用户案例!
网络·职场和发展·流程图·拓扑学
Ven%1 小时前
如何在防火墙上指定ip访问服务器上任何端口呢
linux·服务器·网络·深度学习·tcp/ip
神的孩子都在歌唱2 小时前
TCP/IP 模型中,网络层对 IP 地址的分配与路由选择
网络·tcp/ip·智能路由器
阿雄不会写代码2 小时前
ubuntu安装nginx
linux·服务器·网络
starstarzz2 小时前
计算机网络实验四:Cisco交换机配置VLAN
网络·计算机网络·智能路由器·vlan·虚拟局域网
网安墨雨4 小时前
常用网络协议
网络·网络协议
Tlzns4 小时前
Linux网络——UDP的运用
linux·网络·udp
黑客老陈4 小时前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
运维·服务器·前端·网络·安全·web3·xss
HSunR6 小时前
计算机网络
网络·计算机网络
ZoeLandia6 小时前
WebSocket | 背景 概念 原理 使用 优缺点及适用场景
网络·websocket·网络协议