变更计算机网络实验文件名
136
计算机网络实验/1 网络实验入门.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# 网络实验入门
|
||||
|
||||
目录
|
||||
1. 实验环境及设备简介
|
||||
2. 网线制作和测试
|
||||
3. 路由器和交换机的基本配置
|
||||
4. 报文分析软件
|
||||
5. 简单局域网组建实验
|
||||
6. 基于地址转换的组网实验
|
||||
|
||||
> 网络实验2019年10月17日算是从今天真正的开始做了,之前,可能都是在划水,网络实验,一周付出五天应该不为过。不过我觉得。以后能付出三天应该就能赶上进度。这里主要写一写自己缺少的理论知识。h3c的操作问题全部放到命令行的笔记当中
|
||||
|
||||
|
||||
## 1 实验环境及设备简介
|
||||
|
||||
|
||||
### 集线器(hub)
|
||||
|
||||
* 物理层
|
||||
* 将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。某个端口接收到比特信号,简单的将比特信号复制转发到其他端口。多个端口同时输入信号时会发生冲突。
|
||||
|
||||
### 交换机(switch)
|
||||
|
||||
* 链路层
|
||||
* 是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路,把传输的信息送到符合要求的相应路由上。采用背板总线交互结构,每个端口有一个独立的共享介质,每个冲突域只有一个端口。链路层是根据mac地址进行数据转发。
|
||||
* 交换方式主要包括:端口交换、帧交换、信元交换。
|
||||
* 具体结构如下:
|
||||
|
||||

|
||||
|
||||
### 路由器(router)
|
||||
* 网络层
|
||||
* 根据IP地址进行路由,转发到对应的网络。工作在广域网,连接不通的网络。数据转发基于路由表实现。
|
||||
* 路由器的主要功能有两个:存储转发与路由选择。
|
||||
* 路由选择主要包括两种方法:静态路由与动态路由。
|
||||
* 具体结构如下:
|
||||
|
||||

|
||||
|
||||
### 说明
|
||||
* 集线器本身不能区分广播域和冲突域,对收到的任何目的地之的消息都进行转发。
|
||||
* 二层交换机能够区分冲突域,每个端口是一个独立的冲突域,端口之间不会起冲突,会根据不同目的地址进行转发。但是不区分广播域,收到的广播消息会转发给所有同网段的主机。
|
||||
* 一个交换机下设置同网段的主机会处于同一个局域网下,设置不同网段的主机可以处于不同的局域网下。
|
||||
* 路由器和主机都具有适配器,每个适配器具有ip地址与Mac地址。但是交换机没有网络适配器,所有的接口不具有ip地址与Mac地址,其唯一的作用是维护一个Mac地址和交换机接口映射表。
|
||||
* ARP协议是用来解析MAC地址的协议。ARP协议在网络适配器当中执行,而不是交换机中。ARP维护的IP-MAC地址映射表存在主机的内存中,ARP表的每一个动态项都有生存周期,一段时间后自动清除。
|
||||
* DNS与ARP协议类似,DNS能够解析因特网中任意地方的主机名解析为IP地址。ARP协议只能讲局域网中的IP地址解析为MAC地址。
|
||||
|
||||
|
||||
* 简单来说,链路层的工作模式:如果是目的ip地址在局域网内,则直接arp拿到mac地址,发送帧。如果目的ip地址在局域网外,直接arp拿到网关mac地址(路由器适配器地址),发送帧。
|
||||
* 链路层,只关心目标适配器,不关心路由。只进行一跳。
|
||||
|
||||
|
||||
> 一会可以查看一下ping不通的原因,以及为什么路由表中没有另外一个地址(真奇怪)
|
||||
|
||||
### 路由器和交换机的配置方式
|
||||
|
||||
* console口配置
|
||||
* Telnet配置
|
||||
* AUX口远程配置
|
||||
* 哑终端配置
|
||||
* FTP方式传送配置文件
|
||||
|
||||
### 控制级别
|
||||
|
||||
* 参观级
|
||||
* 监控级
|
||||
* 配置级
|
||||
* 管理级
|
||||
|
||||
|
||||
## 2 网线制作和测试
|
||||
|
||||
RJ-45连接器:水晶头。包括直通线和交叉线两种接线方式。
|
||||
## 3 路由器和交换机的基本配置
|
||||
|
||||
### 配置方式
|
||||
* 通过Console口配置
|
||||
* 通过Telnet远程登录进行相关配置
|
||||
|
||||
## 4 报文分析软件
|
||||
# MTU
|
||||
mtu 100
|
||||
undo mtu
|
||||
|
||||
# speed
|
||||
speed [100|10|negotiation] //100M,10M,自动协商
|
||||
|
||||
# display
|
||||
display interfaces ethernet number
|
||||
|
||||
```
|
||||
### 交换机以太网端口视图
|
||||
|
||||
```
|
||||
shutdown
|
||||
undo shutdown
|
||||
|
||||
duplex full //设置全双工状态
|
||||
undo duplex //回复以太网全双工状态
|
||||
|
||||
spreed [10|100|auto]
|
||||
|
||||
mdi [across|auto|normal] //设置接口网线类型
|
||||
|
||||
flow-control //流量控制
|
||||
undo flow-control //解除流量控制
|
||||
|
||||
port link-type [acces|hybrid|trunk] //设置接口链路类型
|
||||
undo port link-type
|
||||
|
||||
display interface Ethernet1/0/1
|
||||
```
|
||||
### VLAN视图
|
||||
|
||||
### VLAN接口视图
|
||||
|
||||
|
||||
### RIP视图
|
||||
|
||||
### OSPF视图
|
||||
|
||||
### ACL视图
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 5 简单局域网组建实验
|
||||
|
||||
## 6 基于地址转换的组网实验
|
||||
acl命令:access control list访问控制列表
|
||||
1)限制网络流量、提高网络性能。例如,ACL可以根据数据包的协议,指定这种类型的数据包具有更高的优先级,同等情况下可预先被网络设备处理。
|
||||
2)提供对通信流量的控制手段。
|
||||
3)提供网络访问的基本安全手段。
|
||||
4)在网络设备接口处,决定哪种类型的通信流量被转发、哪种类型的通信流量被阻塞。
|
||||
13
计算机网络实验/10 组播实验.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# 组播实验
|
||||
|
||||
目录
|
||||
1. IP组播实验
|
||||
2. IGMP实验
|
||||
3. PIM-DM实验
|
||||
4. PIM-SM实验
|
||||
|
||||
|
||||
## 1 IP组播实验
|
||||
## 2 IGMP实验
|
||||
## 3 PIM-DM实验
|
||||
## 4 PIM-SM实验
|
||||
7
计算机网络实验/11 IPv6实验.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# IPv6实验
|
||||
|
||||
1. IPv6基础实验
|
||||
2. ICMPv6分析
|
||||
3. IPv6组网实验
|
||||
4. IPv6地址解析协议
|
||||
5. OSPFv3协议分析实验
|
||||
173
计算机网络实验/2 链路层实验.md
Normal file
@@ -0,0 +1,173 @@
|
||||
# 链路层实验
|
||||
|
||||
目录
|
||||
1. 以太网链路层帧格式分析
|
||||
2. 交换机的MAC地址表和端口聚合
|
||||
3. VLAN的配置与分析
|
||||
4. 广域网协议分析
|
||||
5. 设计型实验
|
||||
|
||||
## 1 以太网链路层帧格式分析
|
||||
|
||||
以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是目前应用最普遍的局域网技术,取代了其他局域网技术如令牌环、FDDI和ARCNET。
|
||||
|
||||
以太网是一种网络链路形式,是星型网络。与令牌环、arcnet是链路层网络技术。而不是泛指整个计算机网络。它只是计算机网络某一个层面的一个子集。因特网也是,他是应用层的一种技术,是应用层众多技术中的一个子集,而不是泛指整个计算机网络。
|
||||
|
||||
以太网帧格式可以参考[链路层-交换局域网]()的内容。
|
||||
|
||||
## 2 交换机的MAC地址表和端口聚合
|
||||
|
||||
### MAC地址表
|
||||
交换机的转发是基于MAC地址表的。以太网交换机收到数据帧时会进行一下操作:
|
||||
* MAC地址表中没有mac-interface匹配项,则向所有(除发送端口外)端口发送数据帧。
|
||||
* 如果MAC地址表中有mac-interface匹配项,则表明该端口和目的主机在同一个广播域,转发到指定的端口上。
|
||||
* 交换机还将检查收到的数据帧的源mac地址,并查找mac地址表中与之相匹配的项,如果没有,交换机将增加一条由mac和interface组成的记录。
|
||||
|
||||
### 端口聚合
|
||||
|
||||
网络接口产生带宽速度限制。多网络接口连接。一台服务器同时通过多个网络接口提供数据传输,提高用户访问速率。应用场景:
|
||||
* 交换机与交换机之间的连接:汇聚层交换机到核心层交换机或者核心层交换机之间。
|
||||
* 交换机与服务器之间的连接:集群服务器采用了多网卡与交换机连接提供集中访问。
|
||||
* 交换机与路由器之间的连接:交换机和路由器采用端口聚合可以解决广域网和局域网连接瓶颈。
|
||||
* 服务器与服务器之间的连接:集群服务器采用多王凯与路由器连接提供集中访问。
|
||||
|
||||
### 端口聚合实现原理
|
||||
|
||||

|
||||
|
||||
* 两个以太网交换机进行n个端口的聚合,此时当交换机A要向交换机B通过聚合链路进行数据传输时,从上层协议封装而来的数据帧进行排队,然后通过帧分发器按照一定的规则将帧分发到不同的端口发送队列分别进行发送。
|
||||
* 数据帧到达对端后,交换机B通过帧接收器将接收到的帧按照接收顺序上交给上层协议,再由上层协议处理。
|
||||
|
||||
|
||||
端口汇聚是将2个或多个物理端口组合在一起成为一条逻辑的路径从而增加在交换机和网络节点之间的带宽,将属于这几个端口的带宽合并,给端口提供一个几倍于独立端口的独享的高带宽。简单来说就是将多个端口绑定成一个端口,从而增加带宽。端口聚合的对象可以是交换机和交换机,交换机和路由器,主机与交换机或者路由器之间通过两个或多个端口并行连接同时传输以提供更高带宽、更大吞吐量, 大幅度提供整个网络能力。
|
||||
|
||||
端口聚合主要用于交换机之间连接。由于两个交换机之间有多条冗余链路的时候,STP会将其中的几条链路关闭,只保留一条,这样可以避免二层的环路产生。主要用途是生成冗余线路,保证通信不会中断。
|
||||
|
||||
* 生成树协议STP,开启生成树协议,可以在两台交换机形成环路时,自动断开其中一根线,断掉环路。
|
||||
|
||||
|
||||
## 3 VLAN的配置与分析
|
||||
|
||||
> 默认VLANID只作用在接收端接受没有tag域数据帧上。不会作用在发送端上。!!!
|
||||
|
||||
> VLAN的tag是在接收端判断的。VLAN的tag是在发送端决定是否加标签发送、无标签发送。
|
||||
|
||||
> VLAN数据帧是否丢弃是在输入端口和查询交换机表的过程中决定的。如果输入端口的VLANtag与数据帧的VLANtag不一致则丢弃数据帧;如果查询交换机表中的vlan+目的mac地址的组合没有出现,则转发失败,地球数据帧。
|
||||
|
||||
|
||||
### VLAN 的产生
|
||||
|
||||
一种专门为隔离二层广播报文设计的虚拟局域网技术。路由器本身隔离广播域是因为路由器本身的数据转发都在IP层进行的,而广播本身是在广播域进行的,广播域的mac地址为全1。而交换机本身是不隔离广播域的,对收到的广播帧会向所有端口转发。
|
||||
|
||||
在VLAN当中,交换机的转发是区分广播域的。规定,凡是具有VLAN功能的交换机在转发数据报文时,都需要确认该报文属于某一个VLAN,并且该报文智能被转发到属于同一VLAN的端口或主机。每一个VLAN代表了一个广播域,不同的VLAN属于不同的广播域。
|
||||
|
||||
广播域是转来用来区分具有相同网络号(网段)的网络接口。
|
||||
|
||||
### VLAN的优势
|
||||
* 限制广播范围,提高带宽的利用率
|
||||
* 减少移动和改变的代价
|
||||
* 虚拟工作组
|
||||
* 用户不受物理设备的限制,VLAN用户可以处于网络中的任何地方
|
||||
* VLAN对用户的应用不产生影响,是交换机的工作模式。
|
||||
* 增强通信的安全性
|
||||
* 增强网络的健壮性
|
||||
|
||||
### VLAN的划分
|
||||
|
||||
VLAN的主要目的是划分广播域。
|
||||
|
||||
1. 基于端口的VLAN划分。利用以太网交换机的端口来划分广播域。VLAN只与交换机有关,与交换机连接的主机无关。
|
||||
2. 基于MAC地址的VLAN划分。只与主机的MAC地址有关,当用户改变地理位置时,不需要重新配置,但是初始配置代价很大。
|
||||
3. 基于协议的VLAN划分。根据网络主机使用的网络协议来划分广播域。很难将相同协议的主机广播域划分的很小。
|
||||
4. 基于子网的划分。根据主机使用的IP地址所在的子网划分广播域。灵活方便管理,但会强迫交换机检查数据包的IP地址,然而这是三层网络层应该做的事情。
|
||||
|
||||
### VLAN的帧格式
|
||||

|
||||
|
||||
规定在标准以太网帧添加一个特殊的标志域-tag域。用于表示数据帧所属的VLANID。tag域包括2字节的标签协议IPID和2字节的标签控制信息TCI。TCI包括3bit的优先级信息Priority,CFI说明VLAN格式。
|
||||
### VLAN标签字段说明
|
||||
|
||||
|字段 |长度 |含义取值|
|
||||
|-|-|-|
|
||||
|TPID |2Byte| Tag Protocol Identifier(标签协议标识符),表示数据帧类型。 表示帧类型,取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。 各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时, 为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致。|
|
||||
|PRI |3bit| Priority,表示数据帧的802.1p优先级。 取值范围为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
|
||||
缺省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域的以太网帧。为了让交换机之间能够知道VLAN信息,只有交换机之间的以太网数据帧,才会有VLAN的标签tag域。
|
||||
|
||||
过程:
|
||||
* 交换机收到PC发送的数据帧时,为了让对端交换机知道数据帧的ID,增加VLAN的tag域后在发送。
|
||||
* 当交换机收到某数据帧的时候,交换机根据数据帧的tag域或者接口端口默认的VLANID来判断数据帧应该转发到哪些端口。如果目的主机是PC,则删除tag域后发送数据帧;如果目的主句是交换机,则添加tag域后发送数据。
|
||||
* 注意:如果检测到数据帧的VLAN ID和Trunk端口默认的VLANID相同时,不会在数据帧中添加tag域。而是到达对端交换机后,交换机发现没有tag域,为该数据帧为接收端默认VLANID。也就是说,默认VLANID只作用在接收端接受没有tag域数据帧上。
|
||||
|
||||
|
||||
### VLAN端口的分类
|
||||
* Access端口:连接不支持VLAN技术的端口,常为PC。接受发送不带Tag的以太网数据帧。
|
||||
* Trunk端口:连接支持VLAN技术的端口,常为交换机。接收发送到包含VLAN标签的以太网帧(如果数据帧的VLAN标签与默认VLAN相同,则接受到不带VLANtag的数据帧,发送的数据帧也不带VLANtag)。
|
||||
* Hybrid端口:Access与Trunk的混合模式。允许多个VLAN报文不带标签,Trunk只允许默认的VLAN的报文不带标签。
|
||||
|
||||
|
||||
### VLAN数据帧的转发过程
|
||||
1. 首先检查数据帧是否带有VLAN标签,如果没有,则将该端口默认VLAN ID作为VLAN ID。
|
||||
2. 如果带有VLAN标签,则检查是否与该端口的VLAN标签一致,如果不一致则丢弃该数据帧。
|
||||
3. 交换机结合VLANID进行源MAC地址学习,更新MAC地址表。
|
||||
4. 然后根据数据帧的目的MAC地址和VLANID,查找MAC地址表并向相应的端口转发该数据帧。
|
||||
5. 最后在发送端口,根据VLANID类型来决定是否将VLAN标签去掉。然后发送数据帧。
|
||||
|
||||
|
||||
## 4 广域网数据链路层协议分析
|
||||
|
||||
### PPP协议
|
||||
|
||||
PPP协议(Point to Point Protocol)点到点协议。数据链路层协议。是跟以太网协议同一个等级,以太网数据帧时用来组建局域网的。由一下三部分组成:
|
||||
* 一个将IP数据报封装到串行链路的方法。支持异步链路、同步链路。IP数据报是数据部分,受最大接收单元限制MRU。
|
||||
* 一个用来建立、配置和测试数据链路连接的链路控制协议(link control protocol,LCP),通信双方用来协商。
|
||||
* 一套网络控制协议(Network Control Protocol,NCP),用来支持不同的网络层协议。
|
||||
|
||||
### PPP帧格式
|
||||

|
||||
|
||||
F、A、C字段辅助作用,协议0x33表示数据部分是IP数据。用来区分不同协议。
|
||||
|
||||
不适用序号和确认机制。因为没用。
|
||||
|
||||
### PPP身份认证
|
||||
|
||||

|
||||
|
||||
总的来说分为两个步骤,通过LCP建立物理链路,通过NCP打开物理链路传输数据。
|
||||
|
||||
身份认证分为两种方式:PAP和CHAP
|
||||
|
||||
* PAP身份认证。
|
||||
|
||||
Password Authentication Protocol,密码认证协议。PAP认证在LCP链路控制协议建立链路的过程中。不会出现在NCP数据传输阶段。明文发送用户密码。
|
||||
|
||||
1. 客户端发起,用户名+密码明文发送。
|
||||
2. 认证方查询数据库,决定是否通过。
|
||||
|
||||
|
||||
* CHAP身份认证
|
||||
|
||||
Challenge-Handshake Authentication Protocol,询问握手协议。不仅在LCP链路控制协议连接建立阶段,也会在NCP数据传输阶段随机间隔认证。验证分三步,密文发送验证。
|
||||
|
||||
1. 验证方向被验证方发送:随机报文+主机名
|
||||
2. 被验证方接收,查询用户口令秘钥,利用随机报文、秘钥、报文ID用MD5加密算法生成应答。返回主机名
|
||||
3. 验证方接收数据,查询用户口令秘钥,利用随机报文、秘钥、报文ID用MD5加密算法得出结果。返回相应的结果。
|
||||
### IPCP协议
|
||||
|
||||
> 需要重点自学一下。
|
||||
|
||||
## 5 设计型实验
|
||||
无
|
||||
116
计算机网络实验/3 网络层实验.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# 网络层实验
|
||||
|
||||
|
||||
目录
|
||||
1. ARP分析
|
||||
2. ICMP分析
|
||||
3. IP分析
|
||||
4. 网络层分片实验
|
||||
5. 静态路由及其配置实验
|
||||
6. VLAN间通信综合实验
|
||||
7. 设计型实验
|
||||
|
||||
## hello
|
||||
## 1 ARP分析
|
||||
|
||||
address resolution protocol
|
||||
### 原理
|
||||
[参考计算机网络](../计算机网络/5.3 链路层-交换局域网.md)
|
||||
物理网络使用硬件地址传输报文,IP地址不能被物理网络识别。建立两种地址的映射关系。将IP地址机械城硬件地址的协议,称为地址解析协议。
|
||||
|
||||
ARP是动态协议,过程自动完成。主机有ARP表缓存。
|
||||
|
||||
### 同一网段的ARP解析过程
|
||||
* 查表,没有对方主机MAC地址,广播发送ARP请求报文。
|
||||
* 目的主机收到请求报文后判断是否在索要自己的MAC地址,若果是,将自己的MAC地址写入应答报文,并发单播回去。
|
||||
* 主机A收到单播ARP应答报文,将IP-MAC对应关系存入缓存。
|
||||
|
||||
### 不同网段的ARP解析过程
|
||||
* 源主机将报文发送给默认网关,查找解析自己配置的默认网关的IP地址,得到MAC地址,将默认网关IP-MAC存入缓存。
|
||||
* 由默认网关通过网络层根据路由表寻找下一跳地址,解析吓一跳的IP地址,得到MAC地址,将吓一跳IP-MAC存入缓存。
|
||||
*
|
||||
|
||||
## 2 ICMP分析
|
||||
internet control message protocol,因特网控制协议
|
||||
### 原理
|
||||
参考[网络层-网际协议](../计算机网络/4.2 网络层-网际协议.md).
|
||||
|
||||
允许主机报告差错情况提供有关信息,用于调试、监控网络。
|
||||
|
||||
### ICMP报文
|
||||
略
|
||||
|
||||
### ICMP报文分类
|
||||
差错报文
|
||||
|类型值|ICMP报文类型|
|
||||
|-|-|
|
||||
|3|重点不可达|
|
||||
|4|源站抑制|
|
||||
|11|超时|
|
||||
|12|参数问题|
|
||||
|5|路由重定向|
|
||||
|
||||
询问报文
|
||||
|类型值|ICMP报文类型|
|
||||
|-|-|
|
||||
|8或0|回送请求或应答|
|
||||
|13或14|时间戳请求或应答|
|
||||
|17或18|地址掩码请求或应答|
|
||||
|10或9|路由器询问或通告|
|
||||
|
||||
### 基于ICMP的应用程序
|
||||
|
||||
* ping
|
||||
* 检测网络连通性
|
||||
* 确定数据报被丢失、复制或重传。序列号唯一,用来检查结束到的应答报文的序列号。
|
||||
* 报文内放置时间戳。分局返回时间计算RTT
|
||||
* 校验接收到的数据包,确定数据报是否被损坏
|
||||
* ping -n count 指定ping数量。-i ttl指定生存时间。-s count 指定转发次数。-w timeout指定超时时间ms。
|
||||
|
||||
* traceroute
|
||||
* 本地计算机到目的主机的路径信息。
|
||||
* 发送具有不同TTL的ICMP请求报文,以确定每一跳。
|
||||
* tracert -d 指定不对计算机名进行解析。-h maxiumhops指定最大跳。-w timeout指定超时时间ms。
|
||||
|
||||
* Pingtest程序
|
||||
* 专门用来发送ICMP报文的程序。
|
||||
## 3 IP分析
|
||||
|
||||
Internet protocol
|
||||
|
||||
参考[网络层-网际协议](../计算机网络/4.2 网络层-网际协议.md)。
|
||||
### IP报文格式
|
||||
### IP地址编址方式
|
||||
|
||||
无分类域间路由选择CIDR
|
||||
|
||||
### IP层的路由分析
|
||||
|
||||
主机路由过程:将目的地之与子网掩码相与计算网络地址,与自身网络地址对比,不一样,则发往网关路由器。
|
||||
|
||||
路由器转发数据报的算法:
|
||||
1. 从收到的数据包首部提取目的IP地址D。
|
||||
2. 判断是否直接交付。检测直连网络地址,如果有匹配的网段,直接交付。否则执行3
|
||||
3. 若路由表中有目的地址为D的特定路由,则将数据传送给路由表中指明的下一跳路由器。否则执行4
|
||||
4. 对路由表中的每一行进行扫描,将目的地之与每一项的网络地址对比,找到所有的匹配项。
|
||||
5. 选取所有匹配项的最长网络前缀的路由表项。将数据报传送给表向对应的吓一跳路由器。结束,否则执行下一步。
|
||||
6. 报告转发分组出错。
|
||||
|
||||
路由表的生成方式可以分为静态配置和动态生成两种。静态路由和动态路由。动态生成可以通过OSPF算法和BGP算法实现。
|
||||
|
||||
路由器数据报转发总共有四个分支直接交付、特定路由完全匹配下一跳、最长前缀匹配网络号、报告分组转发出错。对应的三种地址分别是直接路由地址(direct)、静态路由地址(static)、动态路由地址(ospf、rip)。
|
||||
|
||||
|
||||
## 4 网络层分片实验
|
||||
|
||||
设置以太网端口的MTU实现分片。
|
||||
|
||||
|
||||
## 5 VLAN间通信综合实验
|
||||
|
||||
### 原理
|
||||
VLAN能够隔离二层广播。三层交换机-路由交换机,三层路由模块,实现三层的路由转发;二层交换模块,实现VLAN内的二层转发。用户可以设置默认网关,即VLAN的接口IP地址。
|
||||
|
||||
三层路由模块采用了以此路由多次转发的技术。
|
||||
|
||||
## 6 设计型实验
|
||||
23
计算机网络实验/7 OSPF实验.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# OSPF协议实验
|
||||
|
||||
目录
|
||||
1. OSPF协议概述及基本配置
|
||||
2. OSPF协议报文交互过程
|
||||
3. OSPF协议链路状态描述
|
||||
4. 区域划分及LSA种类
|
||||
5. OSPF协议路由的计算
|
||||
6. OSPF协议组网设计
|
||||
|
||||
> 区别
|
||||
> * OSPF指出了报文类型,表示建立可靠数据连接的过程的作用,指出了交互逻辑。
|
||||
> * LSA链路状态通告类型,用于反映交互双方(携带数据者)的逻辑关系。是反映的数据发送者、接受者的逻辑关系,而非路由表项的内容。与路由器本身的逻辑位置和逻辑角色有关系。
|
||||
> * LSA链路状态描述类型,反映了一条路由记录的类型,是一条记录自身的特点,与数据的具体含义有关。
|
||||
|
||||
> 联系
|
||||
> * 链路状态描述信息组成了链路状态通告信息。
|
||||
|
||||
> 图片说明
|
||||
> * 五种链路状态通告类型
|
||||
> 
|
||||
> * 五种链路状态描述类型
|
||||
> 
|
||||
45
计算机网络实验/8 BGP实验.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# BGP实验
|
||||
|
||||
目录
|
||||
1. BGP协议基本分析
|
||||
2. 状态机的分析
|
||||
|
||||
|
||||
3. BGP的路由聚合
|
||||
4. BGP的基本路由属性分析
|
||||
5. BGP的同步机制
|
||||
6. BGP的路由策略及应用
|
||||
|
||||
|
||||
7. BGP设计型实验
|
||||
|
||||
|
||||
|
||||
> 关于聚合问题需要进一步学习。包括链路层的端口聚合和OSPF与BGP的路由聚合
|
||||
|
||||
|
||||
|
||||
## 1 BGP基本分析
|
||||
|
||||
BGP的路由只包含BGP路由器。仅指明下一跳。
|
||||
|
||||
BGP组成的AS之间的网络结构拓扑图是全连接的?并不是。
|
||||
|
||||
BGP协议中带有很多属性信息,便于进行路由策略和路由过滤。
|
||||
|
||||
对于路由的routing-table来说,OSPF与BGP是一样的,他们只是不同的路由信息传播策略与路由信息生成策略。但具体的路由过程是完全一致的。
|
||||
也就是说,最终都要提供目的地址和下一跳地址,生成路由表,进行路由转发。
|
||||
|
||||
## 2 状态机的分析
|
||||
## 3 BGP的路由聚合
|
||||
## 4 BGP的基本路由属性分析
|
||||
## 5 BGP的同步机制
|
||||
## 6 BGP的路由策略及应用
|
||||
|
||||
|
||||
路由策略可以分为三类
|
||||
* 路由发布
|
||||
* 路由接受
|
||||
* 路由引入
|
||||
*
|
||||
## 7 BGP设计型实验
|
||||
11
计算机网络实验/9 网络管理实验.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# 网络管理实验
|
||||
|
||||
目录
|
||||
|
||||
1. 网管软件基本功能实验
|
||||
2. SNMP基本原理的验证与分析实验
|
||||
3. 网络拓扑发现实验
|
||||
|
||||
## 1 网管软件基本功能实验
|
||||
## 2 SNMP基本原理的验证与分析实验
|
||||
## 3 网络拓扑发现实验
|
||||
476
计算机网络实验/BGP协议.md
Normal file
@@ -0,0 +1,476 @@
|
||||
# BGP协议
|
||||
|
||||
- [BGP协议](#bgp%e5%8d%8f%e8%ae%ae)
|
||||
- [1 BGP概述](#1-bgp%e6%a6%82%e8%bf%b0)
|
||||
- [BGP简介](#bgp%e7%ae%80%e4%bb%8b)
|
||||
- [目的](#%e7%9b%ae%e7%9a%84)
|
||||
- [BGP的优点](#bgp%e7%9a%84%e4%bc%98%e7%82%b9)
|
||||
- [2 BGP基础](#2-bgp%e5%9f%ba%e7%a1%80)
|
||||
- [BGP基本概念](#bgp%e5%9f%ba%e6%9c%ac%e6%a6%82%e5%bf%b5)
|
||||
- [BGP分类](#bgp%e5%88%86%e7%b1%bb)
|
||||
- [BGP报文交互中的角色](#bgp%e6%8a%a5%e6%96%87%e4%ba%a4%e4%ba%92%e4%b8%ad%e7%9a%84%e8%a7%92%e8%89%b2)
|
||||
- [BGP的路由器号(Router ID)](#bgp%e7%9a%84%e8%b7%af%e7%94%b1%e5%99%a8%e5%8f%b7router-id)
|
||||
- [BGP路由生成](#bgp%e8%b7%af%e7%94%b1%e7%94%9f%e6%88%90)
|
||||
- [BGP与IGP交互机制-路由注入方式](#bgp%e4%b8%8eigp%e4%ba%a4%e4%ba%92%e6%9c%ba%e5%88%b6-%e8%b7%af%e7%94%b1%e6%b3%a8%e5%85%a5%e6%96%b9%e5%bc%8f)
|
||||
- [3 BGP工作原理:](#3-bgp%e5%b7%a5%e4%bd%9c%e5%8e%9f%e7%90%86)
|
||||
- [3.1 BGP的报文](#31-bgp%e7%9a%84%e6%8a%a5%e6%96%87)
|
||||
- [BGP报文头](#bgp%e6%8a%a5%e6%96%87%e5%a4%b4)
|
||||
- [OPEN报文](#open%e6%8a%a5%e6%96%87)
|
||||
- [UPDATE报文](#update%e6%8a%a5%e6%96%87)
|
||||
- [Notification报文](#notification%e6%8a%a5%e6%96%87)
|
||||
- [Keepalive报文](#keepalive%e6%8a%a5%e6%96%87)
|
||||
- [Refresh报文格式](#refresh%e6%8a%a5%e6%96%87%e6%a0%bc%e5%bc%8f)
|
||||
- [3.2 BGP状态机:](#32-bgp%e7%8a%b6%e6%80%81%e6%9c%ba)
|
||||
- [Idle状态](#idle%e7%8a%b6%e6%80%81)
|
||||
- [Connet状态](#connet%e7%8a%b6%e6%80%81)
|
||||
- [Active状态](#active%e7%8a%b6%e6%80%81)
|
||||
- [OpenSent状态](#opensent%e7%8a%b6%e6%80%81)
|
||||
- [OpenConfirm状态](#openconfirm%e7%8a%b6%e6%80%81)
|
||||
- [Establish状态](#establish%e7%8a%b6%e6%80%81)
|
||||
- [3.3 BGP对等体之间的交互原则](#33-bgp%e5%af%b9%e7%ad%89%e4%bd%93%e4%b9%8b%e9%97%b4%e7%9a%84%e4%ba%a4%e4%ba%92%e5%8e%9f%e5%88%99)
|
||||
- [5 BGP属性:](#5-bgp%e5%b1%9e%e6%80%a7)
|
||||
- [属性分类](#%e5%b1%9e%e6%80%a7%e5%88%86%e7%b1%bb)
|
||||
- [BGP常见属性类型:](#bgp%e5%b8%b8%e8%a7%81%e5%b1%9e%e6%80%a7%e7%b1%bb%e5%9e%8b)
|
||||
- [Origin属性](#origin%e5%b1%9e%e6%80%a7)
|
||||
- [AS_Path属性:](#aspath%e5%b1%9e%e6%80%a7)
|
||||
- [Next_hop属性:](#nexthop%e5%b1%9e%e6%80%a7)
|
||||
- [Local_pref属性:](#localpref%e5%b1%9e%e6%80%a7)
|
||||
- [MED属性:](#med%e5%b1%9e%e6%80%a7)
|
||||
- [Community团体属性:](#community%e5%9b%a2%e4%bd%93%e5%b1%9e%e6%80%a7)
|
||||
- [Originator_ID属性和Cluster_List属性:](#originatorid%e5%b1%9e%e6%80%a7%e5%92%8cclusterlist%e5%b1%9e%e6%80%a7)
|
||||
- [6 BGP路由策略](#6-bgp%e8%b7%af%e7%94%b1%e7%ad%96%e7%95%a5)
|
||||
- [路由策略分类](#%e8%b7%af%e7%94%b1%e7%ad%96%e7%95%a5%e5%88%86%e7%b1%bb)
|
||||
- [路由策略实施机制](#%e8%b7%af%e7%94%b1%e7%ad%96%e7%95%a5%e5%ae%9e%e6%96%bd%e6%9c%ba%e5%88%b6)
|
||||
- [与路由选择相关的过滤器](#%e4%b8%8e%e8%b7%af%e7%94%b1%e9%80%89%e6%8b%a9%e7%9b%b8%e5%85%b3%e7%9a%84%e8%bf%87%e6%bb%a4%e5%99%a8)
|
||||
- [路由选择](#%e8%b7%af%e7%94%b1%e9%80%89%e6%8b%a9)
|
||||
- [7 BGP的其他机制](#7-bgp%e7%9a%84%e5%85%b6%e4%bb%96%e6%9c%ba%e5%88%b6)
|
||||
- [路由聚合](#%e8%b7%af%e7%94%b1%e8%81%9a%e5%90%88)
|
||||
- [BGP同步机制](#bgp%e5%90%8c%e6%ad%a5%e6%9c%ba%e5%88%b6)
|
||||
- [BGP安全性](#bgp%e5%ae%89%e5%85%a8%e6%80%a7)
|
||||
- [BGP负载分担:](#bgp%e8%b4%9f%e8%bd%bd%e5%88%86%e6%8b%85)
|
||||
- [BGP路由衰减:](#bgp%e8%b7%af%e7%94%b1%e8%a1%b0%e5%87%8f)
|
||||
|
||||
## 1 BGP概述
|
||||
### BGP简介
|
||||
边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。
|
||||
|
||||
MP-BGP是对BGP-4进行了扩展,来达到在不同网络中应用的目的,BGP-4原有的消息机制和路由机制并没有改变。MP-BGP在IPv6单播网络上的应用称为BGP4+,在IPv4组播网络上的应用称为MBGP(Multicast BGP)。
|
||||
|
||||
### 目的
|
||||
为方便管理规模不断扩大的网络,网络被分成了不同的自治系统。1982年,外部网关协议EGP(Exterior Gateway Protocol)被用于实现在AS之间动态交换路由信息。但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求。
|
||||
|
||||
BGP是为取代最初的EGP而设计的另一种外部网关协议。不同于最初的EGP,BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息。
|
||||
|
||||
虽然BGP用于在AS之间传递路由信息,但并不是所有AS之间传递路由信息都需要运行BGP。比如在数据中心上行的连入Internet的出口上,为了避免Internet海量路由对数据中心内部网络的影响,设备采用静态路由代替BGP与外部网络通信。
|
||||
|
||||
### BGP的优点
|
||||
|
||||
课本上BGP的特性
|
||||
* BGP着眼点不在于**发现和计算**路由。而在于控制路由的**传播和选择**最好的路由。
|
||||
* 通过携带AS路径信息,解决了路由环路问题。
|
||||
* 为控制路由的传播和路由选择,它为路由附带属性信息
|
||||
* 支持无类别域间选路CIDR,引入路由聚合。简化路由表。
|
||||
* 路由更新时只发送增量路由,减少了BGP传播路由的占用宽带。
|
||||
* 能够对路由进行过滤、选择和控制。
|
||||
* BGP拓扑结构图中,断点是一个AS区域,边是AS之间的链路。
|
||||
* BGP需要设置AS间的链路花费、AS区域内的花费。
|
||||
|
||||
|
||||
BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性。
|
||||
* BGP采用认证和GTSM的方式,保证了网络的安全性。
|
||||
* BGP提供了丰富的路由策略,能够灵活的进行路由选路,并且能指导邻居按策略发布路由。
|
||||
* BGP提供了路由聚合和路由衰减功能由于防止路由震荡,有效提高了网络的稳定性。
|
||||
* BGP使用TCP作为其传输层协议(目的端口号179),并支持与BGP与BFD联动、BGP Tracking和BGP GR和NSR,提高了网络的可靠性。
|
||||
* 在邻居数目多、路由量大且大部分邻居具有相同出口的策略的场景下,BGP使用按组打包技术极大的提高了BGP打包发包性能。
|
||||
|
||||
|
||||
## 2 BGP基础
|
||||
### BGP基本概念
|
||||
|
||||
* 自治系统ASAutonomous System
|
||||
|
||||
AS是指在一个实体管辖下的拥有相同选路策略的IP网络。BGP网络中的每个AS都被分配一个唯一的AS号,用于区分不同的AS。AS号分为2字节AS号和4字节AS号,其中2字节AS号的范围为1至65535,4字节AS号的范围为1至4294967295。支持4字节AS号的设备能够与支持2字节AS号的设备兼容。
|
||||
|
||||
### BGP分类
|
||||
BGP按照运行方式分为EBGP(External/Exterior BGP)和IBGP(Internal/Interior BGP)。
|
||||
|
||||
* EBGP:运行于不同AS之间的BGP称为EBGP。为了防止AS间产生环路,当BGP设备接收EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。
|
||||
* IBGP:运行于同一AS内部的BGP称为IBGP。为了防止AS内产生环路,BGP设备不将从IBGP对等体学到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器和BGP联盟。
|
||||
|
||||
BGP设备将最优路由加入BGP路由表,形成BGP路由。BGP设备与对等体建立邻居关系后,采取以下交互原则:
|
||||
|
||||
1. 从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。
|
||||
2. 从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体。
|
||||
3. 当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体。
|
||||
4. 路由更新时,BGP设备只发送更新的BGP路由。
|
||||
5. 所有对等体发送的路由,BGP设备都会接收。
|
||||
### BGP报文交互中的角色
|
||||
|
||||
BGP报文交互中分为Speaker和Peer两种角色。
|
||||
|
||||
* Speaker:发送BGP报文的设备称为BGP发言者(Speaker),它接收或产生新的报文信息,并发布(Advertise)给其它BGP Speaker。
|
||||
* Peer:相互交换报文的Speaker之间互称对等体(Peer)。若干相关的对等体可以构成对等体组(Peer Group)。
|
||||
|
||||
### BGP的路由器号(Router ID)
|
||||
|
||||
BGP的Router ID是一个用于标识BGP设备的32位值,通常是IPv4地址的形式,在BGP会话建立时发送的Open报文中携带。对等体之间建立BGP会话时,每个BGP设备都必须有唯一的Router ID,否则对等体之间不能建立BGP连接。
|
||||
|
||||
BGP的Router ID在BGP网络中必须是唯一的,可以采用手工配置,也可以让设备自动选取。缺省情况下,BGP选择设备上的Loopback接口的IPv4地址作为BGP的Router ID。如果设备上没有配置Loopback接口,系统会选择接口中最大的IPv4地址作为BGP的Router ID。一旦选出Router ID,除非发生接口地址删除等事件,否则即使配置了更大的地址,也保持原来的Router ID。
|
||||
|
||||
### BGP路由生成
|
||||
|
||||
* 纯动态注入:路由器通过IGP路由协议获得的路由信息注入到BGP当中。
|
||||
* 半动态注入:路由器选择性的将IGP发现的动态路由信息注册到BGP当中。
|
||||
* 静态注入:静态配置某条路由到BGP当中。
|
||||
|
||||
### BGP与IGP交互机制-路由注入方式
|
||||
|
||||
BGP与IGP在设备中使用不同的路由表,为了实现不同AS间相互通讯,BGP需要与IGP进行交互,即BGP路由表和IGP路由表相互引入。
|
||||
|
||||
**BGP引入IGP路由**
|
||||
|
||||
BGP协议本身不发现路由,因此需要将其他路由引入到BGP路由表,实现AS间的路由互通。当一个AS需要将路由发布给其他AS时,AS边缘路由器会在BGP路由表中引入IGP的路由。为了更好的规划网络,BGP在引入IGP的路由时,可以使用路由策略进行路由过滤和路由属性设置,也可以设置MED值指导EBGP对等体判断流量进入AS时选路。
|
||||
|
||||
BGP引入路由时支持Import和Network两种方式:
|
||||
|
||||
* Import方式是按协议类型,将RIP、OSPF、ISIS等协议的路由引入到BGP路由表中。为了保证引入的IGP路由的有效性,Import方式还可以引入静态路由static和直连路由direct。
|
||||
* Network方式是逐条将IP路由表中已经存在的路由引入到BGP路由表中,比Import方式更精确。
|
||||
|
||||
**IGP引入BGP路由**
|
||||
|
||||
当一个AS需要引入其他AS的路由时,AS边缘路由器会在IGP路由表中引入BGP的路由。为了避免大量BGP路由对AS内设备造成影响,当IGP引入BGP路由时,可以使用路由策略,进行路由过滤和路由属性设置。
|
||||
## 3 BGP工作原理:
|
||||
BGP对等体的建立、更新和删除等交互过程主要有5种报文、6种状态机和5个原则。
|
||||
|
||||
## 3.1 BGP的报文
|
||||
BGP对等体间通过以下5种报文进行交互,其中Keepalive报文为周期性发送,其余报文为触发式发送:
|
||||
|
||||
* Open报文:用于建立BGP对等体连接。
|
||||
* Update报文:用于在对等体之间交换路由信息。
|
||||
* Notification报文:用于中断BGP连接。
|
||||
* Keepalive报文:用于保持BGP连接。
|
||||
* Route-refresh报文:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。
|
||||
|
||||
### BGP报文头
|
||||

|
||||
|
||||
* **Marker**:占16字节,用于检查BGP对等体的同步信息是否完整,以及用于BGP验证的计算。不使用验证时所有比特均为1(十六进制则全“FF”)。
|
||||
|
||||
* **Length**:占2个字节(无符号位),BGP消息总长度(包括报文头在内),以字节为单位。长度范围是19~4096。
|
||||
|
||||
* **Type**:占1个字节(无符号位),BGP消息的类型。Type有5个可选值,表示BGP报文头后面所接的5类报文(其中,前四种消息是在RFC4271中定义的,而Type5的消息则是在RFC2918中定义的):
|
||||
|
||||
|TYPE值| 报文类型|
|
||||
|-|-|-|
|
||||
|1 |OPEN|
|
||||
|2 |UPDATE|
|
||||
|3 |NOTIFICATION|
|
||||
|4 |KEEPALIVE|
|
||||
|5 |REFRESH(RFC2918)|
|
||||
|
||||

|
||||
|
||||
### OPEN报文
|
||||
如果BGP报文头中的TYPE为1,则该报文为OPEN报文。报文头后面所接的报文内容如下,OPEN报文用于建立BGP连接。
|
||||
* OPEN报文格式
|
||||

|
||||
|
||||
* 字段说明
|
||||
|
||||
|字段|说明|
|
||||
|-|-|
|
||||
|version|表示协议的版本号,现在BGP的版本号为4。|
|
||||
|My autonomous System|发送者自己的AS域号|
|
||||
|Hold Time|发送者自己设定的hold time值(单位:秒),用于协商BGP对等体间保持建立连接关系,发送KEEPALIVE或UPDATE等报文的时间间隔。BGP的状态机必须在收到对等体的OPEN报文后,对发出的OPEN报文和收到的OPEN报文两者的hold time时间作比较,选择较小的时间作为协商结果。Hold Time的值可为零(不发KEEPALIVE报文)或大于等于3,我们系统的默认为180。|
|
||||
|BGP Identifier|发送者的router id。|
|
||||
|Opt Parm Len|表示Optional Parameters(可选参数)的长度。如果此值为0,表示没有可选参数。|
|
||||
|Optional Paramters|此值为BGP可选参数列表,每一个可选参数是一个TLV格式的单元(RFC3392)。|
|
||||
|
||||
* OPEN报文实例
|
||||
|
||||

|
||||
|
||||
### UPDATE报文
|
||||
如果BGP报文头中的TYPE为2,则该报文为UPDATE报文。报文头后面所接的报文内容如下(RFC 4271),UPDATE报文用于通告路由。
|
||||
* UPDATE报文格式
|
||||

|
||||
* UPDATE报文字段说明
|
||||
|
||||
|字段|说明|
|
||||
|-|-|
|
||||
|**Error code**|占1个字节(无符号位),定义错误的类型,非特定的错误类型用零表示。|
|
||||
|**Error subcode**|占1个字节(无符号位),指定错误细节编号,非特定的错误细节编号用零表示。|
|
||||
|**Data**|指定错误数据内容。|
|
||||
* UPDATE报文实例
|
||||

|
||||
|
||||
### Notification报文
|
||||
如果BGP报文头中的TYPE为3,则该报文为NOTIFICATION报文。报文头后面所接的报文内容如下(RFC 4271),NOTIFICATION报文用于处理BGP进程中的各种错误。
|
||||
|
||||
* Notification报文格式
|
||||

|
||||
* Notification报文字段说明
|
||||
|
||||
|字段|说明|
|
||||
|-|-|
|
||||
|**Error code**|占1个字节(无符号位),定义错误的类型,非特定的错误类型用零表示。|
|
||||
|**Error subcode**|占1个字节(无符号位),指定错误细节编号,非特定的错误细节编号用零表示。|
|
||||
|**Data**|指定错误数据内容。|
|
||||
|
||||
* Notification实例
|
||||
|
||||

|
||||
|
||||
### Keepalive报文
|
||||
如果BGP报文头中的TYPE为4,则该报文为KEEPALIVE报文。KEEPALIVE报文用于保持BGP连接。
|
||||
|
||||
* Keepalive报文格式
|
||||
|
||||
KEEPALIVE报文只有BGP报文头,没有具体内容,故其报文长度应固定为19个字节。
|
||||
* Keepalive报文实例
|
||||
|
||||

|
||||
### Refresh报文格式
|
||||
Refresh报文格式
|
||||
如果BGP报文头中的TYPE为5,则该报文为REFRESH报文。报文头后面所接的报文内容如下(RFC 2918),REFRESH报文用于动态的请求BGP路由发布者重新发布UPDATE报文,进行路由更新。
|
||||
|
||||
* Refresh报文格式
|
||||
|
||||

|
||||
|
||||
* Refresh报文字段说明
|
||||
|
||||
|Field字段| Length长度 |Description描述|
|
||||
|-|-|-|
|
||||
|AFI |2字节(无符号位) |表示地址族id,与UPDATE报文中的定义相同。|
|
||||
|Res. |1字节(无符号位) |所有为应全为零,在接收报文时,此位被忽略。|
|
||||
|SAFI |1字节(无符号位) |与UPDATE报文中的定义相同|
|
||||
* Refresh报文实例
|
||||

|
||||
## 3.2 BGP状态机:
|
||||
BGP对等体的交互过程中存在6种状态机:空闲(Idle)、连接(Connect)、活跃(Active)、Open报文已发送(OpenSent)、Open报文已确认(OpenConfirm)和连接已建立(Established)。在BGP对等体建立的过程中,通常可见的3个状态是:Idle、Active和Established。
|
||||
|
||||

|
||||
|
||||
### Idle状态
|
||||
Idle状态是BGP初始状态。在Idle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。
|
||||
|
||||
### Connet状态
|
||||
在Connect状态下,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接。
|
||||
* 如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态。
|
||||
* 如果TCP连接失败,那么BGP转至Active状态。
|
||||
* 如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态。
|
||||
|
||||
### Active状态
|
||||
在Active状态下,BGP总是在试图建立TCP连接。
|
||||
|
||||
* 如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态。
|
||||
* 如果TCP连接失败,那么BGP停留在Active状态。
|
||||
* 如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。
|
||||
|
||||
### OpenSent状态
|
||||
在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。
|
||||
|
||||
* 如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态。
|
||||
* 如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
|
||||
|
||||
### OpenConfirm状态
|
||||
在OpenConfirm状态下,BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
|
||||
|
||||
### Establish状态
|
||||
在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文。
|
||||
* 如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接。
|
||||
* 如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态。
|
||||
Route-refresh报文不会改变BGP状态。
|
||||
* 如果收到Notification报文,那么BGP转至Idle状态。
|
||||
* 如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态。
|
||||
|
||||
## 3.3 BGP对等体之间的交互原则
|
||||
|
||||
|
||||
BGP路由通告原则
|
||||
1. 连接建立时,BGP Speaker只把本身用的最优路由通告给对等体。
|
||||
|
||||
2. 多条路径时,BGP Speraker只选择最优的路由放入路由表。
|
||||
|
||||
3. BGP Speraker从EBGP获得路由会向它所有的BGP对等体通告(包括EBGP和IBGP)。通告给EBGP时,下一跳为自己。(注:如果通告路由的EBGP邻居需要接收的的EBGP邻居在同一网段,则通告时不修改下一跳。)通告给IBGP时,不更改下一跳。防止次优路径。
|
||||
|
||||
4. BGP Speraker从IBGP获得的路由不会通告给其他的IBGP邻居。IBGP的水平分割原理:从一个IBGP邻居收到的路由条目不会再通告给其他IBGP邻居。如果想让所有的IBGP邻居都能收到路由,有三种解决方案:
|
||||
* 全互联(每两台设备之间都建立IBGP邻居)。
|
||||
* RP(路由反射器)。
|
||||
* 联盟
|
||||
5. BGP与IGP同步。BGP不将从IBGP对等体获得的路由通告给它的EBGP对等体,除非该路由信息也能通过IBGP过得。
|
||||
|
||||
所有厂商同步功能默认关闭。华为不支持开启,思科可以开启。
|
||||
|
||||
|
||||
|
||||
## 5 BGP属性:
|
||||
|
||||
### 属性分类
|
||||
路由属性是对路由的特定描述,所有的BGP路由属性都可以分为以下4类,常见BGP属性类型所示:
|
||||
|
||||
* 公认必须遵循(Well-known mandatory):所有BGP设备都可以识别此类属性,且必须存在于Update报文中。如果缺少这类属性,路由信息就会出错。
|
||||
* 公认任意(Well-known discretionary):所有BGP设备都可以识别此类属性,但不要求必须存在于Update报文中,即就算缺少这类属性,路由信息也不会出错。
|
||||
* 过渡(Optional transitive):BGP设备可以不识别此类属性,如果BGP设备不识别此类属性,但它仍然会接收这类属性,并通告给其他对等体。
|
||||
* 非过渡(Optional non-transitive):BGP设备可以不识别此类属性,如果BGP设备不识别此类属性,则会被忽略该属性,且不会通告给其他对等体。
|
||||
|
||||
### BGP常见属性类型:
|
||||
|
||||
|属性名| 类型|
|
||||
|-|-|
|
||||
|Origin属性| 公认必须遵循|
|
||||
|AS_Path属性| 公认必须遵循|
|
||||
|Next_Hop属性| 公认必须遵循|
|
||||
|Local_Pref属性| 公认任意|
|
||||
|MED属性| 可选非过渡|
|
||||
|团体属性| 可选过渡|
|
||||
|Originator_ID属性| 可选非过渡|
|
||||
|Cluster_List属性| 可选非过渡|
|
||||
|
||||
### Origin属性
|
||||
Origin属性用来定义路径信息的来源,标记一条路由是怎么成为
|
||||
|
||||
BGP路由的。它有以下3种类型:
|
||||
|
||||
* IGP:具有最高的优先级。通过network命令注入到BGP路由表的路由,其Origin属性为IGP。
|
||||
* EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。
|
||||
* Incomplete:优先级最低。通过其他方式学习到的路由信息。比如BGP通过import-route命令引入的路由,其Origin属性为Incomplete。
|
||||
|
||||
### AS_Path属性:
|
||||
AS_Path属性按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。在接收路由时,设备如果发现AS_Path列表中有本AS号,则不接收该路由,从而避免了AS间的路由环路。
|
||||
|
||||
当BGP Speaker传播自身引入的路由时:
|
||||
|
||||
* 当BGP Speaker将这条路由通告到EBGP对等体时,便会在Update报文中创建一个携带本地AS号的AS_Path列表。
|
||||
* 当BGP Speaker将这条路由通告给IBGP对等体时,便会在Update报文中创建一个空的AS_Path列表。
|
||||
|
||||
当BGP Speaker传播从其他BGP Speaker的Update报文中学习到的路由时:
|
||||
|
||||
* 当BGP Speaker将这条路由通告给EBGP对等体时,便会把本地AS编号添加在AS_Path列表的最前面(最左面)。收到此路由的BGP设备根据AS_Path属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。
|
||||
* 当BGP Speaker将这条路由通告给IBGP对等体时,不会改变这条路由相关的AS_Path属性。
|
||||
|
||||
|
||||
### Next_hop属性:
|
||||
Next_Hop属性记录了路由的下一跳信息。BGP的下一跳属性和IGP的有所不同,不一定就是邻居设备的IP地址。通常情况下,Next_Hop属性遵循下面的规则:
|
||||
|
||||
* BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
|
||||
* BGP Speaker将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
|
||||
* BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。
|
||||
|
||||
### Local_pref属性:
|
||||
Local_Pref属性表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由。当BGP的设备通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由。Local_Pref属性仅在IBGP对等体之间有效,不通告给其他AS。Local_Pref属性可以手动配置,如果路由没有配置Local_Pref属性,BGP选路时将该路由的Local_Pref值按缺省值100来处理。
|
||||
|
||||
### MED属性:
|
||||
MED(Multi-Exit Discriminator)属性用于判断流量进入AS时的最佳路由,当一个运行BGP的设备通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。
|
||||
|
||||
MED属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS。MED属性可以手动配置,如果路由没有配置MED属性,BGP选路时将该路由的MED值按缺省值0来处理。
|
||||
|
||||
### Community团体属性:
|
||||
团体属性(Community)用于标识具有相同特征的BGP路由,使路由策略的应用更加灵活,同时降低了维护管理的难度。
|
||||
|
||||
团体属性分为自定义团体属性和公认团体属性。公认团体属性如下所示:
|
||||
|
||||

|
||||
|
||||
### Originator_ID属性和Cluster_List属性:
|
||||
Originator_ID属性和Cluster_List属性用于解决路由反射器场景中的环路问题。
|
||||
|
||||
## 6 BGP路由策略
|
||||
|
||||
### 路由策略分类
|
||||
|
||||
* 路由发布
|
||||
* 路由接受
|
||||
* 路由引入
|
||||
|
||||
### 路由策略实施机制
|
||||
|
||||

|
||||
|
||||
### 与路由选择相关的过滤器
|
||||
|
||||
* 路由策略(routing policy)。设定匹配条件,属性匹配后进行设置操作。
|
||||
* 访问控制列表(Access Conrole list)。匹配路由信息的目的网段地址或吓一跳地址,过滤不符合条件的路由信息。
|
||||
* 前缀列表(IP-Prefix)。匹配路由信息的目的地之或直接作用于路由器对象
|
||||
* 自制系统路径信息访问控制列表(AS-Path List)。匹配BGP路由信息
|
||||
* 团体属性列表(Community-list)。匹配BGP路由信息的自治系统域。
|
||||
|
||||
|
||||
### 路由选择
|
||||
当到达同一目的地存在多条路由时,BGP依次对比下列属性来选择路由:
|
||||
|
||||
1. 优选协议首选值(PrefVal)最高的路由。
|
||||
|
||||
协议首选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效。
|
||||
|
||||
2. 优选本地优先级(Local_Pref)最高的路由。
|
||||
|
||||
如果路由没有本地优先级,BGP选路时将该路由按缺省的本地优先级100来处理。
|
||||
|
||||
3. 依次优选手动聚合路由、自动聚合路由、network命令引入的路由、import-route命令引入的路由、从对等体学习的路由。
|
||||
|
||||
4. . 优选AS路径(AS_Path)最短的路由。
|
||||
|
||||
5. 依次优选Origin类型为IGP、EGP、Incomplete的路由。
|
||||
|
||||
6. 对于来自同一AS的路由,优选MED值最低的路由。
|
||||
|
||||
7. 依次优选EBGP路由、IBGP路由、LocalCross路由、RemoteCross路由。
|
||||
|
||||
PE上某个VPN实例的VPNv4路由的ERT匹配其他VPN实例的IRT后复制到该VPN实例,称为LocalCross;从远端PE学习到的VPNv4路由的ERT匹配某个VPN实例的IRT后复制到该VPN实例,称为RemoteCross。
|
||||
|
||||
8. 优选到BGP下一跳IGP度量值(metric)最小的路由。
|
||||
|
||||
9. 优选Cluster_List最短的路由。
|
||||
|
||||
10. 优选Router ID最小的设备发布的路由。
|
||||
|
||||
11. 优选从具有最小IP Address的对等体学来的路由。
|
||||
|
||||
## 7 BGP的其他机制
|
||||
### 路由聚合
|
||||
在大规模的网络中,BGP路由表十分庞大,给设备造成了很大的负担,同时使发生路由振荡的几率也大大增加,影响网络的稳定性。
|
||||
|
||||
路由聚合是将多条路由合并的机制,它通过只向对等体发送聚合后的路由而不发送所有的具体路由的方法,减小路由表的规模。并且被聚合的路由如果发生路由振荡,也不再对网络造成影响,从而提高了网络的稳定性。路由聚合的优点:
|
||||
* 只通告聚合路由
|
||||
* 聚合但一直特定的具体路由
|
||||
* 改变聚合路由的AS路径属性
|
||||
* 聚合时生成AS-SET集合
|
||||
|
||||
BGP在IPv4网络中支持自动聚合和手动聚合两种方式,而IPv6网络中仅支持手动聚合方式:
|
||||
|
||||
* 自动聚合:对BGP引入的路由进行聚合。配置自动聚合后,BGP将按照自然网段聚合路由(例如非自然网段A类地址10.1.1.1/24和10.2.1.1/24将聚合为自然网段A类地址10.0.0.0/8),并且BGP向对等体只发送聚合后的路由。
|
||||
|
||||
* 手动聚合:对BGP本地路由表中存在的路由进行聚合。手动聚合可以控制聚合路由的属性,以及决定是否发布具体路由。
|
||||
|
||||
为了避免路由聚合可能引起的路由环路,BGP设计了AS_Set属性。AS_Set属性是一种无序的AS_Path属性,标明聚合路由所经过的AS号。当聚合路由重新进入AS_Set属性中列出的任何一个AS时,BGP将会检测到自己的AS号在聚合路由的AS_Set属性中,于是会丢弃该聚合路由,从而避免了路由环路的形成。
|
||||
|
||||
### BGP同步机制
|
||||
|
||||
BGP规定:一个BGP路由器不讲从内部BGP对等体得到的路由信息通告给外部对等体,除非该路由信息也能通过IGP得到。
|
||||
### BGP安全性
|
||||
BGP使用认证和通用TTL安全保护机制GTSM(Generalized TTL Security Mechanism)两个方法保证BGP对等体间的交互安全。
|
||||
|
||||
* BGP认证
|
||||
BGP认证分为MD5认证和Keychain认证,对BGP对等体关系进行认证是提高安全性的有效手段。MD5认证只能为TCP连接设置认证密码,而Keychain认证除了可以为TCP连接设置认证密码外,还可以对BGP协议报文进行认证。
|
||||
|
||||
* BGP GTSM
|
||||
BGP GTSM检测IP报文头中的TTL(time-to-live)值是否在一个预先设置好的特定范围内,并对不符合TTL值范围的报文进行允许通过或丢弃的操作,从而实现了保护IP层以上业务,增强系统安全性的目的。
|
||||
|
||||
例如将IBGP对等体的报文的TTL的范围设为254至255。当攻击者模拟合法的BGP协议报文,对设备不断的发送报文进行攻击时,TTL值必然小于254。如果没有使能BGP GTSM功能,设备收到这些报文后,发现是发送给本机的报文,会直接上送控制层面处理。这时将会因为控制层面处理大量攻击报文,导致设备CPU占用率高,系统异常繁忙。如果使能BGP GTSM功能,系统会对所有BGP报文的TTL值进行检查,丢弃TTL值小于254的攻击报文,从而避免了因网络攻击报文导致CPU占用率高的问题。
|
||||
|
||||
### BGP负载分担:
|
||||
当到达同一目的地址存在多条等价路由时,可以通过BGP等价负载分担实现均衡流量的目的。形成BGP等价负载分担的条件是“BGP选择路由的策略”的1至8条规则中需要比较的属性完全相同。
|
||||
|
||||
### BGP路由衰减:
|
||||
当BGP应用于复杂的网络环境时,路由振荡十分频繁。为了防止频繁的路由振荡带来的不利影响,BGP使用路由衰减来抑制不稳定的路由。
|
||||
|
||||
路由振荡指路由表中添加一条路由后,该路由又被撤销的过程。当发生路由振荡时,设备就会向邻居发布路由更新,收到更新报文的设备需要重新计算路由并修改路由表。所以频繁的路由振荡会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正常工作。
|
||||
|
||||
|
||||

|
||||
|
||||
路由衰减使用惩罚值(Penalty value)来衡量一条路由的稳定性,惩罚值越高说明路由越不稳定。如上图所示,路由每发生一次振荡,BGP便会给此路由增加1000的惩罚值,其余时间惩罚值会慢慢下降。当惩罚值超过抑制阈值(suppress value)时,此路由被抑制,不加入到路由表中,也不再向其他BGP对等体发布更新报文。被抑制的路由每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(half-life)。当惩罚值降到再使用阈值(reuse value)时,此路由变为可用并被加入到路由表中,同时向其他BGP对等体发布更新报文。从路由被抑制到路由恢复可用的时间称为抑制时间(suppress time)。
|
||||
|
||||
路由衰减只对EBGP路由起作用,对IBGP路由不起作用。这是因为IBGP路由可能含有本AS的路由,而IGP网络要求AS内部路由表尽可能一致。如果路由衰减对IBGP路由起作用,那么当不同设备的衰减参数不一致时,将会导致路由表不一致。
|
||||
637
计算机网络实验/DHCP.md
Normal file
@@ -0,0 +1,637 @@
|
||||
# DHCP
|
||||
|
||||
> 参考文献
|
||||
> * [DHCP基础](https://blog.csdn.net/qq_38265137/article/details/80404407)
|
||||
> * 等到复习的时候过来整理这玩意。
|
||||
|
||||
DHCP简介
|
||||
动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种用于集中对用户IP地址进行动态管理和配置的技术。
|
||||
|
||||
DHCP采用客户端/服务器通信模式,由客户端(DHCP Client)向服务器(DHCP Server)提出配置申请,服务器返回为客户端分配的配置信息(包括IP地址、缺省网关、DNS Server、WINS Server等参数),可以实现IP地址动态分配,以及其他网络参数的集中配置管理。
|
||||
|
||||
DHCP的发展:
|
||||
DHCP是在BOOTP(BOOTstrap Protocol)基础上发展而来,但BOOTP运行在相对静态(每台主机都有固定的网络连接)的环境中,管理员为每台主机配置专门的BOOTP参数文件,该文件会在相当长的时间内保持不变。DHCP从以下两方面对BOOTP进行了扩展:
|
||||
|
||||
DHCP加入了对重新使用的网络地址的动态分配和附加配置选项的功能,可使计算机仅用一个消息就获取它所需要的所有配置信息。
|
||||
DHCP允许计算机动态地获取IP地址,而不是静态为每台主机指定地址。
|
||||
DHCP技术实现用户地址和配置信息的动态分配和集中管理,使企业可以动态地为企业用户分配和管理地址,避免繁琐的手工配置,可以快速适应网络的变化。
|
||||
|
||||
DHCP原理描述
|
||||
DHCP角色:
|
||||
DHCP客户端:通过DHCP协议请求获取IP地址等网络参数的设备。例如,IP电话、PC、手机、无盘工作站等。
|
||||
DHCP服务器:负责为DHCP客户端分配网络参数的设备。
|
||||
(可选)DHCP中继:负责转发DHCP服务器和DHCP客户端之间的DHCP报文,协助DHCP服务器向DHCP客户端动态分配网络参数的设备。
|
||||
DHCP客户端广播发送请求报文(即目的IP地址为255.255.255.255),位于同一网段内的DHCP服务器能够接收请求报文。如果DHCP客户端和DHCP服务器不在同一个网段,DHCP服务器无法接收来自客户端的请求报文,此时,需要通过DHCP中继来转发DHCP报文。不同于传统的IP报文转发,DHCP中继接收到DHCP请求或应答报文后,会重新修改报文格式并生成一个新的DHCP报文再进行转发。
|
||||
|
||||
在企业网络中,如果需要规划较多网段,且网段中的终端都需要通过DHCP自动获取IP地址等网络参数时,可以部署DHCP中继。这样,不同网段的终端可以共用一个DHCP服务器,节省了服务器资源,方便统一管理。
|
||||
|
||||
DHCP报文是基于UDP协议传输的。DHCP客户端向DHCP服务器发送报文时采用67端口号,DHCP服务器向DHCP客户端发送报文时采用68端口号。
|
||||
|
||||
DHCP服务器给首次接入网络的客户端分配网络参数的工作原理:
|
||||
无中继场景时DHCP客户端首次接入网络的工作原理:
|
||||
|
||||
|
||||
图:无中继场景DHCP客户端首次接入网络的报文交互示意图
|
||||
发现阶段,即DHCP客户端发现DHCP服务器的阶段。
|
||||
|
||||
DHCP客户端发送DHCP DISCOVER报文来发现DHCP服务器。由于DHCP客户端不知道DHCP服务器的IP地址,所以DHCP客户端以广播方式发送DHCP DISCOVER报文(目的IP地址为255.255.255.255),同一网段内所有DHCP服务器或中继都能收到此报文。DHCP DISCOVER报文中携带了客户端的MAC地址(DHCP DISCOVER报文中的chaddr字段)、需要请求的参数列表选项(Option55中填充的内容,标识了客户端需要从服务器获取的网络配置参数)、广播标志位(DHCP DISCOVER报文中的flags字段,表示客户端请求服务器以单播或广播形式发送响应报文)等信息。
|
||||
|
||||
DHCP DISCOVER报文中的Option字段定义了网络参数信息,不同Option值代表了不同的参数。例如,Option3表示客户端的网关地址选项(当客户端发送的DHCP DISCOVER报文的Option55中填充了选项值3,就表示客户端希望从服务器获取网关地址);Option53表示DHCP报文类型(例如,DHCP DISCOVER报文)。Option选项分为知名选项和自定义选项,关于知名选项的含义请参见RFC2132。除了RFC2132里面定义的知名选项,不同厂商可以根据需求自己定义自定义选项,例如,Option43为厂商特定信息选项。
|
||||
RFC2131中定义了DHCP报文的广播标志字段(flags),当标志字段的最高位为0时,表示客户端希望服务器以单播方式发送DHCP OFFER/DHCP ACK报文;当标志字段的最高位为1时,表示客户端希望服务器以广播方式发送DHCP OFFER/DHCP ACK报文。Huawei AR100&AR120&AR150&AR160&AR200&AR1200&AR2200&AR3200&AR3600系列作为客户端时,此字段为1。
|
||||
提供阶段,即DHCP服务器提供网络配置信息的阶段。
|
||||
|
||||
位于同一网段的DHCP服务器都会接收到DHCP DISCOVER报文,每个DHCP服务器上可能会部署多个地址池,服务器通过地址池来管理可供分配的IP地址等网络参数。服务器接收到DHCP DISCOVER报文后,选择跟接收DHCP DISCOVER报文接口的IP地址处于同一网段的地址池,并且从中选择一个可用的IP地址,然后通过DHCP OFFER报文发送给DHCP客户端。DHCP OFFER报文里面携带了希望分配给指定MAC地址客户端的IP地址(DHCP报文中的yiaddr字段)及其租期等配置参数。
|
||||
|
||||
通常,DHCP服务器的地址池中会指定IP地址的租期,如果DHCP客户端发送的DHCP DISCOVER报文中携带了期望租期,服务器会将客户端请求的期望租期与其指定的租期进行比较,选择其中时间较短的租期分配给客户端。
|
||||
|
||||
DHCP服务器上已配置的与客户端MAC地址静态绑定的IP地址。
|
||||
客户端发送的DHCP DISCOVER报文中Option50字段(请求IP地址选项)指定的地址。
|
||||
DHCP服务器上记录的曾经分配给客户端的IP地址。
|
||||
按照IP地址从大到小的顺序查询,选择最先找到的可供分配的IP地址。
|
||||
如果未找到可供分配的IP地址,则依次查询超过租期、处于冲突状态的IP地址,如果找到可用的IP地址,则进行分配;否则,发送DHCP NAK报文作为应答,通知DHCP客户端无法分配IP地址。DHCP客户端需要重新发送DHCP DISCOVER报文来申请IP地址。
|
||||
为了防止分配出去的IP地址跟网络中其他客户端的IP地址冲突,DHCP服务器在发送DHCP OFFER报文前可以通过发送源地址和目的地址都为预分配出去IP地址的ICMP ECHO REQUEST报文对分配的IP地址进行地址冲突探测。如果在指定的时间内没有收到应答报文,表示网络中没有客户端使用这个IP地址,可以分配给客户端;如果指定时间内收到应答报文,表示网络中已经存在使用此IP地址的客户端,则把此地址列为冲突地址,然后等待重新接收到DHCP DISCOVER报文后按照前面介绍的选择IP地址的优先顺序重新选择可用的IP地址。
|
||||
|
||||
此阶段DHCP服务器分配给客户端的IP地址不一定是最终确定使用的IP地址,因为DHCP OFFER报文发送给客户端等待16秒后如果没有收到客户端的响应,此地址就可以继续分配给其他客户端。通过下面的选择阶段和确认阶段后才能最终确定客户端可以使用的IP地址。
|
||||
|
||||
选择阶段,即DHCP客户端选择IP地址的阶段。
|
||||
|
||||
因为DHCP DISCOVER报文是广播发送的,所以如果同一网段内存在多个DHCP服务器,接收到DHCP DISCOVER报文的服务器都会回应DHCP OFFER报文。如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端一般只接收第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文,该报文中包含客户端想选择的DHCP服务器标识符(即Option54)和客户端IP地址(即Option50,填充了接收的DHCP OFFER报文中yiaddr字段的IP地址)。
|
||||
|
||||
以广播方式发送DHCP REQUEST报文,是为了通知所有的DHCP服务器,它将选择某个DHCP服务器提供的IP地址,其他DHCP服务器可以重新将曾经分配给客户端的IP地址分配给其他客户端。
|
||||
|
||||
确认阶段,即DHCP服务器确认所分配IP地址的阶段。
|
||||
|
||||
当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,DHCP服务器回应DHCP ACK报文,表示DHCP REQUEST报文中请求的IP地址(Opton50填充的)分配给客户端使用。
|
||||
|
||||
DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址,如果在指定时间内没有收到回应,表示客户端可以使用此地址。如果收到了回应,说明有其他终端使用了此地址,客户端会向服务器发送DECLINE报文,并重新向服务器请求IP地址,同时,服务器会将此地址列为冲突地址。当服务器没有空闲地址可分配时,再选择冲突地址进行分配,尽量减少分配出去的地址冲突。
|
||||
|
||||
当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,如果DHCP服务器由于某些原因(例如协商出错或者由于发送REQUEST过慢导致服务器已经把此地址分配给其他客户端)无法分配DHCP REQUEST报文中Opton50填充的IP地址,则发送DHCP NAK报文作为应答,通知DHCP客户端无法分配此IP地址。DHCP客户端需要重新发送DHCP DISCOVER报文来申请新的IP地址。
|
||||
|
||||
有中继场景时DHCP客户端首次接入网络的工作原理:
|
||||
|
||||
|
||||
图:有中继场景时DHCP客户端首次接入网络的工作原理
|
||||
发现阶段
|
||||
|
||||
检查DHCP报文中的hops字段,如果大于16,则丢弃DHCP报文;否则,将hops字段加1(表明经过一次DHCP中继),并继续下面的操作。
|
||||
|
||||
DHCP报文中的hops字段表示DHCP报文经过的DHCP中继的数目,该字段由客户端或服务器设置为0,每经过一个DHCP中继时,该字段加1。hops字段的作用是限制DHCP报文所经过的DHCP中继的数目。目前,设备最多支持DHCP客户端与服务器之间有存在16个中继。
|
||||
|
||||
检查DHCP报文中的giaddr字段。如果是0,将giaddr字段设置为接收DHCP DISCOVER报文的接口IP地址。如果不是0,则不修改该字段,继续下面的操作。
|
||||
|
||||
DHCP报文中的giaddr字段标识客户端网关的IP地址。如果服务器和客户端不在同一个网段且中间存在多个DHCP中继,当客户端发出DHCP请求时,第一个DHCP中继会把自己的IP地址填入此字段,后面的DHCP中继不修改此字段内容,DHCP服务器会根据此字段来判断出客户端所在的网段地址,从而为客户端分配该网段的IP地址。
|
||||
|
||||
将DHCP报文的目的IP地址改为DHCP服务器或下一跳中继的IP地址,源地址改为中继连接客户端的接口地址,通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继。
|
||||
|
||||
如果DHCP客户端与DHCP服务器之间存在多个DHCP中继,后面的中继接收到DHCP DISCOVER报文的处理流程同前面所述。
|
||||
|
||||
提供阶段
|
||||
|
||||
DHCP服务器接收到DHCP DISCOVER报文后,选择与报文中giaddr字段为同一网段的地址池,并为客户端分配IP地址等参数然后向giaddr字段标识的DHCP中继单播发送DHCP OFFER报文。
|
||||
|
||||
检查报文中的giaddr字段,如果不是接口的地址,则丢弃该报文;否则,继续下面的操作。
|
||||
DHCP中继检查报文的广播标志位。如果广播标志位为1,则将DHCP OFFER报文广播发送给DHCP客户端;否则将DHCP OFFER报文单播发送给DHCP客户端。
|
||||
选择阶段
|
||||
|
||||
确认阶段
|
||||
|
||||
选择阶段和确认阶段的过程同无中继场景。
|
||||
|
||||
DHCP客户端重用曾经使用的地址的工作原理:
|
||||
DHCP客户端非首次接入网络时,可以重用曾经使用过的地址。
|
||||
|
||||
|
||||
|
||||
图:DHCP客户端重用曾经使用过的IP地址的报文交互过程
|
||||
客户端广播发送包含前一次分配的IP地址的DHCP REQUEST报文,报文中的Option50(请求的IP地址选项)字段填入曾经使用过的IP地址。
|
||||
DHCP服务器收到DHCP REQUEST报文后,根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录,如果有则返回DHCP ACK报文,通知DHCP客户端可以继续使用这个IP地址。否则,保持沉默,等待客户端重新发送DHCP DISCOVER报文请求新的IP地址。
|
||||
DHCP客户端更新租期的工作原理:
|
||||
DHCP服务器采用动态分配机制给客户端分配IP地址时,分配出去的IP地址有租期限制。DHCP客户端向服务器申请地址时可以携带期望租期,服务器在分配租期时把客户端期望租期和地址池中租期配置比较,分配其中一个较短的租期给客户端。租期时间到后服务器会收回该IP地址,收回的IP地址可以继续分配给其他客户端使用。这种机制可以提高IP地址的利用率,避免客户端下线后IP地址继续被占用。如果DHCP客户端希望继续使用该地址,需要更新IP地址的租期(如延长IP地址租期)。
|
||||
|
||||
当租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
|
||||
当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
|
||||
如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址。
|
||||
客户端在租期时间到之前,如果用户不想使用分配的IP地址(例如客户端网络位置需要变更),会触发DHCP客户端向DHCP服务器发送DHCP RELEASE报文,通知DHCP服务器释放IP地址的租期。DHCP服务器会保留这个DHCP客户端的配置信息,将IP地址列为曾经分配过的IP地址中,以便后续重新分配给该客户端或其他客户端。
|
||||
|
||||
客户端可以通过发送DHCP INFORM报文向服务器请求更新配置信息。
|
||||
|
||||
DHCP报文:
|
||||
DHCP报文类型:
|
||||
DHCP Discover
|
||||
|
||||
由客户端来查找可用的服务器。
|
||||
|
||||
DHCP offer
|
||||
|
||||
服务器用来响应客户端的DHCP Discover报文,并指定相应的配置参数。
|
||||
|
||||
DHCP Resquet
|
||||
|
||||
由客户端发送给服务器来请求配置参数或者请求配置确认或者续借租期。
|
||||
|
||||
DHCP ACK
|
||||
|
||||
由服务器到客户端,含有配置参数包括IP地址。
|
||||
|
||||
DHCP Decline
|
||||
|
||||
当客户端发现地址已经被使用时,用来通知服务器。
|
||||
|
||||
DHCP Inform
|
||||
|
||||
客户端已经有IP地址时用它来向服务器请求其他的配置参数。
|
||||
|
||||
DHCP NAK
|
||||
|
||||
由服务器发送给客户端来报名客户端的地址请求不正确或者租期已过期。
|
||||
|
||||
DHCP Release
|
||||
|
||||
客户端要释放地址时用来通知服务器。
|
||||
|
||||
DHCP报文是承载于UDP上的高层协议报文,采用67(DHCP服务器)和68(DHCP客户端)两个端口号。
|
||||
|
||||
DHCP的报文格式如下图所示。
|
||||
|
||||
DHCP报文格式:
|
||||
|
||||
|
||||
图:DHCP报文格式
|
||||
报文字段解释:
|
||||
字段 长度 含义
|
||||
OP (op code) 1字节 表示报文的类型:1:客户端请求报文2:服务器响应报文
|
||||
htype (hardware type) 1字节 表示硬件地址的类型。对于以太网,该类型的值为“1”。
|
||||
hlen (hardware type) 1字节 表示硬件地址的长度,单位是字节。对于以太网,该值为6。
|
||||
Hops 1字节 表示当前的DHCP报文经过的DHCP中继的数目。该字段由客户端或服务器设置为0,每经过一个DHCP中继时,该字段加1。此字段的作用是限制DHCP报文所经过的DHCP中继数目。
|
||||
xid 4字节 事务ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应,客户端用它对请求和应答进行匹配。该ID由客户端设置并由服务器返回,为32位整数。
|
||||
secs (seconds) 2字节 由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数。
|
||||
flags 2字节 此字段在BOOTP中保留未用,在DHCP中表示标志字段。只有标志字段的最高位才有意义,其余的位均被置为0。最左边的字段被解释为广播响应标志位,内容如下所示:0:客户端请求服务器以单播形式发送响应报文1:客户端请求服务器以广播形式发送响应报文
|
||||
ciaddr (client ip address) 4字节 表示客户端的IP地址。可以是服务器分配给客户端的IP地址或者客户端已有的IP地址。客户端在初始化状态时没有IP地址,此字段为0.0.0.0。IP地址0.0.0.0仅在采用DHCP方式的系统启动时允许本主机利用它进行临时的通信,不是有效目的地址。
|
||||
yiaddr (your client ip address) 4字节 表示服务器分配给客户端的IP地址。当服务器进行DHCP响应时,将分配给客户端的IP地址填入此字段。
|
||||
siaddr (server ip address) 4字节 DHCP客户端获得启动配置信息的服务器的IP地址。
|
||||
giaddr (gateway ip address) 4字节 该字段表示第一个DHCP中继的IP地址(注意:不是地址池中定义的网关)。当客户端发出DHCP请求时,如果服务器和客户端不在同一个网络中,那么第一个DHCP中继在转发这个DHCP请求报文时会把自己的IP地址填入此字段。服务器会根据此字段来判断出网段地址,从而选择为用户分配地址的地址池。服务器还会根据此地址将响应报文发送给此DHCP中继,再由DHCP中继将此报文转发给客户端。若在到达DHCP服务器前经过了不止一个DHCP中继,那么第一个DHCP中继后的中继不会改变此字段,只是把Hops的数目加1。
|
||||
chaddr (client hardware address) 16字节 该字段表示客户端的MAC地址,此字段与前面的“Hardware Type”和“Hardware Length”保持一致。当客户端发出DHCP请求时,将自己的硬件地址填入此字段。对于以太网,当“Hardware Type”和“Hardware Length”分别为“1”和“6”时,此字段必须填入6字节的以太网MAC地址。
|
||||
sname (server host name) 64字节 该字段表示客户端获取配置信息的服务器名字。此字段由DHCP Server填写,是可选的。如果填写,必须是一个以0结尾的字符串。
|
||||
file (file name) 128字节 该字段表示客户端的启动配置文件名。此字段由DHCP Server填写,是可选的,如果填写,必须是一个以0结尾的字符串。
|
||||
options 可变 该字段表示DHCP的选项字段,至少为312字节,格式为"代码+长度+数据"。DHCP通过此字段包含了服务器分配给终端的配置信息,如网关IP地址,DNS服务器的IP地址,客户端可以使用IP地址的有效租期等信息。
|
||||
DHCP报文抓包示例:
|
||||
|
||||
|
||||
图:DHCP报文抓包示例
|
||||
DHCP Opthion字段选项:
|
||||
DHCP报文中的Options字段可以用来存放普通协议中没有定义的控制信息和参数。如果用户在DHCP服务器端配置了Options字段,DHCP客户端在申请IP地址的时候,会通过服务器端回应的DHCP报文获得Options字段中的配置信息。
|
||||
|
||||
Options字段由Type、Length和Value三部分组成。这三部分的表示含义如下所示:
|
||||
|
||||
字段 长度 含义
|
||||
Type 1字节 该字段表示信息类型。
|
||||
Length 1字节 该字段表示后面信息内容的长度。
|
||||
Value 其长度为Length字段所指定 该字段表示信息内容。
|
||||
DHCP Options选项的取值范围为1~255。
|
||||
|
||||
Options号 Options作用
|
||||
1 设置子网掩码选项。
|
||||
3 设置网关地址选项。
|
||||
6 设置DNS服务器地址选项。
|
||||
12 设置DHCP客户端的主机名选项。
|
||||
15 设置域名后缀选项。
|
||||
33 设置静态路由选项。该选项中包含一组有分类静态路由(即目的地址的掩码固定为自然掩码,不能划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。如果存在Option121,则忽略该选项。
|
||||
44 设置NetBios服务器选项。
|
||||
46 设置NetBios节点类型选项。
|
||||
50 设置请求IP地址选项。
|
||||
51 设置IP地址租约时间选项。
|
||||
52 设置Option附加选项。
|
||||
53 设置DHCP消息类型。
|
||||
54 设置服务器标识。
|
||||
55 设置请求参数列表选项。客户端利用该选项指明需要从服务器获取哪些网络配置参数。该选项内容为客户端请求的参数对应的选项值。
|
||||
58 设置续约T1时间,一般是租期时间的50%。
|
||||
59 设置续约T2时间。一般是租期时间的87.5%。
|
||||
60 设置厂商分类信息选项,用于标识DHCP客户端的类型和配置。
|
||||
61 设置客户端标识选项。
|
||||
66 设置TFTP服务器名选项,用来指定为客户端分配的TFTP服务器的域名。
|
||||
67 设置启动文件名选项,用来指定为客户端分配的启动文件名。
|
||||
77 设置用户类型标识。
|
||||
121 设置无分类路由选项。该选项中包含一组无分类静态路由(即目的地址的掩码为任意值,可以通过掩码来划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。
|
||||
根据Options选项功能的不同,此字段的作用对象也不同。比如Option77用于DHCP客户端,用于识别用户所属的类型,根据Options字段中所携带的用户类型(User Class),DHCP服务器选择适当的地址池为客户端分配IP地址以及相关配置参数。Option77一般在客户端由用户进行配置,而不必在服务器端配置。
|
||||
|
||||
自定义DHCP选项:
|
||||
除了RFC2132中规定的字段选项外,还有部分选项内容没有统一规定,例如Option82。
|
||||
|
||||
Option82称为中继代理信息选项,该选项记录了DHCP客户端的位置信息。DHCP中继或DHCP Snooping设备接收到DHCP客户端发送给DHCP服务器的请求报文后,在该报文中添加Option82,并转发给DHCP服务器。
|
||||
|
||||
**管理员可以从Option82中获得DHCP客户端的位置信息,以便定位DHCP客户端,实现对客户端的安全和计费等控制。**支持Option82的服务器还可以根据该选项的信息制定IP地址和其他参数的分配策略,提供更加灵活的地址分配方案。
|
||||
|
||||
Option82最多可以包含255个子选项。若定义了Option82,则至少要定义一个子选项。目前设备只支持两个子选项:sub-option1(Circuit ID,电路ID子选项)和sub-option2(Remote ID,远程ID子选项)。
|
||||
|
||||
由于Option82的内容没有统一规定,不同厂商通常根据需要进行填充。
|
||||
|
||||
DHCP的Option82原理:
|
||||
DHCP Relay Agent插入到用户的DHCP报文,DHCP服务器通过识别Option82来执行IP地址分配策略或其他策略。
|
||||
DHCP服务器的响应报文也带Option82,Relay Agent将Option82剥离后发给用户。
|
||||
Agent Information Fied中包含多个子选项,每个子选项格式为iSubOpt/Length/Value三元组。
|
||||
使能Option82功能,可以根据Option82信息建立精确到接口的绑定表。
|
||||
|
||||
DHCP服务器如果存在多个地址池,如何判断应该分配哪个地址池的地址?
|
||||
如果discovery报文中gateway ip address (relay agent address)被填充地址,则分配该IP地址所在网段的地址。
|
||||
如果discovery报文中gateway ip address 为空,则分配discovery报文接收端口所在IP网段的地址。
|
||||
unr:Uer Nerwork Router,用户网络路由。由DHCP服务器通告给客户端的静态路由。
|
||||
|
||||
DHCP配置
|
||||
配置为客户端分配IP地址:
|
||||
创建地址池:
|
||||
基于接口方式的地址池:在DHCP Server与Client相连的接口上配置IP地址,地址池是跟此接口地址所属同一网段的IP地址,且地址池中地址只能分配给此接口下的Client。这种配置方式简单,仅适用于DHCP Server与Client在同一个网段,即不存在中继的场景。例如,设备做DHCP Server仅给一个接口下的Client分配IP地址或者给多个接口下的Client分别分配不同网段的IP地址。
|
||||
基于全局方式的地址池:在系统视图下创建指定网段的地址池,且地址池中地址可以分配给设备所有接口下的Client。这种配置方式适用于:
|
||||
DHCP Server与Client在不同网段,即存在中继的场景。
|
||||
DHCP Server与Client在同一网段,且需要给一个接口下的Client分配IP地址或者给多个接口下的Client分别分配IP地址。
|
||||
DHCP基于接口配置:
|
||||
如下图,AR1为DHCP服务器,接口配置地址为192.168.0.1/24.给接口下所连接的设备主机分配IP地址。
|
||||
|
||||
|
||||
|
||||
图:DHCP基于接口配置拓扑
|
||||
配置文件:
|
||||
DHCP服务器配置:
|
||||
|
||||
<DHCP>dis current-configuration
|
||||
#
|
||||
sysname DHCP
|
||||
#
|
||||
dhcp enable //使能DHCP功能
|
||||
#
|
||||
interface GigabitEthernet0/0/0
|
||||
ip address 192.168.0.1 255.255.255.0
|
||||
dhcp check dhcp-rate enable
|
||||
//使能DHCP报文速率检查功能。
|
||||
dhcp check dhcp-rate 90
|
||||
//配置DHCP报文上送到DHCP协议栈的检查速率。
|
||||
dhcp alarm dhcp-rate enable
|
||||
//使能DHCP报文速率告警功能。
|
||||
dhcp alarm dhcp-rate threshold 500
|
||||
//配置DHCP报文速率检查告警阈值。
|
||||
dhcp select interface
|
||||
//开启接口采用接口地址池的DHCP Server功能。
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
AR3作为DHCP客户端配置:
|
||||
|
||||
<AR2>dis current-configuration
|
||||
sysname AR2
|
||||
#
|
||||
dhcp enable //使能DHCP功能
|
||||
#
|
||||
interface GigabitEthernet0/0/0
|
||||
dhcp client default-route preference 100
|
||||
//配置DHCP服务器下发给DHCP客户端的路由表项优先级。
|
||||
dhcp client gateway-detect period 3600 retransmit 3 timeout 500
|
||||
//来配置DHCP Client网关探测功能。
|
||||
dhcp client expected-lease 3600
|
||||
//配置DHCP Client期望租期功能。
|
||||
dhcp client class-id huawei
|
||||
//配置设备作为DHCP客户端时,发送DHCP请求报文中的Option60字段。
|
||||
dhcp client hostname DHCPClient
|
||||
//配置DHCP客户的主机名
|
||||
ip address dhcp-alloc
|
||||
//配置ip地址获取方式为通过DHCP获取
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
dhcp client gateway-detect period 3600 retransmit 3 timeout 500
|
||||
参数 参数说明 取值
|
||||
period period 指定DHCP Client网关探测周期。 整数形式,取值范围是1~86400。单位是秒。
|
||||
retransmit retransmit 指定DHCP Client网关探测重传次数。 整数形式,取值范围是1~10。
|
||||
timeout time 指定DHCP Client网关探测超时时间。 整数形式,取值范围是300~2000。单位是毫秒。
|
||||
应用场景
|
||||
|
||||
此命令应用于DHCP客户端。当DHCP Client成功获取IP地址后,该功能可以使DHCP Client迅速检测正在使用的网关状态,如果网关地址错误或网关设备故障,DHCP Client将向DHCP Server重新发送IP地址请求。
|
||||
|
||||
注意事项
|
||||
|
||||
DHCP Client网关探测功能适用于双上行链路场景。
|
||||
|
||||
dhcp client class-id
|
||||
DHCP服务器需要根据请求报文中的Option60字段内容来区分不同设备,用户可以使用此命令自定义设备作为DHCP客户端时,发送的请求报文中封装的Option60内容。
|
||||
|
||||
接口下配置此命令后,设备作为DHCP客户端时,从该接口发送的DHCP请求报文中将使用配置的内容填充Option60字段。
|
||||
|
||||
dhcp client client-id
|
||||
该命令用来配置DHCP客户端的标识,该标识将会封装在DHCP请求报文中与服务器进行交互。DHCP客户端在申请IP地址的时候,DHCP服务器会获取请求报文中的DHCP客户端标识信息,DHCP服务器将根据该标识,为DHCP客户端分配IP地址。
|
||||
|
||||
DHCP基于全局配置:
|
||||
如下图,路由器AR1为DHCP服务器,为不同VLAN的主机分配不同网段的IP地址,同时,为了节约IP地址,使用了聚合VLAN。
|
||||
|
||||
|
||||
|
||||
基于全局的配置文件:
|
||||
AR1DHCP服务器的配置文件:
|
||||
|
||||
<DHCP>dis current-configuration
|
||||
#
|
||||
sysname DHCP
|
||||
#
|
||||
dhcp enable
|
||||
#
|
||||
dhcp snooping enable
|
||||
#
|
||||
ip pool VLAN100
|
||||
gateway-list 10.0.10.254
|
||||
network 10.0.10.0 mask 255.255.255.0
|
||||
excluded-ip-address 10.0.10.1
|
||||
lease day 1 hour 23 minute 30
|
||||
dns-list 114.114.114.144 8.8.8.8
|
||||
domain-name VLAN100
|
||||
#
|
||||
ip pool VLAN200 //配置VLAN200地址池
|
||||
gateway-list 10.0.20.254
|
||||
network 10.0.20.0 mask 255.255.255.0
|
||||
excluded-ip-address 10.0.20.1
|
||||
dns-list 10.0.20.254
|
||||
domain-name VLAN200
|
||||
#
|
||||
ip pool VLAN300
|
||||
gateway-list 10.0.30.1 10.0.30.254
|
||||
network 10.0.30.0 mask 255.255.255.0
|
||||
dns-list 10.0.30.254 8.8.8.8
|
||||
domain-name VLAN300
|
||||
#
|
||||
interface GigabitEthernet0/0/0
|
||||
ip address 10.0.0.1 255.255.255.0
|
||||
dhcp select global
|
||||
//开启接口采用全局地址池的DHCP Server功能。
|
||||
#
|
||||
//配置去往DHCP中继不同网段的路由
|
||||
ip route-static 10.0.10.0 255.255.255.0 10.0.0.2
|
||||
ip route-static 10.0.20.0 255.255.255.0 10.0.0.2
|
||||
ip route-static 10.0.30.0 255.255.255.0 10.0.0.2
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
19
|
||||
20
|
||||
21
|
||||
22
|
||||
23
|
||||
24
|
||||
25
|
||||
26
|
||||
27
|
||||
28
|
||||
29
|
||||
30
|
||||
31
|
||||
32
|
||||
33
|
||||
34
|
||||
35
|
||||
36
|
||||
37
|
||||
38
|
||||
|
||||
|
||||
图:DHCP服务器分配情况
|
||||
SW1作为DHCP中继的配置:
|
||||
|
||||
[SW]dis current-configuration
|
||||
#
|
||||
sysname SW
|
||||
#
|
||||
vlan batch 10 to 11 20 to 21 30 to 31 100 200 300
|
||||
//批量创建VLAN
|
||||
#
|
||||
dhcp enable//使能DHCP功能
|
||||
#
|
||||
dhcp snooping enable //使能DHCP Snooping功能
|
||||
#
|
||||
//在每个VLAN下都开启DHCP Snooping功能
|
||||
vlan 1
|
||||
dhcp snooping enable
|
||||
vlan 10
|
||||
dhcp snooping enable
|
||||
vlan 11
|
||||
dhcp snooping enable
|
||||
vlan 20
|
||||
dhcp snooping enable
|
||||
vlan 21
|
||||
dhcp snooping enable
|
||||
vlan 30
|
||||
dhcp snooping enable
|
||||
vlan 31
|
||||
dhcp snooping enable
|
||||
vlan 100 //聚合VLAN
|
||||
aggregate-vlan
|
||||
access-vlan 10 to 11
|
||||
vlan 200 //聚合VLAN
|
||||
aggregate-vlan
|
||||
access-vlan 20 to 21
|
||||
vlan 300 //聚合VLAN
|
||||
aggregate-vlan
|
||||
access-vlan 30 to 31
|
||||
#
|
||||
interface Vlanif1
|
||||
ip address 10.0.0.2 255.255.255.0
|
||||
//配置与DHCP服务器直通的路由
|
||||
#
|
||||
interface Vlanif100
|
||||
ip address 10.0.10.254 255.255.255.0
|
||||
dhcp select relay //开启DHCP 中继
|
||||
dhcp relay server-ip 10.0.0.1
|
||||
//DHCP服务器IP地址
|
||||
#
|
||||
interface Vlanif200
|
||||
ip address 10.0.20.254 255.255.255.0
|
||||
dhcp select relay
|
||||
dhcp relay server-ip 10.0.0.1
|
||||
#
|
||||
interface Vlanif300
|
||||
ip address 10.0.30.254 255.255.255.0
|
||||
dhcp select relay
|
||||
dhcp relay server-ip 10.0.0.1
|
||||
#
|
||||
interface GigabitEthernet0/0/1
|
||||
port link-type trunk
|
||||
dhcp snooping trusted
|
||||
//配置接口为信任状态。
|
||||
#
|
||||
interface GigabitEthernet0/0/2
|
||||
port link-type trunk
|
||||
port trunk allow-pass vlan 10 to 11
|
||||
#
|
||||
interface GigabitEthernet0/0/3
|
||||
port link-type trunk
|
||||
port trunk allow-pass vlan 20 to 21
|
||||
#
|
||||
interface GigabitEthernet0/0/4
|
||||
port link-type trunk
|
||||
port trunk allow-pass vlan 30 to 31
|
||||
#
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
19
|
||||
20
|
||||
21
|
||||
22
|
||||
23
|
||||
24
|
||||
25
|
||||
26
|
||||
27
|
||||
28
|
||||
29
|
||||
30
|
||||
31
|
||||
32
|
||||
33
|
||||
34
|
||||
35
|
||||
36
|
||||
37
|
||||
38
|
||||
39
|
||||
40
|
||||
41
|
||||
42
|
||||
43
|
||||
44
|
||||
45
|
||||
46
|
||||
47
|
||||
48
|
||||
49
|
||||
50
|
||||
51
|
||||
52
|
||||
53
|
||||
54
|
||||
55
|
||||
56
|
||||
57
|
||||
58
|
||||
59
|
||||
60
|
||||
61
|
||||
62
|
||||
63
|
||||
64
|
||||
65
|
||||
66
|
||||
67
|
||||
68
|
||||
69
|
||||
70
|
||||
71
|
||||
72
|
||||
73
|
||||
|
||||
|
||||
图:DHCP中继情况
|
||||
SW2配置文件:SW3,4与之类似。
|
||||
|
||||
<SW2>dis current-configuration
|
||||
#
|
||||
sysname SW2
|
||||
#
|
||||
vlan batch 10 to 11
|
||||
#
|
||||
dhcp enable
|
||||
#
|
||||
dhcp snooping enable
|
||||
#
|
||||
interface GigabitEthernet0/0/1
|
||||
port link-type trunk
|
||||
port trunk allow-pass vlan 2 to 4094
|
||||
dhcp snooping enable
|
||||
dhcp snooping trusted
|
||||
#
|
||||
interface GigabitEthernet0/0/2
|
||||
port link-type access
|
||||
port default vlan 10
|
||||
#
|
||||
interface GigabitEthernet0/0/3
|
||||
port link-type access
|
||||
port default vlan 11
|
||||
#
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
19
|
||||
20
|
||||
21
|
||||
22
|
||||
23
|
||||
24
|
||||
655
计算机网络实验/H3C COMMAND.md
Normal file
@@ -0,0 +1,655 @@
|
||||
# H3C命令行
|
||||
|
||||
> 基于视图的命令行。
|
||||
|
||||
## 1 入门实验
|
||||
|
||||
### 视图结构图树
|
||||
* user
|
||||
* system
|
||||
* interface
|
||||
* ospf
|
||||
* ospf-area
|
||||
* vlan
|
||||
* vlan-interface
|
||||
|
||||
### 视图切换命令
|
||||
|
||||
```
|
||||
system-view //进入系统视图
|
||||
|
||||
interface Ethernet1/0/1 //进入以太网接口视图
|
||||
ospf processid //进入ospf视图
|
||||
vlan 2 //创建VLAN2,并进入VLAN视图
|
||||
|
||||
area 2 //ospf视图下创建并进入 area视图
|
||||
|
||||
quit //退出当前视图到上一个视图
|
||||
```
|
||||
|
||||
### 用户视图
|
||||
|
||||
```
|
||||
display * //显示各种配置视图
|
||||
display current-configguration
|
||||
display version
|
||||
display interface Ethernet1/0/1
|
||||
display clock
|
||||
|
||||
? //查看该视图下的命令
|
||||
|
||||
debuging //调试命令
|
||||
|
||||
reset //重置或清除相关配置
|
||||
reset saved-configuration//重置到出厂设置
|
||||
reset arp //重置arp设置
|
||||
reset ospf process //重置ospf进程,并重启进程
|
||||
|
||||
save //用来保存道歉的配置信息
|
||||
|
||||
reboot //重启
|
||||
```
|
||||
|
||||
### 以太网端口视图
|
||||
|
||||
```
|
||||
[system]interface Ethernet0/1
|
||||
[Ethernet]
|
||||
# ip协议相关命令
|
||||
[Ethernet]ip address ip-address mask[sub]
|
||||
[Ethernet]undo ip address [ip-address mask][sub]
|
||||
|
||||
# MTU
|
||||
[Ethernet]mtu 100
|
||||
[Ethernet]undo mtu
|
||||
|
||||
# speed
|
||||
[Ethernet]speed [100|10|negotiation] //100M,10M,自动协商
|
||||
|
||||
# display
|
||||
[system]display interfaces ethernet number
|
||||
|
||||
# 打开关闭以太网端口
|
||||
[Ethernet]shutdown
|
||||
[Ethernet]undo shutdown
|
||||
|
||||
# 端口工作模式
|
||||
[Ethernet]duplex full //设置全双工状态
|
||||
[Ethernet]undo duplex //回复以太网全双工状态
|
||||
|
||||
# 端口类型
|
||||
[Ethernet]spreed [10|100|auto]
|
||||
|
||||
# 接口类型
|
||||
[Ethernet]mdi [across|auto|normal] //设置接口网线类型
|
||||
|
||||
# 流量控制
|
||||
[Ethernet]flow-control //流量控制
|
||||
[Ethernet]undo flow-control //解除流量控制
|
||||
|
||||
# 链路类型
|
||||
[Ethernet]port link-type [acces|hybrid|trunk] //设置接口链路类型
|
||||
[Ethernet]undo port link-type
|
||||
|
||||
# 显示接口信息
|
||||
[Ethernet]display interface Ethernet1/0/1
|
||||
```
|
||||
|
||||
### NAT联网相关命令
|
||||
|
||||
```
|
||||
# 访问控制列表access control list:acl
|
||||
[R]acl number 2001 //设置访问控制号
|
||||
[R-acl-2001]rule permit source 10.0.0.0 0.0.0.255//设置访问控制列表的规则内容
|
||||
[R-acl-2001]rule deny source any//设置不可访问的内容:这里是其他所有的
|
||||
|
||||
# 设置nat地址转换,address group 规定了地址转换后的组
|
||||
[R]nat address-group 1 192.168.5.105 192.168.5.109
|
||||
|
||||
# 在接口上绑定nat对外解析的地址池
|
||||
[R-Ethernet0/1]nat outbound 2001 address-group 1
|
||||
|
||||
# 设置静态ip 路由地址,如果目的IP地址和掩码都为0.0.0.0(或掩码为0),则配置的路由为缺省路由。当检查路由表失败的时候,将使用缺省路由进行报文转发。
|
||||
[R]ip route-static 0.0.0.0 0.0.0.0 192.168.5.1
|
||||
|
||||
```
|
||||
## 2 链路层实验
|
||||
|
||||
### 端口聚合
|
||||
```
|
||||
# 设置一台网端口聚合
|
||||
link-aggragation ethernet port_num1 to ethernet port_num2 {ingress|both}//设置聚合端口
|
||||
undo link-aggregation {ethernet master_port_num |all}//删除聚合端口
|
||||
display link-aggregation[ethernet master_port_num]
|
||||
|
||||
|
||||
# 进入聚合端口
|
||||
[S]interface Bridge-Aggregation 1//设置并进入端口聚合视图
|
||||
[S-bridge-aggregation 1]link-aggeragation mode dynamic //设置端口聚合模式
|
||||
[s-ethernet0/1]port link-aggregation group 1//加入端口聚合组
|
||||
[s]link-aggeragation load-sharing mode destionation-mac source-mac //配置聚合组的分发方式
|
||||
|
||||
|
||||
# 生成树协议
|
||||
[S]stp enable
|
||||
[S]stp disenable
|
||||
```
|
||||
### VLAN实验
|
||||
|
||||
```
|
||||
# 创建删除vlan
|
||||
[S]vlan vlan_id
|
||||
[S]undo vlan vlan_id
|
||||
|
||||
# 向vlan中添加删除端口
|
||||
[S-vlan2]port port_num to port_num
|
||||
[S-vlan2]undo port port_num
|
||||
|
||||
# 指定端口类型
|
||||
[S-Ethernet0/1]port link-type {access|trunk|hybrid}
|
||||
[S-Ethernet0/1]undo port link-type trunk
|
||||
|
||||
# 指定删除pvid
|
||||
[S-Ethernet]port trunk pvid vlan vlan_id
|
||||
[S-Ethernet0/1]undo port trunk pvid vlan vlan_id
|
||||
|
||||
# 指定删除trunk的vlan
|
||||
[S-Ethernet0/1]port trunk permit vlan{vlan_id_list | all}
|
||||
[S-Ethernet0/1]undo port trunk permit {vlan_id_list}
|
||||
|
||||
# hybrid端口添加删除vlantag
|
||||
[S-Ethernet]prot hybrid vlan vlan_id_list untagged|tagged
|
||||
|
||||
```
|
||||
### 广域网协议-PPP
|
||||
|
||||
```
|
||||
# 配置ppp链路协议
|
||||
[R-serial1/0]link-protocol ppp
|
||||
|
||||
# 显示ppp的debugging信息
|
||||
[user]debugging ppp all //打开debug开关
|
||||
[user]termimal debugging//显示debug信息
|
||||
|
||||
# 设置ppp服务认证
|
||||
[R]local-user RTB class network//配置用户列表
|
||||
[R-luser-network-RTB]service-type ppp//配置服务类型
|
||||
[R-luser-network-RTB]password simple aaa//配置用户密码
|
||||
# 设置pap验证
|
||||
[R-serial1/0]ppp authentication pap//授权pap认证
|
||||
# 对端pap设置
|
||||
[R-serial1/0]ppp pap local-user RTB password simple aaa
|
||||
|
||||
# 设置ppp服务
|
||||
[R]local-user RTB class network//配置用户列表
|
||||
[R-luser-network-RTB]service-type ppp//配置服务类型
|
||||
[R-luser-network-RTB]password simple aaa//配置RTB用户密码
|
||||
# 设置chap验证
|
||||
[R-serial0/0]ppp authentication-mode chap//配置验证方式
|
||||
[R-serial0/0]ppp chap user RTA//配置本地名称
|
||||
# 对端对端路由器配置
|
||||
[R]lcoal-user RTA class network
|
||||
[R-luser-network]service-type ppp
|
||||
[R-luser-network]password simple aaa//配置RTA密码
|
||||
[R-serial0/0]ppp chap user RTB
|
||||
```
|
||||
|
||||
## 3 网络层实验
|
||||
|
||||
### ARP分析
|
||||
```
|
||||
# 使用三层交换机的第三层。可以用开启VLAN的端口作为其三层协议驻留的端口。配置VLAN,开启第三层网络层服务。
|
||||
[S-vlan2]inter vlan 2//进入vlan2的接口(虚拟接口)
|
||||
[S-Vlan-interface2]ip address 192.168.1.10 255.255.255.0 //配置虚拟局域网VLAN的虚拟接口的IP地址。开放第三层服务。
|
||||
|
||||
```
|
||||
|
||||
### ICMP分析
|
||||
```
|
||||
# 网络设备出于安全性考虑对tracert命令不回复。避免称为攻击目标。实验中可以打开
|
||||
[S]ip ttl-expires enable//打开ttl计数
|
||||
[S]ip unreachables enable//打开ip
|
||||
```
|
||||
|
||||
### IP 分析
|
||||
```
|
||||
# 显示路由表。
|
||||
display ip routing-table
|
||||
```
|
||||
|
||||
### 网络层分片实验
|
||||
```
|
||||
# 设置接口最大传输单元
|
||||
[R-Ethernet0/0]mtu 100
|
||||
```
|
||||
|
||||
### VLAN间通信
|
||||
```
|
||||
# 开启VLAN的三成转发
|
||||
[S]inter vlan 2
|
||||
[S-vlan-interface2]ip address 192.168.2.1 255.255.255.0
|
||||
```
|
||||
## 4 OSPF协议实验
|
||||
|
||||
### OSPF基本配置
|
||||
```
|
||||
# display ospf命令的说明,下面是三个不同的表格。
|
||||
display ospf peer //显示的是邻居信息,有几个邻居路由器
|
||||
display ospf routing //是路由信息,具体用来决定从哪个接口,寻找下一跳。通过lsdb与ospf算法计算而来。
|
||||
display ospf lsdb //是整个区域的链路拓扑结构,即通过lsa链路状态通告而来。
|
||||
display adjacent-table //显示邻接信息。
|
||||
|
||||
# router id相关命令
|
||||
[system]router id router-id //设置router id
|
||||
[system]undo router id //删除router id
|
||||
|
||||
[system]ospf [process-id[router-id]] //创建并进入ospf视图
|
||||
[system]undo ospf [process-id]关闭ospf视图
|
||||
|
||||
[ospf]area area-id //创建并进入ospf下area视图
|
||||
[ospf]undo area area-id //删除ospf area
|
||||
|
||||
[area]network ip-address wildcard-mask //指定网段运行OSPF协议
|
||||
[area]undo network ip-address wildcard-mask //取消网段运行OSPF协议
|
||||
|
||||
# 重置
|
||||
[user]reset ospf all process
|
||||
# 显示
|
||||
[user]display ospf peer/brief/error/routing
|
||||
# 调试
|
||||
[user]debugging ospf event/lsa/packet/spf
|
||||
|
||||
# 用来显示ospf的lsdb(链路状态数据库)自组织成第一类router-lsa的内容。
|
||||
[R]dis ospf 1 lsdb router self-originate
|
||||
# ospf的lsdb自组织第二类network-lsa
|
||||
[R]dis ospf 1 lsdb network self-originate
|
||||
# ospf的lsdb自组织第三类第四类summary lsa
|
||||
[R]dis ospf 1 lsdb summary self-originate
|
||||
# ospf的lsdb自组织第五类lsa
|
||||
[R]dis ospf lsdb ase
|
||||
```
|
||||
|
||||
|
||||
## 5 BGP实验
|
||||
### BGP 基本分析
|
||||
```
|
||||
# 启动BGP进程
|
||||
bgp 100 //启动bgp指定as号
|
||||
router-id 1.1.1.1 //配置BGP的router-id
|
||||
|
||||
# 配置BGP对等体:配置BGP对等体时,如果指定对等体所属的AS编号与本地AS编号相同,表示配置IBGP对等体。如果指定对等体所属的AS编号与本地AS编号不同,表示配置EBGP对等体。为了增强BGP连接的稳定性,推荐使用路由可达的Loopback接口地址建立BGP连接。
|
||||
[BGP]peer 12.1.1.1 as-number 100 //创建BGP对等体
|
||||
[BGP]peer 12.1.1.1 connet-interface lookback 0 //指定发送BGP报文的源接口,并可指定发起连接时使用的源地址。缺省情况下,BGP使用报文的出接口作为BGP报文的源接口。
|
||||
[BGP]peer 12.1.1.1 ebgp-max-hop 2 //指定建立EBGP连接允许的最大跳数。 缺省情况下,EBGP连接允许的最大跳数为1,即只能在物理直连链路上建立EBGP连接。
|
||||
[BGP]peer peer 3.1.1.2 next-hop-local //强制下一跳地址为自身。用来配置IBGP。
|
||||
|
||||
# 配置BGP对等体组:(只能用来配置EBGP)
|
||||
group 1 [ external | internal ]//创建对等体组。
|
||||
peer 1 as-number 100//配置EBGP对等体组的AS号。
|
||||
peer 12.1.1.2 group 1//向对等体组中加入对等体
|
||||
|
||||
# 配置BGP引入路由:BGP协议本身不发现路由,因此需要将其他路由(如IGP路由等)引入到BGP路由表中,从而将这些路由在AS之内和AS之间传播。BGP协议支持通过以下两种方式引入路由:
|
||||
|
||||
Import方式:按协议类型,将RIP路由、OSPF路由、ISIS路由等协议的路由引入到BGP路由表中。为了保证引入的IGP路由的有效性,Import方式还可以引入静态路由和直连路由。
|
||||
|
||||
Network方式:逐条将IP路由表中已经存在的路由引入到BGP路由表中,比Import方式更精确。
|
||||
|
||||
import-router protocol //引入路由
|
||||
default-route imported//允许BGP引入本地IP路由表中已经存在的缺省路由。
|
||||
network 1.1.1.1 mask //配置BGP逐条引入IPv4路由表或IPv6路由表中的路由。
|
||||
```
|
||||
|
||||
### BGP状态转换分析
|
||||
```
|
||||
[user]debugging bgp event
|
||||
[user]terminal debugging
|
||||
[user]reset bgp all
|
||||
|
||||
[user]display bgp peer //可以显示bgp邻居信息,用来查看对等体是否已经建立。
|
||||
[user]display bgp routing-table peer ip-address advertised-routes/received-routes //用来检查bgp通告的路由信息
|
||||
[user]display bgp routing-table
|
||||
```
|
||||
|
||||
### BGP路由聚合
|
||||
|
||||
```
|
||||
[R]bgp 100
|
||||
[R-bgp]aggregate 192.168.0.0 255.255.240.0 [detail-suppressed]//同网段路由聚合。当有detail-suppressed的时候只通告聚合路由。
|
||||
[R-bgp]undo aggregate 192.168.0.0 255.255.240.0
|
||||
```
|
||||
### BGP路由属性
|
||||
|
||||
```
|
||||
# 路由引入
|
||||
import-route direct
|
||||
|
||||
```
|
||||
### BGP的路由策略
|
||||
```
|
||||
# 访问控制列表
|
||||
[R]acl number acl-number
|
||||
[R-acl-number]rule rule-number permit|deny source-addr source-addr-mask | any//定义acl过滤规则
|
||||
[R]peer 10.0.0.1 filter-policy acl-number {export|import}//应用acl访问控制列表
|
||||
|
||||
# 自制系统路径信息访问列表
|
||||
ip as-path-acl as-path-acl-number {permit|deny} as-regular-expression//定义AS-path过滤规则
|
||||
peer peer-address as-path-acl as-path-acl-number {import|export}//应用对等体的AS路径过滤器。
|
||||
|
||||
# 路由策略
|
||||
route-policy policy-name {permit|deny}node node-number//定义route-policy路由策略过滤规则
|
||||
peer peer-address route-policy policy-name {import|export}//应用对等体路由策略
|
||||
|
||||
if-match
|
||||
apply//使用对等体路由策略
|
||||
|
||||
# 复位BGP
|
||||
reset bgp all|peer-id
|
||||
```
|
||||
|
||||
## 6 组播实验
|
||||
|
||||
### IGMP实验
|
||||
```
|
||||
接口上设置其他IGMP查询器的存活时间。
|
||||
display igmp explicit-tracking
|
||||
//查看使用Include模式加入特定源组的IGMPv3主机信息。
|
||||
display igmp group
|
||||
//查看通过主机发送报告报文动态加入的IGMP组播组信息。
|
||||
display igmp group ssm-mapping
|
||||
//查看根据SSM Mapping规则创建的组播组信息。
|
||||
display igmp group static
|
||||
//查看IGMP静态组播组的配置信息。
|
||||
display igmp routing-table
|
||||
//查看IGMP路由表信息。
|
||||
display igmp ssm-mapping
|
||||
//查看IGMP SSM Mapping的配置信息。
|
||||
igmp
|
||||
//进入IGMP视图。
|
||||
igmp enable
|
||||
//在接口上使能IGMP功能。
|
||||
igmp global limit
|
||||
//配置整个路由器上可以创建的所有IGMP表项的最大个数。
|
||||
igmp group-policy
|
||||
//在接口上设置IGMP组播组的过滤器,限制主机能够加入的组播组范围。
|
||||
igmp ip-source-policy
|
||||
//配置设备根据源地址对IGMP报告/离开报文进行过滤。
|
||||
igmp lastmember-queryinterval interval
|
||||
//在接口上配置IGMP查询器在收到主机发送的IGMP离开报文时,
|
||||
//发送IGMP特定组\源组查询报文的时间间隔。
|
||||
//缺省情况下,IGMP特定组\源组查询报文的发送时间间隔是1秒。
|
||||
igmp max-response-time 10
|
||||
//在接口上配置IGMP普遍组查询报文的最大响应时间。
|
||||
//缺省情况下,IGMP普遍组查询报文的最大响应时间是10秒。
|
||||
igmp on-demand
|
||||
/*
|
||||
配置IGMP On-Demand功能.
|
||||
使查询器不主动发送查询报文,而是根据成员的要求来维护
|
||||
成员关系。配置IGMP On-Demand功能后,接口上动态加
|
||||
入的组播组永不超时。
|
||||
*/
|
||||
igmp prompt-leave
|
||||
//在接口上配置组播组成员快速离开功能,
|
||||
//即IGMP查询器在接收到成员主机发送的离开报文后不发送
|
||||
//特定组查询报文,立即删除该组表项。
|
||||
igmp proxy
|
||||
//在接口上使能IGMP Proxy功能。
|
||||
igmp proxy backup
|
||||
//配置接口成为具有IGMP Proxy功能的备份接口。
|
||||
igmp query ip-source-policy
|
||||
//配置IGMP查询报文源地址过滤策略。
|
||||
igmp send-router-alert
|
||||
//在接口上配置发送的IGMP报文中包含Router-Alert选项。
|
||||
igmp require-router-alert
|
||||
//在接口上配置丢弃不包含Router-Alert选项的IGMP报文。
|
||||
igmp robust-count 2
|
||||
//在接口上设置IGMP查询器的健壮系数。
|
||||
//缺省情况下,IGMP查询器的健壮系数是2。
|
||||
igmp ssm-mapping enable
|
||||
//在接口上使能SSM Mapping。
|
||||
igmp static-group
|
||||
//在接口上配置静态组播组。
|
||||
igmp timer other-querier-present
|
||||
//接口上设置其他IGMP查询器的存活时间。
|
||||
//缺省时,其他IGMP查询器的存活时间的值为125秒。
|
||||
//其他IGMP查询器的存活时间 = 健壮系数 × IGMP普遍查询报文发送间隔 +(1/2)× 最大查询响应时间。
|
||||
igmp timer query 60
|
||||
//在接口上配置IGMP普遍组查询报文的发送间隔。
|
||||
igmp version
|
||||
//在接口上配置运行的IGMP版本。
|
||||
lastmember-queryinterval 1
|
||||
//配置IGMP查询器在收到主机发送的IGMP离开报文时,
|
||||
//发送IGMP特定组\源组查询报文的时间间隔。
|
||||
//缺省情况下,IGMP特定组\源组查询报文的发送时间间隔是1秒。
|
||||
max-response-time 10
|
||||
//全局配置IGMP普遍组查询报文的最大响应时间。
|
||||
proxy source-lifetime 210
|
||||
//配置Proxy设备上生成(S,G)表项的超时时间。
|
||||
//缺省情况下,Proxy设备上生成(S,G)表项的超时时间是210秒。
|
||||
require-router-alert
|
||||
//配置丢弃不包含Router-Alert选项的IGMP报文。
|
||||
reset igmp control-message counters
|
||||
//清除IGMP报文统计数。
|
||||
reset igmp explicit-tracking
|
||||
//删除接口上通过IGMP动态加入组播组的主机。
|
||||
robust-count 2
|
||||
//设置IGMP查询器的健壮系数。
|
||||
send-router-alert
|
||||
//指定设备发送的IGMP报文中包含Router-Alert选项。
|
||||
ssm-mapping
|
||||
//配置SSM Mapping的源组映射规则。
|
||||
timer other-querier-present
|
||||
//设置其他IGMP查询器存活时间。
|
||||
timer query 60
|
||||
//全局配置IGMP普遍组查询报文的发送间隔。
|
||||
```
|
||||
|
||||
### IGMP Snooping
|
||||
```
|
||||
igmp-snooping enable
|
||||
//使能全局的IGMP Snooping功能。
|
||||
//在VLAN内,也需要使能Igmp Snooping功能。
|
||||
igmp-snooping group-limit
|
||||
//指定接口能够学习的组播表项最大数目。
|
||||
igmp-snooping lastmember-queryinterval 1
|
||||
//配置VLAN内的最后成员查询时间间隔,即IGMP特定组查询报文发送时间间隔。
|
||||
igmp-snooping learning
|
||||
//使能动态成员端口学习功能。
|
||||
//缺省情况下,动态成员端口学习功能处于使能状态。
|
||||
igmp-snooping max-response-time 10
|
||||
//在VLAN内配置IGMP普遍组查询的最大响应时间。
|
||||
igmp-snooping prompt-leave
|
||||
//配置允许VLAN内的成员端口快速离开组播组。
|
||||
//成员端口快速离开是指当路由器收到主机发送的离开某个组
|
||||
//播组的IGMP Leave报文后,不等待成员端口老化,将接口
|
||||
//对应该组播组的转发表项直接删除,这样可以节约带宽和资源。
|
||||
igmp-snooping querier enable
|
||||
//使能VLAN的IGMP Snooping查询器功能。
|
||||
igmp-snooping query-interval 60
|
||||
//配置VLAN内的IGMP Snooping普遍组查询报文发送时间间隔。
|
||||
igmp-snooping report-suppress
|
||||
//配置在VLAN内对Report和Leave报文的抑制功能。
|
||||
igmp-snooping router-aging-time 180
|
||||
//配置VLAN内的动态路由器端口老化时间。
|
||||
igmp-snooping router-learning
|
||||
//使能VLAN的路由器端口动态学习功能。
|
||||
igmp-snooping send-query enable
|
||||
//配置设备响应二层拓扑变化向非路由器端口发送IGMP普遍组查询报文。
|
||||
igmp-snooping send-query source-address
|
||||
//配置IGMP普遍组查询报文的源IP地址。
|
||||
//缺省情况下,IGMP普遍组查询报文的源IP地址为192.168.0.1。
|
||||
igmp-snooping ssm-mapping enable
|
||||
//使能VLAN内的SSM Mapping功能。
|
||||
igmp-snooping static-router-port
|
||||
//配置接口作为指定VLAN内的静态路由器端口。
|
||||
igmp-snooping suppress-time 10
|
||||
//配置VLAN内的IGMP报文抑制时间。
|
||||
//缺省情况下,VLAN内IGMP报文抑制时间为10秒。
|
||||
igmp-snooping version
|
||||
//来配置IGMP Snooping在VLAN内可以处理的IGMP报文的版本。
|
||||
//缺省情况下,IGMP Snooping可以处理IGMPv1、IGMPv2版本的报文。
|
||||
multicast drop-unknown
|
||||
//配置将VLAN内收到的未知组播流丢弃。
|
||||
//缺省情况下,收到未知组播流会在VLAN内广播。
|
||||
```
|
||||
|
||||
### PIM
|
||||
|
||||
```
|
||||
display pim grafts
|
||||
//anycast-rp
|
||||
//来配置Anycast RP,并进入Anycast-RP视图
|
||||
auto-rp listening enable
|
||||
//使能Auto-RP侦听功能,即路由器能够接收Auto-RP宣告和发现报文,从中学习RP信息。
|
||||
bsm semantic fragmentation
|
||||
//使能BSR报文分片功能。
|
||||
bsr-policy
|
||||
//限定合法BSR地址范围,使路由器丢弃来自该地址范围之外的自举报文,从而防止BSR欺骗。
|
||||
c-bsr
|
||||
//配置C-BSR。
|
||||
c-bsr admin-scope
|
||||
//使能路由器的BSR管理域功能。
|
||||
c-bsr global
|
||||
//配置路由器为Global域中的C-BSR。
|
||||
c-bsr group
|
||||
//配置C-BSR服务的管理域组地址范围。
|
||||
c-bsr hash-length 30
|
||||
//配置C-BSR的全局性哈希掩码长度。
|
||||
c-bsr holdtime 130
|
||||
//配置C-BSR等待接收BSR发送的Bootstrap报文的超时时间。
|
||||
c-bsr interval 60
|
||||
//来配置BSR发送Bootstrap报文的时间间隔。
|
||||
c-bsr priority 0
|
||||
//配置C-BSR的全局优先级。
|
||||
c-rp
|
||||
//配置路由器向BSR通告自己为候选RP。
|
||||
c-rp advertisement-interval 60
|
||||
//配置C-RP周期性发送Advertisement报文的时间间隔。
|
||||
c-rp holdtime 150
|
||||
//配置BSR等待接收该C-RP发送Advertisement报文的超时时间。
|
||||
c-rp priority 0
|
||||
//配置C-RP的全局性优先级。
|
||||
crp-policy
|
||||
//限定合法的C-RP地址范围及其服务的组播组地址范围,使
|
||||
//BSR丢弃来自该地址范围之外的C-RP报文,从而防止C-RP欺骗。
|
||||
display pim bsr-info
|
||||
//查看PIM-SM域中BSR自举路由器的信息。
|
||||
display pim claimed-route
|
||||
//查看PIM使用的单播路由信息。
|
||||
display pim grafts
|
||||
//查看未确认的PIM-DM嫁接报文。
|
||||
display pim interface
|
||||
//查看接口上的PIM信息。
|
||||
display pim neighbor
|
||||
//查看PIM邻居信息。
|
||||
display pim routing-table
|
||||
//查看PIM协议组播路由表的内容。
|
||||
display pim rp-info
|
||||
//查看组播组对应的RP信息。
|
||||
graceful-restart
|
||||
//使能PIM GR功能。
|
||||
graceful-restart period 120
|
||||
//配置PIM GR的最小周期。
|
||||
//缺省情况下,PIM GR最小周期为120秒。
|
||||
hello-option dr-priority 1
|
||||
//配置路由器竞选成为DR(Designated Router)的优先级。
|
||||
hello-option holdtime 105
|
||||
//配置路由器等待接收其PIM邻居发送Hello报文的超时时间。
|
||||
//缺省情况下,路由器等待接收其PIM邻居发送Hello报文的超时时间是105秒。
|
||||
hello-option lan-delay 500
|
||||
//配置共享网段上传输Prune报文的延迟时间。
|
||||
//缺省情况下,共享网段上传输Prune报文的延迟时间是500毫秒。
|
||||
hello-option neighbor-tracking
|
||||
//使能邻居跟踪功能。
|
||||
hello-option override-interval 2500
|
||||
//配置Hello报文中携带的否决剪枝的时间间隔。
|
||||
//缺省情况下,Hello报文中携带的否决剪枝的时间间隔是2500毫秒。
|
||||
holdtime assert 180
|
||||
//配置路由器上所有PIM接口保持Assert状态的超时时间。
|
||||
//缺省情况下,路由器上所有PIM接口保持Assert状态的超时时间是180秒。
|
||||
holdtime join-prune 210
|
||||
/*
|
||||
配置Join/Prune报文的保持时间。接收到Join/Prune报
|
||||
文的路由器依据该报文自身携带的保持时间来确定对应下游
|
||||
接口保持加入或剪枝状态的时间。
|
||||
缺省情况下,Join/Prune报文的保持时间是210秒。
|
||||
*/
|
||||
join-prune max-packet-length 8100
|
||||
//配置PIM-SM发送的Join/Prune报文的最大长度。
|
||||
join-prune periodic-messages queue-size 1020
|
||||
//配置PIM-SM每秒发送周期性Join/Prune报文中包含的表项数目。
|
||||
join-prune triggered-message-cache disable
|
||||
//配置去使能实时触发的Join/Prune报文打包功能。
|
||||
local-address
|
||||
//配置Anycast RP本地地址。
|
||||
neighbor-check
|
||||
//使能PIM邻居检查功能。
|
||||
peer 10.2.2.2 fwd-msdp-sa
|
||||
//配置Anycast RP对等体。
|
||||
//fwd-msdp-sa:指定将收到的MSDP SA报文提取源组信息
|
||||
//后封装成注册报文向Anycast RP对等体转发。
|
||||
pim bfd
|
||||
//调整接口上的PIM BFD参数。
|
||||
pim bfd enable
|
||||
//在接口上使能PIM BFD功能。
|
||||
pim bsr-boundary
|
||||
//在接口上配置PIM-SM域的BSR边界。
|
||||
pim dm
|
||||
//在接口上使能PIM-DM。
|
||||
pim hello-option dr-priority
|
||||
//配置PIM接口竞选成为DR的优先级。
|
||||
pim hello-option holdtime 105
|
||||
//配置PIM接口等待接收PIM邻居发送Hello报文的超时时间。
|
||||
pim holdtime assert180
|
||||
//配置PIM接口保持Assert状态的超时时间。
|
||||
pim neighbor-policy
|
||||
//用来过滤接口上的PIM邻居。
|
||||
pim require-genid
|
||||
//配置PIM接口拒绝无Generation ID参数的Hello报文。
|
||||
//缺省情况下,PIM接口接收无Generation ID参数的Hello报文。
|
||||
pim silent
|
||||
//在接口上使能PIM Silent功能。
|
||||
/*
|
||||
为了避免恶意主机模拟PIM Hello报文攻击路由器,可
|
||||
以在直连用户的接口上执行pim silent命令,将接口设
|
||||
置为PIM消极模式。接口进入消极状态后,禁止接收和转
|
||||
发任何PIM协议报文,删除该接口上的所有PIM邻居以及
|
||||
PIM状态机,并自动成为DR。同时,该接口上的IGMP功
|
||||
能不受影响。
|
||||
PIM silent仅适用于与用户主机网段直连的接口,且
|
||||
网段上只能连接一台PIM路由器。
|
||||
*/
|
||||
pim sm
|
||||
//在接口上使能PIM-SM。
|
||||
pim state-refresh-capable
|
||||
//在接口上使能PIM-DM状态刷新。
|
||||
//缺省情况下,PIM-DM状态刷新功能已使能。
|
||||
pim timer dr-switch-delay
|
||||
//在接口上使能PIM DR切换延迟功能
|
||||
pim timer graft-retry 3
|
||||
//在接口上配置重传嫁接(Graft)报文的时间间隔。
|
||||
pim timer hello 30
|
||||
//在接口上配置发送Hello报文的时间间隔。
|
||||
probe-interval 5
|
||||
//配置路由器向RP发送Probe报文(空注册报文)的时间间隔。
|
||||
register-header-checksum
|
||||
//配置仅根据Register注册报文头信息来计算校验和。
|
||||
register-source
|
||||
//指定源DR发送注册报文的源地址。
|
||||
register-suppression-timeout 60
|
||||
//来配置路由器保持注册抑制状态的超时时间。
|
||||
source-lifetime 210
|
||||
//配置路由器上(S,G)或者(*,G)表项的超时时间。
|
||||
spt-switch-threshold
|
||||
//设置组成员端DR加入SPT的组播报文速率阈值。
|
||||
//缺省情况下,从RPT收到第一个组播数据包后立即进行SPT切换。
|
||||
state-refresh-interval60
|
||||
//配置路由器发送PIM状态刷新报文(State-Refresh)的时间间隔。
|
||||
state-refresh-rate-limit 30
|
||||
//配置接收下一个PIM状态刷新报文前必须经过的最小时间长度。
|
||||
state-refresh-ttl 255
|
||||
//配置发送PIM状态刷新报文的TTL值。
|
||||
static-rp
|
||||
//配置静态RP。
|
||||
timer spt-switch 15
|
||||
//配置在RPT切换到SPT前检查组播数据速率是否达到阈值的时间间隔。
|
||||
```
|
||||
575
计算机网络实验/IPv6-DHCPv6.md
Normal file
@@ -0,0 +1,575 @@
|
||||
# DHCPv6
|
||||
|
||||
> 参考文献
|
||||
> * [DHCPv6](https://blog.csdn.net/qq_38265137/article/details/80466734)
|
||||
|
||||
DHCPv6简介
|
||||
IPv6动态主机配置协议DHCPv6(Dynamic Host Configuration Protocol for IPv6)是针对IPv6编址方案设计,为主机分配IPv6地址/前缀和其他网络配置参数。
|
||||
|
||||
目的:
|
||||
IPv6协议具有地址空间巨大的特点,但同时长达128比特的IPv6地址又要求高效合理的地址自动分配和管理策略。IPv6无状态地址配置方式(参看协议RFC2462)是目前广泛采用的IPv6地址自动配置方式。配置了该协议的主机只需相邻设备开启IPv6路由通告功能,即可以根据通告报文包含的前缀信息自动配置本机地址。
|
||||
|
||||
无状态地址配置方案中设备并不记录所连接的IPv6主机的具体地址信息,可管理性差。而且当前无状态地址配置方式不能使IPv6主机获取DNS服务器的IPv6地址等配置信息,在可用性上有一定缺陷。对于互联网服务提供商来说,也没有相关的规范指明如何向设备自动分配IPv6前缀,所以在部署IPv6网络时,只能采用手动配置的方法为设备配置IPv6地址。
|
||||
|
||||
DHCPv6技术解决了这一问题。DHCPv6属于一种有状态地址自动配置协议。
|
||||
|
||||
与其他IPv6地址分配方式(手工配置、通过路由器通告消息中的网络前缀无状态自动配置等)相比,DHCPv6具有以下优点:
|
||||
|
||||
更好地控制IPv6地址的分配。DHCPv6方式不仅可以记录为IPv6主机分配的地址,还可以为特定的IPv6主机分配特定的地址,以便于网络管理。
|
||||
DHCPv6支持为网络设备分配IPv6前缀,便于全网络的自动配置和网络层次性管理。
|
||||
除了为IPv6主机分配IPv6地址/前缀外,还可以分配DNS服务器IPv6地址等网络配置参数。
|
||||
DHCPv6原理描述
|
||||
DHCPv6概述:
|
||||
DHCPv6是一种运行在客户端和服务器之间的协议,与IPv4中的DHCP一样,所有的协议报文都是基于UDP的。但是由于在IPv6中没有广播报文,因此DHCPv6使用组播报文,客户端也无需配置服务器的IPv6地址。
|
||||
|
||||
IPv6地址分配类型:
|
||||
IPv6协议具有地址空间巨大的特点,但同时长达128比特的IPv6地址又要求高效合理的地址自动分配和管理策略。
|
||||
|
||||
手动配置。手动配置IPv6地址/前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)。
|
||||
无状态自动地址分配。由接口ID生成链路本地地址,再根据路由通告报文RA(Router Advertisement)包含的前缀信息自动配置本机地址。
|
||||
有状态自动地址分配,即DHCPv6方式。DHCPv6又分为如下两种:
|
||||
DHCPv6有状态自动分配。DHCPv6服务器自动分配IPv6地址/PD前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)。
|
||||
DHCPv6无状态自动分配。主机IPv6地址仍然通过路由通告方式自动生成,DHCPv6服务器只分配除IPv6地址以外的配置参数,包括DNS、NIS、SNTP服务器等参数。
|
||||
DHCPv6基本架构:
|
||||
|
||||
|
||||
图:DHCPv6基本架构
|
||||
DHCPv6基本协议架构中,主要包括以下三种角色:
|
||||
|
||||
DHCPv6 Client:
|
||||
|
||||
DHCPv6客户端,通过与DHCPv6服务器进行交互,获取IPv6地址/前缀和网络配置信息,完成自身的地址配置功能。
|
||||
|
||||
DHCPv6 Relay:
|
||||
|
||||
DHCPv6中继代理,负责转发来自客户端方向或服务器方向的DHCPv6报文,协助DHCPv6客户端和DHCPv6服务器完成地址配置功能。一般情况下,DHCPv6客户端通过本地链路范围的组播地址与DHCPv6服务器通信,以获取IPv6地址/前缀和其他网络配置参数。如果服务器和客户端不在同一个链路范围内,则需要通过DHCPv6中继代理来转发报文,这样可以避免在每个链路范围内都部署DHCPv6服务器,既节省了成本,又便于进行集中管理。
|
||||
|
||||
DHCPv6基本协议架构中,DHCPv6中继代理不是必须的角色。如果DHCPv6客户端和DHCPv6服务器位于同一链路范围内,或DHCPv6客户端和DHCPv6服务器直接通过单播交互完成地址分配或信息配置的情况下,是不需要DHCPv6中继代理参与的。只有当DHCPv6客户端和DHCPv6服务器不在同一链路范围内,或DHCPv6客户端和DHCPv6服务器无法单播交互的情况下,才需要DHCPv6中继代理的参与。
|
||||
|
||||
DHCPv6 Server:
|
||||
|
||||
DHCPv6服务器,负责处理来自客户端或中继代理的地址分配、地址续租、地址释放等请求,为客户端分配IPv6地址/前缀和其他网络配置信息。
|
||||
|
||||
DHCPv6基本概念:
|
||||
组播地址
|
||||
|
||||
在DHCPv6协议中,客户端不用配置DHCPv6 Server的IPv6地址,而是发送目的地址为组播地址的Solicit报文来定位DHCPv6服务器。
|
||||
在DHCPv4协议中,客户端发送广播报文来定位服务器。为避免广播风暴,在IPv6中,已经没有了广播类型的报文,而是采用组播报文。DHCPv6用到的组播地址有两个:
|
||||
FF02::1:2(All DHCP Relay Agents and Servers):所有DHCPv6服务器和中继代理的组播地址,这个地址是链路范围的,用于客户端和相邻的服务器及中继代理之间通信。所有DHCPv6服务器和中继代理都是该组的成员。
|
||||
FF05::1:3(All DHCP Servers):所有DHCPv6服务器组播地址,这个地址是站点范围的,用于中继代理和服务器之间的通信,站点内的所有DHCPv6服务器都是此组的成员。
|
||||
UDP端口号
|
||||
|
||||
DHCPv6报文承载在UDPv6上。
|
||||
客户端侦听的UDP目的端口号是546。
|
||||
服务器、中继代理侦听的UDP端口号是547。
|
||||
DHCP唯一标识符(DUID)
|
||||
|
||||
DHCP设备唯一标识符DUID(DHCPv6 Unique Identifier),每个服务器或客户端有且只有一个唯一标识符,服务器使用DUID来识别不同的客户端,客户端则使用DUID来识别服务器。
|
||||
|
||||
客户端和服务器DUID的内容分别通过DHCPv6报文中的Client Identifier和Server Identifier选项来携带。两种选项的格式一样,通过option-code字段的取值来区分是Client Identifier还是Server Identifier选项。
|
||||
|
||||
身份联盟(IA)
|
||||
|
||||
身份联盟IA(Identity Association)是使得服务器和客户端能够识别、分组和管理一系列相关IPv6地址的结构。每个IA包括一个IAID和相关联的配置信息。
|
||||
客户端必须为它的每一个要通过服务器获取IPv6地址的接口关联至少一个IA。客户端用给接口关联的IA来从服务器获取配置信息。每个IA必须明确关联到一个接口。
|
||||
IA的身份由IAID唯一确定,同一个客户端的IAID不能出现重复。IAID不应因为设备的重启等因素发生丢失或改变。
|
||||
IA中的配置信息由一个或多个IPv6地址以及T1和T2生存期组成。IA中的每个地址都有首选生存期和有效生存期。
|
||||
一个接口至少关联一个IA,一个IA可以包含一个或多个地址信息。
|
||||
DHCPv6报文类型
|
||||
DHCPv6报文格式:
|
||||
|
||||
|
||||
图:DHCPv6的报文格式
|
||||
字段 长度 含义
|
||||
msg-type 1字节 表示报文的类型,取值为1~13,具体请参见DHCPv6报文类型。
|
||||
transaction-ID 3字节 DHCPv6交互ID,也叫事务ID,用来标识一个来回的DHCPv6报文交互。例如Solicit/Advertise报文为一个交互。Request/Reply报文为另外一个交互,两者有不同的事务ID。交互ID特点如下:交互ID是DHCPv6客户端生成的一个随机值,DHCPv6客户端应当保证交互ID具有一定的随机性。对于DHCPv6服务器响应报文和相应的请求报文,两者交互ID保持一致。如果是DHCPv6服务器主动发起的会话报文,则交互ID为0。
|
||||
Options 可变 表示DHCPv6的选项字段。此字段包含了DHCPv6服务器分配给IPv6主机的配置信息,如DNS服务器的IPv6地址等信息。
|
||||
DHCPv6报文类型:
|
||||
目前DHCPv6定义了如下十三种类型报文,DHCPv6服务器和DHCPv6客户端之间通过这十三种类型的报文进行通信。
|
||||
|
||||
DHCPv6和DHCPv4报文对比:
|
||||
|
||||
报文类型 DHCPv6报文 DHCPv4报文 说明
|
||||
1 SOLICIT DHCP DISCOVER DHCPv6客户端使用Solicit报文来确定DHCPv6服务器的位置。
|
||||
2 ADVERTISE DHCP OFFER DHCPv6服务器发送Advertise报文来对Solicit报文进行回应,宣告自己能够提供DHCPv6服务。
|
||||
3 REQUEST DHCP REQUEST DHCPv6客户端发送Request报文来向DHCPv6服务器请求IPv6地址和其它配置信息。
|
||||
4 CONFIRM - DHCPv6客户端向任意可达的DHCPv6服务器发送Confirm报文检查自己目前获得的IPv6地址是否适用与它所连接的链路。
|
||||
5 RENEW DHCP REQUEST DHCPv6客户端向给其提供地址和配置信息的DHCPv6服务器发送Renew报文来延长地址的生存期并更新配置信息。
|
||||
6 REBIND DHCP REQUEST 如果Renew报文没有得到应答,DHCPv6客户端向任意可达的DHCPv6服务器发送Rebind报文来延长地址的生存期并更新配置信息。
|
||||
7 REPLY DHCP ACK/NAK DHCPv6服务器在以下场合发送Reply报文:DHCPv6服务器发送携带了地址和配置信息的Reply消息来回应从DHCPv6客户端收到的Solicit、Request、Renew、Rebind报文。DHCPv6服务器发送携带配置信息的Reply消息来回应收到的Information-Request报文。用来回应DHCPv6客户端发来的Confirm、Release、Decline报文。
|
||||
8 RELEASE DHCP RELEASE DHCPv6客户端向为其分配地址的DHCPv6服务器发送Release报文,表明自己不再使用一个或多个获取的地址。
|
||||
9 DECLINE DHCP DECLINE DHCPv6客户端向DHCPv6服务器发送Decline报文,声明DHCPv6服务器分配的一个或多个地址在DHCPv6客户端所在链路上已经被使用了。
|
||||
10 RECONFIGURE - DHCPv6服务器向DHCPv6客户端发送Reconfigure报文,用于提示DHCPv6客户端,在DHCPv6服务器上存在新的网络配置信息。
|
||||
11 INFORMATION-REQUEST DHCP INFORM DHCPv6客户端向DHCPv6服务器发送Information-Request报文来请求除IPv6地址以外的网络配置信息。
|
||||
12 RELAY-FORW - 中继代理通过Relay-Forward报文来向DHCPv6服务器转发DHCPv6客户端请求报文。
|
||||
13 RELAY-REPL - DHCPv6服务器向中继代理发送Relay-Reply报文,其中携带了转发给DHCPv6客户端的报文。
|
||||
DHCPv6报文抓包:
|
||||
Solicit报文(类型1):
|
||||
DHCPv6客户端使用Solicit报文来确定DHCPv6服务器的位置。
|
||||
|
||||
|
||||
|
||||
图:Solicit报文抓包示例
|
||||
Advertise报文(类型2):
|
||||
DHCPv6服务器发送Advertise报文来对Solicit报文进行回应,宣告自己能够提供DHCPv6服务。
|
||||
|
||||
|
||||
|
||||
图:Advertise报文抓包示例
|
||||
Request报文(类型3):
|
||||
DHCPv6客户端发送Request报文来向DHCPv6服务器请求IPv6地址和其它配置信息。
|
||||
|
||||
|
||||
|
||||
图:Request报文抓包示例
|
||||
Renew报文(类型5):
|
||||
DHCPv6客户端向给其提供地址和配置信息的DHCPv6服务器发送Renew报文来延长地址的生存期并更新配置信息。
|
||||
|
||||
|
||||
|
||||
图:Renew报文抓包示例
|
||||
Rebind报文(类型6):
|
||||
如果Renew报文没有得到应答,DHCPv6客户端向任意可达的DHCPv6服务器发送Rebind报文来延长地址的生存期并更新配置信息。
|
||||
|
||||
|
||||
|
||||
图:Rebind报文抓包示例
|
||||
Reply报文(类型7):
|
||||
DHCPv6服务器在以下场合发送Reply报文:DHCPv6服务器发送携带了地址和配置信息的Reply消息来回应从DHCPv6客户端收到的Solicit、Request、Renew、Rebind报文。DHCPv6服务器发送携带配置信息的Reply消息来回应收到的Information-Request报文。用来回应DHCPv6客户端发来的Confirm、Release、Decline报文。
|
||||
|
||||
|
||||
|
||||
图:Reply报文抓包示例
|
||||
Release(类型8);
|
||||
DHCPv6客户端向为其分配地址的DHCPv6服务器发送Release报文,表明自己不再使用一个或多个获取的地址。
|
||||
|
||||
|
||||
|
||||
图:Release报文抓包示例
|
||||
Reply-forw报文(类型12):
|
||||
中继代理通过Relay-Forward报文来向DHCPv6服务器转发DHCPv6客户端请求报文。
|
||||
|
||||
|
||||
图:Relay-Forw报文抓包示例
|
||||
Relay-reply报文(类型13):
|
||||
DHCPv6服务器向中继代理发送Relay-Reply报文,其中携带了转发给DHCPv6客户端的报文。
|
||||
|
||||
|
||||
|
||||
图:Relay-Reply报文抓包示例
|
||||
DHCPv6工作原理::
|
||||
DHCPv6自动分配分为DHCPv6有状态自动分配和DHCPv6无状态自动分配。
|
||||
|
||||
DHCPv6有状态自动分配。DHCPv6服务器自动配置IPv6地址/前缀,同时分配DNS、NIS、SNTP服务器等网络配置参数。
|
||||
DHCPv6无状态自动分配。主机IPv6地址仍然通过路由通告方式自动生成,DHCP服务器只分配除IPv6地址以外的配置参数,包括DNS、NIS、SNTP服务器地址等参数。
|
||||
DHVPv6有状态自动分配:
|
||||
IPv6主机通过有状态DHCPv6方式获取IPv6地址和其他配置参数(例如DNS服务器的IPv6地址等)。
|
||||
|
||||
DHCPv6服务器为客户端分配地址/前缀的过程分为两类:
|
||||
|
||||
DHCPv6四步交互分配过程
|
||||
DHCPv6两步交互快速分配过程
|
||||
DHCPv6四步交互
|
||||
|
||||
四步交互常用于网络中有多个DHCPv6服务器的情况。DHCPv6客户端首先通过组播发送Solicit报文来定位可以为其提供服务的DHCPv6服务器,在收到多个DHCPv6服务器的Advertise报文后,根据DHCPv6服务器的优先级选择一个为其分配地址和配置信息的服务器,接着通过Request/Reply报文交互完成地址申请和分配过程。
|
||||
|
||||
DHCPv6服务器端如果没有配置使能两步交互,无论客户端报文中是否包含Rapid Commit选项,服务器都采用四步交互方式为客户端分配地址和配置信息。
|
||||
|
||||
DHCPv6四步交互地址分配过程如下:
|
||||
|
||||
|
||||
|
||||
图:DHCPv6四步交互地址分配过程
|
||||
DHCPv6四步交互地址分配过程如下:
|
||||
|
||||
DHCPv6客户端发送Solicit报文,请求DHCPv6服务器为其分配IPv6地址和网络配置参数。
|
||||
如果Solicit报文中没有携带Rapid Commit选项,或Solicit报文中携带Rapid Commit选项,但服务器不支持快速分配过程,则DHCPv6服务器回复Advertise报文,通知客户端可以为其分配的地址和网络配置参数。
|
||||
如果DHCPv6客户端接收到多个服务器回复的Advertise报文,则根据Advertise报文中的服务器优先级等参数,选择优先级最高的一台服务器,并向所有的服务器发送Request组播报文,该报文中携带已选择的DHCPv6服务器的DUID。
|
||||
DHCPv6服务器回复Reply报文,确认将地址和网络配置参数分配给客户端使用。
|
||||
DHCPv6两步交互
|
||||
|
||||
两步交互常用于网络中只有一个DHCPv6服务器的情况。DHCPv6客户端首先通过组播发送Solicit报文来定位可以为其提供服务的DHCPv6服务器,DHCPv6服务器收到客户端的Solicit报文后,为其分配地址和配置信息,直接回应Reply报文,完成地址申请和分配过程。
|
||||
|
||||
两步交换可以提高DHCPv6过程的效率,但在有多个DHCPv6服务器的网络中,多个DHCPv6服务器都可以为DHCPv6客户端分配IPv6地址,回应Reply报文,但是客户端实际只可能使用其中一个服务器为其分配的IPv6地址和配置信息。为了防止这种情况的发生,管理员可以配置DHCPv6服务器是否支持两步交互地址分配方式。
|
||||
|
||||
DHCPv6服务器端如果配置使能了两步交互,并且客户端报文中也包含Rapid Commit选项,服务器采用两步交互方式为客户端分配地址和配置信息。
|
||||
如果DHCPv6服务器不支持快速分配地址,则采用四步交互方式为客户端分配IPv6地址和其他网络配置参数。
|
||||
DHCPv6两步交互地址分配过程如下图:
|
||||
|
||||
|
||||
|
||||
图:DHCPv6两步交互地址分配过程
|
||||
DHCPv6两步交互地址分配过程如下:
|
||||
|
||||
DHCPv6客户端在发送的Solicit报文中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址和网络配置参数。
|
||||
DHCPv6服务器接收到Solicit报文后,将进行如下处理:
|
||||
如果DHCPv6服务器支持快速分配地址,则直接返回Reply报文,为客户端分配IPv6地址和其他网络配置参数,Replay报文中也携带Rapid Commit选项。
|
||||
如果DHCPv6服务器不支持快速分配过程,则采用四步交互方式为客户端分配IPv6地址/前缀和其他网络配置参数。
|
||||
DHCPv6无状态自动分配:
|
||||
IPv6节点可以通过DHCPv6无状态方式获取配置参数(包括DNS、SIP、SNTP等服务器配置信息,不包括IPv6地址)。
|
||||
|
||||
DHCPv6无状态工作过程如下图所示:
|
||||
|
||||
|
||||
|
||||
图:DHCPv6无状态工作过程
|
||||
DHCPv6无状态工作过程如下:
|
||||
|
||||
DHCPv6客户端以组播方式向DHCPv6服务器发送Information-Request报文,该报文中携带Option Request选项,指定DHCPv6客户端需要从DHCPv6服务器获取的配置参数。
|
||||
DHCPv6服务器收到Information-Request报文后,为DHCPv6客户端分配网络配置参数,并单播发送Reply报文,将网络配置参数返回给DHCPv6客户端。DHCPv6客户端根据收到Reply报文提供的参数完成DHCPv6客户端无状态配置。
|
||||
DHCPv6 PD工作原理:
|
||||
DHCPv6前缀代理DHCPv6 PD(Prefix Delegation)是由Cisco公司提出的一种前缀分配机制,并在RFC3633中得以标准化。在一个层次化的网络拓扑结构中,不同层次的IPv6地址分配一般是手工指定的。手工配置IPv6地址扩展性不好,不利于IPv6地址的统一规划管理。
|
||||
|
||||
通过DHCPv6前缀代理机制,下游网络设备不需要再手工指定用户侧链路的IPv6地址前缀,它只需要向上游网络设备提出前缀分配申请,上游网络设备便可以分配合适的地址前缀给下游设备,下游设备把获得的前缀(一般前缀长度小于64)进一步自动细分成64前缀长度的子网网段,把细分的地址前缀再通过路由通告(RA)至与IPv6主机直连的用户链路上,实现IPv6主机的地址自动配置,完成整个系统层次的地址布局。
|
||||
|
||||
DHCPv6 PD工作过程下图所示:
|
||||
|
||||
|
||||
|
||||
图:DHCPv6 PD工作原理
|
||||
DHCPv6 PD四步交互地址分配过程如下:
|
||||
|
||||
DHCPv6 PD客户端发送Solicit报文,请求DHCPv6 PD服务器为其分配IPv6地址前缀。
|
||||
如果Solicit报文中没有携带Rapid Commit选项,或Solicit报文中携带Rapid Commit选项,但服务器不支持快速分配过程,则DHCPv6服务器回复Advertise报文,通知客户端可以为其分配的IPv6地址前缀。
|
||||
如果DHCPv6客户端接收到多个服务器回复的Advertise报文,则根据Advertise报文中的服务器优先级等参数,选择优先级最高的一台服务器,并向该服务器发送Request报文,请求服务器确认为其分配地址前缀。
|
||||
DHCPv6 PD服务器回复Reply报文,确认将IPv6地址前缀分配给DHCPv6 PD客户端使用。
|
||||
DHCPv6中继工作原理:
|
||||
DHCPv6客户端通过DHCPv6中继转发报文,获取IPv6地址/前缀和其他网络配置参数(例如DNS服务器的IPv6地址等)。
|
||||
|
||||
DHCPv6中继工作过程如下图所示:
|
||||
|
||||
|
||||
|
||||
图:DHCPv6中继工作原理
|
||||
DHCPv6中继工作交互过程如下:
|
||||
|
||||
DHCPv6客户端向所有DHCPv6服务器和DHCPv6中继发送目的地址为FF02::1:2(组播地址)的请求报文。
|
||||
根据DHCPv6中继转发报文有如下两种情况:
|
||||
如果DHCPv6中继和DHCPv6客户端位于同一个链路上,即DHCPv6中继为DHCPv6客户端的第一跳中继,中继转发直接来自客户端的报文,此时DHCPv6中继实质上也是客户端的IPv6网关设备。DHCPv6中继收到客户端的报文后,将其封装在Relay-Forward报文的中继消息选项(Relay Message Option)中,并将Relay-Forward报文发送给DHCPv6服务器或下一跳中继。
|
||||
如果DHCPv6中继和DHCPv6客户端不在同一个链路上,中继收到的报文是来自其他中继的Relay-Forward报文。中继构造一个新的Relay-Forward报文,并将Relay-Forward报文发送给DHCPv6服务器或下一跳中继。
|
||||
DHCPv6服务器从Relay-Forward报文中解析出DHCPv6客户端的请求,为DHCPv6客户端选取IPv6地址和其他配置参数,构造应答消息,将应答消息封装在Relay-Reply报文的中继消息选项中,并将Relay-Reply报文发送给DHCPv6中继。
|
||||
DHCPv6中继从Relay-Reply报文中解析出DHCPv6服务器的应答,转发给DHCPv6客户端。如果DHCPv6客户端接收到多个DHCPv6服务器的应答,则根据报文中的服务器优先级选择一个DHCPv6服务器,后续从该DHCPv6服务器获取IPv6地址和其他网络配置参数。
|
||||
IPv6地址/前缀的分配与更新原则:
|
||||
IPv6地址分配的优先次序:
|
||||
DHCPv6服务器按照如下次序为DHCPv6客户端选择IPv6地址/前缀。
|
||||
|
||||
选择IPv6地址池
|
||||
|
||||
DHCPv6服务器的接口可以绑定IPv6地址池,DHCPv6服务器将选择该IPv6地址池为接口下的DHCPv6客户端分配地址/前缀。对于存在中继的场景,DHCPv6服务器的接口可以不绑定IPv6地址池,而是根据报文中第一个不为0的“link-address”字段(标识DHCPv6客户端所在链路范围),选择与地址池中已配置的网络前缀或IPv6地址前缀属于同一链路范围的地址池。
|
||||
|
||||
选择IPv6地址/前缀
|
||||
|
||||
确定地址池后,DHCPv6服务器将按照下面步骤为DHCPv6客户端分配IPV6地址/前缀:
|
||||
|
||||
如果地址池中为客户端指定了地址/前缀,优先从地址池中选择与客户端DUID匹配的地址/前缀分配给客户端。
|
||||
如果客户端报文中的IA选项携带了有效的地址/前缀,优先从地址池中选择该地址/前缀分配给客户端。如果该地址/前缀在地址池中不可用,则另外分配一个空闲地址/前缀给客户端。如果IPV6前缀长度比指定分配长度大,则按指定分配长度来分配。
|
||||
从地址池中选择空闲地址/前缀分配给客户端,保留地址(例如RFC 2526中定义的任播地址)、冲突地址、已被分配的地址不能再分配给客户端。
|
||||
如果没有合适的IPv6地址/前缀可以分配,则分配失败。
|
||||
DHCPv6地址租约更新:
|
||||
DHCPv6服务器为DHCPv6客户端分配的地址是有租约的,租约由生命期(包括地址的首选生命期和有效生命期构成)和续租时间点(IA的T1、T2)构成。地址有效生命期结束后,DHCPv6客户端不能再使用该地址。在有效生命期到达之前,如果DHCPv6客户端希望继续使用该地址,则需要更新地址租约。
|
||||
|
||||
DHCPv6客户端为了延长其与IA关联的地址的有效生命期和首选生命期,在T1时刻,发送包含IA选项的Renew报文给服务器,其中IA选项中携带需要续租的IA地址选项。如果DHCPv6客户端一直没有收到T1时刻续租报文的回应报文,那么在T2时刻,DHCPv6客户端通过Rebind报文向DHCPv6服务器继续续租地址。
|
||||
|
||||
T1时刻地址租约更新过程如下:
|
||||
|
||||
DHCPv6客户端在T1时刻(推荐值为优先生命期的0.5倍)发送Renew报文进行地址租约更新请求。
|
||||
DHCPv6服务器回应Reply报文。
|
||||
如果DHCPv6客户端可以继续使用该地址,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址租约。
|
||||
如果该地址不可以再分配给该DHCPv6客户端,则DHCPv6服务器回应续约失败的Reply报文,通知DHCPv6客户端不能获得新的租约。
|
||||
T2时刻地址租约更新过程如下:
|
||||
|
||||
DHCPv6客户端在T1时刻发送Renew请求更新租约,但是没有收到DHCPv6服务器的回应报文。
|
||||
|
||||
DHCPv6客户端在T2时刻(推荐值为优先生命期的0.8倍),向所有DHCPv6服务器组播发送Rebind报文请求更新租约。
|
||||
|
||||
DHCPv6服务器回应Reply报文。
|
||||
|
||||
如果DHCPv6客户端可以继续使用该地址,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址/前缀租约。
|
||||
如果该地址不可以再分配给该DHCPv6客户端,则DHCPv6服务器回应续约失败的Reply报文,通知DHCPv6客户端不能获得新的租约。
|
||||
如果DHCPv6客户端没有收到DHCPv6服务器的应答报文,则到达有效生命期后,DHCPv6客户端停止使用该地址。
|
||||
|
||||
IP地址预留:
|
||||
DHCPv6服务器支持预留IPv6地址,即保留部分IPv6地址不参与动态分配。比如预留的IPv6地址可作为DNS服务器的IPv6地址。
|
||||
|
||||
DHCPv6基础配置命令
|
||||
address prefix
|
||||
//IPv6地址池视图下配置网络前缀和生命周期。
|
||||
//infinite:指定生命周期为无穷大。
|
||||
//生命周期默认值为86400,即1天。
|
||||
capwap-ac ipv6-address
|
||||
//在IPv6地址池视图下配置AC的IPv6地址。
|
||||
conflict-address expire-time expire-time
|
||||
//配置IPv6地址池下冲突地址老化时间。
|
||||
//缺省情况下,地址池下的冲突地址老化时间是172800秒,即2天。
|
||||
dhcpv6 client information-request
|
||||
//使能接口以DHCPv6无状态自动分配方式获取网络配置参数
|
||||
//(不包括IPv6地址)的功能。
|
||||
dhcpv6 client pd
|
||||
//配置DHCPv6 PD客户端功能。
|
||||
//hint ipv6-address:指定期望申请的IPv6地址
|
||||
//hint ipv6-prefix/ipv6-prefix-length:
|
||||
// 指定期望申请的IPv6地址前缀和前缀长度。
|
||||
//rapid-commit:指定客户端以两步交互申请IPv6地址前缀。
|
||||
//unicast-option:指定客户端以单播方式申请IPv6地址前缀。
|
||||
//union-mode:指定客户端使用一个报文同时获取IPv6地址和前缀。
|
||||
dhcpv6 duid { ll | llt | duid }
|
||||
//配置DHCPv6设备的唯一标识符DUID。
|
||||
//缺省情况下,设备以ll的方式生成DUID。
|
||||
//ll:指定设备采用链路层地址(即MAC地址)方式生成DUID。
|
||||
//llt:指定设备采用链路层地址(即MAC地址)加时间的方式生成DUID。
|
||||
dhcpv6 client renew
|
||||
//手动更新DHCPv6客户端申请到的IPv6地址/前缀。
|
||||
renew-time-percent rebind-time-percent
|
||||
//配置IPv6地址池的续租时间和重绑定时间占优先生命周期的百分比。
|
||||
//缺省情况下,IPv6地址池的续租时间占优先生命周期的50%
|
||||
//重绑定时间占优先生命周期的80%。
|
||||
dhcpv6 interface-id format { default | user-defined text }
|
||||
//配置DHCPv6报文中Interface-ID选项的格式。
|
||||
dhcpv6 packet-rate
|
||||
//使能DHCPv6报文限速功能,并配置速率抑制值。
|
||||
//缺省情况下,DHCPv6报文限速功能处于未使能状态。
|
||||
dhcpv6 packet-rate drop-alarm enable
|
||||
//使能DHCPv6报文限速丢弃告警功能。
|
||||
dhcpv6 packet-rate drop-alarm threshold 100
|
||||
//配置DHCPv6报文限速丢弃告警阈值.缺省值为100包
|
||||
dhcpv6 pool pool-name
|
||||
//创建IPv6/IPv6 PD地址池或进入IPv6/IPv6 PD地址池视图
|
||||
dhcpv6 relay destination
|
||||
//使能接口的DHCPv6中继代理功能
|
||||
//并配置DHCPv6服务器或下一跳中继代理的IPv6地址。
|
||||
dhcpv6 relay server-select group-name
|
||||
//来配置DHCPv6中继所对应的DHCPv6服务器组。
|
||||
dhcpv6 relay source-interface
|
||||
//配置接口地址作为报文源IPv6地址。
|
||||
dhcpv6 remote-id format
|
||||
//配置DHCPv6报文中Remote-ID选项的格式。
|
||||
dhcpv6 remote-id insert enable
|
||||
//使能在DHCPv6中继报文中插入remote-id选项的功能。
|
||||
dhcpv6 server
|
||||
//使能DHCPv6服务器或DHCPv6 PD服务器功能。
|
||||
dhcpv6-server ipv6-address
|
||||
//配置在DHCPv6服务器组中添加DHCPv6服务器或下一跳中继的成员。
|
||||
dhcpv6 server database
|
||||
//使能DHCPv6数据保存功能。
|
||||
//write-delay :指定DHCPv6数据保存的时间间隔。
|
||||
dhcpv6 server group group-name
|
||||
//创建一个DHCPv6服务器组并进入DHCPv6服务器组视图
|
||||
dns-domain-name
|
||||
//配置DHCPv6服务器为DHCPv6客户端分配的域名后缀。
|
||||
dns-server ipv6-address
|
||||
//配置DNS服务器IPv6地址。
|
||||
excluded-address
|
||||
//配置IPv6地址池中不参与自动分配的IPv6地址范围。
|
||||
information-refresh time
|
||||
//设置无状态DHCPv6方式分配给客户端的配置信息刷新时间。
|
||||
//缺省情况下,IPv6地址池配置信息刷新时间86400秒,即24小时。
|
||||
ipv6 address auto dhcp命
|
||||
//使能接口通过DHCPv6协议自动获取IPv6地址及其他网络配置参数。
|
||||
link-address
|
||||
//在IPv6地址池视图下配置网络前缀。
|
||||
lock
|
||||
//锁定IPv6地址池。
|
||||
nis-domain-name
|
||||
//配置DHCPv6服务器为DHCPv6客户端分配的NIS域名后缀
|
||||
nisp-domain-name
|
||||
//配置DHCPv6服务器为DHCPv6客户端分配的NISP域名后缀。
|
||||
prefix-delegation
|
||||
//配置地址池视图下的代理前缀。
|
||||
static-bind prefix
|
||||
//在DHCPv6地址池下静态绑定地址前缀与DHCPv6 PD客户端。
|
||||
import all
|
||||
//使能设备向DHCPv6客户端动态分配DNS服务器和SNTP服务器配置信息的功能。
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
19
|
||||
20
|
||||
21
|
||||
22
|
||||
23
|
||||
24
|
||||
25
|
||||
26
|
||||
27
|
||||
28
|
||||
29
|
||||
30
|
||||
31
|
||||
32
|
||||
33
|
||||
34
|
||||
35
|
||||
36
|
||||
37
|
||||
38
|
||||
39
|
||||
40
|
||||
41
|
||||
42
|
||||
43
|
||||
44
|
||||
45
|
||||
46
|
||||
47
|
||||
48
|
||||
49
|
||||
50
|
||||
51
|
||||
52
|
||||
53
|
||||
54
|
||||
55
|
||||
56
|
||||
57
|
||||
58
|
||||
59
|
||||
60
|
||||
61
|
||||
62
|
||||
63
|
||||
64
|
||||
65
|
||||
66
|
||||
67
|
||||
68
|
||||
69
|
||||
70
|
||||
71
|
||||
72
|
||||
73
|
||||
74
|
||||
75
|
||||
76
|
||||
77
|
||||
78
|
||||
79
|
||||
80
|
||||
81
|
||||
82
|
||||
83
|
||||
84
|
||||
85
|
||||
86
|
||||
87
|
||||
DHCPv6服务器、中继配置示例
|
||||
实验拓扑:
|
||||
|
||||
|
||||
|
||||
图:DHCPv6实验拓扑
|
||||
实验要求:
|
||||
在AR1为DHCPv6服务器,AR2为DHCP中继。通过配置,为主机分配IPv6地址。
|
||||
|
||||
配置文件:
|
||||
AR1:
|
||||
|
||||
<DHCPv6>dis current-configuration
|
||||
#
|
||||
sysname DHCPv6
|
||||
#
|
||||
ipv6
|
||||
#
|
||||
dhcp enable
|
||||
#
|
||||
dhcpv6 pool pool1
|
||||
address prefix 2000::/64
|
||||
//配置IPv6地址前缀
|
||||
excluded-address 2000::1
|
||||
#
|
||||
interface GigabitEthernet0/0/0
|
||||
ipv6 enable
|
||||
ipv6 address 3000::1/64
|
||||
dhcpv6 server pool1
|
||||
#
|
||||
ipv6 route-static :: 0 3000::2
|
||||
#
|
||||
return
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
19
|
||||
20
|
||||
21
|
||||
AR2:
|
||||
|
||||
<Realy>dis current-configuration
|
||||
#
|
||||
sysname Realy
|
||||
#
|
||||
ipv6
|
||||
#
|
||||
dhcp enable
|
||||
#
|
||||
interface GigabitEthernet0/0/0
|
||||
ipv6 enable
|
||||
ipv6 address 3000::2/64
|
||||
#
|
||||
interface GigabitEthernet0/0/1
|
||||
ipv6 enable
|
||||
ipv6 address 2000::1/64
|
||||
undo ipv6 nd ra halt
|
||||
//使能路由器向主机发送路由通告信息
|
||||
ipv6 nd autoconfig managed-address-flag
|
||||
//使M和O标志位置位。实现主机通过DHCPv6方式获取地址
|
||||
ipv6 nd autoconfig other-flag
|
||||
dhcpv6 relay destination 3000::1
|
||||
//指明DHCP服务器的地址
|
||||
#
|
||||
return
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
19
|
||||
20
|
||||
21
|
||||
22
|
||||
23
|
||||
24
|
||||
|
||||
|
||||
图:DHCPv6服务器地址分配状况
|
||||
88
计算机网络实验/IPv6-ICMPv6.md
Normal file
@@ -0,0 +1,88 @@
|
||||
|
||||
# ICMPv6
|
||||
|
||||
## 1 ICMPv6基本概念
|
||||
ICMPv6(Internet Control Message Protocol for the IPv6)是IPv6的基础协议之一。
|
||||
|
||||
在IPv4中,Internet控制报文协议ICMP(Internet Control Message Protocol)向源节点报告关于向目的地传输IP数据包过程中的错误和信息。它为诊断、信息和管理目的定义了一些消息,如:目的不可达、数据包超长、超时、回应请求和回应应答等。在IPv6中,ICMPv6除了提供ICMPv4常用的功能之外,还是其它一些功能的基础,如邻接点发现、无状态地址配置(包括重复地址检测)、PMTU发现等。
|
||||
|
||||
## 2 ICMPv6报文格式
|
||||
|
||||
ICMPv6的协议类型号(即IPv6报文中的Next Header字段的值)为58。ICMPv6的报文格式下图所示:
|
||||
|
||||

|
||||
|
||||
|字段|字段说明|
|
||||
|-|-|
|
||||
|Type|表明消息的类型,0至127表示差错报文类型,128至255表示消息报文类型。|
|
||||
|Code|表示此消息类型细分的类型。|
|
||||
|Checksum|表示ICMPv6报文的校验和。|
|
||||
|
||||
## 3 ICMPv6报文示例
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
## 4 ICMPv6错误报文
|
||||
|
||||
|
||||
ICMPv6错误报文用于报告在转发IPv6数据包过程中出现的错误。ICMPv6错误报文可以分为以下4种:
|
||||
|
||||
* 目的不可达错误报文
|
||||
|
||||
在IPv6节点转发IPv6报文过程中,当设备发现目的地址不可达时,就会向发送报文的源节点发送ICMPv6目的不可达错误报文,同时报文中会携带引起该错误报文的具体原因。
|
||||
|
||||
目的不可达错误报文的Type字段值为1。根据错误具体原因又可以细分为:
|
||||
|
||||
* Code=0:没有到达目标设备的路由。
|
||||
* Code=1:与目标设备的通信被管理策略禁止。
|
||||
* Code=2:未指定。
|
||||
* Code=3:目的IP地址不可达。
|
||||
* Code=4:目的端口不可达。
|
||||
|
||||
* 数据包过大错误报文
|
||||
|
||||
在IPv6节点转发IPv6报文过程中,发现报文超过出接口的链路MTU时,则向发送报文的源节点发送ICMPv6数据包过大错误报文,其中携带出接口的链路MTU值。数据包过大错误报文是Path MTU发现机制的基础。
|
||||
|
||||
数据包过大错误报文的Type字段值为2,Code字段值为0。
|
||||
|
||||
* 时间超时错误报文
|
||||
|
||||
在IPv6报文收发过程中,当设备收到Hop Limit字段值等于0的数据包,或者当设备将Hop Limit字段值减为0时,会向发送报文的源节点发送ICMPv6超时错误报文。对于分段重组报文的操作,如果超过定时时间,也会产生一个ICMPv6超时报文。
|
||||
|
||||
时间超时错误报文的Type字段值为3,根据错误具体原因又可以细分为:
|
||||
|
||||
* Code=0:在传输中超越了跳数限制。
|
||||
* Code=1:分片重组超时。
|
||||
|
||||
* 参数错误报文
|
||||
|
||||
当目的节点收到一个IPv6报文时,会对报文进行有效性检查,如果发现问题会向报文的源节点回应一个ICMPv6参数错误差错报文。
|
||||
|
||||
参数错误报文的Type字段值为4,根据错误具体原因又可以细分为:
|
||||
|
||||
* Code=0:IPv6基本头或扩展头的某个字段有错误。
|
||||
* Code=1:IPv6基本头或扩展头的NextHeader值不可识别。
|
||||
* Code=2:扩展头中出现未知的选项。
|
||||
|
||||
|
||||
## 5 ICMPv6信息报文
|
||||
|
||||
* 回送请求报文:回送请求报文用于发送到目标节点,以使目标节点立即发回一个回送应答报文。回送请求报文的Type字段值为128,Code字段的值为0。
|
||||
* 回送应答报文:当收到一个回送请求报文时,ICMPv6会用回送应答报文响应。回送应答报文的Type字段的值为129,Code字段的值为0。
|
||||
|
||||
* 邻居发现ND:
|
||||
|
||||
Type=133 路由器请求 RS(Router Solicitation)
|
||||
Type=134 路由器公告 RA(Router Advertisement)
|
||||
Type=135 邻居请求 NS(Neighbor Solicitation)
|
||||
Type=136 邻居通告 NA(Neighbor Advertisement)
|
||||
Type=137 重定向(Redirect)
|
||||
|
||||
|
||||
* 多播侦听发现协议MLD:
|
||||
|
||||
Type=130 多播听众查询
|
||||
Type-131 多播听众报告
|
||||
Type=132 多播听众退出
|
||||
177
计算机网络实验/IPv6-NS.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# 邻居发现协议NDP
|
||||
|
||||
> 参考文献
|
||||
> * [邻居发现协议](https://blog.csdn.net/qq_38265137/article/details/80466128)
|
||||
|
||||
## 1 NDP简介
|
||||
邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器发现(Router Discovery),它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。
|
||||
|
||||
## 2 地址解析
|
||||
在IPv4中,当主机需要和目标主机通信时,必须先通过ARP协议获得目的主机的链路层地址。在IPv6中,同样需要从IP地址解析到链路层地址的功能。邻居发现协议实现了这个功能。
|
||||
|
||||
ARP报文是直接封装在以太网报文中,以太网协议类型为0x0806,普遍观点认为ARP定位为第2.5层的协议。ND本身基于ICMPv6实现,以太网协议类型为0x86DD,即IPv6报文,IPv6下一个报头字段值为58,表示ICMPv6报文,由于ND协议使用的所有报文均封装在ICMPv6报文中,一般来说,ND被看作第3层的协议。在三层完成地址解析,主要带来以下几个好处:
|
||||
|
||||
* 地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议。
|
||||
* 可以使用三层的安全机制避免地址解析攻击。
|
||||
* 使用组播方式发送请求报文,减少了二层网络的性能压力。
|
||||
|
||||
地址解析过程中使用了两种ICMPv6报文:邻居请求报文NS(Neighbor Solicitation)和邻居通告报文NA(Neighbor
|
||||
Advertisement)。
|
||||
|
||||
* NS报文:Type字段值为135,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP请求报文。
|
||||
* NA报文:Type字段值为136,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP应答报文。
|
||||
|
||||
### IPv6地址解析过程
|
||||
|
||||
|
||||

|
||||
|
||||
1. Host A在向Host B发送报文之前它必须要解析出Host B的链路层地址,所以首先Host A会发送一个NS报文,其中源地址为Host A的IPv6地址,目的地址为Host B的被请求节点组播地址,需要解析的目标IP为Host B的IPv6地址,这就表示Host A想要知道Host B的链路层地址。同时需要指出的是,在NS报文的Options字段中还携带了Host A的链路层地址。
|
||||
2. 当Host B接收到了NS报文之后,就会回应NA报文,其中源地址为Host B的IPv6地址,目的地址为Host A的IPv6地址(使用NS报文中的Host A的链路层地址进行单播),Host B的链路层地址被放在Options字段中。这样就完成了一个地址解析的过程。
|
||||
|
||||
|
||||
### 邻居通告报文中Flags字段解释:
|
||||
|
||||
* R:路由器标记。当置1时,R位指出发送者是路由器。R位由Neighbor Unreachability Detection使用,用于检测改变为主机的路由器。
|
||||
* S:请求标记。当置1时,S位指出通告被发送以响应来自目的地地址的Neighbor Solicitation。S位用作Neighbor Unreachability Detection的可达性确认。在多播通告和非请求单播通告中置0。
|
||||
* O:替代标记。替代标志,1表示通告中的信息替代缓存,如更新链路层地址时,对于任播的回应则不应置位。在针对任播地址的请求通告中,以及在请求的前缀通告中它不能被置1。在其他请求通告中和在非请求通告中它应当被置1。
|
||||
* Target Address:对于请求的通告,是在Neighbor Solicitation消息(该消息催促这个通告)中的Target Address字段。对于非请求通告,是其链路层地址已经改变的地址。Target Address必须不是多播地址。
|
||||
|
||||
|
||||
## 2 跟踪邻居状态
|
||||
通过邻居或到达邻居的通信,会因各种原因而中断,包括硬件故障、接口卡的热插入等。如果目的地失效,则恢复是不可能的,通信失败;如果路径失效,则恢复是可能的。因此节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。
|
||||
|
||||
RFC2461中定义了5种邻居状态,分别是:
|
||||
|
||||
1. 未完成(Incomplete)
|
||||
2. 可达(Reachable)
|
||||
3. 陈旧(Stale)
|
||||
4. 延迟(Delay)
|
||||
5. 探查(Probe)
|
||||
|
||||
邻居状态的具体迁移过程如下图所示:
|
||||
|
||||

|
||||
|
||||
|
||||
下面以A、B两个邻居节点之间相互通信过程中A节点的邻居状态变化为例(假设A、B之前从未通信),说明邻居状态迁移的过程。
|
||||
|
||||
1. A先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete。
|
||||
2. 若B回复NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty,即删除表项。
|
||||
3. 经过邻居可达时间,邻居状态由Reachable(默认30s)变为Stale,即未知是否可达。
|
||||
4. 如果在Reachable状态,A收到B的非请求NA报文(MAC地址修改),且报文中携带的B的链路层地址和表项中不同,则邻居状态马上变为Stale。
|
||||
5. 在Stale状态若A要向B发送数据,则邻居状态由Stale变为Delay,并发送NS请求。
|
||||
6. 在经过一段固定时间后,邻居状态由Delay(默认5s)变为Probe(每隔1s发送一次NS报文,连续发送3次),其间若有NA应答,则邻居状态由Delay变为Reachable。
|
||||
7. 在Probe状态,A每隔一定时间间隔z(1s)发送单播NS,发送固定次数(3)后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty,即删除表项。
|
||||
|
||||
|
||||
|
||||
## 3 重复地址检测
|
||||
### 重复地址检测说明
|
||||
|
||||
重复地址检测DAD(Duplicate Address Detect)是在接口使用某个IPv6单播地址之前进行的,主要是为了探测是否有其它的节点使用了该地址。尤其是在地址自动配置的时候,进行DAD检测是很必要的。一个IPv6单播地址在分配给一个接口之后且通过重复地址检测之前称为试验地址(Tentative Address)。此时该接口不能使用这个试验地址进行单播通信,但是仍然会加入两个组播组:ALL-NODES组播组和试验地址所对应的Solicited-Node组播组。
|
||||
|
||||
IPv6重复地址检测技术和IPv4中的免费ARP类似:节点向试验地址所对应的Solicited-Node组播组发送NS报文。NS报文中目标地址即为该试验地址。如果收到某个其他站点回应的NA报文,就证明该地址已被网络上使用,节点将不能使用该试验地址通讯。
|
||||
|
||||
### 重复地址检测原理
|
||||
|
||||

|
||||
|
||||
Host A的IPv6地址FC00::1为新配置地址,即FC00::1为Host A的试验地址。Host A向FC00::1的Solicited-Node组播组发送一个以FC00::1为请求的目标地址的NS报文进行重复地址检测,由于FC00::1并未正式指定,所以NS报文的源地址为未指定地址。当Host B收到该NS报文后,有两种处理方法:
|
||||
|
||||
1. 如果Host B发现FC00::1是自身的一个试验地址,则Host B放弃使用这个地址作为接口地址,并且不会发送NA报文。
|
||||
2. 如果Host B发现FC00::1是一个已经正常使用的地址,Host B会向FF02::1发送一个NA报文,该消息中会包含FC00::1。这样,Host A收到这个消息后就会发现自身的试验地址是重复的。Host A上该试验地址不生效,被标识为duplicated状态。
|
||||
|
||||
|
||||
当两端同时检测时情况如下:
|
||||
|
||||

|
||||
|
||||
|
||||
* 若2个节点配置相同地址,同时作重复地址检测时,该地址处于Tentative状态,当一方收到对方发出的DAD NS,则接收方将不启用该地址
|
||||
* 一种极端的情况,如果同时收到NS报文,则两端都放弃改地址
|
||||
|
||||
|
||||
### IPv6地址生命周期
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
在preferred time和valid lifetime之间叫做deprecated(弃用)状态,当地址达到这个时间段的时候,地址不能主动的发起连接只能是被动的接受连接,过了valid lifetime时间,地址就变为invalid,这时任何连接就会down掉。
|
||||
|
||||
|
||||
## 4 路由器发现
|
||||
路由器发现功能用来发现与本地链路相连的设备,并获取与地址自动配置相关的前缀和其他配置参数。
|
||||
|
||||
在IPv6中,IPv6地址可以支持无状态的自动配置,即主机通过某种机制获取网络前缀信息,然后主机自己生成地址的接口标识部分。路由器发现功能是IPv6地址自动配置功能的基础,主要通过以下两种报文实现:
|
||||
|
||||
* 路由器通告RA(Router Advertisement)报文:每台设备为了让二层网络上的主机和设备知道自己的存在,定时都会组播发送RA报文,RA报文中会带有网络前缀信息,及其他一些标志位信息。RA报文的Type字段值为134。
|
||||
|
||||

|
||||
|
||||
* 路由器请求RS(Router Solicitation)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送RS报文,网络上的设备将回应RA报文。RS报文的Tpye字段值为133。
|
||||
|
||||

|
||||
|
||||
### RA报文字段说明
|
||||
|
||||
* Cur Hop Limit:默认值应当放置在发出IP分组的IP首部的Hop Count字段中。 取0值意味着未(由该路由器)规定。
|
||||
* M:M位为0表示无状态自动配置生成IPv6地址,如果M=1表示需要通过有状态(DHCPv6)方式获取ipv6地址。
|
||||
* O:O位为0表示除了IPv6地址以外的其他参数需要通过无状态自动配置获取,如果O=1表示除了IPv6地址以外的其它需要通过有状态(DHCPv6)方式进行获取。
|
||||
* Router Lifetime:与默认路由器关联的生存期,以秒为单位。最大值18.2小时。取0值的Lifetime指出路由器不是默认路由器并且不应当出现在默认路由器列表中。Router Lifetime仅适用于作为默认路由器的路由器应用;对包括在其他消息字段或选项中的信息不适用。需要对它们的信息规定时间限制的选项有它们自己的生存期字段。
|
||||
* Reachable time:此时间以毫秒计,在收到可达性确认后节点假定该邻居是可到达的。它由Neighbor Unreachability Detection算法使用。此值为0意味着没有(由此路由器)作出规定。
|
||||
* Retrans Timer:重发的Neighbor Solicitation消息间隔时间,以毫秒计。由地址解析和Neighbor Unreachability Detection算法使用。此值为0意味着没有(由此路由器)作出规定。
|
||||
* ICMP Prefix Option中的flag字段:
|
||||
* aoto-config:如果该位为1表示该前缀可以用于无状态自动配置,如果为0不能用于无状态自动配置。
|
||||
* on-link:指定0-flag标识位。若配置该参数,则只会本地链路内的主机RA报文中的前缀不是分配给本地链路的。主机若想该前缀指定的地址发送报文时,需要经过默认路由器转发。
|
||||
|
||||
### 路由器发现功能
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
RA在华为中的通告时间有两种:
|
||||
|
||||
* min-interval=200s。
|
||||
* max-interval=600s。
|
||||
|
||||
|
||||
### 地址自动配置
|
||||
IPv4使用DHCP实现自动配置,包括IP地址,缺省网关等信息,简化了网络管理。IPv6地址增长为128位,且终端节点多,对于自动配置的要求更为迫切,除保留了DHCP作为有状态自动配置外,还增加了无状态自动配置。无状态自动配置即自动生成链路本地地址,主机根据RA报文的前缀信息,自动配置全球单播地址等,并获得其他相关信息。
|
||||
|
||||
IPv6主机无状态自动配置过程:
|
||||
|
||||
1. 根据接口标识产生链路本地地址。
|
||||
2. 发出邻居请求,进行重复地址检测。
|
||||
3. 如地址冲突,则停止自动配置,需要手工配置。
|
||||
4. 如不冲突,链路本地地址生效,节点具备本地链路通信能力。
|
||||
5. 主机会发送RS报文(或接收到设备定期发送的RA报文)。
|
||||
6. 根据RA报文中的前缀信息和接口标识得到IPv6地址。
|
||||
|
||||
### 默认路由器优先级和路由信息发现
|
||||
|
||||
当主机所在的链路中存在多个设备时,主机需要根据报文的目的地址选择转发设备。在这种情况下,设备通过发布默认路由优先级和特定路由信息给主机,提高主机根据不同的目的地选择合适的转发设备的能力。
|
||||
|
||||
在RA报文中,定义了默认路由优先级和路由信息两个字段,帮助主机在发送报文时选择合适的转发设备。
|
||||
|
||||
主机收到包含路由信息的RA报文后,会更新自己的路由表。当主机向其他设备发送报文时,通过查询该列表的路由信息,选择合适的路由发送报文。
|
||||
|
||||
主机收到包含默认设备优先级信息的RA报文后,会更新自己的默认路由列表。当主机向其他设备发送报文时,如果没有路由可选,则首先查询该列表,然后选择本链路内优先级最高的设备发送报文;如果该设备故障,主机根据优先级从高到低的顺序,依次选择其他设备。
|
||||
|
||||
## 5 重定向
|
||||
当网关设备发现报文从其它网关设备转发更好,它就会发送重定向报文告知报文的发送者,让报文发送者选择另一个网关设备。重定向报文也承载在ICMPv6报文中,其Type字段值为137,报文中会携带更好的路径下一跳地址和需要重定向转发的报文的目的地址等信息。
|
||||
|
||||
|
||||

|
||||
|
||||
Host A需要和Host B通信,Host A的默认网关设备是Router A,当Host A发送报文给Host B时报文会被送到Router A。Router A接收到Host A发送的报文以后会发现实际上Host A直接发送给Router B更好,它将发送一个重定向报文给主机A,其中报文中更好的路径下一跳地址为Router B,Destination Address为Host B。Host A接收到了重定向报文之后,会在默认路由表中添加一个主机路由,以后发往Host B的报文就直接发送给Router B。
|
||||
|
||||
当设备收到一个报文后,只有在如下情况下,设备会向报文发送者发送重定向报文:
|
||||
|
||||
* 报文的目的地址不是一个组播地址。
|
||||
* 报文并非通过路由转发给设备。
|
||||
* 经过路由计算后,路由的下一跳出接口是接收报文的接口。
|
||||
* 设备发现报文的最佳下一跳IP地址和报文的源IP地址处于同一网段。
|
||||
* 设备检查报文的源地址,发现自身的邻居表项中有用该地址作为全球单播地址或链路本地地址的邻居存在。
|
||||
0
计算机网络实验/IPv6-OSPFv3.md
Normal file
272
计算机网络实验/IPv6.md
Normal file
@@ -0,0 +1,272 @@
|
||||
# IPv6
|
||||
|
||||
> 参考文献
|
||||
> * [IPv6基础笔记](https://blog.csdn.net/qq_38265137/article/details/80439611)
|
||||
|
||||
## 1 IPv6简介
|
||||
IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation)。它是Internet工程任务组IETF(Internet Engineering Task Force)设计的一套规范,是IPv4(Internet Protocol Version 4)的升级版本。
|
||||
|
||||
### 目的
|
||||
|
||||
IPv4协议是目前广泛部署的因特网协议。在因特网发展初期,IPv4以其协议简单、易于实现、互操作性好的优势而得到快速发展。但随着因特网的迅猛发展,IPv4设计的不足也日益明显,IPv6的出现,解决了IPv4的一些弊端。相比IPv4,IPv6具有如下优势:
|
||||
|
||||
|
||||
|问题 |IPv4的缺陷| IPv6的优势|
|
||||
|-|-|-|
|
||||
|地址空间 |IPv4地址采用32比特标识,理论上能够提供的地址数量是43亿(由于地址分配的原因,实际可使用的数量不到43亿)。另外,IPv4地址的分配也很不均衡:美国占全球地址空间的一半左右,而欧洲则相对匮乏;亚太地区则更加匮乏。与此同时,移动IP和宽带技术的发展需要更多的IP地址。目前IPv4地址已经消耗殆尽。针对IPv4的地址短缺问题,也曾先后出现过几种解决方案。比较有代表性的是无类别域间路由CIDR(Classless Inter-Domain Routing)和网络地址转换NAT(Network Address Translator)。但是CIDR和NAT都有各自的弊端和不能解决的问题,由此推动了IPv6的发展。 |IPv6地址采用128比特标识。128位的地址结构使IPv6理论上可以拥有(43亿×43亿×43亿×43亿)个地址。近乎无限的地址空间是IPv6的最大优势。|
|
||||
|报文格式 |IPv4报头包含可选字段Options,内容涉及Security、Timestamp、Record route等,这些Options可以将IPv4报头长度从20字节扩充到60字节。携带这些Options的IPv4报文在转发过程中往往需要中间路由转发设备进行软件处理,对于性能是个很大的消耗,因此实际中也很少使用。 |IPv6和IPv4相比,去除了IHL、Identifier、Flag、Fragment Offset、Header Checksum、 Option、Padding域,只增加了流标签域,因此IPv6报文头的处理较IPv4更为简化,提高了处理效率。另外,IPv6为了更好支持各种选项处理,提出了扩展头的概念,新增选项时不必修改现有结构,理论上可以无限扩展,体现了优异的灵活性。|
|
||||
|自动配置和重新编址 |由于IPv4地址只有32比特,并且地址分配不均衡,导致在网络扩容或重新部署时,经常需要重新分配IP地址,因此需要能够进行自动配置和重新编址,以减少维护工作量。目前IPv4的自动配置和重新编址机制主要依靠DHCP协议。 |IPv6协议内置支持通过地址自动配置方式使主机自动发现网络并获取IPv6地址,大大提高了内部网络的可管理性。|
|
||||
|路由聚合 |由于IPv4发展初期的分配规划问题,造成许多IPv4地址分配不连续,不能有效聚合路由。日益庞大的路由表耗用大量内存,对设备成本和转发效率产生影响,这一问题促使设备制造商不断升级其产品,以提高路由寻址和转发性能。 |巨大的地址空间使得IPv6可以方便的进行层次化网络部署。层次化的网络结构可以方便的进行路由聚合,提高了路由转发效率。|
|
||||
|对端到端的安全的支持 |IPv4协议制定时并没有仔细针对安全性进行设计,因此固有的框架结构并不能支持端到端的安全。 |IPv6中,网络层支持IPSec的认证和加密,支持端到端的安全。|
|
||||
|对QoS(Quality of Service)的支持 |随着网络会议、网络电话、网络电视迅速普及与使用,客户要求有更好的QoS来保障这些音视频实时转发。IPv4并没有专门的手段对QoS进行支持。 |IPv6新增了流标记域,提供QoS保证。|
|
||||
|对移动特性的支持 |随着Internet的发展,移动IPv4出现了一些问题,比如:三角路由,源地址过滤等。 |IPv6协议规定必须支持移动特性。和移动IPv4相比,移动IPv6使用邻居发现功能可直接实现外地网络的发现并得到转交地址,而不必使用外地代理。同时,利用路由扩展头和目的地址扩展头移动节点和对等节点之间可以直接通信,解决了移动IPv4的三角路由、源地址过滤问题,移动通信处理效率更高且对应用层透明。|
|
||||
|
||||
|
||||
## 2 IPv6地址
|
||||
|
||||
### IPv6地址的表示方法
|
||||
IPv6地址总长度为128比特,通常分为8组,每组为4个十六进制数的形式,每组十六进制数间用冒号分隔。例如:FC00:0000:130F:0000:0000:09C0:876A:130B,这是IPv6地址的首选格式。
|
||||
|
||||
为了书写方便,IPv6还提供了压缩格式,以上述IPv6地址为例,具体压缩规则为:
|
||||
|
||||
* 每组中的前导“0”都可以省略,所以上述地址可写为:FC00:0:130F:0:0:9C0:876A:130B。
|
||||
* 地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替,所以上述地址又可以进一步简写为:FC00:0:130F::9C0:876A:130B。
|
||||
* 需要注意的是,在一个IPv6地址中只能使用一次双冒号“::”,否则当计算机将压缩后的地址恢复成128位时,无法确定每个“::”代表0的个数。
|
||||
|
||||
|
||||
### IPv6地址的结构:
|
||||
一个IPv6地址可以分为如下两部分:
|
||||
|
||||
* 网络前缀:n比特,相当于IPv4地址中的网络ID
|
||||
* 接口标识:128-n比特,相当于IPv4地址中的主机ID
|
||||
|
||||
对于IPv6单播地址来说,如果地址的前三bit不是000,则接口标识必须为64位;如果地址的前三位是000,则没有此限制。
|
||||
|
||||
接口标识可通过三种方法生成:手工配置、系统通过软件自动生成或IEEE EUI-64规范生成。其中,EUI-64规范自动生成最为常用。
|
||||
|
||||
IEEE EUI-64规范是将接口的MAC地址转换为IPv6接口标识的过程。如下图所示,MAC地址的前24位(用c表示的部分)为公司标识,后24位(用m表示的部分)为扩展标识符。从高位数,第7位是0表示了MAC地址本地唯一。转换的第一步将FFFE插入MAC地址的公司标识和扩展标识符之间,第二步将从高位数,第7位的0改为1表示此接口标识全球唯一。
|
||||
|
||||

|
||||
|
||||
例如:MAC地址:000E-0C82-C4D4;转换后020E:0CFF:FE82:C4D4。
|
||||
|
||||
这种由MAC地址产生IPv6地址接口标识的方法可以减少配置的工作量,尤其是当采用无状态地址自动配置时,只需要获取一个IPv6前缀就可以与接口标识形成IPv6地址。但是使用这种方式最大的缺点是任何人都可以通过二层MAC地址推算出三层IPv6地址。
|
||||
|
||||
### IPv6的地址分类
|
||||
IPv6地址分为单播地址、任播地址(Anycast Address)、组播地址三种类型。和IPv4相比,取消了广播地址类型,以更丰富的组播地址代替,同时增加了任播地址类型。
|
||||
|
||||
### IPv6单播地址:
|
||||
IPv6单播地址标识了一个接口,由于每个接口属于一个节点,因此每个节点的任何接口上的单播地址都可以标识这个节点。发往单播地址的报文,由此地址标识的接口接收。
|
||||
|
||||
IPv6定义了多种单播地址,目前常用的单播地址有:未指定地址、环回地址、全球单播地址、链路本地地址、唯一本地地址ULA(Unique Local Address)。
|
||||
|
||||
* 未指定地址
|
||||
|
||||
IPv6中的未指定地址即 0:0:0:0:0:0:0:0/128 或者::/128。该地址可以表示某个接口或者节点还没有IP地址,可以作为某些报文的源IP地址(例如在NS报文的重复地址检测中会出现)。源IP地址是::的报文不会被路由设备转发。
|
||||
|
||||
* 环回地址
|
||||
|
||||
IPv6中的环回地址即 0:0:0:0:0:0:0:1/128 或者::1/128。环回与IPv4中的127.0.0.1作用相同,主要用于设备给自己发送报文。该地址通常用来作为一个虚接口的地址(如Loopback接口)。实际发送的数据包中不能使用环回地址作为源IP地址或者目的IP地址。
|
||||
|
||||
* 全球单播地址
|
||||
|
||||
全球单播地址是带有全球单播前缀的IPv6地址,其作用类似于IPv4中的公网地址。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量。
|
||||
|
||||
全球单播地址由全球路由前缀(Global routing prefix)、子网ID(Subnet ID)和接口标识(Interface ID)组成,其格式如下如所示:
|
||||
|
||||

|
||||
|
||||
Global routing prefix:全球路由前缀。由提供商(Provider)指定给一个组织机构,通常全球路由前缀至少为48位。目前已经分配的全球路由前缀的前3bit均为001。
|
||||
|
||||
Subnet ID:子网ID。组织机构可以用子网ID来构建本地网络(Site)。子网ID通常最多分配到第64位。子网ID和IPv4中的子网号作用相似。
|
||||
|
||||
Interface ID:接口标识。用来标识一个设备(Host)。
|
||||
|
||||
* 链路本地地址
|
||||
|
||||
链路本地地址是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。它使用了特定的本地链路前缀FE80::/10(最高10位值为1111111010),同时将接口标识添加在后面作为地址的低64比特。
|
||||
|
||||
当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址(其固定的前缀+EUI-64规则形成的接口标识)。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。所以链路本地地址广泛应用于邻居发现,无状态地址配置等应用。
|
||||
|
||||
以链路本地地址为源地址或目的地址的IPv6报文不会被路由设备转发到其他链路。链路本地地址的格式如下如所示:
|
||||
|
||||

|
||||
|
||||
* 唯一本地地址
|
||||
|
||||
唯一本地地址是另一种应用范围受限的地址,它仅能在一个站点内使用。由于本地站点地址的废除(RFC3879),唯一本地地址被用来代替本地站点地址。
|
||||
|
||||
唯一本地地址的作用类似于IPv4中的私网地址,任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址。唯一本地地址只能在本地网络内部被路由转发而不会在全球网络中被路由转发。唯一本地地址格式如下如所示:
|
||||
|
||||

|
||||
|
||||
|字段|含义|
|
||||
|-|-|
|
||||
|Prefix|前缀;固定为FC00::/7。|
|
||||
|L|L标志位;值为1代表该地址为在本地网络范围内使用的地址;值为0被保留,用于以后扩展。|
|
||||
|Global ID|全球唯一前缀;通过伪随机方式产生。|
|
||||
|Subnet ID|子网ID;划分子网使用。|
|
||||
|Interface ID|接口标识。|
|
||||
|
||||
唯一本地地址具有如下特点:
|
||||
|
||||
* 具有全球唯一的前缀(虽然随机方式产生,但是冲突概率很低)。
|
||||
* 可以进行网络之间的私有连接,而不必担心地址冲突等问题。
|
||||
* 具有知名前缀(FC00::/7),方便边缘设备进行路由过滤。
|
||||
* 如果出现路由泄漏,该地址不会和其他地址冲突,不会造成Internet路由冲突。
|
||||
* 应用中,上层应用程序将这些地址看作全球单播地址对待。
|
||||
* 独立于互联网服务提供商ISP(Internet Service Provider)。
|
||||
|
||||
### IPv6组播地址
|
||||
|
||||
IPv6的组播与IPv4相同,用来标识一组接口,一般这些接口属于不同的节点。一个节点可能属于0到多个组播组。发往组播地址的报文被组播地址标识的所有接口接收。例如组播地址FF02::1表示链路本地范围的所有节点,组播地址FF02::2表示链路本地范围的所有路由器。
|
||||
|
||||
一个IPv6组播地址由前缀,标志(Flag)字段、范围(Scope)字段以及组播组ID(Global ID)4个部分组成:
|
||||
|
||||
* 前缀:IPv6组播地址的前缀是FF00::/8。
|
||||
* 标志字段(Flag):长度4bit,目前只使用了最后一个比特(前三位必须置0),当该位值为0时,表示当前的组播地址是由IANA所分配的一个* 永久分配地址;当该值为1时,表示当前的组播地址是一个临时组播地址(非永久分配地址)。
|
||||
* 范围字段(Scope):长度4bit,用来限制组播数据流在网络中发送的范围。
|
||||
* 组播组ID(Group ID):长度112bit,用以标识组播组。目前,RFC2373并没有将所有的112位都定义成组标识,而是建议仅使用该112位的最低32位作为组播组ID,将剩余的80位都置0。这样每个组播组ID都映射到一个唯一的以太网组播MAC地址(RFC2464)。
|
||||
* IPv6组播地址格式如下图:
|
||||
|
||||

|
||||
|
||||
**被请求节点组播地址**:
|
||||
|
||||
被请求节点组播地址通过节点的单播或任播地址生成。当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。一个单播地址或任播地址对应一个被请求节点组播地址。该地址主要用于邻居发现机制和地址重复检测功能。
|
||||
|
||||
IPv6中没有广播地址,也不使用ARP。但是仍然需要从IP地址解析到MAC地址的功能。在IPv6中,这个功能通过邻居请求NS(Neighbor Solicitation)报文完成。当一个节点需要解析某个IPv6地址对应的MAC地址时,会发送NS报文,该报文的目的IP就是需要解析的IPv6地址对应的被请求节点组播地址;只有具有该组播地址的节点会检查处理。
|
||||
|
||||
被请求节点组播地址由前缀FF02::1:FF00:0/104和单播地址的最后24位组成。
|
||||
|
||||
### IPv6任播地址
|
||||
任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。
|
||||
|
||||
任播地址设计用来在给多个主机或者节点提供相同服务时提供冗余功能和负载分担功能。目前,任播地址的使用通过共享单播地址方式来完成。将一个单播地址分配给多个节点或者主机,这样在网络中如果存在多条该地址路由,当发送者发送以任播地址为目的IP的数据报文时,发送者无法控制哪台设备能够收到,这取决于整个网络中路由协议计算的结果。这种方式可以适用于一些无状态的应用,例如DNS等。
|
||||
|
||||
IPv6中没有为任播规定单独的地址空间,任播地址和单播地址使用相同的地址空间。目前IPv6中任播主要应用于移动IPv6。
|
||||
|
||||
注:IPv6任播地址仅可以被分配给路由设备,不能应用于主机。任播地址不能作为IPv6报文的源地址。
|
||||
|
||||
* 子网路由器任播地址
|
||||
|
||||
子网路由器任播地址是已经定义好的一种任播地址(RFC3513)。发送到子网路由器任播地址的报文会被发送到该地址标识的子网中路由意义上最近的一个设备。所有设备都必须支持子网任播地址。子网路由器任播地址用于节点需要和远端子网上所有设备中的一个(不关心具体是哪一个)通信时使用。例如,一个移动节点需要和它的“家乡”子网上的所有移动代理中的一个进行通信。
|
||||
|
||||
子网路由器任播地址由n bit子网前缀标识子网,其余用0填充。格式如下如所示:
|
||||
|
||||

|
||||
|
||||
## 3 IPv6报文格式
|
||||
IPv6报文由IPv6基本报头、IPv6扩展报头以及上层协议数据单元三部分组成。
|
||||
|
||||
上层协议数据单元一般由上层协议报头和它的有效载荷构成,有效载荷可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。
|
||||
|
||||
### IPv6基本报头
|
||||
|
||||

|
||||
|
||||
IPv6报头格式中主要字段解释如下:
|
||||
|
||||
|字段|说明|
|
||||
|-|-|
|
||||
|Version|版本号,长度为4bit。对于IPv6,该值为6。|
|
||||
|Traffic Class|流类别,长度为8bit。等同于IPv4中的TOS字段,表示IPv6数据报的类或优先级,主要应用于QoS。|
|
||||
|Flow Label|流标签,长度为20bit。IPv6中的新增字段,用于区分实时流量,不同的流标签+源地址可以唯一确定一条数据流,中间网络设备可以根据这些信息更加高效率的区分数据流。|
|
||||
|Payload Length|有效载荷长度,长度为16bit。有效载荷是指紧跟IPv6报头的数据报的其它部分(即扩展报头和上层协议数据单元)。该字段只能表示最大长度为65535字节的有效载荷。如果有效载荷的长度超过这个值,该字段会置0,而有效载荷的长度用逐跳选项扩展报头中的超大有效载荷选项来表示。|
|
||||
|Next Header|下一个报头,长度为8bit。该字段定义紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型,或者上层协议数据单元中的协议类型。|
|
||||
|Hop Limit|跳数限制,长度为8bit。该字段类似于IPv4中的Time to Live字段,它定义了IP数据报所能经过的最大跳数。每经过一个设备,该数值减去1,当该字段的值为0时,数据报将被丢弃。|
|
||||
|Source Address|源地址,长度为128bit。表示发送方的地址。|
|
||||
|Destination Address|目的地址,长度为128bit。表示接收方的地址。|
|
||||
|
||||
|
||||
IPv6和IPv4相比,去除了IHL、identifiers、Flags、Fragment Offset、Header Checksum、 Options、Paddiing域,只增了流标签域,因此IPv6报文头的处理较IPv4大大简化,提高了处理效率。另外,IPv6为了更好支持各种选项处理,提出了扩展头的概念,新增选项时不必修改现有结构就能做到,理论上可以无限扩展,体现了优异的灵活性。下面为读者介绍IPv6扩展报头的一些信息。
|
||||
|
||||
### IPv6报文示例
|
||||
|
||||
|
||||

|
||||
|
||||
### IPv6扩展头部
|
||||
在IPv4中,IPv4报头包含可选字段Options,内容涉及security、Timestamp、Record route等,这些Options可以将IPv4报头长度从20字节扩充到60字节。在转发过程中,处理携带这些Options的IPv4报文会占用设备很大的资源,因此实际中也很少使用。
|
||||
|
||||
IPv6将这些Options从IPv6基本报头中剥离,放到了扩展报头中,扩展报头被置于IPv6报头和上层协议数据单元之间。一个IPv6报文可以包含0个、1个或多个扩展报头,仅当需要设备或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展头。与IPv4不同,IPv6扩展头长度任意,不受40字节限制,这样便于日后扩充新增选项,这一特征加上选项的处理方式使得IPv6选项能得以真正的利用。但是为了提高处理选项头和传输层协议的性能,扩展报头总是8字节长度的整数倍。
|
||||
|
||||
当使用多个扩展报头时,前面报头的Next Header字段指明下一个扩展报头的类型,这样就形成了链状的报头列表。如下图所示,IPv6基本报头中的Next Header字段指明了第一个扩展报头的类型,而第一个扩展报头中的Next Header字段指明了下一个扩展报头的类型(如果不存在,则指明上层协议的类型)。
|
||||
|
||||

|
||||
|
||||
|字段|说明|
|
||||
|-|-|
|
||||
|Next Header|下一个报头,长度为8bit。与基本报头的Next Header的作用相同。指明下一个扩展报头(如果存在)或上层协议的类型。|
|
||||
|Extension Header Len|报头扩展长度,长度为8bit。表示扩展报头的长度(不包含Next Header字段)。|
|
||||
|Extension Head Data|扩展报头数据,长度可变。扩展报头的内容,为一系列选项字段和填充字段的组合。|
|
||||
|
||||
目前,RFC 2460中定义了6个IPv6扩展头:逐跳选项报头、目的选项报头、路由报头、分段报头、认证报头、封装安全净载报头.
|
||||
|
||||
* 逐跳选项报头
|
||||
|
||||
(代表该报头的Next Header字段值=0)
|
||||
|
||||
该选项主要用于为在传送路径上的每跳转发指定发送参数,传送路径上的每台中间节点都要读取并处理该字段。逐跳选项报头目前的主要应用有以下三种:
|
||||
|
||||
用于巨型载荷(载荷长度超过65535字节)。
|
||||
用于设备提示,使设备检查该选项的信息,而不是简单的转发出去。
|
||||
用于资源预留(RSVP)。
|
||||
目的选项报头:
|
||||
|
||||
(代表该报头的Next Header字段值=60)
|
||||
|
||||
目的选项报头携带了一些只有目的节点才会处理的信息。目前,目的选项报文头主要应用于移动IPv6。
|
||||
|
||||
* 路由报头:
|
||||
|
||||
(代表该报头的Next Header字段值=43)
|
||||
|
||||
路由报头和IPv4的Loose Source and Record Route选项类似,该报头能够被IPv6源节点用来强制数据包经过特定的设备。
|
||||
|
||||
* 分段报头:
|
||||
|
||||
(代表该报头的Next Header字段值=44)
|
||||
|
||||
同IPv4一样,IPv6报文发送也受到MTU的限制。当报文长度超过MTU时就需要将报文分段发送,而在IPv6中,分段发送使用的是分段报头。
|
||||
|
||||
* 认证报头:
|
||||
|
||||
(代表该报头的Next Header字段值=51)
|
||||
|
||||
该报头由IPsec使用,提供认证、数据完整性以及重放保护。它还对IPv6基本报头中的一些字段进行保护。
|
||||
|
||||
* 封装安全净载报头:
|
||||
|
||||
(代表该报头的Next Header字段值=50)
|
||||
|
||||
该报头由IPsec使用,提供认证、数据完整性以及重放保护和IPv6数据报的保密,类似于认证报头。
|
||||
|
||||
### IPv6扩展报头规约
|
||||
当超过一种扩展报头被用在同一个分组里时,报头必须按照下列顺序出现:
|
||||
|
||||
1. IPv6基本报头
|
||||
2. 逐跳选项扩展报头
|
||||
3. 目的选项扩展报头
|
||||
4. 路由扩展报头
|
||||
5. 分段扩展报头
|
||||
6. 认证扩展报头
|
||||
7. 封装安全有效载荷扩展报头
|
||||
8. 目的选项扩展报头
|
||||
9. 上层协议数据报文
|
||||
|
||||
路由设备转发时根据基本报头中Next Header值来决定是否要处理扩展头,并不是所有的扩展报头都需要被转发路由设备查看和处理的。
|
||||
|
||||
除了目的选项扩展报头可能出现一次或两次(一次在路由扩展报头之前,另一次在上层协议数据报文之前),其余扩展报头只能出现一次。
|
||||
|
||||
|
||||
## 4 Path MTU
|
||||
在IPv4中,报文如果过大,必须要分片进行发送,所以在每个节点发送报文之前,设备都会根据发送接口的最大传输单元MTU(Maximum Transmission Unit)来对报文进行分片。但是在IPv6中,为了减少中间转发设备的处理压力,中间转发设备不对IPv6报文进行分片,报文的分片将在源节点进行。当中间转发设备的接口收到一个报文后,如果发现报文长度比转发接口的MTU值大,则会将其丢弃;同时将转发接口的MTU值通过ICMPv6报文的“Packet Too Big”消息发给源端主机,源端主机以该值重新发送IPv6报文,这样带来了额外流量开销。PMTU发现协议可以动态发现整条传输路径上各链路的MTU值,减少由于重传带来的额外流量开销。
|
||||
|
||||
PMTU协议是通过ICMPv6的Packet Too Big报文来完成的。首先源节点假设PMTU就是其出接口的MTU,发出一个试探性的报文,当转发路径上存在一个小于当前假设的PMTU时,转发设备就会向源节点发送Packet Too Big报文,并且携带自己的MTU值,此后源节点将PMTU的假设值更改为新收到的MTU值继续发送报文。如此反复,直到报文到达目的地之后,源节点就能知道到达目的地的PMTU了。
|
||||
|
||||

|
||||
|
||||
整条传输路径需要通过4条链路,每条链路的MTU分别是1500、1500、1400、1300,当源节点发送一个分片报文的时候,首先按照PMTU为1500进行分片并发送分片报文,当到达MTU为1400的出接口时,设备返回Packet Too Big错误,同时携带MTU值为1400的信息。源节点接收到之后会将报文重新按照PMTU为1400进行分片并再次发送一个分片报文,当分片报文到达MTU值为1300的出接口时,同样返回Packet Too Big错误,携带MTU值为1300的信息。之后源节点重新按照PMTU为1300进行分片并发送分片报文,最终到达目的地,这样就找到了该路径的PMTU。
|
||||
|
||||
由于IPv6要求链路层所支持的最小MTU为1280,所以PMTU的值必须大于1280。建议您用1500作为链路的PMTU值。
|
||||
489
计算机网络实验/OSPF协议.md
Normal file
@@ -0,0 +1,489 @@
|
||||
# OSPF协议
|
||||
|
||||
> 参考文献
|
||||
> * [OSPF报文类型](https://blog.csdn.net/qq_38265137/article/details/80390729)
|
||||
|
||||
|
||||
- [OSPF协议](#ospf%e5%8d%8f%e8%ae%ae)
|
||||
- [1 OSPF协议概述](#1-ospf%e5%8d%8f%e8%ae%ae%e6%a6%82%e8%bf%b0)
|
||||
- [OSPF原理](#ospf%e5%8e%9f%e7%90%86)
|
||||
- [OSPF特点](#ospf%e7%89%b9%e7%82%b9)
|
||||
- [OSPF优点](#ospf%e4%bc%98%e7%82%b9)
|
||||
- [自制系统和OSPF区域](#%e8%87%aa%e5%88%b6%e7%b3%bb%e7%bb%9f%e5%92%8cospf%e5%8c%ba%e5%9f%9f)
|
||||
- [OSPF路由器逻辑角色](#ospf%e8%b7%af%e7%94%b1%e5%99%a8%e9%80%bb%e8%be%91%e8%a7%92%e8%89%b2)
|
||||
- [OSPF路由器逻辑位置](#ospf%e8%b7%af%e7%94%b1%e5%99%a8%e9%80%bb%e8%be%91%e4%bd%8d%e7%bd%ae)
|
||||
- [邻居和邻接](#%e9%82%bb%e5%b1%85%e5%92%8c%e9%82%bb%e6%8e%a5)
|
||||
- [OSPF更新](#ospf%e6%9b%b4%e6%96%b0)
|
||||
- [OSPF中的表](#ospf%e4%b8%ad%e7%9a%84%e8%a1%a8)
|
||||
- [2 OSPF协议报文交互过程](#2-ospf%e5%8d%8f%e8%ae%ae%e6%8a%a5%e6%96%87%e4%ba%a4%e4%ba%92%e8%bf%87%e7%a8%8b)
|
||||
- [OSPF报文总体结构](#ospf%e6%8a%a5%e6%96%87%e6%80%bb%e4%bd%93%e7%bb%93%e6%9e%84)
|
||||
- [OSPF报文头](#ospf%e6%8a%a5%e6%96%87%e5%a4%b4)
|
||||
- [5种OSPF报文类型-Hello报文](#5%e7%a7%8dospf%e6%8a%a5%e6%96%87%e7%b1%bb%e5%9e%8b-hello%e6%8a%a5%e6%96%87)
|
||||
- [5中OSPF报文类型-DD报文](#5%e4%b8%adospf%e6%8a%a5%e6%96%87%e7%b1%bb%e5%9e%8b-dd%e6%8a%a5%e6%96%87)
|
||||
- [5种OSPF报文类型-LSR报文](#5%e7%a7%8dospf%e6%8a%a5%e6%96%87%e7%b1%bb%e5%9e%8b-lsr%e6%8a%a5%e6%96%87)
|
||||
- [5种OSPF报文类型-LSU报文](#5%e7%a7%8dospf%e6%8a%a5%e6%96%87%e7%b1%bb%e5%9e%8b-lsu%e6%8a%a5%e6%96%87)
|
||||
- [5种OSPF报文类型-LSACK报文](#5%e7%a7%8dospf%e6%8a%a5%e6%96%87%e7%b1%bb%e5%9e%8b-lsack%e6%8a%a5%e6%96%87)
|
||||
- [OSPF可靠传输机制](#ospf%e5%8f%af%e9%9d%a0%e4%bc%a0%e8%be%93%e6%9c%ba%e5%88%b6)
|
||||
- [OSPF邻居状态机](#ospf%e9%82%bb%e5%b1%85%e7%8a%b6%e6%80%81%e6%9c%ba)
|
||||
- [OSPF报文交互过程](#ospf%e6%8a%a5%e6%96%87%e4%ba%a4%e4%ba%92%e8%bf%87%e7%a8%8b)
|
||||
- [3 OSPF协议链路状态描述](#3-ospf%e5%8d%8f%e8%ae%ae%e9%93%be%e8%b7%af%e7%8a%b6%e6%80%81%e6%8f%8f%e8%bf%b0)
|
||||
- [LSA 相同的Header](#lsa-%e7%9b%b8%e5%90%8c%e7%9a%84header)
|
||||
- [五种链路状态通告类型](#%e4%ba%94%e7%a7%8d%e9%93%be%e8%b7%af%e7%8a%b6%e6%80%81%e9%80%9a%e5%91%8a%e7%b1%bb%e5%9e%8b)
|
||||
- [Router-LSA(1类)](#router-lsa1%e7%b1%bb)
|
||||
- [Network- LSA(2类)](#network--lsa2%e7%b1%bb)
|
||||
- [Network Summary-LSA(3类)](#network-summary-lsa3%e7%b1%bb)
|
||||
- [ASBR Summary-LSA(4类)](#asbr-summary-lsa4%e7%b1%bb)
|
||||
- [AS External-LSA(5类)](#as-external-lsa5%e7%b1%bb)
|
||||
- [OSPF协议的4种网络类型](#ospf%e5%8d%8f%e8%ae%ae%e7%9a%844%e7%a7%8d%e7%bd%91%e7%bb%9c%e7%b1%bb%e5%9e%8b)
|
||||
- [OSPF周围4种网络拓扑结构](#ospf%e5%91%a8%e5%9b%b44%e7%a7%8d%e7%bd%91%e7%bb%9c%e6%8b%93%e6%89%91%e7%bb%93%e6%9e%84)
|
||||
- [链路状态描述信息](#%e9%93%be%e8%b7%af%e7%8a%b6%e6%80%81%e6%8f%8f%e8%bf%b0%e4%bf%a1%e6%81%af)
|
||||
- [DR与BDR的选举](#dr%e4%b8%8ebdr%e7%9a%84%e9%80%89%e4%b8%be)
|
||||
- [4 区域划分及LSA种类](#4-%e5%8c%ba%e5%9f%9f%e5%88%92%e5%88%86%e5%8f%8alsa%e7%a7%8d%e7%b1%bb)
|
||||
- [原理](#%e5%8e%9f%e7%90%86)
|
||||
- [路由器类型](#%e8%b7%af%e7%94%b1%e5%99%a8%e7%b1%bb%e5%9e%8b)
|
||||
- [与自治系统外部通信](#%e4%b8%8e%e8%87%aa%e6%b2%bb%e7%b3%bb%e7%bb%9f%e5%a4%96%e9%83%a8%e9%80%9a%e4%bf%a1)
|
||||
- [骨干区域与虚连接](#%e9%aa%a8%e5%b9%b2%e5%8c%ba%e5%9f%9f%e4%b8%8e%e8%99%9a%e8%bf%9e%e6%8e%a5)
|
||||
- [5 OSPF协议路由的计算](#5-ospf%e5%8d%8f%e8%ae%ae%e8%b7%af%e7%94%b1%e7%9a%84%e8%ae%a1%e7%ae%97)
|
||||
- [SPF算法和COST值](#spf%e7%ae%97%e6%b3%95%e5%92%8ccost%e5%80%bc)
|
||||
- [区域内OSPF路由计算过程](#%e5%8c%ba%e5%9f%9f%e5%86%85ospf%e8%b7%af%e7%94%b1%e8%ae%a1%e7%ae%97%e8%bf%87%e7%a8%8b)
|
||||
- [区域间OSPF路由计算过程](#%e5%8c%ba%e5%9f%9f%e9%97%b4ospf%e8%b7%af%e7%94%b1%e8%ae%a1%e7%ae%97%e8%bf%87%e7%a8%8b)
|
||||
- [区域外OSPF路由的计算过程](#%e5%8c%ba%e5%9f%9f%e5%a4%96ospf%e8%b7%af%e7%94%b1%e7%9a%84%e8%ae%a1%e7%ae%97%e8%bf%87%e7%a8%8b)
|
||||
- [路由的类型和优选顺序](#%e8%b7%af%e7%94%b1%e7%9a%84%e7%b1%bb%e5%9e%8b%e5%92%8c%e4%bc%98%e9%80%89%e9%a1%ba%e5%ba%8f)
|
||||
|
||||
|
||||
|
||||
|
||||
## 1 OSPF协议概述
|
||||
|
||||
> 主要介绍了OSPF一些静态的基础知识。
|
||||
|
||||
|
||||
### OSPF原理
|
||||
每一台路由器将其周边的链路状态描述出来,发送给网络中相邻的路由器。经过一段时间的链路状态信息交互,每台路由器都保存了一个链路状态数据库,该数据库是整个网络完整的链路状态描述。然后应用最短路优先算法计算路由。主要是Djskra算法。
|
||||
|
||||
OSPF组播的方式在所有开启OSPF的接口发送Hello包,用来确定是否有OSPF邻居,若发现了,则建立OSPF邻居关系,形成邻居表,之后互相发送LSA(链路状态通告)相互通告路由,形成LSDB(链路状态数据库)。再通过SPF算法,计算最佳路径(cost最小)后放入路由表。
|
||||
|
||||
|
||||
### OSPF特点
|
||||
* OSPF是一种无类别域间路由协议,支持VLSM可变长子网掩码。支持IPV4和IPV6.
|
||||
* 组播地址:224.0.0.5 224.0.0.6。
|
||||
* OSPF度量:从源到目的所有出接口的度量值,和接口带宽反比(10^8/带宽)。
|
||||
* 收敛速度极快,但大型网络配置很复杂。
|
||||
* IP封装,协议号89
|
||||
|
||||
|
||||
### OSPF优点
|
||||
* 适应范围广
|
||||
* 快速收敛
|
||||
* 无自环
|
||||
* 支持验证、组播发送、路由分级、等值路由。
|
||||
|
||||
### 自制系统和OSPF区域
|
||||
自治系统(Autonomy System,AS)由统一机构管理的,使用同一组选路策略的路由器集合。OSPF是自治系统内部的路由选择协议。
|
||||
|
||||
区域(Area)是指一个路由器的集合,相同的区域有着相同的拓扑结构数据库。OSPF用区域把一个AS分成多个链路状态。分为骨干区域和非骨干区域。
|
||||
|
||||
* 骨干区域(区域0):骨干区域必须连接所有的非骨干区域,而且骨干区域不可分割,有且只有一个,一般情况下,骨干区域内没有终端用户。
|
||||
* 非骨干区域(非0区域):非骨干区域一般根据实际情况而划分,必须连接到骨干区域(不规则区域也需通过tunnel或virtual-link连接到骨干区域)。一般情况下,费骨干区域主要连接终端用户和资源。
|
||||
|
||||
### OSPF路由器逻辑角色
|
||||
* DR(Designated Router):指定路由器,OSPF协议启动后开始选举而来
|
||||
* BDR(Back-up Designated Router):备份指定路由器,同样是由OSPF启动后选举而来
|
||||
* DRothers:其他路由器,非DR非BDR的路由器都是DRothers。
|
||||
|
||||
### OSPF路由器逻辑位置
|
||||
|
||||
* 区域内路由器(IAR internal area router):所有端口在同一区域的路由器,维护一个链路状态数据库。
|
||||
|
||||
* 区域边界路由器(ABR area border router):具有连接多区域端口的路由器,一般作为一个区域的出口。ABR为每一个所连接的区域建立链路状态数据库,负责将所连接区域的路由摘要信息发送到主干区域,而主干区域上的ABR则负责将这些信息发送到各个区域。
|
||||
|
||||
|
||||
* 骨干路由器(BBR backbone router):具有连接主干区域端口的路由器。 至少有一个接口属于骨干区域(area = 0)
|
||||
|
||||
* 自治域系统边界路由器(ASBR as boundary router):至少拥有一个连接外部自治域网络(如非OSPF的网络)端口的路由器,负责将非OSPF网络信息传入OSPF网络。
|
||||
|
||||
|
||||
### 邻居和邻接
|
||||
邻居不一定是邻接,邻接一定是邻居,只有交互了LSA的OSPF邻居才成为OSPF的邻接,只交互Hello包的支撑位邻居。
|
||||
|
||||
在点对点网络中,所有邻居都能成为邻接。
|
||||
|
||||
MA(广播多路访问网络,比如以太网)网络类型中,DR,BDR,DRothers三者关系为:DR、BDR与所有的邻居形成邻接,DRothers之间只是邻居而不交换LSA。
|
||||
|
||||
* OSPF发送hello报文(只有一跳)收到报文进行协商建立邻居关系。是一种物理上直接相连的关系,但不一定是逻辑上的邻接关系。
|
||||
* 当双方成功交换链路状态通告信息后才会成为邻接关系。建立了逻辑上的邻接关系。
|
||||
|
||||
### OSPF更新
|
||||
OSPF是一种触发更新的机制。一旦拓扑发生变化便会更新。
|
||||
OSPF也有周期性更新(30分钟一次)
|
||||
|
||||
当收到一条LSA之后:
|
||||
首先查看是否在LSDB中,若没有则假如LSDB,回复LSACK。继续泛洪出去,并且通过SPF算法计算最佳路径并加入路由表。若存在,则比较谁的更“新”(看序号),序号大者新,若本地不如收到的信更新本地LSDB并泛洪,且通过SPF算法计算最佳路径并加入路由表,若比收到的新,则将本地的泛洪出去。
|
||||
|
||||
### OSPF中的表
|
||||
|
||||
* 邻居表:记录了建立邻居关系的路由器
|
||||
* LSDB(链路状态数据库):包含了本路由器上的区域的所有的链路状态信息,并实时同步。
|
||||
* 路由转发表:由LSDB和SPF算法计算得到。
|
||||
|
||||
## 2 OSPF协议报文交互过程
|
||||
|
||||
> 主要介绍了OSPF报文和动态交互过程。面向的对象OSPF协议本身。建立可靠数据连接的过程。
|
||||
|
||||
### OSPF报文总体结构
|
||||

|
||||
|
||||
IP 封装了OSPF报文,LSU(链路状态更新类型的报文)类型的OSPF报文封装了LSA(链路状态通告)报文,LSA报文封装了多个LSA数据。
|
||||
|
||||
更具体的封装格式:
|
||||
IPHeader----OSPFHeader----particularHeader----LSAHeader----LSAData
|
||||
|
||||
### OSPF报文头
|
||||

|
||||
|字段 |长度 |含义|
|
||||
|-|-|-|
|
||||
|Version |1字节 |版本,OSPF的版本号。对于OSPFv2来说,其值为2。|
|
||||
|Type |1字节 |类型,OSPF报文的类型,有下面几种类型:1:Hello报文;2:DD报文;3:LSR报文;4:LSU报文;5:LSAck报文。|
|
||||
Packet length| 2字节| OSPF报文的总长度,包括报文头在内,单位为字节。
|
||||
Router ID |4字节 |发送该报文的路由器标识。
|
||||
Area ID |4字节 |发送该报文的所属区域。
|
||||
Checksum| 2字节| 校验和,包含除了认证字段的整个报文的校验和。
|
||||
AuType |2字节 |验证类型,值有如下几种表示, 0:不验证;1:简单认证;2:MD5认证。
|
||||
Authentication |8字节 |鉴定字段,其数值根据验证类型而定。当验证类型为0时未作定义;类型为1时此字段为密码信息;类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。MD5验证数据添加在OSPF报文后面,不包含在Authenticaiton字段中。
|
||||
|
||||
### 5种OSPF报文类型-Hello报文
|
||||
|
||||
Hello:周期性地发送给本路由器的邻居,使用的组播地址224.0.0.5。DR和BDR发送报文使用的组播地址是224.0.0.6。其作用为建立和维护邻接关系,周期性的在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。
|
||||
|
||||
* OSPF-hello报文格式
|
||||

|
||||
|
||||
* OSPF-hello字段说明
|
||||
|
||||
|字段 |长度 |含义|
|
||||
|-|-|-|
|
||||
|Network Mask |32比特| 发送Hello报文的接口所在网络的掩码。|
|
||||
|HelloInterval| 16比特| 发送Hello报文的时间间隔。|
|
||||
|Options |8比特 |可选项:E:允许Flood AS-External-LSAs MC:转发IP组播报文 N/P:处理Type-7 LSAs DC:处理按需链路|
|
||||
|Rtr Pri |8比特| DR优先级。默认为1。如果设置为0,则路由器不能参与DR或BDR的选举。|
|
||||
|RouterDeadInterval |32比特| 失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。|
|
||||
|Designated Router |32比特| DR的接口地址。|
|
||||
|Backup Designated Router| 32比特| BDR的接口地址。|
|
||||
|Neighbor |32比特 |邻居,以Router ID标识。|
|
||||
|
||||
* OSPF-hello报文实例
|
||||
|
||||

|
||||
|
||||
|
||||
### 5中OSPF报文类型-DD报文
|
||||
DD:Database Description 本地数据库摘要,供路由器核对数据库是否同步。只交换摘要,减少带宽占用。包括空DD报文和带有摘要信息的DD报文。空DD报文用来确定Master/Slave关系,由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。
|
||||
* OSPF-DD报文格式
|
||||
|
||||

|
||||
|
||||
* OSPF-DD报文字段说明
|
||||
|
||||
|字段 |长度|含义|
|
||||
|-|-|-|
|
||||
|Interface MTU |16比特 |在不分片的情况下,此接口最大可发|出的IP报文长度。
|
||||
|Options |8比特| 可选项:E:允许Flood AS-External-LSAs|;MC:转发IP组播报文;N/P:处理Type-7 LSAs;DC:处理按需链路。
|
||||
|I |1比特| 当发送连续多个DD报文时,如果这是第一个DD报文|,则置为1,否则置为0。
|
||||
|M (More) |1比特| 当发送连续多个DD报文时,如果这是最后|一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。
|
||||
|M/S (Master/Slave) |1比特| 当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。|
|
||||
|DD sequence number |32比特| DD报文序列号。主从双方利|用序列号来保证DD报文传输的可靠性和完整性。
|
||||
|LSA Headers |可变| 该DD报文中所包含的LSA的头部信息。|
|
||||
* OSPF-DD报文实例
|
||||
|
||||

|
||||
|
||||
### 5种OSPF报文类型-LSR报文
|
||||
LSR:Link-State Request 请求链路状态,在数据库同步过程中使用,请求其他角色发送自己失去的LSA最新版本。内容包括所需要的LSA的摘要。
|
||||
* OSPF-LSR报文格式
|
||||
|
||||

|
||||
|
||||
* OSPF-LSR报文字段说明
|
||||
|
||||
|字段 |长度 |含义|
|
||||
|-|-|-|
|
||||
|LS type |32比特| LSA的类型号。|
|
||||
|Link State ID| 32比特| 根据LSA中的LS Type和LSA description在路由域中描述一个LSA。|
|
||||
|Advertising Router |32比特 |产生此LSA的路由器的Router ID。|
|
||||
|
||||
* OSPF-LSR报文实例
|
||||
|
||||

|
||||
|
||||
|
||||
### 5种OSPF报文类型-LSU报文
|
||||
LSU:Link-State Update 链路状态更新,用来向对端Router发送其所需要的LSA或者泛洪自己更新的LSA,内容是多条LSA(全部内容)的集合。LSU包括几种类型的LSA,LSU负责泛洪LSA,和响应LSR。LSA只会发送给之前以LSR请求的LSA的直连邻居,进行泛洪的时候,邻居路由负责把收到的LSA信息重新封装在新的LSU中。
|
||||
|
||||
* OSPF-LSU报文格式
|
||||
|
||||

|
||||
|
||||
* OSPF-LSU报文字段说明
|
||||
|
||||
|字段|长度| 含义|
|
||||
|-|-|-|
|
||||
|Number of LSAs |32比特| LSA的数量。|
|
||||
|
||||
* OSPF-LSU报文实例
|
||||
|
||||

|
||||
|
||||
|
||||
### 5种OSPF报文类型-LSACK报文
|
||||
LSACK:链路状态确认,路由器必须对每个收到的LSA进行LSACK确认,但可以用一个LSACK确认多个LSA。
|
||||
* OSPF-LSACK报文格式
|
||||
|
||||

|
||||
|
||||
* OSPF-LSACK报文字段说明
|
||||
|
||||
|字段 |长度 |含义|
|
||||
|-|-|-|
|
||||
|LSAs Headers |可变 |通过LSA的头部信息确认收到该LSA。|
|
||||
|
||||
* OSPF-LSACK报文实例
|
||||
|
||||

|
||||
|
||||
|
||||
### OSPF可靠传输机制
|
||||
|
||||
采用了确认重传机制,确保OSPF路由信息的可靠传输。
|
||||
|
||||
### OSPF邻居状态机
|
||||
|
||||

|
||||
|
||||
邻居状态机的状态说明
|
||||
* Down
|
||||
邻居状态机的初始状态,是指在过去的Dead-Interval时间内没有收到对方的Hello报文
|
||||
|
||||
* Init
|
||||
本状态表示已经收到了邻居的HELLO报文,但是该报文中列出的邻居中没有包含本Router ID(对方并没有收到我发的HELLO
|
||||
* Attempt
|
||||
只适用于NBMA类型的接口,处于本状态时,定期向那些手工配置的邻居发送HELLO报文
|
||||
* 2-Way
|
||||
本状态表示双方互相收到了对端发送的HELLO报文,建立了邻居关系。在广播和NBMA类型的网络中,两个接口状态是DROther的路由器之间将停留在此状态。其他情况状态机将继续转入高级状态。
|
||||
* ExStart
|
||||
在此状态下,路由器和它的邻居之间通过互相交换DD报文(该报文并不包含实际的内容,只包含一些标志位)来决定发送时的主/从关系。建立主/从关系主要是为了保证在后续的DD报文交换中能够有序的发送。
|
||||
* Exchange
|
||||
路由器将本地的LSDB用DD报文来描述,并发给邻居
|
||||
* Loading
|
||||
路由器发送LSR报文向邻居请求对方的LSU报文
|
||||
* Full
|
||||
在此状态下,邻居路由器的LSDB中所有的LSA本路由器全都有了。本路由器和邻居建立了邻接状态
|
||||
|
||||
### OSPF报文交互过程
|
||||

|
||||
|
||||
具体步骤
|
||||
1. 通过HELLO报文的邻居发现
|
||||
2. DD报文的主从关系协商
|
||||
3. DD报文交换摘要信息
|
||||
4. LSA的请求
|
||||
5. LSA的更新
|
||||
6. LSA 的确认
|
||||
|
||||
## 3 OSPF协议链路状态描述
|
||||
|
||||
> 主要介绍了LSA链路状态通告和与LSA有关的逻辑关系
|
||||
|
||||
链路状态描述即使用链路状态通告。不同的链路类型课能对应不同的链路状态通告。每种链路状态通告包括两部分,链路状态通告的头部信息,和链路状态的通告的数据内容。
|
||||
|
||||
|
||||
|
||||
常用的LSA共有5种,分别为:Router-LSA、Network-LSA、Network-summary-LSA、ASBR-summary-LSA和AS-External-LSA。
|
||||
|
||||
### LSA 相同的Header
|
||||

|
||||
|
||||
* 字段说明
|
||||
|
||||
|
||||
|字段 |长度| 含义|
|
||||
|-|-|-|
|
||||
|LS age |16比特| LSA产生后所经过的时间,以秒为单位。无论LSA是在链路上传送,还是保存在LSDB中,其值都会在不停的增长。|
|
||||
|Options |8比特| 可选项:E:允许泛洪AS-External-LSA;MC:转发IP组播报文;N/P:处理Type-7 LSA;DC:处理按需链路。|
|
||||
|LS type |8比特| LSA的类型:Type1:Router-LSA Type2:Network-LSA Type3:Network-summary-LSA Type4:ASBR-summary-LSA Type5:AS-External-LSA Type7:NSSA-LSA|
|
||||
|Link State ID |32比特| 与LSA中的LS Type和LSA description一起在路由域中描述一个LSA。|
|
||||
|Advertising Router| 32比特| 产生此LSA的路由器的Router ID。|
|
||||
|LS sequence number |32比特 |LSA的序列号。其他路由器根据这个值可以判断哪个LSA是最新的。|
|
||||
|LS checksum |16比特| 除了LS age外其它各域的校验和。|
|
||||
|length |16比特 |LSA的总长度,包括LSA Header,以字节为单位。|
|
||||
|
||||
### 五种链路状态通告类型
|
||||

|
||||
|
||||
### Router-LSA(1类)
|
||||
Router-LSA(Type1):每个路由器都会产生,描述了路由器的链路状态和花费,在所属的区域内传播。
|
||||
|
||||
* Router-LSA通告格式
|
||||
|
||||

|
||||
|
||||
|
||||
* Router-LSA通告字段说明
|
||||
|
||||
|字段| 长度 |含义|
|
||||
|-|-|-|
|
||||
|Link State ID |32比特 |生成LSA的Router ID。|
|
||||
|V (Virtual Link) |1比特| 如果产生此LSA的路由器是虚连接的端点,则置为1。|
|
||||
|E (External) |1比特| 如果产生此LSA的路由器是ASBR,则置为1。|
|
||||
|B (Border)| 1比特| 如果产生此LSA的路由器是ABR,则置为1。|
|
||||
|# links |16比特 |LSA中所描述的链路信息的数量,包括路由器上处于某区域中的所有链路和接口。|
|
||||
|Link ID |32比特 |路由器所接入的目标,其值取决于连接的类型:1:Router ID;2:DR的接口IP地址;3:网段/子网号;4:虚连接中对端的Router ID。|
|
||||
|Link Data |32比特| 连接数据,其值取决于连接的类型:unnumbered P2P:接口的索引值;stub网络:子网掩码;其它连接:路由器接口的IP地址。|
|
||||
|Type |8比特| 路由器连接的基本描述:1:点到点连接到另一台路由器;2:连接到传输网络;3:连接到stub网络;4:虚拟链路。|
|
||||
|# TOS |8比特| 连接不同的TOS数量。|
|
||||
|metric |16比特| 链路的开销值。|
|
||||
|TOS |8比特| 服务类型。|
|
||||
|TOS metric |16比特| 和指定TOS值相关联的度量。|
|
||||
|
||||
|
||||
|
||||
### Network- LSA(2类)
|
||||
Network-LSA(Type2):由广播网或NBMA网络中的DR产生,Network-LSA中记录了这一网络上所有路由器的Router
|
||||
ID,描述本网段的链路状态,在所属的区域内传播。
|
||||
|
||||
* Network-LSA通告格式
|
||||
|
||||

|
||||
|
||||
* Network-LSA通告字段说明
|
||||
|
||||
|字段| 长度| 含义|
|
||||
|-|-|-|
|
||||
|Link State ID |32比特| DR的接口IP地址。|
|
||||
|Network Mask |32比特| 该广播网或NBMA网络地址的掩码。|
|
||||
|Attached Router |32比特| 连接在同一个网络上的所有路由器的Router ID,也包括DR的Router ID。|
|
||||
|
||||
|
||||
### Network Summary-LSA(3类)
|
||||
|
||||
Network-summary-LSA(Type3):描述区域内所有网段的路由,并通告给其他相关区域。ASBR-summary-LSA(Type4):描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。Type3和Type4的LSA有相同的格式,它们都是由ABR产生。
|
||||
|
||||
* Network Summary-LSA&ASBR Summary-LSA通告格式
|
||||
|
||||

|
||||
|
||||
|
||||
* Network Summary-LSA&ASBR Summary-LSA通告字段说明
|
||||
|
||||
|字段 |长度| 含义|
|
||||
|-|-|-|
|
||||
|Link State ID |32比特| 通告的网络地址。如果是ASBR Summary LSA,此字段表示ASBR的Router ID。|
|
||||
|Network Mask |32比特| 该广播网或NBMA网络地址的掩码。如果是ASBR Summary LSA,此字段无意义,设置为0.0.0.0。|
|
||||
|metric |24比特| 到目的地址的路由开销。|
|
||||
|TOS |8比特| 服务类型。|
|
||||
|TOS metric |24比特| 和指定TOS值相关联的度量。|
|
||||
|
||||
### ASBR Summary-LSA(4类)
|
||||
ASBR-Summary-LSA(Type4):描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。Type3和Type4的LSA有相同的格式,它们都是由ABR产生。
|
||||
### AS External-LSA(5类)
|
||||
AS-External-LSA(Type5):由ASBR产生,描述到AS外部的路由,这是五种LSA中,唯一一种通告到所有区域(除了Stub区域和NSSA区域)的LSA。
|
||||
|
||||
* AS External-LSA通告格式
|
||||

|
||||
|
||||
* AS External-LSA通告字段说明
|
||||
|
||||
|字段 |长度| 含义|
|
||||
|-|-|-|
|
||||
|Link State ID |32比特| 通告的网络地址。|
|
||||
|Network Mask |32比特| 通告的目的地址的掩码。|
|
||||
|E |1比特| 外部度量值类型:0:第一类外部路由;1:第二类外部路由。|
|
||||
|metric |24比特| 到目的地址的路由开销。|
|
||||
|Forwarding Address |32比特| 到所通告的目的地址的报文将被转发到这个地址。|
|
||||
|External Route Tag |32比特| 添加到外部路由上的标记。OSPF本身并不使用这个字段,它可以用来对外部路由进行管理。|
|
||||
|TOS |8比特| 服务类型。|
|
||||
|TOS metric |24比特| TOS附加距离信息。|
|
||||
|
||||
|
||||
### OSPF协议的4种网络类型
|
||||
|
||||
* Broadcast类型。广播网络。选举指定路由器DR与备份指定路由器BDR。广播型全连接网络拓扑结构。
|
||||
* NBMA类型。非广播多点可达。选举DR与BDR。单播型全连接网络拓扑结构。
|
||||
* PRMP类型。点到多点网络。不要求DR和BDR。使用组播24.0.0.5发送协议。非全连接拓扑结构。
|
||||
* PTP类型。点到点网络。无序选择DR和BDR。使用组播224.0.0.5发送协议。点对点拓扑结构。
|
||||
|
||||
### OSPF周围4种网络拓扑结构
|
||||

|
||||
* Stub net:末端网络拓扑结构,路由器直连其他PC,网段中没有其他运行OSPF协议的网络设备。
|
||||
* PPP网络描述:点到点拓扑结构,链路连接另一个OSPF的路由器。
|
||||
* 点到多点:非全连接拓扑结构。
|
||||
* 全连接网络:全连接拓扑结构。信息冗余。选取DR与BDR。
|
||||
|
||||
### 链路状态描述信息
|
||||
|
||||
链路状态描述信息+链路状态通告头组成了链路状态通告信息。链路状态描述信息描述了一条记录的具体含义,反映了路由器周边的网络拓扑结构。不同的网络结构使用不同的链路状态描述信息。链路状态描述是链路状态通告的主体部分。
|
||||
|
||||
| 类型值 | 链路类型|LinkID|LinkData|
|
||||
|-|-|-|-|
|
||||
|1-router|Point-to-Point链路|邻居路由器的RouterID|始发路由器在该网段时的接口IP地址|
|
||||
|2-transit|连接Transit网络链路|DR接口的IP地址|始发路由器在该网段是的接口IP地址|
|
||||
|3-stubnet|连接Stub网络链路|Stub网络的IP地址|Stub网络的子网掩码|
|
||||
|4-virtual|Virtual Link|邻居路由器的RouterID|始发路由器接口的MIB-IIifINDEX值|
|
||||
|
||||

|
||||
|
||||
### DR与BDR的选举
|
||||
1. 登记本网段内运行OSPF的路由器;
|
||||
2. 登记具有DR候选资格的路由器,即本网段内的Priority>0的OSPF路由器(Priority可以手工配置,缺省值是1);
|
||||
3. 所有的Priority>0的OSPF路由器都认为自己是DR;
|
||||
4. Priority值最大,若Priority值相等则Router ID最大的路由器将成为DR。第二为BDR。
|
||||
5. 每台路由器通过互相发送Hello报文,同时将自己选出的DR写入Hello报文中,本网段中所有路由器共同选举出DR和BDR。
|
||||
|
||||
选举的原则
|
||||
|
||||
* 选举制
|
||||
DR是各路由器选出来的,而非人工指定的,虽然管理员可以通过配置Priority干预选举过程。
|
||||
* 终身制
|
||||
DR一旦当选,除非路由器故障,否则不会更换,即使后来的路由器Priority更高。
|
||||
* 世袭制
|
||||
DR选出的同时也选出BDR来,DR故障后,由BDR接替DR成为新的DR。
|
||||
* 稳定压倒一切
|
||||
如果DR频繁的更迭,则每次都要重新引起本网段内的所有路由器与新的DR建立邻接关系。
|
||||
* BDR快速响应
|
||||
BDR与DR同时被选举出来。BDR也与本网段内的所有路由器建立邻接关系并交换路由信息。DR失效后,BDR立即成为DR。
|
||||
|
||||
## 4 区域划分及LSA种类
|
||||
|
||||
### 原理
|
||||
路由器数量增多,LSDB庞大,占用存储空间,增加运行SPF算法的复杂度,同时两台路由器之间进行LSDB同步的时间变长。
|
||||
|
||||
减少LSA的数量,缩小网络变化的搏击范围。
|
||||
|
||||
OSPF协议通过将自治系统划分成不同的区域解决问题。区域内使用第一类和第二类LSA链路通告类型。第三类LSA主要对区域内的路由(网段)信息进行描述,大大减少了路由信息描述的数量。
|
||||
|
||||
路由聚合功能。
|
||||
|
||||
### 路由器类型
|
||||
|
||||
在第一章讲过
|
||||
|
||||
### 与自治系统外部通信
|
||||
|
||||
ASBR可以在系统中的任何位置。将其他路由协议(包括静态路由和接口直连路由)导入到OSPF路由器中。
|
||||
|
||||
使用第五类LSA描述包括该路由的目的地之、掩码和花费等信息。将外部信息导入到自制系统内部传播。
|
||||
|
||||
### 骨干区域与虚连接
|
||||
|
||||
|
||||
## 5 OSPF协议路由的计算
|
||||
|
||||
### SPF算法和COST值
|
||||
|
||||
### 区域内OSPF路由计算过程
|
||||
|
||||
### 区域间OSPF路由计算过程
|
||||
|
||||
### 区域外OSPF路由的计算过程
|
||||
|
||||
### 路由的类型和优选顺序
|
||||
|
||||
401
计算机网络实验/RIP协议.md
Normal file
@@ -0,0 +1,401 @@
|
||||
# RIP协议
|
||||
> 参考文献
|
||||
> * [RIP基础知识](https://blog.csdn.net/qq_38265137/article/details/80503512)
|
||||
> * 等到复习的时候整理这篇文档
|
||||
|
||||
|
||||
RIP简介
|
||||
RIP是Routing Information Protocol(路由信息协议)的简称,它是一种较为简单的内部网关协议(Interior Gateway Protocol)。RIP是一种基于距离矢量(Distance-Vector)算法的协议,它使用跳数(Hop Count)作为度量来衡量到达目的网络的距离。RIP通过UDP报文进行路由信息的交换,使用的端口号为520。
|
||||
|
||||
RIP包括RIP-1和RIP-2两个版本,RIP-2对RIP-1进行了扩充,使其更具有优势。
|
||||
|
||||
RIP原理描述
|
||||
RIP基本原理:
|
||||
RIP是一种基于距离矢量(Distance-Vector)算法的协议,它使用跳数(Hop Count)作为度量值来衡量到达目的地址的距离。在RIP网络中,缺省情况下,设备到与它直接相连网络的跳数为0,通过一个设备可达的网络的跳数为1,其余依此类推。也就是说,度量值等于从本网络到达目的网络间的设备数量。为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。由于这个限制,使得RIP不可能在大型网络中得到应用。
|
||||
|
||||
RIPv1报文:
|
||||
RIP-1报文由头部(Header)和多个路由表项(Route Entries)部分组成。在一个RIP报文中,最多可以有25个路由表项。RIP是一个基于UDP协议的,并且RIP-1的数据包不能超过512字节。
|
||||
|
||||
|
||||
|
||||
图:RIPv1报文格式
|
||||
字段解释:
|
||||
|
||||
字段名 长度 含义
|
||||
Command 8比特 标识报文的类型:1:Request报文,向邻居请求全部或部分路由信息;2:Reponse报文,发送自己全部或部分路由信息,一个Response报文中最多包含25个路由表项。
|
||||
Version 8比特 RIP的版本号:1:RIP-12:RIP-2
|
||||
Must be zero 16/32比特 必须为零字段。
|
||||
AFI(Address family identifier) 16比特 地址族标识,其值为2时表示IP协议。对于Request报文,此字段值为0。
|
||||
IP Address 32比特 该路由的目的IP地址,可以是自然网段的地址,也可以是子网地址或主机地址。
|
||||
Metric 32比特 路由的开销值。对于Request报文,此字段值为16。
|
||||
RIPv1报文抓包示例:
|
||||
|
||||
|
||||
|
||||
图:RIPv1报文抓包示例
|
||||
RIPv1的特点:
|
||||
有类别路由协议。
|
||||
广播更新。
|
||||
基于UDP,端口号520.
|
||||
RIP是一个基于UDP的路由协议,并且RIPv1的数据包不能超过512字节(RIP报文头部占用4个字节,而每个路由条目占用20个八位组字节。因此,RIP消息最大为4+(25*20)=504个字节,再加上8个字节的UDP头部,所以RIP数据报的大小(不含IP包的头部)最大可达512个字节。)。RIPv1的协议报文中没有携带掩码信息,所以RIPv1在发送和接收路由更新时会根据主类网段掩码和接口地址掩码来处理路由条目。因此RIPv1无法支持路由聚合,也不支持不连续子网。RIPv1的协议报文中没有验证字段,所以RIPv1也不支持验证。
|
||||
|
||||
RIP工作过程分析:
|
||||
|
||||
|
||||
图:RIP工作过程分析
|
||||
初始状态:路由器开启RIP进程,宣告相应接口,则设备就会从相关接口发送和接收RIP报文。
|
||||
构建路由表:路由器依据收到的RIP报文构建自己的路由表项
|
||||
维护路由表:路由器每隔30秒发送更新报文,同时接收相邻路由器发送的更新报文以维护路由表项。
|
||||
老化路由表项:路由器为将自己构建的路由表项启动180秒的定时器。180秒内,如果路由器收到更新报文,则重置自己的更新定时器和老化定时器。
|
||||
垃圾收集表项:如果180秒过后,路由器没有收到相应路由表项的更新,则启动时长为120秒的垃圾收集定时器,同时将该路由表项的度量置为16。
|
||||
删除路由表项:如果120秒之后,路由器仍然没有收到相应路由表项的更新,则路由器将该表项删除。
|
||||
RIP路由表的形成:
|
||||
RIP启动时的初始路由表仅包含本设备的一些直连接口路由。通过相邻设备互相学习路由表项,才能实现各网段路由互通。
|
||||
|
||||
|
||||
|
||||
图:RIP路由表形成过程
|
||||
RIP路由表形成过程如上图所示:
|
||||
|
||||
RIP协议启动之后,RouterA会向相邻的路由器广播一个Request报文。
|
||||
当RouterB从接口接收到RouterA发送的Request报文后,把自己的RIP路由表封装在Response报文内,然后向该接口对应的网络广播。
|
||||
RouterA根据RouterB发送的Response报文,形成自己的路由表。
|
||||
RIPv1的发送和接收规则:
|
||||
RIPv1的发送规则:
|
||||
注意发送时没有子网掩码。
|
||||
|
||||
将要发送的前缀路由和出接口网段匹配:
|
||||
|
||||
如果不在同一主网,此为主网边界,将前缀自动汇总为有类网段发送前缀到出接口。
|
||||
如果在同一主网,检查发送的前缀是否为32位:
|
||||
如果是,发送32位前缀到出接口。
|
||||
如果不是,检查前缀和出口掩码是否相同:
|
||||
如果不同,抑制发送或者汇聚为主网络号。
|
||||
如果相同,没有边界,发送正确的前缀到出接口。
|
||||
RIPv1接收规则:
|
||||
收到一个前缀后,如果发现是主网络号,直接放入路由表,掩码是8/16/24.
|
||||
|
||||
如果不是主网络号,检查是否在同一主网:
|
||||
|
||||
如果不在,生成有类路由,掩码按有类路由计算。
|
||||
如果在同一主网,用接口掩码去掩,然后检查该前缀是网络地址还是主机地址:
|
||||
如果是网络地址,生成路由,掩码等于自己的接口掩码,放入路由表。
|
||||
如果不是网络地址,就默认是主机地址,生成32位路由,放入路由表。
|
||||
RIP的更新与维护:
|
||||
RIP协议在更新和维护路由信息时主要使用四个定时器:
|
||||
|
||||
更新定时器(Update timer):当此定时器超时时,立即发送更新报文。
|
||||
老化定时器(Age timer):RIP设备如果在老化时间内没有收到邻居发来的路由更新报文,则认为该路由不可达。
|
||||
垃圾收集定时器(Garbage-collect timer):如果在垃圾收集时间内不可达路由没有收到来自同一邻居的更新,则该路由将被从RIP路由表中彻底删除。
|
||||
抑制定时器(Suppress timer):当RIP设备收到对端的路由更新,其cost为16,对应路由进入抑制状态,并启动抑制定时器。为了防止路由震荡,在抑制定时器超时之前,即使再收到对端路由cost小于16的更新,也不接受。当抑制定时器超时后,就重新允许接受对端发送的路由更新报文。
|
||||
RIP路由与定时器之间的关系:
|
||||
|
||||
RIP的更新信息发布是由更新定时器控制的,默认为每30秒发送一次。
|
||||
每一条路由表项对应两个定时器:老化定时器和垃圾收集定时器。当学到一条路由并添加到RIP路由表中时,老化定时器启动。如果老化定时器超时,设备仍没有收到邻居发来的更新报文,则把该路由的度量值置为16(表示路由不可达),并启动垃圾收集定时器。如果垃圾收集定时器超时,设备仍然没有收到更新报文,则在RIP路由表中删除该路由。
|
||||
注意事项:
|
||||
|
||||
如果设备不具有触发更新功能,一个路由表项最多需要300秒才能被删除(老化时间+垃圾收集时间)。
|
||||
如果存在触发更新,那么一个路由条目最多需要120秒才能被删除(即为垃圾收集时间)。
|
||||
触发更新:
|
||||
触发更新可以缩短网络收敛时间。在路由表项变化时立即向其他设备广播该信息,而不必等待定时更新。如果没有触发更新,缺省情况下,失效的路由条目会在路由表停留最多300秒(老化定时器+垃圾收集定时器)。
|
||||
|
||||
RIPv2的增强特性:
|
||||
RIPv2特点:
|
||||
无类别路由协议。
|
||||
组播更新,组播地址224.0.0.9
|
||||
基于UDP,端口号520.
|
||||
支持外部Tag。
|
||||
支持路由聚合和CIDR
|
||||
支持指定下一跳。
|
||||
支持认证。
|
||||
RIPv2的报文:
|
||||
|
||||
|
||||
图:RIPv2报文格式
|
||||
字段解释:
|
||||
|
||||
字段名 长度 含义
|
||||
Command 8比特 标识报文的类型:1:Request报文,向邻居请求全部或部分路由信息;2:Reponse报文,发送自己全部或部分路由信息,一个Response报文中最多包含25个路由表项。
|
||||
Version 8比特 RIP的版本号:1:RIP-12:RIP-2
|
||||
Must be zero 16比特 必须为零字段。
|
||||
AFI(Address Family Identifier) 16比特 地址族标识,其值为2时表示IP协议。对于Request报文,此字段值为0。
|
||||
Route Tag 16比特 外部路由标记。
|
||||
IP Address 32比特 该路由的目的IP地址,可以是自然网段的地址,也可以是子网地址或主机地址。
|
||||
Subnet Mask 32比特 目的地址的掩码。
|
||||
Next Hop 32比特 提供一个更好的下一跳地址。如果为0.0.0.0,则表示发布此路由的路由器地址就是最优下一跳地址。
|
||||
Metric 32比特 路由的开销值。对于Request报文,此字段为16。
|
||||
RIPv2报文抓包示例:
|
||||
|
||||
|
||||
|
||||
图:RIPv1报文抓包示例
|
||||
RIPv1与RIPv2的比较:
|
||||
RIPv1是有类路由协议,RIPv2是无类路由协议
|
||||
RIPv1不能支持VLSM,RIPv2可以支持VLSM
|
||||
RIPv1没有认证的功能,RIPv2可以支持认证,并且有明文和MD5两种认证
|
||||
RIPv1没有手工汇总的功能,RIPv2可以在关闭自动汇总的前提下,进行手工汇总
|
||||
RIPv1是广播更新,RIPv2是组播更新,
|
||||
RIPv1对路由没有标记的功能,RIPv2可以对路由打标记(tag),用于过滤和做策略
|
||||
RIPv1发送的updata最多可以携带25条路由条目,RIPv2在有认证的情况下最多只能携带24条路由
|
||||
RIPv1发送的updata包里面没有next-hop属性,RIPv2有next-hop属性,可以用与路由更新的重定
|
||||
RIPv2路由聚合:
|
||||
路由聚合的原理是,同一个自然网段内的不同子网的路由在向外(其它网段)发送时聚合成一个网段的路由发送。
|
||||
|
||||
RIPv2支持路由聚合,因为RIPv2报文携带掩码位,所以支持子网划分。在RIPv2中进行路由聚合可提高大型网络的可扩展性和效率,缩减路由表。
|
||||
基于RIPv2进程的有类聚合即实现自动聚合。
|
||||
基于接口的聚合即实现手动聚合。
|
||||
如果被聚合路由携带了Tag,那么路由聚合发生之后,Tag信息将被清除。
|
||||
路由聚合有两种方式:
|
||||
|
||||
基于RIP进程的有类聚合:
|
||||
|
||||
聚合后的路由使用自然掩码的路由形式发布。比如,对于10.1.1.0/24(metric=2)和10.1.2.0/24(metric=3)这两条路由,会聚合成自然网段路由10.0.0.0/8(metric=2)。RIP–2聚合是按类聚合的,聚合得到最优的metric值。
|
||||
|
||||
基于接口的聚合:
|
||||
|
||||
用户可以指定聚合地址。比如,对于10.1.1.0/24(metric=2)和10.1.2.0/24(metric=3)这两条路由,可以在指定接口上配置聚合路由10.1.0.0/16(metric=2)来代替原始路由。
|
||||
|
||||
RIP的特性:
|
||||
水平分割:
|
||||
水平分割(Split Horizon)的原理是,RIP从某个接口学到的路由,不会从该接口再发回给邻居路由器。这样不但减少了带宽消耗,还可以防止路由环路。
|
||||
|
||||
水平分割在不同网络中实现有所区别,分为按照接口和按照邻居进行水平分割。广播网、P2P和P2MP网络中是按照接口进行水平分割的,如下图所示:
|
||||
|
||||
|
||||
|
||||
图:按照接口进行水平分割原理图
|
||||
RouterA会向RouterB发送到网络10.0.0.0/8的路由信息,如果没有配置水平分割,RouterB会将从RouterA学习到的这条路由再发送回给RouterA。这样,RouterA可以学习到两条到达10.0.0.0/8网络的路由:跳数为0的直连路由;下一跳指向RouterB,且跳数为2的路由。
|
||||
|
||||
但是在RouterA的RIP路由表中只有直连路由才是活跃的。当RouterA到网络10.0.0.0的路由变成不可达,并且RouterB还没有收到路由不可达的信息时,RouterB会继续向RouterA发送10.0.0.0/8可达的路由信息。即,RouterA会接受到错误的路由信息,认为可以通过RouterB到达10.0.0.0/8网络;而RouterB仍旧认为可以通过RouterA到达10.0.0.0/8网络,从而形成路由环路。配置水平分割后,RouterB将不会再把到网络10.0.0.0/8的路由发回给RouterA,由此避免了路由环路的产生。
|
||||
|
||||
对于NBMA(Non-Broadcast Multiple Access)网络,由于一个接口上连接多个邻居,所以是按照邻居进行水平分割的。路由就会按照单播方式发送,同一接口上收到的路由可以按邻居进行区分。从某一接口的对端邻居处学习到路由,不会再通过该接口发送回去。
|
||||
|
||||
|
||||
|
||||
图:按照邻居进行水平分割原理图
|
||||
在NBMA网络配置了水平分割之后,RouterA会将从RouterB学习到的172.16.0.0/16路由发送给RouterC,但是不会再发送回给RouterB。
|
||||
|
||||
毒性反转:
|
||||
毒性反转(Poison Reverse)的原理是,RIP从某个接口学到路由后,从原接口发回邻居路由器,并将该路由的开销设置为16(即指明该路由不可达)。利用这种方式,可以清除对方路由表中的无用路由。
|
||||
|
||||
配置毒性反转后,RouterB在接收到从RouterA发来的路由后,向RouterA发送一个这条路由不可达的消息(将该路由的开销设置为16),这样RouterA就不会再从RouterB学到这条可达路由,因此就可以避免路由环路的产生。
|
||||
|
||||
水平分割和毒性逆转的区别:
|
||||
水平分割和毒性逆转都是为了防止RIP中的路由环路而设计的,但是水平分割是不将收到路由条目再按“原路返回”来避免环路,而毒性逆转遵循“坏消息比没消息好”的原则,即将路由条目按“原路返回”,但是该路由条目被标记为不可达(度量值为16)。
|
||||
|
||||
缺省情况下不使能毒性逆转。一般情况下,在华为设备中均使能水平分割(除NBMA网络外)而禁用毒性逆转。
|
||||
|
||||
多进程和多实例:
|
||||
RIP多进程允许为指定的RIP进程关联一组接口,从而保证该进程进行的所有协议操作都仅限于这一组接口。这样,就可以实现一台设备有多个RIP进程,不同RIP进程之间互不影响,它们之间的路由交互相当于不同路由协议之间的路由交互。
|
||||
|
||||
RIP多实例是为每个VPN实例绑定一个RIP进程,从而实现VPN实例与指定进程下的所有接口相关联。
|
||||
|
||||
RIP与BFD联动:
|
||||
网络上的链路故障会导致路由器重新计算路由,因此缩短路由协议的收敛时间对于提高网络性能是非常重要的。加快故障感知速度并快速通告给路由协议是一种可行的方案。
|
||||
|
||||
双向转发检测BFD(Bidirectional Forwarding Detection)是一种用于检测邻居路由器之间链路故障的检测机制,它通常与路由协议联动,通过快速感知链路故障并通告使得路由协议能够快速地重新收敛,从而减少由于拓扑变化导致的流量丢失。在RIP与BFD联动中,BFD可以快速检测到链路故障并通知RIP协议,从而加快RIP协议对于网络拓扑变化的响应。
|
||||
|
||||
RIP故障排除流程:
|
||||
检查接口是否在RIP中使能:使用display rip process-id interface 可以查看运行rip的接口;
|
||||
检查对方发送版本号和本地接口接收的版本号是否匹配:缺省情况下,接口只发送RIPv1报文,但可以接收RIPv1和RIPv2报文。当入接口与收到的RIP报文使用不同的版本号时,有可能造成RIP路由不能被正确的接收;
|
||||
检查在RIP中是否配置了策略,过滤掉收到的RIP路由:如果被路由策略过滤掉,则需修改路由策略;
|
||||
RIP使用的端口520是否被禁用;
|
||||
检查接口是否配置了undo rip input/output或者rip metricin设置度量值过大;
|
||||
检查接口是否配置了抑制接口;
|
||||
检查路由度量值是否大于16;
|
||||
检查链路两端是否配置了认证,认证的配置是否正确。
|
||||
RIPv1和RIPv2的兼容性问题
|
||||
RIPv1和RIPv2默认互相不兼容。
|
||||
运行RIPv2的路由器默认只发送和接收v2的报文,不接收v1的报文。
|
||||
运行RIPv1的路由器可以接收v2的报文。
|
||||
RIPv1和RIPv2兼容性实验验证:
|
||||
|
||||
|
||||
图:RIPv1与RIPv2版本兼容性实验
|
||||
配置如下:
|
||||
|
||||
AR1:
|
||||
|
||||
sysname AR1
|
||||
#
|
||||
interface GigabitEthernet0/0/0
|
||||
ip address 10.1.1.1 255.255.255.252
|
||||
#
|
||||
interface LoopBack0
|
||||
ip address 1.1.1.1 255.255.255.255
|
||||
#
|
||||
rip 1
|
||||
version 2
|
||||
network 10.0.0.0
|
||||
network 1.0.0.0
|
||||
#
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
AR2:
|
||||
|
||||
<AR2>dis current-configuration
|
||||
#
|
||||
sysname AR2
|
||||
#
|
||||
interface GigabitEthernet0/0/0
|
||||
ip address 10.1.1.2 255.255.255.252
|
||||
#
|
||||
interface LoopBack0
|
||||
ip address 2.2.2.2 255.255.255.255
|
||||
#
|
||||
rip 1
|
||||
network 10.0.0.0
|
||||
network 2.0.0.0
|
||||
#
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
实验现象:
|
||||
|
||||
|
||||
|
||||
图:AR1的路由表
|
||||
在AR1上开启的位RIPv2版本,路由表中并未收到从AR2中RIPv1发来的路由更新。
|
||||
|
||||
|
||||
|
||||
图:在AR2上配置为RIPv1,收到了从AR1中发送的路由,1.1.1.1/32路由条目。
|
||||
|
||||
|
||||
图:抓包情况
|
||||
实验结果:
|
||||
|
||||
v2版RIP,将只发送v2,接收v2。
|
||||
|
||||
v1版本的RIP可以接收v2的报文。
|
||||
|
||||
当两边都是RIPv2时:
|
||||
|
||||
|
||||
图:当都是RIPv2时Ar1的路由表
|
||||
当两边都是v2时,AR1可以收到AR2发送的2.2.2.2/32这条路由条目,AR2也可以收到1.1.1.1/32.
|
||||
|
||||
当两边都是RIPv1时:
|
||||
|
||||
|
||||
图:当两边都是v1版本时,AR1的路由表
|
||||
|
||||
|
||||
图:当两边都是v1版本时,AR2的路由表
|
||||
两边都是v1时,收到对方的路由条目都是有类路由,1.0.0.0/8和2.0.0.0/8。而v2版本中,收到的都是无类路由,1.1.1.1/32和2.2.2.2/32.
|
||||
|
||||
RIP配置命令
|
||||
checkzero
|
||||
//使能对RIP-1报文中的零域进行检查。
|
||||
//RIP-1报文中的有些字段必须为零,称之为零域。RIP-1在接收报
|
||||
//文时将对零域进行检查,零域的值不为零的RIP-1报文将不被处理。
|
||||
//checkzero只对RIP-1报文有效。
|
||||
host-route
|
||||
//允许32位主机路由加到路由表里。
|
||||
network network-address
|
||||
//对指定网段接口使能RIP路由。
|
||||
peer ip-address
|
||||
//指定RIP邻居的IP地址。配置此命令后,更新报文以单播形式发
|
||||
//送到对端,而不采用正常的组播或广播的形式。
|
||||
preference 100
|
||||
//配置RIP路由的优先级
|
||||
rip authentication-mode
|
||||
//配置RIP-2的认证方式及认证参数。
|
||||
rip bfd
|
||||
//指定接口上配置动态BFD会话的参数值。
|
||||
rip input
|
||||
//控制允许指定接口接收RIP报文。
|
||||
rip output
|
||||
//允许接口发送RIP报文。
|
||||
rip metricin
|
||||
//配置接口接收RIP报文时给路由增加的度量值。
|
||||
rip metricout
|
||||
//配置接口发送RIP报文给路由增加的度量值。
|
||||
//缺省情况下,接口发送RIP报文时给路由增加度量值为1。
|
||||
rip pkt-transmit
|
||||
//指定接口上设置RIP发送更新报文的时间间隔和每次发送报文的数量。
|
||||
//缺省情况下,RIP接口发送更新报文的时间间隔为200毫秒,每次发送的报文数量为50。
|
||||
rip poison-reverse
|
||||
//使能RIP的毒性反转功能。
|
||||
rip split-horizon
|
||||
//使能RIP的水平分割功能。
|
||||
//如果毒性反转和水平分割都配置了,简单的水平分割行为(从某
|
||||
//接口学到的路由再从这个接口发布时将被抑制)会被毒性反转行为代替。
|
||||
rip summary-address
|
||||
//配置RIP路由器发布一个聚合的本地IP地址。
|
||||
silent-interface
|
||||
//来抑制接口,使其只接收报文,用来更新自己的路由表,而不发送RIP报文。
|
||||
summary [ always ]
|
||||
//使能RIP有类聚合,指定有类聚合被使能,不论水平分割功能是否配置。
|
||||
timers rip 30
|
||||
//调整定时器。
|
||||
//缺省情况下,路由更新报文的发送间隔为30秒,路由老化时间为180秒,路由被从路由表中删除的时间为120秒。
|
||||
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
11
|
||||
12
|
||||
13
|
||||
14
|
||||
15
|
||||
16
|
||||
17
|
||||
18
|
||||
19
|
||||
20
|
||||
21
|
||||
22
|
||||
23
|
||||
24
|
||||
25
|
||||
26
|
||||
27
|
||||
28
|
||||
29
|
||||
30
|
||||
31
|
||||
32
|
||||
33
|
||||
34
|
||||
35
|
||||
36
|
||||
37
|
||||
38
|
||||
39
|
||||
40
|
||||
41
|
||||
42
|
||||
43
|
||||
44
|
||||
45
|
||||
46
|
||||
246
计算机网络实验/STP 协议.md
Normal file
@@ -0,0 +1,246 @@
|
||||
# STP 协议
|
||||
|
||||
## 1 STP简介
|
||||
### STP概述
|
||||
生成树协议STP(Spanning Tree Protocol)将环形网络修剪成为一个无环的树型网络,避免报文在环形网络中的增生和无限循环。
|
||||
|
||||
在一个复杂的网络环境中,难免会出现环路。由于冗余备份的需要,网络设计者都倾向于在设备之间部署多条物理链路,其中一条作主用链路,其他链路作备份,这样都有可能会导致环路产生。
|
||||
|
||||
环路会产生广播风暴,最终导致整个网络资源被耗尽,网络瘫痪不可用。环路还会引起MAC地址表震荡导致MAC地址表项被破坏。
|
||||
|
||||
为了破除环路,可以采用数据链路层协议STP,运行该协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某个端口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。
|
||||
|
||||
### STP相关概念
|
||||
|
||||
* 根桥
|
||||
|
||||
树形网络结构必须有树根,于是STP/RSTP引入了根桥(Root Bridge)概念。
|
||||
|
||||
对于一个STP/RSTP网络,根桥有且只有一个,它是整个网络的逻辑中心,但不一定是物理中心。但是根据网络拓扑的变化,根桥可能改变。
|
||||
|
||||
* BID(Bridge ID):桥ID
|
||||
|
||||
IEEE 802.1d标准中规定BID是由2字节的桥优先级(Bridge Priority)与桥MAC地址构成,即BID(8字节) = 桥优先级(2字节) + 桥MAC(6字节)。
|
||||
|
||||
在STP网络中,桥ID最小的设备会被选举为根桥。在华为公司的设备上,桥优先级支持手工配置。
|
||||
|
||||
* PID(Port ID):端口ID
|
||||
|
||||
PID由两部分构成的,即PID(16位) = 端口优先级(4位) + 端口号(12位)。
|
||||
|
||||
PID只在某些情况下对选择指定端口有作用,即在选择指定端口时,两个端口的根路径开销和发送交换设备BID都相同的情况下,比较端口的PID,PID小者为指定端口。
|
||||
|
||||
* 路径开销(RPC)
|
||||
|
||||
路径开销是STP/RSTP协议用于选择链路的参考值。STP/RSTP协议通过计算路径开销,选择较为“强壮”的链路,阻塞多余的链路,将网络修剪成无环路的树形网络结构。根设备的端口的路径开销都为0。
|
||||
|
||||
在一个STP/RSTP网络中,某端口到根桥累计的路径开销就是所经过的各个桥上的各端口的开销。
|
||||
|
||||
* PC(port cost)
|
||||
|
||||
PC的计算需要依据端口带宽来计算。
|
||||
|
||||
### 端口角色:
|
||||
* 根端口(RP):
|
||||
|
||||
即去往根桥路径最近的端口。根端口负责向根桥方向转发数据,根端口同时还负责接收上游设备的BPDU报文和用户流量转发。根端口的选择标准是依据根路径开销判定。在一台设备上所有使能STP的端口中,根路径开销最小者,就是根端口。在一个运行STP/RSTP协议的设备上根端口有且只有一个,而且根桥上没有根端口。
|
||||
|
||||
* 指定端口(DP):
|
||||
|
||||
对一台交换设备而言,它的指定端口是向下游交换设备转发BPDU报文的端口。根桥的所有端口都是指定端口。在环网的每一网段都会选举出一个指定端口,在一个网段上拥有指定端口的交换设备被称作该网段的指定桥。
|
||||
|
||||
* 替代端口(AP):
|
||||
|
||||
由于学习到其它设备发送的配置BPDU报文而阻塞的端口,作为根端口的备份端口,提供了从指定桥到根的另一条可切换路径。
|
||||
|
||||
### 端口状态
|
||||
|
||||
|端口状态 |目的| 说明|
|
||||
|-|-|-|
|
||||
|Forwarding(转发) |端口既转发用户流量也处理BPDU报文。| 只有根端口或指定端口才能进入Forwarding状态。|
|
||||
|Learning (学习) |设备会根据收到的用户流量构建MAC地址表,但不转发用户流量。| 过渡状态,增加Learning状态防止临时环路。(15s)|
|
||||
|Listening(监听) |确定端口角色,将选举出根桥、根端口和指定端口。 |过渡状态。(15s)|
|
||||
|Blocking(阻塞) |端口仅仅接收并处理BPDU报文,不转发用户流量| 阻塞端口的最终状态。|
|
||||
|Disabled(禁用) |端口既不处理BPDU报文,也不转发用户流量。| 端口状态为Down。|
|
||||
|
||||
### 三种定时器
|
||||
|类型 |说明|
|
||||
|-|-|
|
||||
|Hello Time |Hello Timer定时器时间的大小控制配置BPDU发送间隔。|
|
||||
|Forward Delay Timer| Forward Delay Timer定时器时间的大小控制端口在Listening和Learning状态的持续时间。|
|
||||
|Max Age| Max Age定时器时间的大小控制存储配置BPDU的超时时间,超时认为根桥连接失败。|
|
||||
|
||||
## 2 STP报文
|
||||
|
||||
### STP报文格式
|
||||
|
||||

|
||||
|
||||
|
||||
### STP报文字段解释
|
||||
|字段内容 |说明|
|
||||
|-|-|
|
||||
|Protocol Identifier |协议ID=“0”|
|
||||
|Protocol Version Identifier |协议版本标识符,STP为0,RSTP为2,MSTP为3。|
|
||||
|BPDU Type |BPDU类型,MSTP为0x02。0x00:STP的Configuration BPDU0x80:STP的TCN BPDU(Topology Change Notification BPDU)0x02:RST BPDU(Rapid Spanning-Tree BPDU)或者MST BPDU(Multiple Spanning-Tree BPDU)|
|
||||
|Flags |对于“标记域”(Flags),第一个bit(左边、高位bit)表示“TCA(拓扑改变响应)”,最后一个bit(右边、低位bit)表示“TC(拓扑改变)”。|
|
||||
|Root Identifier |网桥ID都是8个字节——前两个字节是网桥优先级,后6个字节是网桥MAC地址。|
|
||||
|Root Path Cost |根路径开销,本端口累计到根桥的开销。|
|
||||
|Bridge Identifier |发送者BID,本交换机的BID。|
|
||||
|Port Identifier |发送端口PID,发送该BPDU的端口ID。|
|
||||
|Message Age |该BPDU的消息年龄。|
|
||||
|Max Age |消息老化年龄。|
|
||||
|Hello Time |发送两个相邻BPDU间的时间间隔。|
|
||||
|Forward Delay |控制Listening和Learning状态的持续时间。|
|
||||
|
||||
|
||||
### STP报文抓包示例
|
||||
|
||||

|
||||
|
||||
|
||||
## 3 STP 原理
|
||||
|
||||
### STP原理:
|
||||
找到冗余的一端,然后阻塞端口,避免环路。
|
||||
|
||||
### STP版本
|
||||
IEEE 802.1D STP
|
||||
IEEE802.1W RSTP
|
||||
IEEE802.1S(华为) MSTP
|
||||
### STP的选举过程
|
||||
1. 在一个交换网络中选举一个根桥,根桥是设备的概念。
|
||||
|
||||
2. 根桥选举后,交换网络中的其他设备都是非根桥,每个非根桥还需选取一个到达根桥最短路径的端口称为根端口。
|
||||
|
||||
注:非根桥只能有一个根端口。
|
||||
|
||||
3. 每条链路上,还需选举一个指定端口,默认情况下根桥的所有端口都是指定端口。
|
||||
|
||||
4. 既不是根端口,也不是指定端口的其他端口需要被阻塞,不能转发数据帧。
|
||||
|
||||
### 根桥的选举
|
||||
1. 通过比较BID选举,优选BID小的。BID由优先级+MAC地址组成。
|
||||
2. 首先比较优先级,优先级越小越优。
|
||||
3. 如果优先级一样,比较MAC地址,MAC地址越小越优。
|
||||
|
||||
### 指定端口的选举
|
||||
1. 比较RID,优选小的。
|
||||
2. 比较到达根桥的RPC(Root Path Cost),越小越优。
|
||||
3. 比较BPDU包发送者的BID,越小越优。
|
||||
4. 比较BPDU包发送者的PID,越小越优。
|
||||
5. 比较BPDU包接收者的PID,越小越优。
|
||||
|
||||
### BPDU报文的两种类型
|
||||
* 配置BPDU
|
||||
|
||||
包含了桥ID,路径开销,端口ID等参数。
|
||||
|
||||
* TCN BPDU
|
||||
|
||||
指下游交换机感知到拓扑发生变化时向上游交换机发送的拓扑变化通知。用以快速刷新MAC地址表。
|
||||
|
||||
### STP故障:
|
||||
* 根桥故障
|
||||
|
||||
非根桥会在BPDU老化之后,开始根桥的重新选举。
|
||||
|
||||
* 直连链路故障
|
||||
|
||||
交换机检测到直连链路故障后,会将预备端口转换为根端口。
|
||||
|
||||
预备端口会在30s后恢复到转发状态。
|
||||
|
||||
* 间接链路故障
|
||||
|
||||
间接链路故障进入到转发状态需要50s(MAX age + Forwarding delay * 2)。
|
||||
|
||||
* 拓扑改变导致MAC地址表错误
|
||||
|
||||
MAC地址默认老化时间为300s,这段时间内无法转发数据。
|
||||
|
||||
### STP用于拓扑改变的报文
|
||||
TCN BPDU报文:拓扑改变通知。
|
||||
|
||||
TCN BPDU报文只能由非根桥发出,通告给根桥。
|
||||
|
||||
TCA BPDU报文:用于确认接收到的TCN PBDU报文。
|
||||
|
||||
TC BPDU报文:只能由根桥发起,连续发送35s(MAX age + Forwarding delay)。
|
||||
|
||||
非根桥收到TC BPDU报文后会将MAC地址的老化时间设置为15s,加速老化。
|
||||
|
||||
### STP拓扑改变
|
||||
|
||||
1. 如果非根桥上发生拓扑变化,向根桥发送TCN BPDU包,通告根桥拓扑已改变。
|
||||
2. 上联的非根桥从指定端口收到TCN BPDU包后,会向发送者回复TCA flag位置位的配置BPDU包,同时继续向根桥发送TCN BPDU包。
|
||||
3. 根桥收到TCN BPDU包后,向发送者回复TCA Flag位置位的配置BPDU包,同时向所有指定端口发送TC Flag位置位的配置BPDU包。TC置位的配置BPDU包会连续发送35s,同时将自己的MAC aging 设置为15s。
|
||||
4. 其他非根桥收到TC置位的配置BPDU包后,将自己的MAC地址的老化时间设置为15s,加速老化。
|
||||
|
||||
### STP触发拓扑改变条件
|
||||
* 一个端口从forwarding状态过渡到disable或blocking状态。
|
||||
* 一个非根桥如果从指定端口接收到TCN BPDU包,需要向根桥装发TCN BPDU包。
|
||||
* 一个端口进入转发状态,并且本地已存在一个指端端口。
|
||||
|
||||
### STP配置命令行
|
||||
```
|
||||
stp mode { stp | rstp | mstp}
|
||||
//配置交换机的STP工作模式,默认情况下,交换设备运行MSTP模式,MSTP模式兼容STP和RSTP模式。
|
||||
|
||||
stp root primary
|
||||
//配置当前设备为根桥设备。缺省情况下,交换设备不作为任何生成树的根桥。配置后该设备优先级BID值自动为0,并且不能更改设备优先级。
|
||||
|
||||
stp root secondary
|
||||
//配置当前交换机设备为备份根桥设备。缺省情况下,交换设备不作为任何生成树的备份根桥。配置后该设备优先级BID值为4096,并且不能更改设备优先级。
|
||||
|
||||
stp priority 32768
|
||||
//配置交换设备在系统中的优先级。缺省情况下,交换设备的优先级取值是32768。 配置时,优先级必须为4096的倍数。
|
||||
|
||||
stp pathcost-standard { dot1d-1998 | dot1t | legacy }
|
||||
//配置端口路径开销计算方法。缺省情况下,路径开销值的计算方法为IEEE 802.1t(dot1t)标准方法。
|
||||
|
||||
[接口视图]stp cost 100
|
||||
//设置当前端口的路径开销值。
|
||||
//使用华为计算方法时参数cost取值范围是1~200000。
|
||||
//使用IEEE 802.1d标准方法时取值范围是1~65535。
|
||||
//使用IEEE 802.1t标准方法时取值范围是1~200000000。
|
||||
|
||||
[接口视图] stp port priority 128
|
||||
//配置端口的优先级。缺省情况下,交换设备端口的优先级取值是128。
|
||||
|
||||
stp enable //使能交换设备的STP功能。缺省情况下,设备的STP/RSTP功能处于启用状态。
|
||||
|
||||
stp converge { fast | normal}
|
||||
//配置端口的收敛方式
|
||||
//根据对ARP表项的处理方式不同,STP/RSTP的收敛方式分为fast和normal两种:
|
||||
//fast:ARP表将需要更新的表项直接删除。
|
||||
//normal:ARP表中需要更新的表项快速老化。
|
||||
//交换设备将ARP表中这些表项的剩余存活时间置为0,对这些表项进行老化处理。如果配置的ARP老化探测次数大于零,则ARP对这些表项进行老化探测。
|
||||
|
||||
//建议选择normal收敛方式。若选择fast方式,频繁的ARP表项删除可能会导致设备CPU占用率高达100%,报文处理超时导致网络震荡。
|
||||
|
||||
stp bridge-diameter 5
|
||||
//配置网络直径。缺省情况下,网络直径为7。
|
||||
|
||||
stp timer-factor factor
|
||||
//配置未收到上游的BPDU就重新开始生成树计算的超时时间。 缺省情况下,设备未收到上游的BPDU就重新开始生成树计算的超时时间是Hello Timer的9倍。
|
||||
|
||||
stp timer forward-delay 1500
|
||||
//配置设备的Forward Delay时间。 缺省情况下,设备的Forward Delay时间是1500厘秒(15秒)。
|
||||
|
||||
stp timer hello 200
|
||||
//配置设备的Hello Time时间。 缺省情况下,设备的Hello Time时间是200厘秒(2秒)。
|
||||
|
||||
stp timer mac-age 2000
|
||||
//配置设备的Max Age时间。缺省情况下,设备的Max Age时间是2000厘秒(20秒)。
|
||||
|
||||
max bandwidth-affected-linknumber 8
|
||||
//配置影响带宽的最大连接数。 缺省情况下,影响链路聚合带宽的最大连接数是8。
|
||||
|
||||
reset stp error packet statistics
|
||||
//清除生成树协议的错误报文计数。
|
||||
|
||||
display stp toplogy-change
|
||||
//查看STP/RSTP拓扑变化相关的统计信息
|
||||
|
||||
```
|
||||
372
计算机网络实验/VLAN技术.md
Normal file
@@ -0,0 +1,372 @@
|
||||
# VLAN技术
|
||||
> 参考文献
|
||||
> * [VLAN基础知识](https://blog.csdn.net/qq_38265137/article/details/80390759)
|
||||
> * 可以等到以后复习的时候,补充完整这一块。
|
||||
|
||||
VLAN简介
|
||||
定义:
|
||||
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接通信,从而将广播报文限制在一个VLAN内。
|
||||
|
||||
目的:
|
||||
以太网是一种基于CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的共享通讯介质的数据网络通讯技术。当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至造成网络不可用等问题。通过交换机实现LAN互连虽然可以解决冲突严重的问题,但仍然不能隔离广播报文和提升网络质量。
|
||||
|
||||
在这种情况下出现了VLAN技术,这种技术可以把一个LAN划分成多个逻辑的VLAN,每个VLAN是一个广播域,VLAN内的主机间通信就和在一个LAN内一样,而VLAN间则不能直接互通,这样,广播报文就被限制在一个VLAN内。
|
||||
|
||||
作用:
|
||||
限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
|
||||
增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。
|
||||
提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。
|
||||
灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
|
||||
VLAN的基本概念
|
||||
VLAN标签:
|
||||
要使设备能够分辨不同VLAN的报文,需要在报文中添加标识VLAN信息的字段。IEEE 802.1Q协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag),用以标识VLAN信息。
|
||||
|
||||
VLAN帧格式:
|
||||
|
||||
|
||||
图:VLAN数据帧格式
|
||||
字段解释:
|
||||
|
||||
字段 长度 含义 取值
|
||||
TPID 2Byte Tag Protocol Identifier(标签协议标识符),表示数据帧类型。 表示帧类型,取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。 各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时, 为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致。
|
||||
PRI 3bit Priority,表示数据帧的802.1p优先级。 取值范围为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帧。
|
||||
|
||||
链路类型和接口类型:
|
||||
设备内部处理的数据帧一律都带有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。
|
||||
当接收到不带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。
|
||||
|
||||
VLAN通信
|
||||
VLAN内互访:
|
||||
同一VLAN内用户互访(简称VLAN内互访)会经过如下三个环节。
|
||||
|
||||
用户主机的报文转发
|
||||
|
||||
源主机在发起通信之前,会将自己的IP与目的主机的IP进行比较,如果两者位于同一网段,会获取目的主机的MAC地址,并将其作为目的MAC地址封装进报文;如果两者位于不同网段,源主机会将报文递交给网关,获取网关的MAC地址,并将其作为目的MAC地址封装进报文。
|
||||
|
||||
设备内部的以太网交换
|
||||
|
||||
设备
|
||||
|
||||
如果目的MAC地址+VID匹配自己的MAC表且三层转发标志置位,则进行三层交换,会根据报文的目的IP地址查找三层转发表项,如果没有找到会将报文上送CPU,由CPU查找路由表实现三层转发。
|
||||
如果目的MAC地址+VID匹配自己的MAC表但三层转发标志未置位,则进行二层交换,会直接将报文根据MAC表的出接口发出去。
|
||||
如果目的MAC地址+VID没有匹配自己的MAC表,则进行二层交换,此时会向所有允许VID通过的接口广播该报文,以获取目的主机的MAC地址。
|
||||
设备之间交互时,VLAN标签的添加和剥离
|
||||
|
||||
设备内部的以太网交换都是带Tag的,为了与不同设备进行成功交互,设备需要根据接口的设置添加或剥除Tag。不同接口VLAN标签添加和剥离情况不同。
|
||||
|
||||
从以太网交换原理可以看出,划分VLAN后,广播报文只在同一VLAN内二层转发,因此同一VLAN内的用户可以直接二层互访。根据属于同一VLAN的主机是否连接在不同的设备,VLAN内互访有两种场景:同设备VLAN内互访和跨设备VLAN内互访。
|
||||
|
||||
同设备VLAN内互访:
|
||||
如下图所示,用户主机Host_1和Host_2连接在同台设备上,属于同一VLAN2,且位于相同网段,连接接口均设置为Access接口。
|
||||
(假设Router上还未建立任何转发表项)。
|
||||
|
||||
|
||||
Host_1判断目的IP地址跟自己的IP地址在同一网段,于是发送ARP广播请求报文获取目的主机Host_2的MAC地址,报文目的MAC填写全F,目的IP为Host_2的IP地址10.1.1.3。
|
||||
报文到达Router的接口IF_1,发现是Untagged帧,给报文添加VID=2的Tag(Tag的VID=接口的PVID),然后根据报文的源MAC地址、VID和报文入接口(1-1-1, 2, IF_1)生成MAC表。
|
||||
根据报文目的MAC地址+VID查找Router的MAC表,没有找到,于是在所有允许VLAN2通过的接口(本例中接口为IF_2)广播该报文。
|
||||
Router的接口IF_2在发出ARP请求报文前,根据接口配置,剥离VID=2的Tag。
|
||||
Host_2收到该ARP请求报文,将Host_1的MAC地址和IP地址对应关系记录ARP表。然后比较目的IP与自己的IP,发现跟自己的相同,就发送ARP响应报文,报文中封装自己的MAC地址2-2-2,目的IP为Host_1的IP地址10.1.1.2。
|
||||
Router的接口IF_2收到ARP响应报文后,同样给报文添加VID=2的Tag。
|
||||
Router根据报文的源MAC地址、VID和报文入接口(2-2-2, 2, IF_2)生成MAC表,然后根据报文的目的MAC地址+VID(1-1-1, 2)查找MAC地址表,由于前面已记录,查找成功,向出接口IF_1转发该ARP响应报文。
|
||||
Router向出接口IF_1转发前,同样根据接口配置剥离VID=2的Tag。
|
||||
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上还未建立任何转发表项)。
|
||||
|
||||
经过与同设备VLAN内互访的步骤1~2一样的过程后,报文被广播到Router_1的IF_2接口。
|
||||
Router_1的IF_2接口在发出ARP请求报文前,因为接口的PVID=1(缺省值),与报文的VID不相等,直接透传该报文到Router_2的IF_2接口,不剥除报文的Tag。
|
||||
Router_2的IF_2接口收到该报文后,判断报文的Tag中的VID=2是接口允许通过的VLAN,接收该报文。
|
||||
经过与同设备VLAN内互访的步骤3~6一样的过程后,Router_2将向其出接口IF_2转发Host_2的ARP响应报文,转发前,因为接口IF_2为Trunk接口且PVID=1(缺省值),与报文的VID不相等,直接透传报文到Router_1的IF_2接口。
|
||||
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上还未建立任何转发表项)。
|
||||
|
||||
Host_1判断目的IP地址跟自己的IP地址不在同一网段,因此,它发出请求网关MAC地址的ARP请求报文,目的IP为网关IP 10.1.1.1,目的MAC为全F。
|
||||
报文到达Router的接口IF_1,Router给报文添加VID=2的Tag(Tag的VID=接口的PVID),然后将报文的源MAC地址+VID与接口的对应关系(1-1-1, 2, IF_1)添加进MAC表。
|
||||
Router检查报文是ARP请求报文,且目的IP是自己VLANIF2接口的IP地址,给Host_1应答,并将VLANIF2接口的MAC地址3-3-3封装在应答报文中,应答报文从IF_1发出前,剥掉VID=2的Tag。同时,Router会将Host_1的IP地址与MAC地址的对应关系记录到ARP表。
|
||||
Host_1收到Router的应答报文,将Router的VLANIF2接口的IP地址与MAC地址对应关系记录到自己的ARP表中,并向Router发送目的MAC为3-3-3、目的IP为Host_2的IP地址 10.2.2.2的报文。
|
||||
报文到达Router的接口IF_1,同样给报文添加VID=2的Tag。
|
||||
Router根据报文的源MAC地址+VID与接口的对应关系更新MAC表,并比较报文的目的MAC地址与VLANIF2的MAC地址,发现两者相等,进行三层转发,根据目的IP查找三层转发表,没有找到匹配项,上送CPU查找路由表。
|
||||
CPU根据报文的目的IP去找路由表,发现匹配了一个直连网段(VLANIF3对应的网段),于是继续查找ARP表,没有找到,Router会在目的网段对应的VLAN3的所有接口发送ARP请求报文,目的IP是10.2.2.2。从接口IF_2发出前,根据接口配置,剥掉VID=2的Tag。
|
||||
Host_2收到ARP请求报文,发现请求IP是自己的IP地址,就发送ARP应答报文,将自己的MAC地址包含在其中。同时,将VLANIF3的MAC地址与IP地址的对应关系记录到自己的ARP表中。
|
||||
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上还未建立任何转发表项)。
|
||||
|
||||
与同设备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查找路由表。
|
||||
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。
|
||||
ARP请求报文到达Router_2后,发现目的IP为VLANIF4接口的IP地址,给Router_1回应,填写VLANIF4接口的MAC地址。
|
||||
Router_2的ARP响应报文从其IF_2接口直接透传到Router_1,Router_1接收后,记录VLANIF4的MAC地址与IP地址的对应关系到ARP表项。
|
||||
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接口。
|
||||
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聚合简介:
|
||||
VLAN聚合(VLAN Aggregation,也称Super VLAN)指在一个物理网络内,用多个VLAN(称为Sub-VLAN)隔离广播域,并将这些Sub-VLAN聚合成一个逻辑的VLAN(称为Super-VLAN),这些Sub-VLAN使用同一个IP子网和缺省网关。
|
||||
|
||||
通过引入Super-VLAN和Sub-VLAN的概念,使每个Sub-VLAN对应一个广播域,并让多个Sub-VLAN和一个Super-VLAN关联,只给Super-VLAN分配一个IP子网,所有Sub-VLAN都使用Super-VLAN的IP子网和缺省网关进行三层通信。
|
||||
|
||||
这样,多个Sub-VLAN共享一个网关地址,节约了子网号、子网定向广播地址、子网缺省网关地址,且各Sub-VLAN间的界线也不再是从前的子网界线了,它们可以根据各自主机的需求数目在Super-VLAN对应子网内灵活的划分地址范围,从而即保证了各个Sub-VLAN作为一个独立广播域实现广播隔离,又节省了IP地址资源,提高了编址的灵活性。
|
||||
|
||||
原理描述:
|
||||
VLAN聚合通过定义Super-VLAN和Sub-VLAN,使Sub-VLAN只包含物理接口,负责保留各自独立的广播域;Super-VLAN不包含物理接口,只用来建立三层VLANIF接口。然后再通过建立Super-VLAN和Sub-VLAN间的映射关系,把三层VLANIF接口和物理接口两部分有机的结合起来,实现所有Sub-VLAN共用一个网关与外部网络通信,并用ARP Proxy实现Sub-VLAN间的三层通信,从而在实现普通VLAN的隔离广播域的同时,达到节省IP地址的目的。
|
||||
|
||||
Sub-VLAN:只包含物理接口,不能建立三层VLANIF接口,用于隔离广播域。每个Sub-VLAN内的主机与外部的三层通信是靠Super-VLAN的三层VLANIF接口来实现的。
|
||||
Super-VLAN:只建立三层VLANIF接口,不包含物理接口,与子网网关对应。与普通VLAN不同的是,它的VLANIF接口的Up不依赖于自身物理接口的Up,而是只要它所含Sub-VLAN中存在Up的物理接口就Up。
|
||||
一个Super-VLAN可以包含一个或多个Sub-VLAN。Sub-VLAN不再占用一个独立的子网网段。在同一个Super-VLAN中,无论主机属于哪一个Sub-VLAN,它的IP地址都在Super-VLAN对应的子网网段内。
|
||||
|
||||
这样,Sub-VLAN间共用同一个网关,既减少了一部分子网号、子网缺省网关地址和子网定向广播地址的消耗,又实现了不同广播域使用同一子网网段地址的目的,消除了子网差异,增加了编址的灵活性,减少了闲置地址浪费。
|
||||
|
||||
Sub-VLAN之间的通信:
|
||||
VLAN聚合在实现不同VLAN共用同一子网网段地址的同时,也给Sub-VLAN间的三层转发带来了问题。普通VLAN中,不同VLAN内的主机可以通过各自不同的网关进行三层互通。但是Super-VLAN中,所有Sub-VLAN内的主机使用的是同一个网段的地址,共用同一个网关地址,主机只会做二层转发,而不会送网关进行三层转发。即实际上,不同Sub-VLAN的主机在二层是相互隔离的,这就造成了Sub-VLAN间无法通信的问题。
|
||||
|
||||
解决这一问题的方法就是使用Proxy ARP。
|
||||
|
||||
示列:
|
||||
如下图所示,假设Sub-VLAN2内的主机Host_1与Sub-VLAN3内的主机Host_2要通信,在Super-VLAN10的VLANIF接口上启用Proxy
|
||||
ARP。
|
||||
|
||||
|
||||
|
||||
图:Proxy ARP实现不同Sub-VLAN间的三层通信组网图
|
||||
Host_1与Host_2的通信过程如下(假设Host_1的ARP表中无Host_2的对应表项):
|
||||
|
||||
Host_1将Host_2的IP地址(10.1.1.12)和自己所在网段10.1.1.0/24进行比较,发现Host_2和自己在同一个子网,但是Host_1的ARP表中无Host_2的对应表项。
|
||||
Host_1发送ARP广播报文,请求Host_2的MAC地址,目的IP为10.1.1.12。
|
||||
网关Router收到Host_1的ARP请求,由于网关上使能Sub-VLAN间的Proxy ARP,开始使用报文中的目的IP地址在路由表中查找,发现匹配了一条路由,下一跳为直连网段(VLANIF10的10.1.1.0/24),VLANIF10对应Super-VLAN10,则向Super-VLAN10的所有Sub-VLAN接口发送一个ARP广播,请求Host_2的MAC地址。
|
||||
Host_2收到网关发送的ARP广播后,对此请求进行ARP应答。
|
||||
网关收到Host_2的应答后,就把自己的MAC地址回应给Host_1。
|
||||
Host_1之后要发给Host_2的报文都先发送给网关,由网关做三层转发。
|
||||
Host_2发送报文给Host_1的过程和上述的Host_1发送报文给Host_2的过程类似,不再赘述。
|
||||
|
||||
Sub_VLAN与其他网络的三层通信:
|
||||
以所示组网为例,介绍Sub-VLAN内主机与其他网络内的主机间通信过程。
|
||||
|
||||
如下图,用户主机与服务器处于不同的网段中,Router_1上配置了Sub-VLAN2、Sub-VLAN3、Super-VLAN4和VLAN10,Router_2上配置了VLAN10和VLAN20。
|
||||
|
||||
|
||||
|
||||
图:Sub-VLAN与其他网络的三层通信组网图
|
||||
假设Sub-VLAN2下的主机Host_1想访问与Router_2相连的Server,报文转发流程如下(假设Router_1上已配置了去往10.1.2.0/24网段的路由,Router_2上已配置了去往10.1.1.0/24网段的路由,但两设备没有任何三层转发表项):
|
||||
|
||||
Host_1将Server的IP地址(10.1.2.2)和自己所在网段10.1.1.0/24进行比较,发现和自己不在同一个子网,发送ARP请求给自己的网关,请求网关的MAC地址,目的MAC为全F,目的IP为10.1.1.1。
|
||||
Router_1收到该请求报文后,查找Sub-VLAN和Super-VLAN的对应关系,知道应该回应Super-VLAN4对应的VLANIF4的MAC地址,并知道从Sub-VLAN2的接口回应给Host_1。
|
||||
Host_1学习到网关的MAC地址后,开始发送目的MAC为Super-VLAN4对应的VLANIF4的MAC地址、目的IP为10.1.2.2的报文。
|
||||
Router_1收到该报文后,根据Sub-VLAN和Super-VLAN的对应关系以及目的MAC判断进行三层转发,查三层转发表项没有找到匹配项,上送CPU查找路由表,得到下一跳地址为10.1.10.2,出接口为VLANIF10,并通过ARP表项和MAC表项确定出接口,把报文发送给Router_2。
|
||||
Router_2根据正常的三层转发流程把报文发送给Server。
|
||||
Server收到Host_1的报文后给Host_1回应,回应报文的目的IP为10.1.1.2,目的MAC为Router_2上VLANIF20接口的MAC地址,回应报文的转发流程如下:
|
||||
|
||||
Server给Host_1的回应报文按照正常的三层转发流程到达Router_1。到达Router_1时,报文的目的MAC地址为Router_1上VLANIF10接口的MAC地址。
|
||||
Router_1收到该报文后根据目的MAC地址判断进行三层转发,查三层转发表项没有找到匹配项,上送CPU,CPU查路由表,发现目的IP为10.1.1.2对应的出接口为VLANIF4,查找Sub-VLAN和Super-VLAN的对应关系,并通过ARP表项和MAC表项,知道报文应该从Sub-VLAN2的接口发送给Host_1。
|
||||
回应报文到达Host_1。
|
||||
Sub-VLAN与其他设备的二层通信:
|
||||
如下图所示组网为例,介绍Sub-VLAN内主机与其他设备的二层通信情况。Router_1上配置了Sub-VLAN2、Sub-VLAN3和Super-VLAN4,_Router_1的_IF_1和IF_2配置为Access接口,IF_3接口配置为Trunk接口,并允许VLAN2和VLAN3通过;Router_2连接Router_1的接口配置为Trunk接口,并允许VLAN2和VLAN3通过。
|
||||
|
||||
|
||||
图:Sub-VLAN与其他设备的二层通信组网图
|
||||
从Host_1进入Router_1的报文会被打上VLAN2的Tag。在Router_1中这个Tag不会因为VLAN2是VLAN4的Sub-VLAN而变为VLAN4的Tag。该报文从Router_1的Trunk接口IF_3出去时,依然是携带VLAN2的Tag。
|
||||
|
||||
也就是说,Router_1本身不会发出VLAN4的报文。就算其他设备有VLAN4的报文发送到该设备上,这些报文也会因为Router_1上没有VLAN4对应的物理接口而被丢弃。因为Router_1的IF_3接口上根本就不允许Super-VLAN4通过。对于其他设备而言,有效的VLAN只有Sub-VLAN2和Sub-VLAN3,所有的报文都是在这些VLAN中交互的。
|
||||
|
||||
这样,Router_1上虽然配置了VLAN聚合,但与其他设备的二层通信,不会涉及到Super-VLAN,与正常的二层通信流程一样。
|
||||
|
||||
配置Super-VALN:
|
||||
配置注意事项:
|
||||
VLAN1不能配置为Super-VLAN。
|
||||
配置某VLAN为Super-VLAN后,该VLAN类型改变为super,不允许任何物理接口加入该VLAN。
|
||||
流策略只有在Super-vlan的所有Sub-vlan下配置才能生效,在Super-vlan下配置不生效。
|
||||
配置某个VLAN为子接口的终结VLAN后,该VLAN不能再配置为Super-VLAN或Sub-VLAN。
|
||||
Super-VLAN对应的VLANIF接口配置IP地址后Proxy ARP才能生效。
|
||||
配置聚合VLAN:
|
||||
拓扑:
|
||||
PC1,2 属于VLAN10 ,PC3,4属于VLAN20,通过聚合VLAN100,实现共用网关IP地址,开启VLAN间ARP代理,实现VLAN间通信。
|
||||
|
||||
|
||||
|
||||
图:VLAN聚合配置拓扑
|
||||
配置参数:
|
||||
[SW]dis current-configuration
|
||||
#
|
||||
sysname SW
|
||||
#
|
||||
vlan batch 10 20 100
|
||||
//批量创建VLAN
|
||||
#
|
||||
vlan 100
|
||||
aggregate-vlan//创建聚合VLAN
|
||||
access-vlan 10 20//将valn10 20 添加进聚合和VLAN
|
||||
#
|
||||
interface Vlanif100
|
||||
ip address 10.0.100.254 255.255.255.0
|
||||
arp-proxy inter-sub-vlan-proxy enable
|
||||
//开启VLAN间ARP代理,实现VLAN间通信
|
||||
#
|
||||
interface GigabitEthernet0/0/1
|
||||
port link-type access
|
||||
port default vlan 10
|
||||
#
|
||||
interface GigabitEthernet0/0/2
|
||||
port link-type access
|
||||
port default vlan 10
|
||||
#
|
||||
interface GigabitEthernet0/0/3
|
||||
port link-type access
|
||||
port default vlan 20
|
||||
#
|
||||
interface GigabitEthernet0/0/4
|
||||
port link-type access
|
||||
port default vlan 20
|
||||
#
|
||||
BIN
计算机网络实验/image/ASExternal-LSA通告格式.png
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
计算机网络实验/image/BGPOPEN报文格式.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
计算机网络实验/image/BGP报文头实例.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
计算机网络实验/image/BGP报文头格式.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
计算机网络实验/image/BGP状态机.png
Normal file
|
After Width: | Height: | Size: 340 KiB |
BIN
计算机网络实验/image/BGP路由策略处理过程.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
计算机网络实验/image/BGP路由衰减.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
计算机网络实验/image/ICMPv6报文实例.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
计算机网络实验/image/ICMPv6报文格式.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
计算机网络实验/image/IGMPproxy备份机制.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
计算机网络实验/image/IGMPsnooping端口.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
计算机网络实验/image/IGMPv1报文实例.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
计算机网络实验/image/IGMPv1报文格式.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
计算机网络实验/image/IGMPv1新成员加入机制.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
计算机网络实验/image/IGMPv1查询响应机制.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
计算机网络实验/image/IGMPv2报文实例.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
计算机网络实验/image/IGMPv2报文格式.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
计算机网络实验/image/IGMPv2查询器选举机制.png
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
计算机网络实验/image/IGMPv2离开组机制.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
计算机网络实验/image/IGMPv3成员报告报文GroupRecord.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
计算机网络实验/image/IGMPv3成员报告报文实例.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
计算机网络实验/image/IGMPv3成员报告报文格式.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
计算机网络实验/image/IGMPv3查询报文实例.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
计算机网络实验/image/IGMPv3查询报文格式.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
计算机网络实验/image/IPV6 PMTU原理.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
计算机网络实验/image/IPv6两端同时重复检测.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
计算机网络实验/image/IPv6全球单播地址.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
计算机网络实验/image/IPv6唯一本地地址.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
计算机网络实验/image/IPv6地址生命周期.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
计算机网络实验/image/IPv6地址生成.png
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
计算机网络实验/image/IPv6地址解析过程.png
Normal file
|
After Width: | Height: | Size: 77 KiB |
BIN
计算机网络实验/image/IPv6基本报文头.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
计算机网络实验/image/IPv6子网路由器任播地址.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
计算机网络实验/image/IPv6扩展头包.png
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
计算机网络实验/image/IPv6报文实例.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
计算机网络实验/image/IPv6组播地址格式.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
计算机网络实验/image/IPv6组播地址格式2.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
计算机网络实验/image/IPv6路由发现功能.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
计算机网络实验/image/IPv6路由通告RA报文.png
Normal file
|
After Width: | Height: | Size: 230 KiB |
BIN
计算机网络实验/image/IPv6路由通告RS报文.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
计算机网络实验/image/IPv6邻居状态迁移.png
Normal file
|
After Width: | Height: | Size: 146 KiB |
BIN
计算机网络实验/image/IPv6重定向.png
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
计算机网络实验/image/IPv6链路本地地址.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
计算机网络实验/image/Keepalive报文实例.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
计算机网络实验/image/LSAHeader.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
计算机网络实验/image/NetworkLSA通告格式.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
计算机网络实验/image/Notification报文实例.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
计算机网络实验/image/Notification报文格式.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
计算机网络实验/image/OPEN报文实例.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
计算机网络实验/image/OSPFDD报文实例.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
计算机网络实验/image/OSPFDD报文格式.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
计算机网络实验/image/OSPFLSACK报文实例.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
计算机网络实验/image/OSPFLSACK报文格式.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
计算机网络实验/image/OSPFLSR报文实例.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
计算机网络实验/image/OSPFLSR报文格式.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
计算机网络实验/image/OSPFLSU报文实例.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
计算机网络实验/image/OSPFLSU报文格式.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
计算机网络实验/image/OSPFhello报文.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
计算机网络实验/image/OSPF五种链路状态描述类型.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
计算机网络实验/image/OSPF五种链路通告类型.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
计算机网络实验/image/OSPF报文.jpg
Normal file
|
After Width: | Height: | Size: 138 KiB |
BIN
计算机网络实验/image/OSPF报文交互过程.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
计算机网络实验/image/OSPF报文头.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
计算机网络实验/image/OSPF邻居状态机.png
Normal file
|
After Width: | Height: | Size: 183 KiB |
BIN
计算机网络实验/image/PIM-GR示意图.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
计算机网络实验/image/PIM-SM-BSR管理域-地域空间.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
计算机网络实验/image/PIM-SM-BSR管理域-组地址范围.png
Normal file
|
After Width: | Height: | Size: 8.5 KiB |
BIN
计算机网络实验/image/PPP帧格式.jpg
Normal file
|
After Width: | Height: | Size: 182 KiB |
BIN
计算机网络实验/image/PPP状态图.jpg
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
计算机网络实验/image/PPP状态图.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
计算机网络实验/image/Refresh报文实例.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
计算机网络实验/image/Refresh报文格式.png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
计算机网络实验/image/Router-LSA通告格式.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
计算机网络实验/image/STP报文实例.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
计算机网络实验/image/STP报文格式.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
计算机网络实验/image/Summary-LSA通告格式.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
计算机网络实验/image/UPDATE报文实例.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
计算机网络实验/image/UPDATE报文格式.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
计算机网络实验/image/VLAN帧格式.jpg
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
计算机网络实验/image/VLAN数据帧格式.png
Normal file
|
After Width: | Height: | Size: 36 KiB |