From c76adc99af1f3a2803da80d14ff27ca84b236078 Mon Sep 17 00:00:00 2001 From: diandian Date: Sun, 26 Mar 2023 19:12:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20'Datacom-MD'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Datacom-MD/第一章:走进网络世界.md | 1269 ++++++++++ Datacom-MD/第三章:路由基础及静态路由技术.md | 323 +++ Datacom-MD/第五章:BGP边界网关协议.md | 2272 ++++++++++++++++++ Datacom-MD/第四章:动态路由技术 (1).md | 1522 ++++++++++++ 4 files changed, 5386 insertions(+) create mode 100644 Datacom-MD/第一章:走进网络世界.md create mode 100644 Datacom-MD/第三章:路由基础及静态路由技术.md create mode 100644 Datacom-MD/第五章:BGP边界网关协议.md create mode 100644 Datacom-MD/第四章:动态路由技术 (1).md diff --git a/Datacom-MD/第一章:走进网络世界.md b/Datacom-MD/第一章:走进网络世界.md new file mode 100644 index 0000000..612829d --- /dev/null +++ b/Datacom-MD/第一章:走进网络世界.md @@ -0,0 +1,1269 @@ +

第一章:走进网络世界

+ +> 作者:行癫 + +------ + +

第一节:环境介绍

+ +

一:软件Ensp下载地址

+ +```shell +https://www.xingdiancloud.cn/index.php/s/9anesk6D6Z6bKc7 +``` + +

二:软件使用

+ +1.华为设备图标介绍 + +![image-20220125224657446](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220125224657446.png) + +2.软件具体使用 + +略 + +

第二节:数据通信网络基础

+ +

一:通信与网络

+ +
1.网络通信基本概念
+ +通信:是指人与人、人与物、物与物之间通过某种媒介和行为进行的信息传递和交流 + +网络通信:是指终端设备之间通过计算机网络进行的通信 + +案例: + +两台计算机通过一根网线相连,就组成了一个最简单的网络 + +image-20220125225404941 + +由一台路由器(或交换机)和多台计算机设备组成的小型网络 + +image-20220125225455649 + + 当计算机想从某个网址获取文件时,必须先接入Internet,然后才能下载 + +image-20220125225510430 + +
2.信息传递过程
+ +![image-20220125225601100](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220125225601100.png) + +​ 需要快递的物品:应用程序生成需要传递的信息 (或数据)。 物品被包装起来形成包裹,并粘贴含有收货人姓名、地址的快递单:应用程序将数据打包成原始的“数据载荷”,并添加“头部”和“尾部”形成报文,报文中的重要信息是接收者的地址信息,即“目的地址”。在一个信息单元的基础上,增加一些新的信息段,使其形成一个新的信息单元,这个过程称为“封装”。包裹被送到集散中心,集散中心对包裹上的目的地址进行分检,去往同一个城市的物品被放入同一架飞机,并飞向天空:报文通过网线到达“网关”,网关收到报文后,对其“解封装”,读取目的地址,再新封装,并根据目的地址不同,送往不同的“路由器”,通过网关及路由器的传递,报文最终离开本地网络,进入Internet的干道进行传输。其中,网线所起的作用跟公路一样,它是信息传输的介质。飞机抵达目的机场后,包裹被取出进行分检,去往同一地区的包裹,被送到了同一集散中心:报文经过Internet干道的传输,到达目的地址所在的本地网络,本地网络的网关或路由器对报文进行解封装和封装,并根据目的地址决定发往相应的下一台路由器,最终到达目的计算机所在网络的网关。集散中心根据包裹上的目的地址进行分检,快递员送包裹上门,收件人拆开包裹,确认物品完好无损后收下。整个快递过程完成。报文到达目的计算机所在网络的网关,解封装和封装,然后根据目的地址发往相应的计算机。计算机收到报文后,对报文进行校验处理,校验无误后,接收下报文,并将其中的数据载荷交由相应的应用程序进行处理。一次完整的网络通信过程就结束了。 + +
3.常见术语
+ +数据载荷: + +​ 可以理解为最终想要传递的信息,但实际上,在具有层次化结构的通信过程中,上一层协议传递给下一层协议的数据单元(报文)都可以称之为下一层协议的数据载荷 + +报文: + +​ 网络中交换与传输的数据单元,具有一定的内在格式,通常都具有头部+数据载荷+尾部的基本结构。传输过程中,报文的格式和内容可能发生改变 + +头部: + +​ 为了更好的传递信息,在组装报文时,在数据载荷的前面添加的信息段统称为报文的头部 + +尾部: + +​ 为了更好的传递信息,在组装报文时,在数据载荷的后面添加的信息段统称为报文的尾部。注意,很多报文是没有尾部的 + +封装: + +​ 分层协议所采用的一种技术,底层协议收到来自上层协议的消息时,将该消息附加到底层帧的数据部分 + +解封装: + +​ 是封装的逆过程,也就是去掉报文的头部和尾部,获取数据载荷的过程 + +网关: + +​ 是在采用不同体系结构或协议的网络之间进行互通时,用于提供协议转换、路由选择、数据交换等功能的网络设备。网关是一种根据其部署位置和功能而命名的术语,而不是一种特定的设备类型 + +路由器: + +​ 为报文选择传递路径的网络设备 + +终端设备: + +​ 数据通信系统的端设备,作为数据的发送者或接收者,提供用户接入协议操作所需必要功能,可以是计算机、服务器、手机等 + +
4.数据通信网络
+ +概念: + +​ 由路由器、交换机、防火墙、无线控制器、无线接入点以及个人电脑、网络打印机、服务器等设备构成的通信网络 + +功能: + +​ 数据通信网络最基本的功能是实现数据互通 + +image-20220125230356387 + +
5.网络设备介绍
+ +**交换机:** + +​ 距离终端的设备最近,用于终端设备接入网络、对数据帧进行交换等 + +image-20220126153143550 + +​ 在园区网络中,交换机一般来说是距离终端用户最近的设备,接入层的交换机一般为二层交换机,又称为以太网交换机,二层是指TCP/IP参考模型的数据链路层 + +​ 以太网交换机可以实现:数据帧的交换、终端用户设备的接入、基本的接入安全功能、二层链路的冗余等 + +​ 广播域:一个节点发送一个广播报文其余节点都能够收到的节点的集合 + +**路由器:** + +​ 网络层设备,可以在因特网中进行数据报文转发,路由器根据所收到的报文的目的地址选择一条合适的路径,将报文传递到下一个路由器或目的地,路径中最后的路由器负责将报文送交目的主机 + +image-20220126153723645 + +功能: + +​ 实现同类型网络或异种网络之间的通信 + +​ 隔离广播域 + +​ 维护路由器、运行路由协议 + +​ 路由选择、IP报文转发 + +​ 广域网接入、网络地址转换 + +​ 连接通过交换机组建的二层网络 + +**防火墙:** + +​ 网络安全设备,用于控制两个网络之间的安全通信,它通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,以此来实现对网络的安全保护 + +image-20220126154425303 + +​ 隔离不同安全级别的网络 + +​ 实现不同安全级别的网络之间的访问控制 + +​ 用户身份认证 + +​ 实现远程接入功能 + +​ 实现数据加密及虚拟专用网业务 + +​ 执行网络地址转换 + +​ 其他安全功能 + +​ 是位于两个信任程度不同的网络之间(如企业内部网络和Internet之间)的设备,它对两个网络之间的通信进行控制,通过强制实施统一的安全策略,防止对重要信息资源的非法存取和访问,以达到保护系统安全的目的。 + +**无线设备:** + +​ 无线局域网WLAN广义上是指以无线电波、激光、红外线等无线信号来代替有线局域网中的部分或全部传输介质所构成的网络。而常见的Wi-Fi是指IEEE 802.11标准上的无线局域网技术 + +image-20220126154859755 + +无线接入点(AP,Access Point): + +​ 一般支持FAT AP、FIT AP和云管理工作模式,根据网络规划的需求,可以灵活地在各种模式下切换 + +​ FAT AP:适用于家庭,独立工作,需单独配置,功能较为单一,成本低 【胖AP】 + +​ FIT AP:适用于大中型企业,需要配合AC使用,由AC统一管理和配置,功能丰富 【瘦AP】 + +​ 云管理:适用于中小型企业,需要配合云管理平台使用,由云管理平台统一管理和配置,功能丰富,即插即用 + +无线接入控制器(AC,Access Controller): + +​ 一般位于整个网络的汇聚层,提供高速、安全、可靠的WLAN业务 + +​ 提供大容量、高性能、高可靠性、易安装、易维护的无线数据控制业务,具有组网灵活、绿色节能等优势 + +
6.网络类型与网络拓扑
+ +​ 按照地理覆盖范围来划分,网络可以分为局域网(Local Area Network)、城域网(Metropolitan Area Network)和广域网(Wide Area Network) + +局域网(LAN): + +​ 在某一地理区域内由计算机、服务器以及网络设备组成的网络,局域网的覆盖范围一般是方圆几千米内 + +​ 典型的局域网:一家公司的办公网络、一个网络的网络、一个家庭的网络 + +城域网(MAN): + +​ 在一个城市范围内所建立的计算机通信网络 + +​ 典型的城域网:宽带城域网、教育城域网、市级或省级电子政务专网等 + +广域网(WAN): + +​ 通常覆盖很大的地理范围,从几十公里到几千公里,他能连接多个城市甚至国家,并能提供远距离通信,形成国际性的大网络 + +​ 典型的广域网:Internet (因特网) + +教育行业中的局域网、城域网以及广域网 + +image-20220126160927275 + +网络拓扑: + +​ 网络拓扑是指用传输介质(例如双绞线、光纤等)互连各种设备(例如计算机终端、路由器、交换机等)所呈现的结构化布局 + +image-20220126161345590 + +网络拓扑形态: + +​ 按照网络的拓扑形态来划分,网络可以分为星型网络、总线型网络、环型网络、树型网络、全网状网络和部分网络形状 + +image-20220126161519153 + +星型网络: + +​ 所有节点通过一个中心节点连接在一起 + +​ 容易在网络中增加新的节点。通信数据必须经过中心节点中转,易于实现网络监控 + +​ 中心节点的故障会影响到整个网络的通信 + +总线型网络: + +​ 所有节点通过一条总线(如同轴电缆)连接在一起 + +​ 安装简便,节省线缆。某一节点的故障一般不会影响到整个网络的通信 + +​ 总线故障会影响到整个网络的通信。某一节点发出的信息可以被所有其他节点收到,安全性低 + + 环型网络: + +​ 所有节点连成一个封闭的环形 + +​ 节省线缆 + +​ 增加新的节点比较麻烦,必须先中断原来的环,才能插入新节点以形成新环 + +树型网络: + +​ 树型结构实际上是一种层次化的星型结构 + +​ 能够快速将多个星型网络连接在一起,易于扩充网络规模 + +​ 层级越高的节点故障导致的网络问题越严重 + +全网状网络: + +​ 所有节点都通过线缆两两互联 + +​ 具有高可靠性和高通信效率 + +​ 每个节点都需要大量的物理端口,同时还需要大量的互连线缆。成本高,不易扩展 + +部分网状网络: + +​ 只是重点节点之间才两两互连 + +​ 成本低于全网状网络 + +​ 可靠性比全网状网络有所降低 + +注意: + +​ 在实际组网中,通常都会根据成本、通信效率、可靠性等具体需求而采用多种拓扑形态相结合的方法 + +

第三节:网络参考模型

+ +

一:应用和数据

+ +
1.应用
+ +​ 应用的存在,是为了满足人们的各种需求,比如访问网页、在线游戏、在线视频等 + +​ 伴随着应用会有信息的产生,比如文本、图片、视频等都是信息的不同呈现方式 + +image-20220126163135986 + +
2.数据
+ +数据的产生: + +​ 在计算机领域,数据是各种信息的载体 + +数据传输: + +​ 大部分应用程序所产生的数据需要在不同的设备之间传递 + +image-20220126163253729 + +​ 计算机只能识别0和1的组成的电子数据(digital data)。它不具备读取各种信息的能力,所以信息需要通过一定的规则翻译成数据,而对人来说,我们不具备读取电子数据的能力,所以在读取信息的时候,需要将数据转成人能理解的信息,需要更关注数据的端到端传递的过程 + +

二:网络参考模型与标准协议

+ +
1.OSI参考模型
+ +​ OSI 模型(Open Systems Interconnection Model),由国际化标准组织ISO (The International Organization for Standardization ) 收录在ISO 7489标准中并于1984年发布 + +物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚等物理特性 + +数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测 + +网络层:定义逻辑地址,供路由器确定路径,负责将数据从源网络传输到目的网络 + +传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测 + +会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成 + +表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别 + +应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务 + +
2.TCP/IP参考模型
+ +​ 因OSI协议栈比较复杂,且TCP和IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考协议 + +![image-20220126164548081](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220126164548081.png) + +​ TCP/IP模型在结构上与OSI模型类似,采用分层架构,同时层与层之间联系紧密 + +
3.TCP/IP常见协议
+ +**应用层:** + +​ HTTP(Hypertext Transfer Protocol,超文本传输协议):用来访问在网页服务器上的各种页面 + +​ FTP(File Transfer Protocol,文件传输协议):为文件传输提供了途径,它允许数据从一台主机传送到另一台主机上 + +​ DNS(Domain Name Service,域名称解析服务):用于实现从主机域名到IP地址之间的转换 + +**传输层:** + +​ TCP (Transmission Control Protocol,传输控制协议) :为应用程序提供可靠的面向连接的通信服务。目前,许多流行的应用程序都使用TCP + +​ UDP(User Datagram Protocol,用户数据报协议):提供了无连接通信,且不对传送数据包进行可靠性的保证 + +**网络层:** + +​ IP(Internet Protocol,互联网协议):将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接的、不可靠的服务 + +​ IGMP(Internet Group Management Protocol,因特网组管理协议):负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系 + +​ ICMP(Internet Control Message Protocol,网际报文控制协议):基于IP协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决 + +**数据链路层:** + +​ PPP(Point-to-Point Protocol,点对点协议):一种点对点模式的数据链路层协议,多用于广域网 + +​ Ethernet( 以太网协议 ):一种多路访问广播型数据链路层协议,是当前应用最为广泛的局域网技术 + +​ PPPoE(Point-to-Point Protocol over Ethernet,以太网承载PPP协议):PPPoE提供通过简单桥接访问设备(接入设备)把一个网络的多个主机连接到远程访问集中器的功能。常见的应用有家庭宽带拨号上网 + +
4.应用层
+ +​ 应用层为应用软件提供接口,使应用程序能够使用网络,应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等 + +​ 应用层的PDU被称为数据Data + +​ TCP/IP每一层都让数据得以通过网络进行传输,这些层之间使用PDU(Packet Data Unit,协议数据单元)彼此交换信息,确保网络设备之间能够通信,不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称 + +常见的应用层协议: + +image-20220126165757220 + +image-20220126165813774 + +image-20220126165832189 + +
5.传输层
+ +​ 传输层协议接受来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”的连接 + +​ 传输层的PDU被称为Segment(段) + +**TCP和UDP报文格式** + +image-20220126170554832 + +**TCP报文头部:** + +​ Source Port:源端口,标识哪个应用程序发送。长度为16比特 + +​ Destination Port:目的端口,标识哪个应用程序接收。长度为16比特 + +​ Sequence Number:序号字段。TCP链接中传输的数据流每个字节都编上一个序号序号字段的值指的是本报文段所发送数据的第一个字节的序号。长度为32比特。 + +​ Acknowledgment Number:确认序列号,是期望收到对方下一个报文段数据的第1个字节的序号,即上次已成功接收到的数据段的最后一个字节数据的序号加1。只有Ack标识为1,此字段有效。长度为32比特。 + +​ Header Length:头部长度,指出TCP报文头部长度,以32比特(4字节)为计算单位。若无选项内容,则该字段为5,即头部为20字节。 + +​ Reserved:保留,必须填0。长度为6比特。 + +​ Control bits:控制位,包含FIN、ACK、SYN等标志位,代表不同状态下的TCP数据段。 + +​ Window:窗口TCP的流量控制,这个值表明当前接收端可接受的最大的数据总数(以字节为单位)。窗口最大为65535字节。长度为16比特。 + +​ Checksum:校验字段,是一个强制性的字段,由发端计算和存储,并由收端进行验证。在计算检验和时,要包括TCP头部和TCP数据,同时在TCP报文段的前面加上12字节的伪头部。长度为16比特。▫ Urgent:紧急指针,只有当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。长度为16比特。 + +​ Options:选项字段(可选),长度为0-40字节。 + +**UDP报文头部:** + +​ Source Port:源端口,标识哪个应用程序发送。长度为16比特。 + +​ Destination Port:目的端口,标识哪个应用程序接收。长度为16比特。 + +​ Length:该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。 + +​ Checksum:覆盖UDP头部和UDP数据的校验和,长度为16比特。 + +**TCP的建立** + +​ 任何基于TCP的应用,在发送数据前,都需要进行TCP的“三次握手”建立连接 + +image-20220126171140474 + +TCP连接建立的详细过程: + +​ 由TCP连接发起方(图中PC1),发送第一个SYN位置1的TCP报文。初始序列号a为一个随机生成的数字,因为没收到过来自PC2的任何报文,所以确认序列号为0 + +​ 接收方(图中PC2)接收到合法的SYN报文之后,回复一个SYN和ACK置1的TCP报文。初始序列号b为一个随机生成的数字,同时因为此报文是回复给PC1的报文,所以确认序列号为a+1 + +​ PC1接收到PC2发送的SYN和ACK置位的TCP报文后,回复一个ACK置位的报文,此时序列号为a+1,确认序列号为b+1。PC2收到之后,TCP双向连接建立 + +**TCP的序列号与确认序列号:** + +​ TCP使用序列号和确认序列号字段实现数据的可靠和有序传输 + +image-20220126171459181 + +假设PC1要给PC2发送一段数据,传输过程如下: + +​ PC1将全部待TCP发送的数据按照字节为单位编上号。假设第一个字节的编号为 “a+1”,第二个字节的序号为“a+2”,依次类推 + +​ PC1会把每一段数据的第一个字节的编号作为序列号(Sequence number),然后将TCP报文发送出去 + +​ PC2在收到PC1发送来的TCP报文后,需要给予确认同时请求下一段数据,如何确定下一段数据呢?序列号( a+1 )+载荷长度=下一段数据的第一个字节的序号(a+1+12) + +​ PC1在收到PC2发送的TCP报文之后,发现确认序列号为“a+1+12” ,说明“a+1”到“a+12”这一段的数据已经被接受,需要从“a+1+12”开始发送 + +​ 为了提升发送效率,也可以一次性发送多段数据,由接收方统一确认 + +**TCP的窗口滑动机制** + +​ TCP通过滑动窗口机制来控制数据的传输速率 + +image-20220126171720210 + +​ 在TCP三次握手建立连接时,双方都会通过Window字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小) + +​ 连接建立成功之后,发送方会根据接受方宣告的Window大小发送相应字节数的数据 + +​ 接受方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放 + +​ 接收方根据自身的缓存空间大小通告当前的可以接受的数据大小( Window ) + +​ 发送方根据接收方当前的Window大小发送相应数量的数据 + +**TCP的关闭** + +​ 当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源 + +image-20220126171951995 + +​ TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭 + +​ 由PC1发出一个FIN字段置”1 ”的不带数据的TCP段 + +​ PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文 + +​ 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连接 + +​ PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开 + +
6.网络层
+ +​ 传输层负责建立主机之间进程与进程之间的连接,而网络层则负责数据从一台主机到另一台主机之间的传递 + +​ 网络层的PDU被称为Packet(包) + +**网络层协议工作过程** + +image-20220127145431291 + +​ 当采用IP作为网络层协议时,通信的双方都会被分配到一个“独一无二”的IP地址来标识自己。IP地址可被写成32位的二进制整数值形式,但为了方便人们阅读和分析,它通常被写成点分十进制的形式,即四个字节被分开用十进制表示,中间用点分隔,比如192.168.1.1 + +**IP数据包的封装与转发** + +​ 网络层收到上层(如传输层)协议传来的数据时候,会封装一个IP报文头部,并且把源和目的IP地址都添加到该头部中 + +​ 中间经过的网络设备(如路由器),会维护一张指导IP报文转发的“地图”——路由表,通过读取IP数据包的目的地址,查找本地路由表后转发IP数据包 + +​ IP数据包最终到达目的主机,目的主机通过读取目的IP地址确定是否接受并做下一步处理 + +​ IP协议工作时,需要如OSPF、IS-IS、BGP等各种路由协议帮助路由器建立路由表,ICMP帮忙进行网络的控制和状态诊断 + +
7.数据链路层
+ +​ 数据链路层位于网络层和物理层之间,可以向网络层的IP、IPv6等协议提供服务,数据链路层的PDU被称为Frame(帧) + +​ 以太网(Ethernet)是最常见的数据链路层协议 + +**以太网与MAC地址** + +image-20220127150315161 + +​ 以太网是一种广播式数据链路层协议,支持多点接入 + +​ 个人电脑的网络接口遵循的就是以太网标准 + +​ 一般情况下,一个广播域对应着一个IP网段 + +​ MAC地址在网络中唯一标识一个网卡,每个网卡都需要且会有唯一的一个MAC地址 + +​ MAC用于在一个IP网段内,寻找到具体的物理设备 + +​ 工作在数据链路层的设备,例如以太网交换机,会维护一张MAC地址表,用于指导数据帧转发 + +​ MAC地址由48比特(6个字节)长,12位的16进制数字组成。例如:48-A4-72-1C-8F-4F + +**地址解析协议(ARP)** + +​ 根据已知的IP地址解析获得对应的mac地址 + +image-20220127151644644 + +​ ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取数据链路层地址的一个TCP/IP协议 + +ARP是IPv4中必不可少的一种协议,它的主要功能是: + +​ 将IP地址解析为MAC地址 + +​ 维护IP地址与MAC地址的映射关系的缓存,即ARP表项 + +​ 实现网段内重复IP地址的检测 + +**APR工作原理:** + +image-20220127151829794 + +​ 网络设备一般都有一个ARP缓存(ARP Cache)。ARP缓存用来存放IP地址和MAC地址的关联信息 + +​ 在发送数据前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的ARP表项,则直接采用该表项中的MAC地址来封装帧,然后将帧发送出去。如果缓存表中不存在相应信息,则通过发送ARP Request报文来获得它 + +​ 学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间。在有效期内(缺省:180s),设备可以直接从这个表中查找目的MAC地址来进行数据封装,而无需进行ARP查询。过了这段有效期,ARP表项会被自动删除 + +​ 如果目标设备位于其他网络,则源设备会在ARP缓存表中查找网关的MAC地址。然后将数据发送给网关。最后网关再把数据转发给目的设备 + +image-20220127152046377 + +​ 所有的主机接收到该ARP Request报文后,都会检查它的目的端IP地址字段与自身的IP地址是否匹配。如果不匹配,则该主机将不会响应该ARP Request报文。如果匹配,则该主机会将ARP请求报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中,然后通过ARP Reply报文进行响应 + +image-20220127152122508 + +​ 主机2会向主机1回应ARP Reply报文 + +​ ARP Reply报文中的发送端IP地址是主机2自己的IP地址,目的端IP地址是主机1的IP地址,目的端MAC地址是主机1的MAC地址,发送端MAC地址是自己的MAC地址,同时操作类型被设置为Reply + +​ ARP Reply报文通过单播传送 + +image-20220127152218526 + +​ 主机1收到ARP Reply以后,会检查ARP报文中目的端IP地址字段与自身的IP地址是否匹配。如果匹配,ARP报文中的发送端MAC地址和发送端IP地址会被记录到主机1的ARP缓存表中 + +
7.网络层
+ +​ 数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者式电磁波信号 + +​ 物理层的PDU被称为比特流(Bitstream) + +**常见传输介质** + +​ 双绞线:当今以太网最常见的传输介质,按照抗电磁干扰能力还可以分为 + +​ STP-屏蔽双绞线 + +​ UTP-非屏蔽双绞线 + +​ 光纤传输,按照功能部件可分为: + +​ 光纤:光传输介质,简单的说,就是一根玻璃纤维,用于约束光传输的通道 + +​ 光模块:将电信号与光信号互转的器件,产生光信号 + +​ 串口电缆在WAN(Wide Area Network,广域网)中大规模使用,根据WAN线路类型不同,串口电缆在设备上连接的接口类型也不同:异/同步串口、ATM接口、POS接口、CE1/PRI接口等 + +​ 无线信号的传输可以通过电磁波进行,例如:无线路由器将数据通过调制以电磁波发送出去,移动终端的无线网卡将电磁波解调,得到数据,完成从无线路由器到移动终端的数据传输 + +

三:数据通信过程

+ +
1.发送方数据封装
+ +image-20220127153413582 + +假设你正在通过网页浏览器访问华为官网,当你输入完网址,敲下回车后,计算机内部会发生下列事情: + +​ 1. IE浏览器(应用程序)调用HTTP(应用层协议),完成应用层数据的封装(图中DATA还应包括HTTP头部,此处省略) + +​ 2. HTTP依靠传输层的TCP进行数据的可靠性传输,将封装好的数据传递到TCP模块 + +​ 3. TCP模块给应用层传递下来的Data添加上相应的TCP头部信息(源端口、目的端口等)。此时的PDU被称作Segment(段) + +​ 4.在IPv4网络中,TCP模块会将封装好的Segment传递给网络层的IPv4模块(若在IPv6环境,会交给IPv6模块进行处理) + +​ 5. IPv4模块在收到TCP模块传递来的Segment之后,完成IPv4头部的封装,此时的PDU被称为Packet(包) + +​ 6. 由于使用了Ethernet作为数据链路层协议,故在IPv4模块完成封装之后,会将Packet交由数据链路层的Ethernet模块(例如以太网卡)处理 + +​ 7. Ethernet模块在收到IPv4模块传递来的Packet之后,添加上相应的Ethernet头部信息和FCS帧尾,此时的PDU被称为Frame(帧) + +​ 8. 在Ethernet模块封装完毕之后,会将数据传递到物理层 + +​ 9. 根据物理介质的不同,物理层负责将数字信号转换成电信号,光信号,电磁波(无 线)信号等 + +​ 10. 转换完成的信号在网络中开始传递 + +
2.中间网络数据传输
+ +​ 封装好的完整数据会在网络中被传递 + +image-20220127153839453 + +​ 网络中的二层设备(如以太网交换机)只会解封装数据的二层头部,根据二层头部的信息进行相应的“交换”操作 + +​ 网络中的三层设备(如路由器)只会解封装到三层头部,并且根据三层头部的信息进行相应的“路由”操作 + +
3.接收方数据解封装
+ +image-20220127153936050 + +​ 经过中间网络传递之后,数据最终到达目的服务器。根据不同的协议头部的信息,数据将被一层层的解封装并做相应的处理和传递,最终交由WEB服务器上的应用程序进行处理 + +

第四节:华为VRP系统

+ +

一:VRP系统基础

+ +
1.华为VRP系统概述
+ +​ VRP是华为公司数据通信产品的通用操作系统平台,作为华为公司从低端到核心的全系列路由器、以太网交换机、业务网关等产品的软件核心引擎 + +image-20220127155106294 + +**功能:** + +​ 实现统一的用户界面和管理界面 + +​ 实现控制平面功能,并定义转发平面接口规范 + +​ 实现各产品转发平面与VRP控制平面之间的交互 + +​ 屏蔽各产品链路层对于网络层的差异 + +**VRP的发展:** + +image-20220127155028448 + +**文件系统:** + +​ 文件系统是指对存储器中文件、目录的管理,功能包括查看、创建、重命名和删除目录、拷贝、移动、重命名和删除文件等 + +​ 掌握文件系统的基本操作,对于网络工程师高效管理设备的配置文件和VRP系统文件至关重要 + +image-20220127155329896 + +​ 配置文件是命令行的集合。用户将当前配置保存到配置文件中,以便设备重启后,这些配置能够继续生效。另外,通过配置文件,用户可以非常方便地查阅配置信息,也可以将配置文件上传到别的设备,来实现设备的批量配置 + +​ 补丁是一种与设备系统软件兼容的软件,用于解决设备系统软件少量且急需解决的问题。在设备的运行过程中,有时需要对设备系统软件进行一些适应性和排错性的修改,如改正系统中存在的缺陷、优化某功能以适应业务需求等 + +​ 文件的管理方式包括: + +​ 通过Console或者telnet等直接登陆系统管理 + +​ 通过FTP、TFTP或SFTP登录设备进行管理 + +
2.存储设备
+ +​ 存储设备包括:SDRAM、Flash、NVRAM、SD Card、USB + +​ SDRAM是系统运行内存,相当于电脑的内存 + +​ NVRAM非易失存储器,日志写入FLASH操作是耗时耗CPU的操作,因此采用缓存机制,即日志产生后,先存入缓存,定时器超时或缓存满后再写入Flash + +​ Flash与SD Card属于非易失存储器,配置文件与系统文件存放于flash或SD Card中 + +​ SD Card是外置的SD存储卡,用来扩展。USB是接口,用于外接大容量存储设备,主要用于设备升级,传输数据 + +​ 补丁文件和PAF文件由维护人员上传可自行指定放置 + +
3.设备管理
+ +​ 用户对设备的常见管理方式主要有命令行方式和web网管方式两种 + +​ 用户需要通过相应的方式登录到设备后才能对设备进行管理 + +image-20220127155758135 + +**VRP用户界面** + +​ 用户通过命令行方式登录设备时,系统会分配一个用户界面来管理、监控设备和用户间的当前会话 + +​ 设备系统支持的用户界面有Console用户界面和虚拟类型终端VTY用户界面 + +image-20220127160014823 + +**VRP用户级别** + +​ VRP提供基本的权限控制,可以实现不同级别的用户能够执行不同级别的命令,用以限制不同用户对设备的操作 + +image-20220127173254879 + +**WEB网管方式登录** + +image-20220127173336104 + +**命令行方式登录** + +image-20220127173408530 + +​ 使用Console线缆来连接交换机或路由器的Console口与计算机的COM口,这样就可以通过计算机通过PuTTY工具实现本地调试和维护。Console口是一种符合RS232串口标准的RJ45接口。目前大多数台式电脑提供的COM口都可以与Console口连接。笔记本电脑一般不提供COM口,需要使用USB到RS232的转换接口,Console口登录是设备默认开启的功能,不需要对设备做预配置 + +**本地登录** + +image-20220127173528378 + +​ 很多终端模拟程序都能发起Console连接,例如,可以使用PuTTY连接到VRP操作系统。使用PuTTY连接VRP时,必须设置端口参数。上图是端口参数设置的示例,如果对参数值做了修改,需要恢复默认参数值 + +**远程登录** + +image-20220127173605321 + +​ 设备默认不开启SSH登录功能,需要用户先通过Console口登录,配置上SSH登录必须的参数之后,才可以使用SSH登录功能 + +​ 如果使用ssh远程登陆,连接类型为ssh,需要输入远程登录服务器的IP地址,端口默认为:22 + +​ 如果使用telnet远程登录,连接类型为telnet,需要输入远程登录服务器的IP地址,端口默认为:23 + +**命令行界面** + +​ 登录成功后即进入命令行界面CLI(Command Line Interface) + +​ 命令行界面是工程师与网络设备进行交互的常用工具 + +image-20220127174037131 + +

二:命令行基础

+ +
1.熟悉命令行
+ +image-20220127174152651 + +命令字:规定了系统应该执行的功能,如display(查看设备状态),reboot(重启设备)等命令字 + +关键字:特殊的字符构成,用于进一步约束命令,是对命令的扩展,也可以用于表达命令构成逻辑而增设的补充字符串 + +参数列表:是对命令执行功能的进一步约束,包括一对或多对参数名和参数值 + +image-20220127174453071 + +​ 命令字、关键字、参数名、参数值之间,需要用空格分隔开 + +​ 每条命令有最多一个命令字,若干个关键字和参数,形成一条命令,参数必须由参数名和参数值组成 + +
2.命令行视图
+ +​ 设备提供了多样的配置和查询命令,为便于用户使用这些命令,VRP系统按功能分类将命令分别注册在不同的命令行视图 + +​ 用户视图应为登录系统后的第一个视图。在用户视图中不提供除查询和工具命令之外的其他命令 + +​ 用户视图中,唯一可进入的视图是系统视图;系统视图中提供全局的配置命令;如果系统存在下一级配置视图,则在系统视图中须提供进入下一级配置视图的命令 + +image-20220127174747778 + +image-20220127174819063 + +
3.使用命令行在线帮助
+ +​ 用户在使用命令行时,可以使用在线帮助功能以获取实时的帮助,从而无需记忆大量的复杂的命令 + +​ 命令行在线帮助可以分为完全帮助和部分帮助,可以通过输入“?”实现 + +image-20220127175122927 + +
4.使用undo命令行
+ +​ 在命令前加undo关键字,即为undo命令行,undo命令行一般用来恢复缺省情况、禁用某个功能或者删除某项配置 + +image-20220127175426219 + +
5.常见文件系统操作命令
+ +​ VRP基于文件系统来管理设备上的文件和目录。在管理文件和目录时,经常会使用一些基本命令来查询文件或者目录的信息,常用的命令包括**pwd**,**dir** [ **/all** ] [ filename | directory ]和**more** [ **/binary** ] filename [ offset ] [ **all** ] + +​ **pwd**命令用来显示当前工作目录 + +​ **dir** [ **/all** ] [ filename | directory ]命令用来查看当前目录下的文件信息 + +​ **more** [ **/binary** ] filename [ offset ] [ **all** ]命令用来查看文本文件的具体内容 + +​ **cd** *directory*命令用来修改用户当前的工作目录 + +​ **mkdir** *directory*命令能够创建一个新的目录。目录名称可以包含1-64个字符 + +​ **rmdir** *directory*命令能够删除文件系统中的目录,此处需要注意的是,只有空目录才能被删除 + +​ **copy** *source-filename destination-filename*命令可以复制文件。如果目标文件已存在,系统会提示此文件将被替换。目标文件名不能与系统启动文件同名,否则系统将会出现错误提示 + +​ **move** *source-filename destination-filename*命令可以用来将文件移动到其他目录下,**move**命令只适用于在同一储存设备中移动文件 + +​ **rename** *old-name new-name*命令可以用来对目录或文件进行重命名 + +​ **delete** [ /**unreserved** ] [ /**force** ] { *filename | devicename* }命令可以用来删除文件。不带unreserved参数的情况下,被删除的文件将直接被移动到回收站。回收站中的文件也可以通过执行**undelete**命令进行恢复,但是如果执行delete命令时指定了unreserved参数,则文件将被永久删除。在删除文件时,系统会提示“是否确定删除文件”,但如果命令中指定了/force 参数,系统将不会给出任何提示信息。*filename*参数指的是需要删除的文件的名称,*devicename*参数指定了储存设备的名称 + +​ **reset recycle-bin** [ *filename | devicename* ]可以用来永久删除回收站中的文件,*filename*参数指定了需要永久删除的文件的名称,*device-name*参数指定了储存设备的名称 + +
6.基本配置命令
+ +image-20220127180006628 + +image-20220127180134309 + +image-20220127180318262 + +image-20220127180333860 + +​ 网络上一般都会部署不止一台设备,管理员需要对这些设备进行统一管理。在进行设备调试的时候,首要任务是设置设备名。设备名用来唯一地标识一台设备。AR系列路由器默认的设备名是Huawei,而S系列交换机默认的设备名是HUAWEI。设备名称一旦设置,立刻生效 + +​ 为了保证与其他设备协调工作,需要准确设置系统时钟。系统时钟的=UTC(Coordinated Universal Time)+当前时区与UTC的时间差,一般设备上都会有内置的UTC和时间差配置 + +​ 可以通过clock datetime命令直接设置设备的系统时钟,格式为HH:MM:SS YYYY-MM-DD,此时UTC等于系统时钟-时间差 + +​ 也可以通过修改UTC和系统当前时区来修改系统时钟 + +​ **clock datetime** [ utc ] *HH:MM:SS YYYY-MM-DD*用来修改UTC时间 + +​ **clock timezone** *time-zone-name* { **add** | **minus** } *offset* 用来配置本地时区信息。本地时间加上或减去*offset*即为UTC + +
7.文件查询命令、目录操作
+​ 查看路由器当前目录下的文件和目录的信息 + +​ 创建一个新的目录test,然后删除该目录 + +```shell +pwd +flash: + +dir +Directory of flash:/ + + Idx Attr Size(Byte) Date Time FileName + 0 drw- - Aug 07 2015 13:51:14 src + 1 drw- - Jan 27 2022 20:49:53 pmdata + 2 drw- - Jan 27 2022 20:49:57 dhcp + 3 -rw- 28 Jan 27 2022 20:49:57 private-data.txt + +32,004 KB total (31,995 KB free) + +mkdir test +Info: Create directory flash:/test......Done. +dir +Directory of flash:/ + + Idx Attr Size(Byte) Date Time FileName + 0 drw- - Aug 07 2015 13:51:14 src + 1 drw- - Jan 27 2022 20:49:53 pmdata + 2 drw- - Jan 27 2022 20:49:57 dhcp + 3 -rw- 28 Jan 27 2022 20:49:57 private-data.txt + 4 drw- - Jan 27 2022 20:51:55 test + +32,004 KB total (31,994 KB free) + +rmdir test +Remove directory flash:/test?[Y/N]:y +%Removing directory flash:/test...Done! +``` + +

第五节:网络层协议及IP编址

+ +

一:网络层协议

+ +​ 网络层协议通常被称为IP层,但是网络层不只是IP协议,还包括ICMP协议(Internet Control Message Protocol)、IPX协议(Internet Packet Exchange)等 + +
1.IP协议
+ +**作用:** + +​ 为网络层设备提供逻辑地址 + +​ 负责数据包的寻址和转发 + +**版本:** + +​ IPv4(IP Version 4) + +​ IPv6(IP Version 6) + +​ IPv4(Internet Protocol Version 4)协议族是TCP/IP协议族中最为核心的协议族。它工作在TCP/IP协议栈的网络层,该层与OSI参考模型的网络层相对应 + +​ IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation)。它是Internet工程任务组IETF(Internet Engineering Task Force)设计的一套规范,是IPv4(Internet Protocol Version 4)的升级版本 + +
2.IPv4报文格式
+ +image-20220129220717996 + +​ Version:4 bit,4:表示为IPv4;6:表示为IPv6 + +​ Header Length:4 bit,首部长度,如果不带Option字段,则为20,最长为60 + +​ Type of Service:8 bit,服务类型。只有在有QoS差分服务要求时,这个字段才起作用 + +​ Total Length:16 bit,总长度,整个IP数据包的长度 + +​ Identification:16 bit,标识,分片重组时会用到该字段 + +​ Flags:3 bit,标志位 + +​ Fragment Offset:12 bit,片偏移,分片重组时会用到该字段 + +​ Time to Live:8 bit,生存时间 + +​ Protocol:8 bit,协议:下一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理。 + +​ **常见值:** + +​ − 1: ICMP, Internet Control Message; + +​ − 2: IGMP, Internet Group Management; + +​ − 6: TCP , Transmission Control Protocol; + +​ − 17: UDP, User Datagram Protocol。 + +​ Header Checksum:16 bit,首部检验和 + +​ Source IP Address:32 bit,源IP地址 + +​ Destination IP Address:32 bit,目的IP地址 + +​ Options:可变,选项字段 + +​ Padding:可变,填充字段,全填0 + +
3.数据包分片
+ +​ 将报文分割成多个片段的过程叫分片 + +​ 网络中转发的IP报文的长度可以不同,但如果报文的长度超过了数据链路所支持的最大长度,则报文就需要分割成若干个较小的片段才能够在链路上传输 + +​ image-20220129221212232 + +​ Identification:16 bit,发送主机赋予的标识,分片重组时会用到该字段 + +​ Flags:3 bit,标志位 + +​ 保留段位:0,保留 + +​ 不分段位:1,表示“不能分片”;0,表示“能分片” + +​ 更多段位:1,表示“后面还有分片”;0,表示“最后一个数据片” + +​ Fragment Offset:12 bit,片偏移,分片重组时会用到该字段。指出较长的分组在分片后,该片在原分组中的相对位置,与更多段位组合,帮助接收方组合分段的报文 + +
4.生存时间
+ +​ TTL字段设置了数据包可以经过的路由器数目 + +​ 一旦经过一个路由器,TTL值就会减1,当该字段为0时,数据包将被丢弃 + +image-20220129221851294 + +​ Time to Live:8 bit,生存时间。可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值 + +​ 报文在网段间转发时,如果网络设备上的路由规划不合理,就可能会出现环路,导致报文在网络中无限循环,无法到达目的端。环路发生后,所有发往这个目的地的报文都会被循环转发,随着这种报文逐渐增多,网络将会发生拥塞 + +​ 为避免环路导致的网络拥塞,IP报文头中包含一个生存时间TTL(Time To Live)字段。报文每经过一台三层设备,TTL值减1。初始TTL值由源端设备设置。当报文中的TTL降为0时,报文会被丢弃。同时,丢弃报文的设备会根据报文头中的源IP地址向源端发送ICMP错误消息。(注意:网络设备也可被配置为不向源端发送ICMP错误消息。) + +
5.协议号
+ +​ IP报文头中的协议号字段标识了将会继续处理该报文的协议 + +​ 指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上报给那个进程处理 + +image-20220129222124044 + +​ 目的端的网络层在接收并处理报文以后,需要决定下一步对报文如何处理。IP报文头中的协议字段标识了将会继续处理报文的协议 + +​ 该字段可以标识网络层协议,如ICMP(Internet Control Message Protocol,因特网控制报文协议,对应值0x01);也可以标识上层协议,如TCP(Transmission Control Protocol,传输控制协议,对应值0x06)、UDP(User Datagram Protocol,用户数据包协议,对应值0x11) + +

二:IP地址介绍

+ +
1.什么是IP地址
+ +​ IP地址在网络中用于标识一个节点 + +​ IP地址用于IP报文在网络中的寻址 + +​ 在IP网络上,如果用户要将一台计算机连接到Internet上,就需要申请一个IP地址。IP地址就像现实中的地址,可以标识网络中的一个节点,数据就是通过它来找到目的地的。即我们通过IP地址实现全球范围内的网络通信 + +​ IP地址是网络设备接口的属性,不是网络设备本身的属性。当我们说给某台设备分配一个IP地址时,实质上是指给这台设备的某个接口分配一个IP地址。如果设备有多个接口,通常每个接口都至少需要一个IP地址 + +​ 需要使用IP地址的接口,通常是路由器和计算机的接口 + +**IP地址表示** + +​ IP地址是长度是32 bit,由4个字节组成。为了阅读和书写方便,IP地址通常采用点分十进制数来表示 + +**点分十进制表示法** + +​ IP地址表现形式能够帮助我们更好的使用和配置网络,但通信设备在对IP地址进行计算时使用的是二进制的操作方式,因此掌握十进制、二进制的转换运算非常有必要 + +**IPv4地址范围** + +​ 00000000.00000000.00000000.00000000~11111111.11111111.11111111.11111111,即0.0.0.0~255.255.255.255 + +image-20220206115909107 + +
2.IP地址构成
+ +网络部分 (网络号):用来标识一个网络 + +​ IP地址不能反映任何有关主机位置的地理信息,只能通过网络号码字段判断出主机属于哪个网络 + +​ 对于网络号相同的设备,无论实际所处的物理位置如何,它们都是处在同一个网络中 + +主机部分 (主机号):用来区分一个网络内的不同主机 + +**网络掩码 (Netmask),又称子网掩码 (Subnet Mask):** + +​ 网络掩码为32 bit,与IP地址的位数一样,通常也以点分十进制数来表示 + +​ 网络掩码不是一个IP地址,在二进制的表示上是一堆连续的1、后面接一堆连续的0 + +​ 通常将网络掩码中1的个数称为这个网络掩码的长度。如:掩码0.0.0.0的长度是0,掩码252.0.0.0的长度是6 + +​ 网络掩码一般与IP地址结合使用,其中值为1的比特对应IP地址中的网络位;值为0的比特对应IP地址中的主机位,以此来辅助我们识别一个IP地址中的网络位与主机位。即网络掩码中1的个数就是IP地址的网络号的位数,0的个数就是IP地址的主机号的位数 + +
3.IP地址寻址
+ +image-20220206145132672 + +​ 网络号用于表示主机所在的网络,类似于“XX省XX市XX区XX小区”的作用 + +​ 主机号用于表示网络号所定义的网络范围内某个特定的主机接口,类似于门牌号“XX栋XX号”的作用 + +**网络寻址:** + +​ 二层网络寻址:可直接通过IP地址,找到对应的主机接口 + +​ 三层网络寻址:利用网关转发来自不同网段之间的数据包 + +**网关:** + +​ 报文转发过程中,首先需要确定转发路径以及通往目的网段的接口。如果目的主机与源主机不在同一网段,报文需要先转发到网关,然后通过网关将报文转发到目的网段 + +​ 网关是指接收并处理本地网段主机发送的报文并转发到目的网段的设备。为实现此功能,网关必须知道目的网段的路由。网关设备上连接本地网段的接口地址即为该网段的网关地址 + +
4.IP地址分类(有类编址)
+ +image-20220206145401415 + +image-20220206145431843 + +**为了方便IP地址的管理及组网,IP地址分成五类:** + +​ A、B、C、D、E类的类别字段分别是二进制数0、10、110、1110、1111,通过网络号码字段的前几个比特就可以判断IP地址属于哪一类,这是区分各类地址最简单的方法 + +​ A、B、C三类地址是单播IP地址 (除一些特殊地址外),只有这三类地址才能分配给主机接口使用 + +​ D类地址属于组播IP地址 + +​ E类地址专门用于特殊的实验目的 + +**A、B、C类地址比较:** + +​ 使用A类地址的网络称为A类网络;使用B类地址的网络称为B类网络;使用C类地址的网络称为C类网络 + +​ A类网络的网络号为8 bit,个数很少,但所允许的主机接口的个数很多;首位恒定为0,地址空间为:0.0.0.0~127.255.255.255 + +​ B类网络的网络号为16 bit,介于A类和C类网络之间;首两位恒定为10,地址空间为:128.0.0.0~191.255.255.255 + +​ C类网络的网络号为24 bit,个数很多,但所允许的主机接口的个数就很少;首三位恒定为110,地址空间为:192.0.0.0~223.255.255.255 + +
5.IP地址类型
+ +image-20220206145654781 + +**网络地址:** + +​ 网络号为X,主机号的每个比特都为0 + +​ 不能分配给具体的主机接口使用 + +**广播地址:** + +​ 网络号为X,主机号的每个比特都为1 + +​ 不能分配给具体的主机接口使用 + +**可用地址:** + +​ 又称主机地址,可用分配给具体的主机接口使用 + +**一个网段可用地址数量计算:** + +​ 一个网段的主机位为n位,则IP地址数为:2ⁿ,可用IP地址数为:2ⁿ-2 (减去网络地址和广播地址) + +
6.IP地址计算
+ +image-20220206150041098 + +​ 网络地址:将IP地址的主机位全设为0,所得结果是该IP地址所在网络的网络地址 + +​ 广播地址:将IP地址的主机位全设为1,所得结果是该IP地址所在网络的广播地址 + +​ IP地址数:2ⁿ,n为主机位位数 + +​ 可用IP地址数:2ⁿ-2,n为主机位位数 + +
7.私有IP地址
+ +​ 为了解决IP地址短缺的问题,提出了私有地址的概念。私有地址是指内部网络或主机地址,这些地址只能用于某个内部网络,不能用于公共网络 + +​ 公网IP地址:连接到Internet的网络设备必须具有由ICANN分配的公网IP地址 + +​ 私网IP地址:私网IP地址的使用使得网络可以得到更为自由地扩展,因为同一个私网IP地址是可以在不同的私有网络中重复使用的 + +​ 私有网络连接到Internet:私有网络由于使用了私网IP地址,是不允许连接到Internet的。后来在实际需求的驱动下,许多私有网络也希望能够连接到Internet上,从而实现私网与Internet之间的通信,以及通过Internet实现私网与私网之间的通信。私网与Internet的互联,必须使用网络地址转换 (NAT)技术实现 + +
8.特殊IP地址
+ +0.0.0.0 + +​ 如果把这个地址作为网络地址,它的意思就是“任何网络”的网络地址;如果把这个地址作为主机接口地址,它的意思就是“这个网络上主机接口”的IP地址 + +​ 例如:当一个主机接口在启动过程中尚未获得自己的IP地址时,就可以向网络发送目的IP地址为有限广播地址、源IP地址为0.0.0.0的DHCP请求报文,希望DHCP服务器在收到自己的请求后,能够给自己分配一个可用的IP地址 + +127.0.0.0/8 + +​ 这个地址为环回地址,它可以作为一个IP报文的目的IP地址使用。其作用是测试设备自身的软件系统 + +​ 一个设备产生的、目的IP地址为环回地址的IP报文是不可能离开这个设备本身的 + +169.254.0.0/16 + +​ 如果一个网络设备获取IP地址的方式被设置成了自动获取方式,但是该设备在网络上又没有找到可用的DHCP服务器,那么该设备就会使用169.254.0.0/16网段的某个地址来进行临时通信 + +255.255.255.255 + +​ 这个地址称为有限广播地址,它可以作为一个IP报文的目的IP地址使用 + +​ 路由器接收到目的IP地址为有限广播地址的IP报文后,会停止对该IP报文的转发 + +
9.IPv4&IPv6
+ +image-20220206150628589 + +

三:子网划分

+ +
1.为什么要划分子网
+ +image-20220206151102452 + +​ “有类编址”的地址划分过于死板,划分的颗粒度太大,会有大量的主机号不能被充分利用,从而造成了大量的IP地址资源浪费 + +​ 因此可以利用子网划分来减少地址浪费,即VLSM (Variable Length Subnet Mask),可变子网掩码。将一个大的有类网络,划分成若干个小的子网,使得IP地址的使用更为科学 + +
2.如何进行子网划分
+ +image-20220206151334367 + +​ 假设有一个C类网段地址:192.168.10.0;默认情况下,网络掩码为24位,包括24位网络位,8位主机位 + +​ 通过计算可知,这样的网络中,有256个IP地址 + +image-20220206151419310 + +​ 现在,将原有的24位网络位向主机位去“借”1位,这样网络位就扩充到了25位,相对的主机位就减少到了7位,而借过来的这1位就是子网位,此时网络掩码就变成了25位,即255.255.255.128,或/25 + +​ 子网位:可取值0或取值1,则得到了两个新的子网 + +​ 通过计算可知,现在网络中,有128个IP地址 + +image-20220206151828694 + +计算网络地址,主机位全为0: + +​ 如果子网位取值0,则网络地址为192.168.10.0 + +​ 如果子网位取值1,则网络地址为192.168.10.128 + +image-20220206151910876 + +计算广播地址,主机位全为1: + +​ 如果子网位取值0,则广播地址为192.168.10.127 + +​ 如果子网位取值1,则广播地址为192.168.10.255 + +

四:ICMP协议

+ +​ Internet控制消息协议ICMP是IP协议的辅助协议 + +​ ICMP协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用 + +image-20220206152307225 + +​ 为了更有效地转发IP数据报文和提高数据报文交互成功的机会,在网络层使用ICMP协议。ICMP允许主机或设备报告差错情况和提供有关异常情况的报告 + +ICMP消息: + +​ ICMP消息封装在IP报文中,IP报文头部Protocol值为1时表示ICMP协议 + +​ ICMP消息的格式取决于Type和Code字段,其中Type字段为消息类型,Code字段包含该消息类型的具体参数 + +​ 校验和字段用于检查消息是否完整 + +​ 消息中包含32 bit的可变参数,这个字段一般不使用,通常设置为0 + +​ 在ICMP重定向消息中,这个字段用来指定网关IP地址,主机根据这个地址将报文重定向到指定网关 + +​ 在Echo请求消息中,这个字段包含标识符和序号,源端根据这两个参数将收到的回复消息与本端发送的Echo请求消息进行关联。尤其是当源端向目的端发送了多个Echo请求消息时,需要根据标识符和序号将Echo请求和回复消息进行一一对应 + +
1.ICMP重定向
+ +​ image-20220206152519257 + +​ ICMP重定向报文是ICMP控制报文的一种,在特定形况下,当路由器检测到一台机器使用非最优路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由 + +**ICMP重定向过程:** + +​ 主机A希望发送报文到服务器A,于是根据配置的默认网关地址向网关RTB发送报文 + +​ 网关RTB收到报文后,检查报文信息,发现报文应该转发到与源主机在同一网段的另一个网关设备RTA,此转发路径是更优的路径,所以RTB会向主机发送一个Redirect消息,通知主机直接向另一个网关RTA发送该报文 + +​ 主机收到Redirect消息后,会向RTA发送报文,然后RTA会将该报文再转发给服务器A + +
2.ICMP差错检测
+ +​ ICMP Echo消息常用于诊断源和目的地之间的网络连通性,同时还可以提供其他信息,如报文往返时间等 + +image-20220206152929012 + +​ ICMP的一个典型应用是Ping。Ping是检测网络连通性的常用工具,同时也能够收集其他相关信息。用户可以在Ping命令中指定不同参数,如ICMP报文长度、发送的ICMP报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行Ping测试 + +
3.ICMP差错报告
+ +​ ICMP定义了各种错误消息,用于诊断网络连接性问题,根据这些错误信息,源设备可以判断出数据传输失败的原因,如:当网络设备无法访问目标网络时,会自动发送ICMP目的不可达报文到发送端设备 + +image-20220206153211961 + +

五:IP地址配置

+ +image-20220206153257910 + +image-20220206153313024 + +​ 物理接口:物理接口是指网络设备上实际存在的接口,分为负责承担业务传输的业务接口和负责管理设备的管理接口,例如GE业务接口和MEth管理接口 + +​ 逻辑接口:逻辑接口是指能够实现数据交换功能但物理上不存在、需要通过配置建立的接口,需要承担业务传输,例如VLANIF接口、Loopback接口 + + + + + diff --git a/Datacom-MD/第三章:路由基础及静态路由技术.md b/Datacom-MD/第三章:路由基础及静态路由技术.md new file mode 100644 index 0000000..7c700d9 --- /dev/null +++ b/Datacom-MD/第三章:路由基础及静态路由技术.md @@ -0,0 +1,323 @@ +

第三章:路由基础及静态路由技术

+ +> 作者:行癫 + +------ + +

第一节:路由概述

+ +![image-20220206164525243](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220206164525243.png) + +​ 通过IP地址能够寻找到一个唯一的网络节点,每个IP都有自己所属的网段,这些网络可能分布在世界各地,共同组成了全球的网络 + +​ 为了实现不同网段之间的相互通信,网络设备需要能够转发来自不同网段的IP报文,将其送达不同的IP网段 + +

一:路由基本概念

+ +
1.路由
+ +​ 路由是指导报文转发的路径信息,通过路由可以确认转发IP报文的路径 + +​ 路由设备是依据路由转发报文到目的网段的网络设备,最常见的路由设备:路由器 + +​ 路由设备维护着一张路由表,保存着路由信息 + +image-20220206164918186 + +​ 网关以及中间节点(路由器)根据收到的IP报文其目的地址选择一条合适的路径,并将报文转发到下一个路由器。在路径中的最后一跳路由器二层寻址将报文转发给目的主机。这个过程被称为路由转发 + +​ 中间节点选择路径所依赖的表项为称为路由表 + +​ 路由条目包含明确的出接口以及下一跳,这两项信息指导IP报文转发到相应的下一跳设备上 + +
2.路由信息介绍
+ +image-20220206165110195 + +​ 通过路由中包含的信息,路由设备可以转发IP报文到相应的路径 + +​ 目的地址、掩码用于识别IP报文目的地址,路由设备将IP报文匹配到相应的路由之后,根据路由的出接口、下一跳确认转发的路径 + +​ 只有出接口并不能够确认转发IP报文的下一跳设备,还需要明确的下一跳设备地址 + +
3.路由表
+ +image-20220206165245781 + +​ 路由器依据路由表转发报文 + +​ 路由表由一条条详细的路由条目组成 + +​ 路由表由路由条目组成,但不代表路由表中保存了所有路由,路由表中只会保存“最优的”路由 + +​ 对路由表中的路由条目的管理实际上就是路由器维护、管理路由信息的具体实现 + +

二:路由条目生成

+ +
1.路由信息获取方式
+ +image-20220206165436019 + +​ 直连路由:直连接口所在网段的路由,由设备自动生成 + +​ 静态路由:由网络管理员手工配置的路由条目 + +​ 动态路由:路由器通过动态路由协议(如OSPF、IS-IS、BGP等)学习到的路由 + +
2.直连路由
+ +image-20220206165541043 + +​ 直连路由指向本地直连网络的路由,由设备自动生成 + +​ 当路由器为路由转发的最后一跳路由器时,IP报文匹配直连路由,路由器转发IP报文到目标主机 + +​ 使用直连路由进行转发时,报文的目的IP和路由器接口IP在一个网段之中 + +​ 当匹配中直连路由进行转发时,此时路由器会查看ARP表项,将报文直接转到目的地址,此时该路由器为路由转发的最后一跳路由器 + +​ 直连路由的下一跳地址并不是其他设备上的接口地址,因为该路由的目的网段为接口所在网段,本接口就是最后一跳,不需要再转发给下一跳,所以在路由表中的下一跳地址就是接口自身地址 + +​ 使用直连路由进行路由转发时,转发的动作不是交给下一跳,而是查询ARP表项,根据ARP表项封装报文,将报文发送到目的IP + +image-20220206165932481 + +​ 并不是所有接口生成的直连路由都会出现在路由表中,直连路由出现在路由表中的前提是该接口的物理状态、协议都为UP + +

三:最优条目路由优选

+ +
1.查看路由表
+ +image-20220206214511775 + +​ Destination/Mask:表示此路由的目的网络地址与网络掩码,将目的地址和子网掩码"逻辑与"后可得到目的主机或路由器所在网段的地址。 + +​ Proto(Protocol):该路由的协议类型,即路由器是通过什么协议获知该路由 + +​ Pre(Preference):表示此路由的路由协议优先级,针对同一目的地,可能存在不同下一跳、出接口等多条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手动配置的静态路由,优先级最高者将成为当前的最优路由 + +​ Cost:路由开销,当到达同一目的地的多条路由具有相同的优先级时,路由开销最小的将成为当前的最优路由 + +​ NextHop:表示对于本路由器而言,到达该路由指向的目的网络的下一跳地址 + +​ Interface:表示此路由的出接口,指明数据将从本路由器的哪个接口转发出去 + +​ Preference用于不同路由协议间路由优先级的比较,Cost用于同一种路由协议内部不同路由的优先级的比较。在业界,Cost也被称为路由度量值(Metric) + +
2.基本概念
+ +image-20220206215737399 + +​ 当路由器从多种不同的途径获知到达同一个目的网段的路由时,路由器会比较这些路由的优先级,优选优先级值最小的路由。 + +​ 路由来源的优先级值越小代表加入路由表的优先级越高 + +​ 拥有最高优先级的路由将被添加进路由表 + +
3.比较过程
+ +image-20220206220119702 + +​ RTA通过动态路由协议OSPF和手动配置的方式都发现了到达10.0.0.0/30的路由,此时会比较这两条路由的优先级,优选优先级值最小的路由 + +​ 每一种路由协议都有相应的优先级 + +​ OSPF拥有更优的优先级,因此通过OSPF学习到的路由将添加到路由表 + +
4.常见默认数值
+ +image-20220206220810774 + +
5.度量值基本概念
+ +image-20220206220853364 + +​ 当路由器通过某种路由协议发现了多条到达同一个目的网络的路由时(拥有相同的路由优先级),度量值将作为路由优选的依据之一 + +​ 路由度量值表示到达这条路由所指目的地址的代价 + +​ 一些常见的度量值有:跳数、带宽、时延、代价、负载、可靠性等 + +​ 度量值数值越小越优先,度量值最小路由将会被添加到路由表中 + +​ 度量值很多时候被称开销(Cost) + +
6.比较过程
+ +image-20220206221428952 + +​ RTA通过动态路由协议OSPF学习到了两条目的地为10.0.0.0/30的路由,学习自同一路由协议、优先级相同,因此需要继续比较度量值 + +​ 两条路由拥有不同的度量值,下一条为30.1.1.2的OSPF的路由条目拥有更小的度量值,因此被加入到路由表中 + +

四:路由转发

+ +
1.最长匹配原则
+ +​ 当路由器收到一个IP数据包时,会将数据包的目的IP地址与自己本地路由表中的所有路由表项进行逐位对比,直到找到匹配度最长的条目,这就是最长前缀匹配机制 + +image-20220206222255915 + +
2.案例一
+ +image-20220206222329880 + +​ 根据最长匹配原则进行匹配,能够匹配192.168.2.2的路由存在两条,但是路由的掩码长度中,一个为16bit,另一个为24bit,掩码长度为24bit的路由满足最长匹配原则,因此被选择来指导发往192.168.2.2的报文转发 + +
3.案例二
+ +image-20220206222636228 + +​ 根据最长匹配原则匹配,能够匹配到192.168.3.2的路由只有一条,此路由为最终转发依据 + +
4.路由转发流程
+ +image-20220206222829616 + +​ 来自10.0.1.0/24网段的IP报文想要去往40.0.1.0/24网段,首先到达网关,网关查找路由表项,确定转发的下一跳、出接口,之后报文转发给R2。报文到达R2之后,R2通过查找路由表项转发给R3,R3收到后查找路由表项,发现IP报文目的IP属于本地接口所在网段,直接本地转发 + +

五:路由进阶

+ +
1.RIB与FIB
+ +​ 具有路由功能的网络设备都维护两种重要的数据表:一是路由表RIB(Routing Information Base,路由信息库);二是转发表FIB。 + +控制层面: + +​ RIB:路由器维护一张本地核心路由表,此外路由器还维护着路由协议各自的路由表 + +数据平面: + +​ FIB:路由器将本地核心路由表中的最优路由下载到FIB表。路由器转发芯片根据FIB表转发报文 + +路由表: + +​ 可以将路由表视为位于路由器的控制平面,实际上路由表并不直接指导数据转发。路由器在执行路由查询时,并不是 + +在路由表中进行报文目的地址的查询,真正指导数据转发的是FIB表,路由器将路由表中的最优路由下载到FIB表,此后如 + +果路由表中的相关表项发生变化,FIB表也将立即同步 + +​ 由于两张表的一致性,且路由表阅读起来更直观,因此在绝大多数场合,在阐述路由器数据转发过程时,会用“路由 + +表”这个说法,实际上,路由器查询的是FIB表,位于控制层面的路由表只是提供路由信息 + +FIB表: + +​ FIB表位于路由器的数据平面,亦被称为转发表项,每条转发表项都指定要到达某个目的地所需通过的出接口及下一 + +跳IP地址等信息 + +
2.IP路由查找的最长匹配原则
+ +​ 路由器查找FIB表时,将报文的目的IP地址和FIB表中各表项的掩码进行按位“逻辑与”,得到的地址符合FIB表中的网络 + +地址则匹配 + +​ 最终选择一个掩码最长的FIB表项转发报文 + +```shell +[Huawei] display fib 0 +Route Flags: G - Gateway Route, H - Host Route, U - Up Route + S - Static Route, D - Dynamic Route, B - Black Hole Route +--------------------------------------------------------------------------------------------- +FIB Table: + Total number of Routes : 8 + +Destination/Mask Nexthop Flag TimeStamp Interface TunnelID +10.3.3.3/32 10.0.1.1 DGHU t[15123] GE0/0/0 0x0 +10.4.4.4/32 10.0.2.2 DGHU t[11177] GE0/0/1 0x0 +10.0.1.2/32 127.0.0.1 HU t[9058] InLoop0 0x0 +127.0.0.1/32 127.0.0.1 HU t[19] InLoop0 0x0 +127.0.0.0/8 127.0.0.1 U t[19] InLoop0 0x0 +0.0.0.0/0 10.0.2.2 GSU t[122] GE0/0/1 0x0 +10.0.1.0/24 10.0.1.2 U t[9058] GE0/0/0 0x0 +10.0.3.0/24 10.0.2.2 DGU t[11177] GE0/0/1 0x0 +``` + +​ 如果一个数据包的目的IP地址是10.3.3.3,路由器将会把这个数据包从哪个接口转发出去呢? + +​ FIB表中每条转发项都指明到达某网段或某主机的报文应通过路由器的哪个物理接口或逻辑接口发送,然后就可到达 + +该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机 + +FIB表信息查看命令:display fib [ slot-id ] + +​ slot-id:显示指定槽位号的FIB表信息。整数形式,取值范围请根据设备实际配置选取 + +FIB表中的字段说明: + +​ Total number of Routes:路由表总数 + +​ Destination/Mask:目的地址/掩码长度 + +​ Nexthop:下一跳 + +​ Flag:当前标志,G、H、U、S、D、B的组合 + +​ G(Gateway):网关路由,表示下一跳是网关 + +​ H(Host):主机路由,表示该路由为主机路由 + +​ U(Up):可用路由,表示该路由状态是Up + +​ S(Static):静态路由 + +​ D(Dynamic):动态路由 + +​ B(Black Hole):黑洞路由,表示下一跳是空接口 + +​ TimeStamp:时间戳,表示该表项存在的时间,单位是秒 + +​ Interface:到目的地址的出接口 + +​ TunnelID:表示转发表项索引。该值不为0时,表示匹配该项的报文通过隧道转发(如:MPLS隧道转发)。该值为0 + +时,表示报文不通过隧道转发 + +

第二节:静态路由

+ +

一:静态路由的应用场景

+ +​ 静态路由由网络管理员手动配置,配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。 + +image-20220206223257592 + +

二:静态路由配置

+ +![image-20220206223328802](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220206223328802.png) + +
1.配置举例
+ +![image-20220206223403730](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220206223403730.png) + +
2.缺省路由
+ +​ 缺省路由是一种特殊的路由,当报文没有在路由表中找到匹配的具体路由表项时才使用的路由,如果报文的目的地址不能与路由表的任何目的地址相匹配,那么报文将选取缺省路由进行转发 + +​ 缺省路由在路由表中的形式为0.0.0.0/0,缺省路由也被叫做默认路由 + +![image-20220206223724059](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220206223724059.png) + +
3.缺省路由的应用场景
+ +​ 缺省路由一般用于企业网络出口,配置一条缺省路由让出口设备能够转发前往Internet上任意地址的IP报文 + +![image-20220206223915694](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220206223915694.png) + +

三:使用静态路由搭建企业网络案例

+ +![image-20220206230656923](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220206230656923.png) + + + + + + + + + + + + + diff --git a/Datacom-MD/第五章:BGP边界网关协议.md b/Datacom-MD/第五章:BGP边界网关协议.md new file mode 100644 index 0000000..aa03540 --- /dev/null +++ b/Datacom-MD/第五章:BGP边界网关协议.md @@ -0,0 +1,2272 @@ +

BGP边界网关协议

+ +> 作者:行癫 + +------ + +

第一节:BGP

+ +

一:BGP基础

+ +​ 为方便管理规模不断扩大的网络,网络被分成了不同的AS(Autonomous System,自治系统)。早期,EGP(Exterior Gateway Protocol,外部网关协议)被用于实现在AS之间动态交换路由信息。但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求 + +​ BGP是为取代最初的EGP而设计的另一种外部网关协议。不同于最初的EGP,BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息 + +
1.BGP概述
+ +**AS** + +image-20220211145759270 + +​ OSPF、IS-IS等IGP路由协议在组织机构网络内部广泛应用,随着网络规模扩大,网络中路由数量不断增长,IGP已无法管理大规模网络,AS的概念由此诞生 + +​ AS指的是在同一个组织管理下,使用统一选路策略的设备集合 + +​ 不同AS通过AS号区分,AS号存在16bit、32bit两种表示方式。IANA负责AS号的分发 + +**使用IGP传递路由** + +image-20220211150023971 + +​ AS之间需要直连链路,或通过VPN协议构造逻辑直连(例如GRE Tunnel)进行邻居建立 + +​ AS之间可能是不同的机构、公司,相互之间无法完全信任,使用IGP可能存在暴露AS内部的网络信息的风险 + +​ 整个网络规模扩大,路由数量进一步增加,路由表规模变大,路由收敛变慢,设备性能消耗加大 + +注意: + +​ VPN(virtual private network,虚拟专用网):使用虚拟专业网络技术可以从逻辑上建立一个直接连接的网络 + +**使用BGP传递路由** + +image-20220211150201640 + +为此在AS之间专门使用BGP(Border Gateway Protocol,边界网关协议)协议进行路由传递,相较于传统的IGP协议: + +​ BGP基于TCP,只要能够建立TCP连接即可建立BGP + +​ 只传递路由信息,不会暴露AS内的拓扑信息 + +​ 触发式更新,而不是进行周期性更新 + +**BGP发展历史** + +image-20220211150259656 + +​ 目前关于BGP-4最新的RFC是4271,相比较于RFC1771,对于一些细节进行了进一步说明,如事件、状态机以及BGP路由决策流程等 + +**BGP在企业中的应用** + +image-20220211150326672 + +
2.BGP的基本概念
+ +​ BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议。早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),1994年开始使用BGP-4(RFC1771),2006年之后单播IPv4网络使用的版本是BGP-4(RFC4271),其他网络(如IPv6等)使用的版本是MP-BGP(RFC4760) + +**BGP的特点:** + +​ BGP使用TCP作为其传输层协议(端口号为179),使用触发式路由更新,而不是周期性路由更新 + +​ BGP能够承载大批量的路由信息,能够支撑大规模网络 + +​ BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导对等体按策略发布路由 + +​ BGP能够支撑MPLS/VPN的应用,传递客户VPN路由 + +​ BGP提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性 + +**BGP特征** + +image-20220211150507695 + +​ BGP使用TCP为传输层协议,TCP端口号179。路由器之间的BGP会话基于TCP连接而建立 + +​ 运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器 + +​ 两个建立BGP会话的路由器互为对等体(Peer),BGP对等体之间交换BGP路由表 + +​ BGP路由器只发送增量的BGP路由更新,或进行触发式更新(不会周期性更新) + +​ BGP能够承载大批量的路由前缀,可在大规模网络中应用 + +image-20220211150541964 + +​ BGP通常被称为路径矢量路由协议(Path-Vector Routing Protocol) + +​ 每条BGP路由都携带多种路径属性(Path attribute),BGP可以通过这些路径属性控制路径选择,而不像IS-IS、OSPF只能通过Cost控制路径选择,因此在路径选择上,BGP具有丰富的可操作性,可以在不同场景下选择最合适的路径控制方式 + +**BGP对等体关系** + +image-20220211150614495 + +​ 与OSPF、IS-IS等协议不同,BGP的会话是基于TCP建立的。建立BGP对等体关系的两台路由器并不要求必须直连 + +**BGP存在两种对等体关系类型:EBGP及IBGP:** + +​ EBGP(External BGP):位于不同自治系统的BGP路由器之间的BGP对等体关系。两台路由器之间要建立EBGP对等体关系,必须满足两个条件 + +​ 两个路由器所属AS不同(即AS号不同) + +​ 在配置EBGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立 + +​ IBGP(Internal BGP):位于相同自治系统的BGP路由器之间的BGP邻接关系 + +**BGP对等体关系建立** + +image-20220211150914518 + +​ 先启动BGP的一端先发起TCP连接,如左图所示,R1先启动BGP,R1使用随机端口号向R2的179端口发起TCP连接,完成TCP连接的建立 + +​ 三次握手建立完成之后,R1、R2之间相互发送Open报文,携带参数用于对等体建立,参数协商正常之后双方相互发送Keepalive报文,收到对端发送的Keepalive报文之后对等体建立成功,同时双方定期发送Keepalive报文用于保持连接 + +**Open报文中携带:** + +​ My Autonomous System:自身AS号 + +​ Hold Time:用于协商后续Keepalive报文发送时间 + +​ BGP Identifier:自身Router ID + +**注意:** + +​ BGP建立对等体的对等体都会发起TCP三次握手,所以会建立两个TCP连接,但是实际BGP只会保留其中一个TCP连接,从Open报文中获取对端BGP Identifier之后BGP对等体会比较本端的Router ID和对端的Router ID大小,如果本端Router ID小于对端Router ID,则会关闭本地建立的TCP连接,使用由对端主动发起创建的TCP连接进行后续的BGP报文交互 + +image-20220211151102726 + +​ BGP对等体关系建立之后,BGP路由器发送BGP Update(更新)报文通告路由到对等体 + +**TCP连接源地址** + +image-20220211151142472 + +​ 一般而言在AS内部,网络具备一定的冗余性。在R1与R3之间,如果采用直连接口建IBGP邻居关系,那么一旦接口或者直连链路发生故障,BGP会话也就断了,但是事实上,由于冗余链路的存在,R1与R3之间的IP连通性其实并没有DOWN(仍然可以通过R4到达彼此) + +​ 缺省情况下,BGP使用报文出接口作为TCP连接的本地接口 + +​ 在部署IBGP对等体关系时,建议使用Loopback地址作为更新源地址。Loopback接口非常稳定,而且可以借助AS内的IGP和冗余拓扑来保证可靠性 + +​ 在部署EBGP对等体关系时,通常使用直连接口的IP地址作为源地址,如若使用Loopback接口建立EBGP对等体关系,则应注意EBGP多跳问题 + +**BGP报文类型** + +image-20220211151257115 + +​ BGP存在5种类型的报文,不同类型的报文拥有相同的头部(header) + +​ 不同于常见的IGP协议,BGP使用TCP作为传输层协议,端口号179,这使得BGP支持在非直连的路由器之间建立对等体关系 + +| **报文名称** | **作用** | **发送时刻** | +| ------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| Open | 协商BGP对等体参数,建立对等体关系 | BGP TCP连接建立成功之后 | +| Update | 发送BGP路由更新 | BGP对等体关系建立之后有路由需要发送或路由变化时向对等体发送Update报文 | +| Notification | 报告错误信息,中止对等体关系 | 当BGP在运行中发现错误时,发送Notification报文将错误通告给BGP对等体 | +| Keepalive | 标志对等体建立,维持BGP对等体关系 | BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接 | +| Route-refresh | 用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文 | 当路由策略发生变化时,触发请求对等体重新通告路由 | + +**BGP报文格式 - 报文头格式** + +image-20220211151344723 + +BGP五种报文都拥有相同的报文头,格式如左侧所示,主要字段解释如下: + +​ Marker:16Byte,用于标明BGP报文边界,所有bit均为“1” + +​ Length:2Byte,BGP报文总长度(包括报文头在内),以Byte为单位 + +​ Type:1Byte,BGP报文的类型。其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh 报文 + +**BGP报文格式 - Open** + +image-20220211151445276 + +Open报文是TCP连接建立之后发送的第一个报文,用于建立BGP对等体之间的连接关系,主要字段解释如下: + +​ Version:BGP的版本号。对于BGP 4来说,其值为4 + +​ My AS(autonomous system):本地AS号。通过比较两端的AS号可以判断对端是否和本端处于相同AS + +​ Hold Time:保持时间。在建立对等体关系时两端要协商Hold Time,并保持一致。如果在这个时间内未收到对端发来的Keepalive报文或Update报文,则认为BGP连接中断 + +​ BGP Identifier:BGP标识符,以IP地址的形式表示,用来识别BGP路由器 + +**BGP报文格式 - Update** + +image-20220211151544930 + +​ Update报文用于在对等体之间传递路由信息,可以用于发布、撤销路由 + +​ 一个Update报文可以通告具有相同路径属性的多条路由,这些路由保存在NLRI(网络层可达信息)中。同时Update还可以携带多条不可达路由,用于告知对方撤销路由,这些保存在Withdrawn Routes字段中 + +主要字段解释如下: + +​ Withdrawn routes:不可达路由的列表 + +​ Path attributes:与NLRI相关的所有路径属性列表,每个路径属性由一个TLV(Type-Length-Value)三元组构成 + +​ NLRI:可达路由的前缀和前缀长度二元组 + +**BGP报文格式 - Notification** + +image-20220211151735003 + +​ 当BGP检测到错误状态时(对等体关系建立时、建立之后都可能发生),就会向对等体发送Notification,告知对端错误原因。之后BGP连接将会立即中断 + +​ Error Code、Error subcode:差错码、差错子码,用于告知对端具体的错误类型 + +​ Data:用于辅助描述详细的错误内容,长度并不固定 + +**BGP报文格式 - Keepalive** + +image-20220211151810415 + +​ BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接 + +​ Keepalive报文格式中只包含报文头,没有附加其他任何字段 + +**BGP报文格式 - Route-refresh** + +image-20220211151958751 + +​ Route-refresh报文用来要求对等体重新发送指定地址族的路由信息,一般为本端修改了相关路由策略之后让对方重新发送Update报文,本端执行新的路由策略重新计算BGP路由 + +​ AFI:Address Family Identifier,地址族标识,如IPv4 + +​ Res.:保留,8个bit必须置0 + +​ SAFI:Subsequent Address Family Identifier,子地址族标识 + +**BGP状态机** + +| **Peer状态名称** | **用途** | +| ---------------- | ------------------------------------------------------------ | +| Idle | 开始准备TCP的连接并监视远程对等体,启用BGP时,要准备足够的资源 | +| Connect | 正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接建立失败则进入Active状态,反复尝试连接 | +| Active | TCP连接没建立成功,反复尝试TCP连接 | +| OpenSent | TCP连接已经建立成功,开始发送Open包,Open包携带参数协商对等体的建立 | +| OpenConfirm | 参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包 | +| Established | 已经收到对方的Keepalive包,双方能力特性经协商发现一致,开始使用Update通告路由信息 | + +image-20220211152137691 + +1.Idle状态是BGP初始状态。在Idle状态下,BGP拒绝对等体发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态 + +​ Start事件是由一个操作者配置一个BGP过程,或者重置一个已经存在的过程或者路由器软件重置BGP过程引起的 + +​ 任何状态中收到Notification报文或TCP拆链通知等Error事件后,BGP都会转至Idle状态 + +2.在Connect状态下,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接 + +​ 如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态 + +​ 如果TCP连接失败,那么BGP转至Active状态 + +​ 如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态 + +3.在Active状态下,BGP总是在试图建立TCP连接 + +​ 如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态 + +​ 如果TCP连接失败,那么BGP停留在Active状态 + +​ 如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态 + +4.在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查 + +​ 如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态 + +​ 如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态 + +5.在OpenConfirm状态下,BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态 + +6.在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文 + +​ 如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接 + +​ 如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态 + +​ Route-refresh报文不会改变BGP状态 + +​ 如果收到Notification报文,那么BGP转至Idle状态 + +​ 如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态 + +**BGP状态机详解** + +![image-20220211152605702](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220211152605702.png) + +![image-20220211152617184](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220211152617184.png) + +**BGP对等体表** + +```shell +display bgp peer + BGP local router ID : 10.0.1.1 + Local AS number : 100 + Total number of peers : 1 Peers in established state : 1 + + Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv + +10.0.12.2 4 100 25719 25714 0 0428h32m Established 1 +``` + +在设备上通过display bgp peer命令查看BGP对等体表,其中主要参数含义: + +​ Peer:对等体地址 + +​ V:version,版本号 + +​ AS:对等体AS号 + +​ Up/Down:该对等体已经存在up或者down的时间 + +​ State:对等体状态,这里显示的为BGP状态机的状态 + +​ PrefRcv:prefix received,从该对等体收到的路由前缀数目 + +**BGP路由表** + +```shell +display bgp routing-table + BGP Local router ID is 10.0.1.1 + Status codes: * - valid, > - best, d - damped, + h - history, i - internal, s - suppressed, S - Stale + Origin : i - IGP, e - EGP, ? - incomplete + Total Number of Routes: 2 + Network NextHop MED LocPrf PrefVal Path/Ogn +*>i 10.0.45.0/24 10.0.4.4 0 100 0 ? +* i 10.0.4.4 0 100 0 ? +``` + +在设备上通过display bgp routing-table查看BGP路由表: + +​ Network:路由的目的网络地址以及网络掩码 + +​ NextHop:下一跳地址 + +如果想要查看某条路由更加详细的信息,可以通过查看,该命令会将匹配的BGP路由信息详细展示 + +```shell +display bgp routing-table ipv4-address { mask | mask-length} +``` + +```shell +display bgp routing-table 10.0.45.0 24 + BGP local router ID : 10.0.1.1 + Local AS number : 100 + Paths: 2 available, 1 best, 1 select + BGP routing table entry information of 10.0.45.0/24: + From: 10.0.2.2 (10.0.2.2) #标明路由来源 + Route Duration: 06h19m44s + Relay IP Nexthop: 10.0.12.2 + Relay IP Out-Interface: GigabitEthernet0/0/0 + Original nexthop: 10.0.4.4 #路由下一跳地址 + Qos information : 0x0 + AS-path Nil, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 2 #路径属性、是否被优选 + Originator: 10.0.4.4 + Cluster list: 10.0.2.2 + Not advertised to any peer yet +``` + +**BGP路由的生成** + +image-20220211153357320 + +​ 不同于IGP路由协议,BGP自身并不会发现并计算产生路由,BGP将IGP路由表中的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体 + +**BGP注入路由的方式有两种:** + +​ Network + +​ import-route + +**Network注入路由** + +image-20220211153111518 + +image-20220211153732346 + +​ AS200内的BGP路由器已经通过IGP协议OSPF学习到了两条路由:10.1.0.0/24和10.2.0.0/24,在BGP进程内通过network命令注入这两条路由,这两条路由将会出现在本地的BGP路由表中 + +​ AS200内的BGP路由器通过Update报文将路由传递给AS300内的BGP路由器 + +​ AS300内的BGP路由器收到路由后,将这两条路由加入到本地的BGP路由表中 + +注意: + +​ Network方式注入的路由必须是已经存在于IP路由表中的路由条目,否则不会被成功注入到BGP路由表中 + +**import-route方式注入路由** + +image-20220211153810479 + +​ Network方式注入路由虽然是精确注入,但是只能一条条配置逐条注入IP路由表中的路由,如果注入的路由条目很多配置命令将会非常复杂,为此可以使用import-route方式 + +​ 直连路由 + +​ 静态路由 + +​ OSPF路由 + +​ IS-IS路由等协议的路由注入到BGP路由表中 + +**BGP聚合路由** + +​ 与众多IGP协议相同,BGP同样支持路由的手工聚合,在BGP配置视图中使用aggregate命令可以执行BGP路由手工聚合,在BGP已经学习到相应的明细路由情况下,设备会向BGP注入指定的聚合路由 + +![image-20220211153918170](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220211153918170.png) + +​ 执行聚合之后,在本地的BGP路由表中除了原本的明细路由条目之外,还会多出一条聚合的路由条目 + +​ 如果在执行聚合时指定了detail-suppressed,则BGP只会向对等体通告聚合后的路由,而不通告聚合前的明细路由 + +​ 在聚合时配置抑制明细路由的参数,R3上查看路由表,只能看到BGP路由:10.1.0.0/22,无法看到聚合前的明细路由 + +**通告原则** + +​ BGP通过network、import-route、aggregate聚合方式生成BGP路由后,通过Update报文将BGP路由传递给对等体 + +BGP通告遵循以下原则: + +​ 只发布最优路由 + +​ 从EBGP对等体获取的路由,会发布给所有对等体 + +​ IBGP水平分割:从IBGP对等体获取的路由,不会发送给IBGP对等体 + +**BGP路由通告原则一** + +image-20220211154204358 + +​ 第一条原则:只发布最优且有效(即下一跳地址可达)路由 + +​ 通过display bgp routing-table命令可以查看BGP路由表 + +``` +Total Number of Routes: 2 + Network NextHop MED LocPrf PrefVal Path/Ogn + *>i 10.1.0.0/24 11.1.0.1 0 100 0 ? + *i 11.1.0.2 0 100 0 ? +``` + +​ 在BGP路由表中同时存在以下两个标志的路由为最优、有效 + +​ * : 代表有效 + +​ > : 代表最优 + +**BGP路由通告原则二** + +image-20220211154307855 + +​ 第二条原则:从EBGP对等体获取的路由,会发布给所有对等体。R2从EBGP对等体获取的BGP路由,会发布给所有EBGP、IBGP对等体。 + +**BGP路由通告原则三** + +image-20220211154349426 + +​ 第三条原则:从IBGP对等体获取的BGP路由,不会再发送给其他IBGP对等体 + +​ 该条原则也被称为“IBGP水平分割” + +​ 如果IBGP对等体学习到的路由会继续传递给其他的IBGP对等体:R2将一条路由传递给了IBGP对等体R3、R3收到路由之后传递给IBGP对等体R1、R1继续传递给IBGP对等体R2路由环路形成 + +image-20220211154454686 + +​ 第三条原则可能会带来新的问题,如左侧所示,当BGP路由器R2将路由传递给BGP路由器R1时,由于第三条原则限制,R1无法将BGP路由传递给R3,R3将无法学习到路由 + +​ 为解决该问题可以采用AS内IBGP全互联的方式,即:R2、R3之间建立非直连的IBGP对等体关系,以此让BGP路由器R2将路由传递给BGP路由器 R3 + +**BGP路由通告原则四** + +image-20220211154528589 + +​ 第四条原则:当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,该条规则也被称为BGP同步原则 + +​ BGP路由器R4上存在一条路由10.0.4.0/24,R4将其传递给了R2 + +​ R2将路由传递给非直连IBGP对等体R3 + +​ R3将路由传递给R5 + +​ 之后R5向10.0.4.4发起访问 + +image-20220211160636858 + +R5访问10.0.4.4: + +​ R5查找路由表,将报文发送给R3 + +​ R3收到报文后查找路由表,匹配到一条BGP路由,其下一跳为R2,但是R2为非直连下一跳,需要进行路由迭代,通过IGP学习到的路由迭代出下一跳为R1。R3将报文发送给R1 + +​ R1收到报文后查找路由表,因为R1并非BGP路由器,未与R2建立IBGP对等体关系,因此R1上并无BGP路由10.0.4.0/24,路由查找失败,R1将报文丢弃 + +
3.BGP的基本配置
+ +![image-20220211163108702](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220211163108702.png) + +
4.配置案例
+ +image-20220213132301393 + +​ BGP对等体关系、AS号、设备互联地址如图所示 + +​ 所有设备的Loopback1接口地址为10.0.x.x/32,其中x为设备编号,所有设备都使用Loopback1地址作为Router ID + +​ R1、R2、R3之间建立OSPF,并使R1和R3的loopback建立TCP连接 + +​ R1、R3之间使用Loopback1地址作为更新源地址建立IBGP对等体关系,R3、R4之间使用互联接口地址作为更新源地址建立EBGP对等体关系 + +**R1的配置如下:** + +```shell +[R1] bgp 100 +[R1-bgp] router-id 10.0.1.1 +[R1-bgp] peer 10.0.3.3 as-number 100 +[R1-bgp] peer 10.0.3.3 connect-interface LoopBack1 +``` + +**R3的配置如下:** + +```shell +[R3] bgp 100 +[R3-bgp] router-id 10.0.3.3 +[R3-bgp] peer 10.0.1.1 as-number 100 +[R3-bgp] peer 10.0.1.1 connect-interface LoopBack1 +[R3-bgp] peer 10.0.34.4 as-number 200 +``` + +**R4的配置如下:** + +```shell +[R4] bgp 200 +[R4-bgp] router-id 10.0.4.4 +[R4-bgp] peer 10.0.34.3 as-number 100 +``` + +**在R3上查看BGP对等体状态:** + +```shell + display bgp peer + BGP Local router ID : 10.0.3.3 + local AS number : 100 + Total number of peers : 2 + Peers in established state : 2 + + Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv + + 10.0.1.1 4 100 0 0 0 00:00:07 Established 0 + 10.0.34.4 4 200 32 35 0 00:17:49 Established 0 +``` + +

第二节:BGP路径属性与路由反射器

+ +

一:BGP路径属性

+ +image-20220213134050784 + +​ 任何一条BGP路由都拥有多个路径属性 + +​ 当路由器将BGP路由通告给它的对等体时,一并被通告的还有路由所携带的各个路径属性 + +​ BGP的路径属性将影响路由优选 + +
1.路径属性分类
+ +image-20220213134145268 + +公认属性是所有BGP路由器都必须能够识别的属性,公认属性可以分为两类: + +​ 公认必遵(Well-known Mandatory):必须包括在每个Update消息里 + +​ 公认任意(Well-known Discretionary):可能包括在某些Update消息里 + +可选属性不需要都被BGP路由器所识别,可选属性可以分为两类: + +​ 可选过渡(Optional Transitive):BGP设备不识别此类属性依然会接受该类属性并通告给其他对等体 + +​ 可选非过渡(Optional Non-transitive):BGP设备不识别此类属性会忽略该属性,且不会通告给其他对等体 + +**BGP Update报文举例** + +image-20220213134331807 + +image-20220213134425890 + +​ 该属性为公认必遵属性,是前往目标网络的路由经过的AS号列表 + +​ 作用:确保路由在EBGP对等体之间传递无环;另外也作为路由优选的衡量标准之一 + +​ 路由在被通告给EBGP对等体时,路由器会在该路由的AS_Path中追加上本地的AS号;路由被通告给IBGP对等体时,AS_Path不会发生改变 + +**AS_Path防止环路** + +image-20220213134537954 + +​ R1从R4收到的BGP路由更新中AS_Path属性数值为:400 300 200 100,存在自身AS号,不接收该路由,从而防止了路由环路的产生 + +**AS_Path影响路由优选** + +image-20220213134625579 + +​ AS_Path的重要作用之一便是影响BGP路由的优选,在上图中,R5同时从R2及R4学习到去往10.0.1.0/24网段的BGP路由,在其他条件相同的情况下,R5会优选R2通告的路由,因为该条路由的AS_Path属性值较短,也即AS号的个数更少 + +**AS_Path类型** + +image-20220213134920074 + +​ 路由聚合解决了两类问题,一是减轻了设备的负担,二是隐藏了明细的路由信息,减少了路由震荡的影响。但是路由聚合后,AS_Path属性丢失,存在产生环路的风险,为此可以通过AS_SET类型的AS_Path属性携带聚合前的AS路径信息 + +​ 当发生路由聚合后,如果需要聚合路由携带所有明细路由中AS_Path属性携带的AS号防止环路,则在配置聚合的命令中增加as-set参数 + +​ 在AS_SET的示例中AS 300内发生了路由聚合并配置了as-set参数,则聚合路由会将明细路由的AS_Path信息用一个AS-Set集表示(放在中括号{}里的AS号信息,该集合内的AS号没有先后顺序),在聚合路由中携带用以防止环路 + +​ 除了AS_SET、AS_AS_SEQENCE之外,AS_Path还存在另外两种类型:AS_Confed_Sequence、AS_Confed_Set,这两种类型应用于BGP联邦中 + +**修改AS_Path** + +​ 使用Route-Policy修改BGP路由的AS_Path属性时,可以使用以下三种方式: + +image-20220213135117825 + +
2.Origin
+ +| **起源名称** | **标记** | **描述** | +| ------------ | -------- | ------------------------------------------------------------ | +| IGP | i | 如果路由是由始发的BGP路由器使用network命令注入到BGP的,那么该BGP路由的Origin属性为IGP | +| EGP | e | 如果路由是通过EGP学习到的,那么该BGP路由的Origin属性为EGP | +| Incomplete | ? | 如果路由是通过其他方式学习到的,则Origin属性为Incomplete(不完整的)。例如通过import-route命令引入到BGP的路由 | + +​ 该属性为公认必遵属性,它标识了BGP路由的起源。如上表所示,根据路由被引入BGP的方式不同,存在三种类型的Origin + +​ 当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下,BGP将按如Origin的下顺序优选路由:IGP > EGP > Incomplete + +**Origin在BGP表中的显示** + +```shell +[R2] display bgp routing-table +BGP Local router ID is 10.0.2.2 + Status codes: * - valid, > - best, d - damped, + h - history, i - internal, s - suppressed, S - Stale + Origin : i - IGP, e - EGP, ? - incomplete + + + Total Number of Routes: 4 + Network NextHop MED LocPrf PrefVal Path/Ogn + + *>i 10.0.1.0/24 10.0.12.1 0 200 0 i + * i 10.0.23.3 0 100 0 i +``` + +
3.Next_Hop
+ +​ 该属性是一个公认必遵属性,用于指定到达目标网络的下一跳地址 + +​ 当路由器学习到BGP路由后,需对BGP路由的Next_Hop属性值进行检查,该属性值(IP地址)必须在本地路由可达,如果不可达,则这条BGP路由不可用 + +在不同的场景中,设备对BGP路由的缺省Next_Hop属性值的设置规则如下: + +​ BGP路由器在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址 + +​ BGP路由器将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址 + +​ 路由器在收到EBGP对等体所通告的BGP路由后,在将路由传递给自己的IBGP对等体时,会保持路由的Next_Hop属性值不变 + +​ 如果路由器收到某条BGP路由,该路由的Next_Hop属性值与EBGP对等体(更新对象)同属一个网段,那么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体 + +**Next_Hop的缺省操作** + +image-20220213135740114 + +​ 路由器将BGP路由通告给自己的EBGP对等体时,将该路由的Next_Hop设置为自己的TCP连接源地址 + +image-20220213135834341 + +​ 路由器在收到EBGP对等体所通告的BGP路由后,在将路由传递给自己的IBGP对等体时,会保持路由的Next_Hop属性值不变 + +image-20220213135850400 + +​ 如果路由器收到某条BGP路由,该路由的Next_Hop属性值与EBGP对等体(更新对象)同属一个网段,那么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体 + +**修改Next_hop属性** + +image-20220213140152334 + +​ 使用peer next-hop-local命令可以在设置向IBGP对等体(组)通告路由时,把下一跳属性设为自身的TCP连接源地址 + +​ 缺省情况下,R2通告给R3的BGP路由10.0.1.0/24的NextHop属性值为10.0.12.1,若R2未将到达10.0.12.0/24的路由发布到AS200的IGP协议中,那么R3将无法获知到达10.0.12.1的路由,此时BGP路由10.0.1.0/24的NextHop不可达,该路由将被视为无效 + +
4.Local_Preference
+ +image-20220213140245592 + +​ 在R1及R3上分别对R2部署路由策略,使得R1发送给R2的10.0.45.0/24路由的Local_Preference为200,而R3则保持缺省,那么对于R2而言,会优选R1传递过来的10.0.45.0/24路由 + +​ Local_Preference即本地优先级属性,是公认任意属性,可以用于告诉AS中的路由器,哪条路径是离开本AS的首选路径 + +​ Local_Preference属性值越大则BGP路由越优。缺省的Local_Preference值为100 + +​ 该属性只能被传递给IBGP对等体,而不能传递给EBGP对等体 + +**在BGP路由表中查看Local_Preference** + +```shell +[R2] display bgp routing-table +BGP Local router ID is 10.0.2.2 + Status codes: * - valid, > - best, d - damped, + h - history, i - internal, s - suppressed, S - Stale + Origin : i - IGP, e - EGP, ? - incomplete + + + Total Number of Routes: 4 + Network NextHop MED LocPrf PrefVal Path/Ogn + + *>i 10.0.45.0/24 10.0.12.1 0 200 0 i + * i 10.0.23.3 0 100 0 i +``` + +​ Local_Preference为200的BGP路由优于Local_Preference为100的BGP路由,在BGP路由表中来自10.0.12.1的BGP路由为最优 + +**Local_Preference注意事项** + +​ Local_Preference属性只能在IBGP对等体间传递(除非做了策略否则Local_Preference值在IBGP对等体间传递过程中不会丢失),而不能在EBGP对等体间传递,如果在EBGP对等体间收到的路由的路径属性中携带了Local_Preference,则会进行错误处理 + +​ 但是可以在AS边界路由器上使用Import方向的策略来修改Local_Preference属性值。也就是在收到路由之后,在本地为路由赋予Local_Preference + +​ 使用bgp default local-preference命令修改缺省Local_Preference值,该值缺省为100 + +​ 路由器在向其EBGP对等体发送路由更新时,不能携带Local_Preference属性,但是对方接收路由之后,会在本地为这条路由赋一个缺省Local_Preference值(100),然后再将路由传递给自己的IBGP对等体 + +​ 本地使用network命令及import-route命令引入的路由, Local_Preference为缺省值100,并能在AS内向其他IBGP对等体传递,传递过程中除非受路由策略影响,否则Local_Preference不变 + +
5.Community
+ +**Community技术背景** + +image-20220213141342499 + +​ AS100内有大量的路由被引入BGP,这些路由分别用于生产及办公网络。现在AS200的BGP路由器需要分别针对这些路由执行不同的策略,如果使用ACL、IP Prefix-list这样的工具,效率就非常低下了 + +image-20220213141427003 + +​ 有了Community属性,我们可以为不同种类的路由打上不同的Community属性值,这些属性值会随着BGP路由更新给AS200,那么在AS200内的BGP路由器上,只需要根据Community属性值来执行差异化的策略即可,而不用去关心具体的路由前缀 + +**Community属性** + +image-20220213141545848 + +​ Community(团体)属性为可选过渡属性,是一种路由标记,用于简化路由策略的执行 + +​ 可以将某些路由分配一个特定的Community属性值,之后就可以基于Community值而不是网络前缀/掩码信息来匹配路由并执行相应的策略了 + +**Community属性格式** + +image-20220213141614306 + +Community属性值长度为32bit,也就是4Byte。可使用两种形式呈现: + +​ 十进制整数格式 + +​ AA:NN格式,其中AA表示AS号,NN是自定义的编号 + +**公认Community属性** + +| **团体属性名称** | **团体属性号** | **说明** | +| ------------------- | ------------------------ | ------------------------------------------------------------ | +| Internet | 0(0x00000000) | 设备在收到具有此属性的路由后,可以向任何BGP对等体发送该路由。缺省情况下,所有的路由都属于Internet团体 | +| No_Advertise | 4294967042(0xFFFFFF02) | 设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由 | +| No_Export | 4294967041(0xFFFFFF01) | 设备收到具有此属性的路由后,将不向AS外发送该路由 | +| No_Export_Subconfed | 4294967043(0xFFFFFF03) | 设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内其他子AS发布此路由 | + +
6.MED
+ +image-20220213141734160 + +​ 在R2、R3上部署路由策略,使得R2通告给R4的BGP路由MED值为10,而R3通告的路由MED值为20。当其他条件相同时,R4将优选R2传递过来的BGP路由 + +​ MED(Multi-Exit Discriminator,多出口鉴别器)是可选非过渡属性,是一种度量值,用于向外部对等体指出进入本AS的首选路径,即当进入本AS的入口有多个时,AS可以使用MED动态地影响其他AS选择进入的路径 + +​ MED属性值越小则BGP路由越优 + +​ MED主要用于在AS之间影响BGP的选路。MED被传递给EBGP对等体后,对等体在其AS内传递路由时,携带该MED值,但将路由再次传递给其EBGP对等体时,缺省不会携带MED属性 + +**关于MED的一些注意事项** + +​ 缺省情况下,路由器只比较来自同一相邻AS的BGP路由的MED值,也就是说如果去往同一个目的地的两条路由来自不同的相邻AS,则不进行MED值的比较 + +一台BGP路由器将路由通告给EBGP对等体时,是否携带MED属性,需要根据以下条件进行判断: + +​ 如果该BGP路由是本地始发(本地通过network或import-route命令引入)的,则缺省携带MED属性发送给EBGP对等体 + +​ 如果该BGP路由为从BGP对等体学习到,那么该路由传递给EBGP对等体时缺省不会携带MED属性 + +​ 在IBGP对等体之间传递路由时,MED值会被保留并传递,除非部署了策略,否则MED值在传递过程中不发生改变也不会丢失 + +**MED的默认操作** + +image-20220213141855655 + +​ 如果路由器通过IGP学习到一条路由,并通过network或import-route的方式将路由引入BGP,产生的BGP路由的MED值继承路由在IGP中的metric。例如上图中如果R2通过OSPF学习到了10.0.1.0/24路由,并且该路由在R2的全局路由表中OSPF Cost=100,那么当R2将路由network进BGP后,产生的BGP路由的MED值为100 + +​ 如果路由器将本地直连、静态路由通过network或import-route的方式引入BGP,那么这条BGP路由的MED为0,因为直连、静态路由cost为0 + +image-20220213141917565 + +​ 如果路由器通过BGP学习到其他对等体传递过来的路由,那么将路由更新给自己的EBGP对等体时,默认是不携带MED的。这就是所谓的:“MED不会跨AS传递”。例如在上图中,如果R3从R2学习到一条携带了MED属性的BGP路由,则它将该路由通告给R4时,缺省是不会携带MED属性的 + +​ 可以使用default med命令修改缺省的MED值,default med命令只对本设备上用import-route命令引入的路由和BGP的聚合路由生效。例如在R2上配置default med 999,那么R2通过import-route及aggregate命令产生的路由传递给R3时,路由携带的MED为999 + +
7.Atomic_Aggregate及Aggregator
+ +image-20220213142001062 + +​ Atomic_Aggregate属于公认任意属性,而Aggregator属性属于可选过渡属性 + +​ R3上通过aggregate命令将BGP路由10.0.1.0/24、10.0.2.0/24、10.0.3.0/24、10.0.4.0/24聚合成了10.0.0.0/16,并使用detail-suppressed抑制了明细路由的对外发布,R3只会将聚合后的BGP路由传递给R4,而不传递聚合前的明细路由 + +​ Atomic_Aggregate是一个公认自由决定属性,它只相当于一种预警标记,而并不承载任何信息。当路由器收到一条BGP路由更新且发现该条路由携带Atomic_Aggregate属性时,它便知道该条路由可能出现了路径属性的丢失,此时该路由器把这条路由再通告给其他对等体时,需保留路由的Atomic_Aggregate属性。另外,收到该路由更新的路由器不能将这条路由再度明细化 + +​ 另一个重要的属性是Aggregator,这是一个可选传递属性,当路由聚合被执行时,执行路由聚合操作的路由器可以为该聚合路由添加Aggregator属性,并在该属性中记录本地AS号及自己的Router-ID,因此Aggregator属性用于标记路由聚合行为发生在哪个AS及哪台BGP路由器上 + +**查看聚合之后的路由** + +```shell +[R4]display bgp routing-table 10.0.0.0 16 +BGP local router ID : 10.0.4.4 + Local AS number : 400 + Paths: 1 available, 1 best, 1 select + BGP routing table entry information of 10.0.0.0/16: + From: 10.0.34.3 (10.0.3.3) + Route Duration: 00h00m21s + Direct Out-interface: GigabitEthernet0/0/0 + Original nexthop: 10.0.34.3 + Qos information : 0x0 + AS-path 300, origin igp, pref-val 0, valid, external, best, select, active, pre 255 + Aggregator: AS 300, Aggregator ID 10.0.3.3, Atomic-aggregate + Not advertised to any peer yet +``` + +​ 在BGP路由详细信息中可与看到Aggregator属性记录了聚合设备的AS号、Router ID,同时通过Atomic-Aggregate属性标明该路由为聚合路由 + +
8.Preferred-Value介绍
+ +image-20220213142127556 + +​ 在R2上部署路由策略(Import策略),将R1传递过来的10.0.13.0/24路由的Preferred-Value值设定为300,而R3传递过来的路由的Preferred-Value值设置为200。如此一来关于10.0.13.0/24,R2会优选R1传递过来的路由 + +​ Preferred-Value(协议首选值)是华为设备的特有属性,该属性仅在本地有效。当BGP路由表中存在到相同目的地的路由时,将优先选择Preferred-Value值高的路由 + +​ 取值范围:0~65535;该值越大,则路由越优先 + +​ Preferred-Value只能在路由器本地配置,而且只影响本设备的路由优选。该属性不会传递给任何BGP对等体 + +**在BGP路由表中查看Preferred-Value** + +```shell +[R2] display bgp routing-table +BGP Local router ID is 10.0.2.2 + Status codes: * - valid, > - best, d - damped, + h - history, i - internal, s - suppressed, S - Stale + Origin : i - IGP, e - EGP, ? - incomplete + + Total Number of Routes: 4 + Network NextHop MED LocPrf PrefVal Path/Ogn + *> 10.0.13.0/24 10.0.12.1 0 300 100 i + * 10.0.23.3 0 200 100 i +``` + +​ Preferred-Value为300的BGP路由优于Preferred-Value为0的路由,在BGP路由表中来自10.0.12.1的BGP路由为最优 + +​ Preferred-value在路由表中简写为PrefVal + +

二:BGP路由反射器

+ +
1.中转AS中的IBGP问题
+ +image-20220213142428093 + +​ 由于水平分割的原因,为了保证中转AS200所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联。然而实现IBGP全互联存在诸多短板: + +​ 路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时 + +​ AS内BGP网络的可扩展性较差 + +​ 为此可以采用路由反射器技术 + +
2.路由反射器角色
+ +image-20220213142531294 + +引入路由反射器之后存在两种角色: + +​ RR(Route Reflector):路由反射器 + +​ Client:RR客户端 + +RR会将学习的路由反射出去,从而使得IBGP路由在AS内传播无需建立IBGP全互联 + +将一台BGP路由器指定为RR的同时,还需要指定其Client。至于Client本身,无需做任何配置,它并不知晓网络中存在RR + +
3.路由反射规则
+ +**RR在接收BGP路由时:** + +​ 如果路由反射器从自己的非客户对等体学习到一条IBGP路由,则它会将该路由反射给所有客户 + +​ 如果路由反射器从自己的客户学习到一条IBGP路由,则它会将该路由反射给所有非客户,以及除了该客户之外的其他所有客户 + +​ 如果路由学习自EBGP对等体,则发送给所有客户、非客户IBGP对等体 + +image-20220213142705169 + +​ 如果路由反射器从自己的非客户对等体学习到一条IBGP路由,则它会将该路由反射给所有客户 + +image-20220213142721076 + +​ 如果路由反射器从自己的客户学习到一条IBGP路由,则它会将该路由反射给所有非客户,以及除了该客户之外的其他所有客户 + +image-20220213142739927 + +​ 如果路由学习自EBGP对等体,则发送给所有客户、非客户IBGP对等体 + +**注意:** + +​ RR将路由反射时不会修改以下的BGP路径属性:Next_Hop、AS_Path、 Local_Preference、MED,如果反射器修改这几个路径属性的值则有可能产生路由环路 + +
4.RR场景下的路由防环
+ +image-20220213142834508 + +​ RR的设定使得IBGP水平分割原则失效,这就可能导致环路的产生,为此RR会为BGP路由添加两个特殊的路径属性来避免出现环路:Originator_ID、Cluster_List + +​ Originator_ID、Cluster_List属性都属于可选过渡类型 + +​ **Originator ID** + +image-20220213142922701 + +​ R3收到来自R2的BGP路由10.0.2.0/24,在反射给R1时会添加上Originator_ID:10.0.2.2,R1收到之后再次反射给其客户端R2时携带Originator_ID属性,R2收到之后查看Originator_ID属性值存在自身的Router ID,忽略该路由更新 + +​ RR将一条BGP路由进行反射时会在反射出去的路由中增加Originator_ID,其值为本地AS中通告该路由的BGP路由器Router ID + +​ 若AS内存在多个RR,则Originator_ID属性由第一个RR创建,并且不被后续的RR(若有)所更改 + +​ 当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它会忽略关于该条路由的更新 + +**路由反射簇 (Cluster)** + +​ 路由反射簇包括反射器RR及其Client。一个AS内允许存在多个路由反射簇 + +​ 每一个簇都有唯一的簇ID(Cluster_ID,缺省时为RR的BGP Router ID ) + +​ 当一条路由被反射器反射后,该RR(该簇)的Cluster_ID就会被添加至路由的Cluster_list属性中 + +​ 当RR收到一条携带Cluster_list属性的BGP路由,且该属性值中包含该簇的Cluster_ID时,RR认为该条路由存在环路,因此将忽略关于该条路由的更新 + +image-20220213143028180 + +**Cluster_List** + +image-20220213143043437 + +​ R2发送给R1的路由,经过R1反射给R3时除了添加Originator_ID之外还会添加Cluster_List:10.0.1.1。R3再次反射给R4时, Cluster_List值为:10.0.3.3 10.0.1.1,R4再次反射给R1时Cluster_List值为:10.0.4.4 10.0.3.3 10.0.1.1 + +​ 当R4将路由反射给R1时,R1发现Cluster_List包含了自身Cluster_ID,判断存在环路,从而忽略该路由更新 + +
5.RR应用举例
+ +image-20220213143135049 + +​ R1向BGP发布了10.0.1.0/24路由,R2会从R1学习到该路由并且将其通告给R3,但是R3从R2学习到的这条IBGP路由由于水平分割规则的存在故而不能够再被通告给R4及R5,为此可以将R3设置为RR,R4、R5作为其客户端,这样R4、R5即可正常学习到BGP路由10.0.1.0/24 + +**配置** + +![image-20220213143200131](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220213143200131.png) + +
6.配置案例
+ +image-20220213143243308 + +​ 所有设备Loopback0地址为10.0.x.x/32,其中x为设备编号,所有设备都使用Loopback0地址作为BGP Router ID + +​ R1、R2、R3属于AS100,AS100内运行OSPF,将所有直连接口宣告进OSPF + +​ AS100内使用环回口作为发送IBGP报文的源接口,R2作为路由反射器,R3为其客户端 + +​ R4属于AS200,与R3使用互联接口地址建立EBGP对等体,R4将10.4.4.0/24宣告进BGP + +**R1的配置如下:** + +```shell +[R1] bgp 100 +[R1-bgp] router-id 10.0.1.1 +[R1-bgp] peer 10.0.2.2 as-number 100 +[R1-bgp] peer 10.0.2.2 connect-interface LoopBack0 +``` + +**R2的配置如下:** + +```shell +[R2] bgp 100 +[R2-bgp] router-id 10.0.2.2 +[R2-bgp] peer 10.0.1.1 as-number 100 +[R2-bgp] peer 10.0.1.1 connect-interface LoopBack0 +[R2-bgp] peer 10.0.3.3 as-number 100 +[R2-bgp] peer 10.0.3.3 connect-interface LoopBack0 +[R2-bgp] peer 10.0.3.3 reflect-client +``` + +**R3的配置如下:** + +```shell +[R3] bgp 100 +[R3-bgp] router-id 10.0.3.3 +[R3-bgp] peer 10.0.2.2 as-number 100 +[R3-bgp] peer 10.0.2.2 connect-interface LoopBack0 +[R3-bgp] peer 10.0.34.4 as-number 200 +``` + +**R4的配置如下:** + +```shell +[R4] bgp 200 +[R4-bgp] router-id 10.0.4.4 +[R4-bgp] peer 10.0.34.3 as-number 100 +[R4-bgp] network 10.4.4.0 24 +``` + +**分别在R3、R1查看BGP路由10.4.4.0/24** + +```shell +[R3-bgp]display bgp routing-table 10.4.4.0 24 + BGP local router ID : 10.0.3.3 + Local AS number : 100 + Paths: 1 available, 1 best, 1 select + BGP routing table entry information of 10.4.4.0/24: + From: 10.0.34.4 (10.0.4.4) + Route Duration: 00h04m36s + Direct Out-interface: GigabitEthernet0/0/1 + Original nexthop: 10.0.34.4 + Qos information : 0x0 + AS-path 200, origin igp, MED 0, pref-val 0, valid, external, best, select, active, pre 255 + Advertised to such 1 peers: + 10.0.2.2 +``` + +```shell +[R1]display bgp routing-table 10.4.4.0 24 + ………. + BGP routing table entry information of 10.4.4.0/24: + From: 10.0.2.2 (10.0.2.2) #来自R2 + Route Duration: 00h00m19s + Relay IP Nexthop: 10.0.12.2 + Relay IP Out-Interface: GigabitEthernet0/0/0 + Original nexthop: 10.0.34.4 #下一跳地址未改变 + Qos information : 0x0 + AS-path 200, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 3 + Originator: 10.0.3.3 #路由来自10.0.3.3 + Cluster list: 10.0.2.2 #Cluster_ID为R2的Router ID + Not advertised to any peer yet +``` + +

第三节:BGP路由优选

+ +

一:路由优先

+ +
1.BGP路由优选规则
+ +**当到达同一个目的网段存在多条路由时,BGP通过如下的次序进行路由优选:**丢弃下一跳不可达的路由 + +​ 优选Preferred-Value属性值最大的路由 + +​ 优选Local_Preference属性值最大的路由 + +​ 本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的 + +​ 优选AS_Path属性值最短的路由 + +​ 优选Origin属性最优的路由。Origin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete + +​ 优选MED属性值最小的路由 + +​ 优选从EBGP对等体学来的路由(EBGP路由优先级高于IBGP路由) + +​ 优选到Next_Hop的IGP度量值最小的路由 + +​ 优选Cluster_List最短的路由 + +​ 优选Router ID(Orginator_ID)最小的设备通告的路由 + +​ 优选具有最小IP地址的对等体通告的路 + +**注意:** + +​ 前两条取值越大越优,剩余的取值越小越优 + +​ 上述规则依序排列,BGP进行路由优选时,从第一条规则开始执行,如果根据第一条规则无法作出判断,例如路由的Preferred-Value属性值相同,则继续执行下一条规则,如果根据当前的规则,BGP能够决策出最优的路由,则不再继续往下执行 + +
2.拓扑说明
+ +image-20220213165945577 + +​ AS、设备互联地址如图所示,所有设备均创建Loopback0接口,IP地址为10.0.x.x(x为设备编号),所有设备使用环回口地址作为Router ID + +​ AS200内运行OSPF,在内部互联接口(不包含连接外部AS的接口)、Loopback接口上激活OSPF + +**注意:** + +​ 通过import-router命令引入到BGP路由表中的路由的ORIGIN(起点)属性为Incomplete + +​ 使用network命令发布到BGP路由表中的网段路由的ORIGIN属性为IGP + +```shell +[Huawei]ip ip-prefix 1 permit 10.0.45.0 24 +[Huawei-bgp]import-route direct route-policy 1 +``` + +**丢弃下一跳不可达的路由** + +image-20220213180106425 + +```shell + Total Number of Routes: 2 + Network NextHop MED LocPrf PrefVal Path/Ogn + + i 10.0.45.0/24 10.0.24.4 0 100 0 100? + i 10.0.35.5 0 100 0 300? +``` + +​ R4、R5将BGP路由10.0.45.0/24通告给AS200时Next_Hop属性值为10.0.24.4、10.0.34.5 + +​ R2、R3将路由通告给R1时不修改Next_Hop属性值,R1学习到的两条BGP路由10.0.45.0/24下一跳为10.0.24.4、10.0.35.5 + +​ R1进行BGP路由下一跳迭代查询时,由于R2、R3未在连接外部AS的接口上激活OSPF,导致路由迭代失败,R1上的BGP路由10.0.45.0/24下一跳不可达 + +​ 在R1上通过display bgp routing查看BGP路由表,此时BGP路由10.0.45.0/24为非有效路由条目 + +image-20220213180630621 + +​ 如无特殊说明,后续所有案例的初始配置都为基础配置加R2、R3开启了next-hop-local + +​ 在R2、R3上通过next-hop-local命令修改Next_Hop属性值为本地更新源地址 + +​ R2、R3向R1通告BGP路由时Next_Hop属性值将会变为:10.0.2.2、10.0.3.3 + +​ 这两个下一跳地址在R1上能够成功进行路由迭代,BGP路由的下一跳地址将会变成可达 + +image-20220213181019884 + +​ 两条BGP路由下一跳都可达的情况下,为什么下一跳为10.0.2.2的BGP路由为最优? + +**修改Preferred-Value** + +image-20220213181202095 + +​ 使用preferred-value命令修改R3通告的BGP路由其Preferred-Value为100 ,优于R2通告BGP路由的默认Preferred-Value ,R1将会优选R3通告的BGP路由10.0.45.0/24 + +```shell +bgp 200 +peer 10.0.3.3 preferred-value 100 +``` + +查看R1 BGP路由表: + +```shell +[R1] display bgp routing-table +BGP Local router ID is 10.0.1.1 + Status codes: * - valid, > - best, d - damped, + h - history, i - internal, s - suppressed, S - Stale + Origin : i - IGP, e - EGP, ? - incomplete + + Total Number of Routes: 4 + Network NextHop MED LocPrf PrefVal Path/Ogn + *>i 10.0.45.0/24 10.0.3.3 0 100 300 i + * i 10.0.2.2 0 0 100 i +``` + +​ R3(10.0.3.3)通告的BGP路由拥有更高的Preferred-Value(100),因此R1将会优选R3通告的BGP路由10.0.45.0/24 + +**修改Local_Preference** + +image-20220213181540309 + +R3上执行如下操作: + +```shell +ip ip-prefix local_pref index 10 permit 10.0.45.0 24 +# +route-policy local_pref permit node 10 + if-match ip-prefix local_pref + apply local-preference 200 +route-policy local_pref permit node 20 +# +bgp 200 +peer 10.0.1.1 route-policy local_pref export +``` + +​ R3上通过路由策略修改通告给R1的BGP路由10.0.45.0/24其Local_Preference属性值 + +image-20220213182323822 + +```sehll + Total Number of Routes: 2 + Network NextHop MED LocPrf PrefVal Path/Ogn + + *>i 10.0.45.0/24 10.0.3.3 0 200 0 300? + * i 10.0.2.2 0 100 0 100? +``` + +​ 下一跳可达、相同Preferred-Value的情况下将会比较Local_Preference,R3通告的BGP路由Local_Preference值为200,高于R2通告的BGP路由,R1将会优选R3通告的BGP路由 + +**本地优先** + +​ 本条规则可以概括为在相同条件下,优选本地生成的路由,从对等体学习到的路由条目为次优 + +​ 同时本地生成的路由也可能存在多种途径,当本地存在多种途径学习到相同路由时,从高到低优先级如下: + +​ 手动聚合:手动通过aggregate命令在BGP视图内聚合生成的聚合路由 + +​ 自动聚合:Summary automatic命令生成的自动聚合路由 + +​ Network方式注入的路由 + +​ Import-route方式注入的路由 + +**手动聚合** + +image-20220213182811975 + +R3上执行如下操作: + +```shell +ip route-static 10.0.45.0 255.255.255.128 null0 +ip route-static 10.0.45.128 255.255.255.128 null0 +bgp 200 + aggregate 10.0.45.0 255.255.255.0 detail-suppressed + import-route static +``` + +​ 为了在R3上进行手动聚合,在R3上配置两条指向null0的静态路由,用于注入到BGP + +​ R3上配置两条静态路由,将静态路由通过import-route注入到BGP,并通过aggregate命令进行手动聚合,同时增加关键字detail-suppressed抑制明细路由的对外通告 + +image-20220213183308268 + +R3上查看BGP路由表存在两条BGP路由10.0.45.0/24: + +​ 本地产生的:静态路由注入到BGP中,由手动聚合产生 + +​ 对等体通告:由对等体R5(10.0.35.5)通告 + +​ 在R3上这两条路由都不存在local_preference、Preferred-Value值,此时比较路由来源:手动聚合最优,R3将会优选本地手动聚合产生的BGP路由 + +​ BGP路由表中“s”标志代表该路由条目被抑制 + +```shell + Network NextHop MED LocPrf PrefVal Path/Ogn + +*> 10.0.45.0/24 127.0.0.1 0 ? +* 10.0.35.5 0 0 300? +s> 10.0.45.0/25 0.0.0.0 0 0 ? +s> 10.0.45.128/25 0.0.0.0 0 0 ? +``` + +```shell +[R3]display bgp routing-table 10.0.45.0 24 + BGP local router ID : 10.0.3.3 + Local AS number : 200 + Paths: 2 available, 1 best, 1 select + BGP routing table entry information of 10.0.45.0/24: + Aggregated route. + Route Duration: 00h00m14s + Direct Out-interface: NULL0 + Original nexthop: 127.0.0.1 + Qos information : 0x0 + AS-path Nil, origin incomplete, pref-val 0, valid, local, best, select, active, +pre 255 + Aggregator: AS 200, Aggregator ID 10.0.3.3, Atomic-aggregate + Advertised to such 2 peers: + 10.0.35.5 + 10.0.1.1 +``` + +​ R3上通过display bgp routing-table 10.0.45.0 24查看BGP路由10.0.45.0/24的详细信息,存在两条有效路由,其中最优的为手动聚合产生的路由 + +**自动聚合** + +image-20220213183709182 + +R3上执行如下操作: + +```shell +ip route-static 10.0.45.0 255.255.255.128 null0 +ip route-static 10.0.45.128 255.255.255.128 null0 + +bgp 200 +summary automatic +import-route static +``` + +​ R3上配置两条静态路由,将静态路由通过import-route注入到BGP,并开启自动聚合,BGP将按照自然网段聚合路由(例如非自然网段A类地址10.1.1.1/24和10.2.1.1/24将聚合为自然网段A类地址10.0.0.0/8),并且BGP只向对等体通告聚合后的路由 + +​ 在R3上将会看到路由被聚合为10.0.0.0/8 + +​ R5上又注入了路由10.0.0.0/8,并通告给了R3 + +image-20220213184150988 + +```shell + Network NextHop MED LocPrf PrefVal Path/Ogn + +*> 10.0.0.0 127.0.0.1 0 ? +* 10.0.35.5 0 0 300? +``` + +R3上查看BGP路由表存在两条BGP路由10.0.0.0: + +​ 本地产生:静态路由注入到BGP中,自动聚合产生 + +​ 对等体通告:由对等体R5(10.0.35.5)通告 + +​ 在R3上这两条路由都不存在local_preference、Preferred-Value值,此时比较路由来源:本地产生优于从对等体学习到的,R3将会优选本地自动聚合产生的BGP路由 + +image-20220213184530008 + +在R3上执行手动聚合: + +```shell +bgp 200 + aggregate 10.0.0.0 255.0.0.0 detail-suppressed +``` + +查看R3的BGP路由表: + +```shell + Network NextHop MED LocPrf PrefVal Path/Ogn + +*> 10.0.0.0 127.0.0.1 0 ? +* 127.0.0.1 0 ? +* 10.0.35.5 0 0 300? +``` + +​ 优选的依旧是本地产生的BGP路由,但是可以看到本地产生的BGP路由有两条,从该表项无法判断出优选的为手动聚合还是自动聚合产生的BGP路由 + +```shell + BGP local router ID : 10.0.3.3 + Local AS number : 200 + Paths: 3 available, 1 best, 1 select + BGP routing table entry information of 10.0.0.0/8: + Aggregated route. + Route Duration: 00h08m17s + Direct Out-interface: NULL0 + Original nexthop: 127.0.0.1 + Qos information : 0x0 + AS-path Nil, origin incomplete, pref-val 0, valid, local, best, select, active, + pre 255 + Aggregator: AS 200, Aggregator ID 10.0.3.3, Atomic-aggregate + Advertised to such 2 peers: + 10.0.35.5 + 10.0.1.1 +``` + +​ R3上通过display bgp routing-table 10.0.0.0 查看BGP路由10.0.0.0/8的详细信息,存在三条有效路由,其中最优的条目由聚合产生,并且存在Atomic-aggregate属性,由此可以看出该聚合条目为手动聚合产生的条目 + +​ R3上相同的BGP聚合路由:手动聚合 > 自动聚合 + +​ 在该案例中我们验证了手动聚合产生的BGP路由优于自动聚合产生的BGP路由 + +**优选AS_Path最短** + +image-20220213184802632 + +​ R2上通过路由策略修改通告给R1的BGP路由其AS_Path属性值 + +```shell +ip ip-prefix as_path index 10 permit 10.0.45.0 24 +# +route-policy as_path permit node 10 + if-match ip-prefix as_path + apply as-path 400 additive +route-policy as_path permit node 20 +# +bgp 200 +peer 10.0.1.1 route-policy local_pref export +``` + +image-20220213185639293 + +```shell + Total Number of Routes: 2 + Network NextHop MED LocPrf PrefVal Path/Ogn + + *>i 10.0.45.0/24 10.0.3.3 0 100 0 300? + * i 10.0.2.2 0 100 0 400 100? +``` + +​ R3通告的BGP路由拥有更短的AS_Path,在前几条优选规则一致的情况下,R1优选R3通告的BGP路由 + +**Origin属性验证 ** + +image-20220213185757569 + +```shell + Total Number of Routes: 2 + Network NextHop MED LocPrf PrefVal Path/Ogn + + *>i 10.0.45.0/24 10.0.2.2 0 100 0 100? + * i 10.0.3.3 0 100 0 300? +``` + +​ R4、R5上默认采用import-route方式将路由10.0.45.0/24注入到BGP,R1的BGP路由表中两条BGP路由10.0.45.0/24其Origin属性都是“?”,此时R1优选R4注入的BGP路由 + +​ 在R5上修改注入路由的方式为network,之后在R1上再次查看BGP路由表 + +image-20220213190023969 + +​ 此时R5注入的BGP路由10.0.45.0/24其Origin属性为“i”,在前几条优选规则相同情况下,起源类型为“i”的BGP路由成为优选路由 + +```shell + Total Number of Routes: 2 + Network NextHop MED LocPrf PrefVal Path/Ogn + + *>i 10.0.45.0/24 10.0.3.3 0 100 0 300i + * i 10.0.2.2 0 100 0 100? +``` + +**优选MED最小** + +image-20220213190359185 + +​ R2上通过路由策略修改通告给R1的BGP路由其MED属性值 + +```shell +ip ip-prefix med index 10 permit 10.0.45.0 24 +# +route-policy med permit node 10 + if-match ip-prefix med + apply cost 20 +route-policy med permit node 20 +# +bgp 200 +peer 10.0.1.1 route-policy med export +compare-different-as-med +``` + +​ 默认情况下BGP只会对来自同一个AS的相同路由比较MED值,可以通过命令开启来自不同AS的相同路由也比较MED值 + +image-20220213190826909 + +​ R4发布的BGP路由MED值为20,R5发布的BGP路由不携带MED值(不携带默认为0),R5发布的BGP路由拥有更小的MED值,R1优选R5发布的BGP路由 + +```shell + Total Number of Routes: 2 + Network NextHop MED LocPrf PrefVal Path/Ogn + + *>i 10.0.45.0/24 10.0.3.3 0 100 0 300? + * i 10.0.2.2 20 100 0 100? +``` + +**优选从EBGP对等体学来的路由** + +image-20220213191121948 + +**R1上执行如下操作:** + +```shell +ip route-static 10.0.45.0 255.255.255.0 null0 +ip ip-prefix ebgp index 10 permit 10.0.45.0 24 +# +route-policy ebgp permit node 10 + if-match ip-prefix ebgp + apply as-path 500 additive +route-policy ebgp permit node 20 +# +bgp 200 + import-route static + peer 10.0.3.3 route-policy ebgp export +``` + +​ 在R1上创建一条10.0.45.0/24的静态路由(指向null0),将该条路由发布到BGP,同时为了保证R1、R5通告给R3的BGP路由AS_Path长度相同,使用路由策略为R1通告给R3的路由加上AS_Path属性,其值为:500 + +​ R3上将会同时收到R1、R5通告的BGP路由10.0.45.0/24,并且前面的优选规则无法比较出优选路由 + +image-20220213191209692 + +```shell + Network NextHop MED LocPrf PrefVal Path/Ogn + +*> 10.0.45.0/24 10.0.35.5 0 0 300? +* i 10.0.1.1 0 100 0 500? +``` + +​ 此时比较通告路由的对等体类型,R5为EBGP对等体,R1为IBGP对等体,EBGP对等体通告的BGP路由优于IBGP对等体通告的BGP路由,R3优选R5通告的BGP路由 + +```shell +BGP routing table entry information of 10.0.45.0/24: + From: 10.0.1.1 (10.0.1.1) + Route Duration: 00h06m43s + Relay IP Nexthop: 10.0.13.1 + Relay IP Out-Interface: GigabitEthernet0/0/0 + Original nexthop: 10.0.1.1 + Qos information : 0x0 + AS-path 500, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 1, not preferred for peer type + Not advertised to any peer yet +``` + +​ R3上通过display bgp routing-table 10.0.45.0 24查看BGP路由的详细信息,可以看到如下内容: + +​ not preferred for peer type;表明该路由因为对等体类型没有被优选 + +**IGP Cost ** + +```shell + BGP local router ID : 10.0.1.1 + Local AS number : 200 + Paths: 2 available, 1 best, 1 select + BGP routing table entry information of 10.0.45.0/24: + From: 10.0.3.3 (10.0.3.3) + Route Duration: 00h22m35s + Relay IP Nexthop: 10.0.13.3 + Relay IP Out-Interface: GigabitEthernet0/0/1 + Original nexthop: 10.0.3.3 + Qos information : 0x0 + AS-path 300, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 1 + Not advertised to any peer yet +``` + +​ 在BGP路由详细信息中存在IGP cost值这一内容,该值为本地IP路由表中去往Original nexthop地址的路由Cost值 + +```shell +Destination/Mask Proto Pre Cost NextHop Interface +10.0.3.3/32 OSPF 10 1 10.0.13.3 GigabitEthernet0/0/1 +``` + +​ 当前7条优选规则无法比较出优选BGP路由时将会比较前往下一跳地址的IGP cost值 + +优选IGP Cost值最小: + +image-20220213191516950 + +image-20220213191539842 + +```shell + BGP routing table entry information of 10.0.45.0/24: + From: 10.0.2.2 (10.0.2.2) + Route Duration: 00h24m07s + Relay IP Nexthop: 10.0.12.2 + Relay IP Out-Interface: GigabitEthernet0/0/0 + Original nexthop: 10.0.2.2 + Qos information : 0x0 + AS-path 100, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 10, not preferred for IGP cost + Not advertised to any peer yet +``` + +​ R1上通过display bgp routing-table 10.0.45.0 24 查看BGP路由的详细信息,下一跳10.0.2.2的BGP路由其IGP cost值变为了10,而下一跳为10.0.3.3的BGP路由其IGP cost为默认值1,所以R1优选下一跳为10.0.3.3的路由 + +​ 在R1的路由详细信息中可以看到如下内容:not preferred for IGP cost;表明该路由因为IGP cost未被优选 + +
BGP路由等价负载分担
+ +​ 在大型网络中,到达同一目的地通常会存在多条有效BGP路由,设备只会优选一条最优的BGP路由,将该路由加载到路由表中使用,这一特点往往会造成很多流量负载不均衡的情况 + +​ 通过配置BGP负载分担,可以使得设备同时将多条等代价的BGP路由加载到路由表,实现流量负载均衡,减少网络拥塞 + +​ 值得注意的是,尽管配置了BGP负载分担,设备依然只会在多条到达同一目的地的BGP路由中优选一条路由,并只将这条路由通告给其他对等体 + +​ 在设备上使能BGP负载分担功能后,只有满足条件的多条BGP路由才会成为等价路由,进行负载分担 + +注意: + +​ 默认情况下设备只会对AS_Path完全相同的路由进行负载分担,可以使用load-balancing as-path-ignore忽略AS_Path路径不一致 + +​ 在公网中到达同一目的地的路由形成负载分担时,系统会首先判断最优路由的类型。若最优路由为IBGP路由则只是IBGP路由参与负载分担,若最优路由为EBGP路由则只是EBGP路由参与负载分担,即公网中到达同一目的地的IBGP和EBGP路由不能形成负载分担 + +**形成BGP路由等价负载分担的条件** + +​ Preferred-Value属性值相同 + +​ Local_Preference属性值相同 + +​ 都是聚合路由或者非聚合路由 + +​ AS_Path属性长度相同 + +​ Origin类型(IGP、EGP、Incomplete)相同 + +​ MED属性值相同 + +​ 都是EBGP路由或都是IBGP路由 + +​ AS内部IGP的Metric相同 + +​ AS_Path属性完全相同 + +**配置BGP路由负载分担** + +image-20220214095414614 + +​ 以左侧拓扑为例,R1上两条BGP路由在不做任何路由策略、配置的情况下,前8条优选规则无法比较出优选路由。因此可以配置IBGP路由的负载分担 + +**配置BGP路由负载分担后** + +​ IP路由表中出现了到达10.0.45.0/24的等价路由 + +```shell +[R1]display ip routing-table 10.0.45.0 24 +Route Flags: R - relay, D - download to fib +------------------------------------------------------------------------------------------------------------------- +Routing Table : Public +Summary Count : 2 +Destination/Mask Proto Pre Cost Flags NextHop Interface +10.0.45.0/24 IBGP 255 0 RD 10.0.2.2 GigabitEthernet0/0/0 + IBGP 255 0 RD 10.0.3.3 GigabitEthernet0/0/1 +``` + +​ BGP路由表中依旧只有一条最优的路由 + +```shell +[R1]display bgp routing-table + + BGP Local router ID is 10.0.1.1 + Status codes: * - valid, > - best, d - damped, + h - history, i - internal, s - suppressed, S - Stale + Origin : i - IGP, e - EGP, ? - incomplete + Total Number of Routes: 2 + Network NextHop MED LocPrf PrefVal Path/Ogn + *>i 10.0.45.0/24 10.0.2.2 0 100 0 45? + * i 10.0.3.3 0 100 0 45? +``` + +**优选Cluster_List最短案例** + +image-20220214100405685 + +对拓扑做如下修改: + +​ 只在R5上将10.0.45.0/24发布到BGP + +​ 配置R1为RR,R3为R1的客户端 + +​ R2、R3之间基于环回口建立IBGP对等体关系 + +R2上将收到R3通告的BGP路由10.0.45.0/24、R1反射的BGP路由10.0.45.0/24 + +默认配置下,前面介绍的规则无法比较出优选路由,此时将根据Cluster_List进行优选 + +image-20220214100507749 + +​ 从BGP路由表中无法看出优选的是R1反射的BGP路由还是R3通告的BGP路由,此时可以通过命令display bgp routing 10.0.45.0 24查看BGP路由详细信息 + +```shell + BGP routing table entry information of 10.0.45.0/24: + From: 10.0.1.1 (10.0.1.1) + Route Duration: 00h03m10s + Relay IP Nexthop: 10.0.12.1 + Relay IP Out-Interface: GigabitEthernet0/0/0 + Original nexthop: 10.0.3.3 + Qos information : 0x0 + AS-path 300, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 2, not preferred for Cluster List + Originator: 10.0.3.3 + Cluster list: 10.0.1.1 + Not advertised to any peer yet +``` + +​ 经由R1反射的路由不是最优路由,原因也被标出:not preferred for Cluster List + +​ R3直接通告给R2的BGP路由因为没有经过路由反射器,不存在Cluster_List属性,即被认为Cluster_List长度为0,小于由R1反射的BGP路由其Cluster_List长度(1),所以R3通告的BGP路由为优选路由 + +**优选Router ID最小** + +image-20220214100610262 + +​ 在我们的讲解拓扑中,默认配置下R1从R2、R3都会收到BGP路由10.0.45.0/24,并且前面的优选规则无法比较出优选路由,最终将会根据本条规则,优选Router ID最小的对等体通告的BGP路由,在本案例中也就是R2通告的BGP路由 + +```shell + BGP routing table entry information of 10.0.45.0/24: + From: 10.0.3.3 (10.0.3.3) + Route Duration: 00h40m15s + Relay IP Nexthop: 10.0.13.3 + Relay IP Out-Interface: GigabitEthernet0/0/1 + Original nexthop: 10.0.3.3 + Qos information : 0x0 + AS-path 300, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 1, not preferred for router ID + Not advertised to any peer yet +``` + +​ 查看R1的BGP路由表详细信息,来自10.0.3.3的BGP路由因Router ID原因没有被优选:not preferred for router ID + +**优选Orginator_ID最小** + +image-20220214100712555 + +​ 如果BGP路由携带Originator_ID属性,则在本条规则的优选过程中,将比较Originator_ID的大小,并优选Originator_ID最小的BGP路由 + +image-20220214100729453 + +```shell + BGP routing table entry information of 10.0.45.0/24: + From: 10.0.3.3 (10.0.3.3) + Route Duration: 00h33m15s + Relay IP Nexthop: 10.0.13.3 + Relay IP Out-Interface: GigabitEthernet0/0/1 + Original nexthop: 10.0.5.5 + Qos information : 0x0 + AS-path Nil, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 2, not preferred for router ID + Originator: 10.0.5.5 + Cluster list: 10.0.3.3 + Not advertised to any peer yet +``` + +​ R3反射过来的BGP路由未被优选,原因标注的还是Router ID,这里的Router ID其实是指Originator ID(其中携带的内容为原始路由发布者的Router ID) + +**优选具有最小IP地址的对等体** + +image-20220214100814562 + +​ 当前面所有规则都无法比较出优选路由时,此时会根据对等体地址大小来进行优选,对等体地址较小者发送的路由较优 + +​ 修改前一条规则的验证拓扑,R2、R3都与R4相连,R4作为RR客户端,只在R4上将路由发布到BGP,此时R2、R3反射的BGP路由将拥有相同的Originator ID:10.0.4.4 + +image-20220214100839883 + +```shell + BGP routing table entry information of 10.0.45.0/24: + From: 10.0.3.3 (10.0.3.3) + Route Duration: 00h01m07s + Relay IP Nexthop: 10.0.12.2 + Relay IP Out-Interface: GigabitEthernet0/0/0 + Original nexthop: 10.0.4.4 + Qos information : 0x0 + AS-path Nil, origin incomplete, MED 0, localpref 100, pref-val 0, valid, intern +al, pre 255, IGP cost 2, not preferred for peer address + Originator: 10.0.4.4 + Cluster list: 10.0.3.3 + Not advertised to any peer yet +``` + +​ R3反射过来的BGP路由未被优选,原因为对等体地址较大:来自R2反射的路由对等体地址为10.0.2.2,而R3反射的路由对等体地址为10.0.3.3,因此未被优选 + +

第四节:BGP EVPN基础

+ +

一:MP-BGP

+ +​ MP-BGP(Multiprotocol Extensions for BGP-4)在RFC4760中被定义,用于实现BGP-4的扩展以允许BGP携带多种网络层协议(例如IPv6、L3VPN、EVPN等)。这种扩展有很好的后向兼容性,即一个支持MP-BGP的路由器可以和一个仅支持BGP-4的路由器交互 + +image-20220214101250549 + +
1.BGP-4扩展
+ +​ BGP-4中IPv4特有的三个信息是NEXT_HOP属性、AGGREGATOR和IPv4 NLRI。因此为了支持多种网络层协议,BGP-4需要增加两种能力:关联其他网络层协议下一跳信息的能力、关联其他网络层协议NLRI的能力 + +​ 这种两种能力被互联网数字分配机构(IANA)统称为地址族(Address Family,AF) + +​ 为了实现后向兼容性,协议规定MP-BGP增加两种新的属性,MP_REACH_NLRI和MP_UNREACH_NLRI,分别用于表示可达的目的信息和不可达的目的信息。这两种属性都属于可选非过渡(optional and non-transitive) + +image-20220214101358995 + +​ BGP-4规定IPv4的NEXT_HOP和AGGREGATOR属于Path attributes字段,IPv4的NLRI中携带IPv4的路由条目 + +​ MP-BGP新增Path attributes的字段,将对应的网络层协议的NEXT_HOP字段和NLRI归属于MP_REACH_NLRI。MP_REACH_NLRI为Path attributes的新增字段 + +**MP_REACH_NLRI** + +MP_REACH_NLRI被携带于BGP Update报文中,有以下作用: + +​ 通告可达的路由给BGP邻居 + +​ 通告可达路的路由的下一跳给BGP邻居 + +其详细字段如下: + +image-20220214101546653 + +**MP_UNREACH_NLRI** + +MP_UNREACH_NLRI被携带于BGP Update报文中,用于撤销不可达的路由 + +其详细字段如下: + +image-20220214101617706 + +

二:EVPN

+ +
1.EVPN简介
+ +**MPLS简介** + +​ MPLS (Multiprotocol Label Switching,多协议标记交换)位于TCP/IP协议栈中的数据链路层和网络层之间,在两层之间增加了额外的MPLS头部。报文转发直接基于MPLS头部。MPLS头部又被称为MPLS标签(Label);MPLS以标签交换替代IP转发,实现了基于标签的快速转发 + +image-20220214101731111 + +​ MPLS起源于IPv4(Internet Protocol version 4),其核心技术可扩展到多种网络协议,包括IPv6(Internet Protocol version 6)、IPX(Internet Packet Exchange)、Appletalk、DECnet、CLNP(Connectionless Network Protocol)等。MPLS中的“Multiprotocol”指的就是支持多种网络协议 + +​ MPLS以标签交换替代IP转发。标签是一个短而定长的、只具有本地意义的连接标识符,与ATM的VPI/VCI以及Frame Relay的DLCI类似 + +​ MPLS域(MPLS Domain):一系列连续的运行MPLS的网络设备构成了一个MPLS域 + +**VPLS简介** + +​ VPLS(Virtual Private LAN Service)是一种基于以太网的二层VPN技术,它在MPLS网络上提供了类似LAN的业务,允许用户可以从多个地址位置接入网络、相互访问 + +image-20220214101833140 + +**传统L2VPN** + +​ 传统的L2VPN业务例如VPLS(Virtual Private LAN Service),提供用户远程站点之间二层连接服务。它组建二层交换网,像二层交换机一样透传以太报文。本例中PE1和PE2组建的VPLS网络透传CE1和CE2之间的VLAN流量 + +​ 因此在传统L2VPN中对于远端MAC地址的学习依靠ARP广播泛洪,PE设备将需要承载广播流量。广播占用较多的接口带宽,这是传统L2VPN的一个典型问题 + +image-20220214101914378 + +**EVPN的诞生** + +​ 随着新技术和新场景对网络需求,VPLS被暴露出更多的问题无法满足二层VPN的需求。业界重新审视了对Ethernet VPN的需求(RFC 7209),提出新的解决方案EVPN(Ethernet VPN) + +​ EVPN最初在RFC 7432中被定义,EVPN引入控制平面,用于更好的控制MAC地址学习过程 + +​ EVPN的控制平面采用MP-BGP,数据平面支持MPLS LSPs或者IP/GRE tunneling + +image-20220214101947745 + +**EVPN的优势** + +​ EVPN颠覆了传统L2 VPN数据面学习的方式,引入控制面学习MAC和IP指导数据转发,实现了转控分离 + +​ EVPN解决传统L2 VPN的典型问题,带来双活,快速收敛,简化运维等更多的价值 + +image-20220214102025087 + +EVPN其他优势: + +​ 支持CE多活接入PE + +​ 支持PE成员自动发现 + +​ 环路避免 + +​ 广播流量优化 + +​ 支持ECMP + +
2.EVPN常见路由
+ +**EVPN NLRI** + +​ EVPN定义了一种新的BGP NLRI(Network Layer Reachable Information)来承载所有的EVPN路由,被称为EVPN NLRI + +​ EVPN NLRI是MP-BGP的新型扩展,被包含于MP_REACH_NLRI中,定义了新的NLRI。它规定了EVPN的AFI(Address Family Identifier)是25,SAFI(Subsequent Address Family Identifier)是70 + +image-20220214102215683 + +**EVPN路由** + +EVPN NLRI格式采用TLV(Type-Length-Value)三元组结构,使得报文具有很强的灵活性和扩展性: + +​ Route Type定义了不同的EVPN路由。RFC 7432中首先定义了四类路由 + +​ Length定义了字段的长度 + +​ Route Type Specifc则表示不同的路由类型有不同的字段填充 + +image-20220214102256990 + +**EVPN更多类型路由及作用** + +​ EVPN不仅限于二层VPN的应用,随着其EVPN路由类型的增加,支持更多的应用例如L3 VPN功能 + +| **路由类型** | **作用** | **RFC** | +| ----------------------------------- | ---------------------------------------------- | ----------------------------------------- | +| (Type 1) Ethernet A-D Route | • 别名• MAC地址批量撤销• 多活指示• 通告ESI标签 | RFC 7432 | +| (Type 2) MAC/IP Advertisement Route | • MAC地址学习通告• MAC/IP绑定• MAC地址移动性 | | +| (Type 3) Inclusive Multicast Route | 组播隧道端点自动发现&组播类型自动发现 | | +| (Type 4) Ethernet Segment Route | ES成员自动发现DF选举 | | +| (Type 5) IP Prefix Route | IP Prefix通告(支持L3 VPN) | draft-ietf-bess-evpn-prefix-advertisement | + +**EVPN协议标准** + +image-20220214102438115 + +
3.EVPN典型应用场景
+ +**EVPN在广域IP承载网的应用** + +image-20220214102541931 + +**EVPN在数据中心网络的应用** + +​ 在云数据中心采用EVPN的NVO(Network Virtualization Overlay)解决方案(RFC 8365) + +​ 推荐数据平面使用VXLAN封装与控制平面EVPN结合,构建灵活的数据中心Overlay网络 + +image-20220214102613347 + +**EVPN在园区网的应用** + +​ 园区网虚拟化园区解决方案同在云数据中心相同,采用EVPN的NVO解决方案(RFC 8365) + +​ 在不同的底层组网上使用VXLAN封装与控制平面EVPN结合,构建灵活的数据中心Overlay网络 + +image-20220214102642985 + +**EVPN在SD-WAN的应用** + +​ SD-WAN是新一代的企业分支互联解决方案,支持智能动态选路、ZTP和可视化等特性 + +​ SD-WAN解决方案中,在RR与CPE之间部署EVPN用于在控制平面传播SD-WAN的Overlay VPN路由,数据平面采用IPSec VPN构建安全的转发通道 + +image-20220214102721347 + +

三:企业级部署BGP/MPLS IP VPN实现互通

+ +
1. MPLS VPN技术原理与配置
+ +​ 连接客户的边缘设备叫做PE 设备 + +​ 在运营商网络中除了PE设备就是P设备 + +​ 客户连接运营商的设备叫做CE设备 + +在PE设备和CE设备间运行BGP + +VRF叫做VPN实例表:解决地址重叠问题 + +**VPN 配置解释** + +**路由传递** + +``` +1.保证PE 能学到本地CE的路由。 +*创建VRF表 +#ip vpn-instance 1 建立一个VPN实例列表。PE设备为每个CE设备创建一个路由表,表里有CE设备的路由。 +#ipv4-family 开启IPV4功能。 +#route-distinguisher 100:100 rd是一个和ipv4地址绑定的标识。传送过程中地址不能重叠。解决在传送过程中地址重叠问题 +#vpn-target 100:100 export target 出 import target 入,标识应该收那些路由 +解决对端设备在收路由时应该放入那个实例表的问题 +*接口加入VRF +进入接口——ip binding vpn-instance 1 接口ip绑定vpn实例。(配完后接口命令全部清空??将原接口的路由本身在全局路由表内,现将全部配置到VRF表中,所以需要清空)。 +dis ip routing-table vpn-instance 1 验证一下路由表与dis ip routing-table作比较 +]ping -vpn-instance 1 +ip地址 +*在PE和CE之间运行IGP协议。 +ospf 1 vpn-instance 1 isis 1 vpn-instance 2 +display ospf peer brief display Isis peer vpn-instance 2 +2.保证PE 能从对方PE 学到路由 +配置IGP +*display ospf peer 查看ospf邻居 +*display ip routing-table 查看ip路由表 +配置MPLS +*display mpls ldp session 检查ldp邻居 +*验证lsp:display mpls lsp +配置BGP VPNV4 +*bgp 100 +*peer 4.4.4.4 as 100 peer IGP 邻居 +*peer 4.4.4.4 connect-int loopback 0 +*peer 4.4.4.4 ne +*ipv4-family vpnv4 +*peer 4.4.4.4 enable +*验证:display bgp vpnv4 all peer 查看bgp vpnv4邻居 +配置DR +*ip vpn-instance 1 +*route-distinguisher 100:100 +*vpn-target 100:100 +将VRF内的IGP引入BGP +ipv4-family vpn-instance 1 +peer 12.1.1.1 as-number 200 +import-route ospf 2 +配置RT +*ip vpn-instance 1 +*vpn-target 100:100 +检查PE是否受到PC的路由表display bgp vpnv4 vpn-instance 3 routing-table +检查IP的路由表 display ip routing-table vpn-instance 3 +保证CE能学到对方CE的路由 +import-route bgp +``` + +image-20220214104236177 + +**组网需求:** + +​ CE1、CE3属于vpna + +​ CE2、CE4属于vpnb + +​ vpna使用的VPN-target属性为111:1,vpnb为222:2 + +​ 不同VPN用户之间不能互相访问 + +​ PE之间必须使用32位掩码的Loopback接口地址来建立MP-IBGP对等体关系,以便能够迭代到隧道 + +**配置PE1** + +``` +sysname PE1 +# +ip vpn-instance vpna //创建VPN实例vpna +ipv4-family +route-distinguisher 100:1 //路由标识符 +vpn-target 111:1 export-extcommunity +vpn-target 111:1 import-extcommunity +# +ip vpn-instance vpnb //创建VPN实例vpnb +ipv4-family //开启IPV4功能 +route-distinguisher 100:2 +vpn-target 222:2 export-extcommunity +vpn-target 222:2 import-extcommunity +# +mpls lsr-id 1.1.1.9 //配置MPLS +mpls +# +mpls ldp //建立LDP +# +interface GE0/0/0 //绑定VPN实例 +ip binding vpn-instance vpna +ip address 10.1.1.2 255.255.255.0 +# +interface GE0/0/1 +ip binding vpn-instance vpnb //绑定VPN实例 +ip address 10.2.1.2 255.255.255.0 +# +interface GE0/0/2 //接口使能MPLS +ip address 172.1.1.1 255.255.255.0 +mpls +mpls ldp +# +interface LoopBack1 +ip address 1.1.1.9 255.255.255.255 +# +bgp 100 //配置MP-IBGP对等体 +peer 3.3.3.9 as-number 100 +peer 3.3.3.9 connect-interface LoopBack1 +# +ipv4-family unicast +undo synchronization +peer 3.3.3.9 enable +# +ipv4-family vpnv4 //使能对等体交换VPNv4路由信息的能力 +policy vpn-target +peer 3.3.3.9 enable +# +ipv4-family vpn-instance vpna //配置PE与CE之间建立EBGP对等体关系, 引入VPN路由 +peer 10.1.1.1 as-number 65410 +import-route direct +# +ipv4-family vpn-instance vpnb //配置PE与CE之间建立EBGP对等体关系, 引入VPN路由 +peer 10.2.1.1 as-number 65420 +import-route direct +# +ospf 1 //配置公网路由 +area 0.0.0.0 +network 172.1.1.0 0.0.0.255 network 1.1.1.9 0.0.0.0 +``` + +**配置P** + +``` +sysname P +# +mpls lsr-id 2.2.2.9 //配置MPLS mpls +# +mpls ldp +# +interface GE0/0/0 +ip address 172.1.1.2 255.255.255.0 mpls +mpls ldp +# +interface GE0/0/1 +ip address 172.2.1.1 255.255.255.0 mpls +mpls ldp +# +interface LoopBack1 +ip address 2.2.2.9 255.255.255.255 +# +ospf 1 //配置公网路由 +area 0.0.0.0 +network 172.1.1.0 0.0.0.255 network 172.2.1.0 0.0.0.255 network 2.2.2.9 0.0.0.0 +# +``` + +**配置PE2** + +``` +sysname PE2 +# +ip vpn-instance vpna +ipv4-family +route-distinguisher +//创建VPN实例vpna +200:1 +vpn-target 111:1 export-extcommunity vpn-target 111:1 import-extcommunity +# +ip vpn-instance vpnb ipv4-family +route-distinguisher //创建VPN实例vpnb +200:2 +vpn-target 222:2 export-extcommunity vpn-target 222:2 import-extcommunity +# +mpls lsr-id 3.3.3.9 //配置MPLS LSR +mpls +# +mpls ldp +# +interface Ethernet1/0/0 //绑定VPN实例 +ip binding vpn-instance vpna +ip address 10.3.1.2 255.255.255.0 +# +interface Ethernet2/0/0 //绑定VPN实例 +ip binding vpn-instance vpnb +ip address 10.4.1.2 255.255.255.0 +# +interface Ethernet2/0/1 //接口使能MPLS +ip address 172.2.1.2 255.255.255.0 +mpls +mpls ldp +# +interface LoopBack1 +ip address 3.3.3.9 255.255.255.255 +# +bgp 100 //配置MP-IBGP对等体 +peer 1.1.1.9 as-number 100 +peer 1.1.1.9 connect-interface LoopBack1 +# +ipv4-family unicast +undo synchronization +peer 1.1.1.9 enable +# +ipv4-family vpnv4 //使能对等体交换VPNv4路由信息的能力 +policy vpn-target +peer 1.1.1.9 enable +# +ipv4-family vpn-instance vpna //配置PE与CE之间建立EBGP对等体关系, 引入VPN路由 +peer 10.3.1.1 as-number 65430 +import-route direct +# +ipv4-family vpn-instance vpnb //配置PE与CE之间建立EBGP对等体关系, 引入VPN路由 +peer 10.4.1.1 as-number 65440 +import-route direct +# +ospf 1 //配置公网路由 +area 0.0.0.0 +network 172.2.1.0 0.0.0.255 +network 3.3.3.9 0.0.0.0 +# +``` + +**配置CE1** + +``` +sysname CE1 +# +interface GE0/0/0 +ip address 10.1.1.1 255.255.255.0 +# +bgp 65410 //在PE与CE之间建立EBGP对等体关系 +peer 10.1.1.2 as-number 100 +# +ipv4-family unicast +undo synchronization +import-route direct //引入直连路由 +peer 10.1.1.2 enable +# +``` + +**配置CE2** + +``` +sysname CE2 +# +interface GE0/0/0 +ip address 10.2.1.1 255.255.255.0 +# +bgp 65420 //在PE与CE之间建立EBGP对等体关系 +peer 10.2.1.2 as-number 100 +# +ipv4-family unicast +undo synchronization +import-route direct //引入直连路由 +peer 10.2.1.2 enable +``` + +**配置CE3** + +``` +sysname CE3 +# +interface GE0/0/0 +ip address 10.3.1.1 255.255.255.0 +# +bgp 65430 //在PE与CE之间建立EBGP对等体关系 +peer 10.3.1.2 as-number 100 +# +ipv4-family unicast +undo synchronization +import-route direct //引入直连路由 +peer 10.3.1.2 enable +# +``` + +**配置CE4** + +``` +sysname CE4 +# +interface GE0/0/0 +ip address 10.4.1.1 255.255.255.0 +# +bgp 65440 //在PE与CE之间建立EBGP对等体关系 +peer 10.4.1.2 as-number 100 +# +ipv4-family unicast +undo synchronization +import-route direct //引入直连路由 +peer 10.4.1.2 enable +``` + +**测试** + +​ 属于同一个VPN实例的路由器之间可以实现互相通信 + +保证PE 能从对方PE 学到路由 + +​ display ospf peer 查看ospf邻居 + +``` +OSPF Process 1 with Router ID 1.1.1.9 +Neighbors +Area 0.0.0.0 interface 172.1.1.1(GigabitEthernet0/0/2)'s neighbors +Router ID: 172.1.1.2 Address: 172.1.1.2 +State: Full Mode:Nbr is Master Priority: 1 +DR: 172.1.1.1 BDR: 172.1.1.2 MTU: 0 +Dead timer due in 40 sec +Retrans timer interval: 5 +Neighbor is up for 01:24:54 +Authentication Sequence: [ 0 ] +``` + +​ display ip routing-table 查看ip路由表 + +​ display mpls ldp session 检查ldp邻居 + +​ display mpls lsp 验证lsp + +``` +LSP Information: BGP LSP +------------------------------------------------------------------------------- +FEC In/Out Label In/Out IF Vrf Name +10.1.1.0/24 1026/NULL -/- vpna +10.2.1.0/24 1027/NULL -/- vpnb +------------------------------------------------------------------------------- +LSP Information: LDP LSP +------------------------------------------------------------------------------- +FEC In/Out Label In/Out IF Vrf Name +2.2.2.9/32 NULL/3 -/GE0/0/2 +2.2.2.9/32 1024/3 -/GE0/0/2 +1.1.1.9/32 3/NULL -/- +3.3.3.9/32 +3.3.3.9/32 NULL/1025 1025/1025 -/GE0/0/2 -/GE0/0/2 +``` + +​ VRF叫做VPN实例表: 解决地址重叠问题 + +​ 转发等价类(FEC) 是一个用在多协议标签交换(MPLS)中的术语 + +​ display bgp vpnv4 vpn-instance vpnb routing-table + +​ display ip routing-table vpn-instance vpnb diff --git a/Datacom-MD/第四章:动态路由技术 (1).md b/Datacom-MD/第四章:动态路由技术 (1).md new file mode 100644 index 0000000..3d297d9 --- /dev/null +++ b/Datacom-MD/第四章:动态路由技术 (1).md @@ -0,0 +1,1522 @@ +

第四章:动态路由技术

+ +> 作者:行癫 + +------ + +

第一节:动态路由概述

+ +

一:动态路由概述

+ +image-20220210132050229 + +​ 静态路由的缺点是不能自动适应网络拓扑的变化,需要人工干预 + +​ 动态路由协议有自己的路由算法,能够自动适应网络拓扑的变化,适用于具有一定数量三层设备的网络 + +
1.动态路由类型
+ +image-20220210132226810 + +**根据路由信息传递的内容、计算路由的算法,可以将动态路由协议分为两大类:** + +​ 距离矢量协议 + +​ RIP + +​ 链路状态协议 + +​ OSPF、IS-IS + +​ BGP使用一种基于距离矢量算法修改后的算法,该算法被称为路径矢量(Path Vector)算法。因此在某些场合下,BGP也被称为路径矢量路由协议 + +**根据工作范围不同,又可以分为:** + +​ 内部网关协议IGP(Interior Gateway Protocol):在一个自治系统内部运行。RIP、OSPF、ISIS为常见的IGP协议 + +​ 外部网关协议EGP(Exterior Gateway Protocol):运行于不同自治系统之间。BGP是目前最常用的EGP协议 + +

二:路由高级特性

+ +
1.路由递归
+ +​ 路由必须有直连的下一跳才能够指导转发,但是路由生成时下一跳可能不是直连的,因此需要计算出一个直连的下一跳和对应的出接口,这个过程叫做路由递归;路由递归也称路由迭代 + +image-20220210132925448 + +![image-20220210132943125](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210132943125.png) + +
2.等价路由
+ +​ 路由表中存在等价路由之后,前往该目的网段的IP报文路由器会通过所有有效的接口、下一跳转发,这种转发行为被称为负载分担 +image-20220210133132942 + +
3.浮动路由
+ +image-20220210133205759 + +​ 静态路由支持配置时手动指定优先级,可以通过配置目的地址/掩码相同、优先级不同、下一跳不同的静态路由,实现转发路径的备份 + +​ 浮动路由是主用路由的备份,保证链路故障时提供备份路由,主用路由下一跳可达时该备份路由不会出现的路由表 + +image-20220210133501543 + +​ RTA-RTB之间的链路正常时,20.0.0.0/30的两条路由条目都是有效的条目,此时比较优先级,下一跳为10.1.1.2的优先级60,下一跳为10.1.2.2的优先级70,因此下一跳为10.1.1.2的加入路由表 + +​ RTA-RTB之间的链路故障时,10.1.1.2不可达,因此下一跳为10.1.1.2的路由失效,此时前往20.0.0.0/30的路由就只存在一条,该条路由将会被选入路由表。前往20.0.0.1的流量将会被转发到10.1.2.2 + +
4.路由汇总
+ +​ CIDR(无类别域间路由)采用IP地址加掩码长度来标识网络和子网,而不是按照传统的A、B、C等类型对网络地址进行划分 + +​ CIDR容许任意长度的掩码长度,将IP地址看成连续的地址空间,可以使用任意长度的前缀分配,多个连续的前缀可以聚合成一个网络,该特性可以有效的减少路由表条目数量 + +image-20220210134024146 + +**路由汇总需求** + +​ 子网划分、VLSM解决了地址空间浪费的问题,但同时也带来了新的问题,路由表中的路由条目数量增加 + +​ 为减少路由条目数量可以使用路由汇总 + +image-20220210134222378 + +​ 对于一个大规模的网络来说,路由器或其他具备路由功能的设备势必需要维护大量的路由表项,为了维护臃肿的路由表,这些设备就不得不耗费大量的资源。同时,由于路由表的规模变大,会导致路由器在查表转发时效率降低。因此在保证网络中的路由器到各网段都具备IP可达性的同时,需要减小设备的路由表规模。一个网络如果具备科学的IP编址,并且进行合理的规划,是可以利用多种手段减小设备路由表规模的。一个非常常见而又有效的办法就是使用路由汇总(Route Summarization)。路由汇总又被称为路由聚合(Route Aggregation),是将一组有规律的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由 + +**路由汇总简介** + +image-20220210134309351 + +​ RTA上为了能够前往远端地址,需要为每一个远端网段配置一条明细路由。去往10.1.1.0/24、10.1.2.0/24、10.1.3.0/24…拥有相同下一跳。将拥有相同下一跳,一组有规律的路由汇总成一条路由,这叫做路由汇总,路由汇总可以有效减少路由表项大小 + +**汇总计算** + +image-20220210134417435 + +​ 基于一系列连续的、有规律的IP网段,如果需计算相应的汇总路由,且确保得出的汇总路由刚好“囊括”上述IP网段,则需确保汇总路由的掩码长度尽可能长 + +
5.汇总引发的环路问题
+ +image-20220210134659528 + +**解决方案** + +image-20220210134725973 + +​ 一般来说一条路由,无论是静态的或者是动态的,都需要关联到一个出接口,路由的出接口指的是设备要到达一个目的网络时的出站接口。路由的出接口可以是该设备的物理接口,例如百兆、千兆以太网接口,也可以是逻辑接口,例如VLAN接口(VLAN Interface),或者隧道(Tunnel)接口等。在众多类型的出接口中,有一种接口非常特殊,那就是Null(无效)接口,这种类型的接口只有一个编号,也就是0。Null0是一个系统保留的逻辑接口,当网络设备在转发某些数据包时,如果使用出接口为Null0的路由,那么这些报文将被直接丢弃,就像被扔进了一个黑洞里,因此出接口为Null0的路由又被称为黑洞路由 + +
6.精确汇总
+ +![image-20220210134926567](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210134926567.png) + +![image-20220210134937514](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210134937514.png) + +

第二节:动态路由协议RIP

+ +

一:RIP 路由信息协议

+ +​ 它基于距离矢量算法的协议,使用跳数作为度量来衡量达到目的网络的距离 + +​ 矢量:从源到目的,源只知道目的是谁 + +​ 工作原理:设备之间互相发送request(路由更新请求)消息,收到request消息的设备将路由放到response(路由更新)中发送出去,当网络稳定后,RIP周期性发送response消息,周期为30s一次 + +
1.RIP的报文格式
+ +```shell +Command:指令/命令(1:request或2:response) +Version:版本 rip v1 和 rip v2 +Address family identitier 地址族标识 固定取值ipv4 +Ip address : ip地址 在request消息中不显示 +Metric:固定取值16 +``` + +​ RIP v1 以广播的形式发送response路由更新 255.255.255.255 + +​ RIP v2 以组播的形式发送response路由更新 224.0.0.9 + +​ RIP度量(Metric):度量等同于开销 + +​ RIP使用跳数作为度量值来衡量到达目的的网络 + +​ 缺省的情况下,直连网络的路由条数为0,当路由器发送路由更新时,会把度量值加1,不能超过15跳 + +
2.RIPv1和RIPv2的比较
+ +​ V1:有类别路由协议,不支持VLSM和CIDR(无类别域间路由) + +​ 以广播的形式发送报文255.255.255.255 + +​ V2:无类别路由协议,支持VLSM,支持路由聚合与CIDR + +​ 支持以广播或者组播(224.0.0.9)方式发送报文 + +​ 支持明文认证和MD5密文认证 + +
3.V2的报文格式
+ +​ Route Tag:路由标记 用来做路由策略使用 + +​ Subnet Mask:子网掩码 + +​ Next Hop: 下一跳 + +

二:RIP基本配置

+ +image-20220210140442194 + +**R1:** + +```shell +system view +Enter system view, return user view with Ctrl+Z. +[Huawei] +[Huawei]int g0/0/0 //进入接口 +[Huawei-GigabitEthernet0/0/0]ip address 10.1.1.1 24 //配置IP地址 +[Huawei-GigabitEthernet0/0/0]int g0/0/1 +[Huawei-GigabitEthernet0/0/1]ip address 10.1.2.1 24 +[Huawei-GigabitEthernet0/0/1]display ip interface brief //查看接口配置 +*down: administratively down +^down: standby +(l): loopback +(s): spoofing +The number of interface that is UP in Physical is 3 +The number of interface that is DOWN in Physical is 1 +The number of interface that is UP in Protocol is 3 +The number of interface that is DOWN in Protocol is 1 + +Interface IP Address/Mask Physical Protocol +GigabitEthernet0/0/0 10.1.1.1/24 up up +GigabitEthernet0/0/1 10.1.2.1/24 up up +GigabitEthernet0/0/2 unassigned down down +NULL0 unassigned up up(s) +``` + +**R2:** + +```shell +system-view +Enter system view, return user view with Ctrl+Z. +[Huawei]int g0/0/0 +[Huawei-GigabitEthernet0/0/0]ip address 10.1.2.2 24 +[Huawei-GigabitEthernet0/0/0]int g0/0/1 +[Huawei-GigabitEthernet0/0/1]ip address 10.1.3.1 24 +[Huawei-GigabitEthernet0/0/1]display ip interface brief +*down: administratively down +^down: standby +(l): loopback +(s): spoofing +The number of interface that is UP in Physical is 3 +The number of interface that is DOWN in Physical is 1 +The number of interface that is UP in Protocol is 3 +The number of interface that is DOWN in Protocol is 1 + +Interface IP Address/Mask Physical Protocol +GigabitEthernet0/0/0 10.1.2.2/24 up up +GigabitEthernet0/0/1 10.1.3.1/24 up up +GigabitEthernet0/0/2 unassigned down down +NULL0 unassigned up up(s) +``` + +**R3:** + +```shell +sys +Enter system view, return user view with Ctrl+Z. +[Huawei]int g0/0/0 +[Huawei-GigabitEthernet0/0/0]ip add 10.1.3.2 24 +[Huawei-GigabitEthernet0/0/0]int g0/0/1 +[Huawei-GigabitEthernet0/0/1]ip add 10.1.4.1 24 +[Huawei-GigabitEthernet0/0/1]display ip interface brief +*down: administratively down +^down: standby +(l): loopback +(s): spoofing +The number of interface that is UP in Physical is 3 +The number of interface that is DOWN in Physical is 1 +The number of interface that is UP in Protocol is 3 +The number of interface that is DOWN in Protocol is 1 + +Interface IP Address/Mask Physical Protocol +GigabitEthernet0/0/0 10.1.3.2/24 up up +GigabitEthernet0/0/1 10.1.4.1/24 up up +GigabitEthernet0/0/2 unassigned down down +NULL0 unassigned up up(s) +``` + +
1.结果
+ +image-20220210140659812 + +
2.抓包
+ +image-20220210140731552 + +

第三节:开放式最短路径优先OSPF

+ +

一:动态路由协议分类

+ +
1.距离矢量路由协议
+ +​ 运行距离矢量路由协议的路由器周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻的路由器学习到路由,并加载到自己的路由表中 + +​ 对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的方向在哪里,距离有多远,这即是距离矢量算法的本质 + +image-20220210141754284 + +
2.链路状态路由协议—LSA泛洪
+ +​ 与巨鹿矢量路由协议不同,链路状态路由协议通告的是链路状态而不是路由表,运行链路状态路由协议的路由器之间是首先会建立一个协议的邻居关系,然后彼此之间开始交互LSA(Link State Advertisement 链路状态通告) + +image-20220210142045413 + +​ 链路状态通告,可以简单的理解为每台路由器都产生一个描述自己直连接口状态(包括接口的开销、与邻居路由器之间的关系等)的通告 + +
3.链路状态路由协议-LSDB组建
+ +​ 每台路由器都会产生LSAs,路由器将接收到的LSAs放入到自己的LSDB(链路状态数据库),路由器通过LSDB,掌握了全网的拓扑 + +image-20220210143537604 + +
4.链路状态路由协议—SPF计算
+ +​ 每台路由器基于LSDB,使用SPF(Shortest Path First 最短路径优先)算法进行计算,每台路由器都计算出一颗以自己为根的、无环的、拥有最短路径的“树”,有了这颗树,路由器就已经知道了到达网络各个角落的优选路径 + +image-20220210143939311 + +​ SPF是OSPF路由协议的一个核心算法,用来在一个复杂的网络中做出路由优选的决策 + +
5.链路状态路由协议—路由表生成
+ +​ 路由器将计算出来的优选路径,加载进自己的路由表 + +image-20220210144117682 + +
6.链路状态路由协议总结
+ +image-20220210144156764 + +**链路状态路由协议有四个步骤:** + +​ 第一步是建立相邻路由器之间的邻居关系 + +​ 第二步是邻居之间交互链路状态信息和同步LSDB + +​ 第三步是进行优选路径计算 + +​ 第四步是根据最短路径树生成路由表项加载到路由表 + +

二:OSPF协议

+ +
1.OSPF简介
+ +​ OSPF是IETF定义的一种基于链路状态的内部网关路由协议。目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740) + +**OSPF有以下优点:** + +​ 基于SPF算法,以“累计链路开销”作为选路参考值 + +​ 采用组播形式收发部分协议报文 + +​ 支持区域划分 + +​ 支持对等价路由进行负载分担 + +​ 支持报文认证 + +**OSPF应用场景** + +image-20220210144610351 + +​ 大型企业网络中通常部署OSPF实现各个楼宇的网络之间的路由可达 + +​ 核心和汇聚层部署在OSPF骨干区域 + +​ 接入和汇聚层部署在OSPF非骨干区域 + +注意: + +​ 接入层:接入层利用光纤、双绞线、同轴电缆、无线接入技术等传输介质,实现与用户连接,并进行业务和带宽的分配。接入层目的是允许终端用户连接到网络,因此接入层交换机具有低成本和高端口密度特性 + +​ 汇聚层:汇聚层为接入层提供基于策略的连接,如地址合并,协议过滤,路由服务,认证管理等。通过网段划分实现与网络隔离,可以防止网络故障蔓延和影响到核心层。汇聚层同时也可以提供接入层虚拟网之间的互连,控制和限制接入层对核心层的访问,保证核心层的安全和稳定 + +​ 核心层:核心层的功能主要是实现骨干网络之间的优化传输,核心层任务的重点通常是冗余能力、可靠性和高速的传输 + +
2.OSPF基础术语
+ +**Router ID** + +​ Router ID用于在自治系统中唯一标识一台运行OSPF的路由器,它是一个32位的无符号整数 + +Router ID选举规则如下: + +​ 手动配置OSPF路由器的Router ID(建议手动配置) + +​ 如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID + +​ 如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID + +image-20220210144927724 + +​ Router ID一旦选定,之后如果要更改的话就需要重启OSPF进程 + +​ 在实际工程中,推荐手工指定OSPF路由设备的Router ID。首先规划出一个私有网段用于OSPF的Router ID选择,例如:192.168.1.0/24。在启用OSPF进程前在每个OSPF路由器上建立一个Loopback接口,使用一个32位掩码的私有地址作为其IP地址,这个32位的私有地址即作为该路由设备的Router ID。如果没有特殊要求,这个Loopback接口地址可以不发布在OSPF网络中 + +**区域** + +​ OSPF Area用于标识一个OSPF的区域 + +​ 区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识 + +​ OSPF的区域ID是一个32bit的非负整数,按点分十进制的形式(与IPv4地址的格式一样)呈现,例如Area0.0.0.1。为了简便起见,我们也会采用十进制的形式来表示 + +image-20220210145147950 + +**度量值** + +​ OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省的接口Cost = 100 Mbit/s ➗接口带宽。其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的 + +​ OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和 + +image-20220210145307160 + +注意: + +​ 在实际应用中,推荐根据接口带宽大小手动配置Cost值,而不是修改OSPF参考带宽 + +
3.OSPF三大表项
+ +**邻居表** + +OSPF有三张重要的表项,OSPF邻居表、LSDB和OSPF路由表。对于OSPF的邻居表,需要了解: + +​ OSPF在传递链路状态信息之前,需先建立OSPF邻居关系 + +​ OSPF的邻居关系通过交互Hello报文建立 + +​ OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer查看 + +image-20220210145627652 + +**LSDB** + +​ LSDB会保存自己产生的及从邻居收到的LSA信息,本例中R1的LSDB包含了三条LSA + +​ Type标识LSA的类型,AdvRouter标识发送LSA的路由器 + +​ 使用命令行display ospf lsdb查看LSDB表 + +image-20220210145711139 + +**OSPF路由表** + +​ OSPF路由表和路由器路由表是两张不同的表。本例中OSPF路由表有三条路由 + +​ OSPF路由表包含Destination、Cost和NextHop等指导转发的信息 + +​ 使用命令display ospf routing查看OSPF路由表 + +image-20220210145808370 + +注意: + +​ 路由器路由表通常称为全局路由表,并非所有OSPF路由都可以放到路由器路由表 + +
3.OSPF报文格式和类型
+ +​ OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式 + +​ OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89 + +image-20220210145943467 + +​ Version :对于当前所使用的OSPFv2,该字段的值为2 + +​ Router ID:表示生成此报文的路由器的Router ID + +​ Area ID:表示此报文需要被通告到的区域 + +​ Type:类型字段 + +​ Packet length:表示整个OSPF报文的长度,单位是字节 + +​ Checksum:校验字段,其校验的范围是整个OSPF报文,包括OSPF报文头部 + +​ Auth Type:为0时表示不认证;为1时表示简单的明文密码认证;为2时表示加密(MD5)认证 + +​ Authentication:认证所需的信息。该字段的内容随AuType的值不同而不同 + +
4.OSPF工作过程
+ +image-20220210150146745 + +**建立邻居关系** + +​ OSPF使用Hello报文发现和建立邻居关系 + +​ 在以太网链路上,缺省时,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5) + +​ OSPF Hello报文中包含了路由器的Router ID、邻居列表等信息 + +image-20220210150229349 + +注意: + +​ R1和R2路由器相互发送Hello报文,第一个Hello报文包含的邻居列表为空 + +​ R2收到R1发送的Hello报文后,如果各项参数匹配,再次发送Hello报文时,将R1加入自己的邻居列表 + +​ 在以太网链路上,通常以组播形式发送Hello报文 + +​ 224.0.0.5的组播地址为OSPF设备的预留IP组播地址 + +​ 224.0.0.6的组播地址为OSPF DR/BDR的预留IP组播地址 + +​ 对于不支持组播的链路,OSPF支持采用单播的方式发送Hello报文 + +**Hello报文** + +Hello报文的主要作用: + +​ 邻居发现:自动发现邻居路由器 + +​ 邻居建立:完成Hello报文中的参数协商,建立邻居关系 + +​ 邻居保持:通过周期性发送和接收,检测邻居运行状态 + +image-20220210150519487 + +​ Network Mask:发送Hello报文的接口的网络掩码 + +​ HelloInterval:发送Hello报文的时间间隔。通常为10s + +​ RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。通常为40s + +​ Neighbor:邻居,以Router ID标识 + +​ Options: + +​ E:是否支持外部路由 + +​ MC:是否支持转发组播数据包 + +​ N/P:是否为NSSA区域 + +​ Router Priority:DR优先级。默认为1。如果设置为0,则路由器不能参与DR或BDR的选举 + +​ Designated Router:DR的接口地址 + +​ Backup Designated Router:BDR的接口地址 + +**邻接关系建立** + +image-20220210150724080 + +DD报文部分字段解释: + +​ I:当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0 + +​ M (More):当发送连续多个DD报文时,如果是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文 + +​ MS (Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master + +​ DD sequence number:DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性 + +注意: + +​ R1和R2的Router ID分别为10.0.1.1和10.0.2.2并且二者已建立了邻居关系。当R1的邻居状态变为ExStart后,R1会发送第一个DD报文。此报文中,M-bit设置为1,表示后续还有DD报文要发送,MS-bit设置为1,表示R1宣告自己为Master。DD序列号被随机设置为X,I-bit设置为1,表示这是第一个DD报文 + +​ 同样当R2的邻居状态变为ExStart后,R2也会发送第一个DD报文。此报文中,DD序列号被随机设置为Y(I-bit=1,M-bit=1,MS-bit=1,含义同上)。由于R2的Router ID较大,所以R2将成为真正的Master。收到此报文后,R1会产生一个Negotiation-Done事件,并将邻居状态从ExStart变为Exchange + +​ 当R1的邻居状态变为Exchange后,R1会发送一个新的DD报文,此报文中包含了LSDB的摘要信息,序列号设置为R2在步骤2中使用的序列号Y,I-bit=0,表示这不是第一个DD报文,M-bit=0,表示这是最后一个包含LSDB摘要信息的DD报文,MS-bit=0,表示R1宣告自己为Slave。收到此报文后,R2将邻居状态从ExStart变为Exchange + +​ 当R2的邻居状态变为Exchange后,R2会发送一个新的DD报文,此报文包含了LSDB的摘要信息。DD序列号设置为Y+1, MS-bit=1,表示R2宣告自己为Master + +​ 虽然R1不需要发送新的包含LSDB摘要信息的DD报文,但是作为Slave,R1需要对Master发送的每一个DD报文进行确认。所以,R1向R2发送一个新的DD报文,序列号为Y+1,该报文内容为空。发送完此报文后,RTA产生一个Exchange-Done事件,将邻居状态变为Loading。R2收到此报文后,会将邻居状态变为Full(假设R2的LSDB是最新最全的,不需要向R1请求更新) + +**DD报文** + +​ DD报文包含LSA头部信息,包括LS Type、LS ID、Advertising Router、LS Sequence Number、LS Checksum + +image-20220210150932072 + +​ Interface MTU:指示在不分片的情况下,此接口最大可发出的IP报文长度。在两个邻居发送DD报文中包含MTU参数,如果收到的DD报文中MTU和本端的MTU不相等,则丢弃该DD报文。缺省情况下,华为设备未开启MTU检查 + +​ Optinons:字段同Hello报文 + +image-20220210150956105 + +​ R1开始向R2发送LSR报文,请求那些在Exchange状态下通过DD报文发现的、并且在本地LSDB中没有的链路状态信息 + +​ R2向R1发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。R1在完成LSU报文的接收之后,且没有其他待请求的LSA后,会将邻居状态从Loading变为Full + +​ R1向R2发送LSAck报文,作为对LSU报文的确认 + +**DR与BDR的作用** + +MA网络中的问题: + +​ n×(n−1)/2个邻接关系,管理复杂 + +​ 重复的LSA泛洪,造成资源浪费 + +image-20220210151107489 + +解决方案: + +在MA网络中选举DR: + +​ DR(Designated Router,指定路由器)负责在MA网络建立和维护邻接关系并负责LSA的同步 + +​ DR与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息 + +​ 为了规避单点故障风险,通过选举BDR(备份指定路由器) ,在DR失效时快速接管DR的工作 + +image-20220210151201562 + +​ MA( Multiple Access,多路访问 )分为BMA( Broadcast Multi-Access,广播多路访问)和NBMA(Non-Broadcast Multiple Access,非广播多路访问)。以太网链路组成的网络是典型的BMA网络。帧中继链路通过逻辑上的划分组成典型的NBMA网络 + +​ DRother:既不是DR也不是BDR的路由器就是DRother路由器 + +**DR与BDR的选举规则** + +​ DR/BDR的选举是非抢占式的 + +​ DR/BDR的选举是基于接口的 + +​ 接口的DR优先级越大越优先 + +​ 接口的DR优先级相等时,Router ID越大越优先 + +image-20220210151332106 + +**广播链路或者NBMA链路上DR和BDR的选举过程如下:** + +​ 接口UP后,发送Hello报文,同时进入到Waiting状态。在Waiting状态下会有一个WaitingTimer,该计时器的长度与DeadTimer是一样的。默认值为40秒,用户不可自行调整 + +​ 在WaitingTimer触发前,发送的Hello报文是没有DR和BDR字段的。在Waiting阶段,如果收到Hello报文中有DR和BDR,那么直接承认网络中的DR和BDR,而不会触发选举。直接离开Waiting状态,开始邻居同步 + +​ 假设网络中已经存在一个DR和一个BDR,这时新加入网络中的路由器,不论它的Router ID或者DR优先级有多大,都会承认现网中已有的DR和BDR + +​ 当DR因为故障Down掉之后,BDR会继承DR的位置,剩下的优先级大于0的路由器会竞争成为新的BDR + +​ 只有当不同Router ID,或者配置不同DR优先级的路由器同时起来,在同一时刻进行DR选举才会应用DR选举规则产生DR + +**不同网络类型中DR与BDR的选举操作** + +​ P2MP:point-to-multipoint,点到多点 + +image-20220210151454398 + +**OSPF状态机** + +image-20220210152247640 + +
5.OSPF基本配置
+ +![image-20220210151614195](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210151614195.png) + +![image-20220210151623681](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210151623681.png) + +
6.OSPF配置举例
+ +image-20220210152338230 + +```shell +以R2为例: +[R2]ospf 1 router-id 10.0.2.2 +[R2-ospf-1]area 0.0.0.0 +[R2-ospf-1-area-0.0.0.0] network 10.0.12.0 0.0.0.255 +[R2-ospf-1-area-0.0.0.0] network 10.0.24.2 0.0.0.0 +[R2-ospf-1-area-0.0.0.0] network 10.0.35.2 0.0.0.0 +``` + +注意: + +**ospf发布network 192.168.1.1 0.0.0.0 和network 192.168.1.0 0.0.0.255区别** + +开放不同 + +​ network 192.168.1.1 0.0.0.0:network 192.168.1.1 0.0.0.0指定向外部IP地址开放了192.168.1.1这个ip地址的路由。 + +​ network 192.168.1.0 0.0.0.255:network 192.168.1.0 0.0.0.255向外部IP地址开放了192.168.1.0这个ip地址里24位网段里的所有子地址的路由。 + +通信不同 + +​ network 192.168.1.1 0.0.0.0:其他ip地址的路由只能通过network 192.168.1.1 0.0.0.0和同一192.168.1这个ip地址进行通信。 + +​ network 192.168.1.0 0.0.0.255:其他ip地址的路由可以通过network 192.168.1.0 0.0.0.255能和同一192.168.1以下网段里的所有子地址之间进行通信。 + +**OSPF配置验证** + +display ospf interface all可查看当前设备所有激活OSPF的接口信息: + +​ 时间参数,例如Hello报文发送间隔,死亡时间。 + +​ 接口的链路类型、接口的MTU。 + +​ 对于以太网链路,可查看DR的接口地址,DR的优先级。 + +```shell +[R2]display ospf interface all + OSPF Process 1 with Router ID 10.0.2.2 + Area: 0.0.0.0 + Interface: 10.0.12.2 (GigabitEthernet0/0/0) + Cost: 1 State: DR Type: Broadcast MTU: 1500 Priority: 1 + Designated Router: 10.0.12.2 + Backup Designated Router: 10.0.12.1 + Timers: HELLO 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1 + + Interface: 10.0.235.2 (GigabitEthernet0/0/1) + Cost: 1 State: DROther Type: Broadcast MTU: 1500 Priority: 1 + Designated Router: 10.0.235.5 + Backup Designated Router: 10.0.235.3 + Timers: HELLO 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1 + + Interface: 10.0.24.2 (Serial1/0/1) --> 10.0.24.4 + Cost: 48 State: P-2-P Type: P2P MTU: 1500 + Timers: HELLO 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1 +``` + +display ospf peer可查看当前设备的邻居状态: + +​ 邻居路由器的Router ID + +​ 邻居状态,例如FULL,TWO-WAY,DOWN等 + +image-20220210152639604 + +```shell +display ospf peer + OSPF Process 1 with Router ID 10.0.2.2 + Area 0.0.0.0 interface 10.0.12.2(GigabitEthernet0/0/0)'s neighbors + Router ID: 10.0.1.1 Address: 10.0.12.1 + State: Full Mode:Nbr is Slave Priority: 1 + DR: 10.0.12.2 BDR: 10.0.12.1 MTU: 0 + Dead timer due in 28 sec + Retrans timer interval: 5 + Neighbor is up for 00:01:31 + Authentication Sequence: [ 0 ] + + Area 0.0.0.0 interface 10.0.235.2(GigabitEthernet0/0/1)'s neighbors + Router ID: 10.0.3.3 Address: 10.0.235.3 + State: Full Mode:Nbr is Master Priority: 1 + DR: 10.0.235.5 BDR: 10.0.235.3 MTU: 0 + Dead timer due in 30 sec + Retrans timer interval: 5 + Neighbor is up for 00:01:31 + Authentication Sequence: [ 0 ] +``` + +​ 在P2P网络中不需要选举DR/BDR。因此在本例中,查看R2的OSPF邻居表时,会发现其Serial1/0/1接口的数据结构中DR/BDR字段为None + +image-20220210152717792 + +```shell + display ospf peer + OSPF Process 1 with Router ID 10.0.2.2 +Area 0.0.0.0 interface 10.0.235.2(GigabitEthernet0/0/1)'s neighbors +Router ID: 10.0.5.5 Address: 10.0.235.5 + State: Full Mode:Nbr is Master Priority: 1 + DR: 10.0.235.5 BDR: 10.0.235.3 MTU: 0 + Dead timer due in 40 sec + Retrans timer interval: 0 + Neighbor is up for 00:01:27 + Authentication Sequence: [ 0 ] + + Area 0.0.0.0 interface 10.0.24.2(Serial1/0/1)'s neighbors + Router ID: 10.0.4.4 Address: 10.0.24.4 + State: Full Mode:Nbr is Master Priority: 1 + DR: None BDR: None MTU: 0 + Dead timer due in 35 sec + Retrans timer interval: 5 + Neighbor is up for 00:01:56 + Authentication Sequence: [ 0 ] +``` + +display ospf lsdb可查看当前设备的LSDB: + +​ LSDB由多种类型的LSA构成,所有的LSA都有相同的报文头部格式,其中关键字段如Type、LinkState ID、AdvRouter等。下节课程将重点介绍LSA的详细信息 + +```shell +display ospf lsdb + + OSPF Process 1 with Router ID 10.0.2.2 + Link State Database + + Area: 0.0.0.0 +Type LinkState ID AdvRouter Age Len Sequence Metric +Router 10.0.4.4 10.0.4.4 662 72 80000006 48 +Router 10.0.2.2 10.0.2.2 625 72 8000000C 1 +Router 10.0.1.1 10.0.1.1 638 60 80000007 1 +Router 10.0.5.5 10.0.5.5 634 60 8000000B 1 +Router 10.0.3.3 10.0.3.3 639 60 80000009 1 +Network 10.0.235.5 10.0.5.5 634 36 80000005 0 +Network 10.0.12.2 10.0.2.2 629 32 80000003 0 +``` + +display ospf routing可查看当前设备的OSPF路由表: + +​ 从R2的OSPF路由表可看出,它已经通过OSPF获知到达全网的路由 + +```shell +display ospf routing + + OSPF Process 1 with Router ID 10.0.2.2 + Routing Tables +Destination Cost Type NextHop AdvRouter Area +10.0.12.0/24 1 Transit 10.0.12.2 10.0.2.2 0.0.0.0 +10.0.24.0/24 48 Stub 10.0.24.2 10.0.2.2 0.0.0.0 +10.0.235.0/24 1 Transit 10.0.235.2 10.0.2.2 0.0.0.0 +10.0.13.0/24 49 Stub 10.0.12.1 10.0.1.1 0.0.0.0 +10.0.13.0/24 49 Stub 10.0.235.3 10.0.3.3 0.0.0.0 +10.0.45.0/24 49 Stub 10.0.235.5 10.0.5.5 0.0.0.0 +``` + +

第四节:OSPF路由计算

+ +

一:区域内路由计算

+ +
1.LSA概述
+ +**LSA的基本概念** + +​ LSA是OSPF进行路由计算的关键依据 + +​ OSPF的LSU报文可以携带多种不同类型的LSA + +​ 各种类型的LSA拥有相同的报文头部 + +​ 链路状态类型、链路状态ID、通告路由器三元组唯一地标识了一个LSA + +​ 链路状态老化时间 、链路状态序列号 、校验和用于判断LSA的新旧 + +image-20220210153537721 + +​ LS Age(链路状态老化时间):此字段表示LSA已经生存的时间,单位是秒 + +​ Options(可选项):每一个bit都对应了OSPF所支持的某种特性 + +​ LS Type(链路状态类型):指示本LSA的类型 + +​ Link State ID(链路状态ID):不同的LSA,对该字段的定义不同 + +​ Advertising Router(通告路由器):产生该LSA的路由器的Router ID + +​ LS Sequence Number(链路状态序列号):当LSA每次有新的实例产生时,序列号就会增加 + +​ LS Checksum(校验和):用于保证数据的完整性和准确性 + +​ Length:是一个包含LSA头部在内的LSA的总长度值 + +注意: + +​ LS Age:当LSA被始发时,该字段为0,随着LSA在网络中被泛洪,该时间逐渐累加,当到达MaxAge(缺省值为3600s)时,LSA不再用于路由计算 + +​ LS Sequence Number:该字段用于判断LSA的新旧或是否存在重复的实例。序列号范围是0x80000001-0x7FFFFFFF,路由器始发一个LSA,序列号为0x80000001,之后每次更新序列号加1,当LSA达到最大序列号时,重新产生该LSA,并且把序列号设置为0x80000001 + +
2.常见LSA的类型
+ +| **类型** | **名称** | **描述** | +| -------- | ---------------------------------- | ------------------------------------------------------------ | +| 1 | 路由器LSA(Router LSA) | 每个设备都会产生,描述了设备的链路状态和开销,该LSA只能在接口所属的区域内泛洪 | +| 2 | 网络LSA(Network LSA) | 由DR产生,描述该DR所接入的MA网络中所有与之形成邻接关系的路由器,以及DR自己。该LSA只能在接口所属区域内泛洪 | +| 3 | 网络汇总LSA(Network Summary LSA) | 由ABR产生,描述区域内某个网段的路由,该类LSA主要用于区域间路由的传递 | +| 4 | ASBR汇总LSA(ASBR Summary LSA) | 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。 | +| 5 | AS外部LSA(AS External LSA) | 由ASBR产生,用于描述到达OSPF域外的路由 | +| 7 | 非完全末梢区域LSA(NSSA LSA) | 由ASBR产生,用于描述到达OSPF域外的路由。NSSA LSA与AS外部LSA功能类似,但是泛洪范围不同。NSSA LSA只能在始发的NSSA内泛洪,并且不能直接进入Area0。NSSA的ABR会将7类LSA转换成5类LSA注入到Area0 | + +
3.Router LSA
+ +​ Router LSA(1类LSA):每台OSPF路由器都会产生。它描述了该路由器直连接口的信息 + +​ Router LSA只能在所属的区域内泛洪 + +image-20220210154017685 + +​ V (Virtual Link ) :如果产生此LSA的路由器是虚连接的端点,则置为1 + +​ E (External ): 如果产生此LSA的路由器是ASBR,则置为1 + +​ B (Border ):如果产生此LSA的路由器是ABR,则置为1 + +​ links :LSA中的Link(链路)数量。Router LSA使用Link来承载路由器直连接口的信息 + +**详解** + +​ Router LSA使用Link来承载路由器直连接口的信息 + +​ 每条Link均包含“链路类型”、“链路ID”、“链路数据”以及“度量值”这几个关键信息 + +​ 路由器可能会采用一个或者多个Link来描述某个接口 + +image-20220210154316040 + +**Router LSA描述P2P网络** + +image-20220210154346573 + +```shell +display ospf lsdb router self-originate + Type : Router + Ls id : 10.0.1.1 + Adv rtr : 10.0.1.1 + * Link ID: 10.0.3.3 + Data : 10.0.13.1 + Link Type: P-2-P + Metric : 48 + * Link ID: 10.0.13.0 + Data : 255.255.255.0 + Link Type: StubNet + Metric : 48 + Priority : Low +``` + +image-20220210154418095 + +**Router LSA描述TransNet** + +image-20220210154600920 + +
4.Network LSA
+ +​ Network LSA(2类LSA) :由DR产生,描述本网段的链路状态,在所属的区域内传播 + +​ Network LSA 记录了该网段内所有与DR建立了邻接关系的OSPF路由器,同时携带了该网段的网络掩码 + +image-20220210154646334 + +​ Link State ID :DR的接口IP地址 + +​ Network Mask:MA网络的子网掩码 + +​ Attached Router:连接到该MA网络的路由器的Router-ID(与该DR建立了邻接关系的邻居的Router-ID,以及DR自己的Router-ID),如果有多台路由器接入该MA网络,则使用多个字段描述 + +**Network LSA描述MA网络** + +image-20220210154737936 + +

二:区域间路由计算

+ +
1.大型网络中,单区域OSPF存在的问题
+ +image-20220210154929589 + +​ 一系列连续的OSPF路由器构成的网络称为OSPF域(Domain) + +​ OSPF要求网络内的路由器同步LSDB,实现对于网络的一致认知 + +​ 当网络规模越来越大时,LSDB将变得非常臃肿,设备基于该LSDB进行路由计算,其负担也极大地增加了,此外路由器的路由表规模也变大了,这些无疑都将加大路由器的性能损耗 + +​ 当网络拓扑发生变更时,这些变更需要被扩散到整个网络,并可能引发整网的路由重计算 + +​ 单区域的设计,使得OSPF无法部署路由汇总 + +
2.区域划分
+ +image-20220210155254340 + +image-20220210155308835 + +​ Router LSA和Network LSA只在区域内泛洪,因此通过区域划分在一定程度上降低网络设备的内存及CPU的消耗 + +**划分区域后,路由器可以分为两种角色:** + +​ 区域内部路由器(Internal Router):该类设备的所有接口都属于同一个OSPF区域。如R1、R4、R5 + +​ 区域边界路由器(Area Border Router):该类设备接口分别连接两个及两个以上的不同区域。如R2、R3 + +**区域间路由信息传递** + +​ OSPF区域间路由信息传递是通过ABR产生的Network Summary LSA(3类LSA)实现的 + +​ 以192.168.1.0/24路由信息为例: + +​ R2依据Area 1内所泛洪的Router LSA及Network LSA计算得出192.168.1.0/24路由(区域内路由),并将该路由通过Network Summary LSA通告到Area 0。R3根据该LSA可计算出到达192.168.1.0/24的区域间路由 + +​ R3重新生成一份Network Summary LSA通告到Area 2中,至此所有OSPF区域都能学习到去往192.168.1.0/24的路由 + +image-20220210155617909 + +**Network Summary LSA** + +​ Network Summary LSA(3类LSA)由ABR产生,用于向一个区域通告到达另一个区域的路由 + +image-20220210155729987 + +​ LS Type:取值3,代表Network Summary LSA + +​ Link State ID:路由的目的网络地址 + +​ Advertising Router:生成LSA的Router ID + +​ Network Mask:路由的网络掩码 + +​ metric:到目的地址的路由开销 + +**Network Summary LSA示例** + +image-20220210155829248 + +​ 此LSA是R2产生的,用于向Area0通告到达192.168.1.0/24的区域间路由 + +```SHELL +display ospf lsdb summary 192.168.1.0 + OSPF Process 1 with Router ID 10.0.2.2 + Area: 0.0.0.0 + Link State Database + + Type : Sum-Net + Ls id : 192.168.1.0 + Adv rtr : 10.0.2.2 + Ls age : 86 + Len : 28 + Options : E + seq# : 80000001 + chksum : 0x7c6d + Net mask : 255.255.255.0 + Tos0 metric: 1 + Priority : Low +``` + +**R1和R3的路由计算** + +image-20220210160004386 + +​ 通过区域内SPF的计算,R1到达R2的Cost值为1,R3到达R2的Cost值为2 + +​ R1和R3根据收到的Network Summary LSA进行路由计算 + +​ R1将到达R2和Cost值和Network Summary LSA所携带的Cost值相加,因此R1到达192.168.1.0/24的Cost值为2 + +​ R3将到达R2和Cost值和Network Summary LSA所携带的Cost值相加,因此R3到达192.168.1.0/24的Cost值为3 + +**R5的路由计算** + +image-20220210160047254 + +​ R3作为ABR,它通过Area 0内泛洪的Network Summary LSA计算出到达192.168.1.0/24的路由,然后重新向Area 2注入到达该网段的Network Summary LSA,其中包含自己到达该网段的Cost(值为3) + +​ R5在SPF中计算得知到达R3的Cost为1,因此R5到达192.168.1.0/24的Cost为4 + +**区域间路由计算结果验证** + +image-20220210160121031 + +**区域间路由的防环机制** + +image-20220210193759181 + +​ OSPF要求所有的非骨干区域必须与Area0直接相连,区域间路由需经由Area0中转 + +​ 区域间的路由传递不能发生在两个非骨干区域之间,这使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑 + +注意: + +​ OSPF要求ABR设备至少有一个接口属于骨干区域 + +image-20220210202627608 + +​ ABR不会将描述到达某个区域内网段路由的3类LSA再注入回该区域 + +**虚连接的作用及配置** + +​ OSPF要求骨干区域必须是连续的,但是并不要求物理上连续,可以使用虚连接使骨干区域在逻辑上连续 + +​ 虚连接可以在任意两个ABR上建立,但是要求这两个ABR都有端口连接到一个相同的非骨干区域 + +image-20220210202847887 + +```shell +[R2-ospf-1]ospf 1 +[R2-ospf-1]area 1 +[R2-ospf-1-area-0.0.0.1]vlink-peer 10.0.3.3 + +[R3-ospf-1]ospf 1 +[R3-ospf-1]area 1 +[R3-ospf-1-area-0.0.0.1]vlink-peer 10.0.2.2 +``` + +

三:外部路由计算

+ +
1.OSPF外部路由引入背景
+ +网络中存在部分链路未开启OSPF协议如: + +​ 路由器连接外部网络使用静态路由或者BGP协议 + +​ 服务器直连的链路未开启OSPF协议 + +image-20220210203338255 + +
2.外部路由引入的基本概念
+ +​ ASBR(AS Boundary Router):自治系统边界路由器。只要一台OSPF设备引入了外部路由,它就成为了ASBR + +​ ASBR将外部路由信息以AS-external LSA(5类LSA)的形式在OSPF网络内泛洪 + +image-20220210203253520 + +```shell +在OSPF进程下,通过如下命令引入外部路由。设备支持引入BGP、ISIS、OSPF、直连以及静态路由。 +import-route { limit limit-number | { bgp [ permit-ibgp ] | direct | unr | rip [ process-id-rip ] | static | isis [ process-id-isis ] | ospf [ process-id-ospf ] } [ cost cost | type type | tag tag | route-policy route-policy-name ] * } +``` + +**AS-external LSA详解** + +​ AS-external LSA(5类LSA):由ASBR产生,描述到达AS外部的路由,该LSA会被通告到所有的区域(除了Stub区域和NSSA区域) + +image-20220210203353681 + +​ LS Type:取值5,代表AS-external-LSA + +​ Link State ID:外部路由的目的网络地址 + +​ Advertising Router:生成该LSA的Router ID + +​ Network Mask:网络掩码 + +​ E :该外部路由所使用的度量值类型 + +​ 0:度量值类型为Metric-Type-1 + +​ 1:度量值类型为Metric-Type-2 + +​ metric:到目的网络的路由开销 + +​ Forwarding Address(FA):到所通告的目的地址的报文将被转发到这个地址 + +**AS-external LSA示例** + +image-20220210203523142 + +​ R1与服务器直连的网段为192.168.1.0/24,在R1上将直连路由引入OSPF,此时R1会向OSPF注入用于描述192.168.1.0/24路由的AS-external-LSA,该LSA将在整个OSPF域内泛洪 + +```shell +display ospf lsdb ase self-originate + OSPF Process 1 with Router ID 10.0.1.1 + Link State Database + Type : External + Ls id : 192.168.1.0 + Adv rtr : 10.0.1.1 + Ls age : 1340 + Len : 36 + Options : E + seq# : 80000004 + chksum : 0xb5cc + Net mask : 255.255.255.0 + TOS 0 Metric: 1 + E type : 2 + Forwarding Address : 0.0.0.0 + Tag : 1 + Priority : Low +``` + +**ASBR-Summary LSA** + +​ ASBR-Summary LSA(4类LSA):由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区 + +image-20220210203711581 + +image-20220210203730911 + +​ LS Type:取值4,代表ASBR-Summary LSA + +​ Link State ID :ASBR的Router ID + +​ Advertising Router:生成LSA的Router ID + +​ Network Mask:仅保留,无意义 + +​ metric:到目的地址的路由开销 + +**ASBR-Summary LSA示例** + +image-20220210203833449 + +​ 以R3向Area 2通告的ASBR-Summary LSA为例 + +```shell +display ospf lsdb asbr self-originate +Area: 0.0.0.2 + Link State Database + Type : Sum-Asbr + Ls id : 10.0.1.1 //ASBR的Router ID + + Adv rtr : 10.0.3.3 + Ls age : 15 + Len : 28 + Options : E + seq# : 80000005 + chksum : 0xf456 + Tos 0 metric: 1 //R3到达ASBR的开销 +``` + +
3.区分OSPF外部路由的2种度量值类型
+ +**Metric-Type-1** + +​ 当外部路由的开销与自治系统内部的路由开销相当,并且和OSPF自身路由的开销具有可比性时,可以认为这类路由的可信程度较高,将其配置成Metric-Type-1 + +​ Metric-Type-1外部路由的开销为AS内部开销(路由器到ASBR的开销)与AS外部开销之和 + +**Metric-Type-2** + +​ 当ASBR到AS之外的开销远远大于在AS之内到达ASBR的开销时,可以认为这类路由的可信程度较低,将其配置成Metric-Type-2 + +​ Metric-Type-2外部路由的开销等于AS外部开销 + +| **Type** | **描述** | **开销计算** | +| ---------------------- | -------------------------------------- | --------------------- | +| Metric-Type-1 | 可信程度高 | AS内部开销+AS外部开销 | +| Metric-Type-2 (缺省) | 可信程度低,AS外部开销远大于AS内部开销 | AS外部开销 | + +image-20220210204127873 + +
4.OSPF多区域项目实战
+ +image-20220210213643343 + +

第五节:OSPF特殊区域及其他特性

+ +

一:Stub区域和Totally Stub区域

+ +
1.网络规模变大引发的问题
+ +​ OSPF路由器计算区域内、区域间、外部路由都需要依靠网络中的LSA,当网络规模变大时,设备的LSDB规模也变大,设备的路由计算变得更加吃力,造成设备性能浪费 + +image-20220210215448897 + +image-20220210220222493 + +
2.传输区域和末端区域
+ +image-20220210220303280 + +​ 传输区域(Transit Area):除了承载本区域发起的流量和访问本区域的流量外,还承载了源IP和目的IP都不属于本区域的流量,即“穿越型流量”,如本例中的Area 0 + +​ 末端区域(Stub Area):只承载本区域发起的流量和访问本区域的流量,如本例中的Area 1和Area 2 + +
3.Stub区域
+ +​ Stub区域的ABR不向Stub区域内传播它接收到的AS外部路由,Stub区域中路由器的LSDB、路由表规模都会大大减小 + +​ 为保证Stub区域能够到达AS外部,Stub区域的ABR将生成一条缺省路由(使用3类LSA描述) + +**配置Stub区域时需要注意下列几点:** + +​ 骨干区域不能被配置为Stub区域 + +​ Stub区域中的所有路由器都必须将该区域配置为Stub + +​ Stub区域内不能引入也不接收AS外部路由 + +​ 虚连接不能穿越Stub区域 + +image-20220210220451525 + +**Stub区域的路由表及3类LSA** + +```shell +[R3]ospf 1 router-id 3.3.3.3 +[R3-ospf-1]area 2 +[R3-ospf-1-area-0.0.0.2]stub +R5相同 +``` + +​ R1作为ASBR引入多个外部网段,如果Area 2是普通区域,则R3将向该区域注入5类和4类LSA + +**当把Area 2配置为Stub区域后:** + +​ R3不会将5类LSA和4类LSA注入Area 2 + +​ R3向Area 2发送用于描述缺省路由的3类LSA,Area 2内的路由器虽然不知道到达AS外部的具体路由,但是可以通过该默认路由到达AS外部 + +```shell +display ospf lsdb + OSPF Process 1 with Router ID 10.0.5.5 + Link State Database + Area: 0.0.0.2 + Type LinkState ID AdvRouter Metric + Sum-Net 0.0.0.0 10.0.3.3 1 + Sum-Net 10.0.13.0 10.0.3.3 1 + Sum-Net 10.0.24.0 10.0.3.3 3 + Sum-Net 10.0.12.0 10.0.3.3 2 +不存在4、5类LSA,但描述区域间路由的3类LSA仍然存在 +``` + +```shell +display ospf routing + + OSPF Process 1 with Router ID 10.0.5.5 + Routing Tables + Routing for Network + Destination Cost Type NextHop AdvRouter Area + 10.0.35.0/24 1 Transit 10.0.35.5 10.0.5.5 0.0.0.2 + 0.0.0.0/0 2 Inter-area 10.0.35.3 10.0.3.3 0.0.0.2 + 10.0.12.0/24 3 Inter-area 10.0.35.3 10.0.3.3 0.0.0.2 + 10.0.13.0/24 2 Inter-area 10.0.35.3 10.0.3.3 0.0.0.2 + 10.0.24.0/24 4 Inter-area 10.0.35.3 10.0.3.3 0.0.0.2 +``` + +
4.Totally Stub区域
+ +​ Totally Stub区域既不允许AS外部路由在本区域内传播,也不允许区域间路由在本区域内传播 + +​ Totally Stub区域内的路由器通过本区域ABR下发的缺省路由(使用3类LSA描述)到达其他区域,以及AS外部 + +**配置Totally Stub区域时需要注意:** + +​ 与Stub区域配置的区别在于,在ABR上需要追加no-summary关键字 + +image-20220210221609140 + +​ Totally Stub区域访问其他区域及AS外部是通过默认路由实现的 + +​ AS外部、其他OSPF区域的拓扑及路由变化不会导致Totally Stub区域内的路由器进行路由重计算,减少了设备性能浪费 + +image-20220210221723631 + +```shell +[R3-ospf-1-area-0.0.0.2]stub no-summary +[R5-ospf-1-area-0.0.0.2]stub +``` + +```shell +display ospf lsdb + OSPF Process 1 with Router ID 10.0.5.5 + Link State Database + Area: 0.0.0.2 + Type LinkState ID AdvRouter Metric + Sum-Net 0.0.0.0 10.0.3.3 1 +``` + +**当Area 2配置为Totally Stub区域后:** + +​ R3不会将5类LSA和4类LSA注入Area 2 + +​ R3不会将3类LSA注入Area 2,但是会向该区域注入一条使用3类LSA描述的缺省路由 + +​ R5通过缺省路由到达AS外部网络和其他OSPF区域 + +**注意:** + +​ Stub区域、Totally Stub区域解决了末端区域维护过大LSDB带来的问题,但对于某些特定场景,它们并不是最佳解决方案 + +

二:NSSA区域和Totally NSSA区域

+ +
1.Stub区域与Totally Stub区域存在的问题
+ +​ OSPF规定Stub区域是不能引入外部路由的,这样可以避免大量外部路由引入造成设备资源消耗 + +​ 对于既需要引入外部路由又要避免外部路由带来的资源消耗的场景,Stub和Totally Stub区域就不能满足需求了 + +image-20220210222703709 + +
2.NSSA区域与Totally NSSA区域
+ +​ NSSA区域能够引入外部路由,同时又不会学习来自OSPF网络其它区域引入的外部路由 + +​ Totally NSSA与NSSA区域的配置区别在于前者在ABR上需要追加no-summary关键字 + +image-20220210222816965 + +**NSSA区域能够引入外部路由,同时又不会学习来自OSPF网络其它区域的外部路由** + +​ 7类LSA是为了支持NSSA区域而新增的一种LSA类型,用于描述NSSA区域引入的外部路由信息。NSSA区域的ASBR将外部路由引入该区域后,使用7类LSA描述这些路由 + +​ 7类LSA的扩散范围仅限于始发NSSA区域,7类LSA不会被注入到普通区域 + +​ NSSA区域的ABR会将7类LSA转化为5类LSA,并将该LSA注入到骨干区域,从而在整个OSPF域内泛洪 + +​ NSSA区域的ABR会阻挡其他区域引入的外部路由引入本区域,即NSSA区域内不会存在4类及5类LSA,为了让NSSA区域内的路由器能够通过骨干区域到达AS外部,NSSA区域的ABR会自动向该区域注入一条缺省路由,该路由采用7类LSA描述 + +
3.NSSA区域与Totally NSSA区域的LSDB
+ +![image-20220210223227300](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210223227300.png) + +![image-20220210223242584](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210223242584.png) + +```shell +[R3-ospf-1-area-0.0.0.2]nssa +[R5-ospf-1-area-0.0.0.2]nssa +[R5-ospf-1]import-route direct +``` + +​ 场景1(将Area 2配置为NSSA区域):当R5将外部路由192.168.3.0/24引入NSSA区域时,R5作为ASBR生成7类LSA在Area 2内泛洪;R3生成使用7类LSA描述的缺省路由注入Area 2,Area 2内的路由器依然会收到R3注入的3类LSA,并计算出到达其他区域的区域间路由 + +​ 场景2(将Area2配置为Totally NSSA区域):Totally NSSA区域和NSSA区域类似,只是Totally NSSA区域的ABR会阻挡3类LSA进入该区域,因此在场景2中,R3不会将区域间路由注入Area 2,故而在R5的LSDB中,仅会看到一条描述缺省路由的3类LSA + +
4.OSPF LSA回顾
+ +| **类型** | **名称** | **描述** | +| -------- | ---------------------------------- | ------------------------------------------------------------ | +| 1 | 路由器LSA(Router LSA) | 每个设备都会产生,描述了设备的链路状态和开销,该LSA只能在接口所属的区域内泛洪 | +| 2 | 网络LSA(Network LSA) | 由DR产生,描述该DR所接入的MA网络中所有与之形成邻接关系的路由器,以及DR自己。该LSA只能在接口所属区域内泛洪 | +| 3 | 网络汇总LSA(Network Summary LSA) | 由ABR产生,描述区域内某个网段的路由,该类LSA主要用于区域间路由的传递 | +| 4 | ASBR汇总LSA(ASBR Summary LSA) | 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。 | +| 5 | AS外部LSA(AS External LSA) | 由ASBR产生,用于描述到达OSPF域外的路由 | +| 7 | 非完全末梢区域LSA(NSSA LSA) | 由ASBR产生,用于描述到达OSPF域外的路由。NSSA LSA与AS外部LSA功能类似,但是泛洪范围不同。NSSA LSA只能在始发的NSSA内泛洪,并且不能直接进入Area0。NSSA的ABR会将7类LSA转换成5类LSA注入到Area0 | + +​ 特殊区域的使用减小了设备的LSDB规模,从而减少设备性能浪费,且一定程度上也缩小了网络故障的影响范围 + +
5.路由器对LSA的处理原则
+ +​ 如果收到的LSA本地没有,则更新LSDB并泛洪该LSA + +​ 如果本地LSDB已存在该LSA,但是收到的更新,则更新LSDB并泛洪该LSA + +​ 如果收到的LSA和LSDB中相同,则忽略,并终止泛洪 + +​ 如果收到的LSA损坏,例如Checksum错误,则不接收该LSA + +image-20220210224851053 + +

三:区域间路由汇总和外部路由汇总

+ +
1.在ABR执行路由汇总
+ +​ 路由汇总又被称为路由聚合,即是将一组前缀相同的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由 + +**OSPF路由汇总的类型:** + +​ 在ABR(**区域边界路由器**)执行路由汇总:对区域间的路由执行路由汇总 + +​ 在ASBR(**自治系统边界路由器**)执行路由汇总:对引入的外部路由执行路由汇总 + +image-20220210225017868 + +**注意:** + +区域边界路由器ABR(Area Border Routers): + +​ 该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域(area 0) + +​ ABR用来连接骨干区域和非骨干区域,可以是实际连接,也可以是虚连接 + +骨干路由器(Backbong Routers) + +​ 该类路由器属于骨干区域(area 0)。只维护骨干区域的LSDB + +​ OSPF中,所有非骨干区域之间的信息都要通过骨干区域进行中转 + +​ 因此,所有的ABR和位于Area0的内部路由器都是骨干路由器 + +自治系统边界路由器ASBR(AS Boundary Routers) + +​ 与其他AS交换路由信息的路由器称为ASBR。 使用了多种路由协议 + +​ 只要一台OSPF路由器引入了外部路由的信息,他就称为了ASBR + +​ 它有可能是ABR,区域路由器,不一定位于AS边界 + +**汇总前:** + +``` +display ospf lsdb + area 0 +Type LinkState ID AdvRouter +Sum-Net 172.16.0.0 10.0.2.2 +Sum-Net 172.16.1.0 10.0.2.2 +Sum-Net 172.16.2.0 10.0.2.2 +Sum-Net 172.16.3.0 10.0.2.2 +Sum-Net 172.16.4.0 10.0.2.2 +Sum-Net 172.16.5.0 10.0.2.2 +Sum-Net 172.16.6.0 +``` + +**汇总后:** + +``` +display ospf lsdb + area 0 +Type LinkState ID AdvRouter +Sum-Net 172.16.0.0 10.0.2.2 +``` + +**注意:** + +​ 执行路由汇总后,ABR R2只向Area 0通告汇总路由172.16.0.0/21 + +​ 明细路由对应的网段如果产生翻动(Up/Down),该拓扑变更造成的影响将被限制在Area 1内 + +
2.在ASBR执行路由汇总
+ +​ 在ASBR配置路由汇总后,ASBR将对自己所引入的外部路由进行汇总 + +​ NSSA区域的ASBR也可以对引入NSSA区域的外部路由进行汇总 + +​ 在NSSA区域中,ABR执行7类LSA转化成5类LSA动作,此时它也是ASBR。若配置路由汇总,则对由7类LSA转化成的5类LSA进行汇总 + +image-20220210231428727 + +

四:OSPF协议特性

+ +
1.Silent-Interface
+ +​ 通过Silent-Interface的配置,增强OSPF的组网适应能力,减少系统资源的消耗 + +**Silent-Interface有以下特性:** + +​ Silent-Interface不会接收和发送OSPF报文 + +​ Silent-Interface的直连路由仍可以发布出去 + +image-20220210231605803 + +```shell +display ospf interface GigabitEthernet 0/0/1 + + OSPF Process 1 with Router ID 10.0.1.1 +Interface: 10.0.13.1 (GigabitEthernet0/0/1) + Cost: 1 State: Waiting Type: Broadcast MTU: 1500 + Priority: 1 + Designated Router: 0.0.0.0 + Backup Designated Router: 0.0.0.0 + Timers: Hello 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1 + Silent interface, No hellos +``` + +**注意:** + +​ R1的GE0/0/1接口在OSPF network命令的网段范围内 + +​ 到达该接口的路由将被通告到OSPF,使得其他设备能够访问Server + +​ 由于该接口上未连接任何其他OSPF路由器,因此管理员将该接口配置为Silent-Interface,该接口将不再收发Hello报文,从而避免了对Server的性能降低 + +
2.OSPF报文认证
+ +​ OSPF支持报文认证功能,只有通过认证的OSPF报文才能被接收 + +**路由器支持两种OSPF报文认证方式,当两种认证方式都存在时,优先使用接口认证方式:** + +​ 区域认证方式:一个OSPF区域中所有的路由器在该区域下的认证模式和口令必须一致 + +​ 接口认证方式:相邻路由器直连接口下的认证模式和口令必须一致 + +image-20220210231750154 + +```shell +[R2]interface GigabitEthernet 0/0/1 +[R2-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher Huawei +``` + +```shell +[R2]ospf +[R2-ospf-1]area 0 +[R2-ospf-1-area-0.0.0.0]authentication-mode simple cipher Huawei +``` + +**区域视图下,配置OSPF区域的认证模式** + +​ 执行命令authentication-mode simple [ plain plain-text | [ cipher ] cipher-text ],配置OSPF区域的认证模式 + +​ plain表示明文口令类型 + +​ cipher表示密文口令类型。对于MD5/HMAC-MD5认证模式,当此参数缺省时,默认为cipher类型 + +​ 配置接口认证方式。 + +​ 执行命令ospf authentication-mode simple [ plain plain-text | [ cipher ] cipher-text ],配置OSPF接口的认证模式 +