小弟所在公司的程序员们最近在做multicast相关的开发,发现在服务器上测试收发包的时候,会出现重复收包问题。具体情况是这样的:两台测试用服务器安装的是Windows Server 2003 的,服务器是Dell PE2950; 测试用PC机安装的是Windows XP professional SP2版本,机器为Dell T3400。
这些机器都是连在一台Cisco 3750交换机(实际上是两台堆叠)上的。服务器在一个VLAN, PC机在一个VLAN。把Wireshark安装在服务器上,抓包,在收包服务器上的wireshark抓的包是发包服务器上的wireshard的两倍。 (UDP包)
把Wireshark安装在PC机上,抓包,两个机器上的wireshark抓的包是一样的。然后还是用这些机器,在交换机上做spanport, 把服务器所在端口镜像到两个PC机所连端口,抓包,在发包服务器和PC机上的wireshark所抓的包是一样的,收包服务器上的wireshark所抓包的数量是两倍。请问各位大侠,导致mulitcast包复制的原因有哪些?使用单播包测试,数据包不会被复制。。

解决方案 »

  1.   

    1.SPAN工作原理
         SPAN(Switched Port Analyzer)的作用主要是为了给某种网络分析器提供网络数据流。
         它既可以实现一个VLAN中若干个源端口向一个监控端口镜像数据,也可以从若干个VLAN向一个临控端口镜像数据。源端口的5号端口上流转的所有数据流均被镜像至10号监控端口,而数据分析设备通过监控端口接收了所有来自5号端口的数据流。值得注意的是,源端口和镜像端口必须位于同一台交换机上(但也有例外,如Catalyst 6000系列交换机);而且SPAN并不会影响源端口的数据交换,它只是将源端口发送或接收的数据包副本发送到监控端口。
         在SPAN任务过程中,用户可以通过参数控制,来指明需要监控的数据流种类;还可以将一个或多个端、口、一个或多个VLAN作为源端口,并将从这些端口中发送或接收的单向或双向数据流传送至监控端口。在Catalyst 4006交换机中,最多可以配置6个单向的SPAN任务:2个输入数据流监控、4个输出数据流监控。一个双向SPAN任务实际上包含一个单向输入和一个单向输出。而且不仅仅二层交换端口可作为源端口,Catalyst 4006上的三层路由端口也可设置为源端口。
         SPAN 任务不会影响交换机的正常工作。当一个SPAN任务被建立后,根据交换机所处的不同的状态或操作,任务会处于激活或非激活状态,同时系统会将其记入日志。通过“show monitor session”命令可显示SPAN的当前状态。
         如果遇到系统重新启动的情况,在目的端口初始化结束之前,SPAN任务将处于非激活状态。目的端口(监控端口)可以是交换机上的任意一个交换或路由端口。当一个目的端口处于激活状态时,任何发送到该端口且与SPAN任务无关的数据包将会被丢弃。
         一个目的端口只能处于一个SPAN任务中。当一个端口被配制成目的端口后就不能再成为源端口,同时冗余链路端口也不能成为SPAN的目的端口。特别需要指出的是,如果一个 Trunk端口被配置成为SPAN的目的端口,则其Trunk功能也将自动停止。
         源端口又可以称作被监控端口。在一个SPAN任务中,可以有一个或多个源端口,而且可以根据用户需要设置为输入方向、输出方向或双向,但无论哪种情况,在一个SPAN任务中,所有源端口的被监控方向都必须是一致的。
         在Catalyst 4006交换机上的VLAN也可以整体设置为源端口,这意味着被指定VLAN中的所有端口均为当前SPAN任务中的源端口。
         Trunk端口可以单独设为源端口,也可以与非Trunk端口一起被设置为源端口,但要注意的是,在监控端口不会识别来自Trunk端口针对不同VLAN的数据封装格式,换句话说,在监控端口收到的数据包将无法辨明是来自哪个VLAN。
         SPAN数据流主要分为三类:
         (1)输入数据流(Ingress SPAN):指被源端口接收进来,其数据副本发送至监控端口的数据流;
         (2)输出数据流(Egress SPAN):指从源端口发送出去,其数据副本发送至监控端口的数据流;
         (3)双向数据流(Both SPAN):即为以上两种的综合。
         基于VLAN的SPAN是以一个或几个VLAN作为监控对象,其中的所有端口均为源端口,与基于端口的SPAN类似,基于VLAN的SPAN也分为输入数据流、输出数据流和双向数据流监控三种类型。
         在配置基于VLAN的SPAN任务过程中,应注意几点:
         (1)Trunk端口可以包含在源端口中;
         (2)针对双向SPAN任务,如果在源VLAN中的两个源端口之间有数据交换,则每一个数据包将有两个副本被转发至镜像端口;
         (3)对有多个源VLAN的SPAN任务来说,如果某个源VLAN被删除掉,则该VLAN也将从源VLAN列表中删除;
         (4)处于非激活状态的VLAN无法参与SPAN任务;
         (5)对于一个设置为输入数据流监控的源VLAN来说,来自其他VLAN的路由信息数据包不会被镜像;此外,从设置为输出数据流监控的VLAN向其他VLAN发送出的路由信息数据包也同样不会被镜像。换句话说,基于VLAN的SPAN任务只对进出二层交换端口的数据包进行镜像,而不镜像VLAN之间的路由信息。
         所有网间传输的非路由数据包,包括组播包和BPDU(桥接协议数据单元)包,都可以使用SPAN任务进行镜像。 
         在一些SPAN任务的配置下,会出现同一个SPAN源端口数据包的多个副本被发送到 SPAN监控端口的情况。正像前面提到的那样,在一个双向SPAN任务中,假设a1和a2为源端口,d1为目的端口,如果a1与a2之间有数据包传输,则在a1传向a2的数据包将会被传送到d1两次,反之亦然。