MFF原理描述
工作机制
如图7-1所示为以太接入网MFF方案的应用场景,这些应用场景中往往需要网关统一管理和计费客户端的数据流量。在EAN(Ethernet Access Nodes)上部署MFF,可以使客户端的数据流量首先经过网关再通过三层转发至其他用户,实现了二层流量的隔离,同时达到监控和计费的目的。
MFF环境下用户的二层隔离和三层互通是通过ARP代答机制实现的,这种代答机制在一定程度上减少了网络侧和用户侧之间的广播报文数量。关于ARP代答机制,具体请参见实现功能中的介绍。
接口角色
在部署MFF的设备(后续简称MFF设备)上存在两种接口角色:用户接口和网络接口。
用户接口是指连接终端用户的接口。
用户接口对于不同报文的处理方式如下:
- 丢弃IGMP Query报文,允许其他IGMP协议报文;允许DHCP报文通过。
- ARP报文上送CPU进行处理。
- 若已经学习到网关MAC地址,则仅允许目的MAC地址为网关MAC地址的单播报文通过,其他报文将被丢弃;若没有学习到网关MAC地址,目的MAC地址作为网关MAC地址的单播报文也将被丢弃。
- 组播数据报文和广播数据报文都不允许通过。
网络接口是指连接其他网络设备如接入交换机、汇聚交换机或者网关的接口。
网络接口对于不同的报文处理如下:
- 允许组播报文和DHCP报文通过。
- 对于ARP报文则上送CPU进行处理。
实现功能
MFF解决方案主要包括以下几个方面的内容:获取网关和用户信息、ARP代答、网关探测、应用服务器访问、用户在线探测、用户隔离端口和MFF安全。
获取网关和用户信息
用户获取IP地址的方式有两种:静态配置IP地址和通过DHCP协议动态获取IP地址,对应这两种方式,MFF设备获取的网关信息也分为两种情况:手动配置网关IP地址和DHCP Snooping动态定制网关。
手动配置网关IP地址
如果用户的IP地址是静态配置的,MFF设备则无法通过DHCP报文来获取网关IP地址,因此需要在MFF设备上手动配置该IP。配置静态网关(即静态用户的网关)的IP地址后,MFF设备通过捕获用户侧在线用户的ARP请求报文,进而触发生成或者更新包含用户信息的MFF表项。如果在未学习到网关MAC地址的情况下收到用户的ARP请求,MFF设备将不会转发该ARP请求,而以用户的IP地址和MAC地址为源信息构造ARP请求报文发给网关,并从网关回应的ARP应答报文中学习网关MAC地址。
DHCP Snooping动态定制网关
如果用户的IP地址是通过DHCP协议动态获取的,MFF设备将从DHCP Snooping表中获取用户的IP地址和MAC地址信息,并解析来自网络端口的DHCP ACK报文中的OPTION121或OPTION3字段,从中获取网关IP。之后,MFF设备再以用户的IP地址和MAC地址为源信息构造ARP请求报文发给网关,并从网关回应的ARP应答报文中学习网关MAC地址。
当MFF设备学习到多个网关时,默认采用第一个网关为用户代答,因此只会向第一个网关发送ARP请求。
ARP代答
MFF设备捕获用户发出的ARP请求报文,并以网关的MAC地址作为源MAC构造ARP应答报文发送给用户,使用户的ARP表记录的IP地址都与网关的MAC对应,由此强制用户发出的所有数据报文在二层转发中都以网关为目的地,从而使数据流量监控、计费得以实施,提高网络的安全性。
对于网关请求用户的ARP报文,MFF设备则会以用户的MAC地址进行代答。
网关探测
为了及时感知网关MAC地址的变化,MFF支持网关定时探测功能。当网关探测功能开启后,MFF设备每隔30秒会扫描已记录的网关信息,并使用某一个用户的信息构造ARP请求报文发向网络端,再从网关的ARP应答中获取网关的MAC地址。如果MAC地址发生变化,MFF设备将立即更新网关信息,同时广播免费ARP报文到用户端,用于及时刷新用户的网关地址映射关系。
若VLAN中没有记录任何用户,那么MFF设备将不会向网关发送ARP请求报文,直到有一个用户上线为止。
应用服务器访问
如图7-2所示,在网络中除了网关外可能还部署了应用服务器,比如DHCP Server、组播服务器、其他业务服务器等。如果不在MFF设备中指定应用服务器的IP地址,用户如果访问应用服务器,流量会先被转发至网关,然后再被转发至应用服务器,这样就会增加上行流量,消耗带宽,占用网关转发资源。
为此MFF在处理用户对应用服务器的访问时,在MFF设备中指定应用服务器的IP地址,设置用户可以访问的应用服务器列表。MFF设备捕获从客户端主机发出的ARP请求,并以应用服务器的MAC地址作为源MAC地址应答ARP。对于应用服务器的ARP请求,MFF设备将会回应它所请求的用户MAC地址。这样实现用户与应用服务器之间的二层互通,流量不需要经过网关就可转发至服务器。
用户在线探测
当网关用来计费时,如果按照时间计费,网关需要通过ARP请求来感知用户某个时刻是否在线。MFF默认的处理方式是:网关对于用户的请求会被配置MFF特性的MFF设备直接代答,只要MFF表项未老化,MFF设备始终能代答网关的请求,网关获得的信息是用户始终在线,但实际上用户可能已经下线。为了避免这种情况,可以配置网关探测用户状态的ARP报文透传功能,使MFF设备透传网关发给用户的ARP请求报文,不再进行ARP代答。如果网关收不到用户发出的ARP应答报文,则可以判断该用户已下线。
用户隔离端口
在如图7-3所示的MFF组网中,UserA和UserB通过SwitchB的同一接口接入,当两个用户间需要通信时,UserA请求UserB的ARP请求报文会广播到SwitchB上,同时UserB也会收到该请求报文。这时如果SwitchB按照MFF的ARP代答机制将网关的MAC地址应答给UserA的话,UserA会收到两份ARP应答报文,并且两份报文是冲突的,导致UserA学习到的ARP表项不可预知。因此部署了MFF特性的设备会对用户发送的ARP请求进行接口一致性检查,如果发现请求和被请求的用户来自相同的接口,就会对ARP请求报文进行丢弃。
然而在数据中心的服务器虚拟化场景下,处于同一个物理服务器内的多个VM(Virtual Machine),可能划分到同一个VLAN中并且需要二层隔离。此时由于多个VM共享同一个接入链路,因此多个VM对于MFF设备来说就是多个用户通过同一个用户接口接入。由于VM间很多情况下是完全业务隔离的,此时MFF设备必须对ARP请求进行代答,否则VM间将无法三层互通。
在上述情况下,MFF特性支持用户隔离端口。配置了用户隔离端口后,将不再对同一接口发来的ARP请求报文进行接口一致性检查,而是直接进行ARP代答。
MFF安全
在MFF组网中可能存在ARP Snooping学习的动态用户,通过伪造实际不存在用户的ARP请求报文,让设备学习到一些错误的用户信息,占用设备资源,从而影响正常用户的学习以及其他业务。
在这种情况下,可以配置关闭ARP Snooping用户的动态学习功能,让其不能学习到其他用户信息;或者配置VLAN内用户的最大用户数,因为网络中DHCP用户或者静态配置用户数量是相对稳定的。