BGP笔记的基本概要

技术背景:

        在只有IGP(诸如OSPF、IS-IS、RIP等协议,因为最初是被设计在一个单域中进行一个路由操纵,因此被统一称为Interior Gateway Protocol,内部网关协议)的时代,域间路由无法实现一个全局路由控制(如,精细的操纵一个路由在不同域之间的一个流量路径)或产生次优路径(由于IGP只能看到自己域内的一个路由,这种情况通常发生在两个路由协议之间的一个双点双向引入)

        后面发明了EGP(一个具体的协议,而现在我们常说的EGP则是一类协议统称,外部网关协议)被用于实现在AS之间动态交换路由信息。但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求

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

AS的基本概念:

OSPF、IS-IS等IGP在组织机构网络内部广泛应用,随着网络规模扩大,网络中路由数量不断增长,IGP已无法管理大规模网络,AS(Autonomous System,自治系统)的概念由此0诞生。

AS是指在同一机构管理下,使用同一个选路策略的设备集合

AS之间需要直连链路,或通过VPN协议构造逻辑直连(例如GRE Tunnel)进行邻居建立

AS之间可能是不同的机构、公司,相互之间无法完全信任,使用IGP可能存在暴露AS内部的网络信息的风险。

BGP概述:

整个网络规模扩大,路由数量进一步增加,路由表与LSDB规模变大,路由收敛变慢,设备性能消耗加大

为此在AS之间专门使用BGP协议进行路由传递,相较于传统的IGP路由协议:

        1)BGP基于TCP,只要能够建立TCP连接即可建立BGP

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

BGP报文格式与报文概述:

报文格式:

L2 Header | IP Header | TCP Header | BGP Packet | CRC

BGP Packet(BGP报文):

1.Open:在TCP连接建立成功之后,协商BGP对等体参数,建立对等体关系

2.Keepalive:在BGP对等体建立完成之后,以60秒为周期轮询发送以维护BGP对等体关系——拓展,HoldTime时间默认为Keepalive时间的3倍

3.Update:在BGP对等体关系建立完成之后,若有路由需要发送或路由发生变化时,则发送BGP路由更新报文

4.Notification:BGP在运行中发现错误时,向BGP对等体通告错误信息,然后中止对等体关系

5.Route-refresh:用于改变路由策略后请求BGP对等体重新发送路由信息,只有支持路由刷新能力的设备会发送和响应此报文

BGP对等体关系概述:

说明

BGP存在两种对等体:EBGP与IBGP

IBGP概述:

位于相同自治系统的BGP Speaker(BGP发言者)之间的BGP对等体关系,通常用环回口配置IBGP邻居关系

EBGP概述:

位于不同自治系统的BGP Speaker之间的BGP对等体关系,并且两台EBGP路由器之间peer所指定的对等体地址必须路由可达

EBGP与IBGP的BGP路由传递:

EBGP之间传递路由时,通常会改变下一跳,但若是本端EBGP设备收到对端发来的EBGP路由,然后再传递给IBGP,则下一跳不会改变,下一跳仍然在与EBGP建邻的直连口。因此,通常需要修改下一跳为本设备建立IBGP关系的源地址

TCP连接源地址:

1)缺省情况下,BGP采用报文出接口作为TCP连接的源地址

2)但是在部署IBGP的时候,建议使用环回口(Loopback)作为TCP连接的源地址(又叫更新源地址),因为环回口是逻辑口,因此它更稳定,不会因为物理接口down掉而导致对等体关系挂掉,而是会走冗余路径来继续维持对等体关系,因为AS内的冗余设计也是非常有必要的,保证了topo的一个网络运行可靠性

3)在部署EBGP对等体关系时,通常使用直连接口的IP地址作为源地址,若使用环回口建立EBGP对等体关系,则应多注意EBGP多跳问题(EBGP的TTL缺省=1,需配置ebgp-max-hop,是在peer [ip-addr]后面加上ebgp-max-hop [num,若不填则缺省为255]。)

BGP六大状态机:

1.Idle:开始准备TCP的连接并监视远程对等体

2.Connect:BGP发起第一个TCP连接,连接重试计时器超时后,重新发起TCP连接,TCP连接失败,转入Active状态

3.Active:BGP不断发起TCP连接建立,如果连接重试计时器超时,就回退到Connect状态,TCP连接失败,就继续保持在Active状态,并继续发起TCP连接。

4.OpenSent:TCP连接已建立成功,开始发送Open包,Open包携带参数协商对等体建立

5.OpenConfirm:参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包

6.Established:已经收到对方的Keepalive包,双方能力特性经协商发现一致,开始使用Update消息通告路由信息

BGP路径属性:

简介:

任何一条BGP路由都拥有多个路径属性(Path Attributes),这些属性描述了BGP路由的各项特征,同时也会影响BGP路由的一个选路决策

BGP选路四大原则:

1)公认必遵:必须包含在每个Update消息里

1.Origin(起源)

2.AS_Path(所经过的AS号,从左到右按需排列)

3.Next_hop(下一跳地址)

2)公认任意:可能包含在某些Updata消息里

1.Local_Preference(出站选路,通常用于在AS内的选路控制,可以理解为IBGP之间的开销值Cost)

2.Atomic_Aggregate(原子聚合)

3)可选过渡:BGP不识别此类属性依然会接收该类属性并通告给其它对等体

1.Aggregater(聚合者)

2.Community(团体属性)

4)可选非过渡:BGP不识别此类属性会忽略该属性,且不通告给其它对等体

1.MED(入站选路,用于EBGP之间的路由控制,可以理解为EBGP之间的开销值Cost)

2.Cluster-List(集群列表)

3.Originator(起源者)

路由反射器(Route Reflector)概述:

技术背景:

IBGP水平分割规则用于防止AS内部产生环路,在很大程度上杜绝了IBGP路由产生环路的可能性,但是同时也带来了新的问题:BGP路由在AS内部只能传递一跳,如果建立IBGP对等体全互联模型又会加重设备的负担。

中转AS的IBGP问题(BGP路由黑洞):
     由于水平分割的原因,为了保证中转AS200所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联。然而实现IBGP全互联存在诸多短板:
        1.路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时
        2.AS内BGP网络的可扩展性较差
        3.为此可以采用路由反射器技术

而路由反射器RR正是作为该问题的一个最优解决方案横空出世:简单、高效、好用

角色:

引入路由反射器之后存在两种角色:
    RR(Route Reflector):路由反射器
    Client:RR客户端

RR会将学习的路由反射出去,从而使得IBGP路由在AS内传播无需建立IBGP全互联
AS内传播无需建立IBGP全互联
将一台BGP Speaker(BGP发言者)指定为RR的同时,还需要指定其Client。至于Client本身,无需做任何配置,它并不知晓网络中存在RR

路由反射规则:

    RR(Route Reflector)在接收BGP路由时:
        1)如果路由反射器从自己的非客户对等体学习到IBGP路由,则它会将路由反射给所有客户
        2)如果路由反射器从自己的客户学习到一条IBGP路由,则它会将该路由反射给所有非客户,以及除了该客户之外的其他所有客户
        3)如果路由学习自EBGP对等体,则发送给所有客户、非客户IBGP对等体
        4)非非之间不会传递

路由反射器(Route Reflector)的防环机制:

RR反射出的路由会增加两个属性防环:
        1)Originator(发起人):发送源的出口地址——针对RR客户端的防环
        2)Cluster list(集群列表):记录了经过的所有路由反射器集群ID——针对RR的防环
            1.路由反射簇包括反射器RR及其Client。一个AS内允许存在多个路由反射簇
            2.当一条路由被反射器反射后,该RR的Cluster就会被添加至路由的Cluster_list属性
            3.当RR收到一条携带Cluster_list属性的BGP路由,且该属性值中包含该簇的Cluster时,RR认为该条路由存在环路,因此将忽略关于该条路由的更新
 

配置:

  peer x.x.x.x reflect-client //配置本端为RR,并指定peer x.x.x.x为它的反射客户端

聚合路由:

简介:

与众多IGP协议相同,BGP同样支持路由的手工聚合,在BGP配置视图中使用aggregate命令可以执行BGP路由手工聚合,在BGP已经学习到相应的明细路由情况下,设备会向BGP注入指定的聚合路由

BGP支持手工或者自动的路由汇总,一般情况下不用自动,因为自动只能汇总成主类网络路由

配置:

手动汇总:
    在bgp视图下aggregate
    抑制明细:在aggregate末尾加关键字 detail-suppressed,翻译过来为明细-抑制,更好理解,即抑制明细路由

自动汇总:
    在BGP进程下summary automatic

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/46040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadolint提升Dockerfile的质量和安全性 —— 筑梦之路

https://github.com/hadolint/hadolint hadolint 在线版本:https://hadolint.github.io/hadolint/ FROM debian RUN export node_version"0.10" \ && apt-get update && apt-get -y install nodejs"$node_verion" COPY packa…

【JavaEE】AOP实现原理

概述 Spring AOP 是基于动态代理来实现AOP的, 此处主要介绍代理模式和Spring AOP的源码剖析 一.代理模式 代理模式是一种常用的设计模式,它允许为其他对象提供代理,以控制对这个对象的访问。这种结构在不改变原始类的基础上,通过引入代理类…

MongoDB教程(一):Linux系统安装mongoDB详细教程

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、Ubuntu…

应急响应总结

应急响应 日志 windows IIS 6.0 及更早版本: C:\WINDOWS\system32\LogFiles\W3SVC[SiteID]\ IIS 7.0 及更高版本: C:\inetpub\logs\LogFiles\W3SVC[SiteID]\ Apache HTTP Server C:\Program Files (x86)\Apache Group\Apache2\logs\ 或者 C:\Prog…

STFT:解决音频-视频零样本学习 (ZSL) 中的挑战

传统的监督学习方法需要大量的标记训练实例来进行训练,视听零样本学习的任务是利用音频和视频模态对对象或场景进行分类,即使在没有可用标记数据的情况下。为了解决传统监督方法的限制,提出了广义零样本学习(Generalized Zero-Shot Learning,…

Golang操作ES全系列(olivere curl操作es)

Golang操作ES全系列(olivere & curl操作es) 🚀全部代码(欢迎👏🏻star): https://github.com/ziyifast/ziyifast-code_instruction/tree/main/go-demo/go-es 1 olivere 创建clie…

六爻排盘 api数据接口

六爻排盘是一种古老的易学命理系统,‌起源于易经,‌是中国古代命理学的重要组成部分。‌它通过将六个爻位按照顺序排列,‌形成六爻,‌每个爻有阳爻和阴爻两种状态,‌共有64种不同的排列组合,‌每一种排列组…

html表格账号密码备忘录:表格内容将通过JavaScript动态生成。点击查看密码10秒关闭

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>账号密码备忘录</title><style>body {background: #2c3e50;text-shadow: 1px 1px 1px #100000;}/* 首页样式开始 */.home_page {color: …

《Linux系统编程篇》Visual Studio Code配置下载,中文配置,连接远程ssh ——基础篇

引言 vscode绝对值得推荐&#xff0c;非常好用&#xff0c;如果你能体会其中的奥妙的话。 工欲善其事&#xff0c;必先利其器 ——孔子 文章目录 引言下载VS Code配置VS Code中文扩展连接服务器 连接服务器测试确定服务器的IP地址VS code 配置ssh信息选择连接到主机选择这个添…

韦东山嵌入式linux系列-驱动设计的思想(面向对象/分层/分离)

1 面向对象 字符设备驱动程序抽象出一个 file_operations 结构体&#xff1b; 我们写的程序针对硬件部分抽象出 led_operations 结构体。 2 分层 上下分层&#xff0c;比如我们前面写的 LED 驱动程序就分为 2 层&#xff1a; ① 上层实现硬件无关的操作&#xff0c;比如注册…

搭建docker私有仓库

1. 无认证私有仓库 拉取镜像&#xff0c; sudo docker pull registry运行registry容器&#xff0c; sudo docker run -dit --restart always --name registry.me -p 8000:5000 -v /registry.me/registry:/var/lib/registry registry查看&#xff0c; curl 127.0.0.1:8000/v2/_c…

防御第二次作业完成接口配置实验

一、实验括扑图 二、实验要求 1.防火墙向下使用子接口分别对应生产区和办公区 2.所有分区设备可以ping通网关 三、实验思路 1、配置各设备的IP地址 2、划分VLAN及VLAN的相关配置 3、配置路由及安全策略 四、实验步骤 1、配置PC跟Client还有server配置&#xff0…

树莓派编译安装php出现cc: fatal error: Killed signal terminated program cc1

树莓派编译安装php出现cc: fatal error: Killed signal terminated program cc1 dd if/dev/zero of/swapfile bs1k count2048000 mkswap /swapfile swapon /swapfile swapon -s echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab swapoff /swapfile…

C# Winform中ToolStripButton控件实战应用

在C# WinForms应用程序中&#xff0c;ToolStripButton控件是ToolStrip控件的一个重要组成部分&#xff0c;用于创建工具栏上的按钮。下面实战演示如何在WinForms项目中使用ToolStripButton&#xff1a; 步骤 1: 创建一个新的WinForms项目 打开Visual Studio并创建一个新的Win…

datawhale - 基于术语词典干预的机器翻译挑战赛 (一)

文章目录 torchtext 库是干什么用的 &#xff1f;TranslationDataset 类定义 Seq2Seq模型EncoderDecoderSeq2Seq 类 load_terminology_dictionary 函数示例用法 train 函数主程序代码模型评价load_sentences 函数translate_sentence 函数evaluate_bleu 函数主程序 测试集上进行…

【C++】初始化列表”存在的意义“和“与构造函数体内定义的区别“

构造函数是为了方便类的初始化而存在&#xff0c;而初始化时会遇到const成员变量、引用成员变量等&#xff0c;这些变量不允许函数内赋值&#xff0c;必须要在初始化时进行赋值&#xff0c;所以就有了初始化列表&#xff0c;初始化列表只能存在于类的构造函数中&#xff0c;用于…

Spring Boot快速上手

一&#xff0c;什么是spring 首先登陆Spring官网&#xff0c;看一下官网如何形容的&#xff0c; 可以看出Spring是为了使java程序更加快速&#xff0c;方便&#xff0c;安全所做出的java框架。 1.Spring Boot Spring Boot的诞生就是为了简化Spring的开发&#xff0c;也就是更…

DevOps工具链整合:打造高效的自动化工作流

DevOps工具链整合&#xff1a;打造高效的自动化工作流 DevOps是一种软件开发和运维的协作方法&#xff0c;旨在通过自动化和协作来提高软件交付的速度和质量。为了实现DevOps&#xff0c;我们需要整合各种工具&#xff0c;形成一个高效的自动化工作流。在本篇文章中&#xff0…

gfast前端UI:基于Vue3与vue-next-admin适配手机、平板、pc 的后台开源模板

摘要 随着现代软件开发的高效化需求&#xff0c;一个能够快速适应不同设备、简化开发过程的前端模板变得至关重要。gfast前端UI&#xff0c;基于Vue3.x和vue-next-admin&#xff0c;致力于提供这样一个解决方案。本文将深入探讨gfast前端UI的技术栈、设计原则以及它如何适配手机…

【VS2019】安装下载库HtmlAgilityPack,可解析 HTML (图文详情)

目录 0.背景 1.环境 2.详细步骤 0.背景 项目需要&#xff0c;搭建WCF服务&#xff0c;需求是输入一个string类型字符串&#xff08;网页代码&#xff0c;如<html><body><p>Hello, <b>World</b>!</p></body></html>&#xf…