基于 BPF 技术的 Cilium 项目简介

什么是 Cilium

Cilium 是一个基于 BPF (Berkeley Packet Filter)的开源高性能容器网络方案,用于透明地保护在 Docker 和 Kubernetes 等容器平台部署的应用程序服务之间的网络连接。

Cilium 一年多前才推出,社区却相当活跃,成员有来自 Google、Facebook、Netflix、Red Hat 等公司的开 发人员(为什么是这几家大厂,我们后文详解),前几天还刚刚发布了 1.6 版本,据称可以 100%替换 kube-proxy。总之越来越多的人关注到这一项目。

为什么需要 Cilium

现代数据中心系统已变迁至“微服务”架构,大型应用程序被分成小的独立服务,这些服务使用 HTTP 等轻量级协议通过 API 相互通信。微服务往往是高度动态的:随着负载的变化,上层应用扩展或收缩伴 随底层容器的启动或销毁,这整个过程则是持续交付的一部分。

这一高度动态的变化,对于确保微服务之间的连通性提出了挑战。传统的 Linux 网络安全方法(如 iptables)通过 IP 地址和端口进行过滤,但容器不稳定的生命周期导致 IP 地址在微服务环境中难以跟 踪。同时,负载平衡策略和访问控制列表增长迅速,某些案例中甚至达到数十万条规则的规模。常用的 服务端口(如 HTTP 的 TCP 80)无法根据安全要求区分应用流量,因为这些端口用于跨服务的各种消息。

缺乏准确的可见性也是一个问题,因为作为传统系统识别标记的 IP 地址,在微服务架构中可能仅仅存在几秒钟。

Cilium 主要功能

Cilium 可以透明地插入安全可见性和策略强制性。相对于传统系统的 IP 地址,它基于 service/pod/container 标识,并在应用层(如 HTTP)过滤。

其重要功能特性包括:

  • 安全上,支持 L3/L4/L7 安全策略,这些策略按照使用方法又可以分为:
    • 基于应用协议(允许特定 HTTP 请求,或允许特定 service 生成或消费特定的 Kafka topic)
    • 基于身份(Identity)
    • 基于标签
    • 基于 CIDR
  • 网络上,支持 Layer 3 三层网络,如:
    • 覆盖网络(Overlay),包括 VXLAN 和 GENEVE
    • 原生路由网络(Native Routing),包括原生的 IPv6 网络和云服务商的高级网络路由
    • 负载均衡
    • 便利的监控和排错能力

从 BPF 到 Cilium

Cillium 基于 BPF,官网称其为”a new Linux kernel technology”,其实不然。

BPF 的设计,最早可以追溯到 1992 年的一篇论文:The BSD Packet Filter: A New Architecture for User-level Packet Capture。由于最初版本的 BPF 是实现于 BSD 系统的,于是在论文中作者称之为”BSD Packet Filter”。

知道 BPF 的人或许不多,但是基于 BPF 技术(libpcap)的两大抓包工具 tcpdump 和 Wireshark,知道的 人就很多了,这两个都是网络工程师和系统运维的必备工具。

BPF 是 Linux 内核中的一个高性能沙盒(sandbox)虚拟机。Linux 内核本质上是事件驱动的,BPF 提供了

在事件发生时运行指定的 BPF 程序的能力(可编程)。例如,我们可以在以下事件发生时运行我们的 BPF 程序:

  • 应用发起 read/write/connect 等系统调用
  • TCP 发生重传
  • 网络包达到网卡

“内核级”三个字往往还意味着高性能,官方性能测试比较如下图:

注:Cilium 实际使用的是 eBPF(extended BPF),它是早期的 BPF 一路技术演进而来。

除了上面说的 tcpdump 和 Wireshark,很多大公司也在各自场景中使用或融合了 BPF 技术:

BPF 牵涉到非常底层的技术,那么必须得了解所有这些细节才能使用 BPF 吗?有了 Cilium 后,我们就可 以大胆地说 No 了。这也是项目组创建 Cilium 的原因。

Cilium 项目非常年轻,大多数运维团队可能不会现阶段就将生产环境中的 kube-proxy 替换掉。但如果想 通过 Cilium 来研究 BPF 的技术和理念,还是非常不错的。哪一天几大容器平台直接把它给整合进去了也 说不定。就像因为性能问题,Kubernetes 的 Service 从 1.9 版本起将 iptables 换成了 LVS。

期待 Cilium 项目能越来越完美!

 1,532 total views,  2 views today

几款网络拓扑自动生成工具的比较

最近需要接手一个比较复杂的办公网,整个Intranet最大时有近万人的规模。但是以往文档交接并不完善。于是就考虑找一款合适的工具,来爬一下目前网络拓扑大致是什么样的。

国内主流监控工具之一的Zabbix有Maps功能,但是必须手动编辑,不适合这次的需求。笔者早期曾用过的OpenNMS可以自动生成网络图,但是同样作为全功能的NMS,部署有点“重”。就又找了几款这几年发展不错或新出的独立网络拓扑生成工具,来比较一下:

SolarWinds的工具一贯都在水准以上,特别是NetFlow Traffic Analyzer (NTA)这款流量分析器,是笔者目前所知唯一官方支持华为NetStream协议的工具。可惜就是收费,先放着看后面有没更好的。

NetXMS部署困难,捣鼓一上午在我的Ubuntu测试机上还没跑起来…且不止我一个人这么觉得。也放在一边。

NeDi和Netdisco在reddit上的评价都不错,于是就一起测试了一下。结论是NeDi明显好出一截。无论是设备信息的详尽程度和对网络邻居图的思考维度,都要比Netdisco更专业。尤其是Netdisco在网络图上思考维度的缺失,导致其在大型网络下的这一功能几乎不可用(后文配图说明)。

Inventory列表两者差不多:

设备详情:

网络拓扑图(邻居图):

可以看到,NeDi是通过Range来控制拓扑层级的,而Netdisco只有Only Neighbors和All Devices可选,网络规模一大,可读性就降低了。

再加上Nedi拥有更多的显示项开关(IP、接口、带宽等),同样也支持D3js的图形拖拽操作,还自带一定的监控功能,性能也更快一些。综合来看,Nedi的完成度是最高的。

大家如果有更好的工具推荐,也欢迎留言~

 3,272 total views,  12 views today

Zabbix、Grafana添加95th Percentile Lines

95计费 (95th Percentile Charging),指在一个计费周期内,将全部计费点的带宽值由高到低倒序后,移除5%的那些高点,剩下数据点中的最高的带宽值就是计费的带宽。

以1个月30天为例,默认均为有效取值点:每5分钟1个带宽取值点,每小时12个带宽取值点,每月取值点数为:12 × 24 × 30 = 8640个,去掉前5%的点 8640 × 5% = 432 个,即第433个点为计费点。

而432个不计费的点,等效于36个小时(432 × 5分钟 / 60分钟 / 小时 = 36小时),即每月不超过36小时的异常大带宽(流量),不影响本月的计费。

Zabbix添加95th Percentile趋势线的讨论帖较少,那是因为官方直接就做成了可勾选开启的选项,方便了管理员:

进入Host > Graph:

效果如图:

Cacti配置方法可参考:Cacti95计费配置 (P.S. 博主是位Zabbix专家,有很多好的帖子和插件)

Grafana的配置方法还在研究ing…

 2,122 total views,  5 views today

基于ELK的NetFlow/sFlow流量分析系统

最近接手的IDC运维工作,发现原团队没有好的流量分析系统,以往突发案件需要在出口出的一台机器上抓包分析,缺少历史记录和趋势分析。遂考虑用ELK来建一套。

一阵捣鼓后,发现GitHub上已有成熟的项目了:https://github.com/robcowart/elastiflow

安装过程不复杂,这里记录一下发现的一个bug:锐捷和H3C设备只支持sFlow,用最新版本的LogStash会出现如u0000、u0005、u0000L等乱码。

一阵Google后,降级到7.3版本,问题解决。

 4,449 total views,  4 views today

企业应如何选择SD-WAN产品?

什么是SD-WAN

SD-WAN(软件定义广域网)是构建广域网的一种新方法,通过将网络硬件与控制功能分离(解耦),简化了WAN的管理和操作。这一概念与SDN(软件定义网络)通过虚拟化技术改善数据中心管理和操作的原理类似,但SDN是对现有网络架构的全面革新,而SD-WAN则像是增量变化,现有WAN架构可以方便地新增SD-WAN功能。这种方法解决了传统广域网对带宽成本、部署和重新配置所需时间等问题的担忧,因此SD-WAN在企业中更易推广,特别是分支机构较多的企业。知名IT咨询公司Gartner在2018年预测,至2023年超过90%的WAN边缘基础设施的更新计划将基于vCPE(虚拟化用户终端设备)或SD-WAN方案。

SD-WAN是SDN(软件定义网络)技术的重要分支,也是现阶段商业上最成功的SDN应用。对于原先重度依赖昂贵的MPLS技术组网的企业用户,迁移至基于Internet宽带的SD-WAN带来的投资回报率是非常高的。当然不是所有的场景都适用单一Internet宽带接入,对于VoIP或远程视频这样对延时、丢包、抖动(jitter)非常敏感的应用,仍需考虑将MPLS或专线整合进SD-WAN方案中。

传统WAN组网方式的问题

长久以来,企业通常依赖如下几种方式来组建WAN:

  • 点对点专线

企业与ISP服务商签订合同,总部与分支机构间通过光纤直接互连,适合部署规模不大的场景。当节点数上升到一定程度时,无论是采用全网状拓扑(费用高)还是星型拓扑(中心节点带宽阻塞)来部署,都会遇到实际的限制。由于理论上这条专线是申请企业独享,因此通常不需要在合同中对QoS等级进行约定。

(点对点)

(星型拓扑)

(全网状拓扑)

  • MPLS VPN

企业与ISP服务商签订合同,在每个用户节点部署MPLS路由器(即CE路由器),与运营商的PE路由器相连。由于服务商PE路由器间是近乎全网状的拓扑,因此每个用户节点的CE只需和所在地最近的PE互连,就可以与所有节点互通。显然,PE路由器间传输的流量不单只有该企业一家,因此通常需要在合同中对QoS等级进行约定,以确保在CE路由器上标记了高等级的数据包能够在PE间被优先转发。以中国电信为例,其QoS等级分钻石、白金、金、银、铜5个等级,满足客户不同应用的指标要求。

  • IPSec VPN

基于Internet宽带的IPSec VPN,通常在办公室出口防火墙上进行配置。成本低、部署快、配置灵活,适合对延时、丢包不敏感的场景。实际部署中,也可以通过BGP、OSPF等路由协议配置成MPLS专线的冗余线路。但IPSec VPN最大的问题是Internet上的QoS无法保证。不像MPLS VPN,运营商不会在合同中约定QoS等级,技术上暂时也无法实现。

需要说明的是,虽然IPSec VPN方案同样相当便宜,但是当节点数非常多的时候,全网状拓扑的IPSec VPN网络全靠人工手动配置已不现实,非常依赖防火墙设备厂商提供更为智能化的配置功能,例如Cisco DMVPN、Fortinet ADVPN等功能。(传送门:Technical Note: Fortinet Auto Discovery VPN (ADVPN)

SD-WAN如何工作

SD-WAN支持多种连接方式,如Internet宽带、MPLS、专线、4G/LTE等。其利用相对廉价的Internet宽带线路来承载原先在MPLS网络中传输的全部或大部分流量,而低延时低丢包率需求的流量仍通过MPLS或专线传输。大部分厂家的SD-WAN产品还支持4G/LTE的接入,以作备用线路(低延时高带宽的5G到来后,说不定可以作为主力)。

SD-WAN将底层硬件与管理功能分开后,通常会提供一个集中的控制器来管理WAN连接,设置应用流量策略和优先级,监测WAN连接可用性等。对于应用程序来说,不需要了解底层的WAN连接究竟是什么。例如,假设同时连接了MPLS和Internet,那么可以将一些重要的应用流量,例如VoIP和远程视频分流到MPLS,以保证应用的可用性;对于一些对带宽或者稳定性不太敏感的应用流量,例如文件传输,可以分流到Internet上。

需要说明的是,上述案例中的SD-WAN设备供应商可能会要求MPLS接入也选用其服务(即无法利用原有的MPLS网络),否则Internet线路中断后,SD-WAN终端设备可能无法与“云”上的中央控制器通讯(MPLS通常都是私有网络)。当然4G/LTE也是一条备用通道,但是一般都需要额外收费,同时带宽和延时也无法保证。不过相信等到2020年5G网络的全面商用后,应该会有更经济的故障转移方案。

SD-WAN的优势

概括来说,SD-WAN在成本、敏捷性和灵活性、可见性和可控制性方面为企业带来优势。

低成本

SD-WAN带来的低成本优势体现在两个方面。一是替换或部分替换MPLS专线带来的费用节省,同比例带宽情况下,每年可节省30%-70%的带宽费用。同时对于零售、餐馆、医疗保健、加盟店这类场景中的小型门店,入门级SD-WAN网关设备的价格也比常见的支持IPSec VPN自动组网的网络防火墙价格要低。一些基于ARM架构的SD-WAN网关小盒子,批量采购价甚至能低至数百元。

另外,运营成本也降低了。传统WAN组网需要高级网络工程师的参与和后期维护,现阶段的SD-WAN技术仍无法完全消除这一需求,但它能通过简化部署和管理来最大化人力和工程资源(更少的人管理更多的设备)。部分集成了安全功能(防病毒、IPS/IDS、URL过滤等)的SD-WAN方案可以进一步节省硬件和管理成本,网络防火墙、安全网关、WAN路由器全都整合进了SD-WAN设备中。

敏捷性和灵活性

SD-WAN允许IT部门更快地响应业务需求。市场风云变幻,企业迫切需要快速开辟一个分支机构,但新申请一条MPLS线路可能需要1-3个月。SD-WAN借助Internet宽带可以在几小时至2周(新申请Internet线路的时间)内部署完成。如果厂商提供4G/LTE甚至未来5G接入的话,开通速度还能更快,因为不需要向运营商申请光纤资源。

MPLS通常需要拥有专业知识的网络工程师现场配置网络设备,但SD-WAN可通过零接触配置(Zero Touch Provisioning)功能使设备自动注册到中央控制器,并快速上线。

可见性和可控制性

获得对WAN上流量的可见性是获得控制权的第一步。由于所有的SD-WAN终端都会注册到中央控制器,管理员可以天然地获得全局网络可视性。而在传统WAN架构中,这一视图可能需要额外的应用程序和时间成本来部署实现。

主流的SD-WAN解决方案不仅提供深入的应用程序智能,还使IT人员能够将应用程序优先级、性能与业务意图保持一致。企业可以从对传统应用和云应用的高度可见性中受益,并获得分配策略以保护和控制所有WAN流量的能力:

SD-WAN架构和部署方法

除了Cisco、VMware、Silver Peak这些国外头部玩家,光国内就至少有几十家在做SD-WAN产品的厂家。由于最初是由技术推动的应用(而不是厂商联盟),行业内并没有统一的定义,各行业分析咨询机构如IDC、Gartner等都有着不同的定义和标准。

Gartner最新WAN边缘架构魔力象限图

既然没有一个实际的标准衡量,每家的技术差别很大,实现方式和功能千差万别,要理顺他们殊为不易。有些是传统UTM或NGFW防火墙新增了SD-WAN功能,有些是原本做WAN优化(广域网加速)的厂商转型,有些是公有云厂商利用天然的机房资源和带宽优势试水SD-WAN。因此,小编准备在下一篇文章中再来为大家详细介绍。各位如果对某一家厂商的SD-WAN产品特别感兴趣,也可以给小编留言。我们下期再见吧:)

 1,068 total views