赞
踩
本实验采用H3C的HCL模拟器5.9.0版本进行实验,其中使用到数台交换机和数台PC,其中PC的IP地址为192.168.0.X/24
,其中X为PC的序号如PC1则IP即为192.168.0.1/24。
PC2 Ping | PC3 Ping | PC4 Ping |
---|---|---|
PC3 | PC4 | PC5 |
PC4 | PC5 | |
PC5 | ||
√ | √ | √ |
就是使用Ping命令进行测试,默认情况下都是正常通信的,如果不通请检查PC的IP地址设置是否存在错误或接口启动按钮是否启用状态。
#切换系统视图 <H3C>system-view #修改设备名称为SW1 [H3C]hostname SW1 #创建VLAN10 [SW1]vlan 10 #方式一:在VLAN视图下将接口绑定到VLAN10 [SW1-vlan10]port GigabitEthernet 1/0/2 GigabitEthernet 1/0/3 #创建VLAN20 [SW1-vlan10]vlan 20 #退回到系统视图 [SW1-vlan20]quit #进入到1/0/4 和 1/0/5 两个接口同时进行管理操作 [SW1]int ran g1/0/4 g1/0/5 #方式二:在接口视图下将接口加入到VLAN20 [SW1-if-range]port access vlan 20 #退回到系统视图 [SW1-if-range]quit
- 上述配置已经将SW1的 g1/0/2 和 g1/0/3 已经绑定到vlan10中,g1/0/4 和 g1/0/5绑定到vlan20中,这两种命令方式虽然不一样但是效果都是一样的。
- 这里再次强调一下前面学到的知识,二层以太网通信是需要用到Mac地址的,我们使用Ping命令之后,发出ICMP报文之前,二层设备是需要知道目的IP的Mac地址的。
- 发出ICMP之前设备会广播发送免费ARP报文(二层广播)查找mac的,这个时候只会广播到源IP接口所属VLAN ID一致的接口上,只有目的IP和本端设备源IP一致的设备才会回应该报文,否则也会将报文丢弃不回应,然后设备根据回应的免费ARP报文中的源Mac地址记录到mac地址表然后设备单播发送ICMP报文到目的设备。
- 如果VLAN不一致就会导致免费ARP报文对方收不到,因为VLAN tag不一致Access接口是会直接丢弃的,所以就收不到ARP报文那么就不能知道目的设备Mac地址,那么必然就不能正常通信。
PC2、PC3属于同一VLAN 10,
PC4、PC5属于同一VLAN 20,
下面我们测试效果是否为我们讲述的一样,不同VLAN间报文无法正常传递
#Ping命令 -c参数是设置发出请求报文个数为1,默认为4
<H3C>ping -c 1 192.168.0.3
Ping 192.168.0.3 (192.168.0.3): 56 data bytes, press CTRL_C to break
56 bytes from 192.168.0.3: icmp_seq=0 ttl=255 time=8.405 ms
--- Ping statistics for 192.168.0.3 ---
#Ping命令 -c参数是设置发出请求报文个数为1,默认为4
<H3C>ping -c 1 192.168.0.4
Ping 192.168.0.4 (192.168.0.4): 56 data bytes, press CTRL_C to break
Request time out
--- Ping statistics for 192.168.0.4 ---
#Ping命令 -c参数是设置发出请求报文个数为1,默认为4
<H3C>ping -c 1 192.168.0.5
Ping 192.168.0.5 (192.168.0.5): 56 data bytes, press CTRL_C to break
Request time out
--- Ping statistics for 192.168.0.5 ---
#Ping命令 -c参数是设置发出请求报文个数为1,默认为4
<H3C>ping -c 1 192.168.0.4
Ping 192.168.0.4 (192.168.0.4): 56 data bytes, press CTRL_C to break
# (即为超时,也就是不通)
Request time out
--- Ping statistics for 192.168.0.4 ---
#Ping命令 -c参数是设置发出请求报文个数为1,默认为4
<H3C>ping -c 1 192.168.0.5
Ping 192.168.0.5 (192.168.0.5): 56 data bytes, press CTRL_C to break
Request time out
--- Ping statistics for 192.168.0.5 ---
#Ping命令 -c参数是设置发出请求报文个数为1,默认为4
<H3C>ping -c 1 192.168.0.5
Ping 192.168.0.5 (192.168.0.5): 56 data bytes, press CTRL_C to break
56 bytes from 192.168.0.5: icmp_seq=0 ttl=255 time=8.405 ms
--- Ping statistics for 192.168.0.5 ---
#Ping命令 -c参数是设置发出请求报文个数为1,默认为4
<H3C>ping -c 1 192.168.0.5
Ping 192.168.0.5 (192.168.0.5): 56 data bytes, press CTRL_C to break
56 bytes from 192.168.0.5: icmp_seq=0 ttl=255 time=12.003 ms
--- Ping statistics for 192.168.0.5 ---
效果很明显,同一VLAN间能够正常访问,但是不同VLAN间却不能正常访问。
PC2 Ping | 其他设备之间 | PC4 Ping |
---|---|---|
PC3 | PC5 | |
√ | ×(不能正常通信) | √ |
PC8 Ping | PC9 Ping | PC10 Ping |
---|---|---|
PC9 | PC10 | PC11 |
PC10 | PC11 | |
PC11 | ||
√ | √ | √ |
就是使用Ping命令进行测试,默认情况下都是正常通信的,如果不通请检查PC的IP地址设置是否存在错误或接口启动按钮是否启用状态。
#切换系统视图 <H3C>system-view #修改设备名称为SW6 [H3C]hostname SW6 #创建VLAN10并进入到vlan视图 [SW6]vlan 10 #将g1/0/8接口加入到vlan10 [SW6-vlan10]port g1/0/8 #创建VLAN20并进入到vlan视图 [SW6-vlan10]vlan 20 #将g1/0/9接口加入到vlan20 [SW6-vlan20]port g1/0/9 #退出该视图 [SW6-vlan20]quit #进入到g1/0/1接口 [SW6]int g1/0/1 #修改接口类型为trunk类型,华三设备默认为Access类型 [SW6-GigabitEthernet1/0/1]port link-type trunk #允许该接口携带标签Vlan 10 20 通过该接口 [SW6-GigabitEthernet1/0/1]port trunk permit vlan 10 20 #设置缺省vlan接口为vlan20 [SW6-GigabitEthernet1/0/1]port trunk pvid vlan 20 [SW6-GigabitEthernet1/0/1]quit
#切换系统视图 <H3C>system-view #修改设备名称为SW7 [H3C]hostname SW7 #创建VLAN10并进入到vlan视图 [SW7]vlan 10 #将g1/0/10接口加入到vlan10 [SW7-vlan10]port g1/0/10 #创建VLAN20并进入到vlan20视图 [SW7-vlan10]vlan 20 #将g1/0/11接口加入到vlan20 [SW7-vlan20]port g1/0/11 #进入到g1/0/1接口 [SW7-vlan20]int g1/0/1 #修改接口类型为trunk类型,华三设备默认为Access类型 [SW7-GigabitEthernet1/0/1]port link-type trunk #设置缺省vlan接口为vlan20 [SW7-GigabitEthernet1/0/1]port trunk pvid vlan 20 #允许该接口携带标签Vlan 10 20 通过该接口 [SW7-GigabitEthernet1/0/1]port trunk permit vlan 10 20 [SW7-GigabitEthernet1/0/1]quit
因为PC8–PC10属于同一VLAN,测试结果也是能够证明他们之间能够正常通信
<H3C>ping -c 1 192.168.0.9 Ping 192.168.0.9 (192.168.0.9): 56 data bytes, press CTRL_C to break Request time out --- Ping statistics for 192.168.0.9 --- <H3C>ping -c 1 192.168.0.10 Ping 192.168.0.10 (192.168.0.10): 56 data bytes, press CTRL_C to break 56 bytes from 192.168.0.10: icmp_seq=0 ttl=255 time=17.000 ms --- Ping statistics for 192.168.0.10 --- <H3C>ping -c 1 192.168.0.11 Ping 192.168.0.11 (192.168.0.11): 56 data bytes, press CTRL_C to break Request time out --- Ping statistics for 192.168.0.11 ---
<H3C>ping -c 1 192.168.0.8
Ping 192.168.0.8 (192.168.0.8): 56 data bytes, press CTRL_C to break
Request time out
--- Ping statistics for 192.168.0.8 ---
<H3C>ping -c 1 192.168.0.10
Ping 192.168.0.10 (192.168.0.10): 56 data bytes, press CTRL_C to break
Request time out
--- Ping statistics for 192.168.0.10 ---
<H3C>ping -c 1 192.168.0.11
Ping 192.168.0.11 (192.168.0.11): 56 data bytes, press CTRL_C to break
56 bytes from 192.168.0.11: icmp_seq=0 ttl=255 time=9.295 ms
--- Ping statistics for 192.168.0.11 ---
%Aug 5 11:06:22:388 2023 H3C LLDP/5/LLDP_PVID_INCONSISTENT: PVID mismatch discovered on GigabitEthernet1/0/1 (PVID 1), with SW6 GigabitEthernet1/0/1 (PVID 20).
出现这类报错的原因是链路两端PVID不一致导致的,由LLDP协议监测发现的。
解决办法:将本端设备接口连接的对端接口,两端接口的PVID修改一致,即可解决。
- SW6和SW7连接两个PC的接口都是Access类型,其中一个为VLAN10另一个为VALN20
- SW6和SW7的相连接口为Trunk类型,放行VLAN10、20,但是缺省vlan为20;这样的话,当该接口收到带有VLAN20数据帧的时候,就会剥离标签后发送;如果收到不带有标签的数据帧的时候就会被加上缺省VLAN的标签后发送.
- 按照我们这种配置,PC9发送数据给PC11的时候,PC9数据进入SW6的时候会携带VLAN20的标签,当SW6发给SW7的时候,SW6上由于我们缺省VLAN的tag和PC9数据帧的tag一致,则就会将其剥离后发送给SW7,当SW7收到以后发现不带有标签时候则会打上该Trunk链路上缺省VLAN的tag,然后再转发到PC11相连的Access接口后剥离该标签。
- 我们通过抓包可以发现,VLAN10的数据经过时是携带VLAN tag的,而VLAN20的数据是不携带tag的,因为Trunk链路的缺省VLAN ID与其一致。
PC8 Ping | PC9 Ping | 其他设备之间 |
---|---|---|
PC10 | PC11 | |
√ | √ | ×(无法正常联通) |
PC14 Ping | PC15 Ping |
---|---|
PC15 | PC16 |
PC16 | |
√ | √ |
就是使用Ping命令进行测试,默认情况下都是正常通信的,如果不通请检查PC的IP地址设置是否存在错误或接口启动按钮是否启用状态。
#进入系统视图 <H3C>sys #修改设备名称 [H3C]hostname SW12 #创建VLAN 10 20 30 [SW12]vlan 10 20 30 #进入接口g1/0/1 [SW12]int g1/0/1 #设置接口类似为Hybrid [SW12-GigabitEthernet1/0/1]p l h #设置该Hybrid类型接口下允许通过的VLAN标签 10 20 30 [SW12-GigabitEthernet1/0/1]port hybrid vlan 10 20 30 tagged #退出接口视图,回退到系统视图 [SW12-GigabitEthernet1/0/1]qu #进入到g1/0/14接口视图 [SW12]int g1/0/14 #设置接口类似为Hybrid [SW12-GigabitEthernet1/0/14] p l h #设置该Hybrid类型接口下剥离VLAN 10 20 30 [SW12-GigabitEthernet1/0/14]port hybrid vlan 10 20 30 untagged #设置该Hybrid类型接口下缺省VLAN为VLAN 10 [SW12-GigabitEthernet1/0/14]port hybrid pvid vlan 10 #退出接口视图,回退到系统视图 [SW12-GigabitEthernet1/0/14]quit #进入到g1/0/15接口视图 [SW12]int g1/0/15 #设置接口类似为Hybrid [SW12-GigabitEthernet1/0/15]p l h #设置该Hybrid类型接口下剥离VLAN 10 20 30 [SW12-GigabitEthernet1/0/15]p h v 10 20 30 unt #设置该Hybrid类型接口下缺省VLAN为VLAN 20 [SW12-GigabitEthernet1/0/15]p h pv v 20
#进入系统视图 <H3C>sys #修改设备名称 [H3C]hostname SW13 #创建VLAN 10 20 30 [SW13]vlan 10 20 30 #进入到g1/0/16接口视图 [SW13]int g1/0/16 #设置接口类似为Hybrid [SW13-GigabitEthernet1/0/16]p l h #设置该Hybrid类型接口下缺省VLAN为VLAN 30 [SW13-GigabitEthernet1/0/16]port hybrid pvid vlan 30 #设置该Hybrid类型接口下剥离VLAN 10 20 30 [SW13-GigabitEthernet1/0/16]port hybrid vlan 10 20 30 untagged #退出接口视图,回退到系统视图 [SW13-GigabitEthernet1/0/16]quit #进入到g1/0/1接口视图 [SW13]int g1/0/1 #设置接口类似为Hybrid [SW13-GigabitEthernet1/0/1]p l h #设置该Hybrid类型接口下允许通过的VLAN标签 10 20 30 [SW13-GigabitEthernet1/0/1]p h v 10 20 30 ta
按照上述配置我们可以知道:
- SW12上 g1/0/14 、g1/0/15都是Hybrid类型并且当数据携带VLAN 10、20、30标签的时候就会被剥离.
- SW12上 g1/0/14的缺省VLAN为10,当没有携带标签的数据帧经过的时候就会被打上缺省vlan标签10.
- SW12上 g1/0/15的缺省VLAN为20,当没有携带标签的数据帧经过的时候就会被打上缺省vlan标签20。
- SW12上 g1/0/1的接口也Hybrid接口,但是当有携带vlan 10、20、30标签的数据帧经过时候并不会被剥离,而是直接放行过去,当带有其他标签的数据帧并不会被放行而是直接丢弃。
- SW13上 g1/0/16都是Hybrid类型并且当数据携带VLAN 10、20、30标签的时候就会被剥离.
- SW13上 g1/0/16的缺省VLAN为30,当没有携带标签的数据帧经过的时候就会被打上缺省vlan标签30.
- SW13上 g1/0/1的接口也Hybrid接口,但是当有携带vlan 10、20、30标签的数据帧经过时候并不会被剥离,而是直接放行过去,当带有其他标签的数据帧并不会被放行而是直接丢弃。
PC14 Ping | PC15 Ping |
---|---|
PC15 | PC16 |
PC16 | PC14 |
√ | √ |
前文我们提到过,Access接口只能属于一个标签,且其与缺省标签一致,当PC数据默认发出是不携带任何标签的。
如Access实验图所示,假设现在PC2发出一个广播帧,其接口已经设置为Access接口类型且ID为10。当PC2的数据帧进入到SW1的接口后会打上相应的标签10,这个时候如果其他接口都是Access类型,那么其他接口只有对应的Access接口tag一致的接口才会剥离tag然后发送出去,如过其他Access接口收到发现tag与自身不一致就会将数据帧丢弃。
按照这个逻辑就是只有PC3会将其tag剥离然后发送给PC3,而PC4、PC5对应的接口VLAN属于20,所以他们会直接将该广播帧丢弃,如果现在存在一台PCX,也是属于VLAN 10,那么PCX接口也会剥离发往PCX,如果网络层查找的是自己则回复,不是自己则PCX将其丢弃。
前文我们提到过,Trunk链路允许多个标签携带标签通过,当携带标签的数据帧和缺省VLAN ID一致时,就会剥离标签通过,当收到不携带任何标签数据的时候就会被加上缺省VLAN标签.
当SW6、SW7下的两个或多个相同VLAN需要互相通信的时候时候,这个时候Access接口明显已经不能满足通信需求,这个时候就可以使用Trunk链路,如PC8想要和PC10通信的时候,PC8的数据进入SW6的接口时候会被Access接口打上VLAN10的标签,当数据从SW6离开的时候,由于SW6和SW7之间的接口都是Trunk链路,PC8的数据从SW6离开的时候,会将自身数据的tag和SW6上g1/0/1的允许通过的tag进行比较查看,如果允许通过则通过(分以下两种情况)反之则丢弃。
- 如果允许通过且和缺省VLAN一致的时候(PVID)则剥离标签通过;
- 如果允许通过且和缺省VLAN不一致的时候则携带标签通过。
前文我们提到过,Hybrid链路也允许多个标签携带标签通过,当携带标签的数据帧和缺省VLAN ID一致时,就会剥离标签通过,当收到不携带任何标签数据的时候就会被加上缺省VLAN标签,但是Hybrid链路比Trunk链路多一个可以剥离多个标签后放行通过.
以PC14为案例,当PC14发送数据给PC15的时候,PC14发送数据到SW12时候,由于PC14数据不携带任何数据帧,进入SW12会将其打上缺省VLAN Tag10 。
SW12将数据转发给PC16的时候由于接口配置了剥离tag则会将携带的VALN 10 剥离后转发给PC15.
如果数据帧要在SW12和SW13之间传递的时候,由于我们接口属于Hybrid类型且配置允许部分VLAN携带tag通过,如果在内则会携带标签通过,如果不在内则会将其丢弃。
如果您认为本文对您有帮助,请帮忙在文末关注、点赞、收藏、文头点击订阅专栏,因为有了热度才能帮助更多人学习到看到本文,关于本文如果有问题可以在评论区留言,回复效率可能会低但是一定会积极恢复哦!~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。