目录

简介

先决条件

要求

使用的组件

问题

解决方案

支持的XE SD-WAN平台

注意事项

配置

使用案例1.在分支机构上配置TCP优化（全部在一个cEdge中）

使用案例2.使用外部SN配置数据中心中的TCP优化

故障切换案例

验证

故障排除

相关信息

简介

本文档介绍Cisco IOS® XE SD-WAN路由器上的传输控制协议(TCP)优化功能，该功能于2019年8月在16.12版本中引入。涵盖的主题包括先决条件、问题描述、解决方案、Viptela OS(vEdge)和XE SD-WAN(cEdge)之间的TCP优化算法差异、配置、验证和相关文档列表。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档中的信息基于Cisco IOS® XE SD-WAN。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

问题

两个SD-WAN端之间的WAN链路上的高延迟会导致应用程序性能下降。您必须优化关键TCP流量。

解决方案

使用TCP优化功能时，可以改善两个SD-WAN站点之间关键TCP流的平均TCP吞吐量。

了解cEdge瓶颈带宽和往返传输(BBR)与vEdge(CUBIC)的TCP优化之间的概览和差异

在XE SD-WAN实施（在cEdge上）中使用快速BBR传播时间算法。

Viptela OS(vEdge)有一个不同的、较旧的算法，称为CUBIC。

CUBIC主要考虑丢包，并广泛适用于不同的客户端操作系统。Windows、Linux、MacOS、Android已经内置了CUBIC。在某些情况下，如果旧客户端运行不带CUBIC的TCP堆栈，在vEdge上启用TCP优化会带来改进。vEdge TCP CUBIC优化的其中一个例子是使用旧客户端主机和WAN链路出现严重延迟/丢弃的潜艇上。请注意，只有vEdge 1000和vEdge 2000支持TCP CUBIC。

BBR主要关注往返时间和延迟。数据包丢失时没有。如果您通过公共Internet将数据包从美国西海岸发送到东海岸，甚至发送到欧洲，在大多数情况下，您不会看到任何数据包丢失。公共Internet有时在丢包方面表现太好。但是，您看到的却是延迟/延迟。BBR解决了这个问题，BBR由Google在2016年开发。

简而言之，BBR对网络建模，查看每个确认(ACK)并更新最大带宽(BW)和最小往返时间(RTT)。 控制发送基于模型：探测最大BW和最小RTT，接近估计BW并保持在接近带宽延迟产品(BDP)的状态。 主要目标是确保高吞吐量和小的瓶颈队列。

Mark Claypool的此幻灯片显示了CUBIC工作所在的区域：

BBR的运营环境更佳，本幻灯片中还显示了Mark Claypool:

如果您想了解有关BBR 算法的更多信息，可以在bbr-dev邮件列表主页Here的顶部找到多个链接有关BBR的出版物。

小结：

平台和算法

键输入参数

使用案例

cEdge(XE SD-WAN):BBR

RTT/延迟

两个SD-WAN站点之间的关键TCP流量

vEdge（Viptela操作系统）：CUBICP

包丢失

没有任何TCP优化的旧客户端

支持的XE SD-WAN平台

在XE SD-WAN软件版本16.12.1d中，这些cEdge平台支持TCP优化BBR:

- ISR4331

- ISR4351

- CSR1000v，带8个vCPU，最少8 GB RAM

注意事项

- 当前不支持DRAM小于8 GB RAM的所有平台。

- 目前不支持具有4个或更少数据核心的所有平台。

- TCP优化不支持MTU 2000。

- 目前 — 不支持IPv6流量。

- 不支持对流向第三方BBR服务器的DIA流量进行优化。您需要在两端都安装一个cEdge SD-WAN路由器。

- 在数据中心方案中，每个控制节点(CN)仅支持一个服务节点(SN)。

- 目前不支持在同一设备上同时使用安全（UTD容器）和TCP优化的使用案例。

注意：ASR1k当前不支持TCP优化。但是，有一个适用于ASR1k的解决方案，其中ASR1k通过AppNav隧道（GRE封装）将TCP流量发送到外部CSR1kv进行优化。目前（2020年2月）仅支持一个CSR1k作为外部服务节点。这将在配置部分后面介绍。

下表汇总了每个版本的警告，并重点说明了支持的硬件平台：

场景

使用案例

16.12.1

17.2.1

17.3.1

17.4.1

备注

分支机构到互联网

DIA

无

Yes

Yes

Yes

在16.12.1中，互联网接口上未启用AppQoE FIA

SAAS

无

Yes

Yes

Yes

在16.12.1中，互联网接口上未启用AppQoE FIA

分支机构到DC

单边缘路由器

无

无

EFT

Yes

需要支持多个SN

多个边缘路由器

无

无

EFT

Yes

需要流对称或Appnav流同步。16.12.1未经测试

多个SN

无

无

EFT

Yes

vManage增强功能，可接受多个SN IP

分支机构到分支机构

全网状网络

（分支到分支）

Yes

Yes

Yes

Yes

集中星型

（分支中心分支）

无

Yes

Yes

Yes

BBR支持

带BBR的TCP选项

部分

部分

全

全

平台

支持的平台

仅4300和CSR

除ISR1100外的所有产品

all

all

配置

SN和CN的概念用于TCP优化：

- SN是一个后台守护程序，负责实际优化TCP流量。

- CN称为AppNav控制器，负责流量选择以及与SN之间的传输。

SN和CN可以在同一路由器上运行，也可以作为不同节点单独运行。

有两种主要使用案例：

1. 在同一ISR4k路由器上运行SN和CN的分支机构使用案例。

2. 数据中心使用案例，其中CN在ASR1k上运行，SN在单独的CSR1000v虚拟路由器上运行。

本节介绍这两种使用案例。

使用案例1.在分支机构上配置TCP优化（全部在一个cEdge中）

此图显示了分支机构单个独立选项的整体内部架构：

步骤1.要配置TCP优化，您需要在vManage中为TCP优化创建功能模板。导航到配置>模板>功能模板>其他模板> AppQoE，如图所示。

步骤2.将AppQoE功能模板添加到Additional Templates:

以下是模板配置的CLI预览：

service-insertion service-node-group appqoe SNG-APPQOE

service-node 192.3.3.2

!

service-insertion appnav-controller-group appqoe ACG-APPQOE

appnav-controller 192.3.3.1

!

service-insertion service-context appqoe/1

appnav-controller-group ACG-APPQOE

service-node-group SNG-APPQOE

vrf global

enable

!

!

interface VirtualPortGroup2

ip address 192.3.3.1 255.255.255.0

no mop enabled

no mop sysid

service-insertion appqoe

!

步骤3.使用所关注的TCP流量的定义创建集中数据策略以进行优化。

例如：此数据策略匹配IP前缀10.0.0.0/8（包括源地址和目标地址），并为它启用TCP优化：

下面是vSmart策略的CLI预览：

policy

data-policy _vpn-list-vpn1_TCPOpt_1758410684

vpn-list vpn-list-vpn1

sequence 1

match

destination-ip 10.0.0.0/8

!

action accept

tcp-optimization

!

!

default-action accept

!

lists

site-list TCPOpt-sites

site-id 211

site-id 212

!

vpn-list vpn-list-vpn1

vpn 1

!

!

!

apply-policy

site-list TCPOpt-sites

data-policy _vpn-list-vpn1_TCPOpt_1758410684 all

!

!

使用案例2.使用外部SN配置数据中心中的TCP优化

SN和CN的物理分离是分支使用案例的主要区别。在一体化分支机构使用案例中，使用虚拟端口组接口在同一路由器内完成连接。在数据中心使用案例中，充当CN的ASR1k与作为SN运行的外部CSR1k之间存在AppNav GRE封装隧道。CN和外部SN之间不需要专用链路或交叉连接，简单IP可达性就足够了。

每个SN有一个AppNav(GRE)隧道。为了将来使用，如果支持多个SN，建议对CN和SN之间的网络使用/28子网。

建议在CSR1k上使用两个NIC充当SN。如果必须通过vManage配置/管理SN，则需要SD-WAN控制器的第2个NIC。如果要手动配置/管理SN，则第二个NIC是可选的。

此图显示数据中心ASR1k作为CN运行，CSR1kv作为服务节点SN运行：

ASR1k和外部CSR1k的数据中心使用案例的拓扑如下所示：

此AppQoE功能模板显示配置为控制器的ASR1k:

CSR1k配置为外部服务节点如下所示：

故障切换案例

当外部CSR1k发生故障时，数据中心使用案例中的故障切换（CSR1k充当SN）：

- 由于SN上的TCP会话被终止，已经存在的TCP会话将会丢失。

- 新的TCP会话将发送到最终目的地，但TCP流量未优化（绕行）。

- 如果SN发生故障，相关流量不会进入黑洞。

故障切换检测基于AppNav心跳，即每秒1次。在3或4个错误后，隧道被声明为down。

分支机构使用案例中的故障切换类似 — 如果SN发生故障，流量会直接以未优化的方式发送到目的地。

验证

使用本部分可确认配置能否正常运行。

使用此CLI命令验证CLI上的TCP优化，并查看优化流摘要：

BR11-CSR1k#show plat hardware qfp active feature sdwan datapath appqoe summary

TCPOPT summary

----------------

optimized flows    : 2

expired flows      : 6033

matched flows      : 0

divert pkts        : 0

bypass pkts        : 0

drop pkts          : 0

inject pkts        : 20959382

error pkts         : 88

BR11-CSR1k#

此输出提供有关优化流量的详细信息：

BR11-CSR1k#show platform hardware qfp active flow fos-to-print all

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

GLOBAL CFT  ~  Max Flows:2000000   Buckets Num:4000000

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Filtering parameters:

IP1 : ANY

Port1 : ANY

IP2 : ANY

Port2 : ANY

Vrf id : ANY

Application: ANY

TC id: ANY

DST    Interface id: ANY

L3 protocol : IPV4/IPV6

L4 protocol : TCP/UDP/ICMP/ICMPV6

Flow type : ANY

Output parameters:

Print CFT internal data ? No

Only print summary ? No

Asymmetric : ANY

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

keyID: SrcIP SrcPort DstIP DstPort L3-Protocol L4-Protocol vrfID

==================================================================

key #0: 192.168.25.254 26113 192.168.25.11 22 IPv4 TCP 3

key #1: 192.168.25.11 22 192.168.25.254 26113 IPv4 TCP 3

==================================================================

key #0: 192.168.25.254 26173 192.168.25.11 22 IPv4 TCP 3

key #1: 192.168.25.11 22 192.168.25.254 26173 IPv4 TCP 3

==================================================================

key #0: 10.212.1.10 52255 10.211.1.10 8089 IPv4 TCP 2

key #1: 10.211.1.10 8089 10.212.1.10 52255 IPv4 TCP 2

Data for FO with id: 2

-------------------------

appqoe: flow action DIVERT, svc_idx 0, divert pkt_cnt 1, bypass pkt_cnt 0, drop pkt_cnt 0, inject pkt_cnt 1, error pkt_cnt 0, ingress_intf Tunnel2, egress_intf GigabitEthernet3

==================================================================

key #0: 10.212.1.10 52254 10.211.1.10 8089 IPv4 TCP 2

key #1: 10.211.1.10 8089 10.212.1.10 52254 IPv4 TCP 2

Data for FO with id: 2

-------------------------

appqoe: flow action DIVERT, svc_idx 0, divert pkt_cnt 158, bypass pkt_cnt 0, drop pkt_cnt 0, inject pkt_cnt 243, error pkt_cnt 0, ingress_intf Tunnel2, egress_intf GigabitEthernet3

==================================================================

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Number of flows that passed filter: 4

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

FLOWS DUMP DONE.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

BR11-CSR1k#

故障排除

目前没有针对此配置的故障排除信息。

相关信息

- Cisco IOS XE SD-WAN版本16.12.x版本说明

- 思科SD-WAN版本19.1、19.2 — 配置TCP优化指南

- Cisco SD-WAN为vEdge配置TCP优化

- 技术支持和文档 - Cisco Systems