zoukankan      html  css  js  c++  java
  • Dynamips的虚拟设备之--Virtual Ethernet Switch

    以下为转贴

    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,即不用路由器模拟帧中继交换机的情况下,如何做帧中继实验。
  • 相关阅读:
    CSS 文档流
    索引器实现
    HTTP请求报文和响应报文的内容
    【面试题42】翻转单词顺序VS左旋转字符串
    手机连接虚拟机服务器,架构微信内网开发环境
    thrift的使用介绍
    hessian 在PHP中的使用介绍
    PHP simplexml_load_string() 函数
    微信公共平台开发
    使用缓存Memcache存储更新微信access token
  • 原文地址:https://www.cnblogs.com/jjkv3/p/1173161.html
Copyright © 2011-2022 走看看