随着IP技术的不断发展,网络上各种应用层出不穷,占用带宽资源也越来越多。对于任何机构或企业网络来说,出口带宽总是有限,内部网络带宽需要保持高效率,除了正常主业务流,一些网络游戏、多媒体流、P2P、Virus等可能抢占了大部分带宽。在这种情况下对流量进行分析,掌握内部网络中各种业务的分布,为未来网络建设投资提供决策依据就很重要。
在Internet网络应用的初期,由于出口流量多在几百兆左右,使用单台设备甚至是Linux主机加上类似Ntop的开源软件就可以很好地对流量进行分析。而近年随着P2P、P2SP、Youtube视频应用等大量流行,很多单位的出口流量已经超过1Gbps,有些城域网的出口甚至达到5~8Gbps,再加上日趋成熟的IPv6协议所带来的流量,在这种情况下单靠一台设备进行流量分析处理已经变得很困难。
另一方面,一些设备提供商为应对这种情况,也逐步推出了各自的解决方案,但是这种支持万兆的硬件设备往往价格不菲。在基于x86平台开源流量分析软件较多和投资有限的情况下,对于未来如何经济有效地实现我们对流量进行分析的目的,本文将给出一个基于万兆三层交换机流量重定向功能架构分布式流量分析系统的方案。
方案设计原理
本方案的关键就是如何将超过1Gbps的网络出口总流量分流到多台配备千兆网卡的服务器上。这涉及到三层交换机中ACL(访问控制列表)的工作原理。
IP网络设备,如三层交换机,出于安全因素或QoS的考虑通常会使用访问控制列表来对流经自身的流量作出报文过滤或转发的决定。交换机会把到达入口或VLan的每个报文与物理接口上的事先配置过的ACL进行比较,以决定允许该报文穿过设备还是直接丢弃。一般情况下,ACL被用在跨越路由器边界的流量上,但是有些特殊情况下,我们也可以在一个VLan内使用ACL,来改变二层帧的转发规则。目前技术条件下,ACL的实现都是靠ASIC或FPGA来实现,电路级的处理性能保证交换机可以线速处理大量报文而不会影响到自身性能。
一个ACL语句通常由if-then语法构成。结构如下:
entry <ACLrulename>{
if {
<match-conditions>;
} then {
<action>;
<action-modifiers>;
}
}
其中关键字entry后面是该ACL全局惟一的一个名字。If语句中包含的是报文的匹配规则,功能较强的交换机设备提供商通常可以支持从链路层到应用层的规则匹配。如可以匹配报文的源/目的MAC地址、ethernet packet type(可用于区分IPv4/IPv6报文)、IP协议号、IP TOS字段、TCP/UDP的源/目的端口号、 TCP标志位、ICMP以及fragments等。Then语句中包含的是当报文全部匹配match-conditions中所列的所有规则后,将对该报文采取的行动action,通常有permit(硬件转发)和deny(硬件丢弃)两种;而<action-modifiers>表明除了正常的action外,对于匹配的报文,还可以采取哪些额外的操作,如可以count统计多少报文已经匹配了规则、可以log以将匹配的报文送到log服务器、可以replace-dscp以替换diffserv code point字段以及redirect-port以忽略正常的转发决定而将数据帧重定向送往特定的物理端口等。
丰富的ACL的功能,使得我们利用交换机中的ACL把万兆端口镜像过来的流量线速分配到多个千兆端口做进一步分析的想法成为可能。
流量分离系统实现
图1分布式流量分析系统示意图
图1是一个比较典型的进行网络流量分析的环境,在这里我们使用一个常见的带一个10Gbps上联口和24个1Gbps电口的三层交换机来设计和实现我们的系统,即如何通过交换机自身的ACL功能将来自10Gbps端口的流量按需分配到不同的流量分析服务器上。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。