网络基础之(2)初级网络工程师
Author:Once Day Date: 2024年7月29日
漫漫长路,有人对你笑过嘛…
全系列文档可参考专栏:通信网络技术_Once-Day的博客-CSDN博客。
来自锐捷数通技术基础资料,百度云盘链接: 下载链接,提取码: pn3t。
参考文档:
- 网络工程初学者的学习方法及成长之路(红茶三杯)-CSDN博客
- Document Search (ietf.org)
- IP知识百科 - 华为 - HUAWEI
- 学习中心主页 | Cloudflare (cloudflare-cn.com)
- 文档中心-新华三集团-H3C
- 网络、云和网络安全解决方案 - Cisco
- CN Home (cisco.com)
- Binary Game (cisco.com)
- Cisco Packet Tracer - Networking Simulation Tool (netacad.com)
文章目录
- 网络基础之(2)初级网络工程师
- 1. OSI模型
- 1.1 什么是网络协议
- 1.2 OSI模型是什么
- 2. TCP/IP模型
- 2.1 TCP(Transmission Control Protocol传输控制协议)
- 2.2 MAC地址
- 2.3 IP地址
- 2.4 网络连通性检测
- 3. VLAN报文
- 4. ARP
- 4.1 免费arp
- 4.2 代理ARP
- 5. 管理信息
- 5.1 CLI命令
- 6. 接口
- 6.1 接口分类
- 6.2 接口编号
- 6.3 接口属性
- 7. DHCP
- 8. 二三层转发
- 9. 路由
- 9.1 路由表项
- 9.2 静态路由
- 9.3 聚合路由环路
- 9.4 RIP路由
- 9.5 OSPF路由
- 9.6 OSPF邻居状态建立
- 9.7 IS-IS路由
- 10. VRF
- 11. ACL策略
- 12. VSU
- 12.1 VSU转发原理
- 13. MPLS
- 13.1 网络结构简介
- 13.2 基础概念
- 13.3 报文转发
- 13.4 典型应用
- 14. VRRP
- 14.1 VRRP工作模式
- 15. SNMP
- 15.1 MIB
- 16. 策略路由
- 16.1 路由策略
- 17 跨设备链路聚合(M-LAG)
- 18. SRv6
1. OSI模型
1.1 什么是网络协议
网络协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
网络协议包含的要素:
- 语义:解释控制信息每个部分的意义,规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。
- 语法:用户数据与控制信息的结构与格式,以及数据出现的顺序。
- 时序:事件发生顺序的详细说明。
为什么需要对协议分层?
降低单个协议复杂程度,利于实现层间独立,易于标准化保持协议栈的灵活性。
层间关系?
每一层都使用了下一层提供的服务,每一层都为上一层提供服务。
1.2 OSI模型是什么
OSI(Open Systems Interconnection,开放式系统互联)模型由国际标准化组织提出,是一种试图使各种计算机在世界范围内互连为网络的标准框架。
提供给开发者一个必须的、通用的概念以便开发完善、可以用来解释连接不同系统的框架。
2. TCP/IP模型
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。
1973年,卡恩与瑟夫开发出了TCP/IP协议中最核心的两个协议:TCP协议和IP协议。1983年,TCP/IP协议正式替代NCP,从此以后TCP/IP成为大部分因特网共同遵守的一种网络规则。1984年,TCP/IP协议得到美国国防部的肯定,成为多数计算机共同遵守的一个标准。
2.1 TCP(Transmission Control Protocol传输控制协议)
为应用层协议提供端到端的传输服务,面向连接的、可靠的、有序的、流量控制的。
基于TCP的应用在传输数据之前必须先由TCP建立连接,在传输过程中由TCP解决可靠性、有序性,进行流量控制,传输结束后由TCP拆除连接。
2.2 MAC地址
MAC地址(Media Access Control Address)也可称为物理地址、硬件地址,用来定义网络设备的位置。MAC地址用于在网络中唯一标识一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。无论是局域网,还是广域网中的计算机之间进行通信时,最终都表现为将数据包从某种形式的链路上的一个初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点,在数据链路层上,数据帧通常都依赖于MAC地址来进行数据交换。
个人PC的MAC地址查看方式:输入命令ipconfig/all。
IEEE 802标准中使用MAC地址作为识别以太网中网络设备硬件地址的唯一标识符,MAC地址由48位二进制数组成,通常表示为12个16进制数前24位是组织唯一标识符OUI(厂商识别码),后24位是节点标识符(厂商分配的序列号),OUI 相同的所有MAC 地址的最后24位都必须是唯一的值。
MAC地址共分为3种,分别为单播MAC地址、组播MAC地址、广播MAC地址,这3种MAC地址的定义分别如下:
- 单播地址:指第一个字节的最低位是 0 的 MAC 地址,例如:00-1E-10-DD-DD-02。
- 组播地址:指第一个字节的最低位是 1 的 MAC 地址,例如:01-80-C2-00-00-01。
- 广播地址:指每个比特都是 1 的 MAC 地址,FF-FF-FF-FF-FF-FF。广播 MAC 地址是组播 MAC 地址的一个特例。
MAC地址表的概念MAC Filter Database,通常也称之为MAC地址表,用于为报文向哪个端口转发或过滤做决策。地址表中记录了MAC地址与接口及其所属VLAN的对应关系。MAC地址表中包括了查找关键字涉及的VLAN ID和MAC地址,端口,类型,老化时间,是否为过滤地址等属性。
2.3 IP地址
IP地址是TCP/IP网络中的主机(或称为节点)的唯一地址。IP地址是网络层的逻辑地址。
IP地址是一组32位长的二进制数字,用点分十进制表示时,分为四组,每组8位,取值范围为0~255,组之间用“.”号隔开,称为“点分十进制”。IP地址由网络号和主机号组成,网络号用于标识Internet上的一个子网,而主机号标识的是子网中的某台主机。
获取IP地址:手动配置静态IP地址,利用DHCP协议获取,借用其他接口的IP地址。
设备支持一个接口配置多个地址,其中一个为主IP地址,其余全部为次IP地址(Secondary IP);理论上无数量限制,但是次IP地址必须与主IP以及其他次IP分属不同网络;一般是用于:网络没有足够多主机地址,桥接网络,通过次IP地址将隔离的子网连接起来等情况。
2.4 网络连通性检测
网络连通性检测工具可以用于检查网络是否能够连通,以及准确找出网络故障的原因。
常用的网络通信检测工具:
- 包括Ping(Packet Internet Groper,因特网包探索器)和Traceroute(路由侦测)。在网络设备上,这两个工具所对应的命令为ping和traceroute。
- Ping工具主要用于检测设备间的网络是否连通以及网络的时延,时延值越大,则表示网络速度越慢。
- Traceroute工具则可以帮助用户了解网络的物理与逻辑连接的拓扑情况以及数据传输的效率。
Ping工具是利用ICMP Request和Reply数据包的传送时延来实现的,测试源、目标主机间的IP连通性。
Traceroute工具是利用ICMP及IP报文头部的TTL(Time To Live,生存时间)字段来实现的。Windows下是tracert,发送ICMP echo-request,目标主机回应ICMP echo-reply。UNIX下与之对应的是traceroute,发送UDP报文,目标主机回应端口不可达。
3. VLAN报文
VLAN(Virtual Local Area Network,虚拟局域网)是一种局域网技术。
LAN( Local Area Network)局域网,一种私有网络,顾名思义就是局部地区形成的一个区域网络,一般在一座建筑物内或建筑物附近,比如学生宿舍、家庭、办公室或工厂。
若一台交换设备所有接口属于同一个局域网,则所有接口也处在同一个广播域。当交换设备收到一个目的地址未知的帧时,会在广播域内向源接口以外的所有接口发送此帧,等待目的地址匹配的接口答复,通过学习应答报文的源地址学习到新的MAC地址。
当网络规模变大的时候,广播报文会越来越多,从而浪费带宽。其次由于报文在局域网内广播,广播域内的每台终端都可以收到整个局域网内的报文,通过报文捕获可以截取这些报文,获得报文内容信息,影响信息安全。
路由设备可以解决以上两个问题。因为路由设备基于三层IP地址选路进行通信,不同网络位于不同广播域,可以抑制广播报文的转发。但是路由设备通过CPU实现高转发性能的成本较高,一般只作为局域网到广域网的出口。
VLAN是一个成本更低的解决方案,它通过将物理局域网划分成多个逻辑局域网的方式解决了上述问题。
VLAN是在物理网络上划分出来的逻辑网络。每个VLAN具备独立广播域,不同VLAN之间互相隔离,需要通过路由设备实现跨VLAN通信。 和VLAN相关的IEEE标准为IEEE802.1Q。
为了达到将一个物理网络划分成为多个逻辑网络的要求,要对接口接收到的数据报文指定VLAN ID(VID),此功能即为报文的VLAN分配。
基于接口分配VLAN的方式是VLAN分配最基本的方式。管理员给交换设备的每个接口配置不同的PVID(Port Default VLAN ID,接口缺省VLAN ID,也叫Native VLAN),就将接口分配到了不同的VLAN中。整机支持VLAN ID为1~4094,如果不划分VLAN,所有接口默认在VLAN1。
为了实现VLAN间的三层通信,借助路由设备子接口的概念,在三层交换设备中引入了虚拟接口的概念,此接口称为SVI接口(Switch Virtual Interface,交换设备虚拟接口)。在三层交换设备上,可以为每个VLAN创建一个虚拟接口并配置SVI接口的IP地址,使SVI接口作为VLAN网关,实现VLAN间三层通信,因此SVI接口也可称为VLAN接口。
4. ARP
二层网络中,使用MAC地址进行传输,MAC地址做为数据链路层的设备标识符。
三层网络中,使用IP地址进行传输,IP地址做为网络层的设备标识符。
ARP(Address Resolution Protocol,地址解析协议)是用来将IP地址解析为MAC地址的协议,以IP地址作为输入,ARP能够获取其关联的MAC地址。ARP协议将IP地址与MAC地址对应关系保存在设备的ARP缓存表中。
每台主机上都维护着一个ARP表,表中存放着最近获得的IP地址和MAC地址之间的映射关系,这种映射关系称为ARP表项。ARP表项的存在,使得主机不需要每次向外发送数据报文前都要先发送ARP请求报文,可以会大幅减少网络的通信量。
- 动态ARP表项由ARP协议通过ARP报文自动生成和维护,会老化,也会被新的动态ARP表项覆盖。接口上的ARP动态学习功能默认开启。
- 静态ARP表项由网络管理员通过手工配置生成和维护,不会老化,静态 ARP 表项的优先级高于动态 ARP 表项,可以将相应的动态 ARP 表项覆盖。
4.1 免费arp
免费ARP报文是一种特殊的ARP报文,该报文的发送端IP地址和目标IP地址都是本机IP地址。设备收到免费ARP请求报文后的处理方式:
- 收到目标IP为本机的报文:回复免费ARP响应宣告冲突,本机表项不变。
- 收到目标IP不为本机的报文,并且发送端IP不在ARP缓存表中:创建ARP表项。
- 收到目标IP不为本机的报文,发送端IP在表中,且MAC地址相同:更新ARP表项。
- 收到目标IP不为本机的报文,发送端IP在表中,但MAC地址不同:不会更新表项,且本设备将代理冲突应答。
免费ARP的作用:对外宣告本机的IP与MAC地址。IP地址冲突检测。更新其他设备中与本机相关的ARP表项。
一般在接口充当下联设备网关时需要开启,定时更新下联设备的网关的MAC地址,防止他人冒充网关。
4.2 代理ARP
设备的代理ARP功能可以帮助没有路由信息的主机,获得其它子网设备的 MAC地址。当开启代理功能的设备接收到一个ARP请求时,若满足以下条件,则会发送ARP响应,响应的MAC地址为代理设备自身的以太网MAC地址 。
- ARP请求的发送者IP地址与目标IP地址不属于同一网段。
- 代理设备知道所请求IP地址的路由。
- 收到该ARP请求的接口与路由表下一跳不是同一个接口 。
ARP作为一个基本协议,需要掌握其工作原理、常用类型以及工作表项的查看方式。基本的动态ARP功能为默认开启,通常无需配置;进阶的ARP功能还存在多种类型,默认支持情况再设备上各不相同,可根据实际场景应用。
5. 管理信息
为减少现场维护带来的不便,现在的IT设备已经普遍使用远程管理,甚至初始化部署也能够在远端进行。远程管理需要考虑到网络管理员多样的操作需求、设备管理的安全性等。基础管理的一系列功能解决安全、维护与监控问题。
- 安全:提供权限,加密认证和访问控制方式保障设备安全性。
- 维护:提供灵活的配置管理方式,如备份、回滚、批量执行等。
- 监控:提供各种软件和硬件监控功能,包括内存、CPU、总线、会话等信息。
5.1 CLI命令
命令行界面(Command Line Interface,CLI),用户与网络设备进行文本指令交互的窗口,用户可以在命令行界面输入命令,实现对网络设备的配置和管理。
系统配置信息主要包括以下几个部分:
- 正在运行的配置信息Running-config,系统上所有组件模块当前运行的配置总和。
- 启动配置信息Startup-config,系统存储在NVRAM(Non-Volatile Random Access Memory,非易失性随机存取存储器)上的配置。
6. 接口
接口是网络设备能够实现数据交换功能的重要部件。接口是设备与网络中的其它设备交换数据并相互作用的部件。
设备从三层以太网接口向外发送一个报文。
- IP报文需要封装入以太帧。
- 封装后的以太帧需要转换成比特流。
- 实体接口对外发送比特流(电信号或者光信号)。
设备将收到的报文转发至某个环回口。
- 通过内部转发在网络层直接将报文转发至环回口。
6.1 接口分类
常见的接口分类方式:
- 物理接口:设备上的实体硬件接口。电口:RJ45、POE,光口:SFP/SFP+、QSFP+。
- 逻辑接口:没有实体硬件接口,但可以与物理接口关联,也可以独立于物理接口存在。聚合接口、SVI接口、子接口、NULL接口和隧道接口等。
- 管理接口:管理接口主要为用户提供配置管理支持,也就是用户通过此类接口可以登录到设备,并进行配置和管理操作。
聚合接口:
- 将多个物理接口绑定形成的逻辑接口。
- 和物理接口关联(二、三层)。
- 用于扩展链路带宽,提供更高的连接可靠性。
- 静态聚合接口:手工指定聚合的接口。
- LACP(动态)接口:通过设备之间的LACPDU报文交互,动态决定加入聚合组的接口。
SVI接口:三层交换设备上,可以为每个VLAN创建一个虚拟接口并配置SVI接口的IP地址,使SVI接口作为VLAN网关,实现VLAN间三层通信。
子接口:从主接口上虚拟出的逻辑接口,和物理接口关联(二、三层)。二层子接口可用于封装特定协议报文,三层子接口可以用于在接口上实现VLAN间路由。
环回口:
- 允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。
- 创建后一直处于UP状态。
- 不关联物理接口。
- 用来建立路由邻居,作为Router-ID,虚拟隧道连接,网络连通性测试。
NULL接口:回收站,到达此接口的报文都会被丢弃,不关联物理接口,通常用于路由过滤。
隧道接口:隧道两端的设备利用Tunnel接口发送报文、识别并处理来自隧道的报文,不关联物理接口,可用于实现IPv6 Over IPv4,隧道技术相关的协议或功能需要用到隧道接口,如IPSec隧道。
管理接口:串口(Console口)和管理口(Mgmt口),用于远程管理设备的物理接口,与使用串口登录设备的管理方式类似。
6.2 接口编号
物理接口:设备号(如果有的话) /插槽号/子卡号(如果有的话)/接口编号。
- VSU设备1上插槽1的千兆以太网口4:GigabitEthernet 1/1/4。
- 单机盒式设备上的千兆以太网口1: GigabitEthernet 0/1。
逻辑接口:
- 聚合接口:编号的范围为1~设备支持的聚合接口个数。
- 环回口:设备支持的聚合接口个数。 0~设备支持的环回口个数。隧道类似。
- SVI接口:接口编号为接口对应的VLAN ID。
- 子接口:在对应的主接口编号后拓展子接口号,且子接口编号与主接口编号之间以“.”作为分隔符。子接口编号范围为1至设备支持的子接口配置范围。
6.3 接口属性
以太网接口常用属性:
- 状态:Up或者Down,接口是否上电、协议协商是否通过。
- MAC地址。
- 交换和路由接口。
- IP地址:包括IPv4和IPv6地址。
- MTU:即最大传输单元(Maximum Transmission Unit)。
- 带宽:接口的运行速度。
7. DHCP
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、网关地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP采用Client/Server架构,为终端设备提供TCP/IP参数(IP地址、掩码、网关、DNS等)的自动配置。采用UDP协议进行封装。 Client使用UDP端口号68,Server使用UDP端口号67。DHCP报文格式可以向下兼容BootP报文。
DHCP Client,即用户终端设备,可以是手机、电脑、打印机等需要接入网络的终端设备。DHCP Server,为终端分配网络参数,管理地址池。
8. 二三层转发
二层交换机根据MAC地址,选择性地将帧从接收端口转发到连接目的节点的端口。
- 学习记录:记录源MAC地址和接收端口的对应关系,构建MAC地址表。
- 查表转发:交换机收到一个数据帧后,读取该数据帧的目的MAC,并查看MAC地址表。
- 转发:MAC地址表中存在该MAC地址的记录,则按照其对应的端口进行转发。
- 泛洪:MAC地址表中不存在该MAC地址的记录,则将该数据帧从除了接收到这个数据帧的端口外的其余所有端口发送出去。
- 丢弃:如果数据帧的目的MAC命中接收接口记录的MAC地址,则丢弃该帧。
在我们的网络中,存在许多不同的IP网段,数据在不同网段之间交互是需要借助三层设备的。这些设备具有路由能力,帮助数据跨越不同网段进行转发。路由是数据通信网络中的基本要素。路由信息是指导报文转发的路径信息,路由过程就是报文三层转发的过程。
PC的网卡在进行发送数据的时候,网络层将检查目的IP与本网卡的IP地址是否处于一个网段。
- 如果属于一个网段,则直接用ARP解析目的IP的MAC地址。
- 如果不属于一个网段,则用ARP解析网关的MAC地址(PC未配置路由时)。
二层交换网络内,不同网段的主机之间无法直接通信(因为不同网段的主机位于不同VLAN,VLAN之间互相隔离,故无法通过MAC地址表直接通信)。
9. 路由
从一个接口上收到数据包,根据数据包的目的IP地址进行定向和转发的过程。路由器依据路由表选择下一跳地址/出接口并转发数据,实现跨IP网段通信。
路由的下一跳地址由路由表决定,PC客户端的默认下一跳地址通常称为“网关”。
直连路由:通过给活动接口配置IP形成直连路由,直连路由表示路由器所直接连接的网络。
静态路由:管理员手工配置的路由信息,无法感知网络拓扑变化,需人为调整,适用于小型简单网络。
动态路由:路由器之间使用某种动态路由协议,根据互相传递信息生成路由信息。
只有最佳路径才会被添加进路由表中,形成路由条目:
- 不同目标网络,放入路由表,网络地址不同(包括前缀长度)。
- 管理距离最低的路径,放入路由表,路由类型。
- 度量值最低的路径,放入路由表。
- 均放入路由表中,路径之间等价分担流量。
度量值(Metric):路由协议用来衡量路径优劣的参数。表示到达目的地的代价总和。影响度量值的因素:线路带宽、跳数、线路延迟、线路使用率、线路可信度等。
管理距离(Administrative Distance),也叫优先级,用来衡量路由源的可信度。管理距离值越低,可信度越高。只有可信度最高的路由会被添加进路由表。
9.1 路由表项
路由工作在网络层,用于将数据报文在不同网段的源目地址间转发。路由的过程是一个Hop by Hop的中继转发过程,中间经过的每一个路由设备,称作一跳。
缺省路由:当路由表中的所有路由都选择失败的时候,为使得报文有最终的一个发送地,将使用缺省路由转发报文。
等价路由(ECMP):到达同一个目的地址存在多条开销相等的不同路由路径,实现多路径负载均衡和链路备份的目的。
路由表是路由器转发报文的判断依据:
- Protocol:路由协议,表示路由类型,可以分为直连、静态和动态路由。
- Destination:目的地址,用来标识IP包的目的网络或目的地址。
- Mask:网络掩码,和目的地址共同标识目的地址所在的网段。
- Interface:转发接口,表明数据包从本路由器的哪一个接口转发至下一跳。
- NextHop:下一跳IP地址,数据包在下一个转发路由的接口IP地址。
- Distance:管理距离,标识路由加入路由表的优先级。
- Metric:路由开销,相同管理距离情况下,路由开销越小的路由将成为最优路由。
路由协议 | 目的地址/掩码 | 转发接口 | 下一跳地址 | 管理距离 | 度量值 |
---|---|---|---|---|---|
静态路由 | 0.0.0.0/0 | - | 192.168.1.1 | 1 | 0 |
静态路由 | 0.0.0.0/0 | - | 192.169.1.1 | 1 | 0 |
静态路由 | 10.0.0.0/8 | G0/1 | - | 1 | 0 |
静态路由 | 20.0.0.0/8 | G0/1 | 192.168.1.1 | 10 | 0 |
RIP | 30.0.0.0/8 | G0/1 | 192.168.1.1 | 120 | 20 |
直连路由 | 192.1.1.0/24 | G0/1 | - | - | - |
直连路由 | 192.1.1.1/32 | - | - | - | - |
路由表项的加表原则:
目的地址/掩码与已有表项不同时:
- 转发接口的状态为Up,且配置有IP地址,加表。
- 只有下一跳IP地址、没有出接口时,下一跳地址可达,加表。
目的地址/掩码和已有表项相同时:
- 比较管理距离(distance),管理距离小则加表。
- 若管理距离相同,比较度量值(metric),度量值小则加表。
- 若管理距离和度量值都与已有表项相同,加表,与已有路由形成等价路径(ECMP)。
直连的下一跳才能作为路由器转发依据,但是在BGP和静态路由中,下一跳可能不直连。此时,需要通过路由迭代找出一条具有直连下一跳和出接口的路由,并将其作为转发依据。
静态路由可以仅配置出接口,路由会以直连形式加进路由表。但是!在MA(多路访问)网络中可能造成报文转发时无法封装正确的MAC地址,而以太网就是典型的BMA(广播型多路访问)网络类型。所以这种配置用于点对点的IP虚接口。
静态路由可以配置下一跳地址,只要下一跳地址可达,该表项也会被加入路由表。在转发时,将浪费一次查表资源。路由器在转发数据包到目标网络的时候,首先要先解析下一跳的可达性。(迭代时不匹配默认路由),换句话说总共要解析两次,从转发效率上来说低于配置出接口的方式。
9.2 静态路由
缺省路由,用于具有相同下一跳的不同目的网络的路由条目,减少静态路由的配置数量。三层交换设备以及路由设备上,通过配置缺省路由,在路由选路无法命中精确路由时,将非本地的报文投送到缺省网关上,由网关路由器完成下一步的路由选路,完成本设备与其他网络的网络互通。
浮动静态路由,根据路由表项的加表规则可知,管理距离不同的路径,只会将管理距离更小的加表,另一条作为备份路由。当主路由正常通信时,浮动路由不会显示在路由表中,当主路由通信失效时,浮动路由作为备用路由进行通信,此时其路由配置会显示在路由表中。
9.3 聚合路由环路
9.4 RIP路由
RIP(Routing Information Protocol,路由信息协议)是最早的内部网关协议之一,RIP协议被设计用于使用同种技术的中小型网络。运行RIP的设备之间通过交换路由信息,自动获得到达远程网络的路由。
RIP是一种距离矢量(Distance-Vector)路由协议,限定一条路径上最多支持15台设备。
RIP协议基于UDP传输,采用520端口进行控制报文交互。
RIP有两个版本,分别是RIPv1和RIPv2。RIPv1为有类协议,采用广播发布协议报文;RIPv2为无类协议,使用广播或组播形式发送协议报文,组播地址为224.0.0.9。
RIP工作过程:
- 开启RIP,路由表初始化,表中仅添加本设备的直连路由。
- 通过各端口广播一个Request报文。
- 收到Request报文的邻居路由器回应Response报文。
- 本设备收到邻居发送的Response报文后,根据路由表更新原则加表。
- 以30秒为周期,定期发送Response报文,对外通告本设备路由表。
更新计时器(Update timer),定时将整个路由表以Response消息的方式发送给邻居路由器。缺省为30秒。
无效计时器(Invalid timer),路由条目的刷新都会重置该计时器。在无效计时器到期前,若未收到可刷新现有路由的更新,则将该路由的度量值设置为16,从而将其标记为无效路由。缺省为180秒。
清除计时器(Flush timer),从RIP路由进入Invalid状态开始计时,当清除计时器超时后,将该路由从路由表中删除。缺省为120秒。
抑制计时器(Hold-Down timer),预防路由震荡引起路由环路。设备收到度量值为16的路由更新时,该路由会被置为抑制状态,同时启动抑制计时器。在抑制计时器到期前,即使收到此路由度量值小于16的更新,也不做更新处理。缺省为0。
定时更新存在的问题:
- 需要发送完整路由表,一个Response报文最多只能包含25条路由,需要发送大量更新报文。
- 路由环路。
路由环路避免机制:
- 水平分割(Split Horizon),在接口上配置。从该接口接收到的路由,不会再从该接口发送出去。作用:减少带宽消耗,防止路由环路。
- 毒性逆转(Poison Reverse),在接口上配置。从该接口接收到的路由,以度量值16从接口发出。同时配置毒性逆转和水平分割,只有毒性逆转生效。
路由环路避免机制:
- 触发更新(Triggered Updates),
- 触发更新的事件包括:路由设备启动、接口状态改变、路由信息发生改变(比如度量值)和接收到请求报文。当路由信息发生改变时,立即向邻居发送与改变有关的路由,并采用确认+重发机制来保障邻居成功接收。优势:让整个网络上的路由器在最短的时间内收到更新信息,避免环路,快速路由收敛。
9.5 OSPF路由
OSPF(Open Shortest Path First,开放式最短路径优先协议)是一种IGP(Interior Gateway Protocol,内部网关协议),应用在AS(Autonomous System,自治系统)内部,使路由器获得远端网络的路由。
OSPF是链路状态协议,它通过收集和传递自治系统的链路状态信息,采用SPF(Shortest Path First,最短路径优先)算法来动态地计算并生成路由。
OSPF直接工作于IP层之上,IP协议号为89,OSPF可以通过单播或组播(224.0.0.5和224.0.0.6)发送协议数据包,OSPF Version 2应用于IPv4,OSPF Version 3应用于IPv6,协议运行机制和大部分配置都相同。
什么是Router ID?
一个32bit的无符号整数,是一台路由器的唯一标识,在整个自治系统内唯一。如果路由器上存在多个OSPF进程,则每个OSPF进程使用一个Router ID,任意两个OSPF进程的Router ID不能相同。
Router ID的获取规则,从Loopback接口地址中选取最大的IP地址作为Router ID,如果没有配置Loopback接口,则从物理接口地址中选取最大的IP地址作为Router ID。为防止不同路由器通过自动选取方式得到的Router ID冲突,建议使用手动配置方式。
什么是区域?
区域(Area)是从逻辑上将路由器划分为不同的组,一个区域内的路由器有相同的链路状态数据库(LSDB),一个区域的拓扑结构对另一个区域是不可见的。
每个区域用区域号(Area ID)来标识。Area ID由32bit数组成,在AS内唯一标识区域。如:Area 1 或者Area 0.0.0.1。
每一个网段必须属于一个区域,或者说每个运行OSPF协议的接口必须指明属于某一个特定的区域。
一台路由器可以只属于一个区域,也可以属于多个区域,区域的边界是路由器。
基础区域分类:
- 常规区域(Normal Area),常规区域可以接收链路状态更新、路由汇总和外部路由信息。
- 骨干区域(Backbone Area),骨干区域是连接所有其他区域的中心点,区域号总是“0”。所有其他区域都连接到这个区域以交换路由信息。
- 所有的区域必须和骨干区域相连,而且骨干区域自身也必须是连通的。
路由器分类:
- 区域内路由器(Internal Router),该类路由器的所有接口都属于同一个Area。ABR(Area Border Router,区域边界路由器),该类路由器用来连接骨干区域和常规区域。ABR同时属于两个以上的区域,其中一个必须是骨干区域。ABR为其连接的每个区域独立维护LSDB。
- 骨干路由器(Backbone Router),该类路由器至少有一个接口属于骨干区域。所有的ABR和Area 0的区域内路由器都是骨干路由器。ASBR(AS Boundary Router,自治系统边界路由器),该类路由器用来与其他AS交换路由信息。ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。
网络类型:
- Broadcast(广播网络),当链路层协议是Ethernet 时,OSPF 缺省认为网络类型是Broadcast。在这种类型网络中,自动发现邻居,选举DR、BDR。
- Point-to-Point(点对点网络),链路层协议是PPP,HDLC,LAPB ,自动发现邻居,不选举DR、BDR。
- NBMA(Non-broadcast Multi-access,非广播多路访问网络) ,链路层协议是Frame Relay、X.25 ,手工配置邻居,选举DR、BDR。
- Point-to-Multipoint(点对多点网络) ,没有一种链路层协议会被缺省的认为是Point-to-Multipoint 类型,通常由NBMA的类型手工修改而来。如果NBMA 类型的网络不是全连通的,则可以手工更改为点到多点网络。 自动发现邻居,不选举DR、BDR。
什么是DR和BDR?
- DR(Designated Router,指定路由器)
- BDR(Backup Designated Router,备份指定路由器)
- DROther: 除DR与BDR之外的路由器
用于减小多路访问网络中的OSPF流量,当网络变化时,DR负责通知区域内其他设备,BDR监控DR状态,在DR故障时接替其功能。
DR和BDR是由同一网段中所有的路由器通过比较路由器优先级、Router ID选举出来的,只有优先级大于0的路由器才具有选取资格。
Down:邻居状态机的初始状态,是指在过去的Dead-Interval 时间内没有收到对方的Hello 报文。
Attempt:只适用于NBMA 类型的接口,处于本状态时,定期向那些手工配置的邻居发送HELLO 报文。
Init:本状态表示已经收到了邻居的HELLO 报文,但是该报文中列出的邻居中没有包含我的Router ID(对方并没有收到我发的HELLO 报文)
2-Way:本状态表示双方互相收到了对端发送的HELLO 报文,建立了邻居关系。(交互Hello报文,成功协商hello报文中的参数)
在广播和NBMA类型的网络中,两个接口状态是DROther的路由器之间将停留在此状态。其他情况状态机将继续转入高级状态。
ExStart:在此状态下,路由器和它的邻居之间通过互相交换DBD 报文(该报文并不包含实际的内容,只包含一些标志位)来决定发送时的主/从关系。建立主/从关系主要是为了保证在后续的DBD 报文交换中能够有序的发送。
Exchange:路由器将本地的LSDB 用DBD 报文来描述,并发给邻居。
Loading:路由器发送LSR 报文向邻居请求对方的DBD 报文。
Full:在此状态下,邻居路由器的LSDB 中所有的LSA 本路由器全都有了。即,本路由器和邻居建立了邻接(adjacency)关系(成功交换LSA,实现LSDB同步)。
9.6 OSPF邻居状态建立
第一步:路由器A在网络里刚启动时是down-state,因为没有和其它路由器进行交换信息。它开始向加入OSPF进程的接口发送Hello报文,尽管它不知道任何路由器和谁是DR。Hello包是用多播地址224.0.0.5发送的。当路由器作为多路访问网络中的DR/BDR时,则使用224.0.0.6作为组播接收地址。
第二步:所有运行OSPF的与A路由器直连的路由器收到A的Hello包后把路由器A的ID添加到自己的邻居列表中。这个状态是init-state。
第三步:所有运行OSPF的与A路由器直连的路由器向路由器A发送单播的回应Hello包,Hello包中邻居字段内包含所有知道的路由器ID,也包括路由器A的ID。
第四步:当路由器A收到这些hello包后,它将所有包含自己路由器ID的路由器都添加到自己的邻居表中。这个状态叫做two-way。这时,所有在其邻居表中包含彼此路由器ID记录的路由器就建立起了双向的通信。
在hello包交互的过程中会完成DR和BDR的选举,后续Dother间的邻居状态停留在Two-Way
9.7 IS-IS路由
IS-IS 最早是由ISO( International Organization for Standardization,国际标准化组织)为CLNP(Connectionless Network Protocol,无连接网络协议)设计的一种动态路由协议。
IETF( The Internet Engineering Task Force,国际互联网工程任务组)对IS-IS进行扩充和修改,使其能够同时应用在TCP/IP和OSI环境中,称为集成化IS-IS。
IS-IS(Intermediate System-to-Intermediate System,中间系统到中间系统) 是ISO定义的OSI协议栈中的CLNS(ConnectionLess Network Service,无连接网络服务)的一部分。
lCLNS由以下三个协议构成:
-
CLNP:类似于TCP/IP中的IP协议
-
IS-IS:中间系统间的路由协议
-
ES-IS:主机系统与中间系统间的协议,就像IP协议中的ARP,ICMP的功能
OSI体系结构中使用NSAP(Network Service Access Point,网络服务接入点)地址标识网络设备。NSAP由IDP(Initial Domain Part)和DSP(Domain Specific Part)组成。
- IDP:由AFI(地址分配机构和地址格式)+IDI(标识域)组成,相当于IP地址中的网络号,由ISO规定。例如:49(AFI)代表OSI协议的私有地址,IS-IS可对这些地址进行路由,但不能通告给其他CLNP网络。
- DSP:由High Order DSP(分割区域)+System ID(唯一标识主机)+NSEL(服务类型)组成,相当于IP地址中的子网号和主机地址。
集成化IS-IS对NSAP地址进行重新定义,NSAP由三部分组成:
- 区域ID:长度可变,为1~13个字节,标识路由域中的区域,相当于OSPF中的区域编号。
- System ID:系统ID,路由器在IS-IS自治域内的唯一标识,长度固定为6字节。
- NSEL:NSAP服务类型选择符,长度为1个字节。
集成化IS-IS使用NET(Network Entity Title,网络实体名称)作为一个IS-IS路由器的唯一标识。NET网络实体可以看作是一种特殊的NSAP,即NSEL为0的NSAP地址。NET地址最小8字节,最大20字节。
每个集成化IS-IS进程最多可以配置3个NET,NET必须拥有相同的System-ID和不同的区域地址。通常情况下,一台路由器配置一个NET即可,当区域需要重新划分时,例如将多个区域合并,或者将一个区域划分为多个区域,这种情况下配置多个NET,可以在重新配置时仍然能够保证路由的正确性。
为了方便管理,一般可以使用Router ID来对应生成System ID,并依此生成NET地址。在一个IS-IS路由域中,设备的System ID必须唯一。
IS-IS会自动根据接口的数据链路层封装来决定该接口的缺省网络类型,IS-IS支持两种类型的网络:
- 广播(Broadcast):如Ethernet。
- l点到点(P2P): 如PPP、 HDLC等。
IS-IS使用Metric(开销)作为路由度量值, Metric值越小,则路径越优。IS-IS链路的Metric与设备的接口有关,与OSPF类似,每一个激活了IS-IS的接口都会维护接口Metric。在实际部署时,IS-IS支持根据带宽调整Metric值,计算公式为参考带宽/实际带宽。
- 一条IS-IS路径的开销等于本路由器到达目标网段沿途的所有链路的开销总和。
- IS-IS支持三种度量值类型:Narrow(窄度量模式)、Wide(宽度量模式)、Transition(透明模式)
缺省IS-IS的Metric类型为Narrow模式,Narrow模式下接口最大Metric值为63。发送时采用旧的度量格式。在大型网络中,Narrow模式的Metric取值范围不能提供足够的灵活性,因此有了Wide Metric,Metric取值范围可以达到16777215。发送时采用新的度量格式。
Transition模式允许设备发送和接收新旧两种度量格式。
IS-IS报文是封装在数据链路层的帧结构中。
- PDU(Protocol Data Unit,协议数据单元)可以分为两个部分,报文头(IS-IS Header)和变长字段部分(Variable Length Fields )。
其中IS-IS Header又可分为通用头部(PDU Common Header)和专用头部(PDU Specific Header)。对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别。
IS-IS的PDU有4种类型:IIH(IS-IS Hello),LSP( Link State PDU,链路状态报文),CSNP(Complete Sequence Number PDU,全序列号报文),PSNP(Partial Sequence Number PDU,部分序列号报文)。
- IIH:用于建立和维持邻居关系, 广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH; 广播网络中的Level-2 IS-IS路由
器使用Level-2 LAN IIH; 点到点网络中则使用P2P IIH。 - LSP:用于交换链路状态信息。LSP分为两种,Level-1 LSP、Level-2 LSP。 LSP只会泛洪到自己所属层次。
- SNP:通过描述全部或部分链路数据库中的LSP来同步各LSDB,从而维护LSDB的完整与同步。SNP包括CSNP和PSNP,
进一步又可分为Level-1 CSNP、 Level-2 CSNP、 Level-1 PSNP和Level-2 PSNP。
IS-IS工作过程:
- 第一步:当设备运行IS-IS协议时,双方通过交互IIH报文建立IS-IS邻居关系。
- 第二步:当邻居状态Up后,开始进行LSDB(链路状态数据库)信息同步。LSDB起着承上起下的作用,它收集区域内每一个路由器收到的邻居信息,生成链路状态数据库,描述网络拓扑信息。
- 第三步:利用SPF算法,算出最优路径,生成路由条目,加载路由表。
IS-IS按如下原则建立邻居关系:
- 只有同一层次的相邻路由器才有可能成为邻居。
- 对于Level-1路由器来说,Area ID必须一致。
- 链路两端IS-IS接口的网络类型必须一致。
- 链路两端IS-IS接口的地址必须处于同一网段(默认情况下)。
由于IS-IS是直接运行在数据链路层上的协议,并且最早设计是给CLNP使用的,IS-IS邻居关系的形成与IP地址无关。但在实际的部署中,在IP网络上运行IS-IS时,需要检查对方的IP地址的。如果接口配置了从IP,那么只要双方有某个IP(主IP或者从IP)在同一网段,就能建立邻居,不一定要主IP在同一个网段。
IIH报文用于建立和维持邻居关系,广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH;广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH;点到点网络中则使用P2P IIH。
两台运行IS-IS的路由器在交互协议报文实现路由功能之前必须首先建立邻居关系。在不同类型的网络上,IS-IS的邻居建立方式并不相同。在广播网络中,使用三次握手建立邻居关系。
广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS(Designated Intermediate System)。DIS用来创建和更新伪节点(Pseudonodes),并负责生成伪节点的LSP,用来描述这个网络上有哪些网络设备。伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。
- Level-1和Level-2的DIS是分别选举的,用户可以为不同级别的DIS选举设置不同的优先级。
- DIS优先级数值最大的被选为DIS,默认优先级为64,优先级范围为0~127。
- 如果优先级数值最大的路由器有多台,则其中MAC地址最大的路由器会成为DIS。
- DIS发送Hello报文的时间间隔为10/3s,这样可以确保DIS出现故障时能够被更快速地被发现。
点到点网络中,邻居关系的建立使用两次握手方式:只要路由器收到对端发来的Hello报文,就单方面宣布邻居为Up状态,建立邻居关系。两次握手机制存在明显缺陷,我司设备在点到点网络中使用IS-IS时,默认使用三次握手建立邻居关系。此方式通过三次发送P2P IIH最终建立邻居关系。
两次握手机制的缺陷:当路由器间存在两条及以上的链路时,如果某条链路上到达对端的单向状态为Down,而另一条链路同方向的状态为Up,路由器之间还是能建立起邻接关系。SPF在计算时会使用状态为UP的链路上的参数,这就导致没有检测到故障的路由器在转发报文时仍然试图通过状态为Down的链路。
三次握手机制解决了上述不可靠点到点链路中存在的问题。这种方式下,路由器只有在知道邻居路由器也接收到它的报文时,才宣布邻居路由器处于Up状态,从而建立邻居关系。
10. VRF
在企业生产环境中,一般会区分办公网络、核心业务网络、以及IT网络,为了公司网络的安全性,并且必须要对网络进行隔离。那有什么方法可以在交换机上隔离出独立的网络呢?
- 物理隔离,增加物理设备,但费时费力。
- 访问策略控制,只能限制访问,无法隔离网络,并且访问策略局限性大。
- 使用VRF技术隔离,逻辑上可以完全隔离出独立的网络,可以看作是在交换机内部独立出了”三台逻辑交换机”,互不干扰。
VRF(VPN Routing and Forwarding Table,VPN路由转发表)用来解决不同VPN(虚拟私有网络)之间,采用相同IP地址空间导致的本地路由冲突问题。顾名思义是用于解决私网地址段相同问题,为避免地址冲突,将相同私网地址放到不同的VRF表中。
- VPN实例:接口、路由协议进程(如OSPF)等信息的集合都属于同一个VRF,通常,使用VRF来代表VPN实例。
- VPN路由:仅用于指导VRF报文转发的路由,接口加入VRF后生成的直连路由和主机路由,配置路由协议,如静态路由、RIP、OSPF加入VRF。
RD(Route Distinguisher,路由区分符),用来区分具有相同地址的不同VPN路由,一条VPN路由信息只能携带一个RD值,具有全局唯一性。简单来说,RD就是在IP地址前面加个标记,使相同的IP地址可以进行区分。可以形象理解为:RD值是解决路由“是谁“发出的问题,因此在传递VPN路由时都必须配置一个RD值。
RT(Route-Target,路由目标属性),用来控制VPN路由的发布和接收,有export出方向和import入方向两种,可配置多个RT值,具有全局唯一性,只能被一个VRF使用。简单来说,RT是用于控制路由进出的标记。可以形象理解为:RT值是解决路由“从哪里来,要去哪里”的问题。
11. ACL策略
什么是ACL?
ACL是Access Control List的简称,中文是访问控制列表。ACL包含了一系列条件语句,实际上是一系列包含“允许”或者“拒绝”的规则。换句话说,ACL是人为定义的一组或者几组规则,以便设备判断是否执行用户规定的动作。
防止报文攻击:针对IP、TCP配置ACL能够保障网络安全、可靠和稳定,例如:
- 防止报文攻击:针对IP、TCP或者ICMP报文的攻击,对这些攻击报文做“拒绝”处理。
- 网络访问控制:限制用户访问服务,例如只允许访问WWW和电子邮件服务,其他服务如Telnet则禁止。或者只允许在给定的时间段内访问,或者只允许特定主机访问网络等。
- 网络流量控制:结合QoS可以为重要的数据流进行优先服务保证。
ACL本身只是一组规则,无法实现过滤数据包的功能;它只能标定某一类数据包,而对这类数据包的处理方法,由调用ACL的业务模块决定。
包过滤:
- 允许或拒绝数据包通过路由交换设备。
- 允许或者禁止终端访问路由交换设备(Telnet/SSH)。
- 如果没有ACL,所有的数据包都可以在网络的任何部分传输。
ACL通过规则对报文进行分类,其他应用可以调用ACL,对不同分类的数据包进行区别处理。
一个ACL由多条ACE(Access Control Entry,访问控制条目)组成, ACE是包含“允许(Permit)”或“拒绝(Deny)”两种动作,以及过滤规则的一条语句。
标准ACL | 扩展ACL | MAC ACL | 专家级ACL | ACL80 | |
---|---|---|---|---|---|
应用层 | √ | ||||
传输层 | √ | √ | √ | ||
网络层 | √ | √ | √ | √ | |
网络接入层 | √ | √ | √ |
通配符也称“反掩码”, 和IP地址结合使用,以描述一个地址范围。反掩码和子网掩码相似,但含义不同。 0表示:对应位需要比较。1表示:对应位不比较。
12. VSU
传统网络中,为了增强网络的可靠性,在核心层部署两台交换机,分别连接所有汇聚层交换机。
物理拓扑成三角形连接可以增加冗余线路,但存在二层广播风暴的环路风险。为了消除环路,在核心层交换机和汇聚层交换机配置MSTP(Multiple Spanning Tree Protocol,多生成树协议),阻塞部分链路。
为避免单个网关造成的单点故障,在核心层交换机配置VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议),提供冗余网关。
存在问题:
- 网络拓扑复杂,管理困难。
- 故障恢复时间一般在秒级,受MSTP协议机制影响,无法达到毫秒级故障恢复。
- 部分链路阻塞,链路带宽资源浪费。
近几年出现的网络系统虚拟化VSU技术,支持多台设备组合成单一的虚拟设备,可以很好解决传统可靠性网络组网带来的问题。
解决问题:
- 简化管理:管理员可以对多台交换机统一管理,无需单独登录设备管理。
- 简化网络拓扑: VSU相当于一台设备,不存在环路,无需配置MSTP协议。
- 毫秒级故障恢复:若核心层设备出现故障,可以达到毫秒级恢复,减少故障影响。
- 提高带宽利用率:可实现链路负载分担,充分利用链路带宽。
VSU是什么?
- VSU(Virtual Switching Unit,虚拟交换单元)是一种锐捷自主研发的网络设备多虚一(N:1)技术。
- VSU将多台网络设备虚拟成一台逻辑设备,可以简化运维设备和网络拓扑。
- 通过聚合链路连接不同成员设备,实现跨设备链路冗余,提升网络可靠性和扩展性。
VSU属性组成:域编号(Domain ID)、设备编号(Switch ID)、设备优先级、设备角色:主设备(Active)、从设备(Standby)、候选设备(Candidate)、虚拟交换链路(VSL)、双主检测。
域编号(Domain ID)是VSU系统的唯一标识符,用来区分不同的VSU。取值范围一般为1到255(缺省为100)。一台设备只能处于一个Domain下。两台设备的Domain ID相同,才能组成VSU系统。
设备编号Switch ID是交换机在VSU中的成员编号,取值范围一般为1到8(缺省为1)。在VSU中必须保证所有成员的设备编号都是唯一的,如果建立VSU时成员设备的编号不唯一,VSU建立将不成功
设备编号需唯一原因:
- 在未组建VSU时,设备处于单机模式,接口编号采用二维格式(如盒式设备的GigabitEthernet 0/1,0表示槽位号,1表示接口编号)。
- 在组建VSU后,接口编号采用三维格式(如盒式设备的GigabitEthernet 1/0/1 ,第一个1则表示成员编号)。
- 因此,需要成员设备编号唯一,才能保证接口编号的唯一性。
优先级是成员设备的一个属性,在角色选举过程用到,取值范围一般为1到255(缺省为100)。优先级值越大,被选举为主设备的可能性越大。
VSU中每台设备都称为成员设备,成员设备按照功能不同,分为三种角色:
- Active 主设备(有且仅有一个):管理整个VSU,负责同步配置、时间等信息到所有成员设备。
- Standby从设备(有且仅有一个):作为主设备的备用设备运行,仅参与数据转发。当主设备故障从设备会自动升级为主时,接替原主设备工作。
- Candidate 候选设备:当从设备故障时,系统会自动从候选设备中选举一个新的从设备接替原从设备的工作。当主设备故障时,在从设备自动升级为主设备,接替原主设备工作的同时,系统也会自动从候选设备中选举一个新的从设备接替原从设备的工作。
VSU系统至少包含主和从两台设备,当由三台以上设备组成时,其余为候选设备。
虚拟交换链路(Virtual Switching Link,简称VSL)是VSU系统的设备间传输控制信息和数据流的特殊聚合链路。
双主检测机制,当发现分裂现象时,其中一方设备进入Recovery状态,此时会将除VSL端口与例外口(单独设置无需被关闭的业务接口)之外的所有业务接口Shutdown。
当VSL断开导致Active设备和Standby设备分到不同的VSU时,就会产生VSU分裂,网络上会出现两个配置相同的VSU,导致业务出现短暂中断。
双机检测一般基于BFD检测(推荐),BFD(Bidirectional Forwarding Detection,双向转发检测),是一种高速故障检测机制,通过周期发送BFD报文,若一方在规定时间没有收到报文,则认为这条链路发生故障,上层协议通过BFD感知到链路故障后可以及时采取措施,进行故障恢复。
12.1 VSU转发原理
当成员设备收到报文后,查找本地转发表,如果出接口就在本机上,则成员设备将报文从本地出接口发送出去。
当成员设备收到报文后,查找本地转发表,发现出接口在另一台成员设备上,则该设备根据单播最优路径将报文转发给另外的成员设备,最后,另一台成员设备将报文转发出去。
本地优先转发原则:若从成员的交换机收到知名单播帧(目的MAC在VSU设备上有对应表项) 会向与下联设备的聚合端口转发,此时会优先选择该聚合端口在本设备上的成员端口,减少经过VSL的流量。
跨VSL链路转发:若VSU设备与下联设备的聚合成员端口链路状态为Down,此时需要将单播帧通过VSL转发给另一台设备,然后经过对端设备上的聚合成员端口转发出去。
13. MPLS
MPLS(Multiprotocol Label Switching,多协议标签交换)是一种利用标签引导数据高效传输的骨干网隧道技术。多协议是指MPLS支持多种网络层协议(如IP、IPv6和IPX等),而且兼容包括ATM、帧中继、以太网和PPP等多种链路层技术。MPLS可以运行在任意二层介质上。
MPLS使用标签交换作为其转发方式。标签是一个定长的、只在本地有意义的标识符,其封装在数据链路层头部和网络层头部之间。
90年代中期,TCP/IP协议栈成为了Internet事实上的标准,IP技术迅速普及。受制于当时有限的半导体发展水平,大型网络中设备的IP转发性能很难满足需求。因此可以认为,在当时的环境下,网络发展的瓶颈是设备的IP转发性能。
为了提高设备的转发效率,多协议标签交换技术MPLS(Multiprotocol Label Switching)技术应运而生。MPLS与传统IP路由方式相比,它仅在MPLS网络边缘分析IP报文头,在MPLS网络中则采用标签交换的方式实现报文的转发,减少了查表时间,有效提升转发效率。
当前网络环境中,转发性能已经不再是制约IP转发性能的主要因素,因此MPLS在转发性能上的优势不再明显,后续SRv6将成为新的热点和主流。当前MPLS仍在电信骨干网发挥余热。
13.1 网络结构简介
LSR(Label Switching Router,标签交换路由器) 是MPLS网络的基本组成单元。位于MPLS网络边缘,连接其它网络的LSR称为LER(Label Edge Router,标签边缘路由器)。
MPLS基于标签进行转发。IP报文进入MPLS网络时,由MPLS网络入口的LER分析IP包内容并为这些IP报文添加标签;MPLS网络中的节点依据标签来转发数据。当该IP报文离开MPLS网络时,出口的LER将会删除报文里的标签。
IP报文在MPLS网络中经过的路径称为LSP(Label Switched Path,标签交换路径),它是一系列LSR的集合,可以将LSP看作类似穿越MPLS核心网络的一个隧道。LSP是一个单向路径,与数据流的方向一致。
LSP的起始节点称为入节点(Ingress);位于LSP中间的节点称为中间节点(Transit);LSP的末节点称为出节点(Egress)。一条LSP可以有0个、1个或多个中间节点,但必须有且只有一个入节点和出节点,且两个节点不能是同一台设备。
上游:以指定的LSR为视角,根据数据传送的方向,所有往本LSR发送MPLS报文的LSR都可以称为上游LSR。
下游:以指定的LSR为视角,根据数据传送的方向,本LSR将MPLS报文发送到的所有下一跳LSR都可以称为下游LSR。
13.2 基础概念
FEC(Forwarding Equivalence Class,转发等价类)是指一类具有相同特征的数据报文。在MPLS网络转发过程中,属于相同FEC的报文将获得相同的处理。在IP单播路由应用中,FEC可以按照目的地址前缀进行分类,到达同一个目的地的所有报文为一个转发等价类,即一条路由对应一个FEC。
标签(Label)是一个长度固定、具有本地意义的短标识符。标签只在相邻的两个MPLS节点之间分发传递,因此也只在相邻MPLS节点之间有效。一台路由器上,一个标签只能代表一个FEC。标签的组成如下:
- Label:长20比特,标签值域。
- Exp:长3比特,用于扩展。目前主要存放MPLS的QoS信息。
- S:长1比特,栈底标识。MPLS支持支持标签嵌套。S值为1时表明为最底层标签。
- TTL:长8比特,存活时间,和IP分组中的TTL(Time To Live)意义相同。
一个MPLS报文可以携带多层标签,多个标签的排序集合称为标签栈(Label Stack)。标签栈中的每一个标签都是完整的32比特。其中,靠近2层首部的标签为栈顶(外层)标签,靠近3层首部的标签为栈底(内层)标签。
标签栈按照后进先出的方式组织标签。LSR执行标签交换时总是基于栈顶标签进行操作。
标签转发的基本动作包括如下三种:
- 标签压入Push:入口LER在链路层首部和网络层首部之间插入标签,或者中间LSR在MPLS报文的标签栈顶再增加新的标签。
- 标签交换Swap:在转发过程中根据标签转发表替换报文栈顶标签的过程。
- 标签弹出Pop:出口LER将报文中的标签全部去掉还原成IP报文,或者中间LSR去掉栈顶标签减少标签栈层次。
标签分发:将目的地址相同的分组报文划分为一个FEC,然后从MPLS标签资源池中取出一个标签,分配给这个FEC。LSR记录该标签和FEC的对应关系,并将该对应关系封装成消息报文,通告给上游的LSR。
标签发布协议:MPLS的控制协议(也可称为信令协议),负责FEC的分类、标签的分发以及LSP的建立和维护等一系列操作。MPLS可以使用多种标签发布协议,例如LDP(Label Distribution Protocol,标签分发协议)、RSVP-TE(Resource Reservation Protocol-Traffic Engineering,基于流量工程的资源预留协议)和MP-BGP(Multiprotocol Border Gateway Protocol,多协议边界网关协议) 。
13.3 报文转发
如何建立LSP?
MPLS节点间需要对转发报文所用的标签达成共识,并成功建立LSP后才能进行报文的转发。LSP的建立可以通过手工静态配置,也可以通过MPLS信令协议动态建立。
- 静态LSP:在各MPLS节点上,通过手工分配标签建立静态LSP。静态LSP无需交互控制报文,具有资源消耗少的优点,但需要逐条手工配置,无法根据网络拓扑变化进行灵活地动态调整,因此只适用于组网结构比较稳定的小规模网络。
- 动态LSP:MPLS信令协议主要负责划分FEC、分发标签和建立维护LSP等操作。MPLS支持多种信令协议,有专门为标签分发而制定的协议,如LDP,也有在现有协议基础上进行扩展后支持标签分发的协议,比较典型的如RSVP-TE和MP-BGP。
MPLS的转发主要涉及三张表:
- NHLFE (Next Hop Label Forwarding Entry,下一跳标签转发表项):NHLFE表用于存储转发MPLS报文的下一跳信息,通常包含数据报文的下一跳、转发数据报文使用的链路层封装、转发数据报文标签栈使用的编码方式和对数据报文标签栈的操作。
- FTN (FEC-To-NHLFE):FTN负责将每个FEC映射到一系列的NHLFE(多个NHLFE表明其是多径)。FTN表主要用在LER收到未带标签数据报文的转发情况。LER收到一个未带标签的IP数据包后,会根据FTN表,按照最长匹配原则匹配IP数据包的目的地址。如果查找到下一跳,则对IP数据包执行标签封装后进行转发。
- ILM (Incoming Label Map,入标签映射):ILM负责将每个入标签映射到一系列的NHLFE(多个NHLFE表明其是多径)。ILM表主要用在当LSR收到带标签MPLS报文的转发情况。
MPLS转发对TTL的处理方式:
- Uniform模式:IP报文进入MPLS网络,入口LER为IP报文压入标签时,先将已有IP报文的TTL值减1,再拷贝到新压入标签的TTL字段。每经过一台LSR,栈顶标签的TTL执行减1操作。出口LER弹出标签时,将标签的TTL减1拷贝回IP报文的TTL字段。
- Pipe模式:IP报文进入MPLS网络,入口LER为IP报文压入标签时,IP TTL减1,压入标签的TTL值为255。每经过一台LSR,栈顶标签的TTL执行减1操作,IP报文的TTL值保持不变。出口LER弹出标签时,IP报文TTL值减1。
13.4 典型应用
基于MPLS的VPN可以创建专用网。用户设备一般不需要使用IPSec等IP安全技术,也无需为VPN配置GRE、L2TP等隧道,因为数据包不再经过封装或者加密,网络时延也因此降低。基于MPLS的VPN通过LSP将私有网络的不同分支联结起来,形成一个统一的网络。
14. VRRP
路由器是三层设备,工作在物理层、数据链路层和网络层。作为物理层设备,它把接收到的信号进行再生。作为数据链路层的设备,路由器检查包含在分组中的物理地址(源地址和目的地址)。作为网络层设备,路由器主要检查网络层地址(在IP层中的地址)。路由器可以将多个局域网或者广域网连接起来,它是一个网际互连设备。
VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)是一种路由容错协议。当局域网内承担路由转发功能的设备失效后,另一台将自动接管,从而实现IP路由的热备份与容错,同时也保证了局域网内主机通讯的连续性和可靠性,主要应用在局域网路由出口冗余备份的场景。
- VRRP路由器:VRRP路由器是指运行VRRP协议的路由器,该路由器可以是一个或多个虚拟路由器组成。
- 虚拟路由器:虚拟路由器(Virtual Router)又称VRRP备份组,通常被当作一个共享局域网内主机的缺省网关。包括一个虚拟路由器标识符和一组虚拟IP地址。
- VRID:虚拟路由器ID(Virtual Route Identifier,简称VRID)是虚拟路由器的唯一标识符,用来区分不同的VRRP。有相同VRID的一组路由器才能组成VRRP备份组。
- 虚拟IP地址:虚拟路由器的IP地址,一个虚拟路由器可以配置有一个或多个虚拟IP地址。
- 虚拟MAC地址:VRRP的虚拟MAC地址遵循RFC协议标准。IPv4 VRRP组的虚MAC地址为“00-00-5E-00-01-{VRID}”(IPv6 VRRP组的虚MAC为“00-00-5E-00-02-{VRID}”),其中前五个字节固定,最后一个字节是备份组的组号。当虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的实MAC地址。
- Master路由器:在一个VRRP备份组中,只有Master路由器负责ARP响应和转发IP数据包。如果该设备是IP地址拥有者,通常它将成为Master路由器。
- Backup路由器:在一个VRRP备份组中,Backup路由器不承担ARP响应和转发IP数据包的任务,只负责监听Master路由器的状态。当Master路由器出现故障时,它们将有机会通过选举成为新的Master路由器。
- 优先级:VRRP备份组根据优先级来确定虚拟路由器中每台路由器的地位,可配置的优先级范围为1~254,拥有虚拟路由器IP地址的VRRP路由器在此VRRP备份组中的优先级必须为255。优先级为0表示当前主节点不再参与VRRP组,含有优先级0的VRRP报文用于触发备份路由器迅速切换到主节点,备份路由器不必等待当前主节点超时。
- IP地址拥有者:如果一个VRRP路由器将虚拟路由器IP地址作为真实的接口地址,则该设备被称为IP地址拥有者(IP Address Owner)。如果对应的以太网接口可用,那么IP地址拥有者将自动处于Master状态。
- 抢占模式:若VRRP组工作在抢占模式,一旦Backup路由器发现本端的优先级高于当前Master的优先级,将抢占成为该VRRP组的主路由设备。若VRRP组工作在非抢占模式,则只要Master路由器没有出现故障,Backup路由器即便随后被配置了更高的优先级也不会成为Master。
- VRRP协议版本:VRRP协议包括VRRPv2和VRRPv3两个版本。其中VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。
VRRP协议采用简单竞选的方法选择主路由设备,由它提供实际的路由转发服务。选主规则按以下顺序执行:
- 判断VRRP设备是否为IP地址拥有者,若是,则直接切换至Master状态。
- 判断同一个VRRP组内的VRRP优先级的大小,优先级最大的为Master设备。
- 判断网络接口的主IP地址大小,主IP地址大的成为Master设备。
VRRP协议报文主要用来将Master设备的优先级和状态以组播报文(目的地址是224.0.0.18)方式发送给同一备份组的所有Backup设备。该报文封装在IP报文中,源地址为发送报文接口的主IP地址(不是虚拟IP地址),TTL是255,协议号是112。
VRRP有两个重要的时间:
- Advertisement_Interval:Master设备定期发送VRRP通告报文的间隔,缺省值为1秒。
- Master_Down_Interval:Backup设备用来判断Master设备是否超时。计算公式如下: Master_Down_Interval =(3* Advertisement_Interval )+ Skew_time(偏移时间),其中,Skew_Time=(256–Priority)/256。
VRRP协议的状态机包含三种状态:
- VRRP最初始的状态,系统启动后进入该状态,不会对VRRP报文做任何处理。
- Backup虚拟路由器用于监控Master虚拟路由器的有效性和状态。不会承担虚拟路由设备的转发工作。
- Master状态虚拟路由器作为VRRP组中的转发角色,承担着转发虚拟网关报文的任务。
VRRP Plus(Virtual Router Redundancy Protocol Plus,扩展虚拟路由冗余协议)是VRRP的扩展协议,采用VRRP协议实现IEEE 802.3局域网内的网关备份和负载均衡。
由于VRRP协议处于备份状态的路由设备,没有承担报文转发的任务,如果要用VRRP实现负载均衡,则需要手工配置多个VRRP组,并将局域网内主机的网关指向不同VRRP组的虚拟IP地址。这将增大网络管理员的工作量。为了解决上述不足,VRRP Plus自动实现负载均衡,即自动将不同主机的流量分配到VRRP Plus组成员中,无需配置多个VRRP组以及配置局域内主机网关指向不同的VRRP组的虚拟IP地址,从而减轻网络管理员的负担。在一个VRRP组内启动负载均衡转发策略,无需配置多个VRRP组,也不用为每台主机配置不同的默认网关。
14.1 VRRP工作模式
路由设备A、B以及C均使用以太网口与局域网连接,并在其连接局域网的以太网接口上配置了VRRP,它们处于同一个VRRP组并且该VRRP组的虚拟IP地址为192.168.12.1,其中路由设备A经选举为VRRP的主路由设备,路由设备B与C作为备份路由设备。局域网内的主机1、2以及3以虚拟路由设备的IP地址192.168.12.1作为网关。
正常工作时,局域网内主机发往其它网络的数据包将由主路由设备(Router A)进行路由转发。
设备A故障时,假定B的优先级更高,那么VRRP将选择路由设备B为主路由设备,来承担虚拟路由设备的路由转发功能。
15. SNMP
SNMP诞生背景,管理设备呈几何级数增加。组网中通常混合使用多个厂商的设备,各个厂商的管理接口(如命令行)不同。
SNMP发展,SNMPv1是SNMP协议的最早版本,采用community字段进行验证。SNMPv2c是SNMPv1的升级,提供更多操作类型和错误代码。SNMPv3是SNMP的最新版本,增加了认证和加密功能。
SNMP ( Simple Network Management Protocol ,简单网络管理协议)是一个用于网络监控和管理的协议,它建立了一套成熟的网管标准。
SNMP组成元素:NMS(Network Management System,网络管理系统),SNMP 代理(SNMP Agent),MIB(Management Information Base)管理信息库。
NMS指的是能够进行网络管理的服务器,负责对网络设备进行信息采集,负责接收Agent发来的Trap。
Agent指运行在被网管设备上的软件,响应NMS的查询。设备状态变更或发生异常时,发送Trap给NMS。
15.1 MIB
MIB(Management Information Base)是虚拟的网络管理信息库,在网络管理中起着重要作用。它定义了对象的名字、访问权限以及数据类型。可将其视为是连接NMS和Agent之间的沟通桥梁,以便它们能按照标准的规范进行对接。
MIB树: MIB本身是以树状结构进行的存储,它可以用从根节点开始的一条路径来唯一地识别,这条路径称为OID(Object Identifier,对象标识符)。比如管理对象System可使用一连串数字{1.3.6.1.2.1.1}唯一标识,这串数字表示System的OID值, 类似于DNS和文件系统。
16. 策略路由
策略路由(Policy-Based Routing)是基于策略的路由。将包含策略的路由图应用在接口和设备上,即可实现策略路由。
与静态路由相似,策略路由也是手工配置的路由,不能随网络变化自动更新,仅在本地有效。与静态路由、动态路由相比,策略路由更加灵活。静态路由、动态路由只能依据目的地址转发报文。策略路由可以依据源地址、目的地址、报文长度、入端口等转发报文。
- Match(匹配命令),用于定义策略路由的匹配规则,匹配规则可以是ACL或报文的长度。
- Set(设置命令),用于定义策略路由的转发策略,转发策略可以是重定向或重标记。
- 路由图(Route-map),由匹配规则和转发策略组成,用Match和Set语句实现。一个接口应用策略路由后,将对该接口接收到的所有包进行检查,不符合路由图中任何策略的数据包将按照普通路由转发处理,符合路由图中某个策略的数据包就按照该策略中指定的转发策略处理。
- ACL,访问控制列表,包含一系列的规则。这些规则可以用来匹配报文,以决定是否需要对报文做相应的策略路由。
- Next-Hop,重定向下一跳,策略路由处理过程中,代替报文的目的IP来查找路由表以得到自定义下一跳的一个IP地址。
接口应用策略路由:只对转发报文生效,不对本机产生报文生效。
本地应用策略路由:只对本机产生报文生效,不对转发报文生效。
策略路由的匹配规则通过Match语句来定义,具体规则可以是ACL,也可以是报文长度。匹配规则支持的ACL类型包括标准ACL和扩展ACL两类。
- 标准ACL提供识别源IP功能。
- 扩展 ACL提供识别源IP、目的IP、IP 协议类型(TCP、UDP、ICMP 及指定协议号)、IP报文某些字段 (Fragment、TOS、DSCP 和 Precedence)、ICMP 报文的 Type 或 Code 字段、TCP/UDP 的端口号以及 Flags 字段等功能。
策略路由的转发策略通过 Set 语句来定义,转发策略包括重定向和重标记两类。
- 重标记可以改变报文的 TOS、DSCP或 Precedence 字段值。符合匹配规则的报文,重新标记 TOS、DSCP或 Precedence字段值后,根据目的地址查找路由表走普通路由。
- 重定向的下一跳可以是直连的设备也可以是网络中的路由可达的非直连设备。重定向的下一跳的类型包括:下一跳接口、下一跳 IP 地址、下一跳缺省接口和下一跳缺省IP地址。
当用 Match 语句和 Set 语句分别定义匹配规则和转发策略后,一个路由图即产生。将路由图应用于全局或是接口后策略路由正式生效,设备将通过路由图决定如何对需要路由的数据包进行处理,路由图决定了一个数据包的转发行为。
每个策略的路由图可有多个策略,策略间的关系为“或”,PBR根据策略序号从小到大顺序执行,匹配当前节点将不会继续向下匹配。
策略内的多个匹配条件语句之间的关系为“与”,即匹配所有条件语句才会执行本节点内的动作。单个接口或者本地只能生效一个策略路由。
16.1 路由策略
路由策略是一种改变路由信息(包括路由属性、下一跳、转发接口、优先级等)的策略集,通常通过过滤列表和路由图进行实现。
策略路由与路由策略应用场景不同,策略路由用于确定数据包转发路径,路由策略用于确定具体的路由配置。
策略路由 | 路由策略 | |
---|---|---|
作用对象 | 数据包 | 路由信息 |
是否改变转发流程 | 是 | 否 |
作用层面 | 转发平面(保证数据包按策略转发) | 控制平面(实现路由过滤和属性修改) |
过滤机制 | 基于ACL基于IP报文长度 | 基于ACL/前缀列表/路由类型/路由属性/路由出接口/路由标签/路由开销…… |
应用主题 | 本地数据包(应用于全局) 转发数据包(应用于接口) | 动态路由协议静态路由组播EVPN…… |
17 跨设备链路聚合(M-LAG)
链路聚合可以将多个物理链接捆绑在一起形成一个逻辑链接,用于扩展链路带宽,提供更高的连接可靠性。链路聚合通常有静态链路聚合和LACP(Link Aggregation Control Protocol,链路聚合控制协议)两种。链路聚合带来的好处是:更高的可靠性和更大的带宽。
M-LAG(Multichassis Link Aggregation Group,跨设备链路聚合)是一种跨设备链路聚合技术,它由两台支持链路聚合的设备组成双活系统,等效于一台设备,该等效设备和下联设备之间可以通过聚合口互联。部署M-LAG可以将链路可靠性提高到设备级,以满足高可用性场景的需求。
早期数据中心网络的接入可靠性方案通常是利用STP+VRRP实现的:
- 服务器通过主备网卡接入不同的接入设备。
- 接入设备通过多条链路接入汇聚设备。
- 为避免形成环路,通过部署STP协议控制接口的状态。
- 汇聚设备部署VRRP。
但STP接入方案浪费了阻塞端口所在链路的带宽,且服务器仅能通过主备链路形式接入,仅主链路可以通信,备链路的带宽也被浪费了。
在M-LAG系统中,ServerA、DeviceA和DeviceB进行跨设备链路聚合:
- DeviceA和DeviceB通过域编号完成M-LAG设备之间的配对。
- 当DeviceA和DeviceB配对成功后会协商出主备关系。M-LAG系统使用VAP成员接口和Server A进行LACP协商。
- 在M-LAG正常工作后,DeviceA和DeviceB之间通过Peer Link链路实时同步对端信息,如ARP表项和MAC表项等。
- M-LAG的故障检测则主要依赖于双主检测链路(DAD link,Dual-Active Detection link),设备通过双主检测链路定期互发心跳报文。
域编号(Domain ID)是M-LAG系统的唯一标识符,用来区分不同的M-LAG。两台设备的Domain ID相同,才能组成M-LAG系统。目前一台设备只支持配置一个域,一个域内只支持两台设备。
虚拟AP组通常称为VAP,用于区分连接的设备。M-LAG两台设备上,与同一(逻辑上)设备连接的聚合接口应加入同一个虚拟AP组。
VAP成员接口,加入虚拟AP组的聚合接口称为VAP成员口接口,用于对接对端设备的聚合口。只有二层聚合接口可以加入虚拟AP组。为了增强可靠性,建议使用LACP协议。
Peer Link链路,M-LAG两台设备间的链路称为Peer Link链路,用于同步数据及传输部分流量。Peer Link链路两端直连的接口称为Peer Link接口,Peer Link接口必须配置为二层聚合接口。
设备角色,M-LAG两台设备在正常运行时会协商出主/备角色。正常情况下,主设备和备设备同时参与转发,并没有差别;当故障发生后,主设备和备设备的行为有所差异。比如Peer Link链路故障,两台设备虚拟AP组断裂,此时备角色的设备业务口将被关闭,使得流量可以强制切换到主设备,以避免接入设备转发异常。
双主检测链路,双主检测链路是一条三层通路,用于Peer Link链路故障时检测M-LAG设备的双主状态。为保证检测的实时性,双主检测链路不参与任何转发,建议单独配置一条三层可达的链路作为双主检测链路(比如两台设备管理口直连)。
当M-LAG系统正常时:
- 设备优先通过VAP本地成员接口转发业务流量。
- 从Peer Link链路来的流量不往本地对应的VAP成员口转发。
当VAP成员口发生故障:从Peer Link链路来的流量需要往本地VAP成员口转发。
当上行链路发生故障:接入二层网络时,流量将会通过Peer Link链路转发。接入三层网络的时候,还需要配置专门的链路,保证故障侧的三层流量可以转发至非故障侧,再通过上行链路转发至网络。
当上行链路发生故障,如果上行链路恰好是双主检测链路,如何防止上行链路故障时Peer Link链路同时故障导致丢包:通常搭配REUP的链路跟踪组功能将VAP成员口和上行接口关联。一旦上行接口故障,VAP成员口状态将会转变为disable(违例状态),迫使流量从另一个正常状态的VAP成员口所在链路通过。
当Peer Link链路故障,设备间会互发双主探测报文。如果收到探测响应报文,则说明存在双主,进行双主状态处理,备设备上业务口(管理口、Peer Link口和堆叠口以外的接口)处于disable状态,如果希望某个口不被disable ,可通过配置例外口,比如用于双主检测的接口状态不置为disable 。当Peer Link链路故障恢复时,备机处于disable状态的端口会立即进行恢复。
当M-LAG设备故障,触发Peer Link故障,设备间会互发双主探测报文。如果未收到探测响应报文,则说明对端设备故障。本机如果是备设备,则升级为主设备。本机如果是主设备,不做任何处理。
18. SRv6
5G和云网络正推动世界进入万物互联的时代,未来将有更多的To B行业(如医疗、交通、工业等)接入网络,有更多的企业应用上云。随着接入业务数量增多,IPv4地址匮乏问题被放大。接入网络的业务种类增多,不同业务种类对网络的要求各不相同,如大数据业务要求大带宽、视频直播业务要求低时延、低丢包等。
MPLS(Multiprotocol Label Switching,多协议标签交换)是一种介于二层和三层之间的“2.5层”技术,支持IPv4和IPv6等多种网络层协议,且兼容ATM与以太网等多种链路层技术。IP与MPLS结合,能够在无连接的IP网络上提供QoS保障,并且MPLS标签交换转发方式解决了IP转发性能差的问题,所以IP/MPLS在一段时期内获得了成功。
- 转发优势消失,硬件更新换代,当前MPLS的转发性能优势相比于IP转发已经不再那么明显。
- 云网融合困难,因为网络管理边界、管理复杂度和可扩展性等多方面的原因,所以MPLS无法为数据中心提供VPN服务。
- 跨域部署困难,需要复杂的标签管理,MPLS VPN有Option A/B/C等多种形式的跨域方案,都非常复杂。
- 协议复杂,在L2VPN、L3VPN多种业务并存的情况下,设备中可能同时存在LDP、RSVP、IGP、BGP等协议。
SR(Segment Routing,段路由)是一种基于源路由设计的,转发数据包的协议。SR允许在头节点指定报文传输过程中所经过的路径。它将路径分成一个个段(Segment),并为每个段分配段标识符(Segment Identifier)。通过对段进行有序排列(Segment List),得到一条转发路径。
表示转发路径中的一个段,描述段的节点对接收到数据包要执行的指令。指令包括“按照去往目的地址的最短路径转发数据包”,以及“通过特定接口转发数据包”。
Segment ID( SID )用于标识Segment,它的格式取决于具体的技术实现,例如可以使用MPLS标签或IPv6地址。
源路由(Source Routing):源节点选择一条路径并在报文中压入一个有序的Segment List,网络中的其他节点按照报文封装的Segment List进行转发。
SR依据数据面的不同分为SR MPLS和SRv6。SR MPLS:基于MPLS数据平面的SR MPLS。SRv6:基于IPv6数据平面的SRv6,通过IPv6扩展头完成类似标签转发的过程。
为了基于IPv6转发平面实现SRv6,新增一种IPv6扩展头,记为SRH(Segment Routing Header,SRv6扩展头)。该扩展头指定一个IPv6的显式路径,存储的是IPv6的SID列表信息,其作用与SR MPLS里的SID相同。SRv6报文也是IPv6报文,它并没有改变IPv6报文封装结构,普通IPv6设备即可转发。所以SRv6仅依赖IPv6可达性即可实现网络节点互通。因此业界也称SRv6是Native IPv6技术。
SRv6 Segment的命名遵循一定规则,可以从命名组合中快速判断指令功能。
- End:End是最基础的Segment Endpoint执行指令,表示中止当前指令,开始执行下一个指令,对应的转发动作是将SL值-1,并将SL指向SL-1的SID复制到IPv6报文头的目的地址中。
- X :指定一个或一组三层接口转发报文。对应的转发行为是按照指定出接口转发报文。
- T :查询路由表并转发报文。
- D :解封装。移除IPv6报文头和与它相关的扩展报文头。
- U :根据单播MAC查表转发。
- M :查询二层转发表进行组播转发。
RFC8754中定义了三种类型SR节点:
- 源节点( SR Source Node ) :生成SRv6报文的源节点。
- 中转节点( Transit Node ):转发SRv6报文但不进行SRv6处理的IPv6节点。
- Endpoint节点( SR Segment Endpoint Node ):接收并处理SRv6报文的任意节点,其中该报文的IPv6目标地址必须是本地配置的SID或者本地接口地址。
SID附加行为(Flavors)可以改变SRv6 SID的转发行为,以便适配多种业务需求。SRv6 SID附加行为包括:
- PSP(Penultimate Segment POP of the SRH):倒数第二个Endpoint节点执行SRH移除操作。为了减轻SRv6网络尾节点的负担,可以在倒数第二个Endpoint节点将SRH移除,尾节点不需要查看SRH信息,只需根据目的IPv6地址查找Local SID表进行处理。
- USP(Ultimate Segment POP of the SRH):最后一个Endpoint节点执行SRH移除操作。SRv6 VPN网络中,PE节点根据SID查找到对应的转发动作后,执行SRH移除操作,将报文转发给CE设备。
- USD(Ultimate Segment Decapsulation):最后一个Endpoint节点执行外层IPv6头移除操作。
- COC(Continue of Compression):标识本SID之后是G-SID,用于SID压缩场景,以减少SRH大小。
开启SRv6功能的节点将维护一个本地SID列表。该列表包含所有在本节点生成的SRv6 SID信息。节点根据该列表生成一个SRv6转发表。本地SID列表有以下用途:定义本地生成的SID,例如End.X SID。指定绑定到这些SID的指令。存储和这些指令相关的转发信息,例如出接口和下一跳等。
为了支持SRv6,IS-IS 协议需要发布两类SRv6 信息:Locator 信息:Locator信息用于帮助网络中的其他节点定位到发布SID的节点,然后由该节点执行SID的指令。SID 信息:SID信息用于完整描述SID的功能,比如SID绑定的Function信息。路径类SID主要描述节点或者链路,需要通过IGP扩展来进行泛洪。