免费网站域名查询微信h5用什么软件制作

当前位置: 首页 > news >正文

免费网站域名查询,微信h5用什么软件制作,网站建设流程表,网站建设平台赚钱本章解答以下问题#xff1a; ASN#xff0c;团体#xff08;community#xff09;#xff0c;属性#xff08;attribute#xff09;#xff0c;最佳路径这些BGP术语是什么疑似#xff1f;在数据中心中应该使用eBGP还是iBGP?在数据中心使用BGP时#xff0c;应采用什…本章解答以下问题 ASN团体community属性attribute最佳路径这些BGP术语是什么疑似在数据中心中应该使用eBGP还是iBGP?在数据中心使用BGP时应采用什么ASN编号方案在数据中心使用BGP时应如何修改BGP的计时器 BGP 基本概念 BGP协议概述 BGP 是一种路径矢量路由协议。“矢量”是一个数组或列表。因此路径矢量路由协议是一种构建并分发对象数组的协议数组中的每个对象定义了从一个网络地址(通常为IP地址)到另一地址的路径。这里用的是“对象”而不是“路由器”因为对象是一种称为 AS 的东西。 撰写本书时BGP的当前版本号为4也称为 BGP-4。BGP-4 的主要定义于RFC4271 中但该文档中的某些规范已被后面的一些 RFC (例如能力通告相关的 RFC)所覆盖。 BGP基于TCP之上运行因此BGP 可以忽略例如分片、组装、消息确认、重传及其他一些在别的路由协议中通常需要处理的问题。实际上 BGP 是唯一一种基于 TCP的路由协议。其他常见的路由协议要么基于 IP要么甚至使用更原始的 L2 数据包。BGP在TCP端口 179 上接收新的连接或者发起连接请求。 BGP 众所周知的复杂性源于其协议的通用性。BGP 支持交换多种网络类型的路由信息包括IPv4和IPv6还支持网络虚拟化技术如 MPLS 和VXLAN因此BGP被称为多协议路由协议。除此以外由于 BGP 用于在多个管理域之间交换路由信息因此还支持应用复杂的路由策略这些策略可以控制 BGP 多方面的行为例如计算到达目的地的最佳路径需要通告的路由以及通告路由的哪些属性。BGP 还支持第5章中介绍的 ECMP以及 UCMP (Unequal-Cost Multipath非平衡多路径)并不是所有的 BGP 实现都支持了 UCMP。 在不同的管理域(或按照 BGP 术语称为自治系统)之间交换路由信息的 BGP称为eBGP (external BGP外部 BGP)。 在管理域内 (或在同一自治系统内)交换路由信息的 BGP称为iBGP (internal BGP内部BGP)。 BGP 对于eBGP和iBGP的路由信息交换有着不同的规则。 BGP 是一种可扩展性很强的协议人们一直在为 BGP 提出各种新的想法。在很多方面来说BGP就像是路由开发者的 HTTP 协议。它被用于在路由器之间传送各种信息这些信息可能与路由完全无关或者不是 BGP 最初设计用的目的。BGP的可扩展性使其适应性很广并且功能强大但是如果你尝试使用它提供的所有功能也将很难理解。因此这一点至关重要:应该尽量简化对 BGP 的使用不要仅仅因为可以就使用 BGP的某些特性。 BGP 对等连接 BGP 对等连接之间不是客户端- 服务器关系而是相互平等的对等关系。图 14-1 展示了BGP 对等会话生命周期中的时间线序列。 在进行对等连接时BGP 两端的任何一方都可以发起 TCP 连接。通常两端发起的连接都会成功这样会导致 BGP两侧有两个单独的 TCP 连接在进行相互通信。这种情况在 BGP 标准中被称为连接冲突。BGP 提供了办法来解决冲突以将两个 TCP连接减少为单个 TCP连接。BGP 发言者有一个唯一标识符 router-id这是一个32位的无符号数字。在发生连接冲突时具有较大 router-id 的发言者发起的连接会被选中获胜。与某些其他协议不同的是BGP 在会话初始化期间未定义优先级字段因为选用哪一方发起的连接是一个无关紧要的细节不会影响BGP做出的任何决策。 BGP标淮还定义了“被动”连接的方式即 BGP对等方的其中一方并不主动发起TCP连接只在对方节点请求连接时做出响应。当运行 Kube-router 或其他此类解决方案的节点与运行在路由器上的 BGP 进行对等连接时就采用了被动连接。 BGP 状态机 BGP的状态机非常简单只包括三个主要阶段: TCP 连接建立解决连接冲突和能力交换路由交换 这些阶段中包含一些更具体的状态如图 14-2 所示。图中的虚线表示出现错误时的状态转换实线则表示正常情况下的状态转换。 自治系统编号 每个BGP发言者都有一个ASNAutonomous System Number自治系统编号该ASN标识了该发言者代表的组织。在BGP的上下文中组织被定义为由单个实体控制并具有确定路由策略的一个网络。通常会为一个服务提供商例如Verizon、ATT和T-Mobile分配一个唯一的ASN而一个大型企业例如埃克森美孚和亚马逊也会分配一个唯一的ASN。在某些情况下一个组织可能有多个ASN这可能由于企业并购等原因导致。例如苹果有3个ASN而亚马逊有14个。 网络地址的路径矢量是该地址经过的ASN列表。ASN列表被用于识别路由环路、确定到某一网络前缀的最佳路径以及对网络应用路由策略。在Internet上每个ASN都只对特定的IP前缀具有权威性。 ASN有两种格式两字节和四字节。两字节的格式更为流行因为这种格式出现的时间更长并且也更易于阅读例如与一个四字节的ASN 4200000000相比两字节ASN 64000在视觉上更容易接受。如今大多数路由协议套件都同时支持这两种格式的ASN。 ASN有供内部网络使用的私有号码空间这些私有ASN号码对Internet而言不可见。数据中心通常在其内部使用私有ASN。 BGP 能力 作为一种不断发展的协议BGP 允许在每个对等会话中协商支持的能力以确保只交换双方都支持的信息。能力协商在 RFC 5492 定义。在 BGP Open 消息中进行能力协商能力类型包括每一方支持哪些地址族等内容 BGP 属性团体和扩展团体 BGP 有各种类型的属性具有不同的用途和语义。BGP 属性使用类型长度和值(TLV) 的模型进行编码. 基本的 BGP-4 RFC定义了每个BGP 兼容实现都必须支持的七个路径属性。这些属性用于 BGP 的最佳路径计算。例如其中的一个属性 AS_PATH 用于携带一条路由关联的路径矢量。 BGP的一些属性是强制性的。也就是说这些属性必须始终在消息中传输而其他属性可能并不总是出现在消息中。消息接收者必须能够处理 BGP-4 RFC 中定义的七个基本路径属性。在该 RFC 之外定义的其他属性称为可选属性并非所有的实现都支持这些可选属性。例如MP_RBACH_NLRI 属性用于通告 MPLS 标签但并非所有实现都支持该标签。对接收者的唯一要求是必须转发被标识为可传递的属性即使在不理解该属性的情况下也是如此。 BGP还允许通过称为团体 (community) 的属性定义用户扩展的路由分组。 community 是一种可传递的可选属性。运营商使用 community 将一些路由组合在一起以对这些路由应用路由策略。路由策略会影响这些路由的 BGP 更新消息处理和最佳路径计算。运营商可以使用其路由协议栈的特定配置命令为路由打上community 标记并通过community 的值来影响BGP的行为。一条更新消息可以携带多个community。 community 的值不是一个任意文本字符串而具有四字节的固定长度。前两个字节是发起这个 community的 BGP 发言者的ASN后两个字节则留给网络运营商使用。和BGP的大部分内容一样community 也是在Internet 刚出现时设计的。随着4字节ASN的出现以及对2字节以上的操作填充需求我们现在有了扩展团体 (extended community使用8字节代替原先的4 字节)和大型团体 (large community使用12 字节) 。采用两字节ASN 编号的网络虚拟化路由信息使用扩展团体属性而具有四字节 ASN 的路由信息则使用大型团体属性。 BGP 最佳路径计算 BGP路由器会为每个通告的路由计算从其自身出发的最佳路径。当从一个或多个对等方收到新的 UPDATE 消息时将触发 BGP 的最佳路径计算。BGP 实现可以选择对这些消息进行缓冲以便通过一次计算处理所有更新而不至于由于频繁的路径计算触发过快的路由更新。只有当计算结果改变了 (添加删除或更新)到某一网络的最佳路径时BGP 才会对外进行路由通告。 OSPFIS-IS 和其他一些路由协议采用一个简单的度量标准来决定采用哪条路径而BGP有八个度量标准。 你可以使用这个精妙的句子来帮助记住 BGP 在计算最佳路径时采用的这些度量的优先级: Wise Lip Lovers Apply Oral Medication Every Night.(明智的恋人每晚都要口服药物。) 表 14-1 说明了助记符和实际度量指标之间的对应关系。最佳路径是按优先顺序的度量指标的值 (有关最佳路径计算的详细信息请参阅 RFC 4271 的9.1 节)。如一个更新和现有最佳路径之间的某一个度量标准的值相同则会按此顺序比较下一个度量指标直到打破平局。 Table 14-1. BGP best-path metrics MnemonicBGP metric nameWiseWeightLipLOCAL_PREFERENCELoversLocally originatedApplyAS_PATHOralORIGINMedicationMEDEveryeBGP over iBGPNightNexthop IGP Cost BGP在数据中心中只使用了 Locally originated 和AS_PATH这两个指标来计算最佳路径。 换句话说节点本地生成的路由优先级高于通过 BGP 学习得到的路由AS_PATH长度较短的路由优先级高于 AS_PATH 长度较长的路由。如果两条路径的 AS_PATH长度相等则认为其路由成本相同。实际上默认的 BGP 实现不仅要求两条AS_PATH的长度相同而且要求 AS_PATH 中的各个 ASN 也必须相同才会认为其路由成本相同。如果想只使用 AS_PATH 长度来判断路径的成本是否相同则需要打开一个放松该限制的配置项。 多协议支持 BGP 不仅可以通告如何到达某个 IP 地址的信息还可以通告如何到达 MPLS 标签、MAC 地址等其他信息。定义 BGP 多协议支持的基本标准是 RFC4760。BGP 支持的每种网络协议都有其自己的标识称为 AFI (Address Family Indicator地址族标识符)。AFI标识了主要的网络协议。IP4 和IPv6 各自有自己的 AFI。但是即使在 AFI内部也需要进一步进行区分。例如单播和多播路由信息的区别就很大。 BGP 使用 SAFI(Subsequent Address Family Indicator子地址标识符) 来对单播和多播地址情况进行进一步区分。IPv4 Unicast AFI-SAFI是 RFC 中假定使用的地址标识符。当在描述时未指定 AFI/SAFI时则可认为适用 IPv4 单播。BGP发言者需要关注的AFI/SAFI列表是通过BGPOPEN消息在能力协商时通告的仅当双方通告对其 AFI / SAFI 感兴趣时两个 BGP 对等方才会交换有关网络地的信息。 BGP消息 表 14-2 列出了 BGP 发送的各种消息类型及其特定用途 Table 14-2. BGP 消息类型及其用途 消息类型使用周期Open在会话建立时发送用于标识路由器和交换能力一次Update用于交换路由通告和撤回仅在信息发生变化时Keepalive心跳用于向远程对等端发出信号表明我们正在运行已配置通常为 60 秒Notification在发生错误或以管理方式关闭会话时发送在发生错误或关闭时Route Refresh请求远程对等节点重新发送所有路由仅在需要时进行 每条BGP消息被编码为一个TLV。一条BGP消息携带了一个固定长度的头部头部中也包含了BGP消息的类型。 BGP中主要的消息是 UpdateUpdate 消息中包含发布的路由列表和撤销的路由列表。 BGP中撤销路由信息的机制与 OSPF 和IS-IS 不同: OSPF和IS-IS 通过链路状态信息老化来撤销路由而 BGP 采用了显式的撤消机制。BGP Update 消息的格式如图14-3(a) 所示。BGP 使用术语 NLRI (Network Layer Reachability Information,网络层可达性信息) 来表示所发布的路由。 community 属性则被编码在“Path Attributes List”中。 BGP 采用一个称为 MP_REACH_NLRI的属性来保存非 IPv4 地址族的 NLRI这是一个可选的非传递路径属性其内部格式如图 14-3 (b) 所示。如果该属性存在则位于图 14-3 (a)的 BGP Update 消息中的“Path Attributes List”部分中。对于下一跳这种 NLRI中的关键属性IPv4 和其他协议有不同的编码。在IPv4 中下一跳是使用一个叫做 NEXTHOP 的路径属性编码在 Update 消息的“Path Attribute List”部分中的。但是 IPv6 路由的编码不同IPv6 的下一跳和发布的路由按图 14-3 (b)所示进行编码。 一条 BGP Update 消息中可以携带多个 AFI /SAFI路由信息。例如单个 BGP Update 消息可以同时携带IPv4 和IPv6 的更新。在这种情况下Update消息中将同时存在 MP_REACH_NLRI和标准的 NLRI属性。如果该条消息中没有IPv4 路由通告则NEXTHOP属性就不会出现在路径属性列表中只会存在包含IPv6 路由的MP_REACH_NLRI 属性。 图14-3:BGP Update 消息和多协议网络地址的格式 使BGP适应数据中心 数据中心密集的网络连接与运营商管理域之间相对稀疏的连接有很大的区别。因此在数据中心中部署 BGP有一些不同的权衡。BGP 在数据中心的使用情况可总结如下: eBGP 被用作唯一的路由协议。eBGP 与私有 ASN 一起使用使用合适的BGP的ASN编号方案以避免BGP的路径探索(Path hunting)问题与服务提供商网络相比数据中心中的 BGP 计时器适用于更积极的更新策略 eBGP 与 iBGP 鉴于整个数据中心都处于单个管理域内使用iBGP似乎是一个显而易见的选择但是几乎每个数据中心内都选择了部署eBGP。 导致这种现象的主要原因是eBGP比iBGP更容易理解和部署。在最佳路径选择算法、选择和通告哪些路由的标准以及处理和忽略哪些前缀属性的规则这些方面iBGP让人感到迷惑。在一些特定的情况下iBGP对多路径的支持也有局限性特别是当一条路由被两个不同的节点通告时。我们可以克服这种限制但是会非常麻烦。 iBGP比eBGP更容易让一个新手感到困惑因为要实现预期的行为需要调整BGP中较多的配置选项。这些难以理解的众多配置只会加剧新手的不安。 选择eBGP还有一个强烈的非技术性原因与iBGP相比eBGP有更多功能完善和可靠的实现。多种实现的存在意味着客户选择eBGP可以避免供应商锁定。 私有 ASN 私有 ASN是在全球Internet 中不可见的 ASN。 它们用于企业内部类似私有 IP 地址(例如 10.0.0.0/8 )。 私有 ASN有2字节和4 字节两种 ASN变体。两字节的ASN支持 1023 个私有 ASN (64512-65534) 而四字节的ASN 则支持近 9500万个私有 ASN(42000000004294967294)足以满足当今任何规模的数据中心的需求。 只要在与外界通信之前将其剥离运营商也可以在数据中心内部使用全局 ASN。但是由于以下两个原因这并不是一个好主意。首先在数据中心内部使用全局 ASN可能会误导试图将 ASN 解码为名称有意义的操作人员和工具。由于很多 ASN是众所周知的因此运营商在数据中心内看到这些 ASN时可能会非常困惑。例如在数据中心内某个节点上看到 Verizon 的ASN时。 第二个原因是为了避免意外将内部 BGP 信息泄漏到外部网络。如果在内部使用了全局 ASN并且将路由信息泄漏到外部将会对 Internet造成严重破坏。 例如如果某个数据中心在其内部使用 Twitter的 ASN并且不小心泄漏了一条路由声称Twitter 是该数据中心内一个可公开访问的路由的 AS PATH 的一部分则将导致对twitter 服务的大规模的全球劫持。错误的配置是所有网络中断故障的头号或者第二号原因因此不应该在数据中心内使用公共 ASN以避免发生这种情况。 BGP的 ASN 编号方案 BGP的 ASN编号方案如下: 每个 leaf 节点都有自己的 ASN二层 Clos 中的所有 spine 都有自己独立的 ASN。在三层 Clos 中同一pod 内的所有 spine 使用相同的 ASN但每个 pod 的ASN 不同。在三层 Clos中所有的super spine都使用相同的ASN BGP的路径探索问题 困扰路径矢量协议的一个问题是计数到无穷 (count-to-infinity)。尽管我们不能在这里涉及关路径探索的所有细节但是你可以通过图 14-5 中所示的拓扑中查看该问题的一个简化的解释。 在此拓扑中所有节点都有一个单独的 ASN。现在我们从 R1 的角度来考虑前缀为 10.1.1.1 的可达性。R2和R3 都会向R1 通告 10.1.1.1 的可达性: R2为10.1.1.1 通告的 AS_PATH是[R2R4]R3 通告的AS PATH 则是[R3R4] 当节点R4 下线时R2 失去了到达 10.1.1.1 的最佳路径它重新计算后将通过R1的AS_PATH[R1R3R4]作为最佳路径。R2和R3还向R1发送 10.1.1.1的路由撤消消息。但是如果R3 的路由撤消消息先于 R2 的到达R1则R1会将其到 10.1.1.1 的最佳路径切换到经过 R2的AS_PATH[R1R2R4]并将此路由对外进行通告。现在R3 切换为使用通过 R2 的路径作为最佳路径并认为 10.1.1.1仍然可以访问。当 R2 的路由撤消消息到达 R1时R1 撤销到10.1.1.1 的路由并将撤消消息发送到 R3。由于节点之间数据转发时间顺序和每个BGP 实现的具体工作方法有所不同事件的确切顺序可能与此处描述的不完全一样但和此类似。 对这个问题的简短描述是; 因为一个节点并不知道网络中其他每个节点的物理链接状态所以它不知道一条路由是真的消失了(路径末端的节点自身掉线了)还是可以通过其他路径到达。因此节点会继续通过所有其他可用路径来探索目的地的可达性。这被称为路径探索。 在图 14-5 的简单拓扑中这看起来并不是一个太大的问题。但是想象一下 R1和R4是Clos 拓扑中的leaf 节点而 R2和R3是spine 的情况。常见的 Clos拓扑中通常有 32或64个leaf和4到8个spine。每个leaf都可以选择不同的spine作为最佳路径。当R4下线时,每个spine会探索从任一leaf到达R4的路径因为每个leaf 选择了不同的 spine 作为最佳路径因此需要进行一些额外的搜寻。该问题可能会变得非常严重因为多余的消息交换过多并且由于错误路由信息在网络中的长时间传播会导致流量损失增加。 多路经选择 如果八个最佳路径度量指标的值分别都相等则两条路径被视为等价的。这些标准之一是AS_PATH中的AS 编号必须完全匹配而不仅仅只是路径长度相同该要求破坏了数据中心内两种常见部署方案中的多路径路由。 第一种部署场景如图14-6所示。在该图中圆形表示绑定在一起的两个端口通道对上层协议来说这两个链接看起来像是一条高速逻辑链接。图中的服务器被连接到了两个TOR(Top of Rack) 交换机上每个TOR 交换机有不同的ASN。在这种情况下相同的路由会被采用不同的 ASN分别进行通告。 假设图中服务器所在的子网为 10.1.1.0/24。两个leaf都会对外通告到自己到10.1.1.0/24 子网的路由。在这种情况下每个 spine 会接收到两条到10.1.1.0/24的路由一个路由的AS_PATH为64600另一个路由的AS_PATH为64601。根据等价路径的判断逻辑BGP 不仅要求 AS_PATH的长度相同而且还要求 AS_PATH包含相同的ASN列表。因为这两条路由的 ASN不相同所以在 spine 上不会形成多路径路由。相反他们只会选择两条路线之一作为最佳路径。 在第二种部署场景中服务器上部署了虚拟服务(如 Kubernetes service) 这种情况下多台服务器都会通告同一个服务虚拟 IP 地址 (例如 Kubernetes Cluster IP)的可达性。并且为了确保可靠性和可扩展性服务器连接到了不同的 leaf 上因此spine 也会收到来自多个不同 ASN 的同一个服务的路由这些路径的 AS_PATH长度相同但某些 ASN 并不相同。 有多种解决此问题的方法最简单的是通过配置来修改最佳路径算法。在 FRR 和其他路由栈中有一条 bestpath as-path multipath-relax 配置命令它的作用很简单:当来自两个不同来源的路由通告中的 AS_PATH长度相同时最佳路径算法会跳过对ASN 是否精确匹配的检查直接进行下一个度量标准的判断。 BGP 的收敛时间 BGP 通常用四个计时器来控制在发生故障时或从故障中恢复时 (例如链路断开后再次可用) 收敛的速度。了解这些计时器很重要因为它们会影响信息在网络中传播的速度。对这些计时器进行适当的调整可以使 BGP 的收敛速度和其他内部路由协议(如OSPF) 达到相同的水平。 Advertisement interval 在路由 Internet 流量时稳定性远比快速更新更为重要。但在数据中心情况恰恰相反。 负责确保进行更新的主要 BGP 计时器是 advertisement interval。在向对等方发送下一次更新之前BGP会等待 advertisement interval 中配置的时间间隔。默认情况下该配置的值是 30 秒。在数据中心此值必须设置为 0。就这一个更改就可以使eBGP 的收敛时间达到其他 IGP 协议 (例如 OSPF) 相同的水平。 Keepalive 和 Hold Timer BGP 发言者会在每个已建立的会话中按 Keepalive 设置的时间周期定时发送 Keepalive 消息。如果远程对等方在 Hold 计时器配置的时间内 (通常是Keepalive 时间的三倍)未收到 Keepalive 消息则它将宣布对等方死亡并终止对等会话。默认情况下Keepalive 时间为 60 秒。这意味着 BGP 在其对等方T线三分钟后才能检测到。缺省情况下如果一个 eBGP 会话的对等方只相隔一跳的距离那么在链路发生故障后会立即重置该会话。Keepalive 和 Hold 计时器的作用是捕获软件层面的错误比如链路状态虽然是 Up 的但由于线缆故障而导致单通的情况。一些运营商启用了称为 BFD 的协议可以在不到一秒钟或最多一秒钟的时间内检测到由于电缆问题引起的错误。但是要捕获 BGP 进程自身的错误你就需要调整 Keepalive 和 Hold 计时器。在数据中心内三分钟的时间太长了相当于一生。数据中心内最常见的配置是 Keepalive 设置为 3秒Hold 计时器设置为9秒。 Connect timer 这是四个计时器中最不重要的。当 BGP 尝试与对等方建立连接但由于某些原而失败时它会等待一段时间然后再次尝试连接。默认情况下此时间是 60秒换句话说如果 BGP 无法与其对等方建立会话就会等待一分钟然后再尝试再次建立会话。当链路从故障中恢复或节点启动时这个缺省值可能会延迟会话的重建。在数据中心内此计时器的值通常设置为 10 秒。