前几天写了一篇关于单臂路由的文章,后面有一些关于acess和trunk转发机制的分析


,今天就在其基础上做一个分析。



同一台交换机的不同vlan 如何通信



我想大家都明白,一个vlan 就是一个广播域。如果想让两个vlan 通信就必须使用,单臂路由和三层交换。但如果只有一台2 层交换机如何实现两个vlan 的通信呢?



大家看一下面这个实验



交换机1 的接口配置如下



Fa0/1               acess                  vlan2 
  
 
  

    Fa0/2               acess                  vlan3 
  
 
  

    Fa0/3               acess                  vlan2 
  
 
  

    Fa0/4               acess                  vlan3


我们让Fa0/1和 Fa0/2各接一台PC机,利用交叉线将Fa0/3和 Fa0/4互连

拓扑如下:(由于模拟器中无法把Fa0/3和 Fa0/4互连,我们利用一个Hub来实现这个功能)

同一交换机两个vlan 互通 一台交换机两个vlan互通_子网掩码



配置如下



version 12.1
 
  
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
 
  
!
 
  
hostname Switch
 
  
!
 
  
!
 
  
!
 
  
interface FastEthernet0/1
 
  
 switchport access vlan 2
 
  
!
 
  
interface FastEthernet0/2
 
  
 switchport access vlan 3
 
  
!
 
  
interface FastEthernet0/3
 
  
 switchport access vlan 2
 
  
!
 
  
interface FastEthernet0/4
 
  
 switchport access vlan 3
 
  
!



测试我们利用PC0  ping  PC1



同一交换机两个vlan 互通 一台交换机两个vlan互通_Access_02



我们发现是可以互通的!



分析:

数据流分析

PC0 ping PC1首先把对方的IP地址和自己的子网掩码相与发现在同一网段。封装数据包发出。数据包通过Fa0/1进入交换机1,由于Fa0/1为access口,进站打上TAG标记。SW1会在vlan2的广播域内进行洪泛。即数据包会从Fa0/3发出由于Fa0/3为access口。即出站时会拆掉Tag标记。之后数据包又会通过Fa0/4再次进入交换机由于Fa0/4为access口,进站打上TAG标记。SW1会在vlan3的广播域内进行洪泛。即数据包会从Fa0/2发出由于Fa0/2为access口。即出站时会拆掉Tag标记,后PC2即可收到(返程数据流同理)



2.accress 和 dot1q Trunk 的转发方式区别。



 Access的转发机制

1.       数据包通过access口离开交换机是,拆除TAG标记。

2.       交换机的access口收到不带有TAG标记的数据包时,查找接口所在vlan若交换机有该vlan则在该vlan内洪泛。

3.       交换机若在access口收到带有TAG标记的数据包则直接丢弃。



 



Dot1q和Trunk的转发机制

1数据包通过Trunk离开交换机时,除Native vlan不带TAG标记,其他所有数据包均带对应的TAG标记

2如果交换机从Trunk收到带有tag标记的数据包,若该接口允许TAG标记所对应的vlan通过并且交换机上存在该vlan,则允许数据包通过,其他情况均丢弃。

3. 如果交换机从Trunk收到不带有tag标记的数据包,若该接口允许Native vlanvlan通过并且交换机上存在Native vlan,则允许数据包通过,其他情况均丢弃。


转载于:https://blog.51cto.com/sunpeng51/817309