手册下载
NetStream技术白皮书-6W100-整本手册.pdf (417.70 KB)
NetStream技术白皮书
Copyright © 2022 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。
Internet高速发展,使得网络带宽不断增加,网络支持的业务和应用也日渐增多。传统的流量统计技术(如SNMP、端口镜像等),由于统计流量方式不灵活或是需要投资专用服务器成本高等原因,无法满足对网络进行更细致的管理的要求。因此,亟需一种新技术来更好的支持网络流量统计。
为了应对企业网络管理中的这些问题,NetStream应运而生。NetStream是一种基于网络流信息的统计技术,定义了用于设备输出网络流量统计数据的方法,设备对通过其的数据进行统计和分析,并上报给网络流量分析器,经合并处理后存入数据库,并进行进一步的分析处理。
NetStream技术可利用网络数据流创造价值,并可在最大限度减小对NetStream性能影响的前提下提供详细的数据流统计信息。在网络的接入层、汇聚层、核心层上,都可以部署NetStream,以帮助网络管理人员了解企业内部网络的运行状况,及时发现并解决网络中的性能瓶颈问题、网络异常现象,也能作为用户进行网络优化、网络设备投资、网络带宽优化等的参考。
NetStream技术的应用场景有以下几种:
· 计费:NetStream为基于资源(如线路、带宽、时段等)占用情况的计费提供了精细的数据。Internet服务提供商可以利用这些信息来实行灵活的计费策略,如基于时间、带宽、应用、服务质量等。企业客户可以使用这些信息计算部门费用或分配成本,以便有效利用资源。
· 网络规划:NetStream可以为网络管理工具提供关键信息,比如各个AS域之间的网络流量情况,以便优化网络设计和规划,实现以最小的网络运营成本达到最佳的网络性能和可靠性。
· 网络监控:通过在出口部署NetStream,对连接Internet网络的接口进行实时的流量监控,可以分析各种业务占用出口带宽的情况。网管人员可以根据这些信息判断网络的运行情况,尽早发现不合理的网络结构或是网络中的性能瓶颈,方便网管人员规划和分配网络资源。
· 用户监控和分析:通过NetStream技术可以使网络管理者轻松获取用户使用网络和应用资源的详细情况,进而用于高效地规划以及分配网络资源,并保障网络的安全运行。
NetStream是一项基于“流”来统计报文的技术,可以对网络中的业务流量进行统计和分析。它将具有相同特征的报文作为一条流,对各个流进行统计,记录流的统计信息并输出。也可以把多个具有某些相同特征的流聚合成一条聚合流,记录聚合流的统计信息并输出。
一个典型的NetStream系统由NDE(NetStream Data Exporter,网络流数据输出者)、NSC(NetStream Collector,网络流数据收集者)和NDA(NetStream Data Analyzer,网络流数据分析者)三部分组成。
· NDE
NDE负责对网络流进行分类,提取符合条件的流进行统计,并将统计信息上报给NSC设备。输出前也可对数据进行一些处理,比如聚合。配置了NetStream功能的设备在NetStream系统中担当NDE角色。
· NSC
NSC通常为运行于某种操作系统上的一个应用程序,负责解析来自NDE的报文,把统计数据收集到数据库中,可供NDA进行解析。NSC可以采集多个NDE设备输出的数据。
· NDA
NDA是一个网络流量分析工具,它从NSC中提取统计数据,进行进一步的加工处理,生成报表,为各种业务提供依据(比如流量计费、网络规划,攻击监测)。NDA可以提取多个NSC中的数据。通常,NDA具有图形化用户界面,可以使用户方便地获取、显示和分析收集到的数据。
NSC和NDA可以集成在一台NetStream服务器上。
图1 NetStream系统中的设备角色
NetStream的工作机制如下:
(1) NDE把采集到的关于流的详细统计信息定期发送给NSC。
(2) NSC将统计信息收集到数据库后发送给NDA。
(3) NDA对数据进行分析,用于计费、网络规划等应用。
设备作为NDE的NetStream处理过程如图2所示,主要分为以下几个步骤:
(1) 设备按照配置的采样方式对业务流量进行NetStream采样。
(2) 设备根据关键值对采样报文进行NetStream流建立。
(3) 设备按照老化方式对NetStream流进行流老化。
(4) 设备按照输出方式进行NetStream流输出。
图2 NDE的NetStream处理过程
NetStream可以与Sampler(采样器)配合使用。通过设定适当的采样间隔,只针对样本报文进行流信息统计分析。收集到的统计信息可以基本正确地反映整个网络流的状况,同时也能降低NetStream功能对设备性能的影响。
NetStream采样有以下两种方式:
· 随机报文间隔采样:在设置的数量间隔内随机采样报文。比如,将报文采样的数量间隔设置为100,则每100个报文中随机采样1个报文。
· 固定报文间隔采样:在设置的数量间隔内周期采样报文。比如,将报文采样的数量间隔设置为100,如果第3个报文被采样,则每隔100个报文都会再次采样,即第103个报文会再采集一次,以此类推。
通过在设备的接口上配置适当的采样方式对业务流量进行采样、获取采样报文后,NetStream根据报文中的关键值建立NetStream流,相同关键值的报文标识为同一条NetStream流。例如,若指定区分流的关键值为目的MAC地址和源MAC地址,则目的MAC地址和源MAC地址均相同的报文标识为同一条NetStream流。
不同类型的报文,NetStream流建立的关键值如表1所示。
表1 NetStream流建立的关键值
报文类型 |
NetStream流的关键值 |
二层报文 |
目的MAC地址、源MAC地址、目的VLAN ID、源VLAN ID、协议类型、输入接口或输出接口 |
三层报文 |
目的IP地址、源IP地址、目的端口号、源端口号、协议类型、ToS、IPv6流标签、VPN、应用ID、VXLAN ID、输入接口或输出接口 |
MPLS报文 |
MPLS标签、目的IP地址、源IP地址、目的端口号、源端口号、协议类型、ToS、IPv6流标签、VPN、应用ID、输入接口或输出接口 |
NetStream流老化是设备向NetStream服务器输出流统计信息的前提。当设备开启NetStream功能后,流统计信息首先会被存储在设备的NetStream缓冲区中。当存储在设备上的NetStream流信息老化后,设备会把缓冲区中的流统计信息通过指定版本的NetStream输出报文发送给NetStream服务器,同时清除缓冲区中的对应信息。
NetStream流老化有按时老化、强制老化、TCP的FIN和RST报文触发老化三种方式。
按时老化分为以下两种方式:
· 流的不活跃老化:从采集到的最后一个报文开始,该流在指定的时间内没有被采集到,那么设备会向NetStream服务器输出该流的统计信息,这种老化称为流的不活跃老化。这种老化方式主要应用于短时间流,可以及时清除设备上NetStream缓冲区中的无用表项,节省内存空间,充分利用统计表项资源。
· 流的活跃老化:从采集到的第一个报文开始,该流在指定的时间内一直能被采集到。当流活跃时间超过设定的时长后,需要输出该流的统计信息,这种老化称为流的活跃老化。设备向NetStream服务器输出流的统计信息后,因为该流还存在,所以设备会继续统计该流。这种老化方式主要应用于持续时间较长的流量,是设备定期向NetStream服务器输出流统计信息的一种机制。
强制老化分为以下两种方式:
· 手工强制老化:执行命令强制将NetStream缓冲区中所有流老化、输出,并清空NetStream缓冲区信息。
· 最大数目老化:当NetStream流缓存区中流表项的数目达到指定的最大数目时,强制老化部分流表项或禁止新建流表项。
强制老化主要应用于老化条件尚未满足,但此时又需要最新的统计信息,或者NetStream业务发生异常,导致流缓存区中某些流始终不老化。
对于TCP连接,当收到标志为FIN或RST的报文时,表示一次会话结束。因此,当一条已经存在的TCP协议NetStream流中,接收到一个标志为FIN或RST的报文时,可以立即老化该流,输出该流的统计信息,并清除该NetStream流。
但是,如果一条流的第一个报文就是TCP的FIN或RST报文,则会按正常的流程创建一条新流,不进行老化。
普通流输出是指所有流的统计信息都要被统计。在流老化后,每条流的统计信息都要输出到NetStream服务器。
普通流输出的优点是,NetStream服务器可以得到每条流的详细统计信息。但其缺点也很明显,这种方式增加了网络带宽和设备的CPU占有率,而且为了存储这些信息,需要大量的存储介质空间。
聚合流输出是指设备对聚合关键项完全相同的流的统计信息进行汇总,从而得到对应的聚合流统计信息,并将该聚合统计信息发送到相应的NetStream服务器。
目前,聚合流输出支持的聚合方式如表2所示。系统根据选择的聚合方式的聚合关键项,将聚合关键项均相同的多条流的统计信息合并为一条聚合流的统计信息,记录该聚合流的统计信息,并将其发送给NetStream服务器。
不同的聚合方式相互独立,可以同时配置。
例如,设备采集到四条TCP流,其目的地址相同、源地址不同、源端口和目的端口均为10。选择表2中的“协议-端口聚合”方式,该聚合方式的依据为“协议号、源端口、目的端口”。因为这四条TCP流的源端口、目的端口和协议号相同,所以在聚合流统计表项中只会记录一条聚合流统计信息。设备只将聚合统计信息发送给相应的NetStream服务器。由此可见,聚合的最大好处是可以减少对网络带宽的占用。
聚合方式 |
聚合关键项 |
自治系统聚合(as) |
源AS号、目的AS号、输入接口索引、输出接口索引 |
BGP团体属性聚合(bgp-community) |
NetStream流的输入、输出接口索引、BGP团体属性 |
协议-端口聚合(protocol-port) |
协议号、源端口、目的端口 |
源前缀聚合(source-prefix) |
源AS号、源掩码长度(源IP的掩码长度)、源前缀(源IP的网络地址)、输入接口索引 |
目的前缀聚合(destination-prefix) |
目的AS号、目的掩码长度(目的IP的掩码长度)、目的前缀(目的IP的网络地址)、输出接口索引 |
源和目的前缀聚合(prefix) |
源AS号、目的AS号、源掩码长度、目的掩码长度、源前缀、目的前缀、输入接口索引、输出接口索引 |
前缀-端口聚合(prefix-port) |
源前缀、目的前缀、源掩码长度、目的掩码长度、ToS、协议号、源端口、目的端口、输入接口索引、输出接口索引 |
服务类型-自治系统聚合(tos-as) |
ToS、源AS号、目的AS号、输入接口索引、输出接口索引 |
服务类型-源前缀聚合(tos-source-prefix) |
ToS、源AS号、源前缀、源掩码长度、输入接口索引 |
服务类型-目的前缀聚合(tos-destination-prefix) |
ToS、目的AS号、目的掩码长度、目的前缀、输出接口索引 |
服务类型-前缀聚合(tos-prefix) |
ToS、源AS号、源前缀、源掩码长度、目的AS号、目的掩码长度、目的前缀、输入接口索引、输出接口索引 |
服务类型-协议-端口聚合(tos-protocol-port) |
ToS、协议类型、源端口、目的端口、输入接口索引、输出接口索引 |
服务类型-BGP下一跳聚合(tos-bgp-nexthop) |
ToS、BGP下一跳地址、输出接口索引 |
· 在统计AS号时,如果流量没有按照BGP的路由表进行转发,则系统无法统计出AS号。
· 在统计BGP下一跳地址时,如果流量没有按照BGP的路由表进行转发,则系统无法统计出BGP下一跳地址。
目前NetStream输出的报文主要有如下版本:
· 版本5:根据关键值产生原始的数据流,不支持聚合流输出,报文格式固定,不易扩展。
· 版本8:支持聚合流输出,报文格式固定,不易扩展。
· 版本9:基于模板方式,模板可在遵循RFC定义的模板格式的前提下自定义。版本9支持聚合流输出,支持对BGP下一跳信息和MPLS报文进行统计输出。
· 版本10:基于模板方式,模板可在遵循RFC定义的模板格式的前提下自定义。版本10支持聚合流输出,支持对BGP下一跳信息和MPLS报文进行统计输出。版本10输出格式符合IPFIX协议规定。
NDE将收集到的业务流统计信息封装在UDP报文中,发送给NetStream服务器。一个UDP报文中可以携带多条统计信息。这些统计信息输出的格式是由NDE设备决定的,NetStream服务器收到NDE发送来的统计报文后,会根据NetStream流输出的格式,分析收集到的数据。NetStream报文格式如图3所示。通过Header字段中的Version字段来区分NetStream输出报文的版本。
图3 NetStream报文格式
IPv4 NetStrem输出报文版本支持V5、V8、V9和V10,IPv6 NetStream输出报文版本仅支持V9和V10。
NetStream版本5的报文头(Header),如图4所示。
图4 NetStream版本5的报文头(Header)
其中,各字段的含义如下:
· Version:NetStream输出报文的版本,对于版本5,取值为5。
· Count:当前报文中的流记录数。
· System Up Time:报文产生的时间,从系统启动到报文产生的时间,单位为毫秒。
· Unix Secs:报文产生时间的整秒数,即从1970年1月1日0时以来时间的整秒数。
· Unix Nsecs:报文产生时间的纳秒数,即从1970年1月1日0时以来时间不足1秒的纳秒数。
· Flow Sequence:流记录的顺序号。
· Engine Type:流交换引擎类型,填充的内容是设备类型。
· Engine ID:流交换引擎的槽位号,填充的内容为当前NetStream处理板的槽位号。
· Reserved:保留字段,取值为全0。
NetStream版本8的报文头(Header),如图5所示。
图5 NetStream版本8的报文头(Header)
其中,各字段的含义如下:
· Version:NetStream输出报文的版本,对于版本8,取值为8。
· Count:当前报文中的流记录数。
· System Up Time:报文产生的时间,从系统启动到报文产生的时间,单位为毫秒。
· Unix Secs:报文产生时间的整秒数,即从1970年1月1日0时以来时间的整秒数。
· Unix Nsecs:报文产生时间的纳秒数,即从1970年1月1日0时以来时间不足1秒的纳秒数。
· Flow Sequence:流记录的顺序号。
· Engine Type:流交换引擎类型,填充的内容是设备类型。
· Engine ID:流交换引擎的槽位号,填充的内容为当前NetStream处理板的槽位号。
· Aggregation:聚合类型。
· Aggregation Version:聚合版本号,取值为0x02。
· Sampling Interval:采样间隔,取值为0。
· Reserved:保留字段,取值为全0。
NetStream版本9的报文头(Header),如图5所示。
图6 NetStream版本9的报文头(Header)
其中,各字段的含义如下:
· Version:NetStream输出报文的版本,对于版本9,取值为9。
· Count:该报文包含的FlowSet record(包括模板记录和数据记录)的数目。
· System Up Time:报文产生时间,距离系统启动的时间,单位为毫秒。
· Unix Secs:报文产生时间,从1970年1月1日0时以来时间的整秒数。
· Package Sequence:输出报文的序列号,该值是输出报文数量的累加,每发送一个报文,报文序列号加1,可以被NSC用来判断是否有输出报文丢失。
· Source ID:输出流记录的设备的唯一标识。Source ID长度为四个字节:
¡ 前两个字节是保留值,取值为0。
¡ 第三个字节为Engine Type,表示流交换引擎类型,填充的内容是设备类型。
¡ 第四个字节为Engine ID,表示流交换引擎的槽号,填充的内容为当前NetStream处理板的槽位号。
V5和V8版本的报文格式都是固定的,不可更改。V9版本报文输出格式非常灵活,可以根据需要定义不同的模板。
V9的输出报文分为模板输出报文和数据输出报文,分别如图7和图8所示。模板输出报文用来规定对应的数据输出报文中的数据如何解释,NSC根据收到的模板来解释后续收到的数据。
图7 V9模板输出报文格式示意图
图8 V9数据输出报文格式示意图
(1) 模板输出报文
模板输出报文由Packet Header和一个或多个Template FlowSet构成。Template FlowSet的格式,如图9所示。
图9 Template FlowSet的报文格式
其中,各字段的含义如下:
· FlowSet ID:取值固定为0,表示为模板流集。
· Length:模板流集中所有字段长度的总和,单位为字节。
· Template ID:用来标识不同的模板,不同的模板对应不同的Template ID。
· Field Count:当前模板记录的域的数目。一个模板流集可以包含多个模板记录,Field Count给出了某个模板记录所包含的域的数量,以便定位到下一个模板记录。
· Field Type:域类型,用于定义使用该模板的数据记录中包含流的哪些信息,其取值可以由用户自己定义。比如,“Source AS”和“Destination AS”分别用来表示源、目的AS。
· Field Length:使用该模板的数据记录中该类型域的长度,单位为字节。比如,域类型“Source AS”和“Destination AS”的域长度取值为4,表示4个字节。
(2) 数据输出报文
数据输出报文由Packet Header和一个或多个Data FlowSet构成。Data FlowSet的格式,如图10所示。
图10 Data FlowSet的报文格式
其中,各字段的含义如下:
· FlowSet ID:取值为数据记录使用的模板记录的Template ID。NSC通过Template ID将数据报文与对应的模板记录关联,以便根据模板记录来解析该数据记录。
· Length:数据流集的总长度,单位为字节。
· Record-Filed Value:数据流的信息,取值为信息的具体数值。这些字段的类型和长度已通过Template FlowSet中的“Field Type”和“Field Length”定义。
Template FlowSet与Data FlowSet的关系,如图11所示。通过Data FlowSet中的FlowSet ID值找到Template FlowSet中与之取值相同的Template ID,从而可以找到每个数据流信息对应的域类型和域长度。比如:
· Template FlowSet中的“Field 1 Type”和“Field 1 Length”的取值分别为“Source IPv4 address”和“4”。
· Data FlowSet中的“Record-Field 1 Value”的取值为“137.66.8.1”。
· Data FlowSet中“137.66.8.1”则被解析为长度为4bits的源IP地址。
图11 Template FlowSet与Data FlowSet的关系
NetStream版本10的报文与版本9的报文类似,主要差别为报文头和模板支持的字段不同(V10版本支持的字段更丰富)。NetStream版本10的报文头(Header),如图12所示。
图12 NetStream版本10的报文头(Header)
其中,各字段的含义如下:
· Version:NetStream输出报文的版本,对于版本10,取值为10。
· Length:输出报文长度,包括报文头的长度,单位为字节。
· Export Time:流记录从NDE发出的时间,取值为从1970年1月1日0时以来时间的整秒数。
· Sequence Number:输出报文的顺序号,该值是输出报文数量的累加,可以被NSC用来判断是否有输出报文丢失。
· Observation Domain ID:观察域ID,从同一台设备输出的所有流的观察域ID相同。
NetStream输出报文的四种格式对比如表3所示。
表3 NetStream输出报文格式对比表
版本 |
支持的流输出方式 |
优点 |
缺点 |
V5 |
原始流 |
· 将流的详细信息输出给NSC,输出的字段丰富全面 · NDE负荷小 |
· 报文格式固定,不易扩展 · 数据量大,NSC无法长期保存 · NSC、NDA解析和分析的负担较重 · 扩展新的输出信息时,需要升级NSC/NDA软件,来适应NDE的变化 |
V8 |
聚合流 |
· 支持聚合流输出方式,减少对网络带宽的占用 · 可以针对关注的统计项,配置不同的聚合方式 · 可以扩展新的聚合方式 |
· 报文格式固定,不易扩展 · NDE · 扩展新的输出信息时,需要升级NSC/NDA软件,来适应NDE输出报文的变化 |
V9 |
原始流、聚合流 |
· 基于模板方式,报文格式灵活,易扩展 · 模板提供了灵活可扩展的报文输出格式,可以在不改变输出报文格式情况下,增加新的流统计项 · NSC/NDA无需升级软件来适应NDE输出报文的变化 |
- |
V10 |
原始流、聚合流 |
· 基于模板方式,报文格式灵活,易扩展 · 模板提供了灵活可扩展的报文输出格式,可以在不改变输出报文格式情况下,增加新的流统计项 · NSC/NDA无需升级软件来适应NDE输出报文的变化 · 模板支持的字段比V9更丰富 |
- |
NetStream镜像功能是将满足某种QoS策略或指定端口上的报文复制到提供NetStream功能的业务板上,然后在业务板上进行流量统计和Nestream流表项的输出。通过这种方式,可以将NetStream流统计集中到一块业务板上,而不会对设备的转发性能造成影响。
NetStream镜像有以下方式:
· NetStream流镜像
通过QoS策略定义类,并定义流行为将符合分类的报文镜像到提供NetStream功能的业务板或业务设备上。
· NetStream端口镜像
端口镜像是指将端口上的报文镜像到提供NetStream功能的业务板或业务设备上。
NetStream可以与ACL(Access Control List,访问控制列表)配合使用,NetStream只统计ACL筛选出的报文。通过这种方式可以使NetStream只对用户关注的数据进行统计,更能满足用户多样的统计要求。
某公司的市场部和技术部通过Device接入到Internet网络,公司希望能够掌握两个部门的上网情况,以便进行分部门计费。在设备连接Internet网络的接口上,通过NetStream统计功能,可以统计接口出、入方向的流量信息,并上送给NetStream服务器进行后续的分析,以便实现监控两个部门的上网情况,为分部门计费提供依据。
图13 NetStream应用于流量计费场景组网图
某校园被划分为三个教学区,最初网络管理员为每个教学区分配了相同的带宽。但是随着VoIP、P2P、IPTV等新业务的应用,之前的网络划分已经无法满足学生和老师们的需求,同时也不利于管理。管理员可以在Gateway连接Internet网络侧的接口上部署NetStream功能,统计接口出、入方向的流量信息,并上送给NetStream服务器进行后续的分析,以便通过获取到的带宽使用率的详细信息进行网络的规划和分配,同时对网络流量进行监管。
图14 NetStream应用于网络规划场景组网图