1.流量流向监测技术1.1概述传统的网络流量监测技术的局限性SNMP采集端口的数据主要是在网元层用来监控网络流量和设备的性能,而且SNMP采集的数据是基于端口的,无法提供端到端的准确的流量信息,因此对流向的统计手段不明确。利用RMON探针对运营商网络进行流量和流向管理可以部分弥补SNMP的技术局限性,其业务分析和协议分析功能较强。但是,采用RMON探针建设的流量监测系统也有处理性能不足和难以在大型网络普遍部署的局限性。提出新的流量监测技术为克服现有网管系统对网络流量和流向分析功能的技术局限性,运营商迫切需要寻找一种功能丰富、成熟稳定的新技术,对现有管理系统中流量信息的采集和分析方式进行改造和升级。新的流量信息采集和分析技术应具备对运营商的运行网络影响小、无需对网络拓扑进行改变就能平滑升级的技术特征,既可以对网络中各个链路的带宽使用率进行统计,又可以对每条链路上不同类型业务的流量和流向进行分析和统计。本文主要介绍应用广泛的CiscoNetFlow技术、华为Netstream技术、Sflow、Cflowd和IPFIX以及支持上述流监测技术的厂家和设备情况。1.2相关厂家及设备供应商支持的流设备列表CiscoNetFlowCisco-800、1700、2600、1800、2800、3800、4500、6500、7200、7300、7500、7600、10000、12000、CRS-13ComNetFlow8800系列交换机AdtranNetFlowNetVanta3200、3305、4305、5305、1524、1624、3430、3448、3130、340和344RiverbedNetFlow请参考Riverbed白皮书EnterasysNetFlow请参考Enterasys白皮书ExtremeNetworksNetFlowAlpine3800系列、BlackDiamond6800系列、BlackDiamond8800系列、BlackDiamond10808、BlackDiamond12804C、BlackDiamond12804R、SummitX450系列、Summiti系列(不支持输入/输出接口、octets和最初及最后次数)FoundryNetworksNetFlow、sFlowBigIron系列、FastIron系列、IronPoint系列、NetIron系列、SecureIron系列、ServerIron系列JuniperNetworksNetFlow、J-Flow请参考JuniperNetworks白皮书(针对Netflow不支持取样间隔参数、最初和最后次数以秒单位存储)HuaweiNetStream请参考Huawei白皮书H3CNetStream请参考H3C白皮书NortelIPFIX5500和8600系列AlaxalANetworkssFlowAX7800R、AX7800S、AX7700R、AX5400SAlcatelsFlowOmniSwitch6850、OmniSwitch9000AlliedTelesissFlowSwitchBlade7800R系列、SwitchBlade7800S系列、SwitchBlade5400S系列ComtecSystemssFlow!-Rex16Gi、24Gi和24Gi-ComboForce10NetworkssFlowE系列Hewlett-PackardsFlowProCurve2800系列、ProCurve3400cl系列、ProCurve3500yl系列、ProCurve4200vl系列、ProCurve5300xl系列、ProCurve5400zl系列、ProCurve6200yl系列、ProCurve6400cl系列、ProCurve9300m系列、ProCurveRoutingSwitch9408slHitachisFlowGR4000、GS4000、GS3000NECsFlowIP8800/R400系列、IP8800/S400系列、IP8800/S300系列2Netflow2.1流原理netflow的信息单元是flow。flow是一个单向的带有唯一标识字节组的传输流。基本的标识为:source-IP-address,source-port,destination-IP-address,destination-port,IP-protocol,TOS,inputinterfaceID。当路由器接收到一个没有flow入口的数据包时,一个flow的结构将被初始化以保存其状态信息如:交换的字节数、IP地址、端口、自治区域等。随后所有满足这个flow结构的数据包都将增加flow结构的字节计数和包计数,直至这个flow中止并输出。Netflow功能是在一个路由器内独立完成,它不涉及路由器之间的任何连接设置协议,也不要求对数据包本身或其它任何网络设备进行任何外部修改。Netflow交换中要创建一个信息高速缓存,第一个数据包到来时,路由器利用标准的快速交换处理信息包,同时生成一个Netflow高速缓存,随后到来的数据包即可以依据高速缓存信息被交换,对于所有活动信息流,在Netflow高速缓存中保留相应的信息流信息。当一定时间内没有相应的数据包通过,则结束这个数据流的交换和统计,并释放高速缓存,数据输出的条件在后续部分描述。在netflow中到期的flow被绑在UDP数据报中发出。在V5的版本中最多30个flow记录,V1中25个记录,V8中28个记录。至少每秒钟发一次flow。虽然netflow只提供单向的流量统计。如果希望得到表现双向的统计数据,netflow提供了“canned”的SQL程序来获得一个IP地址对的流量统计数据。典型的路由器netflow的资源占用率为8%~30%。一般情况下一个netflow收集器接收3-5个路由器的netflow输出。2.2输出缓存条件NetFlow是通过建立高速缓存来实现的,该缓存存放所有活动的流信息。当有一个报文符合流定义时,NetFlow缓存将被建立。缓存终止并输出数据的条件如下:**传输完成(当看到TCPFIN或RST标志)**缓存满**非活动时间超时。空闲流超过n秒,默认15秒,可通过Router(config)#ipflow-cachetimeoutinactive130改变默认值**活动时间超时。流超过n分钟,默认30分钟,可通过Router(config)#ipflow-cachetimeoutactive20改变默认值NetFlow缓存如图1所示。图1NetFlowCache示例2.3Netflow报文格式说明2.3.1V1头格式字段值Version0x0001Count该报文含有的流记录数SystemUptime该设备启动的时间(毫秒)UNIXSeconds自0000UTC1970计的时间(秒)UNIXNanoSenconds自0000UTC1970计剩余时间(十亿分之一秒)输出报文格式0123bytesrcaddrdstaddrnexthopinputoutputdPktsdOctetsfirstLastsrcportdstportPad1prottosTcp_flagsPad2Pad3reservedBytes字段值0-3srcaddr源ip地址4-7dstaddr目的ip地址8-11nexthop下一跳路由器地址12-13inputSNMP入口接口ifIndex14-15outputSNMP出口接口ifIndex16-19dPkts该流的Packets数20-23dOctets该流的Bytes数24-27first流开始系统时间28-31Last流结束系统时间32-33srcport四层源端口34-35dstport四层目的端口36Pad1未用(0)37prot四层协议(如TCP=6,UDP=17)38tos服务类型39Tcp_flagsCumulativeORofTCPflags40Pad2未用(0)41-42Pad3未用(0)43reserved保留2.3.2V5头格式备注:红色部分是Version5较Version1新添字段。字段值Version0x0005Count该报文含有的流记录数SystemUptime该设备启动的时间(毫秒)UNIXSeconds自0000UTC1970计的时间(秒)UNIXNanoSenconds自0000UTC1970计剩余时间(十亿分之一秒)SequenceNumber流序号EngineType流转发引擎,0代表RP,1代表VIP/LCEngineIDVIP或LC插槽号码输出报文格式备注:红色部分是Version5不同于Version1的字段。Version5新增了4个字段用以标示自治域和掩码位。0123bytesrcaddrdstaddrnexthopinputoutputdPktsdOctetsfirstLastsrcportdstportPad1Tcp_flagsprottossrc_asdst_assrc_maskdst_maskpad2Bytes字段值0-3srcaddr源ip地址4-7dstaddr目的ip地址8-11nexthop下一跳路由器地址12-13inputSNMP入口接口ifIndex14-15outputSNMP出口接口ifIndex16-19dPkts该流的Packets数20-23dOctets该流的Bytes数24-27first流开始系统时间28-31Last流结束系统时间32-33srcport四层源端口34-35dstport四层目的端口36Pad1未用(0)37Tcp_flagsCumulativeORofTCPflags38prot四层协议(如TCP=6,UDP=17)39tos服务类型40-41src_as源AS号42-43dst_as目的AS号44Src_mask源地址掩码位数45Dst_mask目的地址掩码位数46-47Pad2未用(0)2.3.3V7头格式备注:红色部分是Version7较Version1新添字段。字段值Version0x0007Count该报文含有的流记录数SystemUptime该设备启动的时间(毫秒)UNIXSeconds自0000UTC1970计的时间(秒)UNIXNanoSenconds自0000UTC1970计剩余时间(十亿分之一秒)SequenceNumber流序号输出报文格式备注:红色部分是Version7不同于Version5的字段0123byteSrcaddrDstaddrNexthopinputOutputdPktsdOctetsFirstLastsrcportDstportflagsTcp_flagsprotTossrc_asdst_assrc_maskdst_maskpad2MLSRPBytes字段值0-3srcaddr源ip地址4-7dstaddr目的ip地址8-11nexthop下一跳路由器地址12-13inputSNMP入口接口ifIndex14-15outputSNMP出口接口ifIndex16-19dPkts该流的Packets数20-23dOctets该流的Bytes数24-27first流开始系统时间28-31Last流结束系统时间32-33srcport四层源端口34-35dstport四层目的端口36flagsflowmaskinuse37Tcp_flagsCumulativeORofTCPflags38prot四层协议(如TCP=6,UDP=17)39tos服务类型40-41src_as源AS号42-43dst_as目的AS号44-45Src_mask源地址掩码位数46-47Dst_mask目的地址掩码位数48Pad2未用(0)49-50MLSRPIPaddressofMLSrouter2.3.4V8注意:支持IOS12.0(3)T,12.0(3)S12.1及其后续IOS版本头格式备注:红色部分是Version8较Version5新增字段,该字段体现汇聚功