Layer2-3 VLAN和DTP

来源:互联网 发布:拍淘宝静物用什么相机 编辑:程序博客网 时间:2024/06/11 01:17
session 1 VLAN
VLAN virtual LAN虚拟局域网,用于L2层中分割广播域。
一、vlan编号0~4095,系统保留的vlan0和vlan4095,其余飞系统保留的vlan分为三类:
1、保留vlan,编号vlan1、1002~1005 交换机自己创建好的,用做以太网、FDDI光纤网、令牌环等网中的默认vlan编号,可以show  vlan brief 查看到,表示为default字样的
2、标准vlan,编号vlan1~1001 可以在VTP Server模式和VTP transparent透明模式下创建
3、扩展vlan,编号vlan1006~4094 只能在VTP transparent透明模式下创建

二、VLAN对于用户端的用作
1、透明:vlan在用户端是透明的,SW判断一个数据包或者叫数据帧是哪个vlan的依据是SW的接口!vlan的编号是在sw的接口上面定义的,其功能应该包含在硬件芯片ASCII中。用户发送数据是一个标准的以太网数据包,L2L3L4Data这样的封装格式,其中并没有vlan信息,而sw在收到这个包后会根据接收的端口所属的vlan来判断这个数据包属于哪个vlan。
2、vlan转发前提依旧是CAM表项:前面说了SW转发数据是根据CAM表转发,查看其中的MAC地址来转发。那么创建了多个vlan就是将一个CAM表分成了多个CAM表,每一个分CAM表中对应一个vlan,比如有N个vlan,其中vlan2和vlan3在没有连接L3层路由设备的情况下是不能通信的,隔离了广播域。当vlan2中的一个PC通过交换机想要把数据要发送给vlan3中的PC时,SW会查看vlan2对应的CAM2表,发现没有vlan3中PC的MAC地址(因为vlan3中PC的MAC地址在vlan3对应的CAM表3中),那么将这个包在vlan2内flood,然而vlan2中的PC受到这包自然是丢弃的。vlan2中的PC与vlan3中的PC通信就失败了(有路由的另算)。


三、多个L2层交换机中的相同vlan之间的相互通信
先看一个实验,SW1:e0/1-vlan2,e0/0-vlan2 ------access-------SW2:e0/0-vlan3
                        SW1-e0/1-------access------pc1(192.168.1.1)

                        SW2-e0/1-------access------pc2(192.168.1.2),e0/2-----access----pc3(192.168.1.3)


      上面的拓扑是L2层之间vlan通信问题,两台2层交换机SW1、SW2分别连接了PC1-3三台主机,三台主机都是一个网段的。在sw1中配置了vlan2,vlan3并将连接pc1的e0/1接口划分到vlan2中,在sw2中配置了vlan2,vlan3并将连接pc2的e0/1接口划分到vlan2中,将连接pc3的e0/2接口划分到vlan3中。sw1与sw2通过access模式连接,并且sw1的e0/0口在自己的vlan2中,而sw2的e0/0口在自己的vlan3中。
      此时pc1分别去发送数据给pc2、pc3,使用ping的结果是:1、在sw1和sw2没有配置vlan前全部互通
2、在完成上述拓扑后,pc1与pc3可以通信,而pc1与pc2无法通信。下面看一下数据转发过程:
      首先、pc1发送一个数据包给pc3,第一个包L2目的mac没有封装失败,启动arp封装OK发出去,到达了sw1的e0/1口,sw1查看e0/1属于vlan2的,所以pc1发来的arp-request就被标记成vlan2,sw1记录完PC1的MAC到vlan和e0/1后查看vlan2对应的CAM表,没有找到pc3的目的mac,那就在vlan2里面flood,连接sw2的e0/0也是vlan2的收到flood的arp包后发给了sw2,整个发送过程没有修改过arp数据包的L2层吧,从e0/0出去的arp包还是一个以太网标准格式的包,传到sw2后,sw2先记录pc1的mac地址到CAM里面(对应vlan3和e0/0口),然后查看arp包中的目的MAC地址,由于是从自己的e0/0收到的,sw2查看了e0/0属于vlan3,所以应该是查看vlan3对应的CAM表,一看目的vlan3对应的CAM表中有arp包要给的目的MAC地址,是pc3的(因为pc3也是vlan3的,所以vlan3对应的CAM是可以学到pc3的MAC地址的,而学不到pc2的MAC地址),那么就把这个包通过e0/2口转发给了pc3,pc3记录pc1的arp表项后给pc1回复arp-reply相应,完成了pc1与pc3的通信。
      因为pc2在sw2自己的vlan2中,所以sw2在转发的时候不会把自己vlan3的数据包flood或者单播到自己vlan2里面去的,所以pc2无法收到pc1发来的数据包。


但是如何让sw1的vlan2与sw2的vlan2通信呢:1、sw1连接sw2的口和sw2连接sw1的口都划分到vlan2中
2、让sw1与sw2相连的网线可以承载多个vlan信息,达到不同设备中的同一vlan相互通信,不同vlan不能通信的目的
第一种方法不可取的原因在于,如果有20以上的vlan,那么交换机端口不够用。
第二种方法是目前所使用的方法trunk(干道)技术,用于一根物理介质上(实际上是交换机端口,因为交换机看vlan信息只看流量进入的端口做确认,和网线、终端半毛钱关系都没有)承载多个vlan信息。

 1、cisco交换机端口分类:分为二层端口和三层端口以及虚拟端口,其中二层端口又分为一下三个类型:
access类型:默认只能属于一个vlan
trunk类型:承载多个vlan信息,使用ISL协议或802.1Q协议来封装数据帧达到对多vlan的区分(协议见图)
QinQ类型:dot1q in dot1q ,double vlan技术是指将用户私网VLAN标签封装在公网VLAN标签中,使报文带着两层VLAN标签穿                   越运营商的骨干网络,在公网中只根据外层VLAN标签传播,私网VLAN标签被屏蔽


trunk中的ISL协议:此协议是cisco私有,封装后原本的以太网帧加了30byte,大小可想而知!封装费劲转发慢


trunk中的802.1q协议:公有的,所有厂商的都支持。



      OK,可以看到两个协议封装方式完全不同,ISL采用加头部的封装方式,802.1q采用中间插入tag位(2个都有尾部的FCS),但是802.1q所插入的tag一共是3Byte,而ISL是30Byte,相差10倍,封装速率和解封装速率可想而知,而且支持的vlan数量也是802.1q的多。(一半都采用802.1q协议来封装trunk)
 
      这样交换机的互联的接口都被配置成trunk后就可以在一根网线中承载多个vlan信息了,交换机会根据封装的vlan ID信息区分vlan的编号。
这里有个区别:ISL协议,将所有的vlan都打上标记,没有特殊。
                       802.1q协议,将除了vlan1以外的vlan都打上标记,特殊vlan1不打标记(还是标准以太网帧)。
这个是ISL和802.1q最大的区别。在802.1q中vlan1又叫做本征vlan。


交换机相关配置命令:
1、接口access模式配置
SW1(config)#interface e0/3
SW1(config-if)#switchport mode access            配置接口access模式
SW1(config-if)#switchport access vlan 3            将接口加入vlan3
SW1(config-if)#end
SW1#show vlan brief                                          查看vlan对应的接口信息,没有的接口都在trunk中

 
2、接口trunk模式配置
SW1(config)#interface e0/2
SW1(config-if)#switchport trunk encapsulation dot1q         为trunk封装802.1q协议
SW1(config-if)#switchport mode trunk                                 配置为trunk模式
SW1(config-if)#end
SW1#show interfaces trunk                                 查看trunk接口信息,trunk口show vlan brief 看不到
Port        Mode             Encapsulation     Status        Native vlan
Et0/2       on                      802.1q           trunking           1


session 2 DTP协议
      DTP全名dynamic trunk protocol动态trunk协议,是cisco私有的协议,此协议可以让Cisco交换机自动协商指定交换机之间的链路是否形成Trunk。非cisco交换机是没有DTP协议的,当cisco收不到DTP时,cisco交换机就认为是access模式,这个端口就被设置为access口。                                                                                           下面具体说一下各种情况:拓扑为 SW1:e0/0---------连接----------e0/0:SW2
接口下:两端都采用sw2(config-if)#switchport trunk encapsulation negotiate    协商成ISL
其中一边设置了sw1(config-if)#switchport trunk encapsulation dot1q  协商为802.1q
其中一边设置了sw1(config-if)#switchport trunk encapsulation isl  协商为isl
 
      而下面是双方都开启了协商模式都使用了sw2(config-if)#switchport trunk encapsulation negotiate命令后,接口的模式可以进行自动协商的配置,如果不配置接口的模式则按照上面的三种情况执行,如果接口配置了动态协商模式的话就按照下表执行:结果对照表和动态端口配置如下
sw1(config-if)#switchport mode dynamic ?
          auto       Set trunking mode dynamic negotiation parameter to AUTO
          desirable  Set trunking mode dynamic negotiation parameter to DESIRABLE


      一般实际中都是直接人为制定了接口的模式和trunk的封装协议,这样做网络稳定安全,动态的协商基本用不到。而且考虑到安全性一般都关闭接口的DTP协议,关闭方法就是把接口access、trunk、shutdown自动就关闭了。
 
session 3 native本征vlan

dot1q协议里面规定的,在ISL中没有定义本征vlan一说都打标机,但是在dot1q中native vlan 1是不打tag的。

1、如果想让dot1q和isl对所有vlan包括native vlan 1也打标记的话,可以在交换机配置:
      sw1(config)#vlan dot1q tag nativ   给本征vlan也打tag,这个需要交换机IOS支持,一般3550以上的都支持
2、可以在接口中修改native vlan的号
sw2(config-if)#switchport trunk native vlan 2           将vlan2改为native vlan
      修改的只针对于当前接口生效,比如native vlan 是vlan2,那么在接口是access vlan3的接口上配置native vlan2没什么意义的。而当前接口时trunk或者就是vlan2的话就有意义,从这个接口出去的vlan2(现在是本征vlan)的数据帧将不会被封装dot1q协议,也就是说只要是vlan2的数据就不会有tag标记,而其余vlan会有tag的标记。(通过trunk通道的时候也一样,没有tag标记)。
 
实验:SW1中的vlan2是native vlan和SW2中的vlan3是native vlan可以L2层通信(PC都在一个网段),根据vlantag只看接口属于哪个vlan的原理来判断,如果不通那么是STP影响的,关闭STP就可以实验成功。

重点:vlan接口access、QinQ等在发的时候不打tag,只有收数据的时候才打tag


0 0