华为认证HCIA+HCIP+HCIE学习笔记
三、以太网数据帧
如果数据进行封装时,基于E2或者802.3标准,此时我们称之为是一个以太网数据帧。
E2和802.3作用:定义帧头和帧尾的格式。
网络通信协议
不同的协议栈用于定义和管理不同网络的数据转发规则。
数据:对于下层的每个层级而言,上层所反馈或者传递给我的信息,下层认为皆是数据
E2帧和IEEE802.3的封装格式
1、FCS:差错检测 FCS帧校验序列 算法:CRC循环冗余校验(整体信息)
2、Type:类型,用于标识上层的协议,根据Type类型送至上层不同的协议进行处理
mac地址:又名物理地址、网卡地址。每个设备出厂时,烧录进网卡芯片中。出厂自带。在一个以太网中,mac地址的作用是唯一标识设备在链路上的什么位置。
3、S.MAC 源mac:发送端的源物理地址
4、D.MAC 目的mac:接收端的目标物理地址
Ethernet_II帧格式
Ethernet_II帧类型值大于等于1536(0x0600)Length/Type>=1536,以太网数据帧长度在64-1518字节之间。如果Data数据字段不足46字节,会补0补到46字节。
Type:用于标识上层的协议类型
IEEE 802.3帧格式
IEEE802.3帧长度字段值小于等于1500(0x05DC)Length/Type<=1500
length字段:用于标记Data域的大小
LLC:逻辑链路控制。D.SAP 目标服务接入点,将数据发到对端时需要访问的协议 S.SAP 源服务接入点,本段端数据是由本端的哪个协议产生的。一般D.SAP等于S.SAP。D.SAP与S.SAP用于公有化协议。当上层协议为私有化协议时,DSAP和SSAP标记为SNAP。
Control:作为保留字段存在,以0x03出现。
SNAP:子网络服务接入点。用于私有化协议。公有化协议不会出现此字段。Org code为机构标识。Type用于标识机构的私有化协议的类型。
MTU值:最大传输单元。表示数据能传输的最大字节。存在于每条链路的概念。
如果数据过大超过MTU值,则进行丢包或分片。
配置两个路由器,配置接口地址,以及mtu值为1400
当指定报文大小为1500且不允许分片时,ping不通丢包
允许分片时,流量通
四、MAC地址+网络层
MAC地址
mac地址,又称物理地址,网卡上烧录进网卡芯片的地址是mac地址。
MAC地址由两部分组成,分别是供应商代码和序列号。其中前24位代表该供应商代码,由IEEE管理和分配。剩下的24位序列号由厂商自己分配。
cmd查看mac地址命令为ipconfig /all
MAC地址是显示16进制数,12个16进制。
MAC地址种类:
1、单播MAC:通信形式上,点对点,单对单的通信
数据封装时,源mac和目的mac都是单播mac,则为单播通信。
单播mac地址:从高位向低位(从左往右)第8位为0,且一定为0,其他任意
2、组播MAC:通信形式上,点对多点,单对多的通信,类似于qq群聊
组播mac地址:从高位向地位(从左往右)第8位位1,且一定为1,其他任意
数据封装时,因为组播代表的一组的集合,面向一组的通信,此时组播mac不能成为数据的源地址仅能充当目的地址。
3、广播MAC:通信形式上,点对所有,单对所有的通信。广而播之/强制的接受处理。
数据封装时,因为广播代表的是所有人集合,面向所有人的通信,此时广播mac不能成为数据的源地址,仅能充当目的地址。
广播mac地址:从高位向低位48位全部为1,且一定为1。目的mac为全F。
当主机接受到的数据帧所包含的目的MAC地址是自己时,会把以太网封装剥掉后送往上层协议。
发送者的动作:
由发送者填充源mac和目的mac信息,以及type字段标识上层协议,和CRC校验,数值填充至FCS,信息都填充完毕后,此时借助物理层,转变为二进制比特流,从链路中传递
a场景:
单播数据抵达接收端以后,接收者的动作:
1、首先看目的mac,是否是自己的mac,如果不是丢弃,如果是,则进行下一步;
2、将数据进行CRC校验,比对FCS字段,如果不同则丢弃,如果相同,则进行下一步;
3、查看type字段,交由type字段标识的上层协议处理。IPV4 0x0800(2048) ARP 0x0806(2054)
数据链路层结束
b场景:
组播数据抵达接收端以后,接收者的动作
1、首先看目的mac,查看自己本地是否加组,如果没加组丢弃,如果加组,则进行下一步;
2、将数据进行CRC校验,比对FCS字段,如果不同则丢弃,如果相同,则进行下一步;
3、查看type字段,交由type字段标识的上层协议处理。
数据链路层结束
c场景:
广播数据抵达接收端以后,接收者的动作
1、首先看目的mac,如果是广播,则进行下一步;
2、将数据进行CRC校验,比对FCS字段,如果不同则丢弃,如果相同,则进行下一步;
3、查看type字段,交由type字段标识的上层协议处理。
数据链路层结束
网络层
IPV4报文头格式
1. 版本(Version - 4位)
• 作用:标识IP协议版本(IPv4固定值为0100)
• 细节:确保接收方能正确解析数据报格式。若设备不支持该版本则丢弃数据包。
2. 头部长度(Header Length - 4位)
• 作用:表示IP头部的长度(单位:32位字,即4字节)
• 细节:最小值为5(20字节无选项),最大值为15(60字节含选项)。因选项字段较少使用,常见值为5。
3. 服务类型(Type of Service - 8位)
• 作用:定义数据包的优先级和服务质量参数(如延迟、吞吐量、可靠性)
• 细节:实际使用中多被DiffServ(区分服务)或ECN(显式拥塞通知)机制替代。
4. 总包长度(Total Packet Length - 16位)
• 作用:指示整个IP数据报的长度(头+数据,单位:字节)
• 细节:最大值为65535字节,但受MTU限制(如以太网MTU通常为1500字节)。
5. 包ID(Packet ID - 16位)
• 作用:唯一标识同一数据包的所有分片(用于重组)
• 细节:发送主机为每个原始数据包分配唯一ID,分片时所有片段保留相同ID。
6. 标志(Flags - 3位)
Flags标记为分为MF、DF、RB(保留字段)
• 关键位:
• DF(Don't Fragment):DF表示是否允许分片,置1时禁止分片(如用于路径MTU发现)
• MF(More Fragments):MF表示更多分片,置1表示后续还有分片(最后一个片段置0)
7. 片段偏移(Fragment Offset - 13位)
• 作用:指示当前分片在原始数据包中的位置(单位:8字节块)
• 示例:若偏移值为100,则该分片数据从原始包的800字节处开始。
8. 生存时间(Time to Live - 8位)
• 作用:限制数据包经过的最大路由器跳数(每经过一跳减1,归零则丢弃),如果收到TTL值为1的报文,则设备丢弃该报文。
• 实际用途:防止环路,同时用于Traceroute工具实现。
9. 协议ID(Protocol ID - 8位)
• 作用:标识上层协议类型(如TCP=6, UDP=17, ICMP=1,OSPF=89)
• 意义:告知接收方将数据交给哪个协议处理。
10. 校验和(Checksum - 16位)
• 作用:仅校验IP头部完整性(不包括数据部分)
• 计算方式:对头部每16位进行反码求和,接收方验证结果应为全1。
11. 源IP地址(32位)
• 作用:标识发送主机的逻辑地址
• 关键点:NAT设备会修改此字段以实现地址转换。
12. 目的IP地址(32位)
• 作用:标识接收主机的逻辑地址
• 路由依据:路由器根据此字段决定转发路径。
13. 选项(OPTIONS - 可变长)
• 可选功能:如记录路由(Record Route)、时间戳(Timestamp)等
• 现状:极少使用,因增加头部复杂度且可能被防火墙丢弃。
14. 填充(PAD - 可变长)
• 作用:确保IP头部长度是32位的整数倍(通过补0实现)
15. 数据(Data - 可变长)
• 内容:上层协议(如TCP/UDP)的报文
• MTU限制:数据部分最大长度 = MTU - IP头长度(通常为1480字节)。
五、IP地址+VLSM
192.168.1.111----------------点分十进制--------------IPV4地址表示格式
IP地址是4组十进制数
规则:二进制0/1在不同表达的含义是不一致的,0永远代表不取值,1则表达的信息和不同的位数进行对应。
最小:所有可变的二进制位全为0 00000000=0
最大:所有可变的二进制位全为1 11111111=255
IPv4地址范围:0.0.0.0~255.255.255.255
IP地址的五类
单播地址:
A类地址:第一个8位组的第一位 一定取值为0。/8 子网掩码为255.0.0.0
0xxx xxxx.xxxx xxxx.xxxx xxxx.xxxx xxxx
最小地址:0.0.0.0
最大地址:127.255.255.255
B类地址:第一个8位组的前两位 一定取值为10。/16 子网掩码为255.255.0.0
10xx xxxx.xxxx xxxx.xxxx xxxx.xxxx xxxx
最小地址128.0.0.0
最大地址191.255.255.255
C类地址:第一个8位组的前三位一定取值为110。/24 子网掩码为255.255.255.0
110x xxxx.xxxx xxxx.xxxx xxxx.xxxx xxxx
最小地址:192.0.0.0
最大地址:223.255.255.255
组播地址:
D类地址:第一个8位组的前四位一定取值为1110。
1110 xxxx.xxxx xxxx.xxxx xxxx.xxxx xxxx
最小地址:224.0.0.0
最大地址:239.255.255.255
只能作为逻辑地址存在,不能配置在设备接口上
E类地址:第一个8位组的前四位 一定取值为1111.
1111 xxxx.xxxx xxxx.xxxx xxxx.xxxx xxxx
最小:240.0.0.0
最大为255.255.255.255
最能作为军事 科研保留地址
特殊地址:
1、0.0.0.0 0.0.0.0-0.255.255.255
作用:1、未指定的地址,当设备未分配IP地址,并通过DHCP向外界申请地址时,申请地址的源IP就是0.0.0.0
2、路由层面:0.0.0.0代表全网所有地址,配置路由时,配置目的IP为0.0.0.0,代表全网的所有地址,即默认路由、缺省路由,如果一条路由的目的地址和掩码全部为0(0.0.0.0/0),则代表这是一条默认路由,匹配所有的IP地址
注意:该路由的掩码为0,则为匹配顺序最劣的路由,本地没有路由可以匹配时,才考虑本条路由。
配置dhcp协议
<Huawei>system
[Huawei]interface GigabitEthernet 0/0/0
[Huawei-GigabitEthernet0/0/0]ip address 192.168.1.254 24
[Huawei-GigabitEthernet0/0/0]quit
[Huawei]dhcp enable
[Huawei]interface GigabitEthernet 0/0/0
[Huawei-GigabitEthernet0/0/0]dhcp select interface
[Huawei-GigabitEthernet0/0/0]dhcp server dns-list 8.8.8.8
PC1配置
PC2配置
抓DHCP request报文
可以看到DHCP request报文的源IP为0.0.0.0
2、127.0.0.0 环回地址 127.0.0.0-127.255.255.255
用于设备内部的TCP/IP协议栈使用的
IP公网和私网地址
公网地址:唯一性,全世界范围内的唯一,付费地址,需要申请
私网地址:所有的组织机构都可以任意使用的,无需付费申请,重复使用
子网掩码
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。
网段范围-----------掩码
定义两个参数:1、网络位 2、主机位
IP地址+掩码==可以定义网段的范围
192.168.1.11 IP地址 255.255.255.0 子网掩码
1、转换为二进制
1100 0000.1010 1000.0000 0001.0110 1111
1111 1111.1111 1111.1111 1111.0000 0000
2、子网掩码为1对应的位数为网络位,子网掩码位0的位数位主机位。
如果网络位相同-------------相同网段;网络位不同-------------不同网段
地址 | 网络位 | 主机位 | 网段范围 | 网段数量 | 每个网段可用主机数量 |
A | 8 | 24 | 0-127(0/127) | 27-2=126 | 224-2 |
B | 16 | 16 | 128-191 | 214=16384 | 216-2=65534 |
C | 24 | 8 | 192-223 | 221=2097152 | 28-2=254 |
网段数量=2的可变网络位的次方,
主机数量=2的可变的主机位的次方-2(减掉网段内一个网络地址和广播地址),
网络地址即主机位为全0的地址(出现在路由表中),网络地址1100 0000.1010 1000.0000 0001.0000 0000
广播地址即主机位为全1的地址(用于本网段所有主机通信),广播地址1100 0000.1010 1000.0000 0001.1111 1111
VLSM
为了分割大地址段,将大的地址段分为若干小地址段,遏制广播流量,借助子网划分技术,VLSM(可变长子网掩码),作子网划分。网络位向主机位进行借位。
193.1.1.0/24 -------网段
1100 0001.0000 0001.0000 0001.0000 0000 网络地址-----------193.1.1.0
1100 0001.0000 0001.0000 0001.1111 1111 广播地址-----------193.1.1.255
1111 1111.1111 1111.1111 1111.0000 0000 子网掩码
可用地址范围:193.1.1.1----------193.1.1.254 28-2=254
193.1.1.0/25
划分为新的两个子网
子网1:
1100 0001.0000 0001.0000 0001.0000 0000 网络地址-------------193.1.1.0/25
1100 0001.0000 0001.0000 0001.0111 1111 广播地址-------------193.1.1.127/25
1111 1111.1111 1111.1111 1111.1000 0000 子网掩码
可用地址范围:193.1.1.1----------193.1.1.126 126
子网2:
1100 0001.0000 0001.0000 0001.1000 0000 网络地址-------------193.1.1.128/25
1100 0001.0000 0001.0000 0001.1111 1111 广播地址-------------193.1.1.255/25
1111 1111.1111 1111.1111 1111.1000 0000 子网掩码
可用地址范围:193.1.1.129----------193.1.1.254 126
子网掩码变长后,变化:
1、网络位增加,网段增加(能变的范围更多了)
2、主机位减少,每个网段的主机数量变少了
子网划分举例:
项目部 | 58人 | 地址:194.2.3.128/26 |
研发部 | 100人 | 地址:194.2.3.0/25 |
市场部 | 27人 | 地址:194.2.3.192/27 |
财务部 | 15人 | 地址:194.2.3.224/27 |
194.2.3.0/24
可分配地址:192.2.3.0/24
研发部:100人--- >该子网下 满足100人 --- >需要>=100个地址
2x-2>=100 x=主机位=7 使用7个主机位 借1位
此时,划分出两个子网:
194.2.3.0 000 0000/25 --------- 194.2.3.0 /25(研发部使用)
194.2.3.1 000 0000/25 --------- 194.2.3.1 /25(其他部门使用)
网络地址: 194.2.3.0 000 0000/25 --------- 194.2.3.0/25
广播地址: 194.2.3.0 111 1111/25 --------- 194.2.3.127/25
可分配地址:
194.2.3.1 000 0000/25 --------- 194.2.3.128 /25
194.2.3.0/25~194.2.3.128/25
项目部:58人--- >该子网下 满足58人 --- >需要>=58个地址
2x-2>=58 x=主机位=6 使用6个主机位 借1位
此时,划分出两个子网:
194.2.3.10 00 0000/26 --------- 194.2.3.128 /26(项目部使用)
194.2.3.11 00 0000/26 --------- 194.2.3.192 /26 (其他部门使用)
网络地址: 194.2.3.10 00 0000/26 --------- 194.2.3.128/26
广播地址: 194.2.3.10 11 1111/26 --------- 194.2.3.191/26
可分配地址:
194.2.3.1 000 0000/26 --------- 194.2.3.192 /26
194.2.3.128/26 ~ 194.2.3.192/26
市场部:27人--- >该子网下 满足27人 --- >需要>=27个地址
2x-2>=27 x=主机位=5 使用5个主机位 借1位
此时,划分出两个子网:
194.2.3.110 0 0000/27 --------- 194.2.3.192 /27 (市场部使用)
194.2.3.111 0 0000/27 --------- 194.2.3.224 /27(其他部门使用)
网络地址: 194.2.3.110 0 0000/27 --------- 194.2.3.192/27
广播地址: 194.2.3.110 1 1111/27 --------- 194.2.3.223/27
可分配地址:
194.2.3.110 0 0000/27 --------- 194.2.3.224 /27
194.2.3.128/27 ~ 194.2.3.224/27
财务部:15人--- >该子网下 满足15人 --- >需要>=15个地址
2x-2>=15 x=主机位=5 使用5个主机位 无需借位
194.2.3.111 00000/32 --------- 194.2.3.255 /32 (财务部使用)
网络地址: 194.2.3.111 0 0000/27 --------- 194.2.3.224/27
广播地址: 194.2.3.111 1 1111/27 --------- 194.2.3.255/27
可分配地址:
194.2.3.110 0 0000/27 --------- 194.2.3.240 /27
194.2.3.224/27 ~ 194.2.3.255/27
六、CIDR与ICMP
CIDR-------无类域间路由/超网
在对外通告路由的时候,将多个小的子网,用一个相对更大的地址范围进行概括,以此实现表项的优化。
10.24.0.0/22 地址范围
0000 1010.0001 1000.0000 0000.0000 0000
1111 1111.1111 1111.1111 1100.0000 0000
网络地址:0000 1010.0001 1000.0000 0000.0000 0000 10.24.0.0
广播地址:0000 1010.0001 1000.0000 0011.1111 1111 10.24.3.255
可用地址范围:10.24.0.1~10.24.3.254
举例:子网划分有如下四个,CIDR通告路由是多少(10.1.0.0/22)
10.1.0.0/24
10.1.1.0/24
10.1.2.0/24
10.1.3.0/24
1、将子网转换为二进制
0000 1010.0000 0001.0000 0000.0000 0000-----10.1.0.0
0000 1010.0000 0001.0000 0001.0000 0000-----10.1.1.0
0000 1010.0000 0001.0000 0010.0000 0000-----10.1.2.0
0000 1010.0000 0001.0000 0011.0000 0000-----10.1.3.0
2、自高位向低位进行对比,位数相同原封不动进行取值,一旦不同,停止对比行为,后方全部取值位0,即便后方还有相同位数。
0000 1010.0000 0001.0000 0000.0000 0000-----10.1.0.0
0000 1010.0000 0001.0000 0001.0000 0000-----10.1.1.0
0000 1010.0000 0001.0000 0010.0000 0000-----10.1.2.0
0000 1010.0000 0001.0000 0011.0000 0000-----10.1.3.0
0000 1010.0000 0001.0000 0000.0000 0000
3、将相同位数取值完毕,转换成十进制,将相同的位数取值为掩码缩写的前缀。
0000 1010.0000 0001.0000 0000.0000 0000--------10.1.0.0/22--------->255.255.252.0
如果新加入了10.1.4.0/24网段
0000 1010.0000 0001.0000 0100.0000 0000-----10.1.4.0
新CIDR地址为:
0000 1010.0000 0001.0000 0000.0000 0000--------10.1.0.0/21------------网络地址
0000 1010.0000 0001.0000 0111.1111 1111--------10.1.7.255/21------------广播地址
地址范围:10.1.0.1----------10.1.7.254
最优通告路由方法:
10.1.1.0/22 --------上边四条
10.1.4.0/21---------新加入的一条
ICMP
同网段 通信时可以直接通信
跨网段 通信时是不可以直接通信的
1、通信时,发送端的主机会使用对方的IP地址+自己的掩码进行计算,算出对方的网络地址
2、计算之后,将对方的网络地址和自己的网络地址进行对比,相同,则认为在同一个网段;不同,则认为不在同一个网段
当更改右侧IP为192.168.1.5,且掩码为255.255.255.252时,PC2无法ping通PC1
掩码计算
网关
网关gateway用来转发来自不同网段之间的数据包。网关设备上连接本地网段的接口地址即为该网段的网关地址。网关地址是一个配置在某个接口上的地址。
ping
ping------------------用于检测链路通断 到目的地设备连通性 指令形式:ping + 目的地址
ICMP协议,全名Internet控制消息协议,是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息,并对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。
Type表示ICMP消息类型,Code表示同一消息类型中的不同信息。
ICMP用来传递差错、控制、查询等信息
ICMP消息类型与编码
Ping的报文过程
当PC3 ping网关地址时,会发送ICMP request报文,AR1收到ICMP request报文后会回复ICMP reply报文
报文如下
ICMP request报文格式
ICMP reply报文格式
Tracert
Tracert -------路由追踪功能
利用ICMP的TTL超时回复,返回沿途的IP地址
当TTL值为0时,会丢弃ICMP request报文,并返回一个ICMP目的不可达的报文
TTL超时报文报文格式
中间三台路由器建立了ospf路由连接
然后使用tracert -m 1 3.3.3.3的命令,指定最大ttl值为1,去tracert第三台设备上的loopback口地址
端口抓包获取到ttl超时报文
可以看到ttl超时报文的ICMP code为11 0,源IP为10.1.1.2 目的IP为10.1.1.1
多路径探测
ICMP重定向
如果主机A访问20.0.0.1/24的地址,访问20网段的地址,会先去网关RTB查询路由,RTB查询到路由后,报文的路径为主机A---->RTB---->RTBA----->服务器A,但是这样的路径为次优路径。
最优路径为主机A---->RTA----->服务器A:对于主机A而言,如果主机报文达到了网关RTB,如果网关RTB查询到主机报文需要从接收到主机报文的端口发回到服务器A,那么此时会触发ICMP重定向。
七、ARP
如果源目的IP处在同一网段,则源查看本地ARP缓存,在缓存中是否由目的IP所对应的mac地址,如果有,则进行数据封装,如果没有则借助ARP获取目的IP所对应的mac地址
如果源目的IP不在同一网段,则源查看ARP缓存中是否存在网关IP所对应的mac地址,如果有则直接封装数据,如果没有,则借用ARP协议获取网关IP所对应的mac地址
ARP----------------地址解析协议
在已知IP地址的情况下,求与之对应的mac地址
1、如果两个设备进行通信时,会检测对方的IP地址和我是否在同一网段
比对:网络地址---------->自己IP S-IP+自己掩码
对方IP D-IP+自己掩码
相同则进行第二步
2、借用ARP协议实现该操作(获取对方IP对应的mac)
广播域:广播报文能够传递的范围
-- 交换机的所有端口属于同一个广播域(不划分vlan)
-- 路由器的每个接口都是一个广播域
-- 广播报文是无法穿越路由器的三层接口的
先清除ARP表项
<Huawei>reset arp all
然后在R1上ping 3.3.3.3
抓接口报文
可以发现R1设备先对外发送了广播ARP报文
然后下一跳R2设备回复了一个arp单播报文,并携带了下一跳R2的源MAC(转发的目的MAC),arp单播报文源IP为10.1.1.2,目的IP为10.1.1.1
ARP映射表
ARP映射表中存放IP地址和MAC地址的对应关系,ARP表的作用是用于通信设备进行数据封装,存在于任何需要封装数据的设备
<Huawei>display arp all
ARP表项中存放的是动态的ARP缓存。动态ARP缓存存在老化时间,默认缺省老化时间为20min。可以在接口下配置ARP老化时间
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]arp expire-time 1800
[Huawei-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
arp expire-time 1800
ip address 10.1.1.1 255.255.255.0
#
return
ARP老化探测机制
如果到了20min后,会有三次ARP老化探测,分别以单播、单播、广播方式进行发送,如果收到对端的设备的回复,会刷新老化时间。
如果是同网段IP地址,本机会直接请求同网段目的IP的mac地址,如果是跨网段,设备会请求网关地址。
同网段
ARP request
ARP reply
跨网段
ARP request
ARP reply
ARP代理
ARP三种模式:路由式ARP代理、vlan间ARP代理、vlan内ARP代理
主机A和主机B在同网段,但ARP代理路由器接口处在不同的网段。所以ARP的广播包通过路由器无法到达10.2.0.1/8,主机A就无法获取到主机B的mac。需要在路由器上启动ARP代理,启动ARP代理后,主机A发过来的ARP请求后,路由器会先查询本地路由表,如果存在目的IP地址的路由,就会将G0/0/0的网关地址的mac当作目的mac回复给主机A,由路由器代为转发。
具体命令行,在接口下开启arp代理
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]arp-proxy enable
RARP
与ARP相反,在已知mac地址的情况下,求与之对应的IP地址
免费ARP
免费ARP可以用来探测IP地址是否冲突。只要配置接口地址,接口就会向外界发送免费ARP,用于重复地址检测,以保证一个网段有两个相同的IP地址。
免费ARP的源目的IP都为配置的接口地址,如果没有冲突,则无回复arp reply,否则会有arp reply。
八、传输层协议
传输层定义了主机应用程序之间的端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP和用户数据包协议UDP。
传输层:实现“端到端”的服务,应用到应用。通过端口号区分不同的应用
端口=port[逻辑端口]
基于应用级别的互访,就是端口到端口的互访
传输层端口的范围:0-65535[端口范围]====TCP/UDP
0------1023端口:知名端口 提前保留出来的端口
TCP协议:SSH服务[22]Telnet服务[23] HTTP服务[80] HTTPS[443]FTP[21、20]
UDP协议:DNS服务[53] DHCP协议[67/68]
ICMP协议 [1]
TCP:传输控制协议--------------面向连接的协议
----只能适用于单播通信
----可以给予建立良好的连接,灵活的对接下来的数据传递进行控制
----无法很好地满足即时性的业务要求,传递一些文件 稳定性支持性很好
----如果上层数据过大,大过mtu大小,需要执行分片操作
UDP协议:用户数据包协议------------面向无连接的协议
----保证数据进行传输,但是UDP无法对于传递的数据进行控制,如果想对数据做控制,此时借用应用层实现
----可以很好的满足即时性的要求,对时间要求比较高
----对于上层传递的数据,“全盘接收”[没有分片机制],用于相对比较小的流量
连接:正式发送数据之前,提前建立好一种虚拟的“点到点”式的连接=单播的模式
TCP
TCP头部
1. 源端口(Source Port)
长度:16 比特(2 字节)
作用:标识发送方的应用程序端口号(0~65535)。
示例:HTTP 客户端随机端口:49152(动态端口范围)服务器 SSH 端口:22
2. 目的端口(Destination Port)
长度:16 比特(2 字节)
作用:标识接收方的应用程序端口号。
示例:HTTP 服务器端口:80 DNS 查询端口:53
3. 序列号(Sequence Number)
长度:32 比特(4 字节)
作用:在连接建立(SYN) 时,初始序列号(ISN)由系统随机生成(防预测攻击)。后续数据按字节编号,用于 数据排序和可靠性确认。
示例:第一个数据包:ISN = 123456789 发送 100 字节后:123456789 + 100 = 123456889
4. 确认号(Acknowledgment Number)
长度:32 比特(4 字节)
作用:仅在 ACK=1 时有效,表示接收方期望收到的下一个字节序号(即已成功接收 Ack-1 之前的所有数据)。用于 可靠传输(接收方确认数据,发送方重传丢失数据)。
示例:发送方发送 Seq=1, Len=100,接收方回复 Ack=101(表示期望收到第 101 字节)。
5. 数据偏移(Data Offset / Header Length)
长度:4 比特
作用:表示 TCP 头部长度(以 4 字节 为单位),最小 5(20 字节),最大 15(60 字节,含可选字段)。用于定位 数据部分 的起始位置。
示例:0101(5 × 4 = 20 字节,标准头部)
6. 保留(Reserved)
长度:6 比特
作用:保留字段,必须设为 0(未来扩展用)。
7. 控制标志(Control Flags)
长度:6 比特(每个标志占 1 比特)
作用:控制 TCP 连接状态和数据传输行为:
标志位 名称 作用
URG 紧急指针 表示数据需要优先处理(如 Ctrl+C 中断信号)
ACK 确认 表示 Acknowledgment Number 有效
PSH 推送 要求接收方立即提交数据给应用层(如 Telnet 实时交互)
RST 重置 强制终止异常连接(如端口未监听)
SYN 同步 发起连接请求(三次握手阶段)
FIN 结束 正常关闭连接(四次挥手阶段)
示例:
三次握手:SYN=1, ACK=0 → SYN=1, ACK=1 → ACK=1
四次挥手:FIN=1, ACK=1 → ACK=1 → FIN=1, ACK=1 → ACK=1
8. 窗口大小(Window Size)
长度:16 比特(2 字节)
作用:接收方告知发送方 当前可接收的数据量(字节数),用于 流量控制。受接收方缓冲区剩余空间限制(可通过 SO_RCVBUF 调整)。
示例:Window=8192(表示可接收 8KB 数据)
9. 校验和(Checksum)
长度:16 比特(2 字节)
作用:校验 TCP 头部 + 数据 + 伪头部(IP 部分字段) 的完整性。计算方法:反码求和(类似 IP 校验和)。伪头部字段(12 字节,仅用于计算校验和):复制源 IP(4)| 目的 IP(4)| 保留(1)| 协议(1)| TCP 长度(2)
10. 紧急指针(Urgent Pointer)
长度:16 比特(2 字节)
作用:仅在 URG=1 时有效,表示紧急数据的末尾偏移量(相对于 Sequence Number)。用于中断或高优先级数据(如 Telnet Ctrl+C)。
示例:Seq=100, URG=1, Urgent Pointer=50 → 紧急数据范围:100~149
11. 可选字段(Options)
长度:可变(最多 40 字节)
作用:扩展 TCP 功能,常见选项:
MSS(Maximum Segment Size):协商最大报文段长度(如 1460 字节)。
SACK(Selective ACK):选择性确认,优化重传。
Window Scaling:窗口缩放因子(扩大窗口至 1GB)。
Timestamp:时间戳(计算 RTT,防序列号回绕)。
格式:复制Kind(1)| Length(1)| Data(可变)
示例(MSS 选项):复制02(Kind) 04(Length) 05 B4(MSS=1460)
12. 填充(Padding)
作用:确保 TCP 头部长度是 4 字节的倍数(对齐)。
示例:若选项字段占 3 字节,则填充 1 字节 0x00。
TCP三次握手
TCP通过三次握手建立可靠连接,在连接建立完毕之前,主机间不会传递数据
1、主机A向服务器A发送SYN报文,seq=a(随机序列号)
2、服务器A回复主机A SYN ACK报文,seq=b,ack=a+1 。确认服务器A收到了主机A的报文,并要求和主机A也建立连接
3、主机A确认收到服务器A的SYN ACK报文,并返回确认ACK报文,seq=a+1,ack=b+1
TCP三次握手报文
TCP五元组<源IP,目的IP,源端口号,目的端口号,协议>
TCP传输过程
如果服务器A未收到数据段N+3 Seq:M+1500-M+1999报文,而收到了数据段N+4、N+5报文,服务器A不会直接丢弃N+4、N+5数据段,而直接在本地缓存N+4、N+5数据段,且不会回复N+4、N+5的ACK,并要求主机A重传N+3数据段。而主机A会重传N+3、N+4、N+5报文,服务器A会比对这三个报文且把N+3数据段重新填上,然后对N+3、N+4、N+5进行整体确认。
TCP确认机制
1、三次握手中,小ack=对方seq+1
2、数据传输时,小ack=对方所传递的数据的最大值+1
TCP超时重传机制(RTTS加权平均往返时间)
如果所有的报文全部丢了,主机1会在本地会根据RTTS加权平均往返时间进行超时重传。在建立连接的过程中无超时重传机制。
TCP流量控制
主机A先向服务器A发送4个报文,设置滑动窗口为4,但是服务器的滑动窗口为3,缓存区满,此时丢弃第四个报文,回复确认ack为3,确认收到seq=2的报文,并携带window=3的字段,主机A接收到报文后,按接收方的修改的滑动窗口为3的字段,修改自己的滑动窗口为3,后续发送报文以3个为一组数据进行滑窗。
TCP MSS
MSS,最大报文段长度,MSS的长度时三次握手时,options位进行协商。对于TCP来说,相对上层最大的报文段长度位1460B(MTU1500字节-三层封装IP头长度20字节-四层封装TCP头长度20字节)。
TCP SYN报文
TCP四次挥手关闭连接
FIN置位的报文不携带上层数据
主机在关闭连接之前,确认收到来自对方的ACK,要保证收到对方的数据完毕,才能断开连接。
UDP
UDP是一种面向无连接的传输层协议,传输可靠性没有保证
使用UDP传输数据时,由应用程序根据需要提供报文到达确认、排序、流量控制等功能。
UDP不提供重传机制,占用资源小,处理效率高
一些延时敏感的流量,如语音、视频等,通常使用UDP作为传输层协议
UDP头部
UDP报文
九、设备管理+路由基础
设备管理
ensp配置两个路由器相互telnet连接,ensp中使用AR2240,配置接口IP
更改两个路由器的hostname
[Huawei]sysname AR5
[Huawei]sysname AR6
然后在AR5上配置如下命令行
[AR5]user-interface vty 0 4
[AR5-ui-vty0-4]authentication-mode password
Please configure the login password (maximum length 16):123456
同样在AR6上配置vty
[AR6]user-interface vty 0 4
[AR6-ui-vty0-4]authentication-mode password
Please configure the login password (maximum length 16):123456
然后在AR5上telnet 10.1.1.2
<AR5>telnet 10.1.1.2
Press CTRL_] to quit telnet mode
Trying 10.1.1.2 ...
Connected to 10.1.1.2 ...
Login authentication
Password:
<AR6>
查看vty配置
[AR6-ui-vty0-4]display this
[V200R003C00]
#
user-interface con 0
authentication-mode password
user-interface vty 0 4
authentication-mode password
set authentication password cipher %$%$19$IC{I%'Qpa]UTKreSV,"4cEU0vJ!+R9"\*l4#K
-'eA"4f,%$%$
user-interface vty 16 20
#
return
可以抓下两侧的交互报文
可以看到telnet包数据部分中的密码
路由表
路由器寻址转发时查询路由表,根据路由进行具体的转发。路由分为主机路由(32位掩码)和网段路由。
查询路由表的命令行
[Huawei-GigabitEthernet0/0/2]display ip routing-table
路由表中可以可以以看到目的IP/掩码、路由协议、优先级、开销、下一跳、出接口
目的IP/掩码:记录到达的目的网络和掩码信息,如果目的IP为127.0.0.1的地址,只用于测试协议栈,不做任何转发处理。路由转发的时候,查表遵循最长掩码匹配的原则,对于相同的目的地址的路由,选择按照掩码最长的路由进行转发。
路由协议:记录的是路由信息是由什么协议形成的
优先级:代表形成路由的协议的优先级数值,路由的优先级,路由的优先级越小越优先。ospf优先级默认为10
cost:开销值,代表路由的开销,cost的值越小越优先
NextHop:下一跳地址,数据离开本路由器需要抵达的地址
出接口:去往下一跳地址,报文发送应该从本设备的哪个接口发出去,接口的编号就是出接口
路由表的加表原则
如果目的地网络以及掩码信息不一致,则都会加表,如果一致的情况下,才会触发比较。
最优加表
1、优先级 :优先级越小的优先级越高,优先加表
2、cost:cost值越小,优先加表,不同的路由协议计算cost方式是不一样的。直连路由/静态路由的cost值都为0
3、等价路由:当优先级和cost值一致时,都会加表
路由表的形成
路由表分为直连路由、静态路由、动态路由
直连路由:direct----------是根据本网络的物理直连接口信息形成的
接口处于Up状态[物理状态=通电 连接设备]
接口物理状态为Up,则直连路由存在;物理状态为down,则直连路由消失
环回口:逻辑接口,只要设备不宕机,loopback接口状态一直up
网络地址+广播地址+当前接口的地址
网络地址:标识一个网段的范围
配置了接口地址后,会在本地自动形成一个/32的主机路由,用于未来访问本设备时,进行转发
判断端口是否up的命令为
[Huawei]display ip interface brief
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 2
The number of interface that is DOWN in Physical is 2
The number of interface that is UP in Protocol is 2
The number of interface that is DOWN in Protocol is 2
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 unassigned down down
GigabitEthernet0/0/1 10.1.1.1/24 up up
GigabitEthernet0/0/2 unassigned down down
NULL0
可以看到接口的物理up和协议up
配置IP地址之后,直连路由可以生成当前接口的主机路由、本网段网络路由、本网段广播地址三条路由
[Huawei]display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.1.0/24 Direct 0 0 D 10.1.1.1 GigabitEthernet0/0/1
10.1.1.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
10.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
十、静态路由
静态路由书写配置格式
ip route-static [目的地址] [掩码] [下一跳地址]
将AR1和AR2配置成环路
AR1上的配置,配置默认路由
[Huawei]ip route-static 0.0.0.0 0 12.1.1.2
AR2上的配置,配置默认路由
[Huawei]ip route-static 0.0.0.0 0 12.1.1.1
当ping一个任意网络中不存在的地址时
抓包设备会发出目的地址为34.5.6.7的地址,ttl从255开始一直到0
形成环路
去掉默认路由使三台PC间可以互通
AR1
ip route-static 23.1.1.0 255.255.255.0 12.1.1.2
ip route-static 192.168.2.0 255.255.255.0 12.1.1.2
ip route-static 192.168.3.0 255.255.255.0 12.1.1.2
AR2
ip route-static 192.168.1.0 255.255.255.0 12.1.1.1
ip route-static 192.168.3.0 255.255.255.0 23.1.1.3
AR3
ip route-static 12.1.1.0 255.255.255.0 23.1.1.2
ip route-static 192.168.1.0 255.255.255.0 23.1.1.2
ip route-static 192.168.2.0 255.255.255.0 23.1.1.2
静态路由的加表原则:保证下一跳地址能够顺利通过某个出接口可达,也就是下一跳地址在本地有一条路由可达,则出接口会自动配置成下一跳地址的路由的出接口。
浮动静态路由[路由备份]
在路由加表的时候做控制,使得链路形成主备链路的路由
静态路由的优先级为60,直连路由的优先级为0
在AR1和AR4上都配置默认路由,并配置优先级,静态路由表优先级为60
AR1
ip route-static 0.0.0.0 0.0.0.0 20.1.1.1 preference 255
ip route-static 0.0.0.0 0.0.0.0 10.1.1.1
AR4
ip route-static 0.0.0.0 0.0.0.0 30.1.1.1 preference 255
ip route-static 0.0.0.0 0.0.0.0 40.1.1.2
查看AR1路由表
当shutdown AR1上的GE0/0/1接口时
可以看到默认路由的下一跳地址为20.1.1.1,出接口为GE0/0/2,这样形成了主备链路浮动路由(frr)。
查看AR4路由表
十一、动态路由-OSPF(上)
静态路由无法感知到链路中的网络状态以及网络中的拓扑结构变化。动态路由通过在设备上运行动态路由协议,可以通过路由协议自动交互路由信息。
AS域
AS是自治系统,AS是衡量是协议是否是内外部网关协议的标准。统一的管理者构建的网络系统,叫做一个AS,AS内的策略比较单一。AS分为公有AS和私有AS,公有AS需要专门申请AS号,私有AS不需要申请。
动态路由协议分类
动态路由协议分为两类:
IGP协议:内部网关协议 如果协议在一个AS内运行,则为内部网关协议。比如OSPF、ISIS、IBGP
EGP协议:外部网关协议 如果协议在AS间运行,则为外部网关协议。比如EBGP
OSPF协议
OSPF:开放式最短路径优先协议。它是一种基于链路状态的内部网关路由协议。
RIP:路由信息协议是一种基于距离矢量算法的路由协议,存在着收敛慢、易产生路由环路、可扩展性差等问题,目前已逐渐被OSPF取代。运行距离矢量路由协议的路由器会周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中。RIP只知道路由的传递,但是不知道路由具体的始发信息。
RIP路由传递方式
查看路由是否可以加表,如果路由可以加表,可以通过RIP协议传递路由,如果不能加表,则不能传递路由,RIP路由将路由传递给相邻的设备。
OSPF传递路由的详细信息(链路状态信息),包括信息的产生者,信息产生者的链路状态(以太网链路),链路的开销信息(cost)。当路由器从一个接口收到了链路状态信息,会通过从接收端口之外的其他运行OSPF的接口将链路状态信息泛洪。OSPF协议运行时是基于端口的
OSPF与RIP最根本的区别是能否识别信息的产生者,OSPF可以识别信息的产生者,RIP路由不能识别
OSPF LSA泛洪报文
OSPF LSA:OSPF链路状态通告
OSPF LSDB:OSPF链路状态数据库
查看设备链路状态数据库
路由器泛洪LSA后,会将所有的LSA组装在一起形成链路状态数据库LSDB,LSA是对路由器周围的网络拓扑的结构的描述,LSDB是对整个AS的网络拓扑结构的描述。路由器将LSDB转换成一张带权的有向图,此有向图就是对整个网络拓扑结构的真实反映。在网络拓扑稳定的情况下,各个路由器得到的有向图是完全相同的。如果需要同步数据信息,两个设备间的ospf必须在同一个区域内。
路由器根据SPF算法(最短路径优先算法)计算到达目的网络的路径,不是根据路由通告来获取路由信息。每台路由器根据有向图,使用SPF算法计算出一颗以自己为根的最短路径树,这棵树给出到AS中各节点的的路由。
OSPF运行机制
OSPF运行机制包括5个步骤
1、通过交互Hello报文形成邻居关系
路由器运行OSPF协议后,会从所有启动OSPF协议的接口上发送Hello报文。如果两台路由器共享一条公共数据链路,并且能够成功协商各自Hello报文中所指定的某些参数,就能形成邻居关系。
2、通过泛洪LSA通告链路状态信息
形成邻居关系的路由器之间进一步交互LSA形成邻接关系。每台路由器根据自己周围的网络拓扑结构生成LSA,LSA描述了路由器所有的链路、接口、邻居及链路状态等信息,路由器通过交互这些链路信息来了解整个网络的拓扑信息。由于链路的多样性,OSPF协议定义了多种LSA类型。
3、通过组建LSDB形成带权有向图
通过LSA的泛洪,同步LSA,路由器会把收到的LSA汇总记录在LSDB中,构建LSDB数据库。最终,所有路由器都会形成同样的LSDB。LSA是对路由器周围网络拓扑结构的描述,而LSDB则是对整个自治系统的网络拓扑结构的描述,LSDB是LSA的汇总。
4、通过SPF算法计算并形成路由
当LSDB同步完成之后,每一台路由器都将以其自身为根,使用SPF算法来计算一个无环路的拓扑图来描述它所知道的到达每一个目的地的最短路径(最小的路径代价)。这个拓扑图就是最短路径树,有了这棵树,路由器就能知道到达自治系统中各个节点的最优路径。
5、维护和更新路由表
根据SPF算法得出最短路径树后,每台路由器将计算得出的最短路径加载到OSPF路由表形成指导数据转发的路由表项,并且实时更新。同时,邻居之间交互Hello报文进行保活,维持邻居关系或邻接关系,并且周期性地重传LSA。
邻居关系
邻居/邻接,首先要建立关系,才能保证之后数据的同步。然后互相发送LSA,进行数据同步,构建LSDB。最后通过SPF算法计算路由。这三步分别对应邻居表,LSDB,OSPF路由表
网络类型 | 是否和邻居建立邻接关系 |
P2P | 是 |
Broadcast |
DR与BDR、DRother建立邻接关系 BDR和DR、DRother建立邻接关系 DRother之间只建立邻居关系 |
NBMA | |
P2MP | 是 |
OSPF邻居建立条件
1、版本一致
2、Router-ID不能冲突
3、区域ID一致
4、认证类型和认证密码一致
5、两端接口IP要求在相同网段
6、两端接口掩码要求相同
7、Hello发送时间间隔一致
8、Dead时间一致
9、Option选项中Nbit和Ebit需要一致
10、双方接口的MTU一致
十二、动态路由-OSPF(下)
OSPF报文封装在IP报文中,协议号为89
OSPF报文
OSPF报文是在一个广播域内进行传递
1、Hello报文
主要作用是邻居发现、建立双向通信、指定DR/BDR、保活。Hello报文的发送间隔是10S,每10S发送一个Hello报文
邻居发现:使能了OSPF功能的接口会周期性地发送Hello报文,与网络中其他收到Hello报文的路由器协商报文中的指定参数,决定是否建立邻居关系。
建立双向通信:如果路由器发现收到的Hello报文的邻居列表中有自己Router ID,则认为已经和对端建立了双向通信,邻居关系建立。
指定DR和BDR:Hello报文包含DR优先级和Router ID等信息,每台路由器将自己选出的DR和BDR写入Hello报文的DR和BDR字段中,然后进行DR和BDR的选举。
保活:在建立邻居关系后,使能OSPF功能的接口仍周期性地发送Hello报文维护邻居关系,如果在一定的时间间隔内没有收到邻居发来的Hello报文,则中断邻居关系。
目的IP为224.0.0.5组播地址。OSPF报文的TTL为1
OSPF Header:OSPF通用头部
版本:OSPF版本号。为2或3,用于描述当前OSPF协议的版本
消息类型:用于描述当前OSPF报文的类型。1代表Hello,2代表DD,3是LSR,4是LSU,5是LSACK
包长度:代表OSPF报文的长度,OSPF头部长度+OSPF Packet总长度
Source OSPF Router:用于描述发送该Hello报文的路由器的Router ID
Area ID:区域ID。用于描述发送该OSPF报文的接口在哪个区域中
Checksum:校验和,校验OSPF报文数据。用于保证报文的完整性
Auth Type:认证类型,NULL为空代表未启用认证
Auth Data:认证数据
网络掩码:255.255.255.0。用于描述发送该Hello报文路由器的接口掩码长度。
Hello间隔时间:Hello报文发送的时间间隔,Hello报文发送时间间隔为10S
Option选项位:可选项,在常规OSPF邻居建立的时候需要满足Ebit和Nbit一致
Router Priority:用于描述发送该OSPF报文的接口的DR优先级。用于选举DR、BDR
Router Dead Interval:Hello报文的失效时间,Hello报文死亡时间。在规定时间内未收到邻居Hello包,OSPF协议会移除邻居,失效时间=4*Hello间隔时间
DR/BDR:指定路由器/备份指定路由器,用于描述该链路上的DR/BDR,取值为DR/BDR的接口IP地址。
修改OSPFHello报文发送时间间隔,默认10S
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]ospf timer hello 20
[Huawei-GigabitEthernet0/0/1]ospf timer dead 80
2、DD报文
两台路由器在邻接关系初始化时,DD报文(Database Description packet)用来协商主从关系,此时报文中只包含LSA的Header。在两台路由器交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。
邻接关系建立之后,路由器使用DD报文描述本端路由器的LSDB,进行数据库同步。DD报文里包括LSDB中每一条LSA的Header(LSA的Header可以唯一标识一条LSA),即所有LSA的摘要信息。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量。对端路由器根据LSA Header就可以判断出是否已有这条LSA。
3、LSR报文
两台路由器互相交换过DD报文之后,需要发送LSR报文(Link State Request packet)向对方请求更新LSA。LSR报文里包括所需要的LSA的摘要信息,用于向对方请求所需要的LSA
4、LSU报文
LSU报文(Link State Update packet)用来向对端路由器发送其所需要的LSA或者泛洪本端更新的LSA,其报文内容是多条完整的LSA的集合。为了实现泛洪的可靠性传输,需要LSAck报文对其进行确认,对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。
5、LSACK报文
LSAck报文(Link State Acknowledgment packet)用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header。一个LSAck报文可对多个LSA进行确认。
OSPF的配置几个参数
1、OSPF的process-ID 进程号:本设备标识OSPF进程,进程号本地有效
2、OSPF的router-id:路由器ID。如果不配置router-id,则路由器会以接口IP为router-id
查看路由器的ospf简要信息
display ospf brief
或者
查看路由器的全局Router-id
display router id
RID的两种生成方式
-人为配置
-自动产生:系统的router-id---->设备自动产生的router-id
如果不配置router-id,则以设备上第一个up接口的接口地址作为ospf的router-id。如果多个接口同时UP,则选举设备上接口地址最大的地址作为router-id。
-ospf router-id特点:一经确定,除非设备重置或者ospf进程重置,否则不会改变
重置ospf进程,用户视图下
reset ospf 1 process
3、OSPF的area区域号:区域号相同,则为相同区域
LSA同步的前提条件,就是OSPF在相同的area区域中。
OSPF在区域间防环是骨干区和非骨干区,OSPF在区域内防环是使用SPF算法进行防环。
骨干区域:区域0-------------OSPF必须要有的区域
非骨干区域:非0区域
4、OSPF建立关系需要借助接口
network-----------宣告
-1、区域下宣告network [接口信息] [反掩码信息]
[Huawei]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1 router-id 1.1.1.1
area 0.0.0.1
network 10.1.1.0 0.0.0.255
#
return
-2、接口下宣告
ospf enable 进程号 area 0
接口下宣告前提:必须先保证全局开启了ospf协议,建立了该进程,并创建了区域0
[Huawei]interface loopback1
[Huawei-LoopBack1]ospf enable 1 area 1
[Huawei-LoopBack1]display this
[V200R003C00]
#
interface LoopBack1
ip address 1.1.1.1 255.255.255.255
ospf enable 1 area 0.0.0.1
#
return
[Huawei-LoopBack1]display ospf routing
OSPF Process 1 with Router ID 1.1.1.1
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
1.1.1.1/32 0 Stub 1.1.1.1 1.1.1.1 0.0.0.1
10.1.1.0/24 1 Transit 10.1.1.1 1.1.1.1 0.0.0.1
3.3.3.3/32 2 Stub 10.1.1.2 3.3.3.3 0.0.0.1
20.1.1.0/24 2 Transit 10.1.1.2 3.3.3.3 0.0.0.1
Total Nets: 4
Intra Area: 4 Inter Area: 0 ASE: 0 NSSA: 0
OSPF七种状态-邻居状态机
查看OSPF邻居
[Huawei]display ospf peer brief
-当前ospf协议与其他设备的OSPF协议处于什么状态
Down:路由器尚未收到任何Hello报文,或邻居关系已断开。此时路由器会主动发送Hello报文以探测邻居。代表OSPF没有发现任何OSPF邻居
Init:路由器收到邻居的Hello报文,但报文中未包含自己的Router ID,表明邻居尚未感知到自身。
无active neighbor字段,未感知到邻居
2-way:双方Hello报文中均包含对方的Router ID,邻居关系建立成功。若为广播网络,此时会选举DR(指定路由器)和BDR(备份指定路由器)。当设备处于2-way状态,则设备间建立了邻居关系。收到了OSPF邻居发送的Hello报文,并且发现了对方的active-neighbor有自身的RID。
路由器使用DD报文来进行主从路由器的选举和数据库摘要信息的交互
DD报文包含LSA的头部信息,用来描述LSDB的摘要信息。DD报文是单播发送的。
exstart:路由器通过交换空的DD(Database Description)报文选举主从关系(Router ID大的为主),并协商序列号以确保可靠传输。从设备先发目录,主设备后同步目录并确认。
exchange:路由器交换包含LSA摘要信息的DD报文,同步链路状态数据库(LSDB)的概要信息。进行LSDB同步时,尽量不同步冲突的信息,OSPF同区域的LSDB必须同步。当主从关系确定之后,进入exchange状态发送带有LSA摘要信息的DD报文。
loading:路由器通过LSR(Link State Request)请求缺失的LSA,接收LSU(Link State Update)更新,并通过LSACK确认,最终完成LSDB同步。当收到了对方的DD报文之后,同时发现M=0,将会进入到loading状态请求自身没有的LSA。
Full:LSDB完全同步,邻接关系建立完成,路由器可基于一致的路由信息进行数据转发。当设备处于Full状态,则设备间建立了邻接关系。当自身请求列表中,所有待接收的LSA,对方发送过来之后,将会进入到Full状态。
OSPF配置实验
AR1 OSPF配置
[Huawei]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1 router-id 1.1.1.1
area 0.0.0.1
network 1.1.1.1 0.0.0.0
network 10.1.1.0 0.0.0.255
#
return
AR2 OSPF配置
[Huawei]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1 router-id 2.2.2.2
area 0.0.0.1
network 10.1.1.0 0.0.0.255
network 20.1.1.0 0.0.0.255
#
return
AR3 OSPF配置
[Huawei]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1 router-id 3.3.3.3
area 0.0.0.1
network 3.3.3.3 0.0.0.0
network 20.1.1.0 0.0.0.255
#
return
OSPF选举DR/BDR
在OSPF中,DR(指定路由器)/BDR(备份指定路由器)的选举是为了在广播型网络(如以太网)或多路访问网络中减少路由器邻接关系数量,减少网络中OSPF报文的数量,优化网络通信效率。
一个广播型网络,可以不存在BDR,但是一定存在DR。
DR/BDR特点
1、DR与BDR其他运行了OSPF的DR other设备建立full邻接关系
2、其他DR other设备之间建立2-way邻居关系
3、在主从关系中,必然存在一台路由器为DR/BDR
DR/BDR选举规则
DR/BDR选举时间在2-way阶段,路由器知道了网络中运行ospf协议的所有路由器,且在进行数据库交互之前。
1、选举条件
仅在广播网络或非广播多路访问网络(NBMA)中触发选举(如以太网、帧中继)
点对点网络(P2P)和点对多点网络(P2MP)无需选举DR/BDR
2、选举依据
DR/BDR的选举是基于接口的,接口优先级:接口优先级默认为1,优先级范围为0-255,数值越大优先级越高。优先级为0的路由器不参与选举
Router-ID:设备的RID。当优先级相同时,RouterID较大的路由器胜出。
仅次于DR的设备成为BDR。
3、选举流程
初始阶段:路由器通过Hello报文交换优先级和Router-ID信息
选举触发:在邻居关系2-way状态后,开始选举DR/BDR。优先选举BDR,当整个网络中没有DR,此时BDR升级为DR,而其他设备会继续选举BDR,选举时间为40s。
当DR故障后,BDR重新成为新的DR,重新选举BDR;当BDR故障后,从DRother中重新选举BDR;当DRother故障后,其他连接到该链路的路由器角色不会产生变化。
一个路由器可以成为多个DR设备,一条链路上只能存在一个DR/BDR,一条链路上可以存在多个DRother,也可以不存在DRother,一条链路上也可以不存在BDR。
选举结果:
1、DR和BDR由所有参与选举的路由器共同投票决定
2、DR选举优先级最高,BDR次之
3、如果网络中已经存在DR/BDR,新加入的路由器即使优先级更高,也不会抢占现有角色(除非DR/BDR失效)
4、查看DB/BDR的命令
[Huawei]display ospf 1 interface GigabitEthernet 0/0/0
配置如下拓扑
将接口地址配置到ospf进程中
在AR1上查看DR/BDR
可以看到DR为192.168.1.1,BDR为192.168.1.2
十三、交换基础
计算机网络的中间设备-中继器、集线器、网桥、交换机、路由器、网关
中继器
集线器
网桥
网桥工作在数据链路层,将两个LAN连起来,根据MAC地址来转发帧,可以看作一个“低层的路由器”(路由器工作在网络层,根据网络地址如IP地址进行转发)。
交换机
网桥、交换机工作在2层,靠物理地址工作,解决CSMA/CD的冲突问题,网桥基于软件,现在用的不多,只有个概念,交换机是基于硬件的网桥(ASIC)。
路由器
路由器(Router)是一种计算机网络设备。靠逻辑地址工作,提供逻辑寻址,解决广播问题。
提供了路由与转送两种重要机制。可以决定数据包从来源端到目的端所经过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。
路由工作在OSI模型的第三层——即网络层,例如网际协议。路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。
网关
在传统TCP/IP术语中,网络设备只分成两种,一种为网关(gateway),另一种为主机(host)。网关能在网络间转递数据包,但主机不能转送数据包。在主机中,数据包需经过TCP/IP四层协议处理,但是在网关只需要到达网际层,决定路径之后就可以转送。
在现代网络术语中,网关(gateway)与路由器(router)的定义不同。网关(gateway)能在不同协议间移动数据,而路由器(router)是在不同网络间移动数据.(路由器对LAN而言是内部的,而网关指向LAN的外部。)
对于以太网中的网关只能转发三层以上数据包,这一点和路由是一样的。而不同的是网关中并没有路由表,他只能按照预先设定的不同网段来进行转发。网关最重要的一点就是端口映射,子网内用户在外网看来只是外网的IP地址对应着不同的端口,这样看来就会保护子网内的用途。
十四、VLAN
交换机自动学习
交换机会记录接口收到的数据的源MAC,入接口信息。
单播数据帧
如果交换机收到单播数据帧,会查看mac地址表,看是否存在对应关系。如果不存在对应关系,则泛洪未知单播数据帧(BUM)。如果存在对应关系,则进行转发。
如果交换机收到了已知单播的数据帧,会进行转发
广播数据帧
如果交换机收到了广播数据帧,会泛洪广播数据帧
组播数据帧
如果不运行任何组播的配置下,则会直接泛洪组播数据
交换机的三种转发行为
泛洪、转发、丢弃(为了避免环路风险,会丢包)
泛洪:交换机把从某一端口进来的帧通过所有其他的端口转发出去(其他的端口指的是除了这个帧进入交换机的那个端口以外的其他端口)
转发:交换机把从某一端口进来的帧通过另一个端口转发出去(另一个端口不能是这个帧进入交换机的那个端口)
查看mac地址表,mac地址表存放的是mac地址与端口的对应关系
<Huawei>display mac-address
报文学习mac地址是动态学习的,存在老化时间300s,如果5min没有收到关于mac地址的mac信息,则会老化。mac地址表用于交换机中转发数据,存在于交换机中。
交换机的每个接口都是一个独立的冲突域。交换机的接口具备自动协商行为:可以实现工作方式、端口速率的协商,向小兼容。默认交换机的所有接口都处于同一个广播域下
VLAN简介
定义
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接通信,从而将广播报文限制在一个VLAN内。
VLAN内的主机间可以直接通信,而VLAN间不能直接通信,从而将广播报文限制在一个VLAN内。
目的
以太网是一种基于CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的共享通讯介质的数据网络通讯技术。当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至造成网络不可用等问题。通过交换机实现LAN互连虽然可以解决冲突严重的问题,但仍然不能隔离广播报文和提升网络质量。
在这种情况下出现了VLAN技术,这种技术可以把一个LAN划分成多个逻辑的VLAN,每个VLAN是一个广播域,VLAN内的主机间通信就和在一个LAN内一样,而VLAN间则不能直接互通,这样,广播报文就被限制在一个VLAN内。
作用
1、限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
2、增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。
3、提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。
4、灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
VLAN的基本概念
VLAN标签
要使设备能够分辨不同VLAN的报文,需要在报文中添加标识VLAN信息的字段。IEEE 802.1Q协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag),用以标识VLAN信息。终端不带tag。
VLAN帧格式
字段解释
字段 | 长度 | 含义 | 取值 |
TPID | 2Byte | Tag Protocol Identifier(标签协议标识符),表示数据帧类型。 |
表示帧类型,取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。 各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时, 为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致。 |
PRI | 3bit | Priority,表示数据帧的802.1Q优先级。 | 取值范围为0~7,值越大优先级越高。当网络阻塞时,设备优先发送优先级高的数据帧。 |
CFI | 1bit | Canonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。 | CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI的值为0。 |
VID | 12bit | VLAN ID,表示该数据帧所属VLAN的编号。 | VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094。 |
设备利用VLAN标签中的VID来识别数据帧所属的VLAN,广播帧只在同一VLAN内转发,这就将广播域限制在一个VLAN内。
常用设备收发数据帧的VLAN标签情况
在一个VLAN交换网络中,以太网帧主要有以下两种格式:
- 有标记帧(Tagged帧):加入了4字节VLAN标签的帧。
- 无标记帧(Untagged帧):原始的、未加入4字节VLAN标签的帧。
常用设备中:
- 用户主机、服务器、Hub只能收发Untagged帧。
- 交换机、路由器和AC既能收发Tagged帧,也能收发Untagged帧。
- 语音终端、AP等设备可以同时收发一个Tagged帧和一个Untagged帧。
为了提高处理效率,设备内部处理的数据帧一律都是Tagged帧。
接收数据帧不会进行Tag的剥离/弹出。交换机内部处理的都是带tag的数据帧。
链路类型和接口类型
设备内部处理的数据帧一律都带有VLAN标签,而现网中的设备有些只会收发Untagged帧,要与这些设备交互,就需要接口能够识别Untagged帧并在收发时给帧添加、剥除VLAN标签。同时,现网中属于同一个VLAN的用户可能会被连接在不同的设备上,且跨越设备的VLAN可能不止一个,如果需要用户间的互通,就需要设备间的接口能够同时识别和发送多个VLAN的数据帧。
为了适应不同的连接和组网,设备定义了Access接口、Trunk接口和Hybrid接口3种接口类型,以及接入链路(Access Link)和干道链路(Trunk Link)两种链路类型。
链路类型
根据链路中需要承载的VLAN数目的不同,以太网链路分为:
- 接入链路
接入链路只可以承载1个VLAN的数据帧,用于连接设备和用户终端(如用户主机、服务器等)。通常情况下,用户终端并不需要知道自己属于哪个VLAN,也不能识别带有Tag的帧,所以在接入链路上传输的帧都是Untagged帧。
- 干道链路
干道链路可以承载多个不同VLAN的数据帧,用于设备间互连。为了保证其它网络设备能够正确识别数据帧中的VLAN信息,在干道链路上传输的数据帧必须都打上Tag。
接口类型
根据接口连接对象以及对收发数据帧处理的不同,以太网接口分为:
- Access接口
Access接口一般用于和不能识别Tag的用户终端(如用户主机、服务器等)相连,或者不需要区分不同VLAN成员时使用。它只能收发Untagged帧,且只能为Untagged帧添加唯一VLAN的Tag。
- Trunk接口
Trunk接口一般用于连接交换机、路由器、AP以及可同时收发Tagged帧和Untagged帧的语音终端。它可以允许多个VLAN的帧带Tag通过,但只允许一个VLAN的帧从该类接口上发出时不带Tag(即剥除Tag)。
- Hybrid接口
Hybrid接口既可以用于连接不能识别Tag的用户终端(如用户主机、服务器等)和网络设备(如Hub),也可以用于连接交换机、路由器以及可同时收发Tagged帧和Untagged帧的语音终端、AP。它可以允许多个VLAN的帧带Tag通过,且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag(即不剥除Tag)、某些VLAN的帧不带Tag(即剥除Tag)。
Hybrid接口和Trunk接口在很多应用场景下可以通用,但在某些应用场景下,必须使用Hybrid接口。比如一个接口连接不同VLAN网段的场景中,因为一个接口需要给多个Untagged报文添加Tag,所以必须使用Hybrid接口。
缺省VLAN
缺省VLAN又称PVID(Port Default VLAN ID)。前面提到,设备处理的数据帧都带Tag,当设备收到Untagged帧时,就需要给该帧添加Tag,添加什么Tag,就由接口上的缺省VLAN决定。
接口收发数据帧时,对Tag的添加或剥除过程。
- 对于Access接口,缺省VLAN就是它允许通过的VLAN,修改缺省VLAN即可更改接口允许通过的VLAN。
- 对于Trunk接口和Hybrid接口,一个接口可以允许多个VLAN通过,但是只能有一个缺省VLAN。接口的缺省VLAN和允许通过的VLAN需要分别配置,互不影响。
同类型接口添加或剥除VLAN标签的比较
接口类型 | 对接收不带Tag的报文处理 | 对接收带Tag的报文处理 | 发送帧处理过程 |
Access接口 | 接收该报文,并打上缺省的VLAN ID。 | 当VLAN ID与缺省VLAN ID相同时,接收该报文。当VLAN ID与缺省VLAN ID不同时,丢弃该报文。 | 先剥离帧的PVID Tag,然后再发送。 |
Trunk接口 | 打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。 | 当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。 | 当VLAN ID与缺省VLAN ID相同,且是该接口允许通过的VLAN ID时,去掉Tag,发送该报文。当VLAN ID与缺省VLAN ID不同,且是该接口允许通过的VLAN ID时,保持原有Tag,发送该报文。 |
Hybrid接口 | 打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。 | 当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。 | 当VLAN ID是该接口允许通过的VLAN ID时,发送该报文。可以通过命令设置发送时是否携带Tag。 |
ACCESS口处理流程
Trunk口处理流程
Hybrid-混杂端口
- 当接收到不带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会给数据帧打上VLAN标签,但Trunk接口、Hybrid接口会根据数据帧的VID是否为其允许通过的VLAN来判断是否接收,而Access接口则无条件接收。
- 当接收到带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会根据数据帧的VID是否为其允许通过的VLAN(Access接口允许通过的VLAN就是缺省VLAN)来判断是否接收。
- 当发送数据帧时:
- Access接口直接剥离数据帧中的VLAN标签。
- Trunk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签。
- Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签。
因此,Access接口发出的数据帧肯定不带Tag,Trunk接口发出的数据帧只有一个VLAN的数据帧不带Tag,其他都带VLAN标签,Hybrid接口发出的数据帧可根据需要设置某些VLAN的数据帧带Tag,某些VLAN的数据帧不带Tag。
Hybrid接口发出数据时,对于标签由两种处理动作untag和tag。且代表Hybrid接口允许指定vlan通过。Hybrid接口默认vlan1,且默认剥离vlan1。
VLAN通信
VLAN内互访
同一VLAN内用户互访(简称VLAN内互访)会经过如下三个环节。
- 用户主机的报文转发
源主机在发起通信之前,会将自己的IP与目的主机的IP进行比较,如果两者位于同一网段,会获取目的主机的MAC地址,并将其作为目的MAC地址封装进报文;如果两者位于不同网段,源主机会将报文递交给网关,获取网关的MAC地址,并将其作为目的MAC地址封装进报文。
- 设备内部的以太网交换设备之间交互时,VLAN标签的添加和剥离
- 如果目的MAC地址+VID匹配自己的MAC表且三层转发标志置位,则进行三层交换,会根据报文的目的IP地址查找三层转发表项,如果没有找到会将报文上送CPU,由CPU查找路由表实现三层转发。
- 如果目的MAC地址+VID匹配自己的MAC表但三层转发标志未置位,则进行二层交换,会直接将报文根据MAC表的出接口发出去。
- 如果目的MAC地址+VID没有匹配自己的MAC表,则进行二层交换,此时会向所有允许VID通过的接口广播该报文,以获取目的主机的MAC地址。
设备内部的以太网交换都是带Tag的,为了与不同设备进行成功交互,设备需要根据接口的设置添加或剥除Tag。不同接口VLAN标签添加和剥离情况不同。
从以太网交换原理可以看出,划分VLAN后,广播报文只在同一VLAN内二层转发,因此同一VLAN内的用户可以直接二层互访。根据属于同一VLAN的主机是否连接在不同的设备,VLAN内互访有两种场景:同设备VLAN内互访和跨设备VLAN内互访。
同设备VLAN内互访
如下图所示,用户主机Host_1和Host_2连接在同台设备上,属于同一VLAN2,且位于相同网段,连接接口均设置为Access接口。(假设Router上还未建立任何转发表项)。
1、Host_1判断目的IP地址跟自己的IP地址在同一网段,于是发送ARP广播请求报文获取目的主机Host_2的MAC地址,报文目的MAC填写全F,目的IP为Host_2的IP地址10.1.1.3。
2、报文到达Router的接口IF_1,发现是Untagged帧,给报文添加VID=2的Tag(Tag的VID=接口的PVID),然后根据报文的源MAC地址、VID和报文入接口(1-1-1, 2, IF_1)生成MAC表。
3、根据报文目的MAC地址+VID查找Router的MAC表,没有找到,于是在所有允许VLAN2通过的接口(本例中接口为IF_2)广播该报文。
4、Router的接口IF_2在发出ARP请求报文前,根据接口配置,剥离VID=2的Tag。
5、Host_2收到该ARP请求报文,将Host_1的MAC地址和IP地址对应关系记录ARP表。然后比较目的IP与自己的IP,发现跟自己的相同,就发送ARP响应报文,报文中封装自己的MAC地址2-2-2,目的IP为Host_1的IP地址10.1.1.2。
6、Router的接口IF_2收到ARP响应报文后,同样给报文添加VID=2的Tag。
7、Router根据报文的源MAC地址、VID和报文入接口(2-2-2, 2, IF_2)生成MAC表,然后根据报文的目的MAC地址+VID(1-1-1, 2)查找MAC地址表,由于前面已记录,查找成功,向出接口IF_1转发该ARP响应报文。
8、Router向出接口IF_1转发前,同样根据接口配置剥离VID=2的Tag。
9、Host_1收到Host_2的ARP响应报文,将Host_2的MAC地址和IP地址对应关系记录ARP表。
后续Host_1与Host_2的互访,由于彼此已学习到对方的MAC地址,报文中的目的MAC地址直接填写对方的MAC地址。
此组网场景下,当同一VLAN的用户处于不同网段时,主机将在报文中封装网关的MAC地址,可借助VLANIF技术(需配置主从IP地址)实现互访。
跨设备VLAN内互访
如下图,用户主机Host_1和Host_2连接在不同的设备上,属于同一个VLAN2,且位于相同网段。为了识别和发送跨越设备的数据帧,设备间通过干道链路连接。
当用户主机Host_1发送报文给用户主机Host_2时,报文的发送过程如下(假设Router_1和Router_2上还未建立任何转发表项)。
1、经过与同设备VLAN内互访的步骤1~2一样的过程后,报文被广播到Router_1的IF_2接口。
2、Router_1的IF_2接口在发出ARP请求报文前,因为接口的PVID=1(缺省值),与报文的VID不相等,直接透传该报文到Router_2的IF_2接口,不剥除报文的Tag。
3、Router_2的IF_2接口收到该报文后,判断报文的Tag中的VID=2是接口允许通过的VLAN,接收该报文。
4、经过与同设备VLAN内互访的步骤3~6一样的过程后,Router_2将向其出接口IF_2转发Host_2的ARP响应报文,转发前,因为接口IF_2为Trunk接口且PVID=1(缺省值),与报文的VID不相等,直接透传报文到Router_1的IF_2接口。
5、Router_1的IF_2接口收到Host_2的ARP响应报文后,判断报文的Tag中的VID=2是接口允许通过的VLAN,接收该报文。后续处理同同设备VLAN内互访的步骤7~9一样。
可见,干道链路除可传输多个VLAN的数据帧外,还起到透传VLAN的作用,即干道链路上,数据帧只会转发,不会发生Tag的添加或剥离。
VLAN间互访
划分VLAN后,由于广播报文只在同VLAN内转发,所以不同VLAN的用户间不能二层互访,这样能起到隔离广播的作用。但实际应用中,不同VLAN的用户又常有互访的需求,此时就需要实现不同VLAN的用户互访,简称VLAN间互访。
同VLAN间互访一样,VLAN间互访也会经过用户主机的报文转发、设备内部的以太网交换、设备之间交互时VLAN标签的添加和剥离三个环节。同样,根据以太网交换原理,广播报文只在同一VLAN内转发,不同VLAN内的用户则不能直接二层互访,需要借助三层路由技术或VLAN转换技术才能实现互访。
VLAN间互访技术
华为提供了多种技术实现VLAN间互访,常用的两种技术为VLANIF接口和Dot1q终结子接口。
- VLANIF接口
VLANIF接口是一种三层的逻辑接口。在VLANIF接口上配置IP地址后,设备会在MAC地址表中添加VLANIF接口的MAC地址+VID表项,并且为表项的三层转发标志位置位。当报文的目的MAC地址匹配该表项后,会进行三层转发,进而实现VLAN间的三层互通。
VLANIF配置简单,是实现VLAN间互访最常用的一种技术。但每个VLAN需要配置一个VLANIF,并在接口上指定一个IP子网网段,比较浪费IP地址。
- Dot1q终结子接口
子接口也是一种三层的逻辑接口。跟VLANIF接口一样,在子接口上配置Dot1q终结功能和IP地址后,设备也会添加相应的MAC表项并置位三层转发标志位,进而实现VLAN间的三层互通。
Dot1q终结子接口适用于通过一个三层以太网接口下接多个VLAN网络的环境。由于不同VLAN的数据流会争用同一个以太网主接口的带宽,网络繁忙时,会导致通信瓶颈。
通过VLANIF接口实现VLAN间互访,必须要求VLAN间的用户都只能处于不同的网段(因为相同网段,主机会封装目的主机的MAC地址,设备判断进行二层交换,二层交换只在同VLAN内,广播报文无法到达不同的VLAN,获取不到目的主机的MAC地址,也就无法实现互通)。现网中,也存在不同VLAN相同网段的组网需求,此时可通过VLAN聚合实现。
VLAN聚合(又称Super VLAN)通过引入Super-VLAN和Sub-VLAN,将一个Super-VLAN和多个Sub-VLAN关联,多个Sub-VLAN共享Super-VLAN的IP地址作为其网关IP,实现与外部网络的三层互通;并通过在Sub-VLAN间启用Proxy ARP,实现Sub-VLAN间的三层互通,进而即节约IP地址资源,又实现VLAN间的三层互通。
VLAN聚合通常用于多个VLAN共用一个网关的组网场景。
同设备VLAN间互访
如下图:互访的源主机Host_1和目的主机Host_2连接在同一台设备Router上,分别属于VLAN2和VLAN3,并位于不同的网段。在Router上分别创建VLANIF2和VLANIF3并配置其IP地址,然后将用户主机的缺省网关设置为所属VLAN对应VLANIF接口的IP地址。
当用户主机Host_1发送报文给用户主机Host_2时,报文的发送过程如下(假设Router上还未建立任何转发表项)。
2、报文到达Router的接口IF_1,Router给报文添加VID=2的Tag(Tag的VID=接口的PVID),然后将报文的源MAC地址+VID与接口的对应关系(1-1-1, 2, IF_1)添加进MAC表。
3、Router检查报文是ARP请求报文,且目的IP是自己VLANIF2接口的IP地址,给Host_1应答,并将VLANIF2接口的MAC地址3-3-3封装在应答报文中,应答报文从IF_1发出前,剥掉VID=2的Tag。同时,Router会将Host_1的IP地址与MAC地址的对应关系记录到ARP表。
4、Host_1收到Router的应答报文,将Router的VLANIF2接口的IP地址与MAC地址对应关系记录到自己的ARP表中,并向Router发送目的MAC为3-3-3、目的IP为Host_2的IP地址 10.2.2.2的报文。
5、报文到达Router的接口IF_1,同样给报文添加VID=2的Tag。
6、Router根据报文的源MAC地址+VID与接口的对应关系更新MAC表,并比较报文的目的MAC地址与VLANIF2的MAC地址,发现两者相等,进行三层转发,根据目的IP查找三层转发表,没有找到匹配项,上送CPU查找路由表。
7、CPU根据报文的目的IP去找路由表,发现匹配了一个直连网段(VLANIF3对应的网段),于是继续查找ARP表,没有找到,Router会在目的网段对应的VLAN3的所有接口发送ARP请求报文,目的IP是10.2.2.2。从接口IF_2发出前,根据接口配置,剥掉VID=2的Tag。
8、Host_2收到ARP请求报文,发现请求IP是自己的IP地址,就发送ARP应答报文,将自己的MAC地址包含在其中。同时,将VLANIF3的MAC地址与IP地址的对应关系记录到自己的ARP表中。
9、Router的接口IF_2收到Host_2的ARP应答报文后,给报文添加VID=3的Tag,并将Host_2的MAC和IP的对应关系记录到自己的ARP表中。然后,将Host_1的报文转发给Host_2,发送前,同样剥离报文中的Tag。同时,将Host_2的IP、MAC、VID及出接口的对应关系记录到三层转发表中。
至此,Host_1完成对Host_2的单向访问。Host_2访问Host_1的过程与此类似。这样,后续Host_1与Host_2之间的往返报文,都先发送给网关Router,由Router查三层转发表进行三层转发。
跨设备VLAN间互访
由于VLANIF接口的IP地址只能在设备上生成直连路由,当不同VLAN的用户跨多台设备互访时,除配置VLANIF接口的IP地址外,还需要配置静态路由或运行动态路由协议。
如下图所示,互访的源主机Host_1和目的主机Host_2连接在不同的设备Router_1和Router_2上,分别属于VLAN2和VLAN3,并位于不同的网段。在Router_1上分别创建VLANIF2和VLANIF4,配置其IP地址为10.1.1.1和10.1.4.1;在Router_2上分别创建VLANIF3和VLANIF4,配置其IP地址为10.1.2.1和10.1.4.2,并在Router_1和Router_2上分别配置静态路由。Router_1上静态路由的目的网段是10.1.2.0/24,下一跳是10.1.4.2;Router_2上静态路由的目的网段是10.1.1.0/24,下一跳是10.1.4.1。
当用户主机Host_1发送报文给用户主机Host_2时,报文的发送过程如下(假设Router_1和Router_2上还未建立任何转发表项)。
1、与同设备VLAN间互访的步骤1~6一样,经过“Host_1比较目的IP地址—>Host_1查ARP表—>Host_1获取网关MAC地址—>Host_1将发给Host_2的报文送到Router_1—>Router_1查MAC表—>Router_1查三层转发表”的过程,Router_1上送CPU查找路由表。
2、Router_1的CPU根据报文的目的IP 10.1.2.2去找路由表,发现匹配了一个路由网段10.1.2.0/24(VLANIF3对应的网段),下一跳IP地址为10.1.4.2,于是继续查找ARP表,没有找到,Router_1会在下一跳IP地址对应的VLAN4的所有接口发送ARP请求报文,目的IP是10.1.4.2。报文从Router_1的接口IF_2发出前,根据接口配置,直接透传该报文到Router_2的IF_2接口,不剥除报文的Tag。
3、ARP请求报文到达Router_2后,发现目的IP为VLANIF4接口的IP地址,给Router_1回应,填写VLANIF4接口的MAC地址。
4、Router_2的ARP响应报文从其IF_2接口直接透传到Router_1,Router_1接收后,记录VLANIF4的MAC地址与IP地址的对应关系到ARP表项。
5、Router_1将Host_1的报文转发给Router_2,报文的目的MAC修改为Router_2的VLANIF4接口的MAC地址,源MAC地址修改自己的VLANIF4接口的MAC地址,并将刚用到的转发信息记录在三层转发表中(10.1.2.0/24,下一跳IP的MAC地址, 出口VLAN, 出接口)。同样,报文是直接透传到Router_2的IF_2接口。
6、Router_2收到Router_1转发的Host_1的报文后,与同设备VLAN间互访的步骤6~9一样,经过“查MAC表—>查三层转发表—>送CPU—>匹配直连路由—>查ARP表并获取Host_2的MAC地址—>将Host_1的报文转发给Host_2”的过程,同时将Host_2的IP地址、MAC地址、出口VLAN、出接口记录到三层转发表项。
VLAN Damping
VLAN抑制
如果指定VLAN已经创建对应的VLANIF接口,当VLAN中所有接口状态变为Down而引起VLAN状态变为Down时,VLAN会向VLANIF接口上报接口Down状态,从而引起VLANIF接口状态变化。
为避免由于VLANIF接口状态变化引起的网络震荡,可以在VLANIF接口上启动VLAN Damping功能,抑制VLANIF接口状态变为Down的时间。
当使能VLAN Damping功能,VLAN中最后一个处于Up状态的接口变为Down后,会抑制一定时间(抑制时间可配置)再上报给VLANIF接口。如果在抑制时间内VLAN中有接口Up,则VLANIF接口状态保持Up状态不变。即VLAN Damping功能可以适当延迟VLAN向VLANIF接口上报接口Down状态的时间,从而抑制不必要的路由震荡。
VLAN内二层隔离
为了实现用户之间的二层隔离,可以将不同的用户加入不同的VLAN。但若企业规模很大,拥有大量的用户,那么就要为不能互相访问的用户都分配VLAN,这不但需要耗费大量的VLAN,还增加了网络管理者配置和维护的工作量。
为此,华为提供了一些VLAN内二层隔离技术,如端口隔离、MUX VLAN和基于MQC的VLAN内二层隔离等。
端口隔离
端口隔离可实现同一VLAN内端口之间的隔离。用户只需要将端口加入到隔离组中,就可以实现隔离组内端口之间的二层隔离,不同隔离组的端口之间或者不属于任何隔离组的端口与其他端口之间都能进行正常的数据转发。同时,用户还可以通过配置实现端口的单向隔离,为用户提供更安全、更灵活的组网方案。
MUX VLAN
MUX VLAN(Multiplex VLAN)提供了一种通过VLAN进行网络资源控制的机制。它既可实现VLAN间用户通信,也可实现VLAN内的用户相互隔离。
比如,企业有如下需求:
- 要求企业内部员工之间可以互相交流,而企业客户之间是隔离的,不能够互相访问。
- 要求企业员工和企业客户都可以访问企业的服务器。
此种场景,通过部署MUX-VLAN就可以实现。
基于流策略的VLAN内二层隔离
流策略是将流分类和流行为关联后形成的完整的QoS策略。基于流策略的VLAN内二层隔离指用户可以根据匹配规则对报文进行流分类,然后通过流策略将流分类与permit/deny动作相关联,使符合流分类的报文被允许或被禁止通过,从而实现灵活的VLAN内单向或双向隔离。
VLAN间三层隔离
VLAN间实现三层互通后,两VLAN内的所有用户之间都可以互相访问,但某些场景中,需要禁止部分用户之间的互访或者只允许用户单向访问,比如用户主机和服务器之间一般是单向访问、企业的访客一般只允许上网和访问部分服务器等。此时,就需要配置VLAN间互访控制。
VLAN间互访控制一般通过流策略实现。用户可根据实际需求定义匹配规则对报文进行流分类,然后通过流策略将流分类与permit/deny动作相关联,使符合流分类的报文被允许或禁止通过,从而实现灵活的VLAN间互访控制。
管理VLAN
当用户通过远端网管集中管理设备时,需要在设备上通过VLANIF接口配置IP地址作为设备管理IP,通过管理IP来STelnet到设备上进行管理。若设备上其他接口相连的用户加入该VLAN,也可以访问该设备,增加了设备的不安全因素。
这种情况下可以配置VLAN为管理VLAN(与管理VLAN对应,没有指定为管理VLAN的VLAN称为业务VLAN),不允许Access类型和Dot1q-tunnel类型接口加入该VLAN。由于Access类型和Dot1q-tunnel类型通常用于连接用户,限制这两种类型接口加入管理VLAN后,与该接口相连的用户就无法访问该设备,从而增加了设备的安全性。
VLAN实验
LSW1配置
[Huawei]interface Ethernet0/0/1
[Huawei-Ethernet0/0/1]display this
#
interface Ethernet0/0/1
port link-type access
port default vlan 10
#
return
[Huawei]interface Ethernet0/0/2
[Huawei-Ethernet0/0/2]display this
#
interface Ethernet0/0/2
port link-type access
port default vlan 20
#
return
[Huawei]interface Ethernet0/0/3
[Huawei-Ethernet0/0/3]display this
#
interface Ethernet0/0/3
port link-type trunk
port trunk allow-pass vlan 10 20
#
return
[Huawei]interface Ethernet0/0/1
[Huawei-Ethernet0/0/1]display this
#
interface Ethernet0/0/1
port link-type access
port default vlan 10
#
return
[Huawei]interface Ethernet0/0/2
[Huawei-Ethernet0/0/2]display this
#
interface Ethernet0/0/2
port link-type access
port default vlan 20
#
return
[Huawei]interface Ethernet0/0/3
[Huawei-Ethernet0/0/3]display this
#
interface Ethernet0/0/3
port link-type trunk
port trunk allow-pass vlan 10 20
#
return
PC2上ping PC4
查看vlan的命令行
[Huawei]display vlan
Hybrid接口配置
使用hybrid接口配置vlan2与vlan100间、vlan3与vlan100间可通信,vlan2与vlan3间可通信
LSW1配置
[Huawei]interface Ethernet0/0/1
[Huawei-Ethernet0/0/1]display this
#
interface Ethernet0/0/1
port hybrid pvid vlan 3
port hybrid untagged vlan 3 100
#
return
[Huawei]interface Ethernet0/0/2
[Huawei-Ethernet0/0/2]display this
#
interface Ethernet0/0/2
port hybrid pvid vlan 2
port hybrid untagged vlan 2 100
#
return
[Huawei]interface Ethernet0/0/3
[Huawei-Ethernet0/0/3]display this
#
interface Ethernet0/0/3
port hybrid untagged vlan 2 to 3 100
#
return
LSW2配置
[Huawei]interface Ethernet0/0/3
[Huawei-Ethernet0/0/3]display this
#
interface Ethernet0/0/3
port hybrid untagged vlan 2 to 3 100
#
return
[Huawei]interface Ethernet0/0/1
[Huawei-Ethernet0/0/1]display this
#
interface Ethernet0/0/1
port hybrid pvid vlan 100
port hybrid untagged vlan 2 to 3 100
#
return
在mac地址表中可以看到学习到的mac地址的VLAN
十五、VLAN间路由
VLAN缩小了广播域的范围,vlan间互访,通过跨网段技术与vlan结合,实现部署vlan之后,实现跨网段通信
每个VLAN一个物理连接
在二层交换机上配置VLAN,每一个VLAN使用一条独占的物理链路连接到路由器的一个接口上。在接口上都配置access接口
配置PC IP地址
LSW1
[Huawei-Ethernet0/0/1]display this
#
interface Ethernet0/0/1
port link-type access
port default vlan 10
#
return
[Huawei]interface Ethernet0/0/2
[Huawei-Ethernet0/0/2]display this
#
interface Ethernet0/0/2
port link-type access
port default vlan 20
#
return
[Huawei]interface Ethernet0/0/3
[Huawei-Ethernet0/0/3]display this
#
interface Ethernet0/0/3
port link-type access
port default vlan 10
#
return
[Huawei]interface Ethernet0/0/4
[Huawei-Ethernet0/0/4]display this
#
interface Ethernet0/0/4
port link-type access
port default vlan 20
#
return
路由器配置IP
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
ip address 192.168.1.1 255.255.255.0
#
return
[Huawei]interface GigabitEthernet 0/0/2
[Huawei-GigabitEthernet0/0/2]display this
#
interface GigabitEthernet0/0/2
ip address 192.168.2.1 255.255.255.0
#
return
PC1和PC2之间可以进行互访
VLAN路由-单臂路由
将交换机与路由器之间的链路配置为Trunk链路,并且在路由器上创建子接口以支持VLAN路由
华为路由器子接口默认关闭发送广播报文的能力,需要在子接口下配置
arp broadcast enable
PC3配置
PC4配置
LSW3配置
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 3
#
return
[Huawei]interface GigabitEthernet 0/0/2
[Huawei-GigabitEthernet0/0/2]display this
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk pvid vlan 2
port trunk allow-pass vlan 2
#
return
[Huawei]interface GigabitEthernet 0/0/3
[Huawei-GigabitEthernet0/0/3]display this
#
interface GigabitEthernet0/0/3
port link-type trunk
port trunk pvid vlan 3
port trunk allow-pass vlan 3
#
return
路由器配置子接口
[Huawei-GigabitEthernet0/0/1.1]display this
#
interface GigabitEthernet0/0/1.1
dot1q termination vid 2
ip address 192.168.3.1 255.255.255.0
arp broadcast enable
#
return
[Huawei-GigabitEthernet0/0/1.1]q
[Huawei]interface GigabitEthernet 0/0/1.2
[Huawei-GigabitEthernet0/0/1.2]display this
#
interface GigabitEthernet0/0/1.2
dot1q termination vid 3
ip address 192.168.4.1 255.255.255.0
arp broadcast enable
#
return
VLAN路由-三层交换
使用三层交换机
PC5
PC6
LSW4配置接口IP和交换机虚拟接口VLANIF口IP
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
port link-type access
port default vlan 2
#
return
[Huawei]interface GigabitEthernet 0/0/2
[Huawei-GigabitEthernet0/0/2]display this
#
interface GigabitEthernet0/0/2
port link-type access
port default vlan 3
#
return
[Huawei]interface vlanif2
[Huawei-Vlanif2]display this
#
interface Vlanif2
ip address 192.168.1.1 255.255.255.0
#
return
[Huawei]interface vlanif3
[Huawei-Vlanif3]display this
#
interface Vlanif3
ip address 192.168.2.1 255.255.255.0
#
return
查看交换机的路由表
十六、STP协议
STP背景
STP(Spanning Tree Protocol)是生成树协议的英文缩写,可应用于计算机网络中树形拓扑结构建立,主要作用是防止网桥网络中的冗余链路形成环路工作。但某些特定因素会导致STP失败,要排除故障可能非常困难,这取决于网络设计。STP主要解决环路问题、广播风暴以及MAC漂移问题。
环路会引起广播风暴,网络中的主机会收到重复的数据帧
环路会引起MAC地址表震荡
STP作用以及原理
STP能够通过阻塞端口来消除环路,并能够实现链路备份的目的
STP的基本原理是,通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU),来确定网络的拓扑结构。BPDU有两种,配置BPDU(Configuration BPDU)和TCN BPDU。前者是用于计算无环的生成树的,后者则是用于在二层网络拓扑发生变化时产生用来缩短MAC表项的刷新时间的(由默认的300s缩短为15s)。
BPDU报文
生成树拓扑计算是基于设备之间交互BPDU报文实现的,BPDU报文中携带了生成树拓扑计算需要的信息。BPDU报文被封装在以太网数据帧中,目的MAC:01-80-C2-00-00-00。
BPDU报文内容
BPDU包含桥ID、路径开销、端口ID、计时器等参数
PVI:0代表STP,2代表RSTP,3代表MSTP。
BPDU Type:BPDU报文类型
Flags:标志位。
Root ID:当前根桥的Bridge ID。BID是由桥优先级(Bridge Priority)与桥MAC地址构成。BID桥优先级占据高16位,其余低48位是MAC地址。BID最小的设备会被选举为根桥。当开机时,设备默认会将自己的ID填到该字段中,认为自己是根桥,设备会将本机认为的根桥ID填入此字段。
RPC:根路径开销,简称RPC。路径开销(Path Cost)是一个端口变量,是生成树协议用于选择链路的参考值。生成树协议通过计算路径开销,选择较为“强壮”的链路,阻塞多余的链路,将网络修剪成无环路的树形网络结构。根路径开销就是某端口到根桥所经过的各个桥上的各端口路径开销的累加值。
Bridge ID:桥ID。发送BPDU报文的ID
Port Identifier:发送端口的PID(Port ID)。PID由两部分构成的,高4位是端口优先级,低12位是端口号。
Message Age:信息年龄。当角色选举完成后,BPDU报文只能以根桥为源头进行发送。当根首发BPDU报文时,Message Age为0,当每经过一台设备后,Message Age加1。
Max Age:最大年龄,一般值为20。当Message Age为21时,此时会丢弃BPDU报文,当Message Age为20时,不会丢弃报文。
Hello Time:一般为2s,根桥每2s会发送BPDU报文。
Fwd Delay:超时时间,超时时间一般为15s。当超时时间为15s时,STP状态会从listening切换为learning或从learning切换到forwarding。
BPDU报文分类
BPDU报文可以分为以下几类。
- 配置BPDU(Configuration BPDU):STP用来进行生成树计算和维护生成树拓扑的报文。
- RST BPDU:RSTP用来进行生成树计算和维护生成树拓扑的报文。
- MST BPDU:MSTP用来进行生成树计算和维护生成树拓扑的报文。
- TCN BPDU(Topology Change Notification BPDU):网络拓扑发生变化时用来通知相关设备的报文。
STP操作
1、选举一个根桥:首先比较Bridge ID,Bridge ID=优先级16位+mac(交换机的背板mac)48位
Bridge ID越小越好 优先级默认位32768,可配置位4096的倍数 一般将性能最好的设备改为根桥,将优先级设为0,可人为设置根桥
2、每个非根交换机选举一个根端口:RP,根端口会在非根桥的设备上进行选择,根端口。除根桥外,在网络拓扑中,其他运行了STP协议的设备都存在一个距离根桥最近的端口,除根桥外的其他设备都有一条前往根桥的路径。每个非根交换机有且仅有一个根端口
比较入方向的根路径的开销 RPC,开销越小越好。如果两侧的入方向的根路径开销相同时,比较上行设备的BridgeID谁更小。如果设备的BID无法比较出接口,代表上方为同一台设备,则比较接口的优先级与端口号PID(根据接口号生成端口号,g0/0/1最小,以此类推,端口号越小越好)。
LSW1
LSW2
LSW3
Role为root代表本设备该接口连接的设备为根桥
3、每个网段选举一个指定端口:根桥上的所有端口都是指定端口,每个链路上只能有一个指定端口。在非根桥交换机上比较开销,较小的为DP,若开销相同,在比较链路交换机的桥ID,较小的为指定端口。在开销值与桥ID相同时,比较两个接口的接口ID。指定端口
4、剩下端口全部阻塞,阻塞非根、非指定端口
STP端口状态
端口状态 |
说明 |
---|---|
Disabled |
端口状态为Down,不处理BPDU报文,也不转发用户流量。 |
Listening |
过渡状态,开始生成树计算,端口可以接收和发送BPDU,但不转发用户流量。 |
Learning |
过渡状态,建立无环的MAC地址转发表(通过BPDU报文中的MAC地址进行学习),不转发用户流量。 |
Forwarding |
端口可以接收和发送BPDU,也转发用户流量。只有根端口或指定端口才能进入Forwarding状态。 |
Blocking |
端口仅仅接收并处理BPDU,不转发用户流量。 |
1、端口Up或使能了STP,会从Disabled状态进入到Blocking状态。
2、端口被选举为根端口或指定端口,会进入Listening状态,从listening状态到Learning状态有15s的定时器时间
3、端口的Forward Delay定时器超时,定时器的时间为15S,会进入Learning/Forwarding状态。
4、端口不再是根端口或指定端口时,会进入Blocking状态。
TCN BPDU
TCN BPDU是当拓扑改变时,用来快速通知拓扑中所有设备发生了拓扑改变。当交换机的某个接口变为了转发状态,说明发生了拓扑改变。
原拓扑中LSW3为根桥,当shutdown LSW3 Ethernet0/0/2接口时,从LSW3 Ethernet0/0/3会发送TCN BPDU,TCN BPDU中TC置位为1。TCN BPDU由根桥发出
十七、链路聚合 ACL
生成树协议最大的问题是容易阻塞链路,可以使用链路聚合,运行在STP之上,多根链路不阻塞链路。
链路聚合
链路聚合又称端口聚合、链路捆绑。多根链路逻辑上的捆绑在一起,当STP进行拓扑计算时,此时会按照聚合之后的链路计算。
链路聚合指的是物理端口速率是有所叠加的,在不扩展的情况下,最多可以支持8根物理链路,最少是1根物理链路。Eth-Trunk接口必须存在一根物理接口Up。链路捆绑两侧的口都是三层口或都是二层口。
链路聚合的应用场景
链路聚合一般部署在核心结点,以便提升整个网络的数据吞吐量。
链路聚合的特点
1、提升带宽
2、提高网络的高可用性
3、负载分担
链路聚合:点到点的两个设备之间
链路聚合模式
聚合模式分为手工负载分担模式和LACP模式
手工负载分担模式下所有活动接口都参与数据的转发,分担负载流量。不支持跨设备链路聚合Eth-Trunk。手工负载分担模式无法检测错连。手工负载分担有几根物理线Up,就是几根线进行流量转发。
LACP模式支持链路备份。支持跨设备链路聚合E-Trunk。LACP可以检查错连,会自动Down错连的线。LACP可以加入多根物理线,可以指定哪些线路进行数据转发,也可以指定哪些线路进行备份。
数据流控制
Eth-Trunk链路两端相连的物理接口的数量、速率、双工方式、流控方式必须一致。
链路聚合实验
三层链路聚合配置
AR1
<Huawei>sys
[Huawei]interface Eth-Trunk 1
[Huawei-Eth-Trunk1]undo portswitch
[Huawei-Eth-Trunk1]ip address 10.1.1.1 255.255.255.0
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]eth-trunk 1
[Huawei]interface GigabitEthernet 0/0/2
[Huawei-GigabitEthernet0/0/2]eth-trunk 1
AR2
<Huawei>sys
[Huawei]interface Eth-Trunk 1
[Huawei-Eth-Trunk1]undo portswitch
[Huawei]interface Eth-Trunk 1
[Huawei-Eth-Trunk1]ip address 10.1.1.2 255.255.255.0
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]eth-trunk 1
[Huawei]interface GigabitEthernet 0/0/2
[Huawei-GigabitEthernet0/0/2]eth
[Huawei-GigabitEthernet0/0/2]eth-trunk 1
查看Eth-Trunk口1相关信息,可以看到Eth-trunk口的最大带宽BW为2G
[Huawei]display interface Eth-Trunk1
可以配置Eth-trunk接口的模式,配置成手工负载分担模式,也可以配置成静态lacp负载分担模式
[Huawei]interface Eth-Trunk 1
[Huawei-Eth-Trunk1]mode manual load-balance
[Huawei-Eth-Trunk1]mode lacp-static
将物理接口加入Eth-Trunk口也可以使用如下命令行
[Huawei-Eth-Trunk1]trunkport GigabitEthernet 0/0/1 to 0/0/2
二层链路聚合配置
LSW1
<Huawei>sys
[Huawei]interface Eth-Trunk1
[Huawei-Eth-Trunk1]trunkport Ethernet 0/0/1 to 0/0/2
LSW2
<Huawei>sys
[Huawei]interface Eth-Trunk1
[Huawei-Eth-Trunk1]trunkport Ethernet 0/0/1 to 0/0/2
ACL
ACL叫做访问控制列表。访问控制列表(ACL)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。访问控制列表被广泛地应用于路由器和三层交换机,借助于访问控制列表,可以有效地控制用户对网络的访问,从而最大程度地保障网络安全。
ACL的主要动作
1、根据匹配条件匹配数据
2、根据匹配的数据定义动作------>permit 允许/deny:拒绝
ACL应用场景
ACL可以通过定义规则来允许或拒绝流量的通过
ACL可以根据需求来定义过滤的条件以及匹配条件后所执行的动作
ACL的分类
分类 | 编号范围 | 参数 |
基本ACL | 2000-2999 | 源IP地址等 |
高级ACL | 3000-3999 | 源IP地址、目的IP地址、源端口、目的端口、协议号等 |
二层ACL | 4000-4999 | 源MAC地址、目的MAC地址、以太网协议类型等 |
ACL配置思路
一个ACL列表中,可以定义多个不同的规则。
接口:接收到数据:入接口/入方向---->inbound
接口:发送该数据:出接口/出方向---->outbound。如果想让acl生效,必须要在某个接口上挂接。
1、定义acl匹配参数
2、定义匹配参数的动作
3、acl挂接到某个接口下
ACL实验
配置各个接口的IP地址,以及各个PC1、PC3、Client1、Server1的网关地址,并在AR5、AR6、AR7、AR8上配置OSPF路由,使得链路连通
需要实现的ACL需求是
1、PC1-------->无法访问PC3和server
2、client--------->无法访问server-icmp服务(ping不通server),但是可以访问其他服务
ACL参数
1、rule-id:规则的编号----->如果不配置编号,默认为5,并且会以5递增。
2、通配符掩码-反掩码
255.255.255.0=255.255.255.255-255.255.255.0=0.0.0.255
如果反掩码位为0,在抓取数据时,必须匹配。如果为1,在抓取数据时,无需匹配。
AR6上的acl配置
[Huawei]acl 2000
[Huawei-acl-basic-2000]rule deny source 192.168.1.100 0.0.0.0
[Huawei-acl-basic-2000]display this
[V200R003C00]
#
acl number 2000
rule 5 deny source 192.168.1.100 0
#
return
[Huawei]interface GigabitEthernet 0/0/0
[Huawei-GigabitEthernet0/0/0]traffic-filter inbound acl 2000
[Huawei-GigabitEthernet0/0/0]display this
[V200R003C00]
#
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
traffic-filter inbound acl 2000
#
return
配置完acl后,此时PC1ping不通PC3和server
可以在AR6上查看acl命中次数
ACL匹配从上往下的匹配过程中如果匹配到一条规则,则后续的规则不会继续匹配。如果在上面acl2000中加入一条配置
[Huawei]acl 2000
[Huawei-acl-basic-2000]rule 1 permit
[Huawei-acl-basic-2000]display this
[V200R003C00]
#
acl number 2000
rule 1 permit
rule 5 deny source 192.168.1.100 0
#
return
此时匹配规则1,会导致PC1可以ping通server1
华为:acl接口下调用时,默认会有一条命令permit any,只要没有拒绝,就是可以通的
[Huawei-acl-basic-2000]rule 10 permit source any
Error: The rule already exists.
配置Server1,加入文件并启动
此时在client1中访问server的IP地址,可以真实的下载文件
此时在Client1上ping Server1,可以ping通
需要实现Client1不可ping通Server1但是可以访问文件
[Huawei-acl-adv-3000]rule deny 1 source 192.168.1.200 0 destination 192.168.4.100 0
[Huawei-acl-adv-3000]display this
[V200R003C00]
#
acl number 3000
rule 5 deny icmp source 192.168.1.200 0 destination 192.168.4.100 0
#
return
[Huawei]interface GigabitEthernet 0/0/2
[Huawei-GigabitEthernet0/0/2]traffic-filter outbound acl 3000
[Huawei-GigabitEthernet0/0/2]display this
[V200R003C00]
#
interface GigabitEthernet0/0/2
ip address 13.1.1.1 255.255.255.0
traffic-filter outbound acl 3000
#
return
一个接口的下不可以配置两个相同方向的acl
此时Client1上无法ping通Server1
但是Client1依旧可以访问到Server1的文件
十八、DHCP+NAT+PPPOE
DHCP原理与配置
动态主机配置协议DHCP
动态主机配置协议是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。担任DHCP服务器的计算机需要安装TCP/IP协议,并为其设置静态IP地址、子网掩码、默认网关、DNS服务器IP内容。使用DHCP来分配IP地址等网络参数,可以避免用户手工配置网络参数时造成的地址冲突问题。
DHCP应用场景
DHCP服务器能够为大量主机分配IP地址,并能够集中管理
DHCP工作原理
如果存在多台DHCP服务器给主机A回复了DHCP Offer提供IP地址,则主机A会使用先获得的DHCP Offer的IP地址
DHCP报文类型
报文类型 | 含义 |
DHCP DISCOVER | 客户端用来寻找DHCP服务器 |
DHCP OFFER | DHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息 |
DHCP REQUEST | 客户端请求配置确认,或者续借续租 |
DHCP ACK | 服务器对REQUEST报文的确认响应 |
DHCP NAK | 服务器对REQUEST报文的拒绝响应 |
DHCP RELEASE | 客户端要释放地址时用来通知服务器 |
DHCP租期更新
DHCP申请了IP地址之后,默认使用时间为24h。当IP租约期限到达50%时,DHCP客户端会请求更新IP地址租约。
DHCP重绑定
DHCP在租约期限到达87.5%时,还没收到服务器响应,会重新绑定IP
IP地址释放
如果IP租约到期前都没有收到服务器响应,客户端停止使用此IP地址
如果DHCP客户端不再使用分配的IP地址,也可以主动向DHCP服务器发送DHCP RELEASE报文,释放该IP地址
DHCP实验
AR1配置
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]dhcp enable
Info: The operation may take a few seconds. Please wait for a moment.done.
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]ip address 10.1.1.1 24
[Huawei-GigabitEthernet0/0/1]dhcp select interface
[Huawei-GigabitEthernet0/0/1]dhcp server dns-list 8.8.8.8
[Huawei-GigabitEthernet0/0/1]display this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 10.1.1.1 255.255.255.0
dhcp select interface
dhcp server dns-list 8.8.8.8
#
return
将PC1和PC2 IP地址设置为dhcp获取
此时可以看到PC1和PC2可以拿到IP地址,DNS server为8.8.8.8
dhcp可以根据固定的mac地址分配固定的IP地址
在AR1上配置如下命令行
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]dhcp server static-bind ip-address 10.1.1.17 mac-ad
dress 5489-9896-7499
[Huawei-GigabitEthernet0/0/1]display this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 10.1.1.1 255.255.255.0
dhcp select interface
dhcp server static-bind ip-address 10.1.1.17 mac-address 5489-9896-7499
dhcp server dns-list 8.8.8.8
#
return
然后在PC1上先选择静态IPv4配置,再选择DHCP,这样会释放dhcp之前分配的IP,然后重新分配
此时再去看PC1的分配的地址,PC1由之前随机分配的10.1.1.254变为了10.1.1.17
DHCP全局地址池配置
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]dhcp enable
[Huawei]ip pool pool2
Info: It's successful to create an IP address pool.
[Huawei-ip-pool-pool2]network 1.1.1.0 mask 24
[Huawei-ip-pool-pool2]gateway-list 1.1.1.1
[Huawei-ip-pool-pool2]lease day 10
[Huawei-ip-pool-pool2]q
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]dhcp select global
Warning: There are IP addresses allocated in the pool. Are you sure to delete th
e pool?[Y/N]:y
[Huawei-GigabitEthernet0/0/1]display this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 10.1.1.1 255.255.255.0
dhcp select global
#
return
NAT
在计算机网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。它是一个方便且得到了广泛应用的技术。当然,NAT也让主机之间的通信变得复杂,导致了通信效率的降低。网络地址转换技术NAT主要用于实现位于内部网络的主机访问外部网络的功能。当局域网的主机需要访问外部网络时,通过NAT技术可以将其私网地址转换为公网地址,并且多个私网用户可以共用一个公网地址,这样既可保证网络互通,又节省了公网地址。
NAT原理
NAT的基本工作原理是,当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。
如下图所示,NAT网关有2个网络端口,其中公共网络端口的IP地址是统一分配的公共 IP,为202.20.65.5;私有网络端口的IP地址是保留地址,为192.168.1.1。私有网中的主机192.168.1.2向公共网中的主机202.20.65.4发送了1个IP包(Dst=202.20.65.4,Src=192.168.1.2)。
当IP包经过NAT网关时,NAT Gateway会将IP包的源IP转换为NAT Gateway的公共IP并转发到公共网,此时IP包(Dst=202.20.65.4,Src=202.20.65.5)中已经不含任何私有网IP的信息。由于IP包的源IP已经被转换成NAT Gateway的公共IP,Web Server发出的响应IP包(Dst= 202.20.65.5,Src=202.20.65.4)将被发送到NAT Gateway。
这时,NAT Gateway会将IP包的目的IP转换成私有网中主机的IP,然后将IP包(Des=192.168.1.2,Src=202.20.65.4)转发到私有网。对于通信双方而言,这种地址的转换过程是完全透明的。转换示意图如下。
如果内网主机发出的请求包未经过NAT,那么当Web Server收到请求包,回复的响应包中的目的地址就是私网IP地址,在Internet上无法正确送达,导致连接失败。
NAT的分类
标准NAT:仅有IP地址转换
1、静态NAT
静态NAT实现了私有地址和公有地址的一对一映射,一个公网IP只会分配给唯一且固定的内网主机。
2、动态NAT
动态NAT基于地址池来实现私有地址和公有地址的转换
3、NAPT
网络地址端口转换NAPT允许多个内部地址映射到同一个公有地址的不同端口。
4、Easy IP
Easy IP允许将多个内部地址映射到网关出接口地址上的不同端口
NAT服务器
NAT配置实验
静态NAT配置
PC1配置
PC2配置
AR2配置
[Huawei-GigabitEthernet0/0/2]display this
[V200R003C00]
#
interface GigabitEthernet0/0/2
ip address 200.10.10.1 255.255.255.0
nat static global 202.10.10.2 inside 192.168.1.2 netmask 255.255.255.255
nat static global 202.10.10.1 inside 192.168.1.1 netmask 255.255.255.255
#
return
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]display this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 192.168.1.254 255.255.255.0
#
return
PC3配置
PC2 ping PC3时抓包,在AR2 GE0/0/2端口抓包
可以看到源IP地址为202.10.10.2,目的IP地址为200.10.10.3
PC1ping PC3时,源IP地址为202.10.10.1,目的IP为200.10.10.3
动态NAT配置
先配置每个接口以及PC的地址,配置PC的网关
AR1配置
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]ip address 192.168.1.254 24
[Huawei]acl 2000
[Huawei-acl-basic-2000]rule 5 permit source 192.168.1.0 0.0.0.255
[Huawei]interface GigabitEthernet 0/0/2
[Huawei-GigabitEthernet0/0/2]ip address 200.10.10.201 24
[Huawei-GigabitEthernet0/0/2]nat outbound 2000 address-group 1 no-pat
[Huawei-acl-basic-2000]display nat address-group
NAT Address-Group Informatio
n:
--------------------------------------
Index Start-address End-address
--------------------------------------
1 200.1.1.1 200.1.1.200
--------------------------------------
Total : 1
PC1 ping PC3,在AR1的GE0/0/2端口抓包
此时源IP为200.1.1.1、200.1.1.2、200.1.1.3、200.1.1.4、200.1.1.5
NAT Server实验
首先配置ISP、GW、Server三台设备的IP地址
需要实现的是ISP telnet 100.1.1.1时,会登录到Server设备上
配置vty在GW和Server设备上,密码为Huawei123
GW
[Huawei]user-interface vty 0 4
[Huawei-ui-vty0-4]authentication-mode password
Please configure the login password (maximum length 16):Huawei123
Server
[Huawei]user-interface vty 0 4
[Huawei-ui-vty0-4]authentication-mode password
Please configure the login password (maximum length 16):Huawei123
然后在GW的GE0/0/1接口下配置如下命令
[GW-GigabitEthernet0/0/1]nat server protocol tcp global current-interface telnet inside 192.168.1.10
PPPOE
PPPoE报文时使用Ethernet格式来进行封装的,点到点,具有绝对安全性,可以进行身份认证
PPPoE发现阶段
客户端通过广播发送PADI报文来发现接入服务器
所有的PPPoE服务器在收到PADI报文之后,将客户端请求的服务与自己能够提供的服务进行比较,如果可以提供,则单播回复PADO报文
PPPoE客户端选择最先收到的PADO报文对应的PPPoE服务器,并单播发送一个PADR报文
PPPoE服务器生成唯一的PPPoE Session ID,并发送PADS报文给客户端,会话建立成功
PPPoE会话阶段
PPPoE会话上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段
PPPoE会话的PPP协商成功后,就可以传输PPP数据
PPPoE会话终结
PADT报文用于通知对端PPPoE会话结束
PPPoE会话建立过程
十九、网络管理与运维
随着网络的规模越来越庞大,网络中的设备种类繁多,如何对越来越复杂的网络进行有效的管理,从而提供高质量的网络服务,已成为了网络管理所面临的巨大的挑战。
网络管理
网络管理就是通过对网络中设备的管理,保证设备工作正常,使通信网络正常地运行,以提供高效、可靠和安全的通信服务,是通信网络的重要组成部分
网络管理的基本功能
OSI定义了网络管理的五大功能模型:
1、配置管理:配置管理负责监控网络的配置信息,使网络管理人员可以生成、查询和修改硬件、软件的运行参数和条件,并可以进行相关业务的配置
2、性能管理:性能管理以网络性能为准则,保证在使用较少网络资源和具有较小时延的前提下,网络能够提供可靠、连续的通信能力
3、故障管理:故障管理的主要目标是确保网络始终可用,并在发生故障时尽快将其修复
4、安全管理:安全管理可以保护网络和系统免受未经授权的访问和安全攻击
5、计费管理:记录用户使用网络资源的情况并核收费用,同时也统计网络的利用率
网络管理方式
1、传统网络管理
2、基于iMaster NCE的网络管理
通过CLI和Web进行管理
当网络规模较小时,CLI和Web方式时常见的网络管理方式,网络管理员可以通过HTTPS、Telnet、Console等方式登录设备后,对设备逐一进行管理,这种管理方式不需要在网络中安装任何程序或部署服务器、成本较低,网络管理员自身需要熟练掌握网络理论知识、各设备厂商配置命令。当网络规模较大、网络拓扑较为复杂时,这种方式的局限性较大。
基于SNMP的集中式管理
SNMP(简单网络管理协议)是广泛用于TCP/IP网络的网络管理标准协议,提供了一种通过运行网络管理软件的中心计算机,即NMS(网络管理工作站)来管理网元的方法。SNMP的主要目的是网络管理。SNMP实现了对网络设备的高效和批量的管理,SNMP协议也屏蔽了不同产品之间的差异,实现了不同种类和厂商的网络设备之间的统一管理。
网络管理员可以利用NMS在网络上的任意节点完成信息查询、信息修改和故障排查等工作,提升工作效率。
屏蔽了不同产品之间的差异,实现了不同种类和厂商的网络设备之间的统一管理。
网络管理分为两类:
第一类是对网络应用程序、用户账号(例如文件的使用)和存取权限(许可)的管理。它们都是与软件有关的网络管理问题,这里不作深入解释。
第二类是对构成网络的硬件即网元的管理,包括工作站、服务器、网卡、路由器、网桥和集线器等等。通常情况下,这些设备与网络管理员所在的中心机房所在地距离很远。当这些设备有问题发生时,如果网络管理员可以自动地被通知,那么无疑是最佳的。但是路由器不会像用户那样,当有一个应用程序发生问题时会打电话通知。
SNMP的特点
SNMP的特点如下:
简单:SNMP采用轮询机制,提供最基本的功能集,适合小型、快速、低价格的环境使用,而且SNMP以UDP报文为承载,因而受到绝大多数设备的支持。
强大:SNMP的目标是保证管理信息在任意两点传送,以便于管理员在网络上的任何节点检索信息,进行故障排查。
SNMP管理模型与典型架构
SNMP系统包括网络管理系统NMS(Network Management Station)、代理进程Agent、被管对象Management object和管理信息库MIB(Management Information Base)四部分组成。
NMS作为整个网络的网管中心,对设备进行管理。
每个被管理设备中都包含驻留在设备上的Agent进程、MIB和多个被管对象。NMS通过与运行在被管理设备上的Agent交互,由Agent通过对设备端的MIB的操作,完成NMS的指令。
NMS
NMS是整个网络的网管中心,在它之上运行管理进程,每个被管理设备需要运行代理(Agent)进程。管理进程和代理进程利用SNMP报文进行通信。NMS在网络中扮演管理者角色,是一个采用SNMP协议对网络设备进行管理/监视的系统,运行在NMS服务器上。
NMS可以向设备上的Agent发出请求,查询或修改一个或多个具体的参数值。
NMS可以接收设备上的Agent主动发送的Trap信息,以获知被管理设备当前的状态。
NMS是一个采用SNMP协议对网络管理进行管理/监控的系统,运行在NMS服务器上。被管理设备时网络中接受NMS管理的设备。代理进程运行于被管理设备上,用于维护被管理设备的信息数据并响应来自NMS的请求,把管理数据汇报给发送请求的NMS。
Agent
Agent是被管理设备中的一个代理进程,用于维护被管理设备的信息数据并响应来自NMS的请求,把管理数据汇报给发送请求的NMS。
Agent接收到NMS的请求信息后,通过MIB表完成相应指令后,并把操作结果响应给NMS。
当设备发生故障或者其它事件时,设备会通过Agent主动发送信息给NMS,向NMS报告设备当前的状态变化。
Managed object
Managed object指被管理对象。每一个设备可能包含多个被管理对象,被管理对象可以是设备中的某个硬件(如一块接口板),也可以是在硬件、软件(如路由选择协议)上配置的参数集合。
MIB
MIB是一个数据库,指明了被管理设备所维护的变量(即能够被Agent查询和设置的信息)。MIB在数据库中定义了被管理设备的一系列属性:对象的标识符OID、对象的状态、对象的访问权限和对象的数据类型等。
通过MIB,可以完成以下功能:
- Agent通过查询MIB,可以获知设备当前的状态信息。
- Agent通过修改MIB,可以设置设备的状态参数。
MIB给出了一个数据结构,包含了网络中所有可能的被管理对象的集合,因为数据结构与树相似,MIB又被成为对象命名树。
SNMP的管理信息库采用和域名系统DNS相似的树型结构,它的根在最上面,根没有名字。如下图所示的是管理信息库的一部分,它又称为对象命名树。每个OID(object identifier,对象标识符)对应于树中的一个管理对象,如system的OID为1.3.6.1.2.1.1,interfaces的OID为1.3.6.1.2.1.2。
通过OID树,可以高效且方便地管理其中所存储的管理信息,同时也方便了对其中的信息进行批量查询。
特别地,当用户在配置Agent时,可以通过MIB视图来限制NMS能够访问的MIB对象。MIB视图实际上是MIB的子集合。
常用MIB节点
可见产品文档手册:https://support.huawei.com/enterprise/zh/doc/EDOC1100459898/f2ab47d
节点 |
OID值 |
含义 |
所属MIB |
---|---|---|---|
ifIndex |
1.3.6.1.2.1.2.2.1.1 |
接口索引。 |
IF-MIB |
SNMP的操作
查询/修改操作:NMS作为管理者,向代理进程发送SNMP请求报文。代理进程通过设备端的MIB找到所要查询或者修改的信息。向NMS发送SNMP响应报文
告警操作:设备短的模块由于达到模块定义的告警触发条件,通过代理进程向NMS发送消息,告知设备侧出现的情况,这样便于网络管理人员及时对网络中出现的情况进行处理。
SNMP操作有Get、GetNext、Set、Response、Trap、GetBulk和Inform操作
操作 |
描述 |
---|---|
Get |
Get操作可以从Agent中提取一个或多个参数值。 |
GetNext |
GetNext操作可以从Agent中按照字典序提取下一个参数值。 |
Set |
Set操作可以设置Agent的一个或多个参数值。 |
Response |
Response操作可以返回一个或多个参数值。这个操作是由Agent发出的,它是GetRequest、GetNextRequest、SetRequest和GetBulkRequest四种操作的响应操作。Agent接收到来自NMS的Get/Set指令后,通过MIB完成相应的查询/修改操作,然后利用Response操作将信息回应给NMS。 |
Trap |
Trap信息是Agent主动向NMS发出的信息,告知管理进程设备端出现的情况。 |
GetBulk |
GetBulk操作实现了NMS对被管理设备的信息群查询。 |
Inform |
InformRequest也是被管理设备向NMS主动发送告警。与Trap告警不同的是,被管理设备发送Inform告警后,需要NMS回复InformResponse来进行确认。 |
SNMP报文
SNMPv1/SNMPv2c报文结构
SNMPv1/SNMPv2c报文主要由版本、团体名、SNMP PDU三部分构成。
版本:表示SNMP的版本,如果是SNMPv1报文则对应字段值为0,SNMPv2c则为1。
团体名:用于在Agent与NMS之间完成认证,字符串形式,用户可自行定义。团体名包括“可读”和“可写”两种,执行GetRequest、GetNextRequest操作时,采用“可读团体名”进行认证;执行Set操作时,则采用“可写团体名”认证。
SNMPv1/SNMPv2c PDU:包含PDU类型、请求标识符、变量绑定列表等信息。其中SNMPv1 PDU包括GetRequest PDU、GetNextRequest PDU、SetRequest PDU、Response PDU和Trap PDU几种类型,SNMPv2c PDU在SNMPv1的基础上新增了GetBulkRequest PDU和InformRequest PDU两种类型。
SNMP工作原理
Get操作
NMS:向Agent发送Get请求报文。报文中各字段的设置如下:版本号为所使用的SNMP版本;团体名为public;PDU中PDU类型为Get类型,绑定变量填入MIB节点名sysContact。
Agent:首先对报文中携带版本号和团体名进行认证,认证成功后,Agent根据请求查询MIB中的sysContact节点,得到sysContact的值并将其封装到Response报文中的PDU,向NMS发送响应;如果查询不成功,Agent会向NMS发送出错响应。
GetNext操作
NMS:向Agent发送GetNext请求报文。报文中各字段的设置如下:版本号为所使用的SNMP版本;团体名为public;PDU中PDU类型为GetNext类型,绑定变量填入MIB节点名sysContact。
Agent:首先对报文中携带版本号和团体名进行认证,认证成功后,Agent根据请求查询MIB中的sysContact的下一个节点sysName,得到sysName的值并将其封装到Response报文中的PDU,向NMS发送响应;如果查询不成功,Agent会向NMS发送出错响应。
Set操作
NMS:向Agent发送Set请求报文。报文中各字段的设置如下:版本号为所使用的SNMP版本;团体名为private;PDU中PDU类型为Set类型,绑定变量填入MIB节点名sysName和需要设置的值Device1。
Agent:首先对报文中携带版本号和团体名进行认证,认证成功后,Agent根据请求设置管理变量在管理信息库MIB中对应的节点,设置成功后向NMS发送响应;如果设置不成功,Agent会向NMS发送出错响应。
Trap操作
Trap不属于NMS对被管理设备的基本操作,它是被管理设备的自发行为。当被管理设备达到告警的触发条件时,会通过Agent向NMS发送Trap消息,告知设备侧出现的异常情况,便于网络管理人员及时处理。例如被管理设备热启动后,Agent会向NMS发送warmStart的Trap。
这种Trap信息是受限制的。只有在设备端的模块达到模块预定义的告警触发条件时,Agent才会向管理进程报告。这种方法有其好处是仅在严重事件发生时才发送Trap信息,减少报文交互产生的流量。
SNMP实验
PC1
PC2
AR1上的配置
开启Agent服务
[Huawei]sysname Agent
[Agent]snmp-agent
查看SNMP-agent服务
[Agent]display snmp-agent sys-info
显示当前默认情况下所运行的SNMP版本为v1、v2c、v3。
配置SNMP版本
SNMP一共有3个版本,分别为v1、v2c、v3,开启 SNMP服务后默认同时兼容3个版本。
当网络规模较小且安全性较高时,在规划时可配置设备使用SNMPv1版本与网管进行通信;
当网络规模较大,安全性较高时,但运行的业务较为繁忙,在规划时配置设备使用SNMPv2c版本与网管进行通信;
当网络规模较大且安全性较低时,在规划时配置设备使用SNMPv3版本与网管进行通信,并配置认证和加密功能保证安全性。
[Agent]snmp-agent sys-info version v3
配置NMS管理权限
如果网络中不止一个管理站用户,可以根据业务需要,为不同管理站用户设置不同的访问权限。本实验中有两个管理站用户,现仅允许NMS-2可以管理设备。
配置基本ACL,限制NMS-2管理设备、NMS-1不允许管理设备。
配置用户组为group,用户名为user,指定使用ACL2000。
[Agent]acl 2000
[Agent-acl-basic-2000]rule 5 permit source 192.168.1.2 0.0.0.255
[Agent-acl-basic-2000]rule 10 deny source 192.168.1.1 0.0.0.255
[Agent]snmp-agent usm-user v3 user group acl 2000
配置SNMP Agent输出Trap信息网络管理员需要查看被管理者产生的Trap信息,以便监控设备运行情况及定位故障信息。
配置Agent 发送Trap消息。用于接收该Trap消息的网管名为adminNMS2,目标地址为192.168.1.2,且指定接收该消息使用UDP端口为9991。
Trap消息的发送参数信息列表名称为trapNMS2。开启设备的告警开关。只有将该开关打开以后,Agent才会向网管站发送告警消息;
[Agent]snmp-agent target-host trap-hostname adminAMS2 address 192.168.1.2 udp-po
rt 9991 trap-paramsname trapNMS2
[Agent]snmp-agent trap enable
Info: All switches of SNMP trap/notification will be open. Continue? [Y/N]:y
设置告警消息的队列长度为200(默认值为100)。如果某个时间段trap报文消息很多,为防止丢包,可以设置增加消息队列长度以便减少丢包的情况发生。
[Agent]snmp-agent trap queue-size 200
设置报文消息的保存时间为240秒(默认值为120)。该值是Trap报文消息的生存时间,如果超过该时间报文将会被丢弃,不再发送,也不再保存。
[Agent]snmp-agent trap life 240
为了便于维护,配置管理员的联系方式,电话为400-822-9999,地址为中国深圳。
[Agent]snmp-agent sys-info contact call admin 400-822-9999
[Agent]snmp-agent sys-info location ShenZhen China
查看相关snmp系统信息
二十、OSPF协议基础
RIP在大型网络中部署面临的挑战
大型网络所发生的变化
1、网络规模扩大
2、网络可靠性要求提高
3、网络异构化趋势加剧
RIP特性 | 带来的问题 | 优化或解决的方式 |
逐跳收敛 | 收敛慢,故障恢复时间长 | "收到更新->计算路由->发送更新"改为"收到更新->发送更新->计算路由" |
传闻路由更新机制 | 缺少对全局网络拓扑的了解 | 路由器基于拓扑信息,独立计算路由 |
最多有效跳数为15 | 环形组网中,使远端路由不可达 | 不限定跳数 |
以"跳数"为度量 | 存在选择次优路径的风险 | 将链路带宽作为选路参考值 |
链路状态路由协议OSPF
路由信息传递与路由计算分离,基于SPF算法,以"累计链路开销"作为选路参考值
RIP配置
配置完接口地址之后,配置RIP协议
AR1
[AR1-rip-1]display current-configuration configuration rip
[V200R003C00]
#
rip 1
version 2
network 10.0.0.0
network 1.0.0.0
#
return
AR2
[AR2-rip-1]display current-configuration configuration rip
[V200R003C00]
#
rip 1
version 2
network 10.0.0.0
network 2.0.0.0
#
return
RouteID的选举规则
思科设备Router ID选举原则
1、手动配置OSPF路由器的Router ID(通常建议手动配置)最优先
2、如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID
3、如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID
华为设备Router ID选举原则
1、手动配置OSPF路由器的Router ID(通常建议手动配置)最优先
2、如果没有手动配置Router ID,则路由器使用全局Router-ID充当OSPF协议的Router ID。全局Router-ID不会因为接口的状态改变而发生变化,如果接口的IP地址变更了,那么全局Router-ID将会改变,选择最大IP地址作为Router ID,但OSPF的Router-ID不会因为全局Router-ID的变化而变化,OSPF Router-ID只能在清理OSPF进程之后才会改变。
设备使用第一个配置的接口IP地址充当OSPF的全局Router-ID
OSPF的路由器Router ID重新配置后,可以通过重置OSPF进程来更新Router ID
OSPF邻居建立过程
OSPF的LSDB同步
OSPF协议,工作在网络层之上,而IP协议本身不负责数据传输的可靠性,所以针对OSPF协议来说,需要单独设计报文传输的可靠性机制。
OSPF协议保证报文传输的可靠性:邻居建立的三次握手、重传机制、LSR、LSU、LSACK的显示确认机制、DD报文的隐式确认
DD报文的主要的作用是为了实现按需同步。DD报文传输的可靠性机制是在exstart状态相互发送空的DD报文,用于选举主从关系,从设备会跟随主设备的DD报文序列号,当主设备收到从设备的DD报文序列号之后,将会把SEQ+1发送自己的DD报文给从设备,从设备收到SEQ+1的DD报文判断自身先前发送的DD报文主设备已经收到。
主从选举之后,由从设备将邻居角色转为exchange状态,先发送带有LSA摘要信息的DD报文。
OSPF LSDB的交互原则
互相交互自身没有的LSA,以及使用新的LSA,替换掉旧的LSA
LSA三要素
查看ospf链路状态数据库
<Huawei>display ospf lsdb
1、LSA类型 TYPE
Router表示一类LSA,每个OSPF的路由器,都会使用一类LSA描述
2、LSA的链路状态ID Link State ID
3、LSA的通告者 Adv Router
用以上三个要素用来判断唯一的LSA
如何判断LSA的新旧状态?
1、首先比较的就是LSA的序列号,初始值为0x800000001,每次OSPF更新的时候序列号+1
2、当序列号相同时,将会比较校验和,越大越优
3、当校验和相同时,将会比较LSA的age时间:
首选age等于3600s的LSA,用于删除。
如果两条LSA的age时间相差大于900s,将会选择age数值小的LSA。
如果两条LSA的age时间小于900s,将会认为两条LSA相同,保持原有不变。
OSPF更新机制
触发更新:当链路状态发生改变之后OSPF将会触发更新,比如COST改变、网段改变、掩码改变、取消宣告
周期更新:每个OSPF路由器自身改变的LSA,都会每隔30分钟周期更新一次自身产生的LSA,更新的时候将SEQ+1校验和重新计算,age时间重新恢复到初始值。
OSPF老化机制
OSPF路由器每产生一条LSA,都会存在一个age时间为3600s,初始值为1,当age时间递增到3600s之后,将会认为LSA老化,从自身LSDB中删除LSA。
OSPF删除机制
当OSPF需要删除一条LSA的时候,将会把LSA的age时间变为3600S,当其他路由器接收到这条LSA之后,将会把自身LSDB中对应的LSA删除。
OSPF网络类型
OSPF根据链路层协议类型,将网络分为如下四种类型
1、广播类型
当链路层协议是Ethernet或FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。
在该类型的网络中,通常以组播形式发送Hello报文、LSU报文和LSAck报文,其中,224.0.0.5的组播地址为OSPF设备的预留IP组播地址,224.0.0.6的组播地址为OSPF DR/BDR的预留IP组播地址。以单播形式发送DD报文和LSR报文,以组播地址224.0.0.5交互hello报文。
Hello报文时间间隔为10S,Hello报文死亡时间为40S
DRother:DRother产生的LSU通过224.0.0.6发送给DR和BDR,DR通过224.0.0.5发送给其他的DRother和BDR,DRother收到DR的LSU之后通过224.0.0.6发送ACK确认,BDR收到DR的LSU之后通过组播地址224.0.0.5发送ACK向DR确认。
DR:DR产生的LSU通过224.0.0.5发送给其他DRother和BDR,BDR收到之后通过224.0.0.5发送ACK向DR进行确认,DRother收到之后通过224.0.0.6发送ACK向DR确认
BDR:BDR产生的LSU通过224.0.0.5发送给其他的DRother和DR,DR收到之后通过224.0.0.5发送ACK向BDR确认,DRother收到之后通过224.0.0.6发送ACK向BDR确认。
DR和BDR同时监听224.0.0.5和224.0.0.6两个组播地址,DRother只监听224.0.0.6,需要注意的是在初次建立邻居的时候会产生LSU报文,而LSU是单播发送的报文,在广播网络类型中无论是DR、BDR还是DRother只要收到了LSR之后,都会以单播的形式发送LSU更新,ACK则正常发送。
DR和BDR的区别在于DR收到DRother的LSU则泛洪,BDR不做任何响应。
2、NBMA类型
当链路层协议是帧中继或X.25时,缺省情况下,OSPF认为网络类型是NBMA。
在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)
需要进行DR、BDR选举
Hello报文时间间隔为30S,Hello报文死亡时间为120S
NBMA网络需要手动建立OSPF邻居
[Huawei-ospf-2]display this
[V200R003C00]
#
ospf 2
peer 10.1.1.1 dr-priority 255
#
3、点到多点P2MP类型
没有一种链路层协议会被缺省的认为是P2MP类型,点到多点必须是由其他的网络类型强制更改的,常用做法是将非全连通的NBMA改为点到多点的网络。
在该网络类型中,以组播形式(224.0.0.5)发送Hello报文,以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)
不需要进行DR、BDR选举
Hello报文时间间隔为30S,Hello报文死亡时间为120S
4、点到点P2P类型
当链路层协议是PPP、HDLC或LAPB时,缺省情况下,OSPF认为网络类型是P2P
在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)
不需要进行DR、BDR选举
Hello报文时间间隔为10S,Hello报文死亡时间为40S
当OSPF接口的网络类型为P2P的时候只能建立一个OSPF邻居(广播型类型修改为P2P后也是一样)
P2P网络中为什么不同网段可以通?
广播网DD报文单播发送,如果两边不在一个网段,arp请求无法请求对方,邻居无法建立,在MA网络中,路由信息是2类LSA进行描述,2类LSA的netmask取值是DR接口的掩码信息,所以广播网的两端接口IP的掩码必须相同,如果不相同,有可能导致OSPF路由计算不精确。P2P不进行DR选举,所有报文都会以组播形式发送,P2P网络路由器单独描述自己的路由,不需要掩码一致、网段一致。
修改OSPF网络类型命令行
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]ospf network-type ?
broadcast Specify OSPF broadcast network
nbma Specify OSPF NBMA network
p2mp Specify OSPF point-to-multipoint network
p2p Specify OSPF point-to-point network
OSPF度量方式
某接口的cost=参考带宽/实际带宽
更新cost的两种方式:
1、直接在接口下配置
2、修改参考带宽(所有路由器都需要修改,确保选路一致性)
修改参考带宽的命令行,在ospf进程下修改参考带宽
[Huawei-ospf-1]bandwidth-reference 3000
修改之后可以看到cost值变为3
RTA到达192.168.3.0网段的累计cost=G1接口cost值+G3接口cost值
二十一、OSPF区域内路由计算
使用Router-LSA和Network-LSA描述拓扑信息和路由信息,构建最短路径树。在一个区域内,每个OSPF路由器,都产生一条一类LSA描述自身所有接口的链路状态信息。每台路由器以自己为根,在OSPF区域内先构建树干信息,之后填充叶子信息。、
Router LSA
一类LSA
查看LSDB
[Huawei]display ospf lsdb
Type类型为Router为一类LSA
查看一类LSA内容
[Huawei]display ospf lsdb router 10.1.1.2
在1类LSA中,使用4种link-type描述接口的链路状态信息。
SubNet表示的是末节网络类型
link-type:SubNet 用于描述直连的网络号
link-id:用于描述直连的网络前缀
data:用于描述网络掩码信息
metric:用于描述路由器自身去往该网络的cost值
link-type:P2P 用于描述直连链路上网络类型为P2P或者P2MP的邻居
link-id:用于描述P2P网络上的Rid
data:用于描述自身连接P2P邻居的接口IP地址
metric:用于描述自身去往邻居的Cost值
二类LSA
link-type:TransNet 用于描述直连链路上类型为广播或者NBMA的邻居
link-id:用于描述伪节点的Router-id,使用的是DR的接口IP地址充当
data:用于描述自身去往伪节点的接口IP地址
metric:用于描述自身到达伪节点的Cost值
伪节点类似于DR,其他路由器与伪节点交互二类LSA
查看lsdb中的二类LSA
<Huawei>display ospf lsdb network
只要有一个伪节点,就有一个对应的二类LSA的链路状态ID,伪节点默认到达任意路由器的cost值为0
link-type:V-link 用于描述虚链路上的OSPF邻居
link-id:用于描述虚链路邻居的Router-id
data:用于描述自身去往虚链路邻居的接口IP地址
metric:用于描述自身去往虚链路邻居的Cost值
SPF算法
1、构建SPF树
根据Router-LSA和Network-LSA中的拓扑信息,构建SPF树干
查询自己产生的LSA
[Huawei]display ospf lsdb router self-originate
2、计算最优路由
基于SPF树干和Router-LSA Network-LSA中的路由信息,计算最优路由
从根节点开始依次添加各节点LSA中的路由信息
添加顺序为各节点加入SPF树的顺序
SPF算法实现步骤
初始化:
- 选择一个起点(通常是运行SPF算法的路由器本身),并将起点的最短路径距离设为0。
- 将所有其他节点的最短路径距离设为无穷大。
- 创建一个未处理节点列表,将所有节点加入该列表。
选择最近节点:
- 从未处理节点列表中选择一个距离起点最近的节点,标记为已处理。
- 将该节点从未处理节点列表中移除。
更新邻居节点的距离:
- 对于已处理节点的所有邻居节点,计算从起点到这些邻居节点的路径距离。
- 如果新计算的距离小于当前记录的距离,则更新邻居节点的最短路径距离,并记录前驱节点(即从起点到该邻居节点的上一个节点)。
重复步骤2和3:
- 重复上述步骤,直到所有节点都被标记为已处理。
生成最短路径树(SPT):
- SPF算法执行完毕后,会生成一棵以该路由器为根的最短路径树(SPT)。
- SPT描述了从该路由器到网络中所有其他节点的最优路径,路由器根据SPT中的信息更新其路由表,从而确定数据包转发的最佳路由。
OSPF算法举例
如下图所示,五台路由器互连并运行OSPF协议。以RTA的LSDB为例,其中包括了五个路由器产生的Router-LSA,以及两个广播型网络中产生的Network-LSA。
命令:display ospf lsdb
SPF算法
在一类LSA和二类LSA中,包括了拓扑信息和路由信息。OSPF路由协议通过使用SPF(最短路径优先)算法,计算到达每个路由器的最短路径。
SPF算法分为两个阶段:构建SPF树和计算最优路由。OSPF将依据SPF算法和各类LSA进行最短路径树的计算。
阶段 1:构建SPF树。
根据Router-LSA中的Point to Point,TransNet(拓扑信息)和Network-LSA中的拓扑信息,构建SPF树干。
阶段 2:计算最优路由
基于SPF树干和Router-LSA中的Stub(路由信息)、Network- LSA中的路由信息,计算最优路由。
阶段一:构建SPF树
接下来将会分步骤介绍SPF算法计算最短路径:
Step 1:OSPF路由器将分别以自身为根节点计算最短路径树。
以RTA为例,计算过程如下:
RTA将自己添加到最短路径树的树根位置,然后检查自己生成的Router-LSA,对于该LSA中所描述的每一个连接,如果不是一个Stub连接,就把该连接添加到候选列表中,分节点的候选列表为Link ID,对应的候选总开销为本LSA中描述的Metric值和父节点到达根节点开销之和。
根节点RTA的Router-LSA中存在TransNet中Link ID为10.1.12.2 Metric=1和P-2-P中Link ID为3.3.3.3 Metric=48的两个连接,被添加进候选列表中。
RTA将候选列表中候选总开销最小的节点10.1.12.2移到最短路径树上,并从候选列表中删除。
Step 2:DR被加入到SPF中,接下来检查Ls id为10.1.12.2的Network-LSA。如果LSA中所描述的分节点在最短路径树上已经存在,则忽略该分节点。
如上图所示,在Attached Router部分:
节点1.1.1.1被忽略,因为1.1.1.1已经在最短路径树上。
将节点2.2.2.2,Metric=0,父节点到根节点的开销为1,所以候选总开销为1,加入候选列表。
候选节点列表中有两个候选节点,选择候选总开销最小的节点2.2.2.2加入最短路径树并从候选列表中删除。
Step 3:节点2.2.2.2新添加进最短路径树上,此时继续检查Ls id为2.2.2.2的Router-LSA:
第一个TransNet连接中,Link ID为10.1.12.2,此节点已经在最短路径树上,忽略。
第二个TransNet连接中,Link ID为10.1.235.2,Metric=1,父节点到根节点的开销为1,候选总开销为2,加入候选列表。
第三个P-2-P连接中,Link ID为4.4.4.4,Metric=48,父节点到根节点的开销为1,候选总开销为49,加入候选列表。
候选节点列表中有三个候选节点,选择候选总开销最小的节点10.1.235.2加入最短路径树并从候选列表中删除。
Step 4:DR被加入到SPF中,接下来检查Ls id为10.1.235.2的Network-LSA。
如上图所示,在Attached Router部分:
节点2.2.2.2被忽略,因为2.2.2.2已经在最短路径树上。
将节点3.3.3.3,Metric=0,父节点到根节点的开销为2,候选总开销为2,加入候选列表。(如果在候选列表中出现两个节点ID一样但是到根节点的开销不一样的节点,则删除到根节点的开销大的节点。所以删除节点3.3.3.3 累计开销为48的候选项)。
将节点5.5.5.5,Metric=0,父节点到根节点的开销为2,候选总开销为2,加入候选列表。
候选节点列表中有三个候选节点,选择候选总开销最小的节点3.3.3.3和5.5.5.5加入最短路径树并从候选列表中删除。
Step 5:节点3.3.3.3和5.5.5.5新添加进最短路径树上,此时继续检查Ls id分别为3.3.3.3和5.5.5.5的Router-LSA。
① Ls id为3.3.3.3的LSA:
Link ID为10.1.235.2的节点已经在最短路径树上,忽略。
Link ID为1.1.1.1的节点已经在最短路径树上,忽略。
② Ls id为5.5.5.5的LSA:
Link ID为10.1.235.2的节点已经在最短路径树上,忽略。
Link ID为4.4.4.4的P-2-P连接,Metric=48,父节点到根节点的开销为2,候选总开销为50。因为节点4.4.4.4已经在候选列表中出现,且候选总开销为49。49<50,所以子节点4.4.4.4的父节点选择2.2.2.2。
至此,再通过命令display ospf lsdb router 4.4.4.4发现,LSA中的连接所描述的相邻节点都已经添加到了SPF树中。
此时候选列表为空,完成SPF计算,其中10.1.12.2和10.1.235.2是虚节点(DR)。
阶段二:计算最优路由
从根节点开始依次添加各节点LSA中的路由信息,添加顺序为各节点加入SPF树的顺序。
第二阶段根据Router LSA中的Stub、Network LSA中的路由信息,完成最优路由的计算。从根节点开始,依次添加LSA中的路由信息(添加顺序按照每个节点加入SPF树的顺序):
① 1.1.1.1(RTA)的Router LSA中,共1个Stub连接,网络号/掩码10.1.13.0/24,Metric=48;
② 10.1.12.2(DR)的Network LSA中,网络号/掩码10.1.12.0/24,Metric=1+0=1;
③2.2.2.2(RTB)的Router LSA中,共1个Stub连接,网络号/掩码10.1.24.0/24,Metric=1+0+48=49;
④ 10.1.235.2(DR)的Network LSA中,网络号/掩码10.1.235.0/24,Metric=1+0+1=2;
⑤ 3.3.3.3(RTC)的Router LSA中,共1个Stub连接,网络号/掩码10.1.13.0/24,已在RTA上,忽略;⑥5.5.5.5(RTE)的Router LSA中,共1个Stub连接,网络号/掩码10.1.45.0/24,Metric=1+0+0+1+48=50;
⑦ 4.4.4.4(RTD)的Router LSA中,共2个Stub连接,网络号/掩码10.1.24.0/24,已在RTB上,忽略;网络号/掩码10.1.45.0/24,已在RTE上,忽略。
查看OSPF路由表
经历上述两个阶段的计算,RTA生成的OSPF路由如下图所示。
经过OSPF优选后的路由并不一定会安装进系统路由表,因为路由器还可以通过其他协议获得路由,通过不同方式获得的路由需要进行优先级比较。
在广播NBMA网络中,OSPF建立邻居关系要求两端网段一致、掩码一致。
在P2P网络中,不要求网段一致,不要求掩码一致。
在P2MP网络中,默认情况下要求网段一致,也要求掩码一致,但是可以配置不要求掩码一致。
P2P网络
R1
[R1]display current-configuration configuration ospf
#
ospf 1
area 0.0.0.1
network 192.168.1.0 0.0.0.255
#
return
R2
[R2]display current-configuration configuration ospf
#
ospf 1
area 0.0.0.1
network 192.168.2.0 0.0.0.255
#
return
二十二、OSPF区域间路由计算
区域间路由计算过程
区域的划分
OSPF区域
OSPF的区域划分是在路由器上,在OSPF中规定area id等于0的区域,是OSPF的骨干区域,area id非0的区域都属于OSPF的非骨干区域
ABR和ASBR
ABR:区域边界路由器,是OSPF协议中用于连接骨干区域和非骨干区域的核心设备,需至少属于两个区域且其中必须包含骨干区域(Area 0),它需要维护每个区域的拓扑信息和路由表,并在不同区域之间进行信息传递和路由交换。在华为设备实现中,当在OSPF进程下创建了多个区域,就会在产生的1类LSA中将ABR置位。
ASBR:自治系统边界路由器,它是连接不同自治系统之间的路由器,用于在不同的自治系统之间传递路由信息,当一个路由器连接到不同的自治系统时,它就成为了ASBR,它需要维护每个自治系统的拓扑信息和路由表,并在不同的自治系统之间进行信息传递和路由交换,ASBR可以引入外部路由。
AR1
[AR1]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1
area 0.0.0.1
network 10.1.1.0 0.0.0.255
#
return
AR2
[AR2]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1
area 0.0.0.0
network 11.1.1.0 0.0.0.255
area 0.0.0.1
network 10.1.1.0 0.0.0.255
#
return
AR3
[AR3]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1
area 0.0.0.0
network 11.1.1.0 0.0.0.255
network 12.1.1.0 0.0.0.255
#
return
AR4
[AR4]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1
area 0.0.0.0
network 12.1.1.0 0.0.0.255
area 0.0.0.2
network 13.1.1.0 0.0.0.255
#
return
AR5
[AR5]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1
area 0.0.0.2
network 13.1.1.0 0.0.0.255
#
return
区域间路由计算,依赖三类LSA进行完成,3类LSA由ABR进行产生,在一个区域内部泛洪,当三类LSA传递到其他区域的时候adv cost会重新计算。
查3类LSA的命令行
<AR1>display ospf lsdb summary
ABR自白
ABR会在自身产生的一类LSA中,表明自己是一台ABR。AR2发出的LSU报文中会将Flags中ABR标记为设置为1,表明自己是一个ABR路由器
从AR1的lsdb中可以看到从ABR路由器AR2上传递过来的一类LSA
ABR的行为
1、将直连区域内的1类和2类LSA,转换为3类LSA,传递到其他区域
2、将骨干区域内的3类LSA,转换为非骨干区域内的3类LSA
在AR5上创建一个loopback接口,并在ospf area 0中宣告
此时可以看到AR5上lsdb数据库中
区域间的路由计算
路由条目如何计算:通过3类LSA携带的LSID+ net mask计算出网络号和掩码信息
Cost如何计算:自身到达ABR的cost+ABR到达目的网络的cost算出
下一跳如何计算:自身SPF树中去往ABR最短路径的下一跳,即为区域间路由的下一跳。区域间的路由计算,路由器会把3类LSA,当作ABR上的一个叶子信息。
当在AR3上配置loopback接口,并宣告loopback接口IP时,AR2和AR4两台ABR会将区域内的LSA转换为3类LSA
区域内LSA
3类LSA
从AR4上看cost值,1.1.1.1的cost值为3
从AR5上看cost值,1.1.1.1的cost值为4
OSPF防环机制
域间路由环路的产生
没有ABR的情况下,在域间路由转换时,可能会产生环路
区域间路由防环原则
1、为了防止OSPF区域间路由环路,定义出了ABR这种设备角色,并且定义区域间路由的转换只能由ABR完成,而ABR时连接到骨干区域的,所以OSPF区域设计需要保证非骨干区域与骨干区域相连接,区域间通讯经过骨干区域,形成星型逻辑拓扑,逻辑结构无环
2、ABR不会将非骨干区域的3类LSA传递到骨干区域,ABR在骨干区域存在邻居是不会计算非骨干区域的3类LSA,如果骨干区域不存在邻居将会计算非骨干的LSA。非骨干区域,进入的3类LSA不会再回到骨干区域,出去的1类LSA不会再回到非骨干区域。
3、无论COST值多少,1 2类LSA优先于3类LSA
区域间水平分割
如图拓扑,配置接口地址与OSPF邻居,选择10.1.1.1这条LSA
AR1
AR2
AR3
AR4
AR5
AR6
AR1上的一类LSA在AR2上没有变为3类LSA从AR4传递到AR3上,AR2上只保留了1类LSA 10.1.1.1。也就是说1 2类LSA优选于3类LSA。
二十三、OSPF虚链路
如果遇到了不规范的OSPF区域设计,非骨干区域不与骨干区域相连
违背了OSPF区域的连接规则
虚链路的特点
1、虚链路属于area 0的逻辑链路
2、虚链路不能穿越特殊区域
3、虚链路只能穿越一个常规的非骨干区域
4、做了area 0的认证,由于vlink属于area 0,也会启用认证
v-link的作用体现
1、修正不规则的区域设计
- 不连续的区域0
- 非骨干区域没有连接骨干区域
2、area 0的备用链路
3、OSPF虚链路实现路径优化,如下图AR3和AR5之间存在一条虚链路,如果AR1与AR5传输报文,如果没有虚链路,报文路径为AR1->AR2->AR4->AR5,建立虚链路后,报文路径为AR1->AR2->AR3->AR5,这样的开销相比小,实现了路径优化
OSPF虚链路实验
AR1
[AR1]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1
area 0.0.0.0
network 10.1.1.0 0.0.0.255
#
return
AR2
[AR2]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1
area 0.0.0.0
network 10.1.1.0 0.0.0.255
area 0.0.0.1
network 11.1.1.0 0.0.0.255
#
return
AR3
[AR3]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1
area 0.0.0.1
network 11.1.1.0 0.0.0.255
network 12.1.1.0 0.0.0.255
#
return
AR4
[AR4]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1
area 0.0.0.1
network 12.1.1.0 0.0.0.255
area 0.0.0.2
network 13.1.1.0 0.0.0.255
#
return
AR5
<AR5>display current-configuration configuration ospf
[V200R003C00]
#
ospf 1
area 0.0.0.2
network 13.1.1.0 0.0.0.255
#
return
这种拓扑会导致AR5无法学习到AR1上的路由
此时可以在AR2与AR4上建立一条虚链路,使得area 2区域连接到area 0,使AR4成为ABR
虚链路的配置命令行,在ospf进程下配置如下命令行
vlink-peer [router-id]
AR2上配置
[AR2-ospf-1]display ospf peer
OSPF Process 1 with Router ID 10.1.1.2
Neighbors
Area 0.0.0.0 interface 10.1.1.2(GigabitEthernet0/0/0)'s neighbors
Router ID: 10.1.1.1 Address: 10.1.1.1
State: Full Mode:Nbr is Slave Priority: 1
DR: 10.1.1.2 BDR: 10.1.1.1 MTU: 0
Dead timer due in 36 sec
Retrans timer interval: 5
Neighbor is up for 00:40:41
Authentication Sequence: [ 0 ]
Neighbors
Area 0.0.0.1 interface 11.1.1.1(GigabitEthernet0/0/1)'s neighbors
Router ID: 11.1.1.2 Address: 11.1.1.2
State: Full Mode:Nbr is Master Priority: 1
DR: 11.1.1.2 BDR: 11.1.1.1 MTU: 0
Dead timer due in 34 sec
Retrans timer interval: 5
Neighbor is up for 00:40:11
Authentication Sequence: [ 0 ]
[AR2-ospf-1]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1
area 0.0.0.0
network 10.1.1.0 0.0.0.255
area 0.0.0.1
network 11.1.1.0 0.0.0.255
vlink-peer 12.1.1.2
#
return
AR4上的配置
[AR4]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1
area 0.0.0.1
network 12.1.1.0 0.0.0.255
vlink-peer 10.1.1.2
area 0.0.0.2
network 13.1.1.0 0.0.0.255
#
return
[AR4]display ospf peer
OSPF Process 1 with Router ID 12.1.1.2
Neighbors
Area 0.0.0.1 interface 12.1.1.2(GigabitEthernet0/0/0)'s neighbors
Router ID: 11.1.1.2 Address: 12.1.1.1
State: Full Mode:Nbr is Slave Priority: 1
DR: 12.1.1.2 BDR: 12.1.1.1 MTU: 0
Dead timer due in 40 sec
Retrans timer interval: 5
Neighbor is up for 00:02:19
Authentication Sequence: [ 0 ]
Neighbors
Area 0.0.0.2 interface 13.1.1.1(GigabitEthernet0/0/1)'s neighbors
Router ID: 13.1.1.2 Address: 13.1.1.2
State: Full Mode:Nbr is Master Priority: 1
DR: 13.1.1.2 BDR: 13.1.1.1 MTU: 0
Dead timer due in 37 sec
Retrans timer interval: 5
Neighbor is up for 00:02:24
Authentication Sequence: [ 0 ]
AR2上查看虚链路
AR4上查看虚链路
此时看到AR4上的lsdb
AR1上的lsdb
此时查看AR5上的路由,可以看到AR5可以学习到10.1.1.0网段的路由
虚链路报文的源目的IP地址
虚链路的两个端点需要相互交换协议报文,但是虚链路的邻居是用邻居的routerID来标识的,不能作为协议报文的目的IP地址。每个虚连接的端点都要计算两个最短路径树,一个是本地最短路径树,而另一个是虚连接邻居的最短路径树。
如图中虚连接端点之一RTB要以自己为根计算Area1内的最短路径树(即本地路径树),另外RTB还要计算以其虚连接邻居RTD为根的Area1内的最短路径树(即虚连接邻居的最短路径树)。RTD类同。
计算虚连接邻居的最短路径树后,在最短路径树上查找如何到达本地路由器(通过RouterID标识),虚连接邻居到达本地路由器的出接口的IP地址为本地路由器发送给虚连接邻居的协议报文的目的IP地址
虚链路中的报文目的IP地址如何判断?
以虚链路邻居为根节点,构建出SPF树,在SPF树中到达自身最短路径的出接口IP地址,即自身向虚链路邻居发送报文的目的IP地址。
虚链路的报文的源IP地址如何判断?
自身去往目的IP地址的出接口地址,即为虚链路报文的源IP地址
使用Router-id建立虚链路邻居的优势
稳定,当区域内存在多条冗余路径的时候,当某条路径出现故障,只要区域内的SPF树不会断开,那么虚链路邻居也不会断开
虚链路的建立只能跨越一个常规的非骨干区域
虚链路的邻居维护
1、华为设备中,虚链路邻居之间,会周期性的交互Hello报文,默认10S一次,dead time为40S
可以配置虚链路的报文的 hello报文时间和dead time
[AR2-ospf-1-area-0.0.0.1]vlink-peer 12.1.1.2 ?
authentication-null Use null authentication
dead Interval after which a neighbor is declared dead
hello Time between HELLO packets
hmac-md5 Use HMAC-MD5 algorithm
keychain Keychain authentication mode
md5 Use MD5 algorithm
retransmit Retransmit interval
simple Simple authentication mode
smart-discover Enable smart-discover Function
trans-delay Link state transmit delay(Second)
<cr> Please press ENTER to execute command
2、当和虚链路邻居之间的SPF树断开之后,虚链路邻居将会立刻断开
查看虚链路邻居关系
<AR2>display ospf vlink
虚链路环路问题
建立如上图拓扑,并建立OSPF邻居,在AR2和AR4上建立vlink虚链路,并将AR5的loopback1口IP宣告到OSPF进程中,形成了OSPF虚链路环路。
在AR4上看LSDB
可以看到AR4产生了到50.1.1.1的三类LSA
从AR3上看LSDB
从AR2上看LSDB
由于虚链路的建立,AR2上存在了一条AdvRouter为3.3.3.3的50.1.1.1的3类LSA
AR3上有骨干区域的50.1.1.1 AdvRouter为3.3.3.3的3类LSA和非骨干区域AdvRouter为4.4.4.4的3类LSA,此时AR3不计算非骨干区域AdvRouter为4.4.4.4的3类LSA 。
此时AR3到达50.1.1.1的路径为AR1,AR1到达50.1.1.1的路径为AR2,AR2到达50.1.1.1的路径为AR3,形成环路
解决OSPF虚链路环路问题,需要在AR3和AR4上建立虚链路
OSPF MTU
OSPF邻居建立:MTU检测,默认华为设备中OSPFv2不启用,思科设备默认启用。
没有开启MTU检测的时候,发送DD报文MTU取值为0,并且接收到的DD报文忽略对MTU的检测。
开启接口对DD报文的MTU报文的检测功能,接口下配置
[Huawei-GigabitEthernet0/0/1]ospf mtu-enable
当开启之后,DD报文中存在MTU值
当开启MTU检测之后,要求接收到的DD报文,MTU取值必须小于或者等于自身。
当主设备的MTU大于从设备的MTU时,双方都会卡在exstart状态。
当主设备的MTU小于从设备的MTU时,从设备会卡在exchange状态,而主设备卡在exstart状态。
二十四、OSPF外部路由计算与FA地址计算
OSPF外部路由引入
ASBR:引入外部路由的路由器即为ASBR
ASBR的自白:当路由器成为ASBR之后,将会在产生的1类LSA中将ASBR标志置为1,标识自己为ASBR
OSPF外部路由引入实验
AR1
<AR1>display current-configuration configuration ospf
[V200R003C00]
#
ospf 1 router-id 1.1.1.1
import-route static
area 0.0.0.0
network 10.1.1.0 0.0.0.255
network 11.1.1.0 0.0.0.255
#
return
AR2
<AR2>display current-configuration configuration ospf
[V200R003C00]
#
ospf 1 router-id 2.2.2.2
area 0.0.0.1
network 2.2.2.2 0.0.0.0
network 12.1.1.0 0.0.0.255
#
return
AR3
<AR3>display current-configuration configuration ospf
[V200R003C00]
#
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 10.1.1.0 0.0.0.255
area 0.0.0.1
network 3.3.3.3 0.0.0.0
network 12.1.1.0 0.0.0.255
#
return
AR4
[AR4]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1 router-id 4.4.4.4
import-route static
area 0.0.0.0
network 11.1.1.0 0.0.0.255
area 0.0.0.2
network 13.1.1.0 0.0.0.255
#
return
AR5
<AR5>display current-configuration configuration ospf
[V200R003C00]
#
ospf 1 router-id 5.5.5.5
area 0.0.0.2
network 5.5.5.5 0.0.0.0
network 13.1.1.0 0.0.0.255
#
return
AR6
ip route-static 0.0.0.0 0.0.0.0 14.1.1.1
此时AR2和AR6都能ping通6.6.6.6
当在AR1和AR4上引入外部路由后,可以看到OSPF lsdb中,1.1.1.1 和4.4.4.4上有asbr标记
针对ASBR来说,引入外部路由会产生一条5类LSA,而5类LSA不属于某一个区域,5类LSA是在整个OSPF域内泛洪。
查询五类LSA
<AR1>display ospf lsdb ase
如果华为路由器ospf进程一旦引入了一条外部路由,就会携带一个种子度量值(默认度量值),默认度量值取值为1,不管ospf通过何种途径学习到的外部路由,它的cost取值为1,且ospf引入的外部路由类型为type 2,tag值为1
1、和ASBR在相同区域的路由器
cost如何计算:路由器使用自身到达ASBR的COST+ASBR到达外部路由的cost
下一跳:路由器到达ASBR最短路径树的下一跳,即为自身到达外部路由的下一跳
外部路由没有拓扑信息,当AS域内的路由器引入了外部路由,AS域内的路由器将外部路由当作ASBR上的一个叶子节点。
如果引入的静态路由为type1
AR1
[AR1]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1 router-id 1.1.1.1
import-route static type 1
area 0.0.0.0
network 10.1.1.0 0.0.0.255
network 11.1.1.0 0.0.0.255
#
return
AR1上看到6.6.6.6的路由cost值为静态路由的cost值为0
而AR3上看到6.6.6.6的路由cost值为AR3到AR1的cost值+1为2
2、和ASBR不在相同区域的路由器
cost如何计算:即自身到达ABR的cost+ABR到达ASBR的cost+外部路由携带的cost
外部路由没有拓扑信息,AS域内路由器引入外部路由时,AS域内路由器会将外部路由当作ABR上的一个叶子节点。
例如AR5到达外部路由的cost值为1
AR4到达外部路由的cost值为1
AR1到达外部路由的cost值为0
下一跳:路由器到达ABR最短路径树的下一跳,即为自身到达外部路由的下一跳
4类LSA的作用:用于标识ABR到达ASBR的位置
4类LSA如何产生:4类LSA由ABR产生,用于告诉其他区域内的路由器ASBR的位置,4类LSA产生在哪个区域就在哪个区域泛洪,当4类LSA传递到其他区域,Adv rtr和cost将会改变
<AR2>display ospf lsdb asbr
外部路由的两种类型,type1和type2,type1类型的外部路由,将会累加内部cost值。type2类型的路由器计算,type2类型的外部路由,不会累加内部cost值。
AR1上的配置
<AR1>display current-configuration configuration ospf
[V200R003C00]
#
ospf 1 router-id 1.1.1.1
import-route static type 2
area 0.0.0.0
network 10.1.1.0 0.0.0.255
network 11.1.1.0 0.0.0.255
#
return
当引入的外部路由类型为type2时,AR3上的外部路由的cost值为1
AR1上的配置
[AR1]display current-configuration configuration ospf
[V200R003C00]
#
ospf 1 router-id 1.1.1.1
import-route static type 1
area 0.0.0.0
network 10.1.1.0 0.0.0.255
network 11.1.1.0 0.0.0.255
#
return
当引入的外部路由类型为type1时,AR3上的外部路由的cost值为2
外部路由选路原则:
1、无论任何cost,type1总是优于type2
2、同为type1的时候如何比较:
比较cost和值,和值越小越优
如果cost和值相同,则负载
3、同为type2的时候如何比较:
比较引入的cost的值,即5类LSA携带的cost值
如果引入时的cost相同,则比较到达ASBR的cost
如果到达ASBR的cost相同,则负载
如果希望ospf路由器通过自身的算法选出访问外部路由的最短路径,而不加以管理的时候使用type1。
如果希望人为控制ospf路由器访问外部路由的总出口时使用type2。
1类 2类LSA优于3类LSA优于5类LSA Type1优于5类LSA Type2
次优外部路由的产生原因
5类LSA中的FA地址的作用:用于外部路由的路径优化