vlan
11
TASK.md
@@ -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__概率基础知识补充
|
||||
|
||||
97
计算机网络实验/Ethernet.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# Ethernet
|
||||
|
||||
> 以太网不是网络的统称,是一种是先局域网的方式。
|
||||
## 1 计算机网络
|
||||
|
||||
### 网络结点分布
|
||||
|
||||
* 局域网(Local Area Network,LAN)是一种在小范围内实现的计算机网络,一般在一个建筑物内,或一个工厂、一个事业单位内部,为单位独有。局域网距离可在十几公里以内,信道传输速率可达1~20Mbps,结构简单,布线容易。
|
||||
|
||||
* 广域网(Wide Area Network,WAN)范围很广,可以分布在一个省内、一个国家或几个国家。广域网信道传输速率较低,一般小于0.1Mbps,结构比较复杂。
|
||||
|
||||
* 城域网(Metropolitan Area Network,MAN)是在一个城市内部组建的计算机信息网络,提供全市的信息服务。
|
||||
目前,我国许多城市正在建设城域网。
|
||||
|
||||
### 交换方式
|
||||
|
||||
* 线路交换(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协议,并共享逻辑上的总线。集线器像一个多接口的转发器,工作在物理层。
|
||||
|
||||

|
||||
|
||||
## 4 Ethernet的帧格式
|
||||
数据链路层的MAC帧分为五部分:
|
||||
* 目的MAC地址
|
||||
* 原MAC地址
|
||||
* 类型(网络层使用的协议)
|
||||
* 数据(网络层的IP数据报)
|
||||
* FCS(帧检验序列)
|
||||
|
||||

|
||||
|
||||
|
||||
## 5 Ethernet扩展
|
||||
|
||||
通过光纤连接集线器,可以使以太网在距离上扩展;通过集线器级联,使网络中的计算机增加,但是组建了一个大的冲突域,通信效率降低了。为了优化扩展后的以太网性能,可以使用网桥和交换机设备。
|
||||
|
||||
### 网桥
|
||||
|
||||
在交换机还没有出现以前,可以使用网桥来连接两个集线器进行通信。最大的作用是防止了集线器之间的数据传输冲突,将冲突控制在单个集线器范围内,隔离大的冲突域,减少冲突的几率。
|
||||
网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发。
|
||||
网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口。
|
||||
|
||||
### 交换机
|
||||
|
||||
随着连接的集线器越来越多,网桥慢慢发展演变成交换机。
|
||||
交换机是现在主流的局域网的交换设备,它有许多接口,直接和计算机相连接。
|
||||
交换机通过学习构建MAC地址表,并根据MAC地址定向地存储转发数据,避免了广播式的数据发送,具有更高的安全性。
|
||||
|
||||
## 6 MAC地址表
|
||||
|
||||
## 7 链路聚合-端口聚合
|
||||
|
||||
### 端口聚合的需求和应用
|
||||
|
||||
交换机与路由器之间的连接:交换机和路由器采用端口聚合可以解决广域网和局域网连接的瓶颈。
|
||||
|
||||
### 端口聚合的实现原理
|
||||
|
||||
|
||||
@@ -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状态转换分析
|
||||
|
||||
@@ -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。下一部分主要讲解通过LSDB,OSPF计算得到ospf routing table的过程。
|
||||
|
||||
链路状态描述即使用链路状态通告。不同的链路类型课能对应不同的链路状态通告。每种链路状态通告包括两部分,链路状态通告的头部信息,和链路状态的通告的数据内容。
|
||||
|
||||
@@ -431,6 +433,36 @@ AS-External-LSA(Type5):由ASBR产生,描述到AS外部的路由,这是
|
||||
|
||||

|
||||
|
||||
### 链路状态描述信息与链路状态通告信息关系
|
||||
|
||||
> 重要:关系理解
|
||||
|
||||
链路状态信息组成了链路状态通告信息。链路状态描述信息通过接口链路类型区别。链路状态通告类型,通同路由器逻辑作用区别。
|
||||
|
||||
当使用以太网连接路由器的一个端口的时候,这个时候默认为广播类型,默认网络结构为全连接网络,默认生成第二类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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
63
计算机网络实验/Q&A.md
Normal 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地址,接口是自身路由器连接该网段的接口。
|
||||

|
||||
* 动态路由:根据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
|
||||

|
||||
|
||||
|
||||
@@ -3,370 +3,211 @@
|
||||
> * [VLAN基础知识](https://blog.csdn.net/qq_38265137/article/details/80390759)
|
||||
> * 可以等到以后复习的时候,补充完整这一块。
|
||||
|
||||
VLAN简介
|
||||
定义:
|
||||
## 1 VLAN简介
|
||||
|
||||
### 定义
|
||||
|
||||
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接通信,从而将广播报文限制在一个VLAN内。
|
||||
|
||||
目的:
|
||||
### 目的
|
||||
以太网是一种基于CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的共享通讯介质的数据网络通讯技术。当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至造成网络不可用等问题。通过交换机实现LAN互连虽然可以解决冲突严重的问题,但仍然不能隔离广播报文和提升网络质量。
|
||||
|
||||
在这种情况下出现了VLAN技术,这种技术可以把一个LAN划分成多个逻辑的VLAN,每个VLAN是一个广播域,VLAN内的主机间通信就和在一个LAN内一样,而VLAN间则不能直接互通,这样,广播报文就被限制在一个VLAN内。
|
||||
|
||||
作用:
|
||||
限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
|
||||
增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。
|
||||
提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。
|
||||
灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
|
||||
VLAN的基本概念
|
||||
VLAN标签:
|
||||
要使设备能够分辨不同VLAN的报文,需要在报文中添加标识VLAN信息的字段。IEEE 802.1Q协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag),用以标识VLAN信息。
|
||||
|
||||
VLAN帧格式:
|
||||
### 作用
|
||||
* 限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
|
||||
* 增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。
|
||||
* 提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。
|
||||
* 灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
|
||||
|
||||
|
||||
图:VLAN数据帧格式
|
||||
## 2 VLAN帧格式
|
||||
|
||||
|
||||

|
||||
|
||||
字段解释:
|
||||
|
||||
字段 长度 含义 取值
|
||||
TPID 2Byte Tag Protocol Identifier(标签协议标识符),表示数据帧类型。 表示帧类型,取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。 各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时, 为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致。
|
||||
PRI 3bit Priority,表示数据帧的802.1p优先级。 取值范围为0~7,值越大优先级越高。当网络阻塞时,设备优先发送优先级高的数据帧。
|
||||
CFI 1bit Canonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。 CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI的值为0。
|
||||
VID 12bit VLAN ID,表示该数据帧所属VLAN的编号。 VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094。
|
||||
|字段| 长度| 含义| 取值|
|
||||
|-|-|-|-|
|
||||
|TPID| 2Byte| Tag Protocol Identifier(标签协议标识符),表示数据帧类型。| 表示帧类型,取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。 各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时, 为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致。|
|
||||
|PRI| 3bit| Priority,表示数据帧的802.1p优先级。 |取值范围为0~7,值越大优先级越高。当网络阻塞时,设备优先发送优先级高的数据帧。|
|
||||
|CFI| 1bit| Canonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。 |CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI的值为0。|
|
||||
|VID| 12bit| VLAN ID,表示该数据帧所属VLAN的编号。 |VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094。|
|
||||
|
||||
设备利用VLAN标签中的VID来识别数据帧所属的VLAN,广播帧只在同一VLAN内转发,这就将广播域限制在一个VLAN内。
|
||||
|
||||
常用设备收发数据帧的VLAN标签情况:
|
||||
|
||||
## 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又称PVID(Port Default VLAN ID)。前面提到,设备处理的数据帧都带Tag,当设备收到Untagged帧时,就需要给该帧添加Tag,添加什么Tag,就由接口上的缺省VLAN决定。
|
||||
### 缺省VLAN标签
|
||||
|
||||
接口收发数据帧时,对Tag的添加或剥除过程。
|
||||
PVID(Port 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是否为其允许通过的VLAN(Access接口允许通过的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是否为其允许通过的VLAN(Access接口允许通过的VLAN就是缺省VLAN)来判断是否接收。
|
||||
|
||||
发送数据帧时:
|
||||
|
||||
* Access接口直接剥离数据帧中的VLAN标签。
|
||||
* Trunk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签。
|
||||
* Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签。
|
||||
|
||||
Access接口直接剥离数据帧中的VLAN标签。
|
||||
Trunk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签。
|
||||
Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签。
|
||||
因此,Access接口发出的数据帧肯定不带Tag,Trunk接口发出的数据帧只有一个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内互访
|
||||
|
||||

|
||||
|
||||
同设备互访过程
|
||||
|
||||
1. Host_1判断目的IP地址跟自己的IP地址在同一网段,于是发送ARP广播请求报文获取目的主机Host_2的MAC地址,报文目的MAC填写全F,目的IP为Host_2的IP地址10.1.1.3。
|
||||
2. 报文到达Router的接口IF_1,发现是Untagged帧,给报文添加VID=2的Tag(Tag的VID=接口的PVID),然后根据报文的源MAC地址、VID和报文入接口(1-1-1, 2, IF_1)生成MAC表。
|
||||
3. 根据报文目的MAC地址+VID查找Router的MAC表,没有找到,于是在所有允许VLAN2通过的接口(本例中接口为IF_2)广播该报文。
|
||||
4. Router的接口IF_2在发出ARP请求报文前,根据接口配置,剥离VID=2的Tag。
|
||||
5. Host_2收到该ARP请求报文,将Host_1的MAC地址和IP地址对应关系记录ARP表。然后比较目的IP与自己的IP,发现跟自己的相同,就发送ARP响应报文,报文中封装自己的MAC地址2-2-2,目的IP为Host_1的IP地址10.1.1.2。
|
||||
6. Router的接口IF_2收到ARP响应报文后,同样给报文添加VID=2的Tag。
|
||||
7. Router根据报文的源MAC地址、VID和报文入接口(2-2-2, 2, IF_2)生成MAC表,然后根据报文的目的MAC地址+VID(1-1-1, 2)查找MAC地址表,由于前面已记录,查找成功,向出接口IF_1转发该ARP响应报文。
|
||||
8. Router向出接口IF_1转发前,同样根据接口配置剥离VID=2的Tag。
|
||||
9. Host_1收到Host_2的ARP响应报文,将Host_2的MAC地址和IP地址对应关系记录ARP表。
|
||||
|
||||
Host_1判断目的IP地址跟自己的IP地址在同一网段,于是发送ARP广播请求报文获取目的主机Host_2的MAC地址,报文目的MAC填写全F,目的IP为Host_2的IP地址10.1.1.3。
|
||||
报文到达Router的接口IF_1,发现是Untagged帧,给报文添加VID=2的Tag(Tag的VID=接口的PVID),然后根据报文的源MAC地址、VID和报文入接口(1-1-1, 2, IF_1)生成MAC表。
|
||||
根据报文目的MAC地址+VID查找Router的MAC表,没有找到,于是在所有允许VLAN2通过的接口(本例中接口为IF_2)广播该报文。
|
||||
Router的接口IF_2在发出ARP请求报文前,根据接口配置,剥离VID=2的Tag。
|
||||
Host_2收到该ARP请求报文,将Host_1的MAC地址和IP地址对应关系记录ARP表。然后比较目的IP与自己的IP,发现跟自己的相同,就发送ARP响应报文,报文中封装自己的MAC地址2-2-2,目的IP为Host_1的IP地址10.1.1.2。
|
||||
Router的接口IF_2收到ARP响应报文后,同样给报文添加VID=2的Tag。
|
||||
Router根据报文的源MAC地址、VID和报文入接口(2-2-2, 2, IF_2)生成MAC表,然后根据报文的目的MAC地址+VID(1-1-1, 2)查找MAC地址表,由于前面已记录,查找成功,向出接口IF_1转发该ARP响应报文。
|
||||
Router向出接口IF_1转发前,同样根据接口配置剥离VID=2的Tag。
|
||||
Host_1收到Host_2的ARP响应报文,将Host_2的MAC地址和IP地址对应关系记录ARP表。
|
||||
后续Host_1与Host_2的互访,由于彼此已学习到对方的MAC地址,报文中的目的MAC地址直接填写对方的MAC地址。
|
||||
|
||||
此组网场景下,当同一VLAN的用户处于不同网段时,主机将在报文中封装网关的MAC地址,可借助VLANIF技术(需配置主从IP地址)实现互访。
|
||||
|
||||
跨设备VLAN内互访:
|
||||
如下图,用户主机Host_1和Host_2连接在不同的设备上,属于同一个VLAN2,且位于相同网段。为了识别和发送跨越设备的数据帧,设备间通过干道链路连接。
|
||||
### 跨设备VLAN内互访:
|
||||
|
||||

|
||||
|
||||
为了识别和发送跨越设备的数据帧,设备间通过干道链路连接。报文的发送过程如下
|
||||
|
||||
1. 经过与同设备VLAN内互访的步骤1~2一样的过程后,报文被广播到Router_1的IF_2接口。
|
||||
2. Router_1的IF_2接口在发出ARP请求报文前,因为接口的PVID=1(缺省值),与报文的VID不相等,直接透传该报文到Router_2的IF_2接口,不剥除报文的Tag。
|
||||
3. Router_2的IF_2接口收到该报文后,判断报文的Tag中的VID=2是接口允许通过的VLAN,接收该报文。
|
||||
4. 经过与同设备VLAN内互访的步骤3~6一样的过程后,Router_2将向其出接口IF_2转发Host_2的ARP响应报文,转发前,因为接口IF_2为Trunk接口且PVID=1(缺省值),与报文的VID不相等,直接透传报文到Router_1的IF_2接口。
|
||||
5. Router_1的IF_2接口收到Host_2的ARP响应报文后,判断报文的Tag中的VID=2是接口允许通过的VLAN,接收该报文。后续处理同同设备VLAN内互访的步骤7~9一样。
|
||||
|
||||
|
||||
当用户主机Host_1发送报文给用户主机Host_2时,报文的发送过程如下(假设Router_1和Router_2上还未建立任何转发表项)。
|
||||
|
||||
经过与同设备VLAN内互访的步骤1~2一样的过程后,报文被广播到Router_1的IF_2接口。
|
||||
Router_1的IF_2接口在发出ARP请求报文前,因为接口的PVID=1(缺省值),与报文的VID不相等,直接透传该报文到Router_2的IF_2接口,不剥除报文的Tag。
|
||||
Router_2的IF_2接口收到该报文后,判断报文的Tag中的VID=2是接口允许通过的VLAN,接收该报文。
|
||||
经过与同设备VLAN内互访的步骤3~6一样的过程后,Router_2将向其出接口IF_2转发Host_2的ARP响应报文,转发前,因为接口IF_2为Trunk接口且PVID=1(缺省值),与报文的VID不相等,直接透传报文到Router_1的IF_2接口。
|
||||
Router_1的IF_2接口收到Host_2的ARP响应报文后,判断报文的Tag中的VID=2是接口允许通过的VLAN,接收该报文。后续处理同同设备VLAN内互访的步骤7~9一样。
|
||||
可见,干道链路除可传输多个VLAN的数据帧外,还起到透传VLAN的作用,即干道链路上,数据帧只会转发,不会发生Tag的添加或剥离。
|
||||
|
||||
VLAN间互访:
|
||||
## 5 VLAN间互访
|
||||
### VLAN间互访
|
||||
划分VLAN后,由于广播报文只在同VLAN内转发,所以不同VLAN的用户间不能二层互访,这样能起到隔离广播的作用。但实际应用中,不同VLAN的用户又常有互访的需求,此时就需要实现不同VLAN的用户互访,简称VLAN间互访。
|
||||
|
||||
同VLAN间互访一样,VLAN间互访也会经过用户主机的报文转发、设备内部的以太网交换、设备之间交互时VLAN标签的添加和剥离三个环节。同样,根据以太网交换原理,广播报文只在同一VLAN内转发,不同VLAN内的用户则不能直接二层互访,需要借助三层路由技术或VLAN转换技术才能实现互访。
|
||||
|
||||
VLAN间互访技术:
|
||||
华为提供了多种技术实现VLAN间互访,常用的两种技术为VLANIF接口和Dot1q终结子接口。
|
||||
### 同设备VLAN间互访
|
||||
|
||||
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上,分别属于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_1,Router给报文添加VID=2的Tag(Tag的VID=接口的PVID),然后将报文的源MAC地址+VID与接口的对应关系(1-1-1, 2, IF_1)添加进MAC表。
|
||||
3. Router检查报文是ARP请求报文,且目的IP是自己VLANIF2接口的IP地址,给Host_1应答,并将VLANIF2接口的MAC地址3-3-3封装在应答报文中,应答报文从IF_1发出前,剥掉VID=2的Tag。同时,Router会将Host_1的IP地址与MAC地址的对应关系记录到ARP表。
|
||||
4. Host_1收到Router的应答报文,将Router的VLANIF2接口的IP地址与MAC地址对应关系记录到自己的ARP表中,并向Router发送目的MAC为3-3-3、目的IP为Host_2的IP地址 10.2.2.2的报文。
|
||||
5. 报文到达Router的接口IF_1,同样给报文添加VID=2的Tag。
|
||||
6. Router根据报文的源MAC地址+VID与接口的对应关系更新MAC表,并比较报文的目的MAC地址与VLANIF2的MAC地址,发现两者相等,进行三层转发,根据目的IP查找三层转发表,没有找到匹配项,上送CPU查找路由表。
|
||||
7. CPU根据报文的目的IP去找路由表,发现匹配了一个直连网段(VLANIF3对应的网段),于是继续查找ARP表,没有找到,Router会在目的网段对应的VLAN3的所有接口发送ARP请求报文,目的IP是10.2.2.2。从接口IF_2发出前,根据接口配置,剥掉VID=2的Tag。
|
||||
8. Host_2收到ARP请求报文,发现请求IP是自己的IP地址,就发送ARP应答报文,将自己的MAC地址包含在其中。同时,将VLANIF3的MAC地址与IP地址的对应关系记录到自己的ARP表中。
|
||||
9. Router的接口IF_2收到Host_2的ARP应答报文后,给报文添加VID=3的Tag,并将Host_2的MAC和IP的对应关系记录到自己的ARP表中。然后,将Host_1的报文转发给Host_2,发送前,同样剥离报文中的Tag。同时,将Host_2的IP、MAC、VID及出接口的对应关系记录到三层转发表中。
|
||||
|
||||
Host_1判断目的IP地址跟自己的IP地址不在同一网段,因此,它发出请求网关MAC地址的ARP请求报文,目的IP为网关IP 10.1.1.1,目的MAC为全F。
|
||||
报文到达Router的接口IF_1,Router给报文添加VID=2的Tag(Tag的VID=接口的PVID),然后将报文的源MAC地址+VID与接口的对应关系(1-1-1, 2, IF_1)添加进MAC表。
|
||||
Router检查报文是ARP请求报文,且目的IP是自己VLANIF2接口的IP地址,给Host_1应答,并将VLANIF2接口的MAC地址3-3-3封装在应答报文中,应答报文从IF_1发出前,剥掉VID=2的Tag。同时,Router会将Host_1的IP地址与MAC地址的对应关系记录到ARP表。
|
||||
Host_1收到Router的应答报文,将Router的VLANIF2接口的IP地址与MAC地址对应关系记录到自己的ARP表中,并向Router发送目的MAC为3-3-3、目的IP为Host_2的IP地址 10.2.2.2的报文。
|
||||
报文到达Router的接口IF_1,同样给报文添加VID=2的Tag。
|
||||
Router根据报文的源MAC地址+VID与接口的对应关系更新MAC表,并比较报文的目的MAC地址与VLANIF2的MAC地址,发现两者相等,进行三层转发,根据目的IP查找三层转发表,没有找到匹配项,上送CPU查找路由表。
|
||||
CPU根据报文的目的IP去找路由表,发现匹配了一个直连网段(VLANIF3对应的网段),于是继续查找ARP表,没有找到,Router会在目的网段对应的VLAN3的所有接口发送ARP请求报文,目的IP是10.2.2.2。从接口IF_2发出前,根据接口配置,剥掉VID=2的Tag。
|
||||
Host_2收到ARP请求报文,发现请求IP是自己的IP地址,就发送ARP应答报文,将自己的MAC地址包含在其中。同时,将VLANIF3的MAC地址与IP地址的对应关系记录到自己的ARP表中。
|
||||
Router的接口IF_2收到Host_2的ARP应答报文后,给报文添加VID=3的Tag,并将Host_2的MAC和IP的对应关系记录到自己的ARP表中。然后,将Host_1的报文转发给Host_2,发送前,同样剥离报文中的Tag。同时,将Host_2的IP、MAC、VID及出接口的对应关系记录到三层转发表中。
|
||||
至此,Host_1完成对Host_2的单向访问。Host_2访问Host_1的过程与此类似。这样,后续Host_1与Host_2之间的往返报文,都先发送给网关Router,由Router查三层转发表进行三层转发。
|
||||
|
||||
跨设备VLAN间互访:
|
||||
### 跨设备VLAN间互访
|
||||
|
||||
由于VLANIF接口的IP地址只能在设备上生成直连路由,当不同VLAN的用户跨多台设备互访时,除配置VLANIF接口的IP地址外,还需要配置静态路由或运行动态路由协议。
|
||||
|
||||
如下图所示,互访的源主机Host_1和目的主机Host_2连接在不同的设备Router_1和Router_2上,分别属于VLAN2和VLAN3,并位于不同的网段。在Router_1上分别创建VLANIF2和VLANIF4,配置其IP地址为10.1.1.1和10.1.4.1;在Router_2上分别创建VLANIF3和VLANIF4,配置其IP地址为10.1.2.1和10.1.4.2,并在Router_1和Router_2上分别配置静态路由。Router_1上静态路由的目的网段是10.1.2.0/24,下一跳是10.1.4.2;Router_2上静态路由的目的网段是10.1.1.0/24,下一跳是10.1.4.1。
|
||||
|
||||
互访的源主机Host_1和目的主机Host_2连接在不同的设备Router_1和Router_2上,分别属于VLAN2和VLAN3,并位于不同的网段。在Router_1上分别创建VLANIF2和VLANIF4,配置其IP地址为10.1.1.1和10.1.4.1;在Router_2上分别创建VLANIF3和VLANIF4,配置其IP地址为10.1.2.1和10.1.4.2,并在Router_1和Router_2上分别配置静态路由。Router_1上静态路由的目的网段是10.1.2.0/24,下一跳是10.1.4.2;Router_2上静态路由的目的网段是10.1.1.0/24,下一跳是10.1.4.1。
|
||||
|
||||

|
||||
|
||||
当用户主机Host_1发送报文给用户主机Host_2时,报文的发送过程如下(假设Router_1和Router_2上还未建立任何转发表项)。
|
||||
|
||||
与同设备VLAN间互访的步骤1~6一样,经过“Host_1比较目的IP地址—>Host_1查ARP表—>Host_1获取网关MAC地址—>Host_1将发给Host_2的报文送到Router_1—>Router_1查MAC表—>Router_1查三层转发表”的过程,Router_1上送CPU查找路由表。
|
||||
Router_1的CPU根据报文的目的IP 10.1.2.2去找路由表,发现匹配了一个路由网段10.1.2.0/24(VLANIF3对应的网段),下一跳IP地址为10.1.4.2,于是继续查找ARP表,没有找到,Router_1会在下一跳IP地址对应的VLAN4的所有接口发送ARP请求报文,目的IP是10.1.4.2。报文从Router_1的接口IF_2发出前,根据接口配置,直接透传该报文到Router_2的IF_2接口,不剥除报文的Tag。
|
||||
ARP请求报文到达Router_2后,发现目的IP为VLANIF4接口的IP地址,给Router_1回应,填写VLANIF4接口的MAC地址。
|
||||
Router_2的ARP响应报文从其IF_2接口直接透传到Router_1,Router_1接收后,记录VLANIF4的MAC地址与IP地址的对应关系到ARP表项。
|
||||
Router_1将Host_1的报文转发给Router_2,报文的目的MAC修改为Router_2的VLANIF4接口的MAC地址,源MAC地址修改自己的VLANIF4接口的MAC地址,并将刚用到的转发信息记录在三层转发表中(10.1.2.0/24,下一跳IP的MAC地址, 出口VLAN, 出接口)。同样,报文是直接透传到Router_2的IF_2接口。
|
||||
Router_2收到Router_1转发的Host_1的报文后,与同设备VLAN间互访的步骤6~9一样,经过“查MAC表—>查三层转发表—>送CPU—>匹配直连路由—>查ARP表并获取Host_2的MAC地址—>将Host_1的报文转发给Host_2”的过程,同时将Host_2的IP地址、MAC地址、出口VLAN、出接口记录到三层转发表项。
|
||||
VLAN Damping:
|
||||
VLAN抑制
|
||||
|
||||
如果指定VLAN已经创建对应的VLANIF接口,当VLAN中所有接口状态变为Down而引起VLAN状态变为Down时,VLAN会向VLANIF接口上报接口Down状态,从而引起VLANIF接口状态变化。
|
||||
|
||||
为避免由于VLANIF接口状态变化引起的网络震荡,可以在VLANIF接口上启动VLAN Damping功能,抑制VLANIF接口状态变为Down的时间。
|
||||
|
||||
当使能VLAN Damping功能,VLAN中最后一个处于Up状态的接口变为Down后,会抑制一定时间(抑制时间可配置)再上报给VLANIF接口。如果在抑制时间内VLAN中有接口Up,则VLANIF接口状态保持Up状态不变。即VLAN Damping功能可以适当延迟VLAN向VLANIF接口上报接口Down状态的时间,从而抑制不必要的路由震荡。
|
||||
|
||||
VLAN内二层隔离:
|
||||
为了实现用户之间的二层隔离,可以将不同的用户加入不同的VLAN。但若企业规模很大,拥有大量的用户,那么就要为不能互相访问的用户都分配VLAN,这不但需要耗费大量的VLAN,还增加了网络管理者配置和维护的工作量。
|
||||
|
||||
为此,华为提供了一些VLAN内二层隔离技术,如端口隔离、MUX VLAN和基于MQC的VLAN内二层隔离等。
|
||||
|
||||
端口隔离:
|
||||
端口隔离可实现同一VLAN内端口之间的隔离。用户只需要将端口加入到隔离组中,就可以实现隔离组内端口之间的二层隔离,不同隔离组的端口之间或者不属于任何隔离组的端口与其他端口之间都能进行正常的数据转发。同时,用户还可以通过配置实现端口的单向隔离,为用户提供更安全、更灵活的组网方案。
|
||||
|
||||
MUX VLAN:
|
||||
MUX VLAN(Multiplex VLAN)提供了一种通过VLAN进行网络资源控制的机制。它既可实现VLAN间用户通信,也可实现VLAN内的用户相互隔离。
|
||||
|
||||
比如,企业有如下需求:
|
||||
|
||||
要求企业内部员工之间可以互相交流,而企业客户之间是隔离的,不能够互相访问。
|
||||
要求企业员工和企业客户都可以访问企业的服务器。
|
||||
此种场景,通过部署MUX-VLAN就可以实现。
|
||||
|
||||
基于流策略的VLAN内二层隔离:
|
||||
流策略是将流分类和流行为关联后形成的完整的QoS策略。基于流策略的VLAN内二层隔离指用户可以根据匹配规则对报文进行流分类,然后通过流策略将流分类与permit/deny动作相关联,使符合流分类的报文被允许或被禁止通过,从而实现灵活的VLAN内单向或双向隔离。
|
||||
|
||||
VLAN间三层隔离:
|
||||
VLAN间实现三层互通后,两VLAN内的所有用户之间都可以互相访问,但某些场景中,需要禁止部分用户之间的互访或者只允许用户单向访问,比如用户主机和服务器之间一般是单向访问、企业的访客一般只允许上网和访问部分服务器等。此时,就需要配置VLAN间互访控制。
|
||||
|
||||
VLAN间互访控制一般通过流策略实现。用户可根据实际需求定义匹配规则对报文进行流分类,然后通过流策略将流分类与permit/deny动作相关联,使符合流分类的报文被允许或禁止通过,从而实现灵活的VLAN间互访控制。
|
||||
|
||||
管理VLAN:
|
||||
当用户通过远端网管集中管理设备时,需要在设备上通过VLANIF接口配置IP地址作为设备管理IP,通过管理IP来STelnet到设备上进行管理。若设备上其他接口相连的用户加入该VLAN,也可以访问该设备,增加了设备的不安全因素。
|
||||
|
||||
这种情况下可以配置VLAN为管理VLAN(与管理VLAN对应,没有指定为管理VLAN的VLAN称为业务VLAN),不允许Access类型和Dot1q-tunnel类型接口加入该VLAN。由于Access类型和Dot1q-tunnel类型通常用于连接用户,限制这两种类型接口加入管理VLAN后,与该接口相连的用户就无法访问该设备,从而增加了设备的安全性。
|
||||
|
||||
|
||||
|
||||
VLAN聚合简介:
|
||||
VLAN聚合(VLAN Aggregation,也称Super VLAN)指在一个物理网络内,用多个VLAN(称为Sub-VLAN)隔离广播域,并将这些Sub-VLAN聚合成一个逻辑的VLAN(称为Super-VLAN),这些Sub-VLAN使用同一个IP子网和缺省网关。
|
||||
|
||||
通过引入Super-VLAN和Sub-VLAN的概念,使每个Sub-VLAN对应一个广播域,并让多个Sub-VLAN和一个Super-VLAN关联,只给Super-VLAN分配一个IP子网,所有Sub-VLAN都使用Super-VLAN的IP子网和缺省网关进行三层通信。
|
||||
|
||||
这样,多个Sub-VLAN共享一个网关地址,节约了子网号、子网定向广播地址、子网缺省网关地址,且各Sub-VLAN间的界线也不再是从前的子网界线了,它们可以根据各自主机的需求数目在Super-VLAN对应子网内灵活的划分地址范围,从而即保证了各个Sub-VLAN作为一个独立广播域实现广播隔离,又节省了IP地址资源,提高了编址的灵活性。
|
||||
|
||||
原理描述:
|
||||
VLAN聚合通过定义Super-VLAN和Sub-VLAN,使Sub-VLAN只包含物理接口,负责保留各自独立的广播域;Super-VLAN不包含物理接口,只用来建立三层VLANIF接口。然后再通过建立Super-VLAN和Sub-VLAN间的映射关系,把三层VLANIF接口和物理接口两部分有机的结合起来,实现所有Sub-VLAN共用一个网关与外部网络通信,并用ARP Proxy实现Sub-VLAN间的三层通信,从而在实现普通VLAN的隔离广播域的同时,达到节省IP地址的目的。
|
||||
|
||||
Sub-VLAN:只包含物理接口,不能建立三层VLANIF接口,用于隔离广播域。每个Sub-VLAN内的主机与外部的三层通信是靠Super-VLAN的三层VLANIF接口来实现的。
|
||||
Super-VLAN:只建立三层VLANIF接口,不包含物理接口,与子网网关对应。与普通VLAN不同的是,它的VLANIF接口的Up不依赖于自身物理接口的Up,而是只要它所含Sub-VLAN中存在Up的物理接口就Up。
|
||||
一个Super-VLAN可以包含一个或多个Sub-VLAN。Sub-VLAN不再占用一个独立的子网网段。在同一个Super-VLAN中,无论主机属于哪一个Sub-VLAN,它的IP地址都在Super-VLAN对应的子网网段内。
|
||||
|
||||
这样,Sub-VLAN间共用同一个网关,既减少了一部分子网号、子网缺省网关地址和子网定向广播地址的消耗,又实现了不同广播域使用同一子网网段地址的目的,消除了子网差异,增加了编址的灵活性,减少了闲置地址浪费。
|
||||
|
||||
Sub-VLAN之间的通信:
|
||||
VLAN聚合在实现不同VLAN共用同一子网网段地址的同时,也给Sub-VLAN间的三层转发带来了问题。普通VLAN中,不同VLAN内的主机可以通过各自不同的网关进行三层互通。但是Super-VLAN中,所有Sub-VLAN内的主机使用的是同一个网段的地址,共用同一个网关地址,主机只会做二层转发,而不会送网关进行三层转发。即实际上,不同Sub-VLAN的主机在二层是相互隔离的,这就造成了Sub-VLAN间无法通信的问题。
|
||||
|
||||
解决这一问题的方法就是使用Proxy ARP。
|
||||
|
||||
示列:
|
||||
如下图所示,假设Sub-VLAN2内的主机Host_1与Sub-VLAN3内的主机Host_2要通信,在Super-VLAN10的VLANIF接口上启用Proxy
|
||||
ARP。
|
||||
|
||||
|
||||
|
||||
图:Proxy ARP实现不同Sub-VLAN间的三层通信组网图
|
||||
Host_1与Host_2的通信过程如下(假设Host_1的ARP表中无Host_2的对应表项):
|
||||
|
||||
Host_1将Host_2的IP地址(10.1.1.12)和自己所在网段10.1.1.0/24进行比较,发现Host_2和自己在同一个子网,但是Host_1的ARP表中无Host_2的对应表项。
|
||||
Host_1发送ARP广播报文,请求Host_2的MAC地址,目的IP为10.1.1.12。
|
||||
网关Router收到Host_1的ARP请求,由于网关上使能Sub-VLAN间的Proxy ARP,开始使用报文中的目的IP地址在路由表中查找,发现匹配了一条路由,下一跳为直连网段(VLANIF10的10.1.1.0/24),VLANIF10对应Super-VLAN10,则向Super-VLAN10的所有Sub-VLAN接口发送一个ARP广播,请求Host_2的MAC地址。
|
||||
Host_2收到网关发送的ARP广播后,对此请求进行ARP应答。
|
||||
网关收到Host_2的应答后,就把自己的MAC地址回应给Host_1。
|
||||
Host_1之后要发给Host_2的报文都先发送给网关,由网关做三层转发。
|
||||
Host_2发送报文给Host_1的过程和上述的Host_1发送报文给Host_2的过程类似,不再赘述。
|
||||
|
||||
Sub_VLAN与其他网络的三层通信:
|
||||
以所示组网为例,介绍Sub-VLAN内主机与其他网络内的主机间通信过程。
|
||||
|
||||
如下图,用户主机与服务器处于不同的网段中,Router_1上配置了Sub-VLAN2、Sub-VLAN3、Super-VLAN4和VLAN10,Router_2上配置了VLAN10和VLAN20。
|
||||
|
||||
|
||||
|
||||
图:Sub-VLAN与其他网络的三层通信组网图
|
||||
假设Sub-VLAN2下的主机Host_1想访问与Router_2相连的Server,报文转发流程如下(假设Router_1上已配置了去往10.1.2.0/24网段的路由,Router_2上已配置了去往10.1.1.0/24网段的路由,但两设备没有任何三层转发表项):
|
||||
|
||||
Host_1将Server的IP地址(10.1.2.2)和自己所在网段10.1.1.0/24进行比较,发现和自己不在同一个子网,发送ARP请求给自己的网关,请求网关的MAC地址,目的MAC为全F,目的IP为10.1.1.1。
|
||||
Router_1收到该请求报文后,查找Sub-VLAN和Super-VLAN的对应关系,知道应该回应Super-VLAN4对应的VLANIF4的MAC地址,并知道从Sub-VLAN2的接口回应给Host_1。
|
||||
Host_1学习到网关的MAC地址后,开始发送目的MAC为Super-VLAN4对应的VLANIF4的MAC地址、目的IP为10.1.2.2的报文。
|
||||
Router_1收到该报文后,根据Sub-VLAN和Super-VLAN的对应关系以及目的MAC判断进行三层转发,查三层转发表项没有找到匹配项,上送CPU查找路由表,得到下一跳地址为10.1.10.2,出接口为VLANIF10,并通过ARP表项和MAC表项确定出接口,把报文发送给Router_2。
|
||||
Router_2根据正常的三层转发流程把报文发送给Server。
|
||||
Server收到Host_1的报文后给Host_1回应,回应报文的目的IP为10.1.1.2,目的MAC为Router_2上VLANIF20接口的MAC地址,回应报文的转发流程如下:
|
||||
|
||||
Server给Host_1的回应报文按照正常的三层转发流程到达Router_1。到达Router_1时,报文的目的MAC地址为Router_1上VLANIF10接口的MAC地址。
|
||||
Router_1收到该报文后根据目的MAC地址判断进行三层转发,查三层转发表项没有找到匹配项,上送CPU,CPU查路由表,发现目的IP为10.1.1.2对应的出接口为VLANIF4,查找Sub-VLAN和Super-VLAN的对应关系,并通过ARP表项和MAC表项,知道报文应该从Sub-VLAN2的接口发送给Host_1。
|
||||
回应报文到达Host_1。
|
||||
Sub-VLAN与其他设备的二层通信:
|
||||
如下图所示组网为例,介绍Sub-VLAN内主机与其他设备的二层通信情况。Router_1上配置了Sub-VLAN2、Sub-VLAN3和Super-VLAN4,_Router_1的_IF_1和IF_2配置为Access接口,IF_3接口配置为Trunk接口,并允许VLAN2和VLAN3通过;Router_2连接Router_1的接口配置为Trunk接口,并允许VLAN2和VLAN3通过。
|
||||
|
||||
|
||||
图:Sub-VLAN与其他设备的二层通信组网图
|
||||
从Host_1进入Router_1的报文会被打上VLAN2的Tag。在Router_1中这个Tag不会因为VLAN2是VLAN4的Sub-VLAN而变为VLAN4的Tag。该报文从Router_1的Trunk接口IF_3出去时,依然是携带VLAN2的Tag。
|
||||
|
||||
也就是说,Router_1本身不会发出VLAN4的报文。就算其他设备有VLAN4的报文发送到该设备上,这些报文也会因为Router_1上没有VLAN4对应的物理接口而被丢弃。因为Router_1的IF_3接口上根本就不允许Super-VLAN4通过。对于其他设备而言,有效的VLAN只有Sub-VLAN2和Sub-VLAN3,所有的报文都是在这些VLAN中交互的。
|
||||
|
||||
这样,Router_1上虽然配置了VLAN聚合,但与其他设备的二层通信,不会涉及到Super-VLAN,与正常的二层通信流程一样。
|
||||
|
||||
配置Super-VALN:
|
||||
配置注意事项:
|
||||
VLAN1不能配置为Super-VLAN。
|
||||
配置某VLAN为Super-VLAN后,该VLAN类型改变为super,不允许任何物理接口加入该VLAN。
|
||||
流策略只有在Super-vlan的所有Sub-vlan下配置才能生效,在Super-vlan下配置不生效。
|
||||
配置某个VLAN为子接口的终结VLAN后,该VLAN不能再配置为Super-VLAN或Sub-VLAN。
|
||||
Super-VLAN对应的VLANIF接口配置IP地址后Proxy ARP才能生效。
|
||||
配置聚合VLAN:
|
||||
拓扑:
|
||||
PC1,2 属于VLAN10 ,PC3,4属于VLAN20,通过聚合VLAN100,实现共用网关IP地址,开启VLAN间ARP代理,实现VLAN间通信。
|
||||
|
||||
|
||||
|
||||
图:VLAN聚合配置拓扑
|
||||
配置参数:
|
||||
[SW]dis current-configuration
|
||||
#
|
||||
sysname SW
|
||||
#
|
||||
vlan batch 10 20 100
|
||||
//批量创建VLAN
|
||||
#
|
||||
vlan 100
|
||||
aggregate-vlan//创建聚合VLAN
|
||||
access-vlan 10 20//将valn10 20 添加进聚合和VLAN
|
||||
#
|
||||
interface Vlanif100
|
||||
ip address 10.0.100.254 255.255.255.0
|
||||
arp-proxy inter-sub-vlan-proxy enable
|
||||
//开启VLAN间ARP代理,实现VLAN间通信
|
||||
#
|
||||
interface GigabitEthernet0/0/1
|
||||
port link-type access
|
||||
port default vlan 10
|
||||
#
|
||||
interface GigabitEthernet0/0/2
|
||||
port link-type access
|
||||
port default vlan 10
|
||||
#
|
||||
interface GigabitEthernet0/0/3
|
||||
port link-type access
|
||||
port default vlan 20
|
||||
#
|
||||
interface GigabitEthernet0/0/4
|
||||
port link-type access
|
||||
port default vlan 20
|
||||
#
|
||||
1. 与同设备VLAN间互访的步骤1~6一样,经过“Host_1比较目的IP地址—>Host_1查ARP表—>Host_1获取网关MAC地址—>Host_1将发给Host_2的报文送到Router_1—>Router_1查MAC表—>Router_1查三层转发表”的过程,Router_1上送CPU查找路由表。
|
||||
2. Router_1的CPU根据报文的目的IP 10.1.2.2去找路由表,发现匹配了一个路由网段10.1.2.0/24(VLANIF3对应的网段),下一跳IP地址为10.1.4.2,于是继续查找ARP表,没有找到,Router_1会在下一跳IP地址对应的VLAN4的所有接口发送ARP请求报文,目的IP是10.1.4.2。报文从Router_1的接口IF_2发出前,根据接口配置,直接透传该报文到Router_2的IF_2接口,不剥除报文的Tag。
|
||||
3. ARP请求报文到达Router_2后,发现目的IP为VLANIF4接口的IP地址,给Router_1回应,填写VLANIF4接口的MAC地址。
|
||||
4. Router_2的ARP响应报文从其IF_2接口直接透传到Router_1,Router_1接收后,记录VLANIF4的MAC地址与IP地址的对应关系到ARP表项。
|
||||
5. Router_1将Host_1的报文转发给Router_2,报文的目的MAC修改为Router_2的VLANIF4接口的MAC地址,源MAC地址修改自己的VLANIF4接口的MAC地址,并将刚用到的转发信息记录在三层转发表中(10.1.2.0/24,下一跳IP的MAC地址, 出口VLAN, 出接口)。同样,报文是直接透传到Router_2的IF_2接口。
|
||||
6. Router_2收到Router_1转发的Host_1的报文后,与同设备VLAN间互访的步骤6~9一样,经过“查MAC表—>查三层转发表—>送CPU—>匹配直连路由—>查ARP表并获取Host_2的MAC地址—>将Host_1的报文转发给Host_2”的过程,同时将Host_2的IP地址、MAC地址、出口VLAN、出接口记录到三层转发表项。
|
||||
BIN
计算机网络实验/image/EthernetMAC帧.png
Normal file
|
After Width: | Height: | Size: 113 KiB |
BIN
计算机网络实验/image/Ethernet拓扑结构.png
Normal file
|
After Width: | Height: | Size: 123 KiB |
BIN
计算机网络实验/image/VLAN同设备互访.gif
Normal file
|
After Width: | Height: | Size: 457 KiB |
BIN
计算机网络实验/image/VLAN同设备跨VLAN.gif
Normal file
|
After Width: | Height: | Size: 607 KiB |
BIN
计算机网络实验/image/VLAN帧格式.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
计算机网络实验/image/VLAN跨设备互访.gif
Normal file
|
After Width: | Height: | Size: 578 KiB |
BIN
计算机网络实验/image/VLAN跨设备跨VLAN.gif
Normal file
|
After Width: | Height: | Size: 948 KiB |
BIN
计算机网络实验/image/ip routing table.png
Normal file
|
After Width: | Height: | Size: 153 KiB |
@@ -3,10 +3,22 @@
|
||||
## 1 IGM概述
|
||||
|
||||
### 简介
|
||||
IGMP(Internet Group Management Protocol,互联网组管理协议)是TCP/IP协议族中负责IPv4组播成员管理的协议。IGMP用来在接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成员管理功能,IGMP报文封装在IP报文中。
|
||||
IGMP(Internet Group Management Protocol,互联网组管理协议)是TCP/IP协议族中负责IPv4组播成员管理的协议。IGMP用来在接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。
|
||||
|
||||
IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成员管理功能,IGMP报文封装在IP报文中。协议号2,TTL字段为1.
|
||||
|
||||
### 目的
|
||||
IP组播通信的特点是报文从一个源发出,被转发到一组特定的接收者。但在组播通信模型中,发送者不关注接收者的位置信息,只是将数据发送到约定的目的组播地址。要使组播报文最终能够到达接收者,需要某种机制使连接接收者网段的组播路由器能够了解到该网段存在哪些组播接收者,同时保证接收者可以加入相应的组播组中。IGMP就是用来在接收者主机和与其所在网段直接相邻的组播路由器之间建立、维护组播组成员关系的协议。
|
||||
|
||||
IP组播通信的特点是报文从一个源发出,被转发到一组特定的接收者。但在组播通信模型中,发送者不关注接收者的位置信息,只是将数据发送到约定的目的组播地址。
|
||||
|
||||
IGMP是用来在接收者主机和与其所在网段直接相邻的组播路由器之间建立、维护组播组成员关系的协议。
|
||||
|
||||
### 组成员关系建立过程
|
||||
|
||||
* 接收者向共享网络报告组播的成员关系。
|
||||
* 处于同一网段的能使用IGMP功能的路由器选举查询器,查询器周期性地向共享网段发送组播成员查询消息。
|
||||
* 主机接收到该查询消息后进行响应,报告组成员关系。
|
||||
* 查询器接收的响应刷新组成员的存在信息。查询器通过IGMP了解每个接口连接的网段上是否存在某个组播组的接收者。
|
||||
|
||||
## 2.1 IGMPv1报文
|
||||
|
||||
@@ -32,7 +44,7 @@ IP组播通信的特点是报文从一个源发出,被转发到一组特定的
|
||||
|
||||

|
||||
|
||||
## 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),将组播组与源列表之间的对应关系简单的表示为(G,INCLUDE,(S1、S2…)),表示只接收来自指定组播源S1、S2……发往组G的数据;或(G,EXCLUDE,(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时间内没有发送查询报文,非查询者会认为查询者已经故障,需要重新选举查询者。查询者会转发组播流量,同时每隔interval(60s)的时间发送查询报文。
|
||||
|
||||
|
||||
## 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查询报文,主机会影后生成端口成员列表和组播地址转发表项。
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 组播技术
|
||||
# 组播-IP组播
|
||||
|
||||
## 1 基本概念
|
||||
|
||||
@@ -62,24 +62,44 @@ IP组播技术在ISP提供的互联网信息服务中已经得到了应用。例
|
||||
* 组播组成员:所有加入某组播组的主机便成为该组播组的成员,组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。组播组成员可以广泛地分布在网络中的任何地方。
|
||||
* 组播路由器:支持三层组播功能的路由器或交换机。组播路由器不仅能够提供组播路由功能,也能够在与用户连接的末梢网段上提供组播组成员的管理功能。
|
||||
|
||||
## 3 组播服务模型:
|
||||
### 构成要素
|
||||
* 主机:组播的使用者,需要支持IGMP,运行组播应用程序。
|
||||
* 二层交换机:提供端主机的接入,实现二层组播转发。
|
||||
* 路由器:组播网络的核心部分,负责数据的路由转发,需要实现IGMP、组播路由功能。
|
||||
|
||||
### 基本原理
|
||||
|
||||
当存在多个接受者时,通过合并重复信息的传输来达到减少宽带浪费和降低服务器处理负担的目的。
|
||||
|
||||
* 在IP组播网络中,主机通过IGMP组播管理协议加入组播组。
|
||||
* 路由器通过组播路由协议维护组播路由。将组播信息传递给每一个支持组播协议的路由器。
|
||||
* 路由器维护组播路由表。组播路由表联合起来组成组合组播转发树,实现IP层组播路由转发。
|
||||
|
||||
## 3 组播服务模型
|
||||
组播服务模型的分类是针对接收者主机的,对组播源没有区别。组播源发出的组播数据中总是以组播源自己的IP地址为报文的源地址,组播组地址为目的地址。而接收者主机接收数据时可以对源进行选择,因此产生了ASM(Any-Source Multicast)和SSM(Source-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组播地址
|
||||
IANA(Internet Assigned Numbers Authority,互联网编号分配委员会)将D类地址空间分配给IPv4组播使用。IPv4地址一共32位,D类地址最高4位为1110,因此地址范围从224.0.0.0到239.255.255.255,具体分类及含义见下表:
|
||||
@@ -93,30 +113,30 @@ IANA(Internet Assigned Numbers Authority,互联网编号分配委员会)
|
||||
|
||||
常见的永久组地址列表:
|
||||
|
||||
|永久组地址 含义|
|
||||
|永久组地址 |含义|
|
||||
|-|-|
|
||||
|224.0.0.0 不分配|
|
||||
|224.0.0.1 网段内所有主机和路由器(等效于广播地址)|
|
||||
|224.0.0.2 所有组播路由器|
|
||||
|224.0.0.3 不分配|
|
||||
|224.0.0.4 DVMRP(Distance Vector Multicast Routing Protocol,距离矢量组播路由协议)路由器|
|
||||
|224.0.0.5 OSPF(Open Shortest Path First,开放最短路径优先)路由器|
|
||||
|224.0.0.6 OSPF DR(Designated Router,指定路由器)|
|
||||
|224.0.0.7 ST(Shared Tree,共享树)路由器|
|
||||
|224.0.0.8 ST主机|
|
||||
|224.0.0.9 RIP-2(Routing Information Protocol version 2,路由信息协议版本2)路由器|
|
||||
|224.0.0.11 移动代理(Mobile-Agents)|
|
||||
|224.0.0.12 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器/中继代理|
|
||||
|224.0.0.13 所有PIM(Protocol Independent Multicast,协议无关组播)路由器|
|
||||
|224.0.0.14 RSVP(Resource Reservation Protocol,资源预留协议)封装|
|
||||
|224.0.0.15 所有CBT(Core-Based Tree,有核树)路由器|
|
||||
|224.0.0.16 指定SBM(Subnetwork Bandwidth Management,子网带宽管理)|
|
||||
|224.0.0.17 所有SBM|
|
||||
|224.0.0.18 VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)|
|
||||
|224.0.0.22 所有使能IGMPv3(Internet 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| DVMRP(Distance Vector Multicast Routing Protocol,距离矢量组播路由协议)路由器|
|
||||
|224.0.0.5| OSPF(Open Shortest Path First,开放最短路径优先)路由器|
|
||||
|224.0.0.6| OSPF DR(Designated Router,指定路由器)|
|
||||
|224.0.0.7| ST(Shared Tree,共享树)路由器|
|
||||
|224.0.0.8| ST主机|
|
||||
|224.0.0.9| RIP-2(Routing Information Protocol version 2,路由信息协议版本2)路由器|
|
||||
|224.0.0.11| 移动代理(Mobile-Agents)|
|
||||
|224.0.0.12| DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器/中继代理|
|
||||
|224.0.0.13| 所有PIM(Protocol Independent Multicast,协议无关组播)路由器|
|
||||
|224.0.0.14| RSVP(Resource Reservation Protocol,资源预留协议)封装|
|
||||
|224.0.0.15| 所有CBT(Core-Based Tree,有核树)路由器|
|
||||
|224.0.0.16| 指定SBM(Subnetwork Bandwidth Management,子网带宽管理)|
|
||||
|224.0.0.17| 所有SBM|
|
||||
|224.0.0.18| VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)|
|
||||
|224.0.0.22| 所有使能IGMPv3(Internet Group Management Protocol, Version 3,因特网组管理协议)的路由器|
|
||||
|224.0.0.19 ~ 224.0.0.21 224.0.0.23 ~ 224.0.0.255| 未指定|
|
||||
|
||||
### IPv6组播地址:
|
||||
### IPv6组播地址
|
||||
|
||||

|
||||
|
||||
@@ -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 组播的相关协议
|
||||
组播协议包括用于主机和路由器之间的组成员关系管理协议和用于路由器和路由器之间组播路由协议。
|
||||
|
||||
### 组播管理协议
|
||||
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
# 组播-PIM
|
||||
|
||||
|
||||
> 需要补充PIM相关的报文格式与相关的流程图。根据课本上的来即可。
|
||||
|
||||
|
||||
## 1 PIM简介
|
||||
|
||||
### 作用
|
||||
|
||||
PIM(Protocol Independent Multicast)称为协议无关组播。这里的协议无关指的是与单播路由协议无关,即PIM不需要维护专门的单播路由信息。作为组播路由解决方案,它直接利用单播路由表的路由信息,对组播报文执行RPF(Reverse Path Forwarding,逆向路径转发)检查,检查通过后创建组播路由表项,从而转发组播报文。
|
||||
PIM(Protocol Independent Multicast)称为协议无关组播。与单播路由协议无关。
|
||||
|
||||
目前设备实际支持的PIM协议包括:PIM-DM(PIM-Dense Mode)、PIM-SM(PIM-Sparse Mode)。
|
||||
作为组播路由解决方案,它直接利用单播路由表的路由信息,对组播报文执行RPF(Reverse Path Forwarding,逆向路径转发)检查,检查通过后创建组播路由表项,从而转发组播报文。
|
||||
|
||||
目前设备实际支持的PIM协议包括:PIM-DM(PIM-Dense Mode密集模式)、PIM-SM(PIM-Sparse Mode稀疏模式)。
|
||||
|
||||
### 组播分发树
|
||||
PIM网络以组播组为单位在路由器上建立一点到多点的组播转发路径。由于组播转发路径呈现树型结构,也称为组播分发树MDT(Multicast Distribution Tree)。
|
||||
@@ -25,7 +31,7 @@ PIM网络以组播组为单位在路由器上建立一点到多点的组播转
|
||||
* 最后一跳路由器:组播转发路径上,与组播组成员相连且负责向该组成员转发组播数据的PIM路由器。
|
||||
* 中间路由器:组播转发路径上,第一跳路由器与最后一跳路由器之间的PIM路由器。
|
||||
|
||||
### PIM路由表项
|
||||
### PIM路由表项与转发流程
|
||||
PIM路由表项即通过PIM协议建立的组播路由表项。PIM网络中存在两种路由表项:(S,G)路由表项或( * ,G)路由表项。S表示组播源,G表示组播组, * 表示任意。
|
||||
|
||||
* (S,G)路由表项主要用于在PIM网络中建立SPT。对于PIM-DM网络和PIM-SM网络适用。
|
||||
@@ -48,9 +54,37 @@ PIM路由表项中主要用于指导转发的信息如下:
|
||||
|
||||
### 基本原理
|
||||
|
||||
PIM-DM使用“推(Push)模式”转发组播报文,一般应用于组播组成员规模相对较小、相对密集的网络。在实现过程中,它会假设网络中的组成员分布非常稠密,每个网段都可能存在组成员。当有活跃的组播源出现时,PIM-DM会将组播源发来的组播报文扩散到整个网络的PIM路由器上,再裁剪掉不存在组成员的分支。PIM-DM通过周期性的进行“扩散(Flooding)—剪枝(Prune)”,来构建并维护一棵连接组播源和组成员的单向无环SPT(Source Specific Shortest Path Tree)。如果在下一次“扩散-剪枝”进行前,被裁剪掉的分支由于其叶子路由器上有新的组成员加入而希望提前恢复转发状态,也可通过嫁接(Graft)机制主动恢复其对组播报文的转发。
|
||||
PIM-DM使用“推(Push)模式”转发组播报文,一般应用于组播组成员规模相对较小、相对密集的网络。
|
||||
|
||||
PIM-DM的关键工作机制包括邻居发现、扩散、剪枝、嫁接、断言和状态刷新。其中,扩散、剪枝、嫁接是构建SPT的主要方法。
|
||||
在实现过程中,它会假设网络中的组成员分布非常稠密,每个网段都可能存在组成员。当有活跃的组播源出现时,PIM-DM会将组播源发来的组播报文扩散到整个网络的PIM路由器上,再裁剪掉不存在组成员的分支。
|
||||
|
||||
PIM-DM通过周期性的进行“扩散(Flooding)—剪枝(Prune)”,来构建并维护一棵连接组播源和组成员的单向无环SPT(Source 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模型):
|
||||
在ASM(Any-Source Multicast)模型中,PIM-SM使用“拉(Pull)模式”转发组播报文,一般应用于组播组成员规模相对较大、相对稀疏的网络。基于这一种稀疏的网络模型,它的实现方法是:
|
||||
|
||||
* 在网络中维护一台重要的PIM路由器:汇聚点RP(Rendezvous Point),可以为随时出现的组成员或组播源服务。网络中所有PIM路由器都知道RP的位置。
|
||||
* 当网络中出现组成员(用户主机通过IGMP加入某组播组G)时,最后一跳路由器向RP发送Join报文,逐跳创建( * ,G)表项,生成一棵以RP为根的RPT。
|
||||
* 当网络中出现活跃的组播源(组播源向某组播组G发送第一个组播数据)时,第一跳路由器将组播数据封装在Register报文中单播发往RP,在RP上创建(S,G)表项,注册源信息。
|
||||
* 在网络中维护一台重要的PIM路由器:**汇聚点RP**(Rendezvous Point),可以为随时出现的组成员或组播源服务。网络中所有PIM路由器都知道RP的位置。负责构造RPT,组播数据沿RPT发送给接受者。
|
||||
* 当网络中出现组成员(用户主机通过IGMP加入某组播组G)时,最后一跳路由器向RP发送Join报文,逐跳创建( * ,G)表项,生成一棵以RP为根的**RPT**。
|
||||
* 当网络中出现活跃的组播源(组播源向某组播组G发送第一个组播数据)时,第一跳路由器将组播数据封装在Register报文中**单播**发往RP,在RP上创建(S,G)表项,注册源信息。达到RP后建立最短路径树SPT。组播源沿SPT发向RP,组播数据到达RP后沿汇聚树RPT发送给接收者。
|
||||
|
||||
在ASM模型中,PIM-SM的关键机制包括邻居发现、DR竞选、RP发现、RPT构建、组播源注册、SPT切换、断言;同时也可通过配置BSR(Bootstrap Router)管理域来实现单个PIM-SM域的精细化管理。
|
||||
在ASM模型中,PIM-SM的关键机制包括**邻居发现、DR竞选、RP发现、RPT构建、组播源注册、SPT切换、断言**;同时也可通过配置BSR(Bootstrap 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-RP(Candidate-RP,候选RP)来动态竞选出RP。同时,还需要通过配置C-BSR(Candidate-BSR,候选BSR)选举出BSR,来收集C-RP的通告信息,向PIM-SM域内的所有PIM路由器发布。
|
||||
* 动态RP:在PIM域内选择几台PIM路由器,配置C-RP(Candidate-RP,候选RP)来动态竞选出RP。同时,还需要通过配置BSR(Bootstrap Router 自举路由器)负责PIM-SM域的管理和C-BSR(Candidate-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报文,将其解封装,建立(S,G)表项,并将组播数据沿RPT发送到达组成员。
|
||||
1. 组播源将组播报文发给源端DR。
|
||||
2. 源端DR接收到组播报文后,将其封装在Register报文中,发送给RP。
|
||||
3. RP接收到Register报文,将其解封装,建立(S,G)表项,并将组播数据沿RPT发送到达组成员。
|
||||
|
||||
### SPT切换:
|
||||
### RPT向SPT切换
|
||||
|
||||
在PIM-SM网络中,一个组播组只对应一个RP,只构建一棵RPT。在未进行SPT切换的情况下,所有发往该组的组播报文都必须先封装在注册报文中发往RP,RP解封装后,再沿RPT分发。RP是所有组播报文必经的中转站,当组播报文速率逐渐变大时,对RP形成巨大的负担。为了解决此问题,PIM-SM允许RP或组成员端DR通过触发SPT切换来减轻RP的负担。
|
||||
|
||||
|
||||