VRF: 虚拟路由转发
大白话概括: VRF位于OSI第三层(网络层)基于IP地址的路由,就是已经拿到IP地址的包,然后进行重新管理,可以创新虚拟的路由表,相当于进行重新net(可以管理不同的路由器),相当于接入一个宿舍的交换机上每个坏小伙都私接小路由,这所有的小路由都在一台设备上
VRF核心功能
- 作用:VRF用于在同一台物理设备(如路由器或三层交换机)上创建多个隔离的路由表实例,实现网络流量的逻辑分割(类似“虚拟路由器”)。每个VRF实例独立维护:
- 路由表(决定数据包转发路径)不同路由表中可以有一样的ip
- 转发表(FIB, Forwarding Information Base)
- 关联的接口(属于特定VRF的接口处理该实例的流量)
- 应用场景:多租户网络、MPLS VPN、业务隔离等。
和vlan的区别
什么是vlan: 图文并茂讲VLAN,让你看一遍就理解VLAN-CSDN博客
VLAN的本质:二层隔离,统一三层路由
vlan(虚拟局域网)只是划分网段,但是由来路由统一管理,vlan不参与IP路由
作用层级:
VLAN是二层(数据链路层)技术,用于划分广播域,隔离同一物理网络中的不同LAN段。路由管理:
- 默认情况:所有VLAN共享同一个全局路由表(除非使用VRF)。
例如:VLAN 10(192.168.1.0/24)和VLAN 20(192.168.2.0/24)的子网通过同一台三层交换机或路由器互联,流量由同一路由表控制。 - 限制:
- 不同VLAN间的通信需通过三层设备(如路由器或三层交换机)进行路由。
- 通过ACL(访问控制列表)或防火墙可以限制VLAN间通信,但路由表本身是统一的。
- 默认情况:所有VLAN共享同一个全局路由表(除非使用VRF)。
核心能力:
交换机处理:普通二层交换机(如Cisco 2960)仅支持VLAN,负责:
- 隔离广播域(不同VLAN的设备无法直接通信)。
- 基于端口/MAC划分VLAN(如Port 1属于VLAN 10,Port 2属于VLAN 20)。
无路由功能:二层交换机
无法处理IP路由,因此:
- 不能为不同VLAN分配IP子网。
- 不同VLAN间通信必须依赖三层设备(如路由器或三层交换机)。
VRF的本质:独立路由实例,完全隔离
可以设置独立路由,每个路由下面又可以设置不同网段
作用层级:
VRF是三层(网络层)技术,创建多个独立的路由表和转发实例,类似虚拟的“独立网络服务器”。核心特性:
独立路由表:每个VRF有自己的路由条目,互不干扰。
例如:VRF-A可以有一条默认路由指向ISP-A,VRF-B指向ISP-B。完全隔离:
- 不同VRF的设备即使IP相同(如两个VRF中都有192.168.1.1),也互不可见。
- 需要显式配置**路由泄漏(Route Leaking)**才能跨VRF通信。
独立管理:
每个VRF可单独配置路由协议(如OSPF、BGP)、NAT、防火墙策略等。交换功能:VRF本身不直接处理二层交换,但:
可以绑定到物理接口或VLAN接口(SVI),从而间接关联二层域。
例如
1
2
3interface GigabitEthernet0/0
vrf forwarding VRF-A # 将物理接口绑定到VRF-A
ip address 192.168.1.1 255.255.255.0
IP分配与通信
- IP分配:VRF可以管理独立的IP地址池:
不同VRF可使用重叠IP(如VRF-A和VRF-B均可使用192.168.1.0/24)。
需为每个VRF的接口分配IP(类似独立的路由器)。 - 总结:
VRF是三层技术,-具备路由功能但无原生二层交换能力,需依赖底层设备(如交换机)处理VLAN或物理连接。
- IP分配:VRF可以管理独立的IP地址池:
维度 | VLAN(Layer 2) | VRF(Layer 3) |
---|---|---|
隔离依据 | MAC地址/VLAN标签 | IP地址/路由表 |
通信依赖 | 需三层设备跨VLAN路由 | 默认完全隔离,需显式配置路由泄漏 |
地址重叠 | 不允许同一子网内IP重复 | 允许不同VRF使用相同IP段 |
设备角色 | 二层交换机 | 路由器/三层交换机 |
层级隔离: 二层隔离 vs 三层隔离
定义
OSI层级 | 名称 | 核心功能 | 典型协议/设备 |
---|---|---|---|
Layer 2 | 数据链路层 | 基于MAC地址的帧转发,划分广播域 | 以太网(Ethernet)、VLAN、交换机 |
Layer 3 | 网络层 | 基于IP地址的路由,跨子网通信 | IP、ICMP、路由器、VRF |
数据链路层: 只有mac没有ip!
数据链路层是负责在物理网络中传输数据帧的层次,常见的技术包括以太网、VLAN(虚拟局域网)等。二层隔离通过物理或逻辑的手段将不同的网络设备或网络区域划分为独立的二层域,使它们之间的通信受限或隔离。这样可以有效地控制数据帧的流动,防止不同域之间的数据干扰和冲突。
网络层: 通过ip来确定设备,不管mac,出现mac就会通过arp降层处理
网络层是负责在网络中进行数据包路由和转发的层次,常见的协议包括IP(Internet Protocol)和路由协议(如OSPF、BGP等)。三层隔离通过配置路由器、防火墙或其他网络设备,将不同的网络分割为独立的子网或虚拟网络,实现不同子网之间的隔离和通信控制。三层隔离可以根据网络地址、子网掩码、路由策略等进行配置,从而限制不同子网之间的通信流量。
二层隔离
定义: 在 数据链路层(OSI Layer 2) 通过 MAC地址或VLAN标签 实现的网络隔离,限制同一广播域内的设备直接通信。
vlan(虚拟局域网): 将同一物理交换机上的端口划分到不同逻辑的广播域
# 交换机配置:端口1属于VLAN 10,端口2属于VLAN 20 interface GigabitEthernet0/1 switchport access vlan 10 interface GigabitEthernet0/2 switchport access vlan 20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
- 私有vlan(PVLAN)
- 进一步隔离同一VLAN内的设备(如禁止同一VLAN的服务器互相访问)。(类似ap隔离?)
#### 三层隔离(Layer 3 Isolation)
- 定义:在 **网络层(OSI Layer 3)** 通过 **IP路由表或VRF** 实现的逻辑隔离,控制不同子网或路由域之间的通信。
- 子网划分(Subnet):
将网络划分为不同IP子网(如`192.168.1.0/24`和`192.168.2.0/24`),默认需路由器才能互通。
- **隔离效果**:不同子网的设备无法直接通信,除非配置路由或ACL。
- **VRF(虚拟路由和转发)**:
创建完全独立的路由表实例(如VRF-A和VRF-B),实现IP地址重叠和策略隔离。
- 示例
```bash
# 路由器配置:两个VRF使用相同的IP段但完全隔离
ip vrf VRF-A
rd 100:1
ip vrf VRF-B
rd 200:1
interface GigabitEthernet0/0
vrf forwarding VRF-A
ip address 192.168.1.1 255.255.255.0
interface GigabitEthernet0/1
vrf forwarding VRF-B
ip address 192.168.1.1 255.255.255.0
从OSI模型上来看
在纯二层(数据链路层)的通信中,确实不存在IP地址的概念。
OSI分层原则:
- 第二层(数据链路层):仅处理MAC地址和帧的转发(如以太网帧)。
- 第三层(网络层):才引入IP地址和路由逻辑。
数据包封装:
设备发送数据时,IP包会被封装在以太网帧中:
1
[以太网帧头][目标MAC][源MAC][类型0x0800][IP包头][数据][FCS]
关键点:
- 交换机(二层设备)只解析以太网帧头(MAC地址),不关心IP包头内容。
- 路由器(三层设备)才会解封装帧,读取IP包头进行路由决策。
常见误解澄清:
- “ARP协议属于哪一层?”
ARP协议虽然是解决IP→MAC映射的,但它的报文是二层广播帧(无IP头),因此属于二层与三层的过渡机制
跨网段通信是否需要VLAN参与?
核心结论:
VLAN是二层隔离技术,而跨网段通信是三层路由行为,两者独立但可协作
VLAN的作用:
划分广播域(如VLAN 10和VLAN 20的广播流量互不干扰)。
不直接参与跨网段路由,但可绑定到三层接口(SVI)作为网关。
跨网段通信流程:
1
设备A(192.168.1.1/24) → 设备A的网关(192.168.1.254) → 目标网关(192.168.2.254) → 设备B(192.168.2.1/24)
关键步骤:
设备A判断目标IP:
- 若目标IP(如192.168.2.1)与自己在同一子网(通过子网掩码计算),直接ARP查询目标MAC。
- 若不在同一子网,将数据包发给默认网关(需已知网关MAC)。
网关路由器处理:
- 解封装帧,查路由表,决定下一跳(如通过OSPF或静态路由)。
- 重新封装帧(目标MAC=下一跳路由器的MAC,目标IP不变)。
最终交付:
- 目标网关将数据包转发给设备B。
VLAN与跨网段的关系:
场景举例:
- 设备A(VLAN 10,192.168.1.1/24) → 设备B(VLAN 20,192.168.2.1/24)。
- 即使两者在同一物理交换机上,若属于不同VLAN且未配置三层路由,仍无法通信。
协作方式:
- 在三层交换机上为VLAN 10和VLAN 20配置SVI接口(如VLAN 10的网关IP为192.168.1.254),才能实现跨VLAN路由。
具体变化
vlan与网关的关系
vlan != 网关
VLAN 本身无 MAC 地址:
VLAN 是逻辑标识(如 VLAN ID 10),不直接关联 MAC 地址。但 VLAN 接口(SVI)需要 MAC(用于 ARP 响应):
若要在三层交换机或路由器上为 VLAN 配置网关 IP(称为 SVI,Switch Virtual Interface
),则 SVI 接口会分配一个 MAC 地址。
示例配置:
1
2
3interface Vlan10
ip address 192.168.1.254 255.255.255.0 # 网关IP
mac-address 00:11:22:33:44:55 # 可选静态MAC,否则自动生成作用:
该 MAC 地址用于 VLAN 10 内设备的 ARP 解析(如设备通过 ARP 查询192.168.1.254
的 MAC)。
同/非同网段的设备通信帧头变化
跨网段的设备通信帧头变化

初始状态:
设备的arp表
1
2设备A: 192.168.1.254 → 00:11:22:33:44:55 (网关a MAC)
设备B: 192.168.2.254 → AA:BB:CC:DD:EE:FF (网关b MAC)三层交换机的mac表
1
2
3
4
5
6
7VLAN 10:
Port 1 | 00:11:22:33:44:55 (网关SVI接口)
Port 2 | AA:AA:AA:AA:AA:AA (设备A)
VLAN 20:
Port 3 | AA:BB:CC:DD:EE:FF (网关SVI接口)
Port 4 | BB:BB:BB:BB:BB:BB (设备B)
帧头变化
(1)设备A -> 网关A
设备A操作:
1️⃣判断目标IP(192.168.2.1)不在同一子网,发送给网关192.168.1.254
2️⃣封装以太网帧和IP包:
1
2
3
4
5
6
7
8
9[以太网帧头]
- 目标MAC: 00:11:22:33:44:55 (网关MAC)
- 源MAC: AA:AA:AA:AA:AA:AA (设备A的MAC)
- 类型: 0x0800 (IPv4)
[IP包头]
- 源IP: 192.168.1.1
- 目标IP: 192.168.2.1
- TTL: 64
交换机操作:
根据目标MAC(00:11:22:33:44:55)将帧转发给网关SVI接口(VLAN 10)。
(2)网关(192.168.1.254)→ 目标网关(192.168.2.254)
三层交换机的操作:
(1)解封装以太网帧,读取IP包头,发现目标IP是192.168.2.1。
(2)查路由表,匹配192.168.2.0/24的子网,下一跳是VLAN 20的SVI接口(192.168.2.254)。
(3)重新封装以太网帧:
目标MAC: BB:BB:BB:BB:BB:BB (设备B的MAC,需通过ARP查询获取)
源MAC: AA:BB:CC:DD:EE:FF (VLAN 20的SVI接口MAC)
IP包头不变(源IP仍是192.168.1.1,目标IP仍是192.168.2.1,TTL减1=63)。
[新以太网帧头] - 目标MAC: BB:BB:BB:BB:BB:BB - 源MAC: AA:BB:CC:DD:EE:FF - 类型: 0x0800 [IP包头] (不变) - 源IP: 192.168.1.1 - 目标IP: 192.168.2.1 - TTL: 63
ARP查询(若MAC未知):
交换机在VLAN 20内广播ARP请求:“谁是192.168.2.1?” → 设备B回复MAC地址。
(3)目标网关 → 设备B
- 交换机将帧从VLAN 20的端口(Port 4)转发给设备B。
- 设备B接收后,检查目标MAC和IP,确认是发给自己的数据包。
关键变化对比
跳数 | 源MAC | 目标MAC | 源IP | 目标IP | TTL |
---|---|---|---|---|---|
设备A → 网关 | AA:AA:AA:AA:AA:AA | 00:11:22:33:44:55 | 192.168.1.1 | 192.168.2.1 | 64 |
网关 → 设备B | AA:BB:CC:DD:EE:FF | BB:BB:BB:BB:BB:BB | 192.168.1.1 | 192.168.2.1 | 63 |
核心规则:
- MAC地址逐跳变化:
每经过一个三层设备(如网关),源和目标MAC会被重写(对应当前链路的接口MAC) - IP地址始终不变:
源IP和目标IP从设备A到设备B始终保持不变(端到端通信)。 - TTL减1:
每经过一个路由器,TTL值减1,防止数据包无限循环。
为什么需要修改MAC地址?
- 二层与三层的分工:
- MAC地址用于当前链路的直接交付(如设备A→网关、网关→设备B)。
- IP地址用于端到端的逻辑寻址(设备A到设备B的全局标识)。
- 类比快递:
- IP地址是“收件人地址”(始终不变),MAC地址是“当前运输车辆的牌照”(每段路程不同)。
同网段的设备通信帧头变化
具体的内容不再赘述
