目录
注:仅在核心网关设备不能替换成锐捷SDN交换机的情况下使用,其他情况不能使用
一、方案原理
1.1 方案背景:
客户网络中,核心设备非我司核心并且也无法更换设备的情况下,无法部署核心准入管控方案,接入设备非我司SDN接入交换机并且也无法更换SDN接入交换机的情况下,也无法部署接入准入管控方案。因此,需要在不更换核心设备和接入设备前提下,做到准入管控方案部署切入,对已有网络进行准入控制和管理。
1.2 原理介绍:
用户终端的上行流量正常到达外网或者内网服务器网段,下行的流量至网关设备时,将目的IP为用户侧网段(管控网段)的流量,通过PBR引流的方式引流到准入设备:
1、 当终端未审批时,准入设备无终端的ARP信息,则下行的流量绕行准入设备后,无法继续发送给网关,导致下行流量断流,从而达到未准入终端网络不通的效果。
2、 当终端审批通过后,准入设备有终端的静态ARP绑定信息,则下行的流量绕行准入设备后,可以继续发送给网关,下行流量正常到达用户侧终端,终端的上下行流量均可通,从而达到准入通过的终端网络可放通的效果。
关键原理:
1、 现有的网关需要将终端的ARP流/DHCP流发送给准入设备,因此需要在现有的网关和准入设备连接一条L2链路,该链路需要配置为trunk口,并进行vlan裁剪(需要注意裁剪需要放行所有管控终端的vlan),终端的ARP流广播到网关核心后,需要通过L2 trunk链路泛洪到准入设备,使得准入设备能接受到终端的ARP广播报文。
2、 SDN控制器配置业务vlan及IP网关后,会向准入设备下发SVI网关信息,当SDN控制器开启准入管控的时候,会向准入设备下发该vlan的采集arp报文的openflow流表,该vlan下的arp广播报文到达注入设备后,会被packet in到SDN控制器上。使得SDN控制器显示出准入的终端信息。同时当SDN控制器开启准入管控后,会向准入设备下发该vlan的arp关闭学习命令,因此准入设备无法学习到终端的arp信息。
3、 SDN控制器审批终端通过后,会向准入设备下发一条静态ARP绑定信息。
4、 终端的上行流量正常通过网关转发出去,不会绕行准入设备;终端的下行流量通过核心PBR三层引流绕行准入设备,因此需要网关和准入设备再连接一条L3链路(使用三层路由口配置)下行的三层流通过查找准入设备的终端ARP信息是否存在,决定是否将报文转发给网关。
1.3 终端接入管控流程介绍
1.1 用户上网前,dhcp获取和arp学习
1.2 通过二层引流或镜像,在旁挂设备上捕获arp/dhcp报文
1.3 将捕获到的arp/dhcp报文pack-in给控制器
1.4 控制器学习或审批后,下发放通表项
1.5 用户发起访问(发出ip报文)
1.6 终端访问报文上行到出口
1.7 终端访问报文下行返回
1.8 在现网网关上配置PBR,强行将下行三层转发流量引流到旁挂管控设备
1.9 根据SDN控制器管控终端放通与否,旁挂设备决定是否将下行流量引回网关
1.10下行流量到达网关后,二层泛洪回用户侧
二、部署说明:
2.1 网关设备部署
1、网关设备与准入设备需要互联一条L2 trunk口物理链路(见拓扑橙色连线),放通需要管控的用户vlan,如果该接口有配置trunk vlan裁剪,必须将所有的管控用户vlan均放通,终端的ARP广播报文请求到网关后,会通过该L2 trunk口链路,将ARP广播报文泛洪到准入设备,从而使得准入设备可感知用户管控vlan的终端ARP报文,学习到管控终端的ARP信息。
注意项1:网关设备与准入设备的L2 trunk口互联链路,进行vlan裁剪时,必须放通所有管控终端的vlan,否则会使得终端的ARP广播报文无法泛洪到准入设备。
注意项2:网关设备如果所有下联接入汇聚的端口开启了二层端口保护,则网关设备与准入设备的L2 trunk互联链路不能开启隔离保护口,否则会使得终端的ARP广播报文无法泛洪到准入设备。
2、如果终端是通过非静态ip地址接入网络的,而是通过DHCP获取动态IP地址入网的情况,则还需要配置一个镜像配置,将所有网关的下联口配置为镜像源口,镜像目的口配置为网关设备与准入设备互联的L2 trunk口链路,将终端的DHCP报文镜像到准入设备,准入设备将DHCP报文pack-in到SDN控制器,从而实现SDN控制器感知DHCP终端上下线信息。
3、网关设备需要与准入设备互联一条L3物理链路(配置为普通路由口),用于网关设备将终端的下行流量通过PBR引流到准入设备,
注意项3:网关设备与准入设备不建议使用二层SVI口进行互联,建议使用普通路由口互联,避免L3链路的vlan与L2链路的放通vlan同时放通,导致网关设备和准入管控形成环路,导致网关设备发生环路故障。
4、网关设备的出口或服务器网段SVI下应用PBR,将目的地址为终端用户侧所在网段的流量引流到准入设备。
注意项4:有多个出口、多个上联口的情况下,都需要配置PBR,否则不配置PBR的接口,将无法管控到终端的流量转发情况。
注意项5:PBR配置需要匹配所有需要管控的终端用户侧IP网段,否则终端的下线流量不绕行准入设备,就无法通过SDN控制器管控到终端的网络中断/放通与否。
注意项6:网关设备需要配置高优先级PBR,不能采用配置优先级低于普通路由的PBR,即不能使用set default XX/set ip default XX命令配置PBR。
2.2 准入设备部署
基础部署同核心准入管控,如准入设备连接SDN控制器、SDN控制器配置下发业务网
用户网段为172.16.0.0/16,网关ip为172.16.0.1
1、 准入设备部署一条L2 trunk口与网关设备互连。这条物理链路的作用是:
作用1:网关设备通过这条trunk口链路,泛洪终端的arp广播报文到准入设备,准入设备通过openflow流表packet in上送终端的arp报文到SDN控制器,终端IP+MAC信息出现在待审批列表。
作用2:准入设备从三层路由口接收网关PBR终端的下行流量后,根据SDN控制器下发的终端静态ARP表项信息(审批允许终端入网后,下发静态arp)将流量二层转发至原始网关设备,原始网关设备再将报文查看ARP表转发到终端。
作用3:终端DHCP获取动态IP入网场景:通过这条trunk链路接收网关设备镜像过来的DHCP报文,再将DHCP报文通过openflow流表packet in上送到SDN控制器,使得SDN控制器感知终端的DHCP上下线情况。
注意项7:准入设备与网关设备的trunk链路做vlan裁剪时,也需要放通所有的用户vlan
2、 准入设备部署一条L3 链路与网关设备连接,接收网关设备通过PBR引流的终端的下行流量报文。
注意项8:准入设备不需要针对这条L3链路写默认路由指向网关设备,旁挂设备的管理,请写明细路由,否则下行数据通过PBR引至准入设备后,又会匹配默认路由,然后走L3链路转发回去,这样就达不到准入控制的效果。旁挂方案中,回流的数据,应该走L2接口转发至网关设备。
3、准入设备需要配置snmp、ssh、netconf、openflow协议对接配置,对接到SDN控制器,建立连接。
2.3 SDN控制器部署
1、 SDN控制器需要配置添加准入设备,业务角色添加准入设备为【业务网关】,与准入设备建立snmp、ssh、netconf、openflow协议连接
配置路径:【部署】->【设备管理】->【新增】
添加完成后可将鼠标悬停至叹号上查看各个协议连接状态,下图仅为示例
2、 SDN控制器配置需管控的业务网。
配置路径:【部署】->【以太网配置】->【业务网络】
点击“+”新增虚拟网
选中虚拟网,点击【+业务网】新增业务网
点击业务网,选择新增子网
注意项9:控制器上添加业务网时需配置原网关设备业务网内的空闲IP为网关,非真实网关,否则造成ARP冲突,流量转发失败异常。
如网关设备上真实的网关ip为svi 4000:172.16.0.1/16,则SDN控制器上应该配置为vlan4000业务网,网关ip为:172.16.255.254/16,该ip必须为原网关设备上空闲的ip,即原网关设备上没有该ip地址的arp表项信息,否则会造成ARP冲突,导致流量转发失败异常。(SDN控制器会向准入设备下发业务网对应的svi配置)
如果为终端为DHCP动态IP入网场景,则需要开启动态地址分配开关。
3、SDN控制器开启网关准入管控模式
下发到准入设备的有该业务SVI虚拟网关ip地址,该SVI关闭ARP学习命令,以及openflow流表。
interface VLAN 4001
ip address 10.106.0.2 255.255.0.0 //虚拟ip网关,必须和原ip不同,需要为空闲的ip
no arp-learning enable //下发关闭arp学习命令,准入设备无法学习到未审批终端的ARP
!
CORE-N18K#show of flowtable
/******************* openflow flow table[0]---flow number[4] ********************/
{table="0", duration_sec="143", priority="500", flags ="0x0",idle_timeout="0", hard_timeout="0", cookie="0x1197e606fb4000", packet_count="0", byte_count="0". match=oxm{eth_type="0x806", vlan_vid="4001"} instructions=[apply{acts=[output{port="controller", max_len="65535"}, output{port="normal"}]}]}
xid=7707, sync_flag=0x0, ss_index=0x15 //vid 4001的arp报文,命中该流表,报文送ONC
{table="0", duration_sec="10317", priority="700", flags ="0x0",idle_timeout="0", hard_timeout="0", cookie="0x1192be428f0000", packet_count="0", byte_count="0". match=oxm{eth_type="0x800", ip_proto="17", udp_src="137", udp_dst="64335"} instructions=[apply{acts=[output{port="controller", max_len="65535"}]}]}
xid=23170, sync_flag=0x0, ss_index=0x13
{table="0", duration_sec="10317", priority="700", flags ="0x0",idle_timeout="0", hard_timeout="0", cookie="0x1192be42900000", packet_count="1453", byte_count="771431". match=oxm{eth_type="0x800", ip_proto="17", udp_src="68", udp_dst="67"} instructions=[apply{acts=[output{port="controller", max_len="65535"}, output{port="normal"}]}]}
xid=23171, sync_flag=0x0, ss_index=0x14 //DHCP报文,命中该流表,报文送ONC
/******************************** openflow flow table end ****************************************/
flow total number = 3
开启网关管控模式,初次配置建议开启免管控时段,可以自动收集IP+mac、主机名、终端类型等信息。
interface VLAN 4001
ip address 10.106.0.2 255.255.0.0 //虚拟ip网关,必须和原ip不同,需要为空闲的ip
//开启免管控时段时,SDN控制器不下发关闭arp学习命令
注意项10:添加真实网关为免管控终端,预先在SDN控制器上进行绑定,外网才能正常访问网关(售前测试环境环境保证真实网关已准入;实际环境一般会免管控一段时间,无需手动再准入)。
三、交换机关键配置
3.1 准入(旁挂)设备关键配置
!
username ruijie privilege 15 password ruijie
!
aaa new-model
!
aaa authentication login default local
!
of controller-ip 172.18.149.30 port 6653 interface GigabitEthernet 2/0/28
no service password-encryption
!
redundancy
!
enable password ruijie
enable service ssh-server
!
vlan range 100,200,400,500,600,700,800
!
interface GigabitEthernet 1/0/1 //路由口,与网关设备连接
no switchport
ip address 192.168.1.2 255.255.255.0
!
interface GigabitEthernet 1/0/3 //trunk口,与网关设备连接,视情况进行vlan修剪
switchport mode trunk
!
interface VLAN 100
ip address 172.16.255.254 255.255.0.0 //管控vlan, 与ONC业务网配置要一致;需配置SVI 100的一个空闲IP,否则造成与原始网关IP冲突,比如现网的真实网关IP是172.16.255.1,那么我们就使用172.16.255.254
!
snmp-server community ruijie rw
!
//旁挂设备不要配置默认路由,若有设备管理需要,请写明细路由,走L3链路即可。
3.2 原始网关设备关键配置
interface GigabitEthernet1/0/1 //路由口,与准入设备连接
no switchport
ip address 192.168.1.1 255.255.255.0
!
interface GigabitEthernet1/0/3 //trunk口,与准入设备连接,视情况进行vlan修剪
switchport mode trunk
!
interface GigabitEthernet1/0/17 //出口,网关设备与路由器互联的路由接口
no switchport
ip address 10.10.0.1 255.255.255.0
ip policy route-map ruijie //在网关设备与上联路由器互联的接口上应用PBR。
interface Vlan300
ip address 172.18.50.1 255.255.255.0
ip policy route-map ruijie //服务器网关,如果需要实现PC访问内网服务器也需要审批,也可在内网服务器的网关SVI上应用,即在PC访问的服务器时,服务器回流的数据会被PBR引致准入交换机进行准入审批后方可实现通信。
!
interface Vlan100
ip address 172.16.0.1 255.255.0.0 //管控网段原始网关,不需要做任何改动
!
l 配置PBR,将目的地址为PC所在网段(管控网段)的流量引流至准入设备。PBR与指定track联动。
!
ip access-list extended ruijie
10 permit ip any 172.16.0.0 0.0.255.255 //将流向管控网段的流量,引流到旁挂设备
!
route-map ruijie permit 10
match ip address ruijie
set ip next-hop verify-availability 192.168.1.2 track 1
!
l 配置track与rns联动 //icmp探测旁挂设备的SVI地址是否可达,用于判断trunk链路是否UP,如果trunk链路DOWN,将导致终端流量无法从旁挂设备回流
!
ip rns 1
icmp-echo 172.16.255.254
frequency 6000
!
track 1 rns 1
!
l 配置流镜像将DHCP报文引流至准入设备(如果是静态入网,则无需配置镜像)
!
ip access-list extended dhcp
10 permit udp any eq bootpc any eq bootps //仅匹配dhcp报文
!
monitor session 1 source int g 1/0/4 rx acl dhcp //网关下联口的dhcp报文镜像到旁挂设备
monitor session 1 destination int g 1/0/3 //镜像至L2互联口
//如果设备版本需要该命令强制配置switch参数,则推荐网关设备与旁挂设备间仅连接一条trunk链路,以免两条trunk链路下产生环路