以下为转贴
Dynamips的虚拟设备之--Virtual Ethernet Switch
【原创】Dynamips的虚拟设备之--Virtual Ethernet Switch 作者:Mingmeng
上次我们讨论了Dynamips提供的一种最简单的虚拟设备Virtual Bridge(实际上是HUB),今天我们来看看另外一种虚拟设备Virtual Ethernet Switch,虚拟以太网交换机。
如果说Virtual Bridge不过是一个功能简单的小HUB的话,那么Dynamips所提供的Virtual Switch则足以令人刮目相看。Chris显然在Virtual Switch上投以重墨,完全依靠软件实现了一个支持帧转发、MAC地址学习、VLAN隔离和TRUNK封装功能的完整以太网交换机,其代码量甚至超过了ATM和帧中继模拟器。虽然目前还不能比拟专业的硬件交换机,但作为我们搭建模拟路由器网络的"胶水"来说,已经是绰绰有余了。
下面我们通过实验来验证一下Chris的Virtual Ethernet Switch(以下简称为VS)。
网络拓扑:
相关文件:
R1.bat
dynamips -P 3600 -t 3640 -i 0 --idle-pc 0x6036e514 -p 0:NM-1FE-TX -s 0:0:udp:20000:127.0.0.1:20001 -E vs.cfg C3640-IS.BIN
R2.bat
dynamips -P 3600 -t 3640 -i 1 --idle-pc 0x6036e514 -p 0:NM-1FE-TX -s 0:0:udp:20002:127.0.0.1:20003 C3640-IS.BIN
R3.bat
dynamips -P 3600 -t 3640 -i 2 --idle-pc 0x6036e514 -p 0:NM-1FE-TX -s 0:0:udp:20004:127.0.0.1:20005 C3640-IS.BIN
R4.bat
dynamips -P 3600 -t 3640 -i 3 --idle-pc 0x6036e514 -p 0:NM-1FE-TX -s 0:0:udp:20006:127.0.0.1:20007 C3640-IS.BIN
R5.bat
dynamips -P 3600 -t 3640 -i 4 --idle-pc 0x6036e514 -p 0:NM-1FE-TX -s 0:0:udp:20008:127.0.0.1:20009 C3640-IS.BIN
R6.bat
dynamips -P 3600 -t 3640 -i 5 --idle-pc 0x6036e514 -p 0:NM-1FE-TX -s 0:0:udp:20010:127.0.0.1:20011 C3640-IS.BIN
vs.cfg
IF:E0:udp:20001:127.0.0.1:20000
IF:E1:udp:20003:127.0.0.1:20002
IF:E2:udp:20005:127.0.0.1:20004
IF:E3:udp:20007:127.0.0.1:20006
IF:E4:udp:20009:127.0.0.1:20008
IF:E5:udp:20011:127.0.0.1:20010
DOT1Q:E0:1
ACCESS:E1:2
ACCESS:E2:2
ACCESS:E3:3
ACCESS:E4:3
ACCESS:E5:3
配置说明:
1、用Virtual Ethernet Switch连接6台路由器,其中连接R1的端口配置为dot1Q Trunk端口,其他全部配置为ACCESS端口;
2、将VS连接R2和R3的两个端口配置为VLAN2,将连接R4、R5和R6的端口配置为VLAN3;
3、路由器R1的FastEthernet接口配置:
逻辑子口 fa0/0.1: enca dot1Q 2, ip addr 10.0.0.1 255.255.255.0
逻辑子口 fa0/0.2: enca dot1Q 3, ip addr 10.0.1.1 255.255.255.0
4、R2到R6的FastEthernet接口按照图示配置IP地址并启动;
实验过程:
我们对Virtual Ethernet Switch提出了以下问题并通过实验寻找答案。
1、同一VLAN是否连通?不同VLAN是否隔离?
(1) R2/R3和R1的Fa0/0.1同在VLAN2中,可互相Ping通;R4/R5/R6和R1的Fa0/0.2同在VLAN3中,可互相Ping通,说明同一VLAN可连通。
(2) 将R1的Fa0/0 Shutdown后,修改R2/R3的端口地址分别为10.0.1.5/24和10.0.1.6/24,使得R2到R6都在同一网段,然后从R2/R3 Ping R4/R5/R6都不通,反之亦不通,说明VLAN之间的确有隔离。
2、能否进行MAC地址学习?
从R6 Ping R1(10.0.1.1),然后用CommView抓取本地包,用StripUDP脱壳后看到帧的流向如下:
R6->VS VS->R1 (R6的ICMP Request发给R1)
R1->VS VS->R6 (R1的ICMP Reply发给R6)
除此之外没有发现其他帧,即VS从R6收到帧后,未发给除R1之外的任何端口,说明VS不是漫无目标的将帧发到所有端口,而是学习到了R1的MAC地址并进行了目标确定的转发。这说明VS的确具有MAC地址学习功能。
3、Trunk中的帧是否进行了802.1Q封装?
观察VS->R1和R1->VS的以太帧,发现Ethernet II帧中的Type=0x8100,即802.1Q协议(平常看到的大多是0x0800,即IP协议);之后的4字节为802.1q的包头:00 03 08 00,其含义是Priority=0,CFI=0,ID=3,Type=0x0800(IP)。可见Trunk中的帧果然进行了802.1Q的封装。
4、广播帧是否会溢出VLAN?
从R6 Ping 10.0.1.255,然后用CommView抓包,并用StripUDP脱壳后看到帧的流向如下:
R6->VS(1个目标为广播的ICMP Request)
VS->R1 VS->R4 VS->R5 (这里VS将广播帧转发给R1、R4和R5)
R4->VS VS->R6 (R4的应答返回R6)
R1->VS R4->VS VS->R6 VS->R6 (R1和R4的应答返回R6)
即R6发出的广播帧被VS发送给了同一VLAN的R1、R4和R5,而没有发给其他端口,证实了VLAN对广播的阻断作用。
5、VLAN如何互通?
实验中使得VLAN2和VLAN3能够互通的重要设备是R1,它为两个VLAN提供了三层的路由。有趣的是,在R1上不用做任何路由设置,容易忘记的反而是在R2到R6上配置默认路由。R2到R6上没有默认路由两个VLAN还是Ping不通,这时ICMP请求在路由器内部就被扔掉了,根本都不会出现在Virtual Switch上。
实验结论:
通过上述一系列的实验我们不难看出,Virtual Ethernet Bridge较完整的实现了一个基本的以太网交换机应有的功能,完全可以在我们的网络构建中加以灵活应用。
下一次,我们将讨论Dynamips提供的第三种虚拟设备--Virtual FR Switch,其中讲介绍如何实现 R1---Virtual FR Switch---R2,即不用路由器模拟帧中继交换机的情况下,如何做帧中继实验。
上次我们讨论了Dynamips提供的一种最简单的虚拟设备Virtual Bridge(实际上是HUB),今天我们来看看另外一种虚拟设备Virtual Ethernet Switch,虚拟以太网交换机。
如果说Virtual Bridge不过是一个功能简单的小HUB的话,那么Dynamips所提供的Virtual Switch则足以令人刮目相看。Chris显然在Virtual Switch上投以重墨,完全依靠软件实现了一个支持帧转发、MAC地址学习、VLAN隔离和TRUNK封装功能的完整以太网交换机,其代码量甚至超过了ATM和帧中继模拟器。虽然目前还不能比拟专业的硬件交换机,但作为我们搭建模拟路由器网络的"胶水"来说,已经是绰绰有余了。
下面我们通过实验来验证一下Chris的Virtual Ethernet Switch(以下简称为VS)。
网络拓扑:
相关文件:
R1.bat
dynamips -P 3600 -t 3640 -i 0 --idle-pc 0x6036e514 -p 0:NM-1FE-TX -s 0:0:udp:20000:127.0.0.1:20001 -E vs.cfg C3640-IS.BIN
R2.bat
dynamips -P 3600 -t 3640 -i 1 --idle-pc 0x6036e514 -p 0:NM-1FE-TX -s 0:0:udp:20002:127.0.0.1:20003 C3640-IS.BIN
R3.bat
dynamips -P 3600 -t 3640 -i 2 --idle-pc 0x6036e514 -p 0:NM-1FE-TX -s 0:0:udp:20004:127.0.0.1:20005 C3640-IS.BIN
R4.bat
dynamips -P 3600 -t 3640 -i 3 --idle-pc 0x6036e514 -p 0:NM-1FE-TX -s 0:0:udp:20006:127.0.0.1:20007 C3640-IS.BIN
R5.bat
dynamips -P 3600 -t 3640 -i 4 --idle-pc 0x6036e514 -p 0:NM-1FE-TX -s 0:0:udp:20008:127.0.0.1:20009 C3640-IS.BIN
R6.bat
dynamips -P 3600 -t 3640 -i 5 --idle-pc 0x6036e514 -p 0:NM-1FE-TX -s 0:0:udp:20010:127.0.0.1:20011 C3640-IS.BIN
vs.cfg
IF:E0:udp:20001:127.0.0.1:20000
IF:E1:udp:20003:127.0.0.1:20002
IF:E2:udp:20005:127.0.0.1:20004
IF:E3:udp:20007:127.0.0.1:20006
IF:E4:udp:20009:127.0.0.1:20008
IF:E5:udp:20011:127.0.0.1:20010
DOT1Q:E0:1
ACCESS:E1:2
ACCESS:E2:2
ACCESS:E3:3
ACCESS:E4:3
ACCESS:E5:3
配置说明:
1、用Virtual Ethernet Switch连接6台路由器,其中连接R1的端口配置为dot1Q Trunk端口,其他全部配置为ACCESS端口;
2、将VS连接R2和R3的两个端口配置为VLAN2,将连接R4、R5和R6的端口配置为VLAN3;
3、路由器R1的FastEthernet接口配置:
逻辑子口 fa0/0.1: enca dot1Q 2, ip addr 10.0.0.1 255.255.255.0
逻辑子口 fa0/0.2: enca dot1Q 3, ip addr 10.0.1.1 255.255.255.0
4、R2到R6的FastEthernet接口按照图示配置IP地址并启动;
实验过程:
我们对Virtual Ethernet Switch提出了以下问题并通过实验寻找答案。
1、同一VLAN是否连通?不同VLAN是否隔离?
(1) R2/R3和R1的Fa0/0.1同在VLAN2中,可互相Ping通;R4/R5/R6和R1的Fa0/0.2同在VLAN3中,可互相Ping通,说明同一VLAN可连通。
(2) 将R1的Fa0/0 Shutdown后,修改R2/R3的端口地址分别为10.0.1.5/24和10.0.1.6/24,使得R2到R6都在同一网段,然后从R2/R3 Ping R4/R5/R6都不通,反之亦不通,说明VLAN之间的确有隔离。
2、能否进行MAC地址学习?
从R6 Ping R1(10.0.1.1),然后用CommView抓取本地包,用StripUDP脱壳后看到帧的流向如下:
R6->VS VS->R1 (R6的ICMP Request发给R1)
R1->VS VS->R6 (R1的ICMP Reply发给R6)
除此之外没有发现其他帧,即VS从R6收到帧后,未发给除R1之外的任何端口,说明VS不是漫无目标的将帧发到所有端口,而是学习到了R1的MAC地址并进行了目标确定的转发。这说明VS的确具有MAC地址学习功能。
3、Trunk中的帧是否进行了802.1Q封装?
观察VS->R1和R1->VS的以太帧,发现Ethernet II帧中的Type=0x8100,即802.1Q协议(平常看到的大多是0x0800,即IP协议);之后的4字节为802.1q的包头:00 03 08 00,其含义是Priority=0,CFI=0,ID=3,Type=0x0800(IP)。可见Trunk中的帧果然进行了802.1Q的封装。
4、广播帧是否会溢出VLAN?
从R6 Ping 10.0.1.255,然后用CommView抓包,并用StripUDP脱壳后看到帧的流向如下:
R6->VS(1个目标为广播的ICMP Request)
VS->R1 VS->R4 VS->R5 (这里VS将广播帧转发给R1、R4和R5)
R4->VS VS->R6 (R4的应答返回R6)
R1->VS R4->VS VS->R6 VS->R6 (R1和R4的应答返回R6)
即R6发出的广播帧被VS发送给了同一VLAN的R1、R4和R5,而没有发给其他端口,证实了VLAN对广播的阻断作用。
5、VLAN如何互通?
实验中使得VLAN2和VLAN3能够互通的重要设备是R1,它为两个VLAN提供了三层的路由。有趣的是,在R1上不用做任何路由设置,容易忘记的反而是在R2到R6上配置默认路由。R2到R6上没有默认路由两个VLAN还是Ping不通,这时ICMP请求在路由器内部就被扔掉了,根本都不会出现在Virtual Switch上。
实验结论:
通过上述一系列的实验我们不难看出,Virtual Ethernet Bridge较完整的实现了一个基本的以太网交换机应有的功能,完全可以在我们的网络构建中加以灵活应用。
下一次,我们将讨论Dynamips提供的第三种虚拟设备--Virtual FR Switch,其中讲介绍如何实现 R1---Virtual FR Switch---R2,即不用路由器模拟帧中继交换机的情况下,如何做帧中继实验。