需要确认,现网使用的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模式#
透明模式#
路由模式#
路由模式下安全设备对应需要配置跟引流口同网段的地址,ServiceChain模式只有在SDN交换机为汇聚设备时支持。
安全设备的使用,见后面的使用限制。
ONC上在配置服务节点、服务链、业务编排时,在透明模式时,同时需要勾选bypass。在提示业务编排冲突的时候,可通过设置不同的优先级并忽略交集冲突来解决。
在引流失败的时候,可以在引流口、回流口,以及流量输入端口和反向流量输入端口上分别抓包对比,确认丢包点在哪个位置。比如通过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)。