解决方案
通过 MQC 的 Traffic Behavior 的 redirect ip-nexthop 实现策略路由:
[RTA] traffic behavior to-isp14
[RTA-behavior-to-isp14] redirect ip-nexthop 10.0.14.4
注意事项
在 Traffic Classifier 中,如果通过 ACL 抓取流量,要注意 ACL 默认行为。[……]
解决方案
通过 MQC 的 Traffic Behavior 的 redirect ip-nexthop 实现策略路由:
[RTA] traffic behavior to-isp14
[RTA-behavior-to-isp14] redirect ip-nexthop 10.0.14.4
注意事项
在 Traffic Classifier 中,如果通过 ACL 抓取流量,要注意 ACL 默认行为。[……]
问题描述
当前网络以同,但由于配置 AR1 等价路由,所以在 PC1 / PC2 中 ping 8.8.8.8 或许到达 AR4 设备或 AR5 设备
我们希望实现: 1)VLAN 10 通过 10.0.14.0/24 去往 AR4 8.8.8.8 地址 2)VLAN 20 通过 10.0.14.0/24 去往 AR3 8.8.8.8 地址
解决方案
// Traffic Classifier Configuration
[RTA] acl number 3010
[RTA-acl-adv-3010] rule 2 permit ip source 192.168.10.0 0.0.0.255 destination 0.0.0.0 0
[RTA] acl number 3020
[RTA-acl-adv-3020] rule 2 permit ip source 192.168.20.0 0.0.0.255 destination 0.0.0.0 0
[RTA] traffic classifier from-lan10
[RTA-classifier-from-lan10] if-match acl 3010
[RTA] traffic classifier from-lan20
[RTA-classifier-from-lan20] if-match acl 3020
// Traffic Behavior Configuration
[RTA] traffic behavior to-isp13
[RTA-behavior-to-isp13] redirect ip-nexthop 10.0.13.3
[RTA] traffic behavior to-isp14
[RTA-behavior-to-isp14] redirect ip-nexthop 10.0.14.4
// Traffic Policy Configuration
[RTA] traffic policy isp-selection
[RTA-trafficpolicy-isp-selection] classifier from-lan10 behavior to-isp14
[RTA-trafficpolicy-isp-selection] classifier from-lan20 behavior to-isp13
[RTA] interface GigabitEthernet 0/0/0
[RTA-GigabitEthernet0/0/0] traffic-policy isp-selection inbound
如果存在内网服务器
配置方法与上面类似,但是要单独处理内网间的流量,即内网间的流[……]
问题描述
内网存在两个网段,网段 1:10.1.1.0/24,网段 2:10.1.2.0/24,在 RTA 的 GE0/0/0 接口部署 PBR,实现网段 1 访问 Internet 通过 ISP1、网段 2 访问 Internet 通过 ISP2;
RTA 上旁挂了一台服务器,要求在 RTA 上部署的策略路由不影响内网用户访问该服务器;
解决方案
// 10.1.1.0
[RTA] acl number 3000
[RTA-acl-adv-3000] rule 1 deny ip source 10.1.1.0 0.0.0.255 destination 10.1.3.254 0 # 放行去往 Server 的流量
[RTA-acl-adv-3000] rule 2 permit ip source 10.1.1.0 0.0.0.255 destination 0.0.0.0 0
[RTA] policy-based-route hcip permit node 10
[RTA-policy-based-route-hcip-10] if-match acl 3000
[RTA-policy-based-route-hcip-10] apply ip-address next-hop 202.1.2.3
// 10.1.2.0
[RTA] acl number 3001
[RTA-acl-adv-3001] rule 1 deny ip source 10.1.2.0 0.0.0.255 destination 10.1.3.254 0
[RTA-acl-adv-3001] rule 2 permit ip source 10.1.2.0 0.0.0.255 destination 0.0.0.0 0
[RTA] policy-based-route hcip permit node 20
[RTA-policy-based-route-hcip-20] if-match acl 3001
[RTA-policy-based-route-hcip-20] apply ip-address next-hop 154.1.2.3
// Interface PBR
[RTA-GigabitEthernet0/0/0] ip policy-based-route hcip[……]
问题描述
随着网络的不断发展,网络规模及流量类型的不断增加,使得互联网流量激增,产生网络拥塞,增加转发时延,严重时还会产生丢包,导致业务质量下降甚至不可用;
IP 网络刚出现的时候,没有服务质量保证。你只知道报文发出去了,至于能不能到,什么时候到,就靠运气了。传统网络,尽力而为。在传统的 IP 网络中,所有的报文都被无区别的等同对待,每个转发设备对所有的报文均采用先入先出的策略进行处理,它尽最大的努力(Best-Effort)将报文送到目的地,但对报文传送的可靠性、传送延迟等性能不提供任何保证;
所以,要在 IP 网络上开展这些实时与非实时业务,就必须解决网络拥塞问题,而解决网络拥塞的最直接的办法就是增加网络带宽,但从网络的建设成本考虑,这是不现实的;
为了支持具有不同服务需求的语音、视频以及数据等业务,要求网络能够区分出不同的通信,进而提供相应的服务。例如 VoIP 等实时业务就对报文的传输延迟提出了较高要求,如果报文传送延时太长,用户将不能接受(相对而言,E-Mail 和 FTP 业务对时间延迟并不敏感);
网络发展日新月异,随着 IP 网络上新应用的不断出现,对 IP 网络的服务质量也提出了新的要求。随着技术的进步、竞争的加剧,客户的要求越来越高,网络提供有质量保证的服务是大势所趋;
传统 IP 网络的尽力服务不可能识别和区分出网络中的各种通信类别,而具备通信类别的区分能力正是为不同的通信提供不同服务的前提,所以说传统网络的尽力服务模式已不能满足应用的需要;
解决方案
QoS(Quality of Service,服务质量)技术就是在这种背景下发展起来的。QoS 用于评估服务方满足客户服务需求的能力。
在带宽有限的情况下,该技术应用一个“有保证”的策略对网络流量进行管理,并实现不同的流量可以获得不同的优先服务。针对各种应用的不同需求,为其提供不同的服务质量;
QoS 旨在针对各种应用的不同需求,为其提供不同的服务质量。如: 1)可以限制骨干网上 FTP 使用的带宽,也可以给数据库访问以较高优先级; 2)对于 ISP,其用户可能传送语音、视频或其他实时业务,QoS 使 ISP 能区分这些不同的报文,并提供不同服务; 3)可以为时间敏感的多媒体业务提供带宽和低时延保证,而其他业务在使用网络时,也不会影响这些时间敏感的业务;
应用场景
通过配置QoS,对企业的网络流量进行调控,避免并管理网络拥塞,减少报文的丢失率,同时也可以为企业用户提供专用带宽或者为不同的业务(语音、视频、数据等)提供差分服务。
在企业广域互联场景下,QoS一般被部署在出口链路上。 通过部署QoS技术能保障高价值业务的带宽与时延。[……]
影响 QoS 的因素
带宽(Bandwidth):网络中 IP 包的传输速率,可用平均速率或峰值速率来表征。——带宽竞争,可以通过增大带宽来解决,但不能无限增大;
延迟 (Latency):在两个参考点间,某一 IP 包从发送到接收间的时间间隔。——时延敏感流量,如视频、语音等;
时延抖动 (Jitter):沿同一路径传输的一个数据流(Stream)中,不同分组传输延迟的变化。——与时延相关,时延小则抖动的范围小,对语音、视频等实时业务影响大;
丢包率(Packet Loss):某一业务在网络中传输时,可允许的最大丢包率。——衡量网络可靠性,少量丢包对业务的影响不大,但大量丢包会严重影响传输效率;
可用性(Availability):用户与 IP 业务连接的可靠性,包括建立时间、保持时间等;[……]
QoS 服务模型
通常 QoS 提供以下三种服务模型:
Best-Effort service(尽力而为服务模型)
应用程序可以在任何时候,发出任意数量的报文; 网络尽最大的可能性来发送报文。对时延、可靠性等性能不提供任何保证;
Best-Effort 是最简单的服务模型; 应用程序可以在任何时候,发出任意数量的报文,而且不需要事先获得批准,也不需要通知网络; 对 Best-Effort 服务,网络尽最大的可能性来发送报文。但对时延、可靠性等性能不提供任何保证; Best-Effort 服务是现在 Internet 的缺省服务模型,它适用于绝大多数网络应用,如 FTP、E-Mail 等,它通过 FIFO 队列来实现;
Integrated service(综合服务模型,简称 IntServ)
应用程序在发送报文前,需要向网络申请特定的服务; 网络在收到应用程序的资源请求后,通过交换 RSVP 信令信息,为每个信息流预留资源;
IntServ 是一个综合服务模型,它可以满足多种 QoS 需求; 这种服务模型在发送报文前,需要向网络申请特定的服务。这个请求是通过信令 RSVP 来完成的,RSVP 是在应用程序开始发送报文之前来为该应用申请网络资源的; 一旦网络确认为应用程序分配资源,则网络将为每个流(Flow,由两端的 IP 地址、端口号、协议号确定)维护一个状态,并基于这个状态执行报文的分类、流量监管、排队及其调度。应用程序在收到网络的确认信息(即确认网络已经为这个应用程序的报文预留了资源)后,才开始发送报文。只要应用程序的报文控制在流量参数描述的范围内,网络将承诺满足应用程序的 QoS 需求; 小例子:就好比你要预定车辆,需要事先申请,声明想要什么样的服务,在资源满足的情况下,预留资源以满足该请求; 但是这样也有一个缺点,车辆服务方要为此维护大量的订车信息;
缺点:实现较复杂;当无流量发送时,仍然独占带宽,使用率较低;该方案要求端到端所有节点设备都支持并运行 RSVP 协议;
Differentiated service(区分服务模型,简称 DiffServ)
将网络中的流量分成多个类,然后为每个类定义相应的处理行为,使其拥有不同的优先转发、丢包率、时延等;
DiffServ 是一个多服务模型,它也可以满足不同的 QoS 需求。该模型目前 IP 网络广泛使用;
应用程序在发出报文前,不需要通知网络为其预留资源。对 DiffServ 服务模型,网络不需要为每个流维护状态,它根据每个报文的差分服务类(各报文头中的差分服务标记字段,如 IP 头的 DS Field),来提供特定的服务;
其实就是将网络中的流量分成多个类,不同的类采用不同的处理。也就是说,先[……]
常用技术
流量监管 and 流量整形
通过监督进入网络的流量速率,用来限制流量及其资源的使用,保证更好的为用户提供服务;
拥塞避免 and 拥塞管理
拥塞是在共享网络上多个用户竞争相同的资源(带宽、缓冲区等)时发生的问题。例如,由于广域网的带宽通常要比局域网的带宽小,当一个局域网的用户向另一个局域网的用户发送数据时,由于广域网的带宽小于局域网的带宽,数据将不可能按局域网发送的速度在广域网上传输。此时,处在局域网和广域网之间的路由器将发生拥塞;
拥塞经常发生于如图所示的情况: 1)速率不匹配:分组从高速链路进入设备,再由低速链路转发出去; 2)汇聚问题:分组从多个接口同时进入设备,由一个没有足够带宽的接口转发出去;
过度的拥塞会对网络资源造成损害,并引发系列的负面影响: 1)拥塞增加了报文传输的延迟和延迟抖动。 2)过高的延迟会引起报文重传。 3)拥塞使网络的有效吞吐率降低,造成网络资源的损害。 4)拥塞加剧会耗费大量的网络资源(特别是存储资源),不合理的资源分配甚至可能导致系统陷入资源死锁而崩溃。
拥塞的影响:拥塞使流量不能及时获得资源,是造成服务性能下降的源头。然而在分组交换以及多用户业务并存的复杂环境下,拥塞又是常见的。因此采取有效的避免拥塞以及防止拥塞加剧的方法是必需的。
拥塞的管理和对策:在满足用户对服务质量要求的前提下尽可能地充分利用网络资源。通常用如下两种策略来缓解网络拥塞: 1)拥塞避免:通过监视网络资源(如队列或内存缓冲区)的使用情况,在拥塞有加剧的趋势时,主动丢弃报文,通过调整网络的流量来解除网络过载的一种流量控制机制。拥塞避免用于防止因为线路拥塞而使设备的队列溢出。通常作用在接口出方向; 2)拥塞管理:指网络在发生拥塞时,如何进行管理和控制。通过调整报文的调度次序来满足时延敏感业务高 QoS 服务。当网络中发生拥塞时,设备按照一定的调度策略决定报文的转发次序,使关键业务得到优先处理,或者主动丢弃报文,通过调整网络流量来解除网络过载;
数据处理流程
QoS 技术提供下述功能:
1)流量分类和标记(Classification and Marking): 依据一定的匹配规则识别出对象,是有区别地实施服务的前提,通常作用在接口入方向;
2)令牌桶(Token Bucket): 使用令牌桶对流量进行评估,是否满足报文转发的条件; 流量监管和流量整形均会用到令牌桶技术;
3)流量监管(Traffic Policing): 通过监控进入网络的某一流量的规格,限制它在一个允许的范围之内。若某个连接的报文流量过大,就丢弃报文,或重新设置该报文的优先级(比如限制HTTP报文不能占用超过50%的网络带宽),以保护网络资源和运营商的利益不受损害 对进入[……]
简单流分类是指采用简单的规则(如 只根据 IP 报文的 IP 优先级或 DSCP 值、IPv6 报文的 TC 值、MPLS 报文的 EXP 域值、VLAN 报文的 802.1p 值),对报文进行粗略的分类,以识别出具有不同优先级或服务等级特征的流量,实现外部优先级和内部优先级之间的映射;
简单流分类过程实际上就是信任端口的上行报文携带的优先级标记,并进行优先级映射(即根据优先级映射表,将上行报文携带的 QoS 优先级统一映射到设备内部的服务等级和颜色,将下行报文的内部的服务等级和颜色映射成为 QoS 优先级);
不同的报文使用不同的 QoS 优先级,例如 VLAN 报文使用 802.1p,IP 报文使用 DSCP,MPLS 报文使用 EXP;
为了保证不同报文的服务质量 1)报文在进入设备时,需要将报文携带的 QoS 优先级统一映射到设备内部的服务等级 Service Class(亦称调度优先级 PHB)和丢弃优先级(亦称颜色 Color) 2)报文在设备内部时,根据报文的服务等级进行拥塞管理,根据报文的颜色进行拥塞避免; 3)报文在发出设备时,需要将内部的服务等级和颜色映射为 QoS 优先级,以便后续网络设备能够根据 QoS 优先级提供相应的服务质量;
外部优先级间
报文头优先级:不同的报文,使用不同的 QoS 优先级(外部优先级)
外部优先级 – VLAN 报文
以太网在以太网帧头的 VLAN TAG 中定义了 8 种 PRI(业务优先级):
外部优先级 – MPLS 报文
对于 MPLS 报文,通常将标签信息中的 EXP 域作为 MPLS 报文的外部优先级,用来区分数据流量的服务等级;
外部优先级 – IP 报文
IPv4 报文在 IP 报文头的 ToS 中的 Precedence 字段域中定义了 8 种 IP 业务类型; 后对 IPv4 报文头的 ToS 字段进行了重新定义,称为 DS(Differentiated Services)字段,即对 IP-Precedence 字段进行了扩充;
RFC 1349 IP Precedence
RFC 2474 DSCP
各外部优先级间的对应关系
服务等级 (Service Class)
Service Class:报文在设备内部的服务等级(内部优先级)
服务等级,即队列
Service Class 是指报文在设备内部的服务等级,支持 8 种取值,优先级从高到低依次为 CS7、CS6、EF、AF4、AF3、AF2、AF1、BE;
Service Class 决定了报文在设备内部所属的队列类型; 服务等级的高低取决于具体的队列调度算法配置:[……]
问题描述
通过边缘网络设备连接广域网和局域网,局域网的带宽(100 Mbps)通常比广域网(2 Mbps 或更低)高; 当局域网用户试图通过广域网发送大量数据时,在网络边缘就会发生拥塞;
解决方案
这种情况下,可以在网络边缘的入口处进行流量监管,限制大流量数据的速率;
通过监控进入网络的某一流量的规格,限制它在一个允许的范围之内,若某个连接的报文流量过大,就丢弃报文,或重新设置该报文的优先级,以保护网络资源不受损害;
流量监管可配置在设备的接口 进方向 / 出方向;
原理简述
流量监管采用承诺访问速率 CAR 来对流量进行控制,CAR 使用令牌桶算法进行流量速率的评估,衡量每个数据报文是超过还是遵守所规定的报文速率,依据评估结果,实施预先设定好的监管动作;
CAR 两个功能
流量速率限制:通过使用令牌桶对流经端口的报文进行度量,使得在特定时间内只有得到令牌的流量通过,从而实现限速功能; 流分类:通过令牌桶算法对流量进行测量,根据测量结果给报文打上不同的流分类内部标记(包括服务等级与丢弃优先级)
CAR 处理流程
当报文到来时,首先检查端口的匹配规则,如果匹配上了,则进行速率控制,报文进入令牌桶中进行流量速率评估; 令牌桶评估后,报文被标记为红、黄、绿三种颜色。 1)红色表示报文速率过大,不符合规定,直接丢弃; 2)黄色表示虽然不符合规定,但允许临时的突发,重新标记后,降低优先级进行尽力而为转发; 3)绿色表示符合规定,直接转发;
三种令牌桶类型,均可以使用
1)如果只是为了限制带宽,使用单速单桶;
2)如果在限制带宽的基础上,还要对输入流量的突发情况进行区分,做不同的标记处理,则使用单速双桶。注意:标记为 yellow 的动作一定要同标记为 green 的配置的不一样,否则限速效果与单速单桶一样;
3)如果在限制带宽的基础上,还要对输入流量的带宽情况进行区分,区分出带宽是小于 CIR 还是在 CIR~PIR 之间,则使用双速双桶。注意:标记为 yellow 的动作也要同标记为 green 的动作配置得不一样,否则限速效果与单速单桶一样;
特性特征
丢弃超额流量或将超额流量重标记为低优先级量 不需要额外的内存资源,不会带来延迟和抖动 丢包可能引发重传 可以重标记流
应用场景
在企业网络中
一般用于控制进方向流量,防止过多流量进入设备。对于时延敏感流量(如:视频、语音),推荐使用
存在语音、视频和数据等多种不同的业务,当大量的业务流量进入网络侧时,可能会因为带宽不足产生拥塞,需要对三种业务提供不同的保证带宽,优先保证语音业务的带宽,其次是视频业务,最后是数据业务,因此可以对不同业务进行不同的[……]
解决方案
拥塞避免是指通过监视网络资源(如队列或内存缓冲区)的使用情况,在拥塞有加剧的趋势时,主动丢弃报文,通过调整网络的流量来解除网络过载的一种流控机制;
原理简述
其本质为丢弃报文:如果拥塞加剧,主动丢弃未进入队列的报文
特性特征
WIP
应用场景
各地用户有可能向同一台服务器上传数据,因此用户与服务器之间的通信会经过广域网,由于广域网带宽小于局域网的带宽,位于广域网和局域网之间的边缘设备将可能发生拥塞,此时可以通过配置拥塞避免,主动丢弃优先级较低的报文(比如数据报文等),减少网络的拥塞,保证高优先级业务正常运行;
丢弃策略
尾丢弃 (Tail Drop)
由于每个队列长度有限,当某一队列已经被装满时,传统的处理方法会将后续向该队列发送的报文全部丢弃,直至拥塞解除,这种处理方式称为尾丢弃(Tail Drop)
当队列的长度达到最大值后,所有新入队列的报文(缓存在队列尾部)都将被丢弃,这将导致: 1)TCP 全局同步现象:其主要原因在于 Tail-Drop 的无差别丢弃,导致所有 TCP 连接同时受到影响; 2)无差别丢弃:尾丢弃无法对流量进行区分,很可能导致大量非关键数据被转发,而大量关键数据被丢弃;
早期随机检测(RED)
为避免 TCP 全局同步现象,出现了 RED(Random Early Detection)技术。RED,随机地丢弃数据报文,让多个 TCP 连接不同时降低发送速度,从而避免了 TCP 的全局同步现象。使 TCP 速率及网络流量都趋于稳定;
RED 为每个队列的长度都设定了阈值门限,并规定: 1)当队列的长度小于低门限时,不丢弃报文; 2)当队列长度在高门限和低门限之间时,开始随机丢弃新到来的报文,且队列越长,丢弃概率越大。方法是为每个到来的报文赋予一个随机数,并用该随机数与当前队列的丢弃概率比较,如果大于丢弃概率则报文被丢弃。队列越长,报文被丢弃的概率越高; 3)当队列长度超过高门限时,丢弃所有新到来的报文,即尾丢弃
仍可能出现 TCP 全局同步现象(RED 也无法对流量进行区分),但链路利用率已大大增加;
加权随机先期检测(WRED)
基于 RED 技术,设备实现了 WRED(Weighted Random Early Detection),通过对不同优先级数据包或队列设置相应的丢弃策略,以实现对不同流量进行区分丢弃;
流队列支持基于 DSCP 或 IP 优先级进行 WRED 丢弃。每一种优先级都可以独立设置报文丢包的上下门限及丢包率,报文到达下限时,开始丢包,随着门限的增高,丢包率不断增加,最高丢包率不超过设置的丢包率,直至到达高门限,报文全部丢弃,这样按照一定的丢弃概率主动丢弃队[……]
解决方案
拥塞管理是指网络在发生拥塞时,针对不同类型的业务流量,如何进行管理和控制;
原理简述
拥塞管理的中心内容:当拥塞发生时如何制定一个策略,用于决定报文转发的处理次序和丢弃原则,一般采用队列技术;
管理的内容包括:报文离开队列的时间、顺序,以及各个队列之间报文离开的相互关系则由队列调度算法决定;
队列技术
将从一个接口发出的所有报文放入多个队列,按照各个队列的优先级进行处理,对报文的转发进行不同的调度处理;
调度算法
不同的队列调度算法用来解决不同的问题,并产生不同的效果;
特性特征
WIP
应用场景
在网络中,当共享同一网络的多种业务竞争相同的资源(带宽,缓冲区等)时可能会产生拥塞,高优先级业务无法得到保证。此时可以通过优先级映射的结果将报文送入不同的队列,如图所示,在设备出方向为不同的队列配置不同的调度方式,可以达到对不同业务进行差分服务的目的;
队列技术(Queue)
队列指的是在缓存中对报文进行排序的逻辑;
当流量的速率超过接口带宽(或超过为该流量设置的带宽)时,就以队列的形式,将报文暂存在缓存中;
下行队列
每个端口上都有 8 个下行队列,称为 CQ(Class Queue)队列,也叫端口队列(Port-queue); 分别为 BE、AF1、AF2、AF3、AF4、EF、CS6 和 CS7;
例如 NE20E 设备和 NE40E 设备,每个端口上都有 8 个下行队列;
注意事项、该队列技术是出现在接口(端口)上的。在 MQC 中,并没有这八个端口的概念。
调度算法
先进先出,FIFO(First In First Out)
单个队列的报文采用 FIFO 原则入队和出队;
FIFO 按报文到达接口的先后顺序让报文进入队列,在队列的出口让报文按进队的顺序出队,先进的报文将先出队,后进的报文将后出队;
优点:实现机制简单且处理速度快; 缺点:FIFO 不对报文进行分类,所以不能有差别地对待优先级不同的报文;
严格优先级,SP(Strict Priority)
SP(Strict Priority)调度就是严格按照队列优先级的高低顺序进行调度。只有高优先级队列中的报文全部调度完毕后,低优先级队列才有调度机会;
如图,假设端口有 3 个采用 SP 调度算法的队列,分别为高优先(High)队列、中优先(Medium)队列、和低优先(Low)队列,它们的优先级依次降低。其中报文编号表示报文到达顺序;
在报文出队的时候: 1)首先,让高优先队列中的报文出队并发送,直到高优先队列中的报文发送完, 2)然后,发送中优先队列中的报文,直到发送完,[……]
TODO !!! [NETWORK] 拥塞管理配置实验;
配置基于队列的拥塞管理
WAN 接口支持 PQ,WFQ,PQ+WFQ 三种调度模式;
拥塞管理的配置思路如下:
System-view
// 创建 QoS 队列模板
qos queue-profile [queue-profile-name] // 创建队列模板;
schedule pq [queue-index] | wfq [queue-index] // 配置 WAN 接口下各队列的调度模式;
// 在接口下应用队列模板
interface [interface-type interface-num] // 进入接口视图;
qos queue-profile [queue-profile-name] // 在接口下应用队列模板;
// 检查基于队列的拥塞管理配置结果
System-view
interface [interface-type interface-num]
display this // 查看接口下绑定的队列模板;
display qos queue-profile [queue-profile-name] // 查看队列模板的配置信息;
配置 MQC 实现拥塞管理
在 MQC 中,Tfc-Clf 提供三种队列: 1)确保转发队列(AF):可以保证在网络发送的业务流量没有超过最小可确保带宽的情况下确保转发; 2)加速转发队列(EF/LLQ):匹配规则的报文进入 EF 或 LLQ 队列后,进行绝对优先级调度,仅当 EF 或 LLQ 队列中的报文调度完毕后,才会调度其他队列中的报文。当 AF 或 BE 队列有空闲带宽时,EF 队列可以对空闲带宽进行占用。LLQ 队列较 EF 队列而言,时延更低; 3)尽力而为队列(BE):未进入 AF 队列和 EF 队列的剩余报文进入 BE 队列。BE 队列使用 WFQ 算法调度;
AF 队列和 EF 队列带宽之和不得超过接口带宽的 100%; 各 AF 队列按照权重分享剩余带宽(可用带宽减去 EF 队列占用带宽后的剩余资源);
MQC 方式的拥塞管理配置思路如下:
// 配置 Traffic classifier 与 Traffic behavior
System-view
traffic classifier [classifier-name] // 创建流分类;
if-match [acl | vlan-id | …. ] // 基于流量特征匹配流量;
System-view
traffic behavio[……]
问题描述
由于传统 QoS 只能将流分成 8 个队列进行调度控制,因此在多租户的场景下限制很大;
诸如,在家庭宽带场景下,不同的家庭可能会租用不同的网络带宽,不同的网络服务,QoS 无法精细化的管理这些家庭。传统 QoS 无租户概念,无法针对特定宽带进行管理;
传统的 QoS 基于接口进行流量调度,单个接口只能区分业务优先级,只要属于同一优先级的流量,就使用同一个端口队列,彼此之间竞争同一个队列资源。因此,传统的 QoS 无法对接口上多个用户的多个流量进行区分服务;
解决方案
HQoS 基于多级队列实现层次化调度,不仅区分了业务,也区分了用户,实现了精细化的 QoS 服务;
注意,不同设备的 HQoS 特性有一定区别,我们这里主要学习 CPE(AR 系列路由器)的 HQoS 特性;
原理简述
HQoS 基于队列实现层次化调度,CPE 上支持三级队列:
1)Level3 流队列(Flow Queue):在该队列中,针对用户特定流量进行调度; 每个用户的同类业务可以被认为是一个业务流,HQoS 能够针对每个用户的不同业务流进行队列调度; 流队列一般与业务类型相对应,包括 EF、AF、BE 等,用户可以配置流队列的调度方式;
2)Level2 用户队列(Subscriber Queue):在该队列中,针对用户就行流量调度; 来自同一用户的所有业务可以被认为是一个用户队列,HQoS 可以使该用户队列下的所有业务共享一个用户队列的带宽;
3)Level1 接口队列(Port Queue):在该队列上,将不再进行个体管理,而是全部流量就行管理; 每个接口(子接口、Tunnel)一个队列,接口队列之间进行 RR(轮询调度),仅能配置基于接口的流量整形,且其调度方式不可配置;
特性特征
HQoS 用于复杂场景下的 QoS 部署,颗粒度更细,
应用场景
假设一栋楼有 3 个家庭,家庭 A 购买了 10M 带宽并且开通了 VoIP,IPTV 和 HSI 业务,家庭 B 购买了 20M 带宽并开通了 IPTV 和 HSI 业务,家庭 C 购买了 30M 带宽只开通了 HSI 业务,通过 HQoS 可以方便的实现这些需求;
关于 HQoS 队列调度
流队列调度器和用户队列调度器都支持 PQ、WFQ、PQ+WFQ 调度。接口队列调度器使用轮询调度 RR(Round Robin)方式;
以企业用户的 HQoS 部署为例,企业用户主要有三种业务:语音通讯(VoIP)、视频会议(VC)和数据业务(DATA)
每个用户队列对应一个企业用户,每个流队列对应一种业务。通过部署 HQoS,可以实现: 1)控制单个企业用户三种业务之[……]
HQoS 配置较为复杂,在配置时一般使用 MQC 方式;
TODO !!! [NETWORK] HQoS
配置 HQoS 时会使用策略嵌套的配置方式: 父策略区分用户,子策略区分流量; 父策略下可以有多个子策略; 父策略应用于接口;
HQoS 的子策略用于区分不同的业务,配置 HQoS 时可以基于业务配置多个子策略;
第一步、配置 HQoS 子策略
HQoS 的子策略配置与普通 MQC 的配置方式一致,基本思路如下:
// 配置 Traffic classifier,该 classifier 可以基于业务特征进行匹配;
System-view
traffic classifier [classifier-name] // 创建流分类
if-match [acl | vlan-id | …. ] // 基于业务特征匹配流量
// 配置 Traffic behavior,该 behavior 可以配置队列调度方式和队列带宽;
System-view
traffic behavior [behavior-name] // 创建流行为
queue [af | ef | llq] bandwidth [bandwidth | pct percentage] // 在流行为中配置 AF/EF/LLQ 队列参数
drop-profile [drop-profile-name] // 在流行为中绑定已创建的丢弃模板
// 使用 Traffic policy 工具将 Traffic classifier 与 Traffic behavior 进行绑定;
System-view
traffic policy [policy-name] // 创建流策略
classifier [classifier-name] behavior [behavior-name] // 绑定流分类与流行为
注意、MQC 并一定需要绑定接口;
第二步、配置 HQoS 父策略
HQoS 的父策略用于区分不同的用户,配置 HQoS 时可以将多个子策略绑定到一个父策略; HQoS 的父策略配置基本思路如下:
// 配置 Traffic classifier,该 classifier 可以基于用户的特征进行匹配
System-view
traffic classifier [classifier-name] // 创建父策略的流分类
if-match [acl | vlan-id | …. ] // 基于用户特征匹配流量
// 配置[……]
基于 IPSec 业务应用,不管是出站还是入站流量,防火墙均根据数据类型采取 3 个方面进行处理: 1)丢弃报文(入站); 3)绕过安全服务; 3)应用安全服务;
出站流量
防火墙首先查看出站数据报文流量是否属于定义的保护数据流,以判断将为这个报文提供哪些安全服务输出,可能有以下几类情况:
1)绕过安全服务:在这类情况下,报文不属于定义的保护数据流,将不应用 IPSec 策略,只进行传统的 IP 转发处理流程;
2)应用安全服务:在这类情况下,此报文将根据已建立的 SA,对报文应用 IPSec 策略后进行转发。对于尚未建立 SA 情况,将调用 IKE,以便完成 SA 建立;
入站流量
入站流量处理与出站流量有所区别,其将根据报文是否含有 IPSec 头对此报文进行以下动作处理:
1)丢弃报文:若报文不含 IPSec 头,且查看防火墙安全转发策略后,其策略输出为丢弃,那么数据报文就会被丢弃。若策略输出为应用 IPSec,但 SA 未建立数据报文同样也会被丢弃
2)绕过安全服务:若报文不含 IPSec 头,则根据防火墙安全转发策略将数据报文进行传统的 IP 转发处理流程;
3)应用安全服务:若报文含 IPSec 头,且已建立 SA,那么数据报文将会被递交给 IPSec 层进行处理;[……]
PPTP 协议是一个 VPN 协议,它已有 20 多年的历史; 该协议依赖于加密、认证、点对点协议(PPP,Point-to-Point Protocol)进行协商;
原理简述
特性特征
实质上,它只需要用户名、密码和服务器地址就可创建连接; PPTP 速度很快,但是速度是以弱加密性为代价的。在所有 VPN 协议中,PPTP 加密级别最低, PPTP 必须基于 IP 网络;
应用场景
PPTP 由于需要 Windows 系统支持,且外网接入需要将内网的 Windows 服务器通过 NAT 映射出去,部署不便,使用很少;[……]
PW, VSI, AC
PW(Pseudo-Wire,伪线):在 MPLS LDP Networking 中,该 PW 为一组 MPLS Label 组成的转发路径。各个 PW 为不同的标签组;
VSI(Virtual Switch Instance,虚拟机交换实例):VSI 是为每一个 VPLS 单独划分的一个虚拟交换处理单元。VSI 用于存放独立的 MAC 地址表和执行转发,并负责终结 PW;
AC(Attachment Circuit,接入电路):AC 指 CE 与 PE 之间的链路。在实际的网络设备的配置过程中,通常是将某个物理接口(或子接口)划分到 VSI 实例中。
已知问题
单活接入导致流量分担不均
VPLS 在 CE 双归接入 PE 存在环形拓扑的时候,同交换机的破环技术(STP)思路一样,采用阻塞一个端口方式形成无环的转发路径。因此 VPLS 接入形成了一种主备的模式。 由于 CE 和 PE 之间只有一条链路转发数据,且 PE 与 PE 之间的链路无法形成多路径,可能造成部分链路拥塞。
故障收敛速度慢
PE3 在感知到链路故障后会向对端 PE 发送 MAC-Withdraw 报文,通知删除 PE3 相关 MAC 地址。同时 PE4 将备份链路升级为 Active。 对端 PE1 接收到撤销报文后,PE1 将清除 MAC 地址,重新学习 MAC 地址。故障收敛时间与 MAC 地址数量强相关。[……]
完整的实现 VPLS 需要完成如下工作:
控制平面
第一步、创建隧道和 PW
在 PE1 和 PE2 间,首先建立一个承载隧道,用于承载不同企业客户的业务;
在 VPLS 中,三种常见的创建 PW 的方式: 1)静态手工配置,配置量大; 2)Martini:通过 LDP 信令创建;其承载的报文将具有两层标签,最内层为隧道标签,外层为 MPLS Network 的标签; 3)Kompella:通过 BGP 信令创建;
第二步、创建 VSI、PW
创建 VSI,并为该 VSI 赋予 PW 实例。
第三步、通过 VSI 来绑定 PW 和 AC
绑定 PW 和 AC 到 VSI 后,VSI 就像一个交换机一样工作,记录不同接口学习的 MAC 地址,并生成 MAC 地址表项;
转发平面
VPLS 模拟交换机,MAC 地址学习依靠数据平面泛洪,没有控制平面参与; 转发行为由查询 MAC 地址表决定,如果 MAC 地址表有记录则查表转发,没有记录则泛洪转发;[……]
Martini
在 eNSP 中,需要使用 Router 设备进行实验,而 AR 设备不支持 VPLS 配置;
STEP 01. Tunnel: LDP Remote Peer
域内:MPLS LDP, IGP OSPF
mpls ldp remote-peer <name> — remote-ip <peer-ip-address>
display mpls ldp session … Operational …
mpls l2vpn
STEP 02. VSI and PW
vsi <name> static — pwsignal ldp — vsi-id 1 — peer <addr>
STEP 03. binding AC to VSI
<sub-interface> — vlan-type dot1q 10 (dot1q termination) — l2 binding vsi <name>
<interface> — l2 binding vsi <name>
display vsi name <name> verbose
ping test
[R4] ping R5
Kompella
STEP 01. Tunnel: BGP
域内:MPLS LDP, IGP OSPF
bgp — peer — vpls-family
mpls l2vpn
STEP 02. VSI and PW
vsi <name> auto — pwsignal bgp —— r-distinguisher —— vpn-target —— site 1 range 5 default-offset 0 (site-id 不能相同, site-id > peer default-offset, site-id < range + default-offset)
STEP 03. binding AC to VSI
<interface> —- l2 binding vsi <name>
ping test
[R4] ping R5[……]
问题描述
随着新技术和新场景对网络需求,VPLS 被暴露出更多的问题(诸如 无法实现负载分担、网络部署困难 等等),无法满足 L2VPN 灵活部署和 CE 多归属场景下提升链路利用率等需求;
解决方案
业界重新审视对 Ethernet VPN 的需求(RFC 7209),提出新的解决方案 EVPN(Ethernet Virtual Private Network,以太网虚拟私有网络),以解决以上问题;
EVPN 最初在 RFC 7432 中被定义;
原理简述
控制平面
在 EVPN 中,引入控制平面,采用 MP-BGP 协议,负责进行信息传递,用于更好的控制 MAC-ADDR 学习过程; PE 间交互 BGP EVPN 报文,传递 MAC 和 IP 地址。MAC 地址无需再进行广播,而是通过 EVPN 发送给对端; MP-BGP 能够传递 MAC Route、ARP Route 等等;
数据平面
由 IP 隧道或 MPLS 标签转发路径组成数据转发路径。只负责数据转发,无需广播泛洪学习 MAC 地址; 数据平面,支持多种类型的隧道,例如 MPLS、IP/GRE tunneling、SRv6 等等。
所示如图,是以 MPLS 作为外层隧道转发技术(EVPN for MPLS):
协议标准
如下图,Control Plane 与 Data Plane 能够使用各种不同的协议进行组合,以实现 EVPN 多种应用场景:
特性特征
EVPN 颠覆传统 L2VPN 数据面学习的方式(即传统二层网络广播行为),引入控制面学习 MAC 和 IP 指导数据转发,实现转控分离;
它引入控制平面用于控制 MAC 地址的学习。随着 EVPN 的不断扩展,EVPN 不仅支持 L2VPN,同时支持 L3VPN;
EVPN 解决传统 L2VPN 的典型问题,带来双活,快速收敛,简化运维等更多的价值;
EVPN 其他优势: 1)支持 CE 多活接入 PE 2)支持 PE 成员自动发现 3)环路避免 4)广播流量优化 5)支持 ECMP
应用场景
随着 SDN 的发展和商用,在各解决方案中,EVPN 占据重要角色,应用覆盖全场景包括园区网络、数据中心网络、广域 IP 承载网络、SD-WAN 等等;
在广域 IP 承载网的应用
EVPN 控制面统一所有业务,标准逐渐成熟和完善
E-LINE、E-TREE、E-LAN 是 EVC(Ethernet Virtual Connection,以太网虚拟连接)定义的三种类型,具体请参考城域以太网标准。https://wiki.mef.net/display/CESG/E-Line
在[……]
原理简述
VRF 是对物理设备的进行逻辑划分,每个逻辑单元都被称为 VRF-Instance(VRF 实例,VRF-INST),VRF-INST 间在路由层面是隔离的。
VRF 实现过程如下: 1)创建 VRF-INST,并将三层接口(可以是路由器的物理接口或者子接口,也可以是 VLANIF 接口)绑定到 VRF-INST; 2)可选:配置与 VRF-INST 绑定的路由协议或静态路由; 3)基于与实例绑定的接口和路由协议等,来建立实例路由表并基于实例路由表转发数据,实现 VRF-INST 间隔离;
多张独立的路由表
Q:当前路由器上会有几张路由表呢? A:这里想强调的是除了虚拟路由表,还有全局路由表;在缺省时,一个网络设备的所有接口都属于同一个转发实例——设备的根实例。
通过 VRF 技术,在一台三层转发设备上创建多张隔离的路由表,实现数据或业务的隔离:
# VPNA 的路由表
目的网段/掩码 协议 出接口 下一跳
192.168.100.0/24 OSPF VLANIF100 192.168.100.1
192.168.1.0/24 OSPF VLANIF101 192.168.101.1
# VPNB 的路由表
目的网段/掩码 协议 出接口 下一跳
192.168.100.0/24 OSPF VLANIF200 192.168.100.1
172.16.1.0/24 Static VLANIF201 192.168.201.1[……]
传输层:建立、维护、管理端到端连接;
数据单元:数据段,Segment;
我们工作中常见的协议是 TCP 协议,然后是 UDP 协议。当然还有其他协议,比如 DCCP、SCTP、RSVP 等等;
常见协议
QUIC(Quick UDP Internet Connection)是谷歌制定的一种基于 UDP 的低时延的互联网传输层协议。在 2016 年 11 月国际互联网工程任务组(IETF)召开了第一次 QUIC 工作组会议,受到了业界的广泛关注。这也意味着 QUIC 开始了它的标准化过程,成为新一代传输层协议;
参考文献
Wikipedia/Transport layer[……]
写在最开始……
为什么要写这篇文章?写这篇文章的意义在哪里?(1)为了记录那些笔记本使用体验(2)以及使用过程过程中遇到的问题。主要还是为了记录使用问题,以便在下次选购笔记本时可以避开这些问题,进而选购趁手的“兵器”;
当然这些“问题”并不是笔记本自身缺陷,它们是指在日常使用中由于无法满足某些需求而产生的问题;
因此本文中所述的使用经验也与个人需求相关,并不是对笔记本产品自身的评价,因此这些经验并不具备广泛及通用的参考价值;
我用过的笔记
这里忽略 CPU、MEMORY、DISK 等信息,侧重与笔记本的屏幕尺寸、屏幕的分辨率等信息:
购买时间
品牌型号
显示器屏幕
更换原因
00/06/2012
ASUS k53sd
15 1366×768
配置低、年代久
03/16/2015
ThinkPad T540p
15 1366×768
分辨率不行
10/14/2016
Dell m6800
17 1960×1080
体积较大,携带不便
10/15/2017
MacBook Pro
13 2560×1600
满足不了日常需求,搭建环境问题较多
05/23/2018
ThinkPad T540p
15 1960×1080
除了不支持 RAID 外,其他方面能够满足需求
配置要求
属性
配置要求
# 硬盘 #
支持 RAID 5 阵列,或具有多盘位(数据冗余,马虎不得)
显示器及分辨率
尺寸:15、14;分辨率:在 1920×1080 以上;尽力非触屏;
外观
方方正正
处理器
支持虚拟化,无其他特殊要求
内存
最少:16GB;起步:32GB
显卡
无特殊要求
机身接口
需要有足有的机身接口来接入其他设备
产品已基本锁定 ThinkPad 系列了,其他的品牌不太可能考虑了(在外观方面,可以过滤掉大多数品牌);
经验总结
我是一位开发者,一位后端开发者,四年半[……]
参考文献
SQL Server on Linux: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-overview[……]
问题描述
该笔记将记录:在 PostgreSQL 中,进行服务维护的方法以及相关问题的解决办法。
解决方案
该部分的主要内容均来自于官方文档,但是提取出在各章节中我们关注的内容,让我们形成对 PostgreSQL 的整体认识。
该部分内容主要来自官方文档的以下章节,偏向于 PostgreSQL 服务的维护及系统管理:
III)Server Administration — 16)Installation from Binaries => Installing and Upgrading — 17)Installation from Source Code => Installing and Upgrading — 18)Installation from Source Code on Windows => Installing and Upgrading — 19)Server Setup and Operation => Problems Solving and How-to — 20)Server Configuration => Maintenance, Administration — 21)Client Authentication => Client Authentication — 22)Database Roles — 23)Managing Databases — 24)Localization — 25)Routine Database Maintenance Tasks — 26)Backup and Restore — 27)High Availability, Load Balancing, and Replication — 28)Monitoring Database Activity — 29)Monitoring Disk Usage — 30)Reliability and the Write-Ahead Log — 31)Logical Replication — 32)Just-in-Time Compilation (JIT) — 33)Regression Tests
参考文献
PostgreSQL: The world’s most advanced open source database PostgreSQL: Documentation: 14: Part III. Server Administration[……]
SQLite 轻量级的嵌入式数据库
特性特征
SQLite,并非独立的数据库服务,而是以类库的方式存在,通过类库直接管理数据库文件;
参考文献
SQLite Home Page SQLite – Wikipedia[……]
问题描述
我们需要管理与运维 Kubernetes 集群,我们经常遇到与 etcd 相关的错误: 1)context canceled / context deadline exceeded 2)经常出现 etcd 服务重启; 3)在 Prometheus 中,监控经常发生 Leader 切换;
所以,我们准备进行 etcd 组件的学习,学会对 etcd 的使用、管理、问题排查;
解决方案
研究对象
etcd
研究工具
教育培训:极客时间/etcd 实战课(唐聪,腾讯云资深工程师,etcd 活跃贡献者) 书籍文献:《etcd 工作笔记:架构分析、优化与最佳实践》 官方文档:etcd/Documentation versions 博客文章:
研究目标
掌握 etcd 概念术语、工作原理、指标数据; 实现 etcd 常见问题进行排查,提高系统可用性;
参考文献
极客时间/etcd 实战课(唐聪,腾讯云资深工程师,etcd 活跃贡献者) 《etcd 工作笔记:架构分析、优化与最佳实践》 etcd/Documentation versions[……]
[……]
GHC: The Glasgow Haskell Complier
GHC Homepage GHC Github Homepage
编译器
Stack(for Project Management)
Stack Doc Github Stack
Stack 是用于 Haskell 开发的跨平台构建工具,用于处理工具链的管理;
Installing the Glasgow Haskell Compiler (GHC) automatically, in an isolated location. Installing packages needed for your project. Building your project. Testing your project. Benchmarking your project.[……]
研究对象
Rust
研究结果
1)理论:掌握 Rust 语言的编程方法; 2)实践:能够阅读 Rust 代码;能够编写简单的 Rust 程序;
研究方法
教育培训:WIP
书籍文献: 1)《Rust 权威指南》 2)《Rust 编程之道》
官方文档: 1)What is rustdoc? – The rustdoc book
博客文章: 1)Rust 语言中文社区-首页[……]