1.1. 网络
网络是运维工作中的基础工作,可以这么说。IT基础架构是企业信息系统的基石,而网络则是IT基础架构的基石。
网络工程师主要工作包括:网络规划、配置变更、故障处置等,工程师不但需要具备扎实的网络功底,还需要具备系统、存储、虚拟化、数据库、日志分析、故障诊断等一系列技能,资深的网络工程师是一个大综合技能融合应用的岗位。
调试网络设备是网络工程师接触最多事情,主流的网络设备包括:交换机、路由器、防火墙等,如下是一些国内外主流的网络设备公司:
设备 | 国外产品 | 国内产品 |
交换/路由 | cisco/juniper | huawei/h3c/ruijie |
防火墙 | juniper/soniclwall | huawei/h3c/ruijie/hillstone |
无线 | aruba | huawei/h3c/ruijie |
安全 | cisco/soniclwall/juniper | 天融信/深信服 |
负载均衡 | F5/A10 | 深信服/H3C |
我把网络按照功能定位分成三部分解说:办公系统、数据中心、骨干传输。
1.1.1. 办公系统
办公系统中最重要的是办公网络,根据企业规模可大可小,但是一般离不开几个概念,接入层、汇聚层、核心层、外联区、无线网。
接入交换机
一般只用于有线终端和无线AP的接入,配置比较简单,vlan,stp,ssh,堆叠这些基础二层功能,一般情况下开局部署完成后很少会有变更,这类设备目前是中低端24口或者48口千兆交换机为主,部署位置楼层弱电机房。
汇聚交换机
大部分网络中没有汇聚层这个概念,接入交换机直连核心交换机。有的企业办公楼层多,办公人员密级,可能接入交换机就有几百上千台,核心交换机往往没有这么多下行接口,这个时候就需要汇聚交换机。汇聚交换机一般情况也不会有过多的复杂配置,vlan,ssh,堆叠,链路聚合等,但对硬件要求比较高,端口大带宽高速背板高转发性能,40G或100G上行。
核心交换机
核心交换机承载了所有数据网段的网关,配置会相对复杂,vlan,vlan interface,qos,dhcp,路由,acl等等,有的核心交换机还需要完成策略路由,redis认证等等复杂功能,所以核心交换机不光需要二层转发能力,还需要三层的包转发以及丰富的网络协议功能。
注意事项:很多人喜欢用交换机的图形化配置界面来调试交换机,这其实是一个不好习惯。首先图形化配置界面操作功能有局限性,并不能很好的展示设备功能,其次,图形化操作会最终以设备命令方式下发给系统完成配置,有的厂家图形化优化的不是很好,会导致下发错误的命令,最终影响设备调试,最后很多GUI界面对浏览器兼容性不是很好,很多输入栏或者命令显示异常。建议网络设备调试时以命令行方式去完成操作。
注意事项:在做一些核心设备的调试时,对操作结果不是很确定时可以通过commit confirm(延迟确认,目前很多厂家都支持)方式,这样就算操作失误导致的网络也能及时进行配置回滚,避免不必要的人为故障。
防火墙
目前国内外市场上防火墙品牌和产品非常多,可选择权也很多,很多企业可能会遇到如何选择防火墙的困难,除了最基础的NAT,路由功能外,一般根据以下几点选型:带宽要求,用户规模, 附带功能。
1.根据运营商给的带宽大小,一般千兆的防火墙就足够满足企业上网需求,运营商接入带宽一般不会超过1000Mbps。
2.根据办公网络内的用户规模,用户数量多少是会影响防火墙的上下行带宽,最重要的是会影响防火墙session,一般一个用户打开一个应用会有零到几十个session不等,所以一个1000人的办公网络要满足正常上网需求最少需要5万的session并发量。
3.根据防火墙的附带功能,比如防火墙是否带SSLVPN功能,是否有4~7层的安全防护,现在很多防火墙厂商也都在推下一代防火墙,这个具体根据预算以及需求来采购。对于不差钱的企业,建议防火墙与一些安全设备分开采购,各个功能模块都集中在一台设备上容易出现性能瓶颈、软件bug。
无线网
办公网络的无线一般采购AC+AP的模式(无线控制器+瘦终端AP),便于集中管理,目前国内做的比较好的有华三、锐捷,预算充裕的可以采用aruba的无线解决方案,目前市占率第一,在稳定性和信道优化方面有着不错的优势,这里不做多介绍。
测试无线可以使用WirewelssMon工具来分析当前无线环境下的RSSI强度、信道分布、查询终端无线漫游情况、查找AP mac等信息,有利于诊断优化网络。
外联区
这里的外联区表示运营商接入区域,下面我介绍几种常用的运营商接入方式
1)采用拨号的SMTP线路,100M或500M企业宽带,办公人员较多可以多拉几条,用于负载分摊。
2)带有固定IP的企业宽带,费用会略贵,根据IP数量来定,一般是针对有内部业务映射需求。
3)运营商专线,城域网直连,企业出口设备直连运营商城域网交换机,延迟和带宽更好,费用会贵很多,一般只针对大客户企业。
4)多条运营商专线捆绑组成聚合链路,一组链路费用可能需要十几万/年。
最后推荐通用的园区办公网络架构:
例:某企业办公网络拓扑
除了办公网络之外,还有安防系统,如消防监控、视频监控、门禁等等,这些都是属于弱电系统。
此外,还有办公配套模块,如ip电话、打印机、会议室、多媒体、视频会议等。
1.1.2. 数据中心
鲁迅曾说过“世上本没有数据中心,存储的数据多了便有了数据中心—鲁迅”。
IDC(网络数据中心Internet Data Center简称IDC)是独立于企业办公网络的一套服务器数据存储网络环境,很多企业会将数据中心网络与办公机房网络混为一谈,其实不然,数据中心网络,数据中心网络会更偏向稳定、高效、安全。
在运营商或互联网企业,IDC运维部门可能会规划为一个独立的部门。一次小小的网络的故障可能就会给企业带来巨大的经济损失,故障的恢复都是以秒来衡量的,网络重要性不言而喻。
数据中心网络与办公网络其实没有太多差别,在功能上可能会有一些特性上的区分,比如设备会支持VXLAN,SDN等软件技术,在接口上目前很多数据中心已经采用了40G,甚至100G的带宽接口。
此外,数据中心机房也有特定的建设要求,其中涉及机房物理位置,布局,供电,布线,制冷,环控,消防,承重等等因素,在后面的章节中会详细讲到。
数据中心网络可以分为三个部分:
1)数据中心内部网络,主要是连接数据中心内的海量服务器,支持数据中心服务器之间的通信需求。这部分网络可以被视为一种“计算机局域网”,而这部分流量经常被称为数据中心的“东西流量”。
2)分布式数据中心之间的网络,一个互联网业务提供商可能修建了多个数据中心(为了异地灾备、降低延迟等多种考虑),连接这些分布式数据中心之间的网络,也是数据中心网络的组成部分,这部分网络一般是专线(自建或租用)连接,但也不排除使用电信运营商的公共互联网。
3)连接数据中心和终端用户之间的网络,大部分情况下,数据中心与终端用户之间是通过电信运营商的接入网络来互通的,但当前许多互联网公司所修建的数据中心已经离用户越来越近,部分互联网公司甚至有过自建网络直联用户的做法(比如谷歌公司曾经的“谷歌光纤”项目)。数据中心与终端用户之间的流量,经常被称为数据中心的“南北流量”。
在数据中心网络规划方面一定要预先做好网络规划,网络拓扑,网络逻辑拓扑(如下图)
要考虑未来数据中心网络的发展趋势,避免频繁的割接替换升级带来的业务中断。
可以将网络划分出多个功能区(如下图),每个功能区可以通过ACL划分成独立的VPC,提高了网络安全。
在对外业务量大的数据中心,还会部署负载均衡设备,用于应用服务器负载均衡。
在对业务安全较高的数据中心或者需要过等保2.0,3.0,还会部署WAF,IPS,堡垒机,数据库审计,日志审计,SSL VPN等一系列配套设备,所以数据中心网络往往会比办公网络要复杂很多。
1.1.3. 骨干网
很多互联网企业一开始并没有复杂的网络和IDC机房,只有一两台服务器,但是随着业务规模的发展,这些公司会产生自己的大量的内容和数据,于是从一开始租用服务器,到最后自建IDC机房,最终这些大型互联网企业会拥有多个IDC,这就需要将多个IDC互联起来,从而形成DCI( Data Center Interconnection)网络,也就是所谓的企业骨干网。其实不光是互联网企业,传统的制造业企业,跨国银行等也是类似的网络拓扑布局。
如果企业拥有了多个IDC或者其分公司分布在多个物理区域,将这个分散的地点连接起来就是一个迫切的需求。问题是采用什么方式连接呢?
这里推荐几种方案:
a.第一种方式:SD-WAN网络
SD-WAN的出现不仅解决了互联网不稳定、专线造价昂贵的问题,最重要的是能够极大程度上满足这些应用即时性和实时性的要求。
SD-WAN不是一个具体的解决方案,每个运营商或代理运营机构都根据SD-WAN解决方案推出了自己的解决方案产品,例如电信的CN2网络。
CN2全称为中国电信下一代承载网,英文Chinatelecom Next Carrier Network,缩写为CNCN,进一步缩写为CN2。运营商提供的一种链路租用服务,本质是采用MPLS VPN隧道协议,用户无需关心两个IDC之间是通过什么方式传输,运营商会打通两端的三层网络,从而实现数据中心的互通。这种方式对于用户来说可以减少一定的维护能力,但是稳定性一般,综合成本较高。
b.第二种方式:专线+IP路由
各IDC采用专线打通网络,通过BGP协议宣告路由。
BGP 路由协议具备很强的路由策略控制能力,可以实现灵活的业务路由优先级调整及路由过滤,因此,骨干网络采用BGP 协议来承载业务路由,BGP也是目前主流的动态路由技术。
基于BGP 的团体属性,对骨干网的业务路由进行标识和策略控制,在业务中心或区域中心的接入路由器上对各类业务路由进行标识,并在骨干路由器和接入路由器上设置业务路由过滤策略和本地优先级策略,起到精确控制业务路由通告和学习的目的,实现前面所述的网络规划原则。并在此基础上同时保证路由策略部署的相对稳定性,增强了可扩展性。
团体属性设计,团体属性是骨干网路由规划的重要部分,网络中的路由策略都是基于BGP 团体属性来进行规划和部署的。因此,团体属性设计的好坏,直接关系到骨干网络的灵活性和扩展性。
网络系统的稳定可靠是应用系统正常运行的关键保证,在网络设计中应选用已规模商用的高可靠性网络产品,合理设计网络架构,制订可靠的网络备份策略,保证网络具有故障自愈的能力,最大限度地支持系统的正常运行,骨干网路由器设备本身必须达到99.999%可靠性要求,满足电信级业务承载的可靠性要求(50ms ~ 500ms),解决标准技术在扩展性、可部署性等方面的不足,降低运营维护成本、保障业务运营效果。
传统的故障检测技术是通过检测设备接口的状态来发现故障,这种方式只能检测简单的物理故障,而对于更深层的故障(如转发引擎故障、链路单通等)只能依靠上层的路由协议通过Keep alive或Hello报文来发现故障。这种机制不仅检测时间慢、开销大,而且存在应用场景的限制(不能跨协议)。
因此,为了提高IP/MPLS层的故障检测时间和效率,需要使用检测速度快、支持各种协议的故障检测机制。目前主要采用的机制是BFD技术。
BFD(Bi-directional Forwarding Detection)是一个简单的交互检测协议,用于快速检测系统之间的通信故障,并在出现故障时通知上层应用。
BFD具有如下特性:
可以对相邻转发引擎之间的通道提供轻负荷、快速故障检测。这些故障包括接口故障,数据链路故障,甚至有可能是转发引擎本身故障。BFD的故障检测时间一般在50ms以内。
提供一个单一的机制,能够用来对任何媒介、任何协议层进行实时地检测。实现BFD for Everything,例如IS-IS/OSPF、BGP、LSP、TE等等。
在目前网络中,BFD已经被广泛应用于各种链路、协议的故障检测。
传统的IP网络中,从检测出故障,到路由系统完成路由收敛,一般需要几秒钟的时间。对于网络上某些对延时、丢包等非常敏感的业务来说,这种收敛速度无法容忍。比如VoIP业务所能容忍的网络中断时间为毫秒级。
IP FRR特性能够保证转发系统快速地对于这种故障进行检测并采取措施,尽快让业务流恢复正常。
BGP FRR
骨干网建设需要采用BGP协议组网,而IGP /LDP FRR技术对链路故障的情况,可以做到快速的路径切换,但是当BGP节点发生故障时,需要BGP控制层面收敛,然后重新下转发表,收敛时间可能达到秒级,BGP 下一跳分离技术可以加快控制层面的收敛速度,但仍然无法达到电信级的可靠性要求。
BGP FRR技术采用转发层面的直接切换的方式, 将次优BGP邻居的LDP Label/BGP Label直接作为备份放置到转发表中,当BFD等快速检测机制检测到最优BGP邻居故障时,直接切换到备份的表项,实现业务的快速收敛。
在骨干承载网组建完后,可以划分不同的MPLS VPN,用来承载不同的业务,实现对业务的精细化管理,实现数据分实例分业务的二层通信。
网络可预见性:业务基于优先级分别承载于不同的VPN网,因此业务流量模
型甚至流量路径清晰固定,很容易评估出中的业务流量的规模、流量突发的情况以及业务对网络的要求,从而更好的规划骨干网络。另一方面,当网络发生故障时,可以清晰的评估出故障对哪些网络业务可能造成影响,影响的程度,且便于网络层面的故障定位;
高可用性:两个相对独立的转发平面和控制平面,将网络故障对业务的影响最大可能的隔离在本平面内部,减小了骨干网中设备、链路故障对整个骨干网的冲击;
可扩展性:可以根据不同的业务需求划分组建不同的VPN网,因此,具备很强的可扩展性。
优点:
1)通过路由策略实现精细化的路由管理,提升网络安全性;
2)通过BGP实现链路的高可用,提升网络稳定性。
缺点:
1)对网络技术能力要求高;
2)网络复杂后一旦出现故障排查难度较大;
c.第三种方式:IPsec VPN
以上两种方法都是通过架设专线方式打通企业总部与分支机构的通信。
IPsec VPN是给公司的总部和分支之间跨广域网实现透传的一个隧道技术,理论上这种技术是免费的(只需要具备公网带宽及能够配置VPN的设备),可以为企业节省一笔不小的开支,缺点就是实效性无法保障。
1.1.4. 问题排查与诊断
网络问题,对于日常应用访问速度、性能等关系甚大,基本上对于网络工程师、运维及技术开发,都是日常见面但又颇具挑战的工作,也几乎是大家的基本能力。尤其是对服务端工程师来说,一个功能上线后出了问题,能快速定位、排查、解决十分必要,这也是为什么经常面试时会考 HTTP、TCP协议相关的内容,你总要弄清楚网络传输的底层逻辑。
程序本身还好排查,主要是因为程序在自己服务器,只要定位到代码上,花时间总有希望搞定。
网络的难度,一方面是领域不同,开发工程师做开发已经很累,加上没有老司机带,通常对网络排查知之甚少。一方面网络是双方的事,也就是客户端和服务端,还包括中间路径上的设备等,“变量”更多。当然也有一波优秀的SRE(Server Restart Engineer),遇到问题先上重启大法,也许也能搞定不少问题。但是,根因依然是未知,即使问题暂时消失了,不知道什么时候,它又会再次到来,然后再次重启,所以能否快速解决网络问题将损失降到最小,就体现真正的技术实力了。
网络问题排查思路总结:
- 确认故障现象:先确定清楚故障现象,别上来听到反馈说网断了就是网络故障,这是非专业领域人的判断,你需要根据用户的反馈结合日志监控,监控告警等手段确定故障现象。慢卡断?域名解析错误?应用程序无法访问?
- 确定故障域:无线还是有线?内网还是外网?个别问题还是全局故障?
- 缩小问题范围:排查应用程序自身是否问题,例如内部访问,服务器访问,逐步缩小故障域。
- 确认变更情况:确认是否有异常的操作,排除人为操作引起;
- 确认监控信息:查看网络监控设备,是否有异常告警;
- 确认日志信息:查看网络日志,是否有异常日志;
下面介绍几个网络工程师常用的网络诊断工具:
tcpping 用于测试网络端口
测量到远程主机的网络延迟的一种常用方法是使用ping应用程序。该ping工具依赖 ICMP ECHO请求和回复数据包来测量远程主机的往返延迟。但是,在某些情况下,ICMP 流量可能会被防火墙阻止,这使得该ping应用程序对于受限制的防火墙后面的主机毫无用处。在这种情况下,你将需要依赖使用 TCP/UDP 数据包的第 3 层测量工具,因为这些第 3 层数据包更有可能绕过常见的防火墙规则。
windows下安装tcping插件
链接:https://pan.baidu.com/s/1gYAKBLIB1k9AzIhNnKVaCw
提取码:9bsl
linux下安装
wget http://www.vdberg.org/~richard/tcpping
cp tcpping /usr/bin/
chmod +x /usr/bin/tcpping
yum install bc -y
yum install tcptraceroute -y
tcpping 10.0.102.23 80
tracert用于网络路由追踪
可以探测网络的路由可达,便于网络诊断,一般建议在内网的设备上开启设备回显功能(默认关闭);
以H3C设备为例,开启ttl-expires,unreachables:
ip ttl-expires enable
ip unreachables enable
这里推荐一个小工具,叫BestTrace,可展示可视化路由,并识别运营商IP位置。
wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。
wireshark是开源软件,可以放心使用,官方下载网站: http://www.wireshark.org/
可以运行在Windows和Mac OS上,使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。
tcpdump 是linux下的网络分析工具。
安装tcpdump:
yum install tcpdump -y
例子:以下是tcpdump的其他一些示例
1、抓取包含10.10.10.122的数据包
tcpdump -i eth0 -vnn host 10.10.10.122
2、抓取包含10.10.10.0/24网段的数据包
tcpdump -i eth0 -vnn net 10.10.10.0/24
3、抓取包含端口22的数据包
tcpdump -i eth0 -vnn port 22
4、抓取udp协议的数据包
tcpdump -i eth0 -vnn udp
5、抓取icmp协议的数据包
tcpdump -i eth0 -vnn icmp
6、抓取arp协议的数据包
tcpdump -i eth0 -vnn arp
7、抓取ip协议的数据包
tcpdump -i eth0 -vnn ip
8、抓取源ip是10.10.10.122数据包。
tcpdump -i eth0 -vnn src host 10.10.10.122
9、抓取目的ip是10.10.10.122数据包
tcpdump -i eth0 -vnn dst host 10.10.10.122
10、抓取源端口是22的数据包
tcpdump -i eth0 -vnn src port 22
11、抓取源ip是10.10.10.253且目的ip是22的数据包
tcpdump -i eth0 -vnn src host 10.10.10.253 and dst port 22
12、抓取源ip是10.10.10.122或者包含端口是22的数据包
tcpdump -i eth0 -vnn src host 10.10.10.122 or port 22
13、抓取源ip是10.10.10.122且端口不是22的数据包
tcpdump -i eth0 -vnn src host 10.10.10.122 and not port 22
14、抓取源ip是10.10.10.2且目的端口是22,或源ip是10.10.10.65且目的端口是80的数据包。
tcpdump -i eth0 -vnn \( src host 10.10.10.2 and dst port 22 \) or \( src host 10.10.10.65 and dst port 80 \)
15、抓取源ip是10.10.10.59且目的端口是22,或源ip是10.10.10.68且目的端口是80的数据包。
tcpdump -i eth0 -vnn ‘src host 10.10.10.59 and dst port 22’ or ‘ src host 10.10.10.68 and dst port 80 ‘
16、把抓取的数据包记录存到/tmp/fill文件中,当抓取100个数据包后就退出程序。
tcpdump –i eth0 -vnn -w /tmp/fil1 -c 100
17、从/tmp/fill记录中读取tcp协议的数据包
tcpdump –i eth0 -vnn -r /tmp/fil1 tcp
18、从/tmp/fill记录中读取包含10.10.10.58的数据包
tcpdump –i eth0 -vnn -r /tmp/fil1 host 10.10.10.58