多年来,网络管理员想出了很多可行的方法来分析和解决物理网络故障,例如使用SNMP和NetFlow进行数据收集或者使用协议分析器查看原始网络帧和数据包等。但我们现在已经进入虚拟网络时代,这些方法还能管用吗?好消息是,现有的网络流量分析策略仍然可以用于虚拟网络中,只是有一些小小的差别。
虚拟网络并没有那么与众不同
虚拟网络的工作原理与物理网络基本相同。在很多情况下,只是网络设备的名字改变了,例如:
◆网络接口卡(NIC)现在被称为“虚拟网络接口卡”(vNIC)
◆交换机现在被称为“虚拟交换机”(vSwitch)。vSwitch的工作原理与物理交换机非常类似,但是没有传统交换机中常见的配置功能(例如显示MAC地址)。
◆每台主机上可以创建多个vSwitch,vSwitch上的端口通常出于特定目的(例如生产或管理)被分成多个端口组。
◆在虚拟环境,完全支持VLAN,交换机端口可以使接入端口或者中继端口,就像在物理交换机中一样。
◆通过真实的物理服务器NIC和电缆,承载虚拟交换机的物理主机被连接到物理网络,这在虚拟基础设施中被称为“上行链路”。
◆混杂模式、NICteaming(多网卡接入)和负载平衡等功能在虚拟环境中也有。
这些功能发生了改变:
◆不再需要生成树协议
◆网络流量不能从一个交换机流到同一主机的另一个交换机
◆端口组位于虚拟网络,但不存在于物理网络(这可能与思科SmartPort类似)
◆你无法看到连接到vNIC的虚拟交换机或者物理电缆(并且对于大多数服务器而言,你无法在配线间看到闪烁的灯光)
使用SNMP和NetFlow的虚拟网络流量分析
正如在物理网络基础设施中一样,在虚拟世界中分析网络流量时,你需要使用SNMP或NetFlow来收集跨基础设施的多个点的数据,然后通过网络性能管理和监控工具来分析这些数据。常见的网络性能监控工具包括What’’s Up Gold和Solarwinds Orion,常见的NetFlow收集器和分析器包括Plixer Scrutinizer和Solarwinds NetFlow Traffic Analyzer。
当然,你仍然可以通过元素管理器(例如HP OpenView)来进行互联网控制消息协议(ICMP)监控,但最好先进行一定的利用率和错误检查。
图1:在vSphere中启用NetFlow
如果你使用的是vSphere5之前的版本,你将无法利用NetFlow来监控虚拟基础设施。然而,当你部署vSphere5之后(假设你使用的是vSphere分布式交换机版本),你可以在单个dvPort(分布式虚拟端口)或上行链路中,在端口组启用NetFlow v5。
这样操作后,你就能够监控以下内容:
◆主机内虚拟机流量(同一主机上虚拟机到虚拟机的流量)
◆主机间虚拟机流量(不同主机上虚拟机到虚拟机的流量)
◆虚拟机到物理基础设施的流量
SNMP只能为你提供发送和接收的网络流量以及错误的基本统计信息,而NetFlow能够提供IP配对和协议,为你显示更详细的信息。换句话说,你能够看到最高流量使用者以及谁在向谁发送流量。例如,通过SNMP,你可能会看到一个网络接口已经达到其吞吐容量的最大值,但一切仅此而已。而通过NetFlow,你可以看到HTTP正占用95%的接口利用率,而某个用户的电脑(通过DNS查找)正在加载摇滚音乐会的视频。当然,这些方法都无法向你显示数据包内的情况或者允许你解码任何数据。在《vSphere 5网络功能-NetFlow》中,你会找到关于VMware的vSphere 5 Netflow部署的更相信的信息。
图2:用于vSphere的Xangati
最好的vSphere网络性能监控和故障诊断工具之一是Xangati for vSphere(免费)以及Xangati管理仪表板。这两个版本都使用NetFlow来收集虚拟基础设施的数据,同时结合vCenter的其他传统性能指标,为vSphere基础设施提供非常强大的性能监控和故障处理工具。该工具免费版本只能监控一台主机,而管理仪表板允许你从单个接口同时监控多台主机以及虚拟网络。
请注意,如果你正在使用Hyper-V,而不是vSphere,微软已经宣布在Windows Server 2012 Hyper-V中,这个可扩展虚拟交换机将支持添加开源Hyper-V sFlow代理,它以后可以通过sFlow收集器来监控,例如InMon sFlowTrend工具等。
通过数据包解码的虚拟网络流量分析
如果你想从虚拟网络来进行数据包解码呢?为了在物理网络进行深度数据包检测(DPI),你需要将协议分析器(例如,在笔记本电脑上运行的分析器)连接到交换机端口,然后配置SPAN(或者RSPAN,如果流量在不同的交换机上)来从单个交换机端口、多个端口或整个VLAN映射流量。
现在,大多数数据中心的服务器都被虚拟化了,很多流量甚至都不会经过物理网络,所以传统数据包捕捉方法只有在某些情况下适用,例如分析互联网连接或者到iSCSI SAN的连接。
在vSphere之前,使用虚拟基础设施,你在虚拟机上运行协议分析器,创建一个新端口组,并将其配置为混杂模式(使所有数据包发送到所有端口),然后将这个你想要分析的虚拟机转移到该端口组(出于安全考虑,你不会想在生产端口组启用混杂模式)。想要获取更详细信息,请参阅我的另一篇文章“在VMware vSphere虚拟网络使用网络数据包分析器”(如果你仍然在使用vSphere 4.x或者你有vSphere 5,但没有分布式虚拟交换机,这篇文章就适用于你)。
在vSphere Enterprise Plus版中,端口镜像功能让你可以快速简单地镜像任何dvPort到另一个端口,或者你可以选择一个VLAN来封装这些镜像数据包,这可以通过在配置分布式虚拟交换机端口镜像时勾选“封装VLAN”框来实现。
在被启用后,端口镜像将提供以下可视性:
◆主机内虚拟机流量(同一主机上虚拟机到虚拟机的流量)
◆主机间虚拟机流量(不同主机上虚拟机到虚拟机的流量)
图3:配置vSphere 5端口镜像
想了解如何配置vSphere端口镜像,请参阅这篇《vSphere 5网络功能:端口镜像》。如果你是Hyper-V用户,请注意,在Hyper-V 3中,端口镜像是可扩展交换机的新功能。
当你的服务器被虚拟化后,分析和解决网络故障与在物理网络的物理服务器中执行相同的任务并没有太大区别。根据你需要的详细信息程度不同,你有两种不同的方法来实现这一点。对于高水平流量分析和瓶颈识别而言,使用NetFlow是最佳选择,如果你想在虚拟基础设施中执行深度数据包分析,你可以选择使用协议分析器的端口镜像方法。