一、确认现网使用的SC引流模式

需要确认,现网使用的SC场景模式,主要包含

1)需要确认SDN交换机所在的位置:

SDN交换机部署在网关交换机;

SDN交换机部署在网关和出口之间;

SDN交换机部署在网关和用户接入设备之间;

SDN交换机部署在网关和服务器接入设备之间;

2)安全设备使用的连接方式(透明模式或者路由模式);

常规,安全设备接入,可设置为ServiceChain模式、透明模式(no switchport不带IP模式)和路由模式(no switchport带IP模式)。

3) 所使用的安全设备是否在支持的范围之内;

可选择的节点设备类型包括流控、防火墙、IDS、IPS、WEB应用防火墙、防病毒(AV)及其他,这里的其他有PowerCache、堡垒机、日志审计/数据库审计、上网行为管理、VPN、负载均衡AD、NAT设备、漏洞扫描。其中,负载均衡AD和NAT设备需要根据具体场景评估是否支持

其中,我司安全设备列表:

全新下一代防火墙、全新下一代模块化防火墙、二代UAC、二代WG、二代IDP、易网关等。

4) 需要引流的业务评估

现网中,可引流的流量包括用户à外网,用户à服务器,服务器à外网,用户à用户,以及回流。根据实际的业务引流需求,对比已有的限制,进行业务编排。

二、对照各种引流模式的配置实例

交换机设备端,引流口支持的模式有ServiceChain、透明模式、路由模式,对应配置

ServiceChain模式#

image029.png

透明模式#

 image030.png

路由模式#

 image031.png

路由模式下安全设备对应需要配置跟引流口同网段的地址,ServiceChain模式只有在SDN交换机为汇聚设备时支持。

安全设备的使用,见后面的使用限制。

ONC上在配置服务节点、服务链、业务编排时,在透明模式时,同时需要勾选bypass。在提示业务编排冲突的时候,可通过设置不同的优先级并忽略交集冲突来解决。

image032.png

三、分别在引流的各个接口上抓包对比确认

在引流失败的时候,可以在引流口、回流口,以及流量输入端口和反向流量输入端口上分别抓包对比,确认丢包点在哪个位置。比如通过ping一个引流设置的源IP地址,查看引流口和回流口上是否都能够抓到ping_request、ping_reply报文。

也可以通过配置acl进行报文统计。acl报文统计计数以及分析的方法请查询闪电兔。

其中部分报文走的是cpu转发,无法被抓到或者被acl统计。

四、校验流量的来回路径是否一致

在引流过程,需要考虑流量在从一个安全设备出来后,是否还会匹配其他的安全设备;对比上行流量被引流的次数和下行流量被引流次数对比,如果两者不一致,可能会被部分安全设备丢弃(路径不一致)。

五、流表解析(检查下发的流表是否符合预期)

在交换机上,通过如下几个方式查看下发的流表信息:

1、查看控制器与交换机的openflow连接是否建立

SDN#sh of

version:openflow1.3, controller[0]:tcp:172.18.96.120 port 6653 interface GigabitEthernet 6/1, main is connected, aux is disable, role is master.

Current controller mode : single

 

2、查看流表信息

SDN#sh of flowtable

/******************* openflow flow table[0]---flow number[1502]---capacity[262144] ********************/

 

{table="0", duration_sec="94211", priority="501", flags ="0x1",idle_timeout="0", hard_timeout="0", cookie="0x0", packet_count="0", byte_count="0". match=oxm{in_port="54", eth_type="0x800", ipv4_src="111.2.17.0", ipv4_src_mask="255.255.255.0", ipv4_dst="222.2.1.0", ipv4_dst_mask="255.255.255.0", ip_proto="6", tcp_src="100", tcp_dst="100"} instructions=[apply{acts=[set_field{field:eth_src="00:d0:f8:22:33:7e"}, set_field{field:eth_dst="14:14:4b:55:de:af"}, output{port="59"}]}]}

流表主要字段介绍:

1)duration_sec="94211" 表项存在的时间

2)priority="501" 表项的优先级

3)packet_count="0" 表项命中的次数

4)in_port="54" 匹配流量进入的接口ID,与实际物理接口的对应关系可通过show lsm interface查看

5)eth_type="0x800" 三层协议类型,0x800表示IP流

6)ipv4_src="111.2.17.0", ipv4_src_mask="255.255.255.0" 源IP地址及掩码

7)ipv4_dst="222.2.1.0", ipv4_dst_mask="255.255.255.0" 目的IP地址及掩码

8)ip_proto="6" 四层协议号,6表示TCP,17表示UDP

9)tcp_src="100", tcp_dst="100" 四层协议的源目端口号,若为UDP则为udp_src="100", udp_dst="100"

10)eth_src="00:d0:f8:22:33:7e" 设置报文的源MAC,为全0时,表示不修改mac;

11)eth_dst="14:14:4b:55:de:af" 设置报文的目的MAC,为全0时,表示不修改mac

12)output{port="59"} 设置流量的出口ID

 

结合上述的流表信息,确认ONC上下发的是否与设备上生成的一致,并且需要核对每条流表中,源、目的网段,源、目的mac是否与实际一致。

在三层引流中,透明模式(注意区分ServiceChain模式、接口no switch /no ip并且启用桥模式,这里指后者)和路由模式下,流量被引流后在经过安全设备前后,都会被修改为

上行流量:Smac(交换机mac),Dmac(交换机保留mac);

下行流量:Smac(交换机保留mac),Dmac(交换机mac)。