This commit is contained in:
estomm
2019-11-03 14:23:27 +08:00
parent 7c1dd08072
commit a0a0bc02bc
20 changed files with 594 additions and 396 deletions

11
TASK.md
View File

@@ -1,6 +1,7 @@
# 任务清单
> 感觉这玩意有点像无主之地的任务列表
> * 感觉这玩意有点像无主之地的任务列表
> * 需要提高自己的执行效率,像话这么多时间搞计网实验,就全乱了。
## 待完成任务
@@ -10,7 +11,10 @@
- [ ] 编程__2019.10.25__神经网络算法学习与实现。完成具体任务。
- [ ] 编程__2019.10.01__C++拓展深入学习(需要一本书,以及相关的教程)
- [ ] 编程__2019.10.07__C++与Python数据可视化工具
- [ ] 编程__2019.10.10__基础算法复习及C++实现
- [ ] 编程__2019.11.10__数据结构复习整理笔记+C++代码实现
- [ ] 编程__2019.10.10__基础算法复习+C++实现
- [ ] 编程__2019.11.20__编译原理复习+重新整理笔记
- [ ] 编程__2019.11.30__程序设计语言原理学习+笔记整理
- [ ] 文献__2019.10.30__Latex模板整理基础内容可能不需要整理因为只要有一份参考文档可以随时查阅就行了但是需要整理自己能够使用的latex论文模板
@@ -25,6 +29,9 @@
- [ ] 学习__2019.10.25__Excel
- [ ] 学习__2019.10.30__Word
## 已完成任务
- [x] 学习__2019.09.20__概率基础知识补充

View File

@@ -0,0 +1,97 @@
# Ethernet
> 以太网不是网络的统称,是一种是先局域网的方式。
## 1 计算机网络
### 网络结点分布
* 局域网Local Area NetworkLAN是一种在小范围内实现的计算机网络一般在一个建筑物内或一个工厂、一个事业单位内部为单位独有。局域网距离可在十几公里以内信道传输速率可达1~20Mbps结构简单布线容易。
* 广域网Wide Area NetworkWAN范围很广可以分布在一个省内、一个国家或几个国家。广域网信道传输速率较低一般小于0.1Mbps,结构比较复杂。
* 城域网Metropolitan Area NetworkMAN是在一个城市内部组建的计算机信息网络提供全市的信息服务。
目前,我国许多城市正在建设城域网。
### 交换方式
* 线路交换Circurt Switching最早出现在电话系统中早期的计算机网络就是采用此方式来传输数据的数字信号经过变换成为模拟信号后才能在线路上传输。
* 报文交换Message Switching是一种数字化网络。当通信开始时源机发出的一个报文被存储在交换器里交换器根据报文的目的地址选择合适的路径发送报文这种方式称做存储-转发方式。
* 分组交换Packet Switching也采用报文传输但它不是以不定长的报文做传输的基本单位而是将一个长的报文划分为许多定长的报文分组以分组作为传输的基本单位。这不仅大大简化了对计算机存储器的管理而且也加速了信息在网络中的传播速度。由于分组交换优于线路交换和报文交换具有许多优点因此它已成为计算机网络的主流。
### 网络拓扑结构
* 星型网络
* 树型网络
* 总线型网络
* 环型网络
* 网状网络
## 2 概念区分
### 以太网Ethernet
以太网不是一种具体的网络,是一种**技术规范**。以太网Ethernet是当今现有局域网采用的最通用的通信协议标准。以太网络使用CSMA/CD载波监听多路访问及冲突检测技术并以10M/S的速率仅指标准以太网的速率而已运行在多种类型的电缆上。以太网与IEEE802.3系列标准相类似。以太网可以说是局域网的一种。局域网之间的通信协议必须是相同的,即局域网内计算机(或计算机网络)只允许使用同一种通信规则进行通信。而
### 局域网
现阶段成熟的**局域网技术**有三种以太网Ethernet、令牌环Token Ring和光纤分布式数据接口FDDI其中以太网技术逐步成为局域网技术的主流。
### Internet因特网
> 是一个具体的网络。就跟说你家的网络、他家的网络一样。不是一种技术(以太网技术),也不是一种网络(局域网等,包括很多个网络)。
是广域网的一个。是指一个具体的计算机网络。Internet 是一个专有名词,它是指当前全球最大的、开放的、有众多网络互相连接而成的特定的计算机网络,它采用 TCP/IP 协议族作为通信的规则其前身是美国的ARPNET。
一般说互联网也指因特网。
## 3 Ethernet的拓扑结构
以太网拓扑常常是星型拓扑,星型拓扑中心常常是一种可靠性很高的设备,叫做集线器。使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用 CSMA/CD协议并共享逻辑上的总线。集线器像一个多接口的转发器工作在物理层。
![](image/Ethernet拓扑结构.png)
## 4 Ethernet的帧格式
数据链路层的MAC帧分为五部分
* 目的MAC地址
* 原MAC地址
* 类型(网络层使用的协议)
* 数据网络层的IP数据报
* FCS帧检验序列
![](image/EthernetMAC帧.png)
## 5 Ethernet扩展
通过光纤连接集线器,可以使以太网在距离上扩展;通过集线器级联,使网络中的计算机增加,但是组建了一个大的冲突域,通信效率降低了。为了优化扩展后的以太网性能,可以使用网桥和交换机设备。
### 网桥
在交换机还没有出现以前,可以使用网桥来连接两个集线器进行通信。最大的作用是防止了集线器之间的数据传输冲突,将冲突控制在单个集线器范围内,隔离大的冲突域,减少冲突的几率。
网桥工作在数据链路层它根据MAC帧的目的地址对收到的帧进行转发。
网桥具有过滤帧的功能。当网桥收到一个帧时并不是向所有的接口转发此帧而是先检查此帧的目的MAC地址然后再确定将该帧转发到哪一个接口。
### 交换机
随着连接的集线器越来越多,网桥慢慢发展演变成交换机。
交换机是现在主流的局域网的交换设备,它有许多接口,直接和计算机相连接。
交换机通过学习构建MAC地址表并根据MAC地址定向地存储转发数据避免了广播式的数据发送具有更高的安全性。
## 6 MAC地址表
## 7 链路聚合-端口聚合
### 端口聚合的需求和应用
交换机与路由器之间的连接:交换机和路由器采用端口聚合可以解决广域网和局域网连接的瓶颈。
### 端口聚合的实现原理

View File

@@ -228,18 +228,29 @@ display ip routing-table
# 开启VLAN的三成转发
[S]inter vlan 2
[S-vlan-interface2]ip address 192.168.2.1 255.255.255.0
# 重置
[user]reset ospf all process
# 显示
[user]display ospf peer/brief/error/routing
# 调试
[user]debugging ospf event/lsa/packet/spf
```
## 4 OSPF协议实验
### OSPF基本配置
### OSPF状态显示
```
# display ospf命令的说明下面是三个不同的表格。
display ospf peer //显示的是邻居信息,有几个邻居路由器
display ospf routing //是路由信息具体用来决定从哪个接口寻找下一跳。通过lsdb与ospf算法计算而来。
display ospf lsdb //是整个区域的链路拓扑结构即通过lsa链路状态通告而来。
display adjacent-table //显示邻接信息
# router id相关命令
[user]display ospf brief //显示基本配置信息
[user]display ospf peer //显示的是邻居信息,有几个邻居路由器
[user]display ospf routing //是路由信息具体用来决定从哪个接口寻找下一跳。通过lsdb与ospf算法计算而来。
[user]display ospf lsdb //是整个区域的链路拓扑结构即通过lsa链路状态通告而来
[user]display adjacent-table //显示邻接信息。
```
### OSPF基本配置
```
# ospf启动相关命令
[system]router id router-id //设置router id
[system]undo router id //删除router id
@@ -251,25 +262,30 @@ display adjacent-table //显示邻接信息。
[area]network ip-address wildcard-mask //指定网段运行OSPF协议
[area]undo network ip-address wildcard-mask //取消网段运行OSPF协议
```
### ospf路由引入
# 重置
[user]reset ospf all process
# 显示
[user]display ospf peer/brief/error/routing
# 调试
[user]debugging ospf event/lsa/packet/spf
* 直连路由直连路由就是路由器直接连接的网段信息的路由是链路层直接发现的路由又不需要写网络号掩码什么的信息就是条死命令。import route direct引入
```
# ospf引入命令。import-route命令用来配置引入外部路由信息。undo import-route命令用来取消引入外部路由信息。
[ospf]import-route direct/static
# 用来显示ospf的lsdb链路状态数据库自组织成第一类router-lsa的内容。
[R]dis ospf 1 lsdb router self-originate
[ospf]import-route protocol [ process-id | all-processes | allow-ibgp ] [ cost cost | type type | tag tag | route-policy route-policy-name ] *
[ospf]undo import-route protocol [ process-id | all-processes ]
```
### ospf自组织LSA
```
# 显示ospf的lsdb自组织成第一类router-lsa的内容。
[R]dis ospf lsdb router
# ospf的lsdb自组织第二类network-lsa
[R]dis ospf 1 lsdb network self-originate
[R]dis ospf lsdb network
# ospf的lsdb自组织第三类第四类summary lsa
[R]dis ospf 1 lsdb summary self-originate
[R]dis ospf lsdb summary
# ospf的lsdb自组织第五类lsa
[R]dis ospf lsdb ase
```
## 5 BGP实验
### BGP 基本分析
```
@@ -284,19 +300,19 @@ router-id 1.1.1.1 //配置BGP的router-id
[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]group 1 [ external | internal ]//创建对等体组。
[BGP]peer 1 as-number 100//配置EBGP对等体组的AS号。
[BGP]peer 12.1.1.2 group 1//向对等体组中加入对等体
# 配置BGP引入路由BGP协议本身不发现路由因此需要将其他路由如IGP路由等引入到BGP路由表中从而将这些路由在AS之内和AS之间传播。BGP协议支持通过以下两种方式引入路由
Import方式按协议类型将RIP路由、OSPF路由、ISIS路由等协议的路由引入到BGP路由表中。为了保证引入的IGP路由的有效性Import方式还可以引入静态路由和直连路由。
# Import方式按协议类型将RIP路由、OSPF路由、ISIS路由等协议的路由引入到BGP路由表中。为了保证引入的IGP路由的有效性Import方式还可以引入静态路由和直连路由。
Network方式逐条将IP路由表中已经存在的路由引入到BGP路由表中比Import方式更精确。
# Network方式逐条将IP路由表中已经存在的路由引入到BGP路由表中比Import方式更精确。
import-router protocol //引入路由
default-route imported//允许BGP引入本地IP路由表中已经存在的缺省路由。
network 1.1.1.1 mask //配置BGP逐条引入IPv4路由表或IPv6路由表中的路由。
[BGP]import-router protocol //引入路由
[BGP]default-route imported//允许BGP引入本地IP路由表中已经存在的缺省路由。
[BGP]network 1.1.1.1 mask //配置BGP逐条引入IPv4路由表或IPv6路由表中的路由。
```
### BGP状态转换分析

View File

@@ -37,6 +37,7 @@
- [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)
- [链路状态描述信息与链路状态通告信息关系](#%e9%93%be%e8%b7%af%e7%8a%b6%e6%80%81%e6%8f%8f%e8%bf%b0%e4%bf%a1%e6%81%af%e4%b8%8e%e9%93%be%e8%b7%af%e7%8a%b6%e6%80%81%e9%80%9a%e5%91%8a%e4%bf%a1%e6%81%af%e5%85%b3%e7%b3%bb)
- [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)
@@ -49,6 +50,7 @@
- [区域间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)
- [一个SPF算法运行的实例分析来自课本](#%e4%b8%80%e4%b8%aaspf%e7%ae%97%e6%b3%95%e8%bf%90%e8%a1%8c%e7%9a%84%e5%ae%9e%e4%be%8b%e5%88%86%e6%9e%90%e6%9d%a5%e8%87%aa%e8%af%be%e6%9c%ac)
@@ -291,7 +293,7 @@ LSACK链路状态确认路由器必须对每个收到的LSA进行LSACK确
## 3 OSPF协议链路状态描述
> 主要介绍了LSA链路状态通告和与LSA有关的逻辑关系
> 主要介绍了LSA链路状态通告和与LSA有关的逻辑关系。这一部分主要讲解了OSPF如何来描述整个网路即如何生成LSDB。下一部分主要讲解通过LSDBOSPF计算得到ospf routing table的过程。
链路状态描述即使用链路状态通告。不同的链路类型课能对应不同的链路状态通告。每种链路状态通告包括两部分,链路状态通告的头部信息,和链路状态的通告的数据内容。
@@ -431,6 +433,36 @@ AS-External-LSAType5由ASBR产生描述到AS外部的路由这是
![](image/OSPF五种链路状态描述类型.png)
### 链路状态描述信息与链路状态通告信息关系
> 重要:关系理解
链路状态信息组成了链路状态通告信息。链路状态描述信息通过接口链路类型区别。链路状态通告类型,通同路由器逻辑作用区别。
当使用以太网连接路由器的一个端口的时候这个时候默认为广播类型默认网络结构为全连接网络默认生成第二类LSA。
第一类链路状态通告信息LSARouter中链路状态描述信息
* Stub类型的网络Serial
* 使用StubNet链路状态描述信息描述链路的网段信息
* PPP网络Serial
* 使用StubNet链路状态描述信息描述相连的网段信息
* 使用p2p链路状态描述信息描述相连的路由器信息
* 点到多点Serial
* 使用StubNet链路状态描述信息描述相连的网段信息
* 使用p2p链路状态描述信息描述相连的路由器。
* 以太网连接Ethernet
* 使用TransNet链路状态描述信息描述网段信息。
第二类链路状态通告信息LSANetwork中的链路状态描述
* 全连接网络(或者说,以太网连接网络)
* 直接描述同一个网段的全连接路由器。
第三类链路状态通告信息LSASumNet
第四类链路状态通告信息LSASumASB
### DR与BDR的选举
1. 登记本网段内运行OSPF的路由器
2. 登记具有DR候选资格的路由器即本网段内的Priority>0的OSPF路由器Priority可以手工配置缺省值是1
@@ -479,11 +511,48 @@ ASBR可以在系统中的任何位置。将其他路由协议包括静态路
### SPF算法和COST值
* SPF算法-Dijkstra算法。
根据链路状态数据库还原网络区域的拓扑结构图。SPF算法根据甲醛有向图以该路由器为根计算最小生成树获得到每一个目的网段的路由。
* Cost值
链路花费。值越小链路带宽越高。OSPF中的COST值一般为$10^8/链路宽带$。
### 区域内OSPF路由计算过程
> LSA描述路由器本地状态--报文交互-->生成LSDB--SPF算法-->LS Routing
1. 每台路由器根据自己周围的网络拓扑结构生成一条LSA静态。通过相互之间发送协议报文将LSA发送给网络中相邻的路由器动态交互。网络中所有的路由器具有所有的相同的LSA构成的LSDB。
2. LSDB是对整个网络拓扑结构的描述。使用LSDB生成带权有向图。
3. 每台路由器运行SPF算法计算最短路径树。
### 区域间OSPF路由计算过程
1. 同一个区域内的路由器之间会保持LSDB的同步。网络拓扑结构的变化首先在区域内更新。
2. 区域之间通过ABR来完成。生成Type3的LSA
3. 另一个区域根据Type3的LSA生成路由下一跳都指向ABR
### 区域外OSPF路由的计算过程
1. 第一类外部路由接受的IGP路由。第一类外部路由开销=本路由器到ASBR开销+ASBR到目的地址开销。
2. 第二类外部路由接受的EGP路由。第二类外部路由开销=ASBR到目的地之的开销。
### 路由的类型和优选顺序
1. 优选区域内路由
2. 优选区域间路由
3. 优选自治系统Tpye1类外部路由
4. 优选自制系统Type2类外部路由
5. 若都相等,添加等值路由。
### 一个SPF算法运行的实例分析来自课本
1. 每个路由器生成了第一类LSA

View File

@@ -0,0 +1,63 @@
# Q&A
## LSA链路状态通告信息类型与链路状态描述信息的区别
LSA链路状态通告信息用来实现整个网络结构的链路状态的描述。每个LSA描述一个路由器周围的拓扑结构。不同类别的LSA描述不同类别不同逻辑地位的拓扑结构。
比如第一类用来描述Router状态周围的链路。第二类用来描述以太网连接的网段中DR与周围连接的路由器。第三类到第五类LSA用来描述某个区域的总体特征。
链路状态描述信息用来实现第一类LSA。因为一个路由器周围的链路类型不同所以用不同的链路状态描述信息表述一个路由器周围的链路具体特点。
## 区别display ospf routing与ospf lsdb
ospf lsdb用来存储链路状态交互后的结果存储整个链路的拓扑结构。
ospf routing是根据链路的拓扑结构使用SPF算法计算的单源最短路。
## 关于import direct 和import static的理解。
import direct 引入直连路由。将路由器其他接口直连的网段引入到OSPF系统中。能在OSPFlsdb中查看。
import static 引入静态路由。将路由器中手动添加的静态路由直接引入到OSPF系统中。能在OSPFlsdb中查看。
## 网络层实验IP路由转发说明
(网络层 ip路由部分 没有学好啊)
### 路由来源说明
* 直连路由当路由设备配置连接完成之后会根据所有的接口IP地址生成直连路由。
* 到每个接口的直接路由地址NextHop为自身路由器的回环IP地址接口是InLoop表示会将数据包直接交付给自身。
* 到每个接口的直连的网段的地址NextHop为自身路由器连接该网段的IP地址接口是自身路由器连接该网段的接口。
![](image/ip routing table.png)
* 动态路由根据OSPF、RIP、BGP生成的路由。Proto表示是dynamic。
* 静态路由通过ip-route static 配置的路由,手动导入的路由。
### 路由转发算法说明
1. 提取IP数据报的IP地址。
2. 直连网络检查。对路由器相连的直连网络逐个检查如果NextHop为回环地址Interface为回环接口直接交付。
3. 若果没有匹配的地址采取最长前缀匹配机制找到对应的网段查看NextHop和Interface字段找到在路由器上对应的下一跳的地址和本路由器上对应的接口进行转发。
4. 如果都没有,则丢弃报错。
## 同一个路由器的两个接口能否ping通
经过测试能ping通。
因为一旦配置连接完成在路由器内生成直连路由使得路由器能够ping通各个直连的网段和自身其他接口。
## OSPF相关的表格的总结
> 以后再进行简单的分析
display ospf lsdb
display ospf routing
display ip routing
![](image/ip routing table.png)

View File

@@ -3,370 +3,211 @@
> * [VLAN基础知识](https://blog.csdn.net/qq_38265137/article/details/80390759)
> * 可以等到以后复习的时候,补充完整这一块。
VLAN简介
定义:
## 1 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内节省了带宽提高了网络处理能力。
* 增强局域网的安全性不同VLAN内的报文在传输时是相互隔离的即一个VLAN内的用户不能和其它VLAN内的用户直接通信。
* 提高了网络的健壮性故障被限制在一个VLAN内本VLAN内的故障不会影响其他VLAN的正常工作。
* 灵活构建虚拟工作组用VLAN可以划分不同的用户到不同的工作组同一工作组的用户也不必局限于某一固定的物理范围网络构建和维护更方便灵活。
图:VLAN数据帧格式
## 2 VLAN帧格式
![VLAN数据帧格式](image/VLAN帧格式.png)
字段解释:
字段 长度 含义 取值
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。
|字段| 长度| 含义| 取值|
|-|-|-|-|
|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标签情况
## 3 VLAN标签
### VLAN标签
要使设备能够分辨不同VLAN的报文需要在报文中添加标识VLAN信息的字段。IEEE 802.1Q协议规定在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签又称VLAN Tag简称Tag用以标识VLAN信息。
### 常用设备收发数据帧的VLAN标签情况
在一个VLAN交换网络中以太网帧主要有以下两种格式
有标记帧Tagged帧加入了4字节VLAN标签的帧。
无标记帧Untagged帧原始的、未加入4字节VLAN标签的帧。
* 有标记帧Tagged帧加入了4字节VLAN标签的帧。
* 无标记帧Untagged帧原始的、未加入4字节VLAN标签的帧。
常用设备中:
用户主机、服务器、Hub只能收发Untagged帧。
交换机、路由器和AC既能收发Tagged帧也能收发Untagged帧。
语音终端、AP等设备可以同时收发一个Tagged帧和一个Untagged帧。
为了提高处理效率设备内部处理的数据帧一律都是Tagged帧。
* 用户主机、服务器、Hub只能收发Untagged帧。
* 交换机、路由器和AC既能收发Tagged帧也能收发Untagged帧。
* 语音终端、AP等设备可以同时收发一个Tagged帧和一个Untagged帧。
* 为了提高处理效率设备内部处理的数据帧一律都是Tagged帧。
链路类型和接口类型:
设备内部处理的数据帧一律都带有VLAN标签而现网中的设备有些只会收发Untagged帧要与这些设备交互,就需要接口能够识别Untagged帧并在收发时给帧添加、剥除VLAN标签。同时现网中属于同一个VLAN的用户可能会被连接在不同的设备上且跨越设备的VLAN可能不止一个如果需要用户间的互通就需要设备间的接口能够同时识别和发送多个VLAN的数据帧。
### 链路类型
设备内部处理的数据帧一律都带有VLAN标签而现网中的设备有些只会收发Untagged帧需要接口能够识别Untagged帧并在收发时给帧添加、剥除VLAN标签。
为了适应不同的连接和组网设备定义了Access接口、Trunk接口和Hybrid接口3种接口类型以及接入链路Access Link和干道链路Trunk Link两种链路类型。
设备定义接入链路Access Link和干道链路Trunk Link两种链路类型。根据链路中需要承载的VLAN数目的不同以太网链路分为
链路类型:
根据链路中需要承载的VLAN数目的不同以太网链路分为
* 接入链路
接入链路
接入链路只可以承载1个VLAN的数据帧用于连接设备和用户终端如用户主机、服务器等。通常情况下用户终端并不需要知道自己属于哪个VLAN也不能识别带有Tag的帧所以在接入链路上传输的帧都是Untagged帧。
接入链路只可以承载1个VLAN的数据帧用于连接设备和用户终端如用户主机、服务器等。通常情况下用户终端并不需要知道自己属于哪个VLAN也不能识别带有Tag的帧所以在接入链路上传输的帧都是Untagged帧。
* 干道链路
干道链路
干道链路可以承载多个不同VLAN的数据帧用于设备间互连。为了保证其它网络设备能够正确识别数据帧中的VLAN信息在干道链路上传输的数据帧必须都打上Tag。
干道链路可以承载多个不同VLAN的数据帧用于设备间互连。为了保证其它网络设备能够正确识别数据帧中的VLAN信息在干道链路上传输的数据帧必须都打上Tag。
### 接口类型
设备定义了Access接口、Trunk接口和Hybrid接口3种接口类型。根据接口连接对象以及对收发数据帧处理的不同以太网接口分为
接口类型:
根据接口连接对象以及对收发数据帧处理的不同,以太网接口分为:
* Access接口
Access接口
Access接口一般用于和不能识别Tag的用户终端如用户主机、服务器等相连或者不需要区分不同VLAN成员时使用。它只能收发Untagged帧且只能为Untagged帧添加唯一VLAN的Tag。
Access接口一般用于和不能识别Tag的用户终端如用户主机、服务器等相连或者不需要区分不同VLAN成员时使用。它只能收发Untagged帧且只能为Untagged帧添加唯一VLAN的Tag。
* Trunk接口
Trunk接口
Trunk接口一般用于连接交换机、路由器、AP以及可同时收发Tagged帧和Untagged帧的语音终端。它可以允许多个VLAN的帧带Tag通过但只允许一个VLAN的帧从该类接口上发出时不带Tag即剥除Tag
Trunk接口一般用于连接交换机、路由器、AP以及可同时收发Tagged帧和Untagged帧的语音终端。它可以允许多个VLAN的帧带Tag通过但只允许一个VLAN的帧从该类接口上发出时不带Tag即剥除Tag
* Hybrid接口
Hybrid接口
Hybrid接口既可以用于连接不能识别Tag的用户终端如用户主机、服务器等和网络设备如Hub也可以用于连接交换机、路由器以及可同时收发Tagged帧和Untagged帧的语音终端、AP。它可以允许多个VLAN的帧带Tag通过且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag即不剥除Tag、某些VLAN的帧不带Tag即剥除Tag
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决定。
### 缺省VLAN标签
接口收发数据帧时,对Tag添加或剥除过程
PVIDPort Default VLAN ID。前面提到设备处理的数据帧都带Tag当设备收到Untagged帧时就需要给该帧添加Tag添加什么Tag就由接口上的缺省VLAN决定
对于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标签
当接收到带VLAN标签的数据帧时Access接口、Trunk接口、Hybrid接口都会根据数据帧的VID是否为其允许通过的VLANAccess接口允许通过的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标签PVID。
* 当接收到带VLAN标签的数据帧时Access接口、Trunk接口、Hybrid接口都会根据数据帧的VID是否为其允许通过的VLANAccess接口允许通过的VLAN就是缺省VLAN来判断是否接收。
发送数据帧时:
* Access接口直接剥离数据帧中的VLAN标签。
* Trunk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签。
* Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签。
Access接口直接剥离数据帧中的VLAN标签。
Trunk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签。
Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签。
因此Access接口发出的数据帧肯定不带TagTrunk接口发出的数据帧只有一个VLAN的数据帧不带Tag其他都带VLAN标签Hybrid接口发出的数据帧可根据需要设置某些VLAN的数据帧带Tag某些VLAN的数据帧不带Tag。
VLAN通信
VLAN内互访
同一VLAN内用户互访简称VLAN内互访会经过如下三个环节。
用户主机的报文转发
## 4 VLAN内互访
源主机在发起通信之前会将自己的IP与目的主机的IP进行比较如果两者位于同一网段会获取目的主机的MAC地址并将其作为目的MAC地址封装进报文如果两者位于不同网段源主机会将报文递交给网关获取网关的MAC地址并将其作为目的MAC地址封装进报文。
### 同一VLAN内用户互访过程
1. 用户主机的报文转发
设备内部的以太网交换
源主机在发起通信之前会将自己的IP与目的主机的IP进行比较如果两者位于同一网段会获取目的主机的MAC地址并将其作为目的MAC地址封装进报文如果两者位于不同网段源主机会将报文递交给网关获取网关的MAC地址并将其作为目的MAC地址封装进报文。
设备
2. 设备内部的以太网交换
如果目的MAC地址+VID匹配自己的MAC表且三层转发标志置位则进行三层交换会根据报文的目的IP地址查找三层转发表项如果没有找到会将报文上送CPU由CPU查找路由表实现三层转发。
如果目的MAC地址+VID匹配自己的MAC表但三层转发标志未置位则进行二层交换会直接将报文根据MAC表的出接口发出去。
如果目的MAC地址+VID没有匹配自己的MAC表则进行二层交换此时会向所有允许VID通过的接口广播该报文以获取目的主机的MAC地址。
设备之间交互时VLAN标签的添加和剥离
* 如果目的MAC地址+VID匹配自己的MAC表且三层转发标志置位则进行三层交换会根据报文的目的IP地址查找三层转发表项如果没有找到会将报文上送CPU由CPU查找路由表实现三层转发。
* 如果目的MAC地址+VID匹配自己的MAC表但三层转发标志未置位则进行二层交换会直接将报文根据MAC表的出接口发出去。
* 如果目的MAC地址+VID没有匹配自己的MAC表则进行二层交换此时会向所有允许VID通过的接口广播该报文以获取目的主机的MAC地址。
设备内部的以太网交换都是带Tag的为了与不同设备进行成功交互设备需要根据接口的设置添加或剥除Tag。不同接口VLAN标签添加和剥离情况不同。
3. 设备之间交互时,VLAN标签添加和剥离
设备内部的以太网交换都是带Tag的为了与不同设备进行成功交互设备需要根据接口的设置添加或剥除Tag。不同接口VLAN标签添加和剥离情况不同。
从以太网交换原理可以看出划分VLAN后广播报文只在同一VLAN内二层转发因此同一VLAN内的用户可以直接二层互访。根据属于同一VLAN的主机是否连接在不同的设备VLAN内互访有两种场景同设备VLAN内互访和跨设备VLAN内互访。
同设备VLAN内互访
如下图所示用户主机Host_1和Host_2连接在同台设备上属于同一VLAN2且位于相同网段连接接口均设置为Access接口。
假设Router上还未建立任何转发表项
### 同设备VLAN内互访
![](image/VLAN同设备互访.gif)
同设备互访过程
1. Host_1判断目的IP地址跟自己的IP地址在同一网段于是发送ARP广播请求报文获取目的主机Host_2的MAC地址报文目的MAC填写全F目的IP为Host_2的IP地址10.1.1.3。
2. 报文到达Router的接口IF_1发现是Untagged帧给报文添加VID=2的TagTag的VID=接口的PVID然后根据报文的源MAC地址、VID和报文入接口1-1-1 2 IF_1生成MAC表。
3. 根据报文目的MAC地址+VID查找Router的MAC表没有找到于是在所有允许VLAN2通过的接口本例中接口为IF_2广播该报文。
4. Router的接口IF_2在发出ARP请求报文前根据接口配置剥离VID=2的Tag。
5. Host_2收到该ARP请求报文将Host_1的MAC地址和IP地址对应关系记录ARP表。然后比较目的IP与自己的IP发现跟自己的相同就发送ARP响应报文报文中封装自己的MAC地址2-2-2目的IP为Host_1的IP地址10.1.1.2。
6. Router的接口IF_2收到ARP响应报文后同样给报文添加VID=2的Tag。
7. Router根据报文的源MAC地址、VID和报文入接口2-2-2 2 IF_2生成MAC表然后根据报文的目的MAC地址+VID1-1-1 2查找MAC地址表由于前面已记录查找成功向出接口IF_1转发该ARP响应报文。
8. Router向出接口IF_1转发前同样根据接口配置剥离VID=2的Tag。
9. Host_1收到Host_2的ARP响应报文将Host_2的MAC地址和IP地址对应关系记录ARP表。
Host_1判断目的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且位于相同网段。为了识别和发送跨越设备的数据帧设备间通过干道链路连接。
### 跨设备VLAN内互访
![](image/VLAN跨设备互访.gif)
为了识别和发送跨越设备的数据帧,设备间通过干道链路连接。报文的发送过程如下
1. 经过与同设备VLAN内互访的步骤12一样的过程后报文被广播到Router_1的IF_2接口。
2. Router_1的IF_2接口在发出ARP请求报文前因为接口的PVID=1缺省值与报文的VID不相等直接透传该报文到Router_2的IF_2接口不剥除报文的Tag。
3. Router_2的IF_2接口收到该报文后判断报文的Tag中的VID=2是接口允许通过的VLAN接收该报文。
4. 经过与同设备VLAN内互访的步骤36一样的过程后Router_2将向其出接口IF_2转发Host_2的ARP响应报文转发前因为接口IF_2为Trunk接口且PVID=1缺省值与报文的VID不相等直接透传报文到Router_1的IF_2接口。
5. Router_1的IF_2接口收到Host_2的ARP响应报文后判断报文的Tag中的VID=2是接口允许通过的VLAN接收该报文。后续处理同同设备VLAN内互访的步骤79一样。
当用户主机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间互访
## 5 VLAN间互访
### VLAN间互访
划分VLAN后由于广播报文只在同VLAN内转发所以不同VLAN的用户间不能二层互访这样能起到隔离广播的作用。但实际应用中不同VLAN的用户又常有互访的需求此时就需要实现不同VLAN的用户互访简称VLAN间互访。
同VLAN间互访一样VLAN间互访也会经过用户主机的报文转发、设备内部的以太网交换、设备之间交互时VLAN标签的添加和剥离三个环节。同样根据以太网交换原理广播报文只在同一VLAN内转发不同VLAN内的用户则不能直接二层互访需要借助三层路由技术或VLAN转换技术才能实现互访。
VLAN间互访技术:
华为提供了多种技术实现VLAN间互访常用的两种技术为VLANIF接口和Dot1q终结子接口。
### 同设备VLAN间互访
VLANIF接口
![](image/VLAN同设备跨VLAN.gif)
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上分别属于VLAN2和VLAN3并位于不同的网段。在Router上分别创建VLANIF2和VLANIF3并配置IP地址然后将用户主机的缺省网关设置为所属VLAN对应VLANIF接口的IP地址
当用户主机Host_1发送报文给用户主机Host_2时报文的发送过程如下假设Router上还未建立任何转发表项
当用户主机Host_1发送报文给用户主机Host_2时报文的发送过程如下
1. Host_1判断目的IP地址跟自己的IP地址不在同一网段因此它发出请求网关MAC地址的ARP请求报文目的IP为网关IP 10.1.1.1目的MAC为全F。
2. 报文到达Router的接口IF_1Router给报文添加VID=2的TagTag的VID=接口的PVID然后将报文的源MAC地址+VID与接口的对应关系1-1-1 2 IF_1添加进MAC表。
3. Router检查报文是ARP请求报文且目的IP是自己VLANIF2接口的IP地址给Host_1应答并将VLANIF2接口的MAC地址3-3-3封装在应答报文中应答报文从IF_1发出前剥掉VID=2的Tag。同时Router会将Host_1的IP地址与MAC地址的对应关系记录到ARP表。
4. Host_1收到Router的应答报文将Router的VLANIF2接口的IP地址与MAC地址对应关系记录到自己的ARP表中并向Router发送目的MAC为3-3-3、目的IP为Host_2的IP地址 10.2.2.2的报文。
5. 报文到达Router的接口IF_1同样给报文添加VID=2的Tag。
6. Router根据报文的源MAC地址+VID与接口的对应关系更新MAC表并比较报文的目的MAC地址与VLANIF2的MAC地址发现两者相等进行三层转发根据目的IP查找三层转发表没有找到匹配项上送CPU查找路由表。
7. CPU根据报文的目的IP去找路由表发现匹配了一个直连网段VLANIF3对应的网段于是继续查找ARP表没有找到Router会在目的网段对应的VLAN3的所有接口发送ARP请求报文目的IP是10.2.2.2。从接口IF_2发出前根据接口配置剥掉VID=2的Tag。
8. Host_2收到ARP请求报文发现请求IP是自己的IP地址就发送ARP应答报文将自己的MAC地址包含在其中。同时将VLANIF3的MAC地址与IP地址的对应关系记录到自己的ARP表中。
9. Router的接口IF_2收到Host_2的ARP应答报文后给报文添加VID=3的Tag并将Host_2的MAC和IP的对应关系记录到自己的ARP表中。然后将Host_1的报文转发给Host_2发送前同样剥离报文中的Tag。同时将Host_2的IP、MAC、VID及出接口的对应关系记录到三层转发表中。
Host_1判断目的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间互访
### 跨设备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上分别属于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。
![](image/VLAN跨设备跨VLAN.gif)
当用户主机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
#
1. 与同设备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查找路由表。
2. 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。
3. ARP请求报文到达Router_2后发现目的IP为VLANIF4接口的IP地址给Router_1回应填写VLANIF4接口的MAC地址。
4. Router_2的ARP响应报文从其IF_2接口直接透传到Router_1Router_1接收后记录VLANIF4的MAC地址与IP地址的对应关系到ARP表项。
5. Router_1将Host_1的报文转发给Router_2报文的目的MAC修改为Router_2的VLANIF4接口的MAC地址源MAC地址修改自己的VLANIF4接口的MAC地址并将刚用到的转发信息记录在三层转发表中10.1.2.0/24下一跳IP的MAC地址 出口VLAN 出接口。同样报文是直接透传到Router_2的IF_2接口。
6. Router_2收到Router_1转发的Host_1的报文后与同设备VLAN间互访的步骤69一样经过“查MAC表—>查三层转发表—>送CPU—>匹配直连路由—>查ARP表并获取Host_2的MAC地址—>将Host_1的报文转发给Host_2”的过程同时将Host_2的IP地址、MAC地址、出口VLAN、出接口记录到三层转发表项。

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 948 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

View File

@@ -3,10 +3,22 @@
## 1 IGM概述
### 简介
IGMPInternet Group Management Protocol互联网组管理协议是TCP/IP协议族中负责IPv4组播成员管理的协议。IGMP用来在接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成员管理功能IGMP报文封装在IP报文中。
IGMPInternet Group Management Protocol互联网组管理协议是TCP/IP协议族中负责IPv4组播成员管理的协议。IGMP用来在接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。
IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成员管理功能IGMP报文封装在IP报文中。协议号2TTL字段为1.
### 目的
IP组播通信的特点是报文从一个源发出被转发到一组特定的接收者。但在组播通信模型中发送者不关注接收者的位置信息只是将数据发送到约定的目的组播地址。要使组播报文最终能够到达接收者需要某种机制使连接接收者网段的组播路由器能够了解到该网段存在哪些组播接收者同时保证接收者可以加入相应的组播组中。IGMP就是用来在接收者主机和与其所在网段直接相邻的组播路由器之间建立、维护组播组成员关系的协议。
IP组播通信的特点是报文从一个源发出被转发到一组特定的接收者。但在组播通信模型中发送者不关注接收者的位置信息只是将数据发送到约定的目的组播地址。
IGMP是用来在接收者主机和与其所在网段直接相邻的组播路由器之间建立、维护组播组成员关系的协议。
### 组成员关系建立过程
* 接收者向共享网络报告组播的成员关系。
* 处于同一网段的能使用IGMP功能的路由器选举查询器查询器周期性地向共享网段发送组播成员查询消息。
* 主机接收到该查询消息后进行响应,报告组成员关系。
* 查询器接收的响应刷新组成员的存在信息。查询器通过IGMP了解每个接口连接的网段上是否存在某个组播组的接收者。
## 2.1 IGMPv1报文
@@ -32,7 +44,7 @@ IP组播通信的特点是报文从一个源发出被转发到一组特定的
![](image/IGMPv1报文实例.png)
## 2.2 IBMPv2报文
## 2.2 IGMPv2报文
### IGMPv2报文变化
与IGMPv1相比IGMPv2的变化如下
@@ -72,7 +84,7 @@ IP组播通信的特点是报文从一个源发出被转发到一组特定的
与IGMPv2相比IGMPv3报文的变化如下
* IGMPv3报文包含两大类查询报文和成员报告报文。IGMPv3没有定义专门的成员离开报文成员离开通过特定类型的报告报文来传达。
* IGMPv3报文包含两大类成员查询报文和成员报告报文。IGMPv3没有定义专门的成员离开报文成员离开通过特定类型的报告报文来传达。
* 查询报文中不仅包含普遍组查询报文和特定组查询报文还新增了特定源组查询报文Group-and-Source-Specific Query。该报文由查询器向共享网段内特定组播组成员发送用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个组播源地址来达到这一目的。
* 成员报告报文不仅包含主机想要加入的组播组而且包含主机想要接收来自哪些组播源的数据。IGMPv3增加了针对组播源的过滤模式INCLUDE/EXCLUDE将组播组与源列表之间的对应关系简单的表示为GINCLUDE(S1、S2…)表示只接收来自指定组播源S1、S2……发往组G的数据GEXCLUDE(S1、S2…)表示接收除了组播源S1、S2……之外的组播源发给组G的数据。当组播组与组播源列表的对应关系发生了变化IGMPv3报告报文会将该关系变化存放于组记录Group Record字段发送给IGMP查询器。
* 在IGMPv3中一个成员报告报文可以携带多个组播组信息而之前的版本一个成员报告只能携带一个组播组。这样在IGMPv3中报文数量大大减少。
@@ -138,9 +150,11 @@ IGMPv3成员报告报文格式
## 3.1 IGMPv1工作原理
IGMPv1协议主要基于查询和响应机制完成组播组管理。当一个网段内有多个组播路由器时由于它们都可以接收到主机发送的成员报告报文因此只需要选取其中一台组播路由器发送查询报文就足够了该组播路由器称为IGMP查询器Querier。在IGMPv1中由组播路由协议PIM选举出唯一的组播信息转发者Assert Winner或DR作为IGMPv1的查询器负责该网段的组成员关系查询
IGMPv1协议主要基于查询和响应机制完成组播组管理。IGMPv1的工作机制可以分为普遍组查询和响应机制、新成员加入机制和组成员离开机制三个方面
当一个网段内有多个组播路由器时由于它们都可以接收到主机发送的成员报告报文因此只需要选取其中一台组播路由器发送查询报文就足够了该组播路由器称为IGMP查询器Querier。在IGMPv1中由组播路由协议PIM选举出唯一的组播信息转发者Assert Winner或DR作为IGMPv1的查询器负责该网段的组成员关系查询。
IGMPv1的工作机制可以分为普遍组查询和响应机制、新成员加入机制和组成员离开机制三个方面。
### 普遍组查询响应机制
@@ -159,7 +173,7 @@ IGMPv1的工作机制可以分为普遍组查询和响应机制、新成员
2. 第一个定时器超时的组成员发送针对该组的报告报文。
假设HostA上的Timer-G1首先超时HostA向该网段发送目的地址为G1的报告报文。也想加入组G1的HostB收到此报告报文则停止定时器Timer-G1不再发送针对G1的报告报文。这样报告报文被抑制可以减少网段上的流量。
假设HostA上的Timer-G1首先超时HostA向该网段发送目的地址为G1的报告报文。也想加入组G1的HostB收到此报告报文则停止定时器Timer-G1不再发送针对G1的报告报文。这样报告报文被抑制可以减少网段上的流量。(同网段报文抑制)
@@ -189,9 +203,13 @@ IGMPv1没有专门定义离开组的报文。主机离开组播组后便不
## 3.2 IGMPv2工作原理
IGMPv2的工作机制与IGMPv1基本相同最大的不同之处在于IGMPv2增加了离开组机制。成员主机离开组播组时会主动发送成员离开报文通知IGMP查询器IGMP查询器收到成员离开报文后会连续发送特定组查询报文询问该组播组是否还存在组成员。如果在一段时间内没有收到成员主机发送的报告报文IGMP查询器将不再维护该组的组成员关系。IGMPv2可以使IGMP查询器及时了解到网段内哪些组播组已不存在成员从而及时更新组成员关系减少网络中冗余的组播流量
IGMPv2的工作机制与IGMPv1基本相同在工作机制上IGMPv2增加了查询器选举和离开组机制
IGMPv2增加了离开组机制。成员主机离开组播组时会主动发送成员离开报文通知IGMP查询器IGMP查询器收到成员离开报文后会连续发送特定组查询报文询问该组播组是否还存在组成员。如果在一段时间内没有收到成员主机发送的报告报文IGMP查询器将不再维护该组的组成员关系。
IGMPv2可以使IGMP查询器及时了解到网段内哪些组播组已不存在成员从而及时更新组成员关系减少网络中冗余的组播流量。
在工作机制上与IGMPv1相比IGMPv2增加了查询器选举和离开组机制。
### 查询器选举机制
@@ -206,12 +224,12 @@ IGMPv2使用独立的查询器选举机制当共享网段上存在多个组
1. 最初所有运行IGMPv2的组播路由器RouterA和RouterB都认为自己是查询器向本网段内的所有主机和组播路由器发送普遍组查询报文。
RouterA和RouterB在收到对方发送的普遍组查询报文后将报文的源IP地址与自己的接口地址作比较。通过比较IP地址最小的组播路由器将成为查询器其他组播路由器成为非查询器Non-Querier
2. RouterA和RouterB在收到对方发送的普遍组查询报文后将报文的源IP地址与自己的接口地址作比较。通过比较IP地址最小的组播路由器将成为查询器其他组播路由器成为非查询器Non-Querier
2. 此后将由IGMP查询器RouterA向本网段内的所有主机和其他组播路由器发送普遍组查询报文而非查询器RouterB则不再发送普遍组查询报文。
非查询器RouterB上都会启动一个定时器即其他查询器存在时间定时器Other Querier Present Timer。在该定时器超时前如果收到了来自查询器的查询报文则重置该定时器否则就认为原查询器失效并发起新的查询器选举过程。
4. 非查询器RouterB上都会启动一个定时器即其他查询器存在时间定时器Other Querier Present Timer。在该定时器超时前如果收到了来自查询器的查询报文则重置该定时器否则就认为原查询器失效并发起新的查询器选举过程。
### 离开组机制:
@@ -321,24 +339,23 @@ IGMP Proxy本身并没有检测机制如果组播链路发生了故障
查询者可以转发组播流量通过这种方式可以避免组播流量的重复。为了保证组播可靠性非查询者的路由器也会创建并维护组播组同时非查询者需要监听查询者的存在如果查询者在Hold timer时间内没有发送查询报文非查询者会认为查询者已经故障需要重新选举查询者。查询者会转发组播流量同时每隔interval60s的时间发送查询报文。
## 7 IGMP Snooping
## 7 IGMP Snooping监听
### 简介
IGMP Snooping (Internet Group Management Protocol
Snooping)是一种IPv4二层组播协议通过侦听三层组播设备和用户主机之间发送的组播协议报文来维护组播报文的出接口信息从而管理和控制组播数据报文在数据链路层的转发。
Snooping)是一种IPv4二层组播协议通过侦听三层组播设备和用户主机之间发送的TGMP组播协议报文来维护组播报文的出接口信息,从而管理和控制组播数据报文在数据链路层的转发。
### 目的
在很多情况下,组播报文要不可避免地经过一些二层交换设备,尤其是在局域网环境里。
在很多情况下,组播报文经过一些二层交换设备,尤其是在局域网环境里。
由于组播报文的目的地址为组播组地址在二层设备上是学习不到这一类MAC表项的因此组播报文就会在所有接口进行广播和它在同一广播域内的组播成员和非组播成员都能收到组播报文。这样不但浪费了网络带宽而且影响了网络信息安全。
IGMP Snooping有效地解决了这个问题。配置IGMP Snooping后二层组播设备可以侦听和分析组播用户和上游路由器之间的IGMP报文根据这些信息建立二层组播转发表项控制组播数据报文转发。这样就防止了组播数据在二层网络中的广播。
由于组播报文的目的地址为组播组地址在二层设备上是学习不到这一类MAC表项的因此组播报文就会在所有接口进行广播和它在同一广播域内的组播成员和非组播成员都能收到组播报文。这样不但浪费了网络带宽而且影响了网络信息安全。IGMP Snooping有效地解决了这个问题。
### 基本原理
IGMP Snooping是二层组播的基本功能可以实现组播数据在数据链路层的转发和控制。当主机和上游三层设备之间传递的IGMP协议报文通过二层组播设备时IGMP Snooping分析报文携带的信息根据这些信息建立和维护二层组播转发表从而指导组播数据在数据链路层按需转发。
当组播数据从三层组播设备Router转发下来以后处于接入边缘的二层组播设备Switch负责将组播数据转发给用户主机使用户收看所点播的节目。当Switch没有运行IGMP Snooping时组播数据在二层被广播当Switch运行了IGMP Snooping后组播数据不会在二层广播而是会被Switch发送给指定的接收者
当组播数据从三层组播设备Router转发下来以后处于接入边缘的二层组播设备Switch负责将组播数据转发给用户主机。
* 当Switch没有运行IGMP Snooping时组播数据在二层被广播
* 当Switch运行了IGMP Snooping后组播数据不会在二层广播而是会被Switch发送给指定的接收者。
使能IGMP Snooping功能后Switch会侦听主机和上游三层设备之间交互的IGMP报文通过分析报文中携带的信息报文类型、组播组地址、接收报文的接口等建立和维护二层组播转发表从而指导组播数据在数据链路层按需转发。
@@ -391,9 +408,10 @@ IGMP查询器定期向本地网段内的所有主机与路由器目的地址
* 处理方式:
向VLAN内所有路由器端口转发。从报文中解析出主机要加入的组播组地址并对接收接口做如下处理
* 如果不存在该组对应的转发表项,则创建转发表项,将该接口作为动态成员端口添加到出接口列表中,并启动老化定时器。
* 如果存在该组对应的转发表项,但出接口列表中未包含该接口,则将该接口作为动态成员端口添加到出接口列表,并启动老化定时器。
* 如果已存在该组对应的转发表项,出接口列表中包含该动态成员端口,则重置其老化定时器。
1. 如果存在该组对应的转发表项,则创建转发表项,将该接口作为动态成员端口添加到出接口列表,并启动老化定时器。
2. 如果已存在该组对应的转发表项,出接口列表中包含该接口,则将该接口作为动态成员端口添加到出接口列表,并启动老化定时器。
3. 如果已存在该组所对应的转发表项,且出接口列表中已包含该动态成员端口,则重置其老化定时器。
> 收到IGMP报告报文后动态成员端口的老化定时器 = 健壮系数 x 普遍组查询间隔 + 最大响应时间。
@@ -427,6 +445,10 @@ IGMP查询器定期向本地网段内的所有主机与路由器目的地址
当二层组播设备上建立了二层组播转发表项以后二层组播设备接收到组播数据报文时依据报文所属VLAN和报文的目的地址即组播组地址查找转发表项是否存在对应的“出接口信息”。如果存在则将报文发送到相应的组播组成员端口和路由器端口如果不存在则丢弃该报文或将报文在VLAN内广播。
## 5 IGMP欺骗
## 5 IGMP Spoofing欺骗
### 概述
在没有路由器的局域王忠IGMP Snooping无法生成端口成员列表无法交换组播数据包。
交换机冒充路由器发送IGMP查询报文主机会影后生成端口成员列表和组播地址转发表项。

View File

@@ -1,4 +1,4 @@
# 组播技术
# 组播-IP组播
## 1 基本概念
@@ -62,24 +62,44 @@ IP组播技术在ISP提供的互联网信息服务中已经得到了应用。例
* 组播组成员:所有加入某组播组的主机便成为该组播组的成员,组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。组播组成员可以广泛地分布在网络中的任何地方。
* 组播路由器:支持三层组播功能的路由器或交换机。组播路由器不仅能够提供组播路由功能,也能够在与用户连接的末梢网段上提供组播组成员的管理功能。
## 3 组播服务模型:
### 构成要素
* 主机组播的使用者需要支持IGMP运行组播应用程序。
* 二层交换机:提供端主机的接入,实现二层组播转发。
* 路由器组播网络的核心部分负责数据的路由转发需要实现IGMP、组播路由功能。
### 基本原理
当存在多个接受者时,通过合并重复信息的传输来达到减少宽带浪费和降低服务器处理负担的目的。
* 在IP组播网络中主机通过IGMP组播管理协议加入组播组。
* 路由器通过组播路由协议维护组播路由。将组播信息传递给每一个支持组播协议的路由器。
* 路由器维护组播路由表。组播路由表联合起来组成组合组播转发树实现IP层组播路由转发。
## 3 组播服务模型
组播服务模型的分类是针对接收者主机的对组播源没有区别。组播源发出的组播数据中总是以组播源自己的IP地址为报文的源地址组播组地址为目的地址。而接收者主机接收数据时可以对源进行选择因此产生了ASMAny-Source Multicast和SSMSource-Specific Multicast两种服务模型。这两种服务模型默认使用不同的组播组地址范围。
### ASM模型
### ASM模型
ASM模型仅针对组地址提供组播分发。一个组播组地址作为一个网络服务的集合任何源发布到该组地址的数据得到同样的服务。接收者主机加入组播组以后可以接收到任意源发送到该组的数据。
为了提高安全性,可以在路由器上配置针对组播源的过滤策略,允许或禁止来自某些组播源的报文通过。最终从接收者角度看,数据是经过筛选的。
ASM模型要求组地址必须整个组播网络中唯一。“唯一”指的是同一时刻一个ASM地址只能被一种组播应用使用。如果有两种不同的应用程序使用了同一个ASM组地址发送数据它们的接收者会同时收到来自两个源的数据。这样一方面会导致网络流量拥塞,另一方面也会给接收者主机造成困扰。
ASM模型要求组地址必须整个组播网络中唯一。“唯一”指的是同一时刻一个ASM地址只能被一种组播应用使用。如果有两种不同的应用程序使用了同一个ASM组地址发送数据它们的接收者会同时收到来自两个源的数据。
### SSM模型
### SSM模型
SSM模型针对特定源和组的绑定数据流提供服务接收者主机在加入组播组时可以指定只接收哪些源的数据或指定拒绝接收来自哪些源的数据。加入组播组以后主机只会收到指定源发送到该组的数据。
SSM模型对组地址不再要求全网唯一只需要每个组播源保持唯一。这里的“唯一”指的是同一个源上不同的组播应用必须使用不同的SSM地址来区分。不同的源之间可以使用相同的组地址因为SSM模型中针对每一个信息都会生成表项。这样一方面节省了组播组地址另一方面也不会造成网络拥塞。
## 4 组播地址:
为了使组播源和组播组成员进行通信需要提供网络层组播使用IP组播地址。同时为了在本地物理网络上实现组播信息的正确传输需要提供链路层组播使用组播MAC地址。组播数据传输时其目的地不是一个具体的接收者而是一个成员不确定的组所以需要一种技术将IP组播地址映射为组播MAC地址。
* 组播IP地址使组播源和组播组成员进行通信提供网络层组播功能。
* 组播MAC地址在本地物理网络上实现组播信息的正确传输提供链路层组播功能。
组播数据传输时其目的地不是一个成员不确定的组需要将IP组播地址映射为组播MAC地址。
### IPv4组播地址
IANAInternet Assigned Numbers Authority互联网编号分配委员会将D类地址空间分配给IPv4组播使用。IPv4地址一共32位D类地址最高4位为1110因此地址范围从224.0.0.0到239.255.255.255,具体分类及含义见下表:
@@ -93,30 +113,30 @@ IANAInternet Assigned Numbers Authority互联网编号分配委员会
常见的永久组地址列表:
|永久组地址 含义|
|永久组地址 |含义|
|-|-|
|224.0.0.0 不分配|
|224.0.0.1 网段内所有主机和路由器(等效于广播地址)|
|224.0.0.2 所有组播路由器|
|224.0.0.3 不分配|
|224.0.0.4 DVMRPDistance Vector Multicast Routing Protocol距离矢量组播路由协议路由器|
|224.0.0.5 OSPFOpen Shortest Path First开放最短路径优先路由器|
|224.0.0.6 OSPF DRDesignated Router指定路由器|
|224.0.0.7 STShared Tree共享树路由器|
|224.0.0.8 ST主机|
|224.0.0.9 RIP-2Routing Information Protocol version 2路由信息协议版本2路由器|
|224.0.0.11 移动代理Mobile-Agents|
|224.0.0.12 DHCPDynamic Host Configuration Protocol动态主机配置协议服务器/中继代理|
|224.0.0.13 所有PIMProtocol Independent Multicast协议无关组播路由器|
|224.0.0.14 RSVPResource Reservation Protocol资源预留协议封装|
|224.0.0.15 所有CBTCore-Based Tree有核树路由器|
|224.0.0.16 指定SBMSubnetwork Bandwidth Management子网带宽管理|
|224.0.0.17 所有SBM|
|224.0.0.18 VRRPVirtual Router Redundancy Protocol虚拟路由器冗余协议|
|224.0.0.22 所有使能IGMPv3Internet Group Management Protocol, Version 3因特网组管理协议的路由器|
|224.0.0.0| 不分配|
|224.0.0.1| 网段内所有主机和路由器(等效于广播地址)|
|224.0.0.2| 所有组播路由器|
|224.0.0.3| 不分配|
|224.0.0.4| DVMRPDistance Vector Multicast Routing Protocol距离矢量组播路由协议路由器|
|224.0.0.5| OSPFOpen Shortest Path First开放最短路径优先路由器|
|224.0.0.6| OSPF DRDesignated Router指定路由器|
|224.0.0.7| STShared Tree共享树路由器|
|224.0.0.8| ST主机|
|224.0.0.9| RIP-2Routing Information Protocol version 2路由信息协议版本2路由器|
|224.0.0.11| 移动代理Mobile-Agents|
|224.0.0.12| DHCPDynamic Host Configuration Protocol动态主机配置协议服务器/中继代理|
|224.0.0.13| 所有PIMProtocol Independent Multicast协议无关组播路由器|
|224.0.0.14| RSVPResource Reservation Protocol资源预留协议封装|
|224.0.0.15| 所有CBTCore-Based Tree有核树路由器|
|224.0.0.16| 指定SBMSubnetwork Bandwidth Management子网带宽管理|
|224.0.0.17| 所有SBM|
|224.0.0.18| VRRPVirtual Router Redundancy Protocol虚拟路由器冗余协议|
|224.0.0.22| 所有使能IGMPv3Internet Group Management Protocol, Version 3因特网组管理协议的路由器|
|224.0.0.19 224.0.0.21 224.0.0.23 224.0.0.255| 未指定|
### IPv6组播地址
### IPv6组播地址
![IPv6组播地址格式](image/IPv6组播地址格式.png)
@@ -168,9 +188,36 @@ IPv4组播地址的前4位是固定的1110对应组播MAC地址的高25位
### IPv6组播MAC地址
IPv6组播MAC地址的高16位为0x3333低32位为IPv6组播地址的低32位。
## 5 IP组播报文处理
## 5 组播的相关协议:
组播协议包括用于主机注册的组播组管理协议,和用于组播选路转发的组播路由协议。
### 端主机系统对组播报文的处理
组播源使用组播地址作为目的IP地址发送数据目标是主播组中的一组主机。
接受者需要检查每一个数据包的目的IP地址是否属于组播组的IP地址。
主机的链路层和网络层分别维护一个接受列表,用于对接受的组播数据进行处理。
处理过程如下:
1. 主机加入组播组。向IP模块注册请求加入组播组。IP模块将组播IP地址添加到接收列表。向链路层通告附上组播组IP地址链路层根据组播IP地址与组播MAC地址的映射关系计算组播MAC地址将组播MAC地址添加到接收列表。
2. 主机接收组播数据。链路层接收数据帧匹配链路层接收列表中组播MAC地址。IP层接收数据包匹配IP层接收列表中的组播IP地址。交付给上层。不匹配丢弃。
3. 主机离开组播组。IP模块删除IP层接收列表中的组播IP地址。链路层删除链路层接收列表中的组播MAC地址。接收到组播帧和组播数据报直接丢弃。
### 交换机对组播报文的二层转发
目的MAC地址为组播时允许多个端口转发。交换机能够创建组播转发表项局域网内没有加入组播的主机不会收到组播数据。
二层组播协议使用IGMP Snooping监听协议和IGMP Spoofing欺骗协议。
### 路由器对组播报文的三层转发
转发基于组播转发表,组播转发表有组播协议生成维护。
需要结合逆向路径转发Reverse Path Forwarding,RPF检查来完成。
## 6 组播的相关协议
组播协议包括用于主机和路由器之间的组成员关系管理协议和用于路由器和路由器之间组播路由协议。
### 组播管理协议

View File

@@ -1,12 +1,18 @@
# 组播-PIM
> 需要补充PIM相关的报文格式与相关的流程图。根据课本上的来即可。
## 1 PIM简介
### 作用
PIMProtocol Independent Multicast称为协议无关组播。这里的协议无关指的是与单播路由协议无关即PIM不需要维护专门的单播路由信息。作为组播路由解决方案它直接利用单播路由表的路由信息对组播报文执行RPFReverse Path Forwarding逆向路径转发检查检查通过后创建组播路由表项从而转发组播报文
PIMProtocol Independent Multicast称为协议无关组播。与单播路由协议无关
目前设备实际支持的PIM协议包括PIM-DMPIM-Dense Mode、PIM-SMPIM-Sparse Mode
作为组播路由解决方案它直接利用单播路由表的路由信息对组播报文执行RPFReverse Path Forwarding逆向路径转发检查检查通过后创建组播路由表项从而转发组播报文
目前设备实际支持的PIM协议包括PIM-DMPIM-Dense Mode密集模式、PIM-SMPIM-Sparse Mode稀疏模式
### 组播分发树
PIM网络以组播组为单位在路由器上建立一点到多点的组播转发路径。由于组播转发路径呈现树型结构也称为组播分发树MDTMulticast Distribution Tree
@@ -25,7 +31,7 @@ PIM网络以组播组为单位在路由器上建立一点到多点的组播转
* 最后一跳路由器组播转发路径上与组播组成员相连且负责向该组成员转发组播数据的PIM路由器。
* 中间路由器组播转发路径上第一跳路由器与最后一跳路由器之间的PIM路由器。
### PIM路由表项
### PIM路由表项与转发流程
PIM路由表项即通过PIM协议建立的组播路由表项。PIM网络中存在两种路由表项SG路由表项或 * G路由表项。S表示组播源G表示组播组 * 表示任意。
* SG路由表项主要用于在PIM网络中建立SPT。对于PIM-DM网络和PIM-SM网络适用。
@@ -48,9 +54,37 @@ PIM路由表项中主要用于指导转发的信息如下
### 基本原理
PIM-DM使用“推Push模式”转发组播报文一般应用于组播组成员规模相对较小、相对密集的网络。在实现过程中它会假设网络中的组成员分布非常稠密每个网段都可能存在组成员。当有活跃的组播源出现时PIM-DM会将组播源发来的组播报文扩散到整个网络的PIM路由器上再裁剪掉不存在组成员的分支。PIM-DM通过周期性的进行“扩散Flooding—剪枝Prune来构建并维护一棵连接组播源和组成员的单向无环SPTSource Specific Shortest Path Tree。如果在下一次“扩散-剪枝”进行前被裁剪掉的分支由于其叶子路由器上有新的组成员加入而希望提前恢复转发状态也可通过嫁接Graft机制主动恢复其对组播报文的转发。
PIM-DM使用“推Push模式”转发组播报文一般应用于组播组成员规模相对较小、相对密集的网络。
PIM-DM的关键工作机制包括邻居发现、扩散、剪枝、嫁接、断言和状态刷新。其中扩散、剪枝、嫁接是构建SPT的主要方法
在实现过程中它会假设网络中的组成员分布非常稠密每个网段都可能存在组成员。当有活跃的组播源出现时PIM-DM会将组播源发来的组播报文扩散到整个网络的PIM路由器上再裁剪掉不存在组成员的分支
PIM-DM通过周期性的进行“扩散Flooding—剪枝Prune来构建并维护一棵连接组播源和组成员的单向无环SPTSource Specific Shortest Path Tree
如果在下一次“扩散-剪枝”进行前被裁剪掉的分支由于其叶子路由器上有新的组成员加入而希望提前恢复转发状态也可通过嫁接Graft机制主动恢复其对组播报文的转发。
PIM-DM的关键工作机制包括**邻居发现、扩散、剪枝、嫁接、断言和状态刷新**。其中扩散、剪枝、嫁接是构建SPT的主要方法。
### PIM报文
|报文类型 |类型ID |报文作用|
|-|-|-|
|hello| 0 |发现,协商参数。维护邻居关系|
|register||组播源注册,单播发送|
|register stop||组播源注册停止,单播发送|
|jion/prune| 3 |加入/剪枝J置位为1表明为jion报文p置位为1表明为prune报文|
|assert| 5 |断言|
|graft| 6 |剪枝,单播发送|
|graft ack| 7 |剪枝确认,单播发送|
|state-refresh| 9 |状态刷新|
### RPF逆向路径转发
为了避免多个路由器向同一个网段转发组播消息,需要进行逆向路径转发,避免向同一个路由器或同一个网段的重复转发。
1. 路由器检查组播报文的原地址。确定原地址的组播到达接口与原地址的单播到达接口是否一致。
2. 如果组播报文在可返回原地址的接口上则RPF检查通过报文被转发。
3. 如果RPF检查失败则丢弃报文。
> RPF检查保证了SPT最短路径树的唯一性即使以源节点为根通过OSPF计算的最短路径树不会存在两个分支之间相互转发报文不会形成环路。
### 邻居发现Neighbor Discovery
@@ -110,12 +144,12 @@ PIM-DM通过嫁接机制使有新组成员加入的网段快速得到组播
### 状态刷新State Refresh
在PIM-DM网络中为了避免被裁剪的接口因为“剪枝定时器”超时而恢复转发离组播源最近的第一跳路由器会周期性地触发State
Refresh报文在全网内扩散。收到State Refresh报文的PIM路由器会刷新剪枝定时器的状态。被裁剪接口的下游叶子路由器如果一直没有组成员加入该接口将一直处于抑制转发状态。
在PIM-DM网络中为了避免被裁剪的接口因为“剪枝定时器”超时而恢复转发离组播源最近的第一跳路由器会周期性地触发State Refresh报文在全网内扩散。收到State Refresh报文的PIM路由器会刷新剪枝定时器的状态。被裁剪接口的下游叶子路由器如果一直没有组成员加入该接口将一直处于抑制转发状态。
### 断言Assert
当一个网段内有多个相连的PIM路由器RPF检查通过向该网段转发组播报文时则需要通过断言机制来保证只有一个PIM路由器向该网段转发组播报文。PIM路由器在接收到邻居路由器发送的相同组播报文后会以组播的方式向本网段的所有PIM路由器发送Assert报文其中目的地址为永久组地址224.0.0.13。其它PIM路由器在接收到Assert报文后将自身参数与对方报文中携带的参数做比较进行Assert竞选。竞选规则如下
当一个网段内有多个相连的PIM路由器RPF检查通过向该网段转发组播报文时则需要通过断言机制来保证只有一个PIM路由器向该网段转发组播报文。
PIM路由器在接收到邻居路由器发送的相同组播报文后会以组播的方式向本网段的所有PIM路由器发送Assert报文其中目的地址为永久组播组地址224.0.0.13。其它PIM路由器在接收到Assert报文后将自身参数与对方报文中携带的参数做比较进行Assert竞选。竞选规则如下
1. 单播路由协议优先级较高者获胜。
2. 如果优先级相同,则到组播源的开销较小者获胜。
@@ -134,13 +168,13 @@ Assert竞选结束后该网段上只存在一个下游接口只传输一
### 基本原理ASM模型
在ASMAny-Source Multicast模型中PIM-SM使用“拉Pull模式”转发组播报文一般应用于组播组成员规模相对较大、相对稀疏的网络。基于这一种稀疏的网络模型它的实现方法是
* 在网络中维护一台重要的PIM路由器汇聚点RPRendezvous Point可以为随时出现的组成员或组播源服务。网络中所有PIM路由器都知道RP的位置。
* 当网络中出现组成员用户主机通过IGMP加入某组播组G最后一跳路由器向RP发送Join报文逐跳创建 * G表项生成一棵以RP为根的RPT。
* 当网络中出现活跃的组播源组播源向某组播组G发送第一个组播数据第一跳路由器将组播数据封装在Register报文中单播发往RP在RP上创建SG表项注册源信息。
* 在网络中维护一台重要的PIM路由器**汇聚点RP**Rendezvous Point可以为随时出现的组成员或组播源服务。网络中所有PIM路由器都知道RP的位置。负责构造RPT组播数据沿RPT发送给接受者。
* 当网络中出现组成员用户主机通过IGMP加入某组播组G最后一跳路由器向RP发送Join报文逐跳创建 * G表项生成一棵以RP为根的**RPT**
* 当网络中出现活跃的组播源组播源向某组播组G发送第一个组播数据第一跳路由器将组播数据封装在Register报文中**单播**发往RP在RP上创建SG表项注册源信息。达到RP后建立最短路径树SPT。组播源沿SPT发向RP组播数据到达RP后沿汇聚树RPT发送给接收者。
在ASM模型中PIM-SM的关键机制包括邻居发现、DR竞选、RP发现、RPT构建、组播源注册、SPT切换、断言同时也可通过配置BSRBootstrap Router管理域来实现单个PIM-SM域的精细化管理。
在ASM模型中PIM-SM的关键机制包括**邻居发现、DR竞选、RP发现、RPT构建、组播源注册、SPT切换、断言**同时也可通过配置BSRBootstrap Router管理域来实现单个PIM-SM域的精细化管理。
### DR竞选
### 邻居发现与DR选取
在组播源或组成员所在的网段通常同时连接着多台PIM路由器。这些PIM路由器之间通过交互Hello报文成为PIM邻居Hello报文中携带DR优先级和该网段接口地址。PIM路由器将自身条件与对方报文中携带的信息进行比较选举出DR来负责源端或组成员端组播报文的收发。竞选规则如下
* DR优先级较高者获胜网段中所有PIM路由器都支持DR优先级
@@ -153,14 +187,14 @@ Assert竞选结束后该网段上只存在一个下游接口只传输一
* 在连接组播源的共享网段由DR负责向RP发送Register注册报文。与组播源相连的DR称为源端DR。
* 在连接组成员的共享网段由DR负责向RP发送Join加入报文。与组成员相连的DR称为组成员端DR。
### RP发现
### 汇聚点RP指定
汇聚点RP为网络中一台重要的PIM路由器用于处理源端DR注册信息及组成员加入请求网络中的所有PIM路由器都必须知道RP的地址类似于一个供求信息的汇聚中心。
一个RP可以同时为多个组播组服务但一个组播组只能对应一个RP。目前可以通过以下方式配置RP
* 静态RP在网络中的所有PIM路由器上配置相同的RP地址静态指定RP的位置。
* 动态RP在PIM域内选择几台PIM路由器配置C-RPCandidate-RP候选RP来动态竞选出RP。同时还需要通过配置C-BSRCandidate-BSR候选BSR选举出BSR来收集C-RP的通告信息向PIM-SM域内的所有PIM路由器发布。
* 动态RP在PIM域内选择几台PIM路由器配置C-RPCandidate-RP候选RP来动态竞选出RP。同时还需要通过配置BSRBootstrap Router 自举路由器负责PIM-SM域的管理和C-BSRCandidate-BSR候选BSR来收集C-RP的通告信息向PIM-SM域内的所有PIM路由器发布。
C-BSR在竞选的时候开始时每个C-BSR都认为自己是BSR向全网发送Bootstrap报文。Bootstrap报文中携带C-BSR地址、C-BSR的优先级。每一台PIM路由器都收到所有C-BSR发出的Bootstrap报文通过比较这些C-BSR信息竞选产生BSR。竞选规则如下
@@ -185,19 +219,21 @@ C-RP的竞选过程如下
由于所有PIM路由器使用相同的RP-Set和竞选规则所以得到的组播组与RP之间的对应关系也相同。PIM路由器将“组播组—RP”对应关系保存下来指导后续的组播操作。
### RPT构建
### 共享树RPT构建
PIM-SM RPT是一棵以RP为根以存在组成员关系的PIM路由器为叶子的组播分发树。
在RPT构建过程中PIM路由器在发送Join报文时会进行RPF检测查找到达RP的单播路由单播路由的出接口为上游接口下一跳为RPF邻居。Join报文从组成员端DR开始逐跳发送直至到RP。
1. 接受者加入组播G是通过IGMP报文通知直连DR
2. DR掌握了组播组G的接受者信息后向RP方向逐跳发送Join报文。
3. 在RPT构建过程中PIM路由器在发送Join报文时会进行RPF检测查找到达RP的单播路由单播路由的出接口为上游接口下一跳为RPF邻居。Join报文从组成员端DR开始逐跳发送直至到RP。然后在每一跳路由器转发表中添加(*,G)表项。
### 组播源注册
### 组播源注册与注册停止
在PIM-SM网络中任何一个新出现的组播源都必须首先在RP处“注册”继而才能将组播报文传输到组成员。具体过程如下
组播源将组播报文发给源端DR。
源端DR接收到组播报文后将其封装在Register报文中发送给RP。
RP接收到Register报文将其解封装建立SG表项并将组播数据沿RPT发送到达组成员。
1. 组播源将组播报文发给源端DR。
2. 源端DR接收到组播报文后将其封装在Register报文中发送给RP。
3. RP接收到Register报文将其解封装建立SG表项并将组播数据沿RPT发送到达组成员。
### SPT切换
### RPT向SPT切换
在PIM-SM网络中一个组播组只对应一个RP只构建一棵RPT。在未进行SPT切换的情况下所有发往该组的组播报文都必须先封装在注册报文中发往RPRP解封装后再沿RPT分发。RP是所有组播报文必经的中转站当组播报文速率逐渐变大时对RP形成巨大的负担。为了解决此问题PIM-SM允许RP或组成员端DR通过触发SPT切换来减轻RP的负担。