变更计算机网络实验文件名

This commit is contained in:
estomm
2019-10-29 20:01:04 +08:00
parent 48f4eed010
commit 7c1dd08072
117 changed files with 1906 additions and 349 deletions

View File

@@ -0,0 +1,136 @@
# 网络实验入门
目录
1. 实验环境及设备简介
2. 网线制作和测试
3. 路由器和交换机的基本配置
4. 报文分析软件
5. 简单局域网组建实验
6. 基于地址转换的组网实验
> 网络实验2019年10月17日算是从今天真正的开始做了之前可能都是在划水网络实验一周付出五天应该不为过。不过我觉得。以后能付出三天应该就能赶上进度。这里主要写一写自己缺少的理论知识。h3c的操作问题全部放到命令行的笔记当中
## 1 实验环境及设备简介
### 集线器hub
* 物理层
* 将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。某个端口接收到比特信号,简单的将比特信号复制转发到其他端口。多个端口同时输入信号时会发生冲突。
### 交换机switch
* 链路层
* 是一种用于电信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路把传输的信息送到符合要求的相应路由上。采用背板总线交互结构每个端口有一个独立的共享介质每个冲突域只有一个端口。链路层是根据mac地址进行数据转发。
* 交换方式主要包括:端口交换、帧交换、信元交换。
* 具体结构如下:
![asdf](image/交换机结构.png)
### 路由器router
* 网络层
* 根据IP地址进行路由转发到对应的网络。工作在广域网连接不通的网络。数据转发基于路由表实现。
* 路由器的主要功能有两个:存储转发与路由选择。
* 路由选择主要包括两种方法:静态路由与动态路由。
* 具体结构如下:
![ads](image/路由器结构.png)
### 说明
* 集线器本身不能区分广播域和冲突域,对收到的任何目的地之的消息都进行转发。
* 二层交换机能够区分冲突域,每个端口是一个独立的冲突域,端口之间不会起冲突,会根据不同目的地址进行转发。但是不区分广播域,收到的广播消息会转发给所有同网段的主机。
* 一个交换机下设置同网段的主机会处于同一个局域网下,设置不同网段的主机可以处于不同的局域网下。
* 路由器和主机都具有适配器每个适配器具有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在网络设备接口处决定哪种类型的通信流量被转发、哪种类型的通信流量被阻塞。

View 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实验

View File

@@ -0,0 +1,7 @@
# IPv6实验
1. IPv6基础实验
2. ICMPv6分析
3. IPv6组网实验
4. IPv6地址解析协议
5. OSPFv3协议分析实验

View 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组成的记录。
### 端口聚合
网络接口产生带宽速度限制。多网络接口连接。一台服务器同时通过多个网络接口提供数据传输,提高用户访问速率。应用场景:
* 交换机与交换机之间的连接:汇聚层交换机到核心层交换机或者核心层交换机之间。
* 交换机与服务器之间的连接:集群服务器采用了多网卡与交换机连接提供集中访问。
* 交换机与路由器之间的连接:交换机和路由器采用端口聚合可以解决广域网和局域网连接瓶颈。
* 服务器与服务器之间的连接:集群服务器采用多王凯与路由器连接提供集中访问。
### 端口聚合实现原理
![](image/端口聚合.jpg)
* 两个以太网交换机进行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的帧格式
![](image/VLAN帧格式.jpg)
规定在标准以太网帧添加一个特殊的标志域-tag域。用于表示数据帧所属的VLANID。tag域包括2字节的标签协议IPID和2字节的标签控制信息TCI。TCI包括3bit的优先级信息PriorityCFI说明VLAN格式。
### VLAN标签字段说明
|字段 |长度 |含义取值|
|-|-|-|
|TPID |2Byte| Tag Protocol Identifier标签协议标识符表示数据帧类型。 表示帧类型取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。 各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时 为了能够识别这样的报文实现互通必须在本设备上修改TPID值确保和邻居设备的TPID值配置一致。|
|PRI |3bit| Priority表示数据帧的802.1p优先级。 取值范围为07值越大优先级越高。当网络阻塞时设备优先发送优先级高的数据帧。|
|CFI |1bit| Canonical Format Indicator标准格式指示位表示MAC地址在不同的传输介质中是否以标准格式进行封装用于兼容以太网和令牌环网。 CFI取值为0表示MAC地址以标准格式进行封装为1表示以非标准格式封装。在以太网中CFI的值为0。|
|VID |12bit| VLAN ID表示该数据帧所属VLAN的编号。 VLAN ID取值范围是04095。由于0和4095为协议保留取值所以VLAN ID的有效取值范围是14094。|
### 缺省VLAN
缺省VLAN又称PVIDPort 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 ProtocolNCP用来支持不同的网络层协议。
### PPP帧格式
![](image/PPP帧格式.jpg)
F、A、C字段辅助作用协议0x33表示数据部分是IP数据。用来区分不同协议。
不适用序号和确认机制。因为没用。
### PPP身份认证
![](image/PPP状态图.png)
总的来说分为两个步骤通过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 设计型实验

View 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 设计型实验

View File

@@ -0,0 +1,23 @@
# OSPF协议实验
目录
1. OSPF协议概述及基本配置
2. OSPF协议报文交互过程
3. OSPF协议链路状态描述
4. 区域划分及LSA种类
5. OSPF协议路由的计算
6. OSPF协议组网设计
> 区别
> * OSPF指出了报文类型表示建立可靠数据连接的过程的作用指出了交互逻辑。
> * LSA链路状态通告类型用于反映交互双方携带数据者的逻辑关系。是反映的数据发送者、接受者的逻辑关系而非路由表项的内容。与路由器本身的逻辑位置和逻辑角色有关系。
> * LSA链路状态描述类型反映了一条路由记录的类型是一条记录自身的特点与数据的具体含义有关。
> 联系
> * 链路状态描述信息组成了链路状态通告信息。
> 图片说明
> * 五种链路状态通告类型
> ![](image/OSPF五种链路通告类型.png)
> * 五种链路状态描述类型
> ![](image/OSPF五种链路状态描述类型.png)

View 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设计型实验

View File

@@ -0,0 +1,11 @@
# 网络管理实验
目录
1. 网管软件基本功能实验
2. SNMP基本原理的验证与分析实验
3. 网络拓扑发现实验
## 1 网管软件基本功能实验
## 2 SNMP基本原理的验证与分析实验
## 3 网络拓扑发现实验

View 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简介
边界网关协议BGPBorder Gateway Protocol是一种实现自治系统ASAutonomous System之间的路由可达并选择最佳路由的距离矢量路由协议。
MP-BGP是对BGP-4进行了扩展来达到在不同网络中应用的目的BGP-4原有的消息机制和路由机制并没有改变。MP-BGP在IPv6单播网络上的应用称为BGP4+在IPv4组播网络上的应用称为MBGPMulticast BGP
### 目的
为方便管理规模不断扩大的网络网络被分成了不同的自治系统。1982年外部网关协议EGPExterior Gateway Protocol被用于实现在AS之间动态交换路由信息。但是EGP设计得比较简单只发布网络可达的路由信息而不对路由信息进行优选同时也没有考虑环路避免等问题很快就无法满足网络管理的要求。
BGP是为取代最初的EGP而设计的另一种外部网关协议。不同于最初的EGPBGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息。
虽然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至655354字节AS号的范围为1至4294967295。支持4字节AS号的设备能够与支持2字节AS号的设备兼容。
### BGP分类
BGP按照运行方式分为EBGPExternal/Exterior BGP和IBGPInternal/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报文头
![](image/BGP报文头格式.png)
* **Marker**占16字节用于检查BGP对等体的同步信息是否完整以及用于BGP验证的计算。不使用验证时所有比特均为1十六进制则全“FF”
* **Length**占2个字节无符号位BGP消息总长度包括报文头在内以字节为单位。长度范围是194096。
* **Type**占1个字节无符号位BGP消息的类型。Type有5个可选值表示BGP报文头后面所接的5类报文其中前四种消息是在RFC4271中定义的而Type5的消息则是在RFC2918中定义的
|TYPE值| 报文类型|
|-|-|-|
|1 |OPEN|
|2 |UPDATE|
|3 |NOTIFICATION|
|4 |KEEPALIVE|
|5 |REFRESHRFC2918|
![](image/BGP报文头实例.png)
### OPEN报文
如果BGP报文头中的TYPE为1则该报文为OPEN报文。报文头后面所接的报文内容如下OPEN报文用于建立BGP连接。
* OPEN报文格式
![](image/BGPOPEN报文格式.png)
* 字段说明
|字段|说明|
|-|-|
|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报文实例
![](image/OPEN报文实例.png)
### UPDATE报文
如果BGP报文头中的TYPE为2则该报文为UPDATE报文。报文头后面所接的报文内容如下RFC 4271UPDATE报文用于通告路由。
* UPDATE报文格式
![](image/UPDATE报文格式.png)
* UPDATE报文字段说明
|字段|说明|
|-|-|
|**Error code**|占1个字节无符号位定义错误的类型非特定的错误类型用零表示。|
|**Error subcode**|占1个字节无符号位指定错误细节编号非特定的错误细节编号用零表示。|
|**Data**|指定错误数据内容。|
* UPDATE报文实例
![](image/UPDATE报文实例.png)
### Notification报文
如果BGP报文头中的TYPE为3则该报文为NOTIFICATION报文。报文头后面所接的报文内容如下RFC 4271NOTIFICATION报文用于处理BGP进程中的各种错误。
* Notification报文格式
![](image/Notification报文格式.png)
* Notification报文字段说明
|字段|说明|
|-|-|
|**Error code**|占1个字节无符号位定义错误的类型非特定的错误类型用零表示。|
|**Error subcode**|占1个字节无符号位指定错误细节编号非特定的错误细节编号用零表示。|
|**Data**|指定错误数据内容。|
* Notification实例
[](image/Notification报文实例.png)
### Keepalive报文
如果BGP报文头中的TYPE为4则该报文为KEEPALIVE报文。KEEPALIVE报文用于保持BGP连接。
* Keepalive报文格式
KEEPALIVE报文只有BGP报文头没有具体内容故其报文长度应固定为19个字节。
* Keepalive报文实例
![](image/Keepalive报文实例.png)
### Refresh报文格式
Refresh报文格式
如果BGP报文头中的TYPE为5则该报文为REFRESH报文。报文头后面所接的报文内容如下RFC 2918REFRESH报文用于动态的请求BGP路由发布者重新发布UPDATE报文进行路由更新。
* Refresh报文格式
![](image/Refresh报文格式.png)
* Refresh报文字段说明
|Field字段| Length长度 |Description描述|
|-|-|-|
|AFI |2字节无符号位 |表示地址族id与UPDATE报文中的定义相同。|
|Res. |1字节无符号位 |所有为应全为零,在接收报文时,此位被忽略。|
|SAFI |1字节无符号位 |与UPDATE报文中的定义相同|
* Refresh报文实例
![](image/Refresh报文实例.png)
## 3.2 BGP状态机
BGP对等体的交互过程中存在6种状态机空闲Idle、连接Connect、活跃Active、Open报文已发送OpenSent、Open报文已确认OpenConfirm和连接已建立Established。在BGP对等体建立的过程中通常可见的3个状态是Idle、Active和Established。
![](image/BGP状态机.png)
### 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 transitiveBGP设备可以不识别此类属性如果BGP设备不识别此类属性但它仍然会接收这类属性并通告给其他对等体。
* 非过渡Optional non-transitiveBGP设备可以不识别此类属性如果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属性
MEDMulti-Exit Discriminator属性用于判断流量进入AS时的最佳路由当一个运行BGP的设备通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时在其它条件相同的情况下将优先选择MED值较小者作为最佳路由。
MED属性仅在相邻两个AS之间传递收到此属性的AS一方不会再将其通告给任何其他第三方AS。MED属性可以手动配置如果路由没有配置MED属性BGP选路时将该路由的MED值按缺省值0来处理。
### Community团体属性
团体属性Community用于标识具有相同特征的BGP路由使路由策略的应用更加灵活同时降低了维护管理的难度。
团体属性分为自定义团体属性和公认团体属性。公认团体属性如下所示:
![](image/团体属性说明.png)
### Originator_ID属性和Cluster_List属性
Originator_ID属性和Cluster_List属性用于解决路由反射器场景中的环路问题。
## 6 BGP路由策略
### 路由策略分类
* 路由发布
* 路由接受
* 路由引入
### 路由策略实施机制
![](image/BGP路由策略处理过程.png)
### 与路由选择相关的过滤器
* 路由策略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安全保护机制GTSMGeneralized TTL Security Mechanism两个方法保证BGP对等体间的交互安全。
* BGP认证
BGP认证分为MD5认证和Keychain认证对BGP对等体关系进行认证是提高安全性的有效手段。MD5认证只能为TCP连接设置认证密码而Keychain认证除了可以为TCP连接设置认证密码外还可以对BGP协议报文进行认证。
* BGP GTSM
BGP GTSM检测IP报文头中的TTLtime-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资源严重时会影响到网络的正常工作。
![](image/BGP路由衰减.png)
路由衰减使用惩罚值Penalty value来衡量一条路由的稳定性惩罚值越高说明路由越不稳定。如上图所示路由每发生一次振荡BGP便会给此路由增加1000的惩罚值其余时间惩罚值会慢慢下降。当惩罚值超过抑制阈值suppress value此路由被抑制不加入到路由表中也不再向其他BGP对等体发布更新报文。被抑制的路由每经过一段时间惩罚值便会减少一半这个时间称为半衰期half-life。当惩罚值降到再使用阈值reuse value此路由变为可用并被加入到路由表中同时向其他BGP对等体发布更新报文。从路由被抑制到路由恢复可用的时间称为抑制时间suppress time
路由衰减只对EBGP路由起作用对IBGP路由不起作用。这是因为IBGP路由可能含有本AS的路由而IGP网络要求AS内部路由表尽可能一致。如果路由衰减对IBGP路由起作用那么当不同设备的衰减参数不一致时将会导致路由表不一致。

View File

@@ -0,0 +1,637 @@
# DHCP
> 参考文献
> * [DHCP基础](https://blog.csdn.net/qq_38265137/article/details/80404407)
> * 等到复习的时候过来整理这玩意。
DHCP简介
动态主机配置协议DHCPDynamic Host Configuration Protocol是一种用于集中对用户IP地址进行动态管理和配置的技术。
DHCP采用客户端/服务器通信模式由客户端DHCP Client向服务器DHCP Server提出配置申请服务器返回为客户端分配的配置信息包括IP地址、缺省网关、DNS Server、WINS Server等参数可以实现IP地址动态分配以及其他网络参数的集中配置管理。
DHCP的发展
DHCP是在BOOTPBOOTstrap 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%T1DHCP客户端会自动以单播的方式向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上的高层协议报文采用67DHCP服务器和68DHCP客户端两个端口号。
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选项的取值范围为1255。
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 ClassDHCP服务器选择适当的地址池为客户端分配IP地址以及相关配置参数。Option77一般在客户端由用户进行配置而不必在服务器端配置。
自定义DHCP选项
除了RFC2132中规定的字段选项外还有部分选项内容没有统一规定例如Option82。
Option82称为中继代理信息选项该选项记录了DHCP客户端的位置信息。DHCP中继或DHCP Snooping设备接收到DHCP客户端发送给DHCP服务器的请求报文后在该报文中添加Option82并转发给DHCP服务器。
**管理员可以从Option82中获得DHCP客户端的位置信息以便定位DHCP客户端实现对客户端的安全和计费等控制。**支持Option82的服务器还可以根据该选项的信息制定IP地址和其他参数的分配策略提供更加灵活的地址分配方案。
Option82最多可以包含255个子选项。若定义了Option82则至少要定义一个子选项。目前设备只支持两个子选项sub-option1Circuit ID电路ID子选项和sub-option2Remote ID远程ID子选项
由于Option82的内容没有统一规定不同厂商通常根据需要进行填充。
DHCP的Option82原理
DHCP Relay Agent插入到用户的DHCP报文DHCP服务器通过识别Option82来执行IP地址分配策略或其他策略。
DHCP服务器的响应报文也带Option82Relay 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网段的地址。
unrUer 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网关探测周期。 整数形式取值范围是186400。单位是秒。
retransmit retransmit 指定DHCP Client网关探测重传次数。 整数形式取值范围是110。
timeout time 指定DHCP Client网关探测超时时间。 整数形式取值范围是3002000。单位是毫秒。
应用场景
此命令应用于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

View 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 listacl
[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设备上生成SG表项的超时时间。
//缺省情况下Proxy设备上生成SG表项的超时时间是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
//配置路由器竞选成为DRDesignated 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
//配置路由器上SG或者*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前检查组播数据速率是否达到阈值的时间间隔。
```

View 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生成链路本地地址再根据路由通告报文RARouter 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:2All DHCP Relay Agents and Servers所有DHCPv6服务器和中继代理的组播地址这个地址是链路范围的用于客户端和相邻的服务器及中继代理之间通信。所有DHCPv6服务器和中继代理都是该组的成员。
FF05::1:3All DHCP Servers所有DHCPv6服务器组播地址这个地址是站点范围的用于中继代理和服务器之间的通信站点内的所有DHCPv6服务器都是此组的成员。
UDP端口号
DHCPv6报文承载在UDPv6上。
客户端侦听的UDP目的端口号是546。
服务器、中继代理侦听的UDP端口号是547。
DHCP唯一标识符DUID
DHCP设备唯一标识符DUIDDHCPv6 Unique Identifier每个服务器或客户端有且只有一个唯一标识符服务器使用DUID来识别不同的客户端客户端则使用DUID来识别服务器。
客户端和服务器DUID的内容分别通过DHCPv6报文中的Client Identifier和Server Identifier选项来携带。两种选项的格式一样通过option-code字段的取值来区分是Client Identifier还是Server Identifier选项。
身份联盟IA
身份联盟IAIdentity 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字节 表示报文的类型取值为113具体请参见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服务器地址分配状况

View File

@@ -0,0 +1,88 @@
# ICMPv6
## 1 ICMPv6基本概念
ICMPv6Internet Control Message Protocol for the IPv6是IPv6的基础协议之一。
在IPv4中Internet控制报文协议ICMPInternet Control Message Protocol向源节点报告关于向目的地传输IP数据包过程中的错误和信息。它为诊断、信息和管理目的定义了一些消息目的不可达、数据包超长、超时、回应请求和回应应答等。在IPv6中ICMPv6除了提供ICMPv4常用的功能之外还是其它一些功能的基础如邻接点发现、无状态地址配置包括重复地址检测、PMTU发现等。
## 2 ICMPv6报文格式
ICMPv6的协议类型号即IPv6报文中的Next Header字段的值为58。ICMPv6的报文格式下图所示
![](image/ICMPv6报文格式.png)
|字段|字段说明|
|-|-|
|Type|表明消息的类型0至127表示差错报文类型128至255表示消息报文类型。|
|Code|表示此消息类型细分的类型。|
|Checksum|表示ICMPv6报文的校验和。|
## 3 ICMPv6报文示例
![ICMPv6报文抓包示例](image/ICMPv6报文实例.png)
## 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字段值为2Code字段值为0。
* 时间超时错误报文
在IPv6报文收发过程中当设备收到Hop Limit字段值等于0的数据包或者当设备将Hop Limit字段值减为0时会向发送报文的源节点发送ICMPv6超时错误报文。对于分段重组报文的操作如果超过定时时间也会产生一个ICMPv6超时报文。
时间超时错误报文的Type字段值为3根据错误具体原因又可以细分为
* Code=0在传输中超越了跳数限制。
* Code=1分片重组超时。
* 参数错误报文
当目的节点收到一个IPv6报文时会对报文进行有效性检查如果发现问题会向报文的源节点回应一个ICMPv6参数错误差错报文。
参数错误报文的Type字段值为4根据错误具体原因又可以细分为
* Code=0IPv6基本头或扩展头的某个字段有错误。
* Code=1IPv6基本头或扩展头的NextHeader值不可识别。
* Code=2扩展头中出现未知的选项。
## 5 ICMPv6信息报文
* 回送请求报文回送请求报文用于发送到目标节点以使目标节点立即发回一个回送应答报文。回送请求报文的Type字段值为128Code字段的值为0。
* 回送应答报文当收到一个回送请求报文时ICMPv6会用回送应答报文响应。回送应答报文的Type字段的值为129Code字段的值为0。
* 邻居发现ND
Type=133 路由器请求 RSRouter Solicitation
Type=134 路由器公告 RARouter Advertisement
Type=135 邻居请求 NSNeighbor Solicitation
Type=136 邻居通告 NANeighbor Advertisement
Type=137 重定向Redirect
* 多播侦听发现协议MLD
Type=130 多播听众查询
Type-131 多播听众报告
Type=132 多播听众退出

View File

@@ -0,0 +1,177 @@
# 邻居发现协议NDP
> 参考文献
> * [邻居发现协议](https://blog.csdn.net/qq_38265137/article/details/80466128)
## 1 NDP简介
邻居发现协议NDPNeighbor Discovery Protocol是IPv6协议体系中一个重要的基础协议。邻居发现协议替代了IPv4的ARPAddress 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报文邻居请求报文NSNeighbor Solicitation和邻居通告报文NANeighbor
Advertisement
* NS报文Type字段值为135Code字段值为0在地址解析中的作用类似于IPv4中的ARP请求报文。
* NA报文Type字段值为136Code字段值为0在地址解析中的作用类似于IPv4中的ARP应答报文。
### IPv6地址解析过程
![IPv6地址解析过程](image/IPv6地址解析过程.png)
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
邻居状态的具体迁移过程如下图所示:
![邻居状态迁移的具体过程](image/IPv6邻居状态迁移.png)
下面以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 重复地址检测
### 重复地址检测说明
重复地址检测DADDuplicate Address Detect是在接口使用某个IPv6单播地址之前进行的主要是为了探测是否有其它的节点使用了该地址。尤其是在地址自动配置的时候进行DAD检测是很必要的。一个IPv6单播地址在分配给一个接口之后且通过重复地址检测之前称为试验地址Tentative Address。此时该接口不能使用这个试验地址进行单播通信但是仍然会加入两个组播组ALL-NODES组播组和试验地址所对应的Solicited-Node组播组。
IPv6重复地址检测技术和IPv4中的免费ARP类似节点向试验地址所对应的Solicited-Node组播组发送NS报文。NS报文中目标地址即为该试验地址。如果收到某个其他站点回应的NA报文就证明该地址已被网络上使用节点将不能使用该试验地址通讯。
### 重复地址检测原理
![重复地址检测原理](image/ipv6重复地址检测原理.png)
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状态。
当两端同时检测时情况如下:
![](image/IPv6两端同时重复检测.png)
* 若2个节点配置相同地址同时作重复地址检测时该地址处于Tentative状态当一方收到对方发出的DAD NS则接收方将不启用该地址
* 一种极端的情况如果同时收到NS报文则两端都放弃改地址
### IPv6地址生命周期
![IPv6地址生命周期](image/IPv6地址生命周期.png)
在preferred time和valid lifetime之间叫做deprecated弃用状态当地址达到这个时间段的时候地址不能主动的发起连接只能是被动的接受连接过了valid lifetime时间地址就变为invalid这时任何连接就会down掉。
## 4 路由器发现
路由器发现功能用来发现与本地链路相连的设备,并获取与地址自动配置相关的前缀和其他配置参数。
在IPv6中IPv6地址可以支持无状态的自动配置即主机通过某种机制获取网络前缀信息然后主机自己生成地址的接口标识部分。路由器发现功能是IPv6地址自动配置功能的基础主要通过以下两种报文实现
* 路由器通告RARouter Advertisement报文每台设备为了让二层网络上的主机和设备知道自己的存在定时都会组播发送RA报文RA报文中会带有网络前缀信息及其他一些标志位信息。RA报文的Type字段值为134。
![RA报文](image/IPv6路由通告RA报文.png)
* 路由器请求RSRouter Solicitation报文很多情况下主机接入网络后希望尽快获取网络前缀进行通信此时主机可以立刻发送RS报文网络上的设备将回应RA报文。RS报文的Tpye字段值为133。
![RS报文](image/IPv6路由通告RS报文.png)
### RA报文字段说明
* Cur Hop Limit默认值应当放置在发出IP分组的IP首部的Hop Count字段中。 取0值意味着未(由该路由器)规定。
* MM位为0表示无状态自动配置生成IPv6地址如果M=1表示需要通过有状态DHCPv6方式获取ipv6地址。
* OO位为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报文中的前缀不是分配给本地链路的。主机若想该前缀指定的地址发送报文时需要经过默认路由器转发。
### 路由器发现功能
![路由器发现功能示例](image/IPv6路由发现功能.png)
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报文中会携带更好的路径下一跳地址和需要重定向转发的报文的目的地址等信息。
![重定向示例](image/IPv6重定向.png)
Host A需要和Host B通信Host A的默认网关设备是Router A当Host A发送报文给Host B时报文会被送到Router A。Router A接收到Host A发送的报文以后会发现实际上Host A直接发送给Router B更好它将发送一个重定向报文给主机A其中报文中更好的路径下一跳地址为Router BDestination Address为Host B。Host A接收到了重定向报文之后会在默认路由表中添加一个主机路由以后发往Host B的报文就直接发送给Router B。
当设备收到一个报文后,只有在如下情况下,设备会向报文发送者发送重定向报文:
* 报文的目的地址不是一个组播地址。
* 报文并非通过路由转发给设备。
* 经过路由计算后,路由的下一跳出接口是接收报文的接口。
* 设备发现报文的最佳下一跳IP地址和报文的源IP地址处于同一网段。
* 设备检查报文的源地址,发现自身的邻居表项中有用该地址作为全球单播地址或链路本地地址的邻居存在。

View File

View File

@@ -0,0 +1,272 @@
# IPv6
> 参考文献
> * [IPv6基础笔记](https://blog.csdn.net/qq_38265137/article/details/80439611)
## 1 IPv6简介
IPv6Internet Protocol Version 6是网络层协议的第二代标准协议也被称为IPngIP Next Generation。它是Internet工程任务组IETFInternet Engineering Task Force设计的一套规范是IPv4Internet Protocol Version 4的升级版本。
### 目的
IPv4协议是目前广泛部署的因特网协议。在因特网发展初期IPv4以其协议简单、易于实现、互操作性好的优势而得到快速发展。但随着因特网的迅猛发展IPv4设计的不足也日益明显IPv6的出现解决了IPv4的一些弊端。相比IPv4IPv6具有如下优势
|问题 |IPv4的缺陷| IPv6的优势|
|-|-|-|
|地址空间 |IPv4地址采用32比特标识理论上能够提供的地址数量是43亿由于地址分配的原因实际可使用的数量不到43亿。另外IPv4地址的分配也很不均衡美国占全球地址空间的一半左右而欧洲则相对匮乏亚太地区则更加匮乏。与此同时移动IP和宽带技术的发展需要更多的IP地址。目前IPv4地址已经消耗殆尽。针对IPv4的地址短缺问题也曾先后出现过几种解决方案。比较有代表性的是无类别域间路由CIDRClassless Inter-Domain Routing和网络地址转换NATNetwork 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的认证和加密支持端到端的安全。|
|对QoSQuality 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表示此接口标识全球唯一。
![](image/IPv6地址生成.png)
例如MAC地址000E-0C82-C4D4转换后020E:0CFF:FE82:C4D4。
这种由MAC地址产生IPv6地址接口标识的方法可以减少配置的工作量尤其是当采用无状态地址自动配置时只需要获取一个IPv6前缀就可以与接口标识形成IPv6地址。但是使用这种方式最大的缺点是任何人都可以通过二层MAC地址推算出三层IPv6地址。
### IPv6的地址分类
IPv6地址分为单播地址、任播地址Anycast Address、组播地址三种类型。和IPv4相比取消了广播地址类型以更丰富的组播地址代替同时增加了任播地址类型。
### IPv6单播地址
IPv6单播地址标识了一个接口由于每个接口属于一个节点因此每个节点的任何接口上的单播地址都可以标识这个节点。发往单播地址的报文由此地址标识的接口接收。
IPv6定义了多种单播地址目前常用的单播地址有未指定地址、环回地址、全球单播地址、链路本地地址、唯一本地地址ULAUnique 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、子网IDSubnet ID和接口标识Interface ID组成其格式如下如所示
![](image/IPv6全球单播地址.png)
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报文不会被路由设备转发到其他链路。链路本地地址的格式如下如所示
![](image/IPv6链路本地地址.png)
* 唯一本地地址
唯一本地地址是另一种应用范围受限的地址它仅能在一个站点内使用。由于本地站点地址的废除RFC3879唯一本地地址被用来代替本地站点地址。
唯一本地地址的作用类似于IPv4中的私网地址任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址。唯一本地地址只能在本地网络内部被路由转发而不会在全球网络中被路由转发。唯一本地地址格式如下如所示
![](image/IPv6唯一本地地址.png)
|字段|含义|
|-|-|
|Prefix|前缀固定为FC00::/7。|
|L|L标志位值为1代表该地址为在本地网络范围内使用的地址值为0被保留用于以后扩展。|
|Global ID|全球唯一前缀;通过伪随机方式产生。|
|Subnet ID|子网ID划分子网使用。|
|Interface ID|接口标识。|
唯一本地地址具有如下特点:
* 具有全球唯一的前缀(虽然随机方式产生,但是冲突概率很低)。
* 可以进行网络之间的私有连接,而不必担心地址冲突等问题。
* 具有知名前缀FC00::/7方便边缘设备进行路由过滤。
* 如果出现路由泄漏该地址不会和其他地址冲突不会造成Internet路由冲突。
* 应用中,上层应用程序将这些地址看作全球单播地址对待。
* 独立于互联网服务提供商ISPInternet Service Provider
### IPv6组播地址
IPv6的组播与IPv4相同用来标识一组接口一般这些接口属于不同的节点。一个节点可能属于0到多个组播组。发往组播地址的报文被组播地址标识的所有接口接收。例如组播地址FF02::1表示链路本地范围的所有节点组播地址FF02::2表示链路本地范围的所有路由器。
一个IPv6组播地址由前缀标志Flag字段、范围Scope字段以及组播组IDGlobal ID4个部分组成
* 前缀IPv6组播地址的前缀是FF00::/8。
* 标志字段Flag长度4bit目前只使用了最后一个比特前三位必须置0当该位值为0时表示当前的组播地址是由IANA所分配的一个* 永久分配地址当该值为1时表示当前的组播地址是一个临时组播地址非永久分配地址
* 范围字段Scope长度4bit用来限制组播数据流在网络中发送的范围。
* 组播组IDGroup ID长度112bit用以标识组播组。目前RFC2373并没有将所有的112位都定义成组标识而是建议仅使用该112位的最低32位作为组播组ID将剩余的80位都置0。这样每个组播组ID都映射到一个唯一的以太网组播MAC地址RFC2464
* IPv6组播地址格式如下图:
![IPv6组播地址格式](image/IPv6组播地址格式.png)
**被请求节点组播地址**:
被请求节点组播地址通过节点的单播或任播地址生成。当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。一个单播地址或任播地址对应一个被请求节点组播地址。该地址主要用于邻居发现机制和地址重复检测功能。
IPv6中没有广播地址也不使用ARP。但是仍然需要从IP地址解析到MAC地址的功能。在IPv6中这个功能通过邻居请求NSNeighbor Solicitation报文完成。当一个节点需要解析某个IPv6地址对应的MAC地址时会发送NS报文该报文的目的IP就是需要解析的IPv6地址对应的被请求节点组播地址只有具有该组播地址的节点会检查处理。
被请求节点组播地址由前缀FF02::1:FF00:0/104和单播地址的最后24位组成。
### IPv6任播地址
任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。
任播地址设计用来在给多个主机或者节点提供相同服务时提供冗余功能和负载分担功能。目前任播地址的使用通过共享单播地址方式来完成。将一个单播地址分配给多个节点或者主机这样在网络中如果存在多条该地址路由当发送者发送以任播地址为目的IP的数据报文时发送者无法控制哪台设备能够收到这取决于整个网络中路由协议计算的结果。这种方式可以适用于一些无状态的应用例如DNS等。
IPv6中没有为任播规定单独的地址空间任播地址和单播地址使用相同的地址空间。目前IPv6中任播主要应用于移动IPv6。
IPv6任播地址仅可以被分配给路由设备不能应用于主机。任播地址不能作为IPv6报文的源地址。
* 子网路由器任播地址
子网路由器任播地址是已经定义好的一种任播地址RFC3513。发送到子网路由器任播地址的报文会被发送到该地址标识的子网中路由意义上最近的一个设备。所有设备都必须支持子网任播地址。子网路由器任播地址用于节点需要和远端子网上所有设备中的一个不关心具体是哪一个通信时使用。例如一个移动节点需要和它的“家乡”子网上的所有移动代理中的一个进行通信。
子网路由器任播地址由n bit子网前缀标识子网其余用0填充。格式如下如所示
![子网路由器任播地址](image/IPv6子网路由器任播地址.png)
## 3 IPv6报文格式
IPv6报文由IPv6基本报头、IPv6扩展报头以及上层协议数据单元三部分组成。
上层协议数据单元一般由上层协议报头和它的有效载荷构成有效载荷可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。
### IPv6基本报头
![](image/IPv6基本报文头.png)
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报文抓包示例](image/IPv6报文实例.png)
### 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字段指明了下一个扩展报头的类型如果不存在则指明上层协议的类型
![](image/IPv6扩展头包.png)
|字段|说明|
|-|-|
|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中报文如果过大必须要分片进行发送所以在每个节点发送报文之前设备都会根据发送接口的最大传输单元MTUMaximum 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了。
![](image/IPV6&#32;PMTU原理.png)
整条传输路径需要通过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值。

View 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-LSA1类](#router-lsa1%e7%b1%bb)
- [Network- LSA(2类)](#network--lsa2%e7%b1%bb)
- [Network Summary-LSA3类](#network-summary-lsa3%e7%b1%bb)
- [ASBR Summary-LSA(4类)](#asbr-summary-lsa4%e7%b1%bb)
- [AS External-LSA5类](#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 SystemAS由统一机构管理的使用同一组选路策略的路由器集合。OSPF是自治系统内部的路由选择协议。
区域Area是指一个路由器的集合相同的区域有着相同的拓扑结构数据库。OSPF用区域把一个AS分成多个链路状态。分为骨干区域和非骨干区域。
* 骨干区域区域0骨干区域必须连接所有的非骨干区域而且骨干区域不可分割有且只有一个一般情况下骨干区域内没有终端用户。
* 非骨干区域非0区域非骨干区域一般根据实际情况而划分必须连接到骨干区域不规则区域也需通过tunnel或virtual-link连接到骨干区域。一般情况下费骨干区域主要连接终端用户和资源。
### OSPF路由器逻辑角色
* DRDesignated Router指定路由器OSPF协议启动后开始选举而来
* BDRBack-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广播多路访问网络比如以太网网络类型中DRBDRDRothers三者关系为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报文总体结构
![](image/OSPF报文.jpg)
IP 封装了OSPF报文LSU链路状态更新类型的报文类型的OSPF报文封装了LSA链路状态通告报文LSA报文封装了多个LSA数据。
更具体的封装格式:
IPHeader----OSPFHeader----particularHeader----LSAHeader----LSAData
### OSPF报文头
![](image/OSPF报文头.png)
|字段 |长度 |含义|
|-|-|-|
|Version |1字节 |版本OSPF的版本号。对于OSPFv2来说其值为2。|
|Type |1字节 |类型OSPF报文的类型有下面几种类型1Hello报文2DD报文3LSR报文4LSU报文5LSAck报文。|
Packet length| 2字节| OSPF报文的总长度包括报文头在内单位为字节。
Router ID |4字节 |发送该报文的路由器标识。
Area ID |4字节 |发送该报文的所属区域。
Checksum| 2字节| 校验和,包含除了认证字段的整个报文的校验和。
AuType |2字节 |验证类型,值有如下几种表示, 0不验证1简单认证2MD5认证。
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报文格式
![](image/ospfhello报文格式.png)
* 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报文实例
![](image/OSPFhello报文.png)
### 5中OSPF报文类型-DD报文
DDDatabase Description 本地数据库摘要供路由器核对数据库是否同步。只交换摘要减少带宽占用。包括空DD报文和带有摘要信息的DD报文。空DD报文用来确定Master/Slave关系由Master规定起始序列号每发送一个DD报文序列号加1Slave方使用Master的序列号作为确认。
* OSPF-DD报文格式
![](image/OSPFDD报文格式.png)
* OSPF-DD报文字段说明
|字段 |长度|含义|
|-|-|-|
|Interface MTU |16比特 |在不分片的情况下,此接口最大可发|出的IP报文长度。
|Options |8比特| 可选项E允许Flood AS-External-LSAs|MC转发IP组播报文N/P处理Type-7 LSAsDC处理按需链路。
|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报文实例
![](image/OSPFDD报文实例.png)
### 5种OSPF报文类型-LSR报文
LSRLink-State Request 请求链路状态在数据库同步过程中使用请求其他角色发送自己失去的LSA最新版本。内容包括所需要的LSA的摘要。
* OSPF-LSR报文格式
![](image/OSPFLSR报文格式.png)
* OSPF-LSR报文字段说明
|字段 |长度 |含义|
|-|-|-|
|LS type |32比特| LSA的类型号。|
|Link State ID| 32比特| 根据LSA中的LS Type和LSA description在路由域中描述一个LSA。|
|Advertising Router |32比特 |产生此LSA的路由器的Router ID。|
* OSPF-LSR报文实例
![](image/OSPFLSR报文实例.png)
### 5种OSPF报文类型-LSU报文
LSULink-State Update 链路状态更新用来向对端Router发送其所需要的LSA或者泛洪自己更新的LSA内容是多条LSA全部内容的集合。LSU包括几种类型的LSALSU负责泛洪LSA和响应LSR。LSA只会发送给之前以LSR请求的LSA的直连邻居进行泛洪的时候邻居路由负责把收到的LSA信息重新封装在新的LSU中。
* OSPF-LSU报文格式
![](image/OSPFLSU报文格式.png)
* OSPF-LSU报文字段说明
|字段|长度| 含义|
|-|-|-|
|Number of LSAs |32比特| LSA的数量。|
* OSPF-LSU报文实例
![](image/OSPFLSU报文实例.png)
### 5种OSPF报文类型-LSACK报文
LSACK链路状态确认路由器必须对每个收到的LSA进行LSACK确认但可以用一个LSACK确认多个LSA。
* OSPF-LSACK报文格式
![](image/OSPFLSACK报文格式.png)
* OSPF-LSACK报文字段说明
|字段 |长度 |含义|
|-|-|-|
|LSAs Headers |可变 |通过LSA的头部信息确认收到该LSA。|
* OSPF-LSACK报文实例
![](image/OSPFLSACK报文实例.png)
### OSPF可靠传输机制
采用了确认重传机制确保OSPF路由信息的可靠传输。
### OSPF邻居状态机
![](image/OSPF邻居状态机.png)
邻居状态机的状态说明
* 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报文交互过程
![](image/OSPF报文交互过程.png)
具体步骤
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
![](image/LSAHeader.png)
* 字段说明
|字段 |长度| 含义|
|-|-|-|
|LS age |16比特| LSA产生后所经过的时间以秒为单位。无论LSA是在链路上传送还是保存在LSDB中其值都会在不停的增长。|
|Options |8比特| 可选项E允许泛洪AS-External-LSAMC转发IP组播报文N/P处理Type-7 LSADC处理按需链路。|
|LS type |8比特| LSA的类型Type1Router-LSA Type2Network-LSA Type3Network-summary-LSA Type4ASBR-summary-LSA Type5AS-External-LSA Type7NSSA-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以字节为单位。|
### 五种链路状态通告类型
![](image/OSPF五种链路通告类型.png)
### Router-LSA1类
Router-LSAType1每个路由器都会产生描述了路由器的链路状态和花费在所属的区域内传播。
* Router-LSA通告格式
![](image/Router-LSA通告格式.png)
* 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比特 |路由器所接入的目标其值取决于连接的类型1Router ID2DR的接口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-LSAType2由广播网或NBMA网络中的DR产生,Network-LSA中记录了这一网络上所有路由器的Router
ID描述本网段的链路状态在所属的区域内传播。
* Network-LSA通告格式
![](image/NetworkLSA通告格式.png)
* Network-LSA通告字段说明
|字段| 长度| 含义|
|-|-|-|
|Link State ID |32比特| DR的接口IP地址。|
|Network Mask |32比特| 该广播网或NBMA网络地址的掩码。|
|Attached Router |32比特| 连接在同一个网络上的所有路由器的Router ID也包括DR的Router ID。|
### Network Summary-LSA3类
Network-summary-LSAType3描述区域内所有网段的路由并通告给其他相关区域。ASBR-summary-LSAType4描述到ASBR的路由通告给除ASBR所在区域的其他相关区域。Type3和Type4的LSA有相同的格式它们都是由ABR产生。
* Network Summary-LSA&ASBR Summary-LSA通告格式
![](image/Summary-LSA通告格式.png)
* 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-LSAType4描述到ASBR的路由通告给除ASBR所在区域的其他相关区域。Type3和Type4的LSA有相同的格式它们都是由ABR产生。
### AS External-LSA5类
AS-External-LSAType5由ASBR产生描述到AS外部的路由这是五种LSA中唯一一种通告到所有区域除了Stub区域和NSSA区域的LSA。
* AS External-LSA通告格式
![](image/ASExternal-LSA通告格式.png)
* 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种网络拓扑结构
![](image/四中网络类型.png)
* 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值|
![](image/OSPF五种链路状态描述类型.png)
### 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路由的计算过程
### 路由的类型和优选顺序

View 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规定度量值取015之间的整数大于或等于16的跳数被定义为无穷大即目的网络或主机不可达。由于这个限制使得RIP不可能在大型网络中得到应用。
RIPv1报文
RIP-1报文由头部Header和多个路由表项Route Entries部分组成。在一个RIP报文中最多可以有25个路由表项。RIP是一个基于UDP协议的并且RIP-1的数据包不能超过512字节。
RIPv1报文格式
字段解释:
字段名 长度 含义
Command 8比特 标识报文的类型1Request报文向邻居请求全部或部分路由信息2Reponse报文发送自己全部或部分路由信息一个Response报文中最多包含25个路由表项。
Version 8比特 RIP的版本号1RIP-12RIP-2
Must be zero 16/32比特 必须为零字段。
AFIAddress 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 timerRIP设备如果在老化时间内没有收到邻居发来的路由更新报文则认为该路由不可达。
垃圾收集定时器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比特 标识报文的类型1Request报文向邻居请求全部或部分路由信息2Reponse报文发送自己全部或部分路由信息一个Response报文中最多包含25个路由表项。
Version 8比特 RIP的版本号1RIP-12RIP-2
Must be zero 16比特 必须为零字段。
AFIAddress 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不能支持VLSMRIPv2可以支持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/24metric=2和10.1.2.0/24metric=3这两条路由会聚合成自然网段路由10.0.0.0/8metric=2。RIP2聚合是按类聚合的聚合得到最优的metric值。
基于接口的聚合:
用户可以指定聚合地址。比如对于10.1.1.0/24metric=2和10.1.2.0/24metric=3这两条路由可以在指定接口上配置聚合路由10.1.0.0/16metric=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由此避免了路由环路的产生。
对于NBMANon-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联动
网络上的链路故障会导致路由器重新计算路由,因此缩短路由协议的收敛时间对于提高网络性能是非常重要的。加快故障感知速度并快速通告给路由协议是一种可行的方案。
双向转发检测BFDBidirectional 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

View File

@@ -0,0 +1,246 @@
# STP 协议
## 1 STP简介
### STP概述
生成树协议STPSpanning Tree Protocol将环形网络修剪成为一个无环的树型网络避免报文在环形网络中的增生和无限循环。
在一个复杂的网络环境中,难免会出现环路。由于冗余备份的需要,网络设计者都倾向于在设备之间部署多条物理链路,其中一条作主用链路,其他链路作备份,这样都有可能会导致环路产生。
环路会产生广播风暴最终导致整个网络资源被耗尽网络瘫痪不可用。环路还会引起MAC地址表震荡导致MAC地址表项被破坏。
为了破除环路可以采用数据链路层协议STP运行该协议的设备通过彼此交互信息发现网络中的环路并有选择的对某个端口进行阻塞最终将环形网络结构修剪成无环路的树形网络结构从而防止报文在环形网络中不断循环避免设备由于重复接收相同的报文造成处理能力下降。
### STP相关概念
* 根桥
树形网络结构必须有树根于是STP/RSTP引入了根桥Root Bridge概念。
对于一个STP/RSTP网络根桥有且只有一个它是整个网络的逻辑中心但不一定是物理中心。但是根据网络拓扑的变化根桥可能改变。
* BIDBridge ID桥ID
IEEE 802.1d标准中规定BID是由2字节的桥优先级Bridge Priority与桥MAC地址构成即BID8字节 = 桥优先级2字节 + 桥MAC6字节
在STP网络中桥ID最小的设备会被选举为根桥。在华为公司的设备上桥优先级支持手工配置。
* PIDPort ID端口ID
PID由两部分构成的即PID16位 = 端口优先级4位 + 端口号12位
PID只在某些情况下对选择指定端口有作用即在选择指定端口时两个端口的根路径开销和发送交换设备BID都相同的情况下比较端口的PIDPID小者为指定端口。
* 路径开销RPC
路径开销是STP/RSTP协议用于选择链路的参考值。STP/RSTP协议通过计算路径开销选择较为“强壮”的链路阻塞多余的链路将网络修剪成无环路的树形网络结构。根设备的端口的路径开销都为0。
在一个STP/RSTP网络中某端口到根桥累计的路径开销就是所经过的各个桥上的各端口的开销。
* PCport 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报文格式
![](image/STP报文格式.png)
### STP报文字段解释
|字段内容 |说明|
|-|-|
|Protocol Identifier |协议ID“0”|
|Protocol Version Identifier |协议版本标识符STP为0RSTP为2MSTP为3。|
|BPDU Type |BPDU类型MSTP为0x02。0x00STP的Configuration BPDU0x80STP的TCN BPDUTopology Change Notification BPDU0x02RST BPDURapid Spanning-Tree BPDU或者MST BPDUMultiple 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报文抓包示例
![](image/STP报文实例.png)
## 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. 比较到达根桥的RPCRoot Path Cost越小越优。
3. 比较BPDU包发送者的BID越小越优。
4. 比较BPDU包发送者的PID越小越优。
5. 比较BPDU包接收者的PID越小越优。
### BPDU报文的两种类型
* 配置BPDU
包含了桥ID路径开销端口ID等参数。
* TCN BPDU
指下游交换机感知到拓扑发生变化时向上游交换机发送的拓扑变化通知。用以快速刷新MAC地址表。
### STP故障
* 根桥故障
非根桥会在BPDU老化之后开始根桥的重新选举。
* 直连链路故障
交换机检测到直连链路故障后,会将预备端口转换为根端口。
预备端口会在30s后恢复到转发状态。
* 间接链路故障
间接链路故障进入到转发状态需要50sMAX age + Forwarding delay * 2
* 拓扑改变导致MAC地址表错误
MAC地址默认老化时间为300s这段时间内无法转发数据。
### STP用于拓扑改变的报文
TCN BPDU报文拓扑改变通知。
TCN BPDU报文只能由非根桥发出通告给根桥。
TCA BPDU报文用于确认接收到的TCN PBDU报文。
TC BPDU报文只能由根桥发起连续发送35sMAX 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.1tdot1t标准方法。
[接口视图]stp cost 100
//设置当前端口的路径开销值。
//使用华为计算方法时参数cost取值范围是1200000。
//使用IEEE 802.1d标准方法时取值范围是165535。
//使用IEEE 802.1t标准方法时取值范围是1200000000。
[接口视图] stp port priority 128
//配置端口的优先级。缺省情况下交换设备端口的优先级取值是128。
stp enable //使能交换设备的STP功能。缺省情况下设备的STP/RSTP功能处于启用状态。
stp converge { fast | normal}
//配置端口的收敛方式
//根据对ARP表项的处理方式不同STP/RSTP的收敛方式分为fast和normal两种
//fastARP表将需要更新的表项直接删除。
//normalARP表中需要更新的表项快速老化。
//交换设备将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拓扑变化相关的统计信息
```

View File

@@ -0,0 +1,372 @@
# VLAN技术
> 参考文献
> * [VLAN基础知识](https://blog.csdn.net/qq_38265137/article/details/80390759)
> * 可以等到以后复习的时候,补充完整这一块。
VLAN简介
定义:
VLANVirtual Local Area Network即虚拟局域网是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信而VLAN间不能直接通信从而将广播报文限制在一个VLAN内。
目的:
以太网是一种基于CSMA/CDCarrier 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优先级。 取值范围为07值越大优先级越高。当网络阻塞时设备优先发送优先级高的数据帧。
CFI 1bit Canonical Format Indicator标准格式指示位表示MAC地址在不同的传输介质中是否以标准格式进行封装用于兼容以太网和令牌环网。 CFI取值为0表示MAC地址以标准格式进行封装为1表示以非标准格式封装。在以太网中CFI的值为0。
VID 12bit VLAN ID表示该数据帧所属VLAN的编号。 VLAN ID取值范围是04095。由于0和4095为协议保留取值所以VLAN ID的有效取值范围是14094。
设备利用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又称PVIDPort 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是否为其允许通过的VLANAccess接口允许通过的VLAN就是缺省VLAN来判断是否接收。
当发送数据帧时:
Access接口直接剥离数据帧中的VLAN标签。
Trunk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签。
Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签。
因此Access接口发出的数据帧肯定不带TagTrunk接口发出的数据帧只有一个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的TagTag的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地址+VID1-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内互访的步骤12一样的过程后报文被广播到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内互访的步骤36一样的过程后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内互访的步骤79一样。
可见干道链路除可传输多个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_1Router给报文添加VID=2的TagTag的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.2Router_2上静态路由的目的网段是10.1.1.0/24下一跳是10.1.4.1。
当用户主机Host_1发送报文给用户主机Host_2时报文的发送过程如下假设Router_1和Router_2上还未建立任何转发表项
与同设备VLAN间互访的步骤16一样经过“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/24VLANIF3对应的网段下一跳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_1Router_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间互访的步骤69一样经过“查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 VLANMultiplex 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/24VLANIF10对应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和VLAN10Router_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地址判断进行三层转发查三层转发表项没有找到匹配项上送CPUCPU查路由表发现目的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
#

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Some files were not shown because too many files have changed in this diff Show More