转自(http://bbs.51cto.com/thread-238018-1-1.html)

cisco的vlan.trunk技术

Vlan中的Trunk技术在园区网中的应用

随着网络硬件性能的不断提高、成本的不断降低,目前新建立的校园网基本上都采用了性能先进的千兆网技术,其核心交换机采用三层交换机,它能很好地支持虚拟局域网(VLAN)技术,虚拟网络技术打破了地理环境的制约,在不改动网络物理连接的情况下可以任意将工作站在工作组或子网之间移动,工作站组成逻辑工作组或虚拟子网,提高信息系统的运作性能,均衡网络数据流量,合理利用硬件及信息资源。同时,利用虚拟网络技术,大大减轻了网络管理和维护工作的负担,降低网络维护费用。随着虚拟网络技术的应用,随之必然产生了在虚拟网间如何通讯的问题.

VLAN 概 述

VLAN是一个根据作用、计划组、应用等进行逻辑划分的交换式网络。与用户的物理位置没有关系。举个例子来说,几个终端可能被组成一个部分,可能包括工程师或财务人员。当终端的实际物理位置比较相近,可以组成一个局域网(LAN)。如果他们在不同的建筑物中,就可以通过VLAN将他们聚合在一起。同一个VLAN中的端口可以接受VLAN中的广播包。但别的VLAN中的端口却接受不到。 

VLAN提供以下一些特性 

1 简化了终端的删除、增加、改动 

当一个终端从物理上移动到一个新的位置,它的特征可以从网络管理工作站通过SNMP或用户界面菜单中重新定义。而对于仅在同一个VLAN中移动的终端来说,它会保持以前定义的特征。在不同VLAN中移动的终端来说,终端可以获得新的VLAN定义。 

2 控制通讯活动 

VLAN可以由相同或不同的交换机端口组成。广播信息被限制在VLAN中。这个特征限定了只在VLAN中的端口才有广播、多播通讯。管理域(management domain)是一个仅有单一管理者的多个VLAN的集合。 

3 工作组和网络安全 

将网络划分不同的域可以增加安全性。VLAN可以限制广播域的用户数。控制VLAN的大小和组成可以控制广播域的相应特性。 

TRUNK的介绍  

Trunk(干道)是一种封装技术,它是一条点到点的链路,主要功能就是仅通过一条链路就可以连接多个交换机从而扩展已配置的多个VLAN。还可以采用通过Trunk技术和上级交换机级连的方式来扩展端口的数量,可以达到近似堆叠的功能,节省了网络硬件的成本,从而扩展整个网络。

TRUNK承载的VLAN范围。缺省下是1~1005,可以修改,但必须有1个Trunk协议。使用Trunk时,相邻端口上的协议要一致。

Trunk工作过程

要传输多个VLAN的通信,需要用专门的协议封装或者加上标记(tag),以便接收设备能区分数据所属的VLAN。VLAN标识从逻辑上定义了,哪个数据包是它有多种协议,而我们最常用到的是基于:IEEE802.1Q和CISCO专用的协议:ISL。下面我简要的介绍一下这两种协议。

1.交换机间链路(ISL)是一种CISCO专用的协议,用于连接多个交换机。当数据在交换机之间传递时负责保持VLAN信息的协议。在一个ISL干道端口中,所有接收到的数据包被期望使用ISL头部封装,并且所有被传输和发送的包都带有一个ISL头。从一个ISL端口收到的本地帧(non-tagged)被丢弃。它只用在CISCO产品中。

2.IEEE802.1Q正式名称是虚拟桥接局域网标准,用在不同的产家生产的交换机之间。一个IEEE802.1Q干道端口同时支持加标签和未加标签的流量。一个802.1Q干道端口被指派了一个缺省的端口Vlan ID(PVID),并且所有的未加标签的流量在该端口的缺省PVID上传输。一个带有和外出端口的缺省PVID相等的Vlan ID的包发送时不被加标签。所有其他的流量发送是被加上Vlan标签的。

     在设置trunk后,trunk 链路不属于任何一个VLAN。trunk链路在交换机之间起着VLAN管道的作用,交换机会将该trunk以外并且和trunk中的端口处于一个vlan中的其它端口的负载自动分配到该trunk中的各个端口。因为同一个vlan中的端口之间会相互转发数据报,而位于trunk中的trunk端口被当作一个端口来看待,如果vlan中的其它非trunk端口的负载不分配到各个trunk端口,则有些数据报可能随机的发往trunk而导致帧顺序混乱。由于trunk口作为1个逻辑端口看待,因此在设置了trunk后,该trunk将自动加入到这些vlan中它的成员端口所属的vlan中,而其成员端口则自动从vlan中删除。

在中TRUNK线路上传输不同的VLAN的数据时,可使用有两种方法识别不同的VLAN的数据:帧过滤和帧标记。帧过滤法根据交换机的过滤表检查帧的详细信息。每一个交换机要维护复杂的过滤表,同时对通过主干的每一个帧进行详细检查,这会增加网络延迟时间。目前在VLAN中这种方法已经不使用了。现在使用的是帧标记法。数据帧在中继线上传输的时候,交换机在帧头的信息中加标记来指定相应的VLAN ID。当帧通过中继以后,去掉标记同时把帧交换到相应的VLAN端口。帧标记法被IEEE选定为标准化的中继机制。它至少有如下三种处理方法:

1) 静态干线配置

静态干线配置最容易理解。干线上每一个交换机都可由程序设定发送及接收使用特定干

线连接协议的帧。在这种设置下,端口通常专用于干线连接,而不能用于连接端节点,至少

不能连接那些不使用干线连接协议( trunking protocol)的端节点。当自动协商机制不能正常工作或不可用时,静态配置是非常有用的,其缺点是必须手工维护。

2) 干线功能通告

交换机可以周期性地发送通告帧,表明它们能够实现某种干线连接功能。例如,交换机

可以通告自己能够支持某种类型的帧标记V L A N,因此按这个交换机通告的帧格式向其发送帧是不会有错的。交换机的功能还止这些,它还可以通告它现在想为哪个V L A N提供干线连接服务。这类干线设置对于一个由端节点和干线混合组成的网段可能会很有用。

3) 干线自动协商

干线也能通过协商过程自动设置。在这种情况下,交换机周期性地发送指示帧,表明它

们希望转到干线连接模式。如果另一端的交换机收到并识别这些帧,并自动进行配置,那么

这两部交换机就会将这些端口设成干线连接模式。这种自动协商通常依赖于两部交换机(在同一网段上)之间已有的链路,并且与这条链路相连的端口要专用于干线连接,这与静态干线设置非常相似。

Trunk的优点:

1、可以在不同的交换机之间连接多个VLAN,可以将VLAN扩展到整个网络中。

2、Trunk可以捆绑任何相关的端口,也可以随时取消设置,这样提供了很高的灵活性。

3、Trunk可以提供负载均衡能力以及系统容错。由于Trunk实时平衡各个交换机端口和服务器接口的流量,一旦某个端口出现故障,它会自动把故障端口从Trunk组中撤消,进而重新分配各个Trunk端口的流量,从而实现系统容错。

实例应用

V L A N交换机的主要特点是能够在单个交换机内部或多个交换机之间支持多个独立的V L A N。对于多个V L A N交换机来说,一条干线就是两个交换机之间的连接,它在两个或两个以上的V L A N之间传输数据流。这与两个普通网桥之间的一条链路不同,因为每个交换机必须确定它所收到的帧属于哪个V L A N。虽然这增加了某种复杂性,但同时也带来了很大的灵活性。

本例解释了如何在3550交换机和2950交换机之间的一条链路上创建承载不同交换机之间VLAN通信的ISL TRUNK。 在Catalyst3550交换机和Catalyst2950交换机这间配置一条Trunk线路相联,在这个应用中我划分了4个VLAN,其中有3个动手配置的VLAN并对它们命名分别为:A2、A3、A4。其中VLAN1采用默认的配置。并对2950和3550交换机的各端口分配到适当的VLAN中。

下面以3550交换机为例,简要的介绍以下重要的配置。

创建VLAN如下:

3550switch#vlan database

3550switch(vlan)#vlan 2 name A2

3550switch(vlan)#vlan 3 name A3

3550switch(vlan)#vlan 4 name A4

把各个端口分配到适当的VLAN中:

3550switch(config)#interface range fastEthernet 0/5 – 8

3550swutcg(config-if)#switchport access vlan 2    (5 至 8 端口放入VLAN2中)

3550switch(config)#interface range fastEthernet 0/9 – 11

3550swutcg(config-if)#switchport access vlan 3   (9 至 11 端口放入VLAN3中)

3550switch(config)#interface range fastEthernet 0/12 – 15

3550swutcg(config-if)#switchport access vlan 4     (11 至 15 端口放入VLAN4中)

应该注意,interface range fastEthernet X/X –X 是应用在Cisco IOS 软件12.1以上的版本,如果你使用的是CiscoIOS软件12.1以前的发布的版本的话,应该用命令:switchport access vlan vlanID ,把端口加入VLAN。

在特权模式下使用命令:show vlan 来检查是否将端口分配给正确的VLAN。

VLAN Name                             Status    Ports

---- -------------------------------- --------- ——————————————

1    default                          active    Fa0/2, Fa0/4, Fa0/16, Fa0/17

                                                Fa0/18, Fa0/19, Fa0/20,

  Fa0/22, Fa0/23, Fa0/24,

                                                 Gi0/1            Gi0/2

2    A2                               active    Fa0/5, Fa0/6, Fa0/7, Fa0/8

3    A3                               active    Fa0/9, Fa0/10, Fa0/11

4    A4                               active    Fa0/12, Fa0/13, Fa0/14, Fa0/15

1002 fddi-default                     active

1003 token-ring-default               active

1004 fddinet-default                  active

1005 trnet-default                    active

可以看出其它的端口全默认在VLAN1中。

在这个应用中,我把3550的fastE 0/2和2950的fastE 0/1端口分别设配为TRUNK口,并在每一个端口都采用ISL干道封装:

3550switch(config)#interfasce fa0/2

3550switch(config-if)#switchport mode trunk

3550switch(config-if)#switchport trunk encapsulation isl

需要注意的是,trunk 端口缺省情况下会传送所有的VLAN的通信。

要查看trunk端口的信息和允许的VLAN

可以使用命令:show interfas interface-id switchport。

Name: Fa0/1

Switchport: Enabled

Administrative Mode: trunk

Operational Mode: trunk

Administrative Trunking Encapsulation: dot1q

Operational Trunking Encapsulation: dot1q

Negotiation of Trunking: On

Access Mode VLAN: 1 (default)

Trunking Native Mode VLAN: 1 (default)

Trunking VLANs Enabled: ALL

Pruning VLANs Enabled: 2-1001

Protected: false

Unknown unicast blocked: disabled

Unknown multicast blocked: disabled

Voice VLAN: none (Inactive)

Appliance trust: none

要限制trunk传送的VLAN,从允许的VLAN 列表中去除某些VLAN。

可以使用接口配置命令:

3550switch(config-if)#switchport trunk allowed vlan remove vlan-list

对于2950的设置和上面的3500交换机的配置一样,在这就不再赘述。而只把端口3至6分配到VLAN2中,7至10分配到VLAN3中,11至13分配到VLAN4中,其它端口在默认的VLAN1中。重要的是在2950交换机封装TRUNK的协议要相同。

如果在这个例子中,在Catalyst3550交换机的VLAN2中有一主机hostA其IP地址设置为:192.168.0.2/24,在Catalyst2950交换机的VLAN2中也有一主机hostB其IP地址设置为:192.168.0.6/24。如果在2950的交换机的hostA PING对方hostB的话,可以看到,交换机2950用标识为VLAN2的ISL头封装数据帧,并通过trunk 链路发送到3550的交换机中。而3550接收到其数据帧的话,首先除去ISL头,然后封装自已的信息,从重复2950的过程并转发给2950。但是如果在这两台交换机之中,这两个工作站分别在不同的VLAN之中,则相互PING对方的话,是不通的。从而说明,不同交换机之间的工作站通过TRUNK相连接,只有这些工作站在同一个VLAN之中才可以相互通信,而不同VLAN中的工作站是不能通过TRUNK来通信的。

总结

Trunk 是在两台交换机之间的一条点到点的链路,每台交换机的相应端口称为干道端口。一条干道可以传输多个VLAN 的数据流,并允许用户将VLAN的范围从一台交换机扩展到另一台交换机。对于TRUNK端口来说,其上允许通过的VLAN范围体现的是一种能力,与系统中是否存在对应的VLAN实体没有关系。

如果没有TRUNK链路,就需要配置多条接入链路,来支持交换机之间的多个VLAN。这是人个既不节约,扩展性也差的解决方案。在园区网内交换机互联时,TRUNK绝对是必需的。