TRUNK是端口汇聚的意思,通过配置软件的设置,将2个或多个物理端口组合在一起成为一条逻辑的路径从而增加在交换机和网络节点之间的带宽,将属于这几个端口的带宽合并,给端口提供一个几倍于独立端口的独享的高带宽。Trunk是一种封装技术,它是一条点到点的链路,链路的两端可以都是交换机,也可以是交换机和路由器,还可以是主机和交换机或路由器。基于端口汇聚(Trunk)功能,允许交换机与交换机、交换机与路由器、主机与交换机或路由器之间通过两个或多个端口并行连接同时传输以提供更高带宽、更大吞吐量, 大幅度提供整个网络能力。
如果划了VLAN 没有配trunk,那么交换机之间每个vlan间通信都要一条线路来实现;通过起了trunk之后,共用一条链路来实现交换机间多个vlan的数据可以通过,trunk就是打标签,为每个vlan打一个特殊的标签,也就是个封装的过程,通过起trunk的端口传输到对端,对端再解封装也就是拆标签,这样对端就知道是属于哪个vlan的数据了。
在二层交换机的性能参数中,常常提到一个重要的指标:TRUNK,许多的二层交换机产品在介绍其性能时,都会提到能够支持TRUNK功能,从而可以为互连的交换机之间提供更好的传输性能。那到底什么是TRUNK呢?使用TRUNK功能到底能给我们带来哪些应用方面的优势?还有在具体的交换机产品中怎样来配置TRUNK。下面我们来了解一下这些方面的知识。
一、什么是TRUNK?
TRUNK是端口汇聚的意思,就是通过配置软件的设置,将2个或多个物理端口组合在一起成为一条逻辑的路径从而增加在交换机和网络节点之间的带宽,将属于这几个端口的带宽合并,给端口提供一个几倍于独立端口的独享的高带宽。Trunk是一种封装技术,它是一条点到点的链路,链路的两端可以都是交换机,也可以是交换机和路由器,还可以是主机和交换机或路由器。基于端口汇聚(Trunk)功能,允许交换机与交换机、交换机与路由器、主机与交换机或路由器之间通过两个或多个端口并行连接同时传输以提供更高带宽、更大吞吐量, 大幅度提供整个网络能力。
一般情况下,在没有使用TRUNK时,大家都知道,百兆以太网的双绞线的这种传输介质特性决定在两个互连的普通10/100交换机的带宽仅为100M,如果是采用的全双工模式的话,则传输的最大带宽可以达到最大200M,这样就形成了网络主干和服务器瓶颈。要达到更高的数据传输率,则需要更换传输媒介,使用千兆光纤或升级成为千兆以太网,这样虽能在带宽上能够达到千兆,但成本却非常昂贵(可能连交换机也需要一块换掉),更本不适合低成本的中小企业和学校使用。如果使用TRUNK技术,把四个端口通过捆绑在一起来达到800M带宽,这样可较好的解决了成本和性能的矛盾。
二、TRUNK的具体应用
TRUNK(端口汇聚)是在交换机和网络设备之间比较经济的增加带宽的方法,如服务器、路由器、工作站或其他交换机。这中增加带宽的方法在当单一交换机和节点之间连接不能满足负荷时是比较有效的。
TRUNK 的主要功能就是将多个物理端口(一般为2-8个)绑定为一个逻辑的通道,使其工作起来就像一个通道一样。将多个物理链路捆绑在一起后,不但提升了整个网络的带宽,而且数据还可以同时经由被绑定的多个物理链路传输,具有链路冗余的作用,在网络出现故障或其他原因断开其中一条或多条链路时,剩下的链路还可以工作。但在VLAN数据传输中,各个厂家使用不同的技术,例如:思科的产品是使用其VLAN TRUNK 技术,其他厂商的产品大多支持802.1q协议打上TAG头,这样就生成了小巨人帧,需要相同端口协议的来识别,小巨人帧由于大小超过了标准以太帧的 1518字节限制,普通网卡无法识别,需要有交换机脱TAG。
TRUNK功能比较适合于以下方面具体应用:
1、TRUNK功能用于与服务器相联,给服务器提供独享的高带宽。
2、TRUNK功能用于交换机之间的级联,通过牺牲端口数来给交换机之间的数据交换提供捆绑的高带宽,提高网络速度,突破网络瓶颈,进而大幅提高网络性能。
3、Trunk可以提供负载均衡能力以及系统容错。由于Trunk实时平衡各个交换机端口和服务器接口的流量,一旦某个端口出现故障,它会自动把故障端口从Trunk组中撤消,进而重新分配各个Trunk端口的流量,从而实现系统容错。
三、如何设置TRUNK?
设置TRUNK需要指定一个作为主干的端口,比如2/24,如把某个端口设成Trunk方式,命令如下:
set trunk mod/port [on | off | desirable | auto | nonegotiate] [vlan_range] [isl | dot1q dot10 | lane | negotiate]。
该命令可以分成以下4个部分:
mod/port:指定用户想要运行Trunk的那个端口;
Trunk的运行模式,分别有:on | off | desirable | auto | nonegotiate。
要想在快速以太网和千兆以太网上自动识别出Trunk,则必须保证在同一个VTP域内。也可以使用On或Nonegotiate模式来强迫一个端口上起Trunk,无论其是否在同一个VTP域内。
承载的VLAN范围。缺省下是1~1005,可以修改,但必须有TRUNK协议。使用TRUNK时,相邻端口上的协议要一致。
另外在中心交换机上需要把和下面的交换机相连的端口设置成TRUNK,这样下面的交换机中的多个VLAN就能够通过一条链路和中心交换机通信了。
四、配置TRUNK时的注意事项
在一个TRUNK中,数据总是从一个特定的源点到目的点,一条单一的链路被设计去处理广播包或不知目的地的包。在配置TRUNK时,必须遵循下列规则:
1:正确选择TRUNK的端口数目,必须是2,4或8。
2:必须使用同一组中的端口,在交换机上的端口分成了几个组,TRUNK的所有端口必须来自同一组
3:使用连续的端口;TRUNK上的端口必须连续,如你可以用端口4,5,6和7组合成一个端口汇聚。
4:在一组端口只产生一个TRUNK。
当两个交换机相连的接口一边配置trunk ,一边配置access,两边的交换机上不同的vlan能不能通信?如果能为什么,如果不能为什么?
除了本征VLAN外,其他不会通信.
TRUNK口会给VLAN的帧加上"标签",以识别帧属于哪个VLAN.数据帧从trunk口出去后,就给加了"标签",对端的access口是不能识别这种数据帧的,但是本征VLAN是唯一一种经过trunk口不改变帧结构的VLAN.所以这时的帧和一般的帧是一样的,没有特别的"标签".
具体到了ACCESS口后怎么处理,就看你ACCESS口是属于什么VLAN了.
反之也一样.
VLAN中access、trunk、hybrid的区别
大家知道,交换机会把广播报文(目的mac地址全1的报文)和未知单播报文从所有端口转发出去(除了报文的接收端口),这就是广播。(对未知多播报文如何处理呢,我不知道,应该也会广播出去,这是一个遗留问题,哪位同学知道的请教教我哈)。一般交换机会发送很多广播报文,如果按照上面的处理方法,势必会影响整个网络的通信。vlan就是为了划分广播域而产生的。划分vlan之后,广播只在一个vlan内进行,这就大大减少了广播报文对网络性能的影响。
交换机的端口加入vlan有三种方式,分别是access、trunk和hybrid。
1、access端口只能加入一个vlan,一般用来连接交换机和pc,也可以连接交换机和交换机。
2、trunk端口可以加入多个vlan,就是说可以允许多个vlan的报文通过。trunk端口有一个默认vlan,如果收到的报文没有vlan ID,就把这个报文当做默认vlan的报文处理。trunk口一般用于连接两台交换机,这样可以只用一条trunk连接实现多个vlan的扩展(因为trunk允许多个vlan的数据通过,如果用access口,那么一个vlan就要一条连接,多个vlan要多个连接,而交换机的接口是有限的)。对于trunk口发送出去的报文,只有默认vlan的报文不带vlan ID,其它vlan的报文都要带vlan ID(要不然,对端的交换机不知道该报文属于哪个vlan,无法处理,也就不能实现vlan跨交换机扩展了)。简而言之,trunk端口的设计目的就是通过一条连接实现多个vlan的跨交换机扩展。
3、trunk端口是hybrid端口的特例,就是说hybrid端口可以实现比trunk端口更多的功能。hybrid端口可以加入多个vlan,并可以设置该vlan的报文通过该端口发送是是否带vlan ID(trunk端口不能设置,只有默认vlan的报文不带vlan ID进行发送)。通过下面的两个例子(转载的),大家应该可以看出hybrid端口的设计目的。
例一:『配置环境参数』
1.PC1、PC2和PC3分别连接到二层交换机SwitchA的端口E0/1 、E0/2和 E0/3,端口分属于VLAN10、20和30,服务器连接到端口G2/1,属于VLAN100。
2. PC1的 IP地址为10.1.1.1/24,
PC2的IP地址为10.1.1.2/24,
PC3的IP地址为10.1.1.3/24,
服务器的IP地址为10.1.1.254/24。
『组网需求』
1.PC1和PC2之间可以互访; 2.PC1和PC3之间可以互访; 3.PC1、PC2和PC3都可以访问服务器; 4.其余的PC间访问均禁止。
【SwitchA相关配置】
1.创建(进入)VLAN10,将E0/1加入到VLAN10 [SwitchA]vlan 10 [SwitchA-vlan10]port Ethernet 0/1
2.创建(进入)VLAN20,将E0/2加入到VLAN20 [SwitchA]vlan 20 [SwitchA-vlan20]port Ethernet 0/2
3.创建(进入)VLAN30,将E0/3加入到VLAN30 [SwitchA]vlan 30 [SwitchA-vlan30]port Ethernet 0/3
4.创建(进入)VLAN100,将G2/1加入到VLAN100 [SwitchA]vlan 100 [SwitchA-vlan100]port GigabitEthernet 2/1
5.配置端口E0/1为Hybrid端口,能够接收VLAN20、30和100发过来的报文 [SwitchA]interface Ethernet 0/1 [SwitchA-Ethernet0/1]port link-type hybrid [SwitchA-Ethernet0/1]port hybrid vlan 20 30 100 untagged
6.配置端口E0/2为Hybrid端口,能够接收VLAN10和100发过来的报文 [SwitchA]interface Ethernet 0/2 [SwitchA-Ethernet0/2]port link-type hybrid [SwitchA-Ethernet0/2]port hybrid vlan 10 100 untagged
7.配置端口E0/3为Hybrid端口,能够接收VLAN10和100发过来的报文 [SwitchA]interface Ethernet 0/3 [SwitchA-Ethernet0/3]port link-type hybrid [SwitchA-Ethernet0/3]port hybrid vlan 10 100 untagged
8.配置端口G2/1为Hybrid端口,能够接收VLAN10、20和30发过来的报文 [SwitchA]interface GigabitEthernet 2/1 [SwitchA-GigabitEthernet2/1]port link-type hybrid [SwitchA-GigabitEthernet2/1]port hybrid vlan 10 20 30 untagged
例二:『配置环境参数』
1.PC1、PC2和PC3分别连接到二层交换机SwitchA的端口E0/1 、E0/2和 E0/3,端口分属于VLAN10、20和30;PC4和PC5分别连接到二层交换机SwitchB的端口E0/1和E0/2,端口分属于VLAN10和20;
2.SwitchA通过端口G2/1,连接到SwitchB的端口G1/1;SwitchA的端口G2/1和SwitchB的端口G1/1均不是Trunk端口;
3.PC1的IP地址为10.1.1.1/24,PC2的IP地址为10.1.1.2/24,PC3的IP地址为10.1.1.3/24,PC4的IP地址为10.1.1.4/24,PC5的IP地址为10.1.1.5/24。
『组网需求』
1. PC1和PC3之间可以互访; 2.PC2和PC3之间可以互访; 3.PC1和PC4之间可以互访; 4.PC2和PC5之间可以互访; 5.其余PC之间均禁止互相访问。
【SwitchA相关配置】
1.创建(进入)VLAN10,将E0/1加入到VLAN10 [SwitchA]vlan 10 [SwitchA-vlan10]port Ethernet 0/1
2.创建(进入)VLAN20,将E0/2加入到VLAN20 [SwitchA]vlan 20 [SwitchA-vlan20]port Ethernet 0/2
3.创建(进入)VLAN30,将E0/3加入到VLAN30 [SwitchA]vlan 30 [SwitchA-vlan30]port Ethernet 0/3
4.配置端口E0/1为Hybrid端口,能够接收VLAN30发过来的报文 [SwitchA]interface Ethernet 0/1 [SwitchA-Ethernet0/1]port link-type hybrid [SwitchA-Ethernet0/1]port hybrid vlan 30 untagged
5.配置端口E0/2为Hybrid端口,能够接收VLAN30发过来的报文 [SwitchA]interface Ethernet 0/2 [SwitchA-Ethernet0/2]port link-type hybrid [SwitchA-Ethernet0/2]port hybrid vlan 30 untagged
6.配置端口E0/3为Hybrid端口,能够接收VLAN10和20发过来的报文 [SwitchA]interface Ethernet 0/3 [SwitchA-Ethernet0/3]port link-type hybrid [SwitchA-Ethernet0/3]port hybrid vlan 10 20 untagged 7.配置端口G2/1为Hybrid端口,能够接收并透传VLAN10和20发过来的报文 [SwitchA]interface GigabitEthernet 2/1 [SwitchA-GigabitEthernet2/1]port link-type hybrid [SwitchA-GigabitEthernet2/1]port hybrid vlan 10 20 tagged
【SwitchB相关配置】
1.创建(进入)VLAN10,将E0/1加入到VLAN10 [SwitchA]vlan 10 [SwitchA-vlan10]port Ethernet 0/1
2.创建(进入)VLAN20,将E0/2加入到VLAN20 [SwitchA]vlan 20 [SwitchA-vlan20]port Ethernet 0/2
3.配置端口G1/1为Hybrid端口,能够接收并透传VLAN10和20发过来的报文 [SwitchA]interface GigabitEthernet 2/1 [SwitchA-GigabitEthernet2/1]port link-type hybrid [SwitchA-GigabitEthernet2/1]port hybrid vlan 10 20 tagged
【补充说明】 对于Hybrid端口来说,可以同时属于多个VLAN。这些VLAN分别是该Hybrid端口的PVID,以及手工配置的”untagged”及”tagged”方式的VLAN。一定要注意对应端口的VLAN配置,保证报文能够被端口进行正常的收发处理。 利用Hybrid端口的特性——一个端口可以属于多个不同的VLAN,来完成分属不同VLAN内的同网段PC机的访问需求。 此应用在二层网络中,对相同网段的主机进行访问权限的控制。 我总结的hybrid端口的设计目的是??实现不同vlan之间的互通,这个功能通过access和trunk口是实现不了的。
vlan接口的三种模式 Access、Hybrid和Trunk通信技术
Tag,untag以及交换机的各种端口模式是网络工程技术人员调试交换机时接触最多的概念了,然而笔者发现在实际工作中技术人员往往对这些概念似懂非懂,笔者根据自己的理解再结合一个案例,试图向大家阐明这些概念
untag就是普通的ethernet报文,普通PC机的网卡是可以识别这样的报文进行通讯;
tag报文结构的变化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag头;一般来说这样的报文普通PC机的网卡是不能识别的
下图说明了802.1Q封装tag报文帧结构
带802.1Q的帧是在标准以太网帧上插入了4个字节的标识。其中包含:
2个字节的协议标识符(TPID),当前置0x8100的固定值,表明该帧带有802.1Q的标记信息。
2个字节的标记控制信息(TCI),包含了三个域。
Priority域,占3bits,表示报文的优先级,取值0到7,7为最高优先级,0为最低优先级。该域被802.1p采用。
规范格式指示符(CFI)域,占1bit,0表示规范格式,应用于以太网;1表示非规范格式,应用于Token Ring。
VLAN ID域,占12bit,用于标示VLAN的归属。
以太网端口有三种链路类型:Access、Hybrid和Trunk。
Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口;
Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;
Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。
Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。
在这里先要向大家阐明端口的缺省VLAN这个概念
Access端口只属于1个VLAN,所以它的缺省VLAN就是它所在的VLAN,不用设置;
Hybrid端口和Trunk端口属于多个VLAN,所以需要设置缺省VLAN ID。缺省情况下,Hybrid端口和Trunk端口的缺省VLAN为VLAN 1
如果设置了端口的缺省VLAN ID,当端口接收到不带VLAN Tag的报文后,则将报文转发到属于缺省VLAN的端口;当端口发送带有VLAN Tag的报文时,如果该报文的VLAN ID与端口缺省的VLAN ID相同,则系统将去掉报文的VLAN Tag,然后再发送该报文。
注:对于华为交换机缺省VLAN被称为“Pvid Vlan”, 对于思科交换机缺省VLAN被称为“Native Vlan”
交换机接口出入数据处理过程如下:
Acess端口收报文:
收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接丢弃(缺省)
Acess端口发报文:
将报文的VLAN信息剥离,直接发送出去
trunk端口收报文:
收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有判断该trunk端口是否允许该 VLAN的数据进入:如果可以则转发,否则丢弃
trunk端口发报文:
比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,如果不相等则直接发送
hybrid端口收报文:
收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则判断该hybrid端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃(此时端口上的untag配置是不用考虑的,untag配置只对发送报文时起作用)
hybrid端口发报文:
1、判断该VLAN在本端口的属性(disp interface 即可看到该端口对哪些VLAN是untag, 哪些VLAN是tag)
2、如果是untag则剥离VLAN信息,再发送,如果是tag则直接发送
以下案例可以帮助大家深入理解华为交换机的hybrid端口模式
[Switch-Ethernet0/1]int e0/1
[Switch-Ethernet0/1]port link-type hybrid
[Switch-Ethernet0/1]port hybrid pvid vlan 10
[Switch-Ethernet0/1]port hybrid vlan 10 20 untagged
[Switch-Ethernet0/1] int e0/2
[Switch-Ethernet0/2]port link-type hybrid
[Switch-Ethernet0/2]port hybrid pvid vlan 20