vlan与端口

基本概念   
  [ ]1.1      VLAN简介   

VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域(多个VLAN)的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接互通,从而将广播报文限制在一个VLAN内;由于VLAN间不能直接互访,因此提高了网络安全性;VLAN将一个物理的LAN在逻辑上划分成多个广播域(多个VLAN),组网灵活,易于扩展等特点。

IEEE 802.1Q标准对Ethernet帧格式进行了修改,在源MAC地址字段和协议类型字段之间加入4字节的802.1Q Tag,如图1所示。

fig_dc_vrp_feature_00402901

1 基于802.1QVLAN帧格式

802.1Q Tag包含4个字段,其含义如下:

l   Type

长度为2字节,表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。

l   PRI

Priority,长度为3比特,表示帧的优先级,取值范围为07,值越大优先级越高。用于当交换机阻塞时,优先发送优先级高的数据包。

l   CFI

Canonical Format Indicator,长度为1比特,表示MAC地址是否是经典格式。CFI0说明是经典格式,CFI1表示为非经典格式。用于区分以太网帧、FDDIFiber Distributed Digital Interface)帧和令牌环网帧。在以太网中,CFI的值为0

l   VID

VLAN ID,长度为12比特,表示该帧所属的VLAN。在VRP中,可配置  VLAN ID取值范围为04095,但是04095协议中规定为保留的VLAN ID,不能给用户使用。

 

  [ 回目录 ]1.2      链路类型   

VLAN内的链路可以分为:

l   接入链路(Access Link):连接用户主机和交换机的链路为接入链路。如2所示,图中PC机和交换机之间的链路都是接入链路。接入链路上通过的帧为不带Tag的以太网帧。

l   干道链路(Trunk Link):连接交换机和交换机的链路称为干道链路。如2所示,图中交换机之间的链路都是干道链路。干道链路上通过的帧一般为带TagVLAN帧。

fig_dc_vrp_feature_00403001

2 链路类型示意图

  [ 回目录 ]1.3      端口类型   

802.1Q中定义VLAN帧后,设备的有些端口可以识别VLAN帧,有些端口则不能识别VLAN帧。根据对VLAN帧的识别情况,将端口分为4类:

l   Access端口

一般用于连接用户主机端口,作为入接口时,只允许不带VLAN Tag的帧通过;作为出接口时,将帧中的Tag标记剥掉。

l   Trunk端口

一般用于连接其他交换机端口,不管是作为入接口还是出接口,都只允许带VLAN Tag的帧通过。允许多个VLAN的帧通过。

l   Hybrid端口

Hybrid端口既可连接用户主机端口,又可连接其他交换机端口,作为入接口时既可以接收带Tag的帧又可以接收不带Tag的帧;作为出接口时,根据配置决定保留还是剥掉帧中的Tag标记。

l   QinQ端口

QinQ802.1Q-in-802.1QIEEE 802.1ad),端口用于连接其他交换机,能够处理携带双层Tag标记的VLAN帧。

由于IEEE802.1Q中定义的Tag字段只有12bit,所以在同一个二层网络中最多可以支持4096VLAN。在实际应用中,尤其是在城域网中,需要大量的VLAN来隔离用户,4096VLAN远远不能满足需求。

交换机提供的QinQ端口,可以给以太网帧加上双重Tag。即在VLAN帧的源地址与802.1Q Tag之间,再加一个802.1Q Tag,从而可以支持多达4096 * 4096VLAN,满足城域网对VLAN数量的需求。

QinQ帧的格式如图3所示。外层的标签通常被称作公网Tag,用来存放公网的VLAN ID。内层标签通常被称作私网Tag,用来存放私网的VLAN ID


  [ ]2      VLAN和端口关系   
  [  ]2.1      VLAN存储   

我司交换机设备启动时创建默认VLAN(一般默认vlan 1,可由产品定制),且不允许用户删除默认VLAN;路由器无默认VLAN

X7系列交换机:按创建方式不同分为静态VLAN(命令行或VCMP创建)和动态VLANGVRP创建),两种VLAN创建后统一用全局BIT位数组存储。最多支持4094VLAN,则该全局BIT位数组占用内存大小为(4094+7)/8个字节,其每位BIT对应某一VLAN,其值表示该VLAN是否存在(0:未创建 1:已创建)。

 

#define  VLAN_BITMAP_LEN_BYCHAR   (4094+7)/8

 

UCHAR  *g_pucVLANBitmap = NULL;

g_pucVLANBitmap = (UCHAR *)VOS_Malloc( VLAN_BITMAP_LEN_BYCHAR * sizeof(UCHAR));

 

 

所有设备:L2IF模块初始化时,为每个VLAN分配一块内存,用于存储VLAN的核心数据,所有VLAN数据块以数组方式管理。


 

  [ 回目录 ]2.2      端口加VLAN   

在交换设备上,每个Access、Trunk、Hybrid、QinQ类型的端口可以配置一个缺省VLAN。端口类型不同,缺省VLAN的含义也有所不同。

2.2.1        Access

Access端口只能以untag方式加入缺省VLAN(PVID),交换机默认PVID=1,路由器无缺省PVID。Access端口只能配置一个PVID,相关命令配置如下:

#                                                                         

interface GigabitEthernet2/0/2                                                  

 portswitch                                                                                                                               

 port link-type access                                                         

 port default vlan 10    // PVID = 10                                           

设备上任一端口和任一VLAN是否存在untag关系,用1bit来表示,总存储内存如下:

 

#define L2IF_MAX_VLAN_NUM     4096

#define VRP_MAX_L2IF_PORT L2IF_SH_GetMaxSwitchPortNum()   //产品定制设备支持的二层口数目

 

UCHAR *g_ppucVlanPortMap = NULL;

 

    /* 申请g_ucVlanPortMap的内存空间 */

    ulMallocLen = (L2IF_MAX_VLAN_NUM * ((VRP_MAX_L2IF_PORT + 7) / 8) * sizeof(UCHAR));

g_ppucVlanPortMap = (UCHAR *)VOS_Malloc(ulMidL2if, ulMallocLen);

 

 

对于路由器设备(如8090):

l   Access端口不配置PVID时:无论收到的帧是否带tag,都将直接丢弃;无论发送的帧是否带tag,都将直接丢弃。

l   Access端口配置PVID时:收到的帧不带tag时,添加本端口的PVID,进行下一步处理;若收到的帧带tag时,则直接丢弃。

l   Access端口配置PVID,发送带tag帧时:如果帧中VID和配置的PVID相同,则先剥离VLAN tag,然后再发送;如果帧中VID和配置的PVID不相同,则丢弃。

l   总结:Access端口使用时必须要配置本端口的PVID,否则将无法收发帧。

 

对于交换机设备(如S9300):

l   可配置PVIDport default vlan),PVID肯定存在,默认PVID=1

l   当收到的帧不带tag时,添加本端口的PVID,进行下一步处理。

l   当收到的帧带tag时,则与本端口的PVID进行比较,如果相同则进行下一步处理,否则丢弃该帧。

l   发送帧时,如果tagVID和配置PVID相同,则首先剥掉该Vlan tag后发送

l   发送帧时,如果tagVID和配置PVID不相同,则丢弃

 

2.2.2        Trunk端口

Trunk端口以tag方式加入多个VLAN,相关命令配置如下:

#                                                                         

interface GigabitEthernet2/0/2                                                  

 portswitch                                                                                                                               

 port link-type trunk                                                         

port trunk allow-pass vlan 2 to 3000                                           

设备上任一端口和任一VLAN是否存在tag关系,用1bit来表示,总存储内存如下:

 

#define L2IF_MAX_VLAN_NUM     4096

#define VRP_MAX_L2IF_PORT L2IF_SH_GetMaxSwitchPortNum()   //产品定制设备支持的二层口数目

 

UCHAR * g_ppucVlanTrunkPortMap = NULL;

 

    /* 申请g_ppucVlanTrunkPortMap的内存空间 */

    ulMallocLen = (L2IF_MAX_VLAN_NUM * ((VRP_MAX_L2IF_PORT + 7) / 8) * sizeof(UCHAR));

g_ppucVlanTrunkPortMap = (UCHAR *)VOS_Malloc(ulMidL2if, ulMallocLen);

 

 

对于路由器设备(如8090):

l   当端口配置为Trunk端口类型时无法配置PVID

l   当收到的帧不带tag时,则直接丢弃该帧

l   当收到的帧带tag时,判断是否该Trunk端口允许该tag进入,如果允许则进行下一步处理,不允许则丢弃。

l   发送帧时,判断Trunk端口是否允许该带tag的帧通过,允许则直接发送,不允许则丢弃

对于交换机设备(如S9300):

l   可配置PVIDport trunk pvid vlan),PVID肯定存在,默认PVID=1,且端口默认加入VLAN 1port trunk allow-pass vlan 1

l   收到不带tag的帧,首先直接添加PVID(因为trunk口至少有一个PVID),然后判断是否配置了port trunk allow-pass,如果配置了则允许进来,否则会直接丢弃。

l   收到带tag的帧,如果没有配置port trunk allow-pass则直接丢弃 (PVID无关)

l   发送的帧带tag

a)         首先判断是否为本端口的PVID(=X),如果是然后再判断是否配置了port trunk allow-pass vlan PVID, 如果配置了则剥掉该tag后直接发送

b)        如果发送的帧的不是PVID,然判断是否配置了port trunk allow-pass vlan X,如果配置了则,直接发送;如果没配置则直接丢弃。

 

2.2.3        Hybrid端口

对于路由器设备(如8090):

l   收到的帧不带tag时:当不配PVID,则直接丢弃该帧;如果配置PVID后则加上PVID进行下一步处理

l   当收到帧带tag时,判断是否允许该帧通过(PVID等于该帧中的vlan,或者port trunk allow-pass vlan 等于该帧中的vlan即可),如果允许则进行下一步处理,否则丢弃。

l   当发送帧时,则首先比较是否与本端口的PVID相等,如果相等,则剥掉该tag后发送;如果不相等,判断是否允许通过,如果允许则直接发送。不允许则丢弃。如果Hybrid口要发送的帧的vlanid3,而且Hybrid口既配置了PVID=3,而且又配置了port trunk allow-pass vlan 3,那么将先比较是否与PVID相等,此处相等则剥掉该帧的tag后直接发送,所以PVID优先级要高于port trunk allow-pass vlan

 

对于交换机设备(如S9300):

l   当收到的帧不带tag时,判断是否指定了port hybrid tag/untag vlan,如果指定了则会添加本端口的PVID继续处理,否则丢弃该帧

l   当收到的帧带tag时,直接判断是否指定了port hybrid tag/untag vlan,如果指定了则允许进入,否则直接丢弃。与PVID无关。

l   发送帧的情况:

Hybrid端口发送帧时,也必须指定该hybrid端口允许通过的vlantagged还是untagged(port hybrid tagged/untagged vlan vlanid),如果不指定,数据帧将会被丢弃,而不会被发送。如果指定通过的vlan的属性是tagged,那么,发送该帧时将直接带着tag发送。如果指定通过的vlan的属性是untagged的,那么将会将该帧的tag剥掉后发送。

l   PVID和指定的taggeduntaggedvlan的关系:

(a)    如果设置了VLAN2 tagged的,那么从Hybrid口发出的VLAN2帧就是tagged,跟当前的pvid 没有任何关系。

(b)    如果设置了VLAN3untagged的,那么从Hybrid口发出的VLAN3的帧也与当前的pvid没有任何关系。

(c)    Hybrid口设置的PVID的作用只是在于当Hybrid口收到一个不带tag的帧时,加上一个PVID后作后续处理,当Hybrid口发送数据帧的时候PVID并未起作用。

2.2.4        QinQ端口

l   对于从QinQ端口接收的帧,无论该帧是否带Tag标记,都会在帧中再加一外层Tag,并将Tag中的VID字段的值设置为端口所属的缺省VLAN编号。

l   对于QinQ端口发送的帧,如果最外层TagVID字段的值等于缺省VLAN编号,将帧中最外层的Tag剥掉。

 

  [ 回目录 ]2.3      VLAN状态   

一个端口可以加入多个VLAN,多个端口也可以加入同一个VLANVLAN中只要有一个成员端口物理UP,则VLAN状态UPVLAN状态UP,则该VLAN对应的VlanIf口物理状态UP

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21754115/viewspace-1584693/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21754115/viewspace-1584693/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值