BGP为什么要同步?细说同步规则

BGP是为TCP/IP互联网设计的外部网关协议,用于多个自治域之间。

它既不是基于纯粹的链路状态算法,也不是基于纯粹的距离向量算法。

它的主要功能是与其他自治域的BGP交换网络可达信息。

各个自治域可以运行不同的内部网关协议。

BGP更新信息包括网络号/自治域路径的成对信息。

自治域路径包括到达某个特定网络须经过的自治域串,这些更新信息通过TCP传送出去,以保证传输的可靠性。

一条从IBGP邻居学习到的路由在进入IGP(show ip route)路由表或通告给一个BGP对端之前,通过IGP必须知道该路由。

为什么需要同步?为什么不需要同步?

(1)当通过IBGP公布路由的时候,根据定义,它们是在同一个AS内进行公布。结果是,AS_PATH不会发生改变。

实际上,在路由公布给EBGP对端之前,本地AS号不会附加到AS_PATH上。

因此,IBGP路由不具备EBGP路由所具有的防止环路功能。

为了防止环路,BGP不会将从一个IBGP对端学习到的路由宣告给另外一个IBGP对端。

所以这就要求IBGP对等体间全互联网状结构。

这种网状结构连接有如下好处:

首先,在AS内防止环路。

其次,保证了BGP路由上的所有路由器都知道如何将数据包转发到目的地。

所以,全互联网状结构下,同步是不需要的,我们必须关掉它。

(2)当IBGP对等关系不是全互联网状连接时会出现什么情况呢?我们通过如下拓朴来分析同步在这种情况下的重要性。

??? 在这种情况下Shanghai和Beijing,Chengdu和Beijing之间已经配置了IBGP对等会话。

你可以看到Shanghai和Beijing正在交换它们本地网络,同时Chengdu和Beijing也在交换。

但Shanghai和Chengdu却无法学习到彼此的网络。

??? 通过全网状IBGP对等连接获得完全可达性。此时虽然在Shanghai和Chengdu之间没有直接的数据链路,但是这它们是对等的。

在Shanghai和Chengdu之间BGP使用的TCP连接要通过Beijing,但逻辑上这它们之间的连接是一个点到点的会话连接。

这一点非常重要,因为要建立TCP会话,Shanghai和Chengdu必须要知道将它们连接在一起的数据链路地址。

??? 非全互联网状结构,图1所示Shanghai和Chengdu不能学习到彼此的网络通告。

这和BGP同步与非同步没有任何关系,它是BGP防环的内在机制。在全互联网状结构中Shanghai和Chengdu能相互学习到彼此的通告,并将其加入BGP表,但不会加入IGP表,因为同步被启用。

同步要求从IBGP学习到的路由在进入IGP路由表之前,通过IGP必须知道该路由。

这里没有运行任何IGP,所以不能从IGP知道该路由同时也就不能加入IGP路由表。

把同步关掉后,学习到的路由就能加入IGP路由表。

原文地址:https://blog.51cto.com/14248289/2376506

时间: 2024-10-12 22:53:30

BGP为什么要同步?细说同步规则的相关文章

(转)同步音频--同步音频到视频

ffmpeg文档6 (2008-08-27 18:44:22) 转载 标签: 杂谈 分类: 翻译文档 指导6:同步音频 同步音频 现在我们已经有了一个比较像样的播放器.所以让我们看一下还有哪些零碎的东西没处理.上次,我们掩饰了一点同步问题,也就是同步音频到视频而不是其它的同 步方式.我们将采用和视频一样的方式:做一个内部视频时钟来记录视频线程播放了多久,然后同步音频到上面去.后面我们也来看一下如何推而广之把音频和视频 都同步到外部时钟. 生成一个视频时钟 现在我们要生成一个类似于上次我们的声音时

Spring Cloud Alibaba基础教程:Sentinel Dashboard同步Apollo存储规则

在之前的两篇教程中我们分别介绍了如何将Sentinel的限流规则存储到Nacos和Apollo中.同时,在文末的思考中,我都指出了这两套整合方案都存在一个不足之处:不论采用什么配置中心,限流规则都只能通过Nacos界面或Apollo界面来完成修改才能得到持久化存储,而在Sentinel Dashboard中修改限流规则虽然可以生效,但是不会被持久化到配置中心.而在这两个配置中心里存储的数据是一个Json格式,当存储的规则越来越多,对该Json配置的可读性与可维护性会变的越来越差.所以,下面我们就

java多线程编程——线程同步之同步函数

如何找出线程安全问题: 1.明确那些代码块是多线程运行代码 2.明确共享数据 3.明确多线程运行代码中哪些语句是操作共享数据的 同步函数示例: class Save{ private int sum; public synchronized void add(int n){ sum+=n; System.out.println("sum="+sum); } } class Cus implements Runnable{ private Save b=new Save(); publi

mysql主从同步(4)-同步延迟状态考量(seconds_behind_master和pt-heartbea)

一般情况下,我们是通过"show slave status \G;"提供的Seconds_Behind_Master值来衡量mysql主从同步的延迟情况.具体说明见:mysql主从同步(4)-Slave延迟状态监控,这种方法在大多数情况下确实是可行的.但是经验告诉我,仅仅依靠Seconds_Behind_Master的值来监测主从同步数据是否延迟是绝对不可靠的!!! 曾经遇到过的一个坑:Mysql主从环境部署后,刚开始主从数据同步是没问题的,也是通过监控Seconds_Behind_M

C#同步SQL Server数据库中的数据--数据库同步工具[同步新数据]

C#同步SQL Server数据库中的数据 1. 先写个sql处理类: using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Text; namespace PinkDatabaseSync { class DBUtility : IDisposable { private string Server; private string

【设计开发】 典型同步电路设计- 同步FIFO

一.前言 FIFO (First-In-First-Out) 是一种先进先出的数据交互方式,在数字ASIC设计中常常被使用.FIFO按工作时钟域的不同又可以分为:同步FIFO和异步FIFO. 同步FIFO的写时钟和读时钟为同一个时钟,FIFO内部所有逻辑都是同步逻辑,常常用于交互数据缓冲.异步FIFO的写时钟和读时钟为异步时钟,FIFO内部的写逻辑和读逻辑的交互需要异步处理,异步FIFO常用于跨时钟域交互. 本文介绍同步FIFO的典型设计方法. 二.原理 典型同步FIFO有三部分组成: (1)

android账号与同步之同步实现

上一篇博文我先介绍了账号与同步的账号管理,这篇就介绍一下还有一部分.就是android给提供的sync同步机制的使用. 事实上sync机制的使用和上一篇博文中介绍的账号管理非常类似,也是基于binder机制的跨进程通信.首先它须要一个Service.这个服务提供一个Action给系统以便系统能找到它.然后就是继承和实现AbstractThreadedSyncAdapter.此类中包括实现了ISyncAdapter.Stub内部类.这个内部类封装了远程接口调用,这个类getSyncAdapterB

(转)指导5:同步视频--同步视频到音频

ffmpeg文档5 (2008-08-26 23:21:41) 转载 标签: 杂谈   指导5:同步视频 如何同步视频 前面整个的一段时间,我们有了一个几乎无用的电影播放器.当然,它能播放视频,也能播放音频,但是它还不能被称为一部电影.那么我们还要做什么呢? PTS和DTS 幸运的是,音频和视频流都有一些关于以多快速度和什么时间来播放它们的信息在里面.音频流有采样,视频流有每秒的帧率.然而,如果我们只是简单的通过数帧 和乘以帧率的方式来同步视频,那么就很有可能会失去同步.于是作为一种补充,在流中

线程同步及同步变量

线程同步的本质是协调线程对资源的访问: 线程同步的工具是同步变量:互斥量.条件变量.信号量.读写量. 资源类型与访问控制: 1)独占排他型:互斥量: 2)满足一些条件才能访问:条件变量,条件检查与条件设置: 3)集合资源:信号量. 同步操作规范与访问控制 线程在执行临界区代码前会尝试获得访问控制权,检查同步变量的状态.并修改状态:然后进入临界区: 离开临界区时,要对同步变量做相应操作. http://www.cnblogs.com/likeyiyy/p/3670213.html 互斥量的本质是串