从三层转发层面对比下openflow和传统交换机

http://www.sdnap.com/sdnap-post/3848.html


三层转发

现在三层交换机基本都用相应的交换芯片来做,交换机的的主要功能从处理流程上来说主要有以下几点:

  1. 端口接收报文,并形成帧,进行端口统计、MTU检查,对报文的端口信息进行标注,分配报文buffer;
  2. 解析端口的报文内容信息,包括每个二层和三层字段,以及TCP或UDP的PORT等;
  3. SMAC学习,然后进行一些防DOS攻击的检查,可能支持的有SMAC=DMAC,DIP=SIP等;
  4. 对报文的隧道进行识别和解封装,比如IPV4-IN-IPV4等;
  5. 对报文的VLAN TAG进行识别和处理,包括基于Q-IN-Q等二层转发中提及的功能;
  6. 进行DMAC+VLAN ID的查找进行二层转发,若DMAC是系统的MAC地址,则进行三层转发;若报文是MPLS需要走MPLS的报文处理流程;若是VPLS则走VPLS的流程;都有需要满足的条件进行判断报文具体走哪种转发流程;
  7. 对报文进行ACL表项的查找,如果匹配有丢弃的动作则丢弃;
  8. 根据报文的VLAN ID、COS、DSCP等值进行入口队列映射,进入不同的队列;
  9. 经过buffer的队列调度算法被转发到出端口,进行出口vlan检查、翻译等功能;
  10. 根据入口流程对报文进行相应的QOS字段进行修改;
  11. 经过出口ACL表项的匹配,并执行相应的动作;
  12.  转发到出端口,进行出口MTU检查,如果通过转出交换机。

交换机大概的处理流程就是这样的,里面还有很多细节只能在看芯片资料了。不过需要说明的是不同的交换芯片对上面表现的功能基本一致,但是对报文的底层处理流程却有很大区别,BCM和MVL芯片除了在功能上支持度有差别外,最大的一个区别就是ACL转发对于BCM芯片来说在二层和三层转发流程后面,但是MVL交换芯片则是相反。熟悉交换芯片的人,对于判断交换机的故障是无需看具体芯片驱动或平台代码的,根据交换机的配置,将报文在芯片过一遍就知道报文走到哪里被卡出了,因为网络的问题,就这么几类:

  1. 下发配置报错或下发配置没有报错,但是不生效:跟踪命令下发流程的代码就可以了,很容易就可以找到解决方法;
  2. 配置没有报错,但是报文该转的不转,或者该丢的不丢,这个时候就是考验对交换芯片及配置下发实现的熟悉程度了。

除了二层转发和三层转发外,主要还有ACL和QOS功能。交换机交换机的QOS功能主要是为了保证服务质量,比如为用户提供相应付费的带宽、限制某些用户的最大可用带宽、对报文根据某些字段进行分类进入有优先级的队列、对各个队列进行队列调度、WRED功能、修改报文中的QOS字段以形成整个链路的有机处理流程等,大致分为以下这么几个流程:

从普通交换机看openflow交换机1

另外,为了限制广播或组播的风暴,有的交换芯片在端口的出入方向都有对未知单播、组播报文和广播报文的基于PPS的风暴抑制功能。用于限速的器件在交换机芯片中多称之为meter,即限速器,但是该器件无法用于测量速率,因为它的行为是对于超过限制的报文进行丢弃而不是统计;然后为了实现对不同报文进行不同处理,meter利用令牌桶或者漏桶对有没有超速的报文进行标记,称之为丢弃优先级,最初分为绿色报文和红色报文,也就是说如果需要丢弃的话会先丢弃红色报文;但是因为硬件meter对于限制速率是有误差的,而且速率非常大的时候这个误差的绝对值是不小的,为了能让管理员决定对这部分误差的处理机制,将这个误差范围内的称之为黄色报文,后来扩展了下绿色、黄色和红色报文的速率范围都是可以配置的,以进一步增加限速的灵活性;这样做相当于对报文的转发速率用两个阶梯分了三类,最低的绿色报文,中间的属于黄色报文,最高的属于红色报文;一旦有需要丢弃的时候,和两种颜色 的情况类似,红色报文最先被丢弃,黄色次之,绿色报文基本是允许通过的;这种对报文颜色分类的方法有:单速单桶,单速双桶,双速双桶,改进的双速双桶和改进的单速双桶;另外结合TCP重传机制,为了避免TCP全局同步的发生,引入了WRED等功能,减少丢包引起的TCP全局同步问题。

ACL功能是交换芯片的一个重要部分,可以用于实现交换机 的防火墙、认证(比如DOT1X认证、webportal认证等,其中webportal是为了实现无法安装客户端的打印机等设备的认证,现在很常用的一种机制如3A)、对报文进行细粒度QOS分类(以实现限速功能)、计数等功能,ACL表项匹配后产生的动作有丢弃报文、让报文通过继续转发、修改报文某些字段的额值、指定报文的下一跳、指定报文的出端口(称为重定向功能)、指定报文copy一份的出端口(称之为基于流的镜像功能);ACL的流程大体如下:

从普通交换机看openflow交换机2

上面描述的处理流程是非常简略的,只是一个大体的流程,而且ACL表项对于不同厂商甚至不同型号的芯片实现机制可能都有不同,二者不同芯片对于报文能匹配的字段多少、表项的多少、支持修改报文字段的类型的多少都是不同的。但是这部分绝对可以说是openflow标准想法的最初模型。因此用openflow于开发防火墙、QOS的细粒度分类器、接入端交换机的认证等功能,是非常容易支持的,又加上现在交换机可以统一控制,那么QOS中综合服务模型里的RSVP协议就可以得到非常好的实现,当然这个前提依然是要有足够的带宽资源够分配。

认证功能通常做法是首先下发一条让所有报文都丢弃的默认规则(这条默认规则使得交换机中默认所有用户都是安全的情况得以改变,使之接近现实中每个用户都可能是攻击者的的情况,但是使用的通常拓扑依然不是很灵活),然后当有用户开始使用通信时,首先通过把户名和密码等信息发给认证服务器鉴别身份,唯有合法用户才能获得认证服务器提供相应级别服务的许可,然后通知网络设备下发一条优先级高于默认规则的规则让这个用户的相应级别的服务报文可以转发以完成认证和授权动作,并且开始相应的统计和计费功能,其他未有认证的用户依然无法访问相应资源。用openflow交换机实现这些功能是轻而易举的事情,而且openflow交换机有controller的概念,可以完全起到认证服务器的作用,而openflow规则实现报文的丢弃和转发动作是再通常不过的规则了。常用的AAA协议是Radius,参见RFC 2865,RFC 2866。另外还有 HWTACACS协议(Huawei Terminal Access Controller Access Control System)协议。HWTACACS是华为对TACACS进行了扩展的协议。

Openflow最早的概念提出用于如何在现有的网络进行新的协议实验,因为一种新的协议被提出后,必须要经过真实网络的检验才能说明可以被实际应用,并且及时发现影响和缺陷,由此想要把实验数据和网络中的业务数据同时在现有的高校网络上同时分别地传输,这样达到两者的互不影响而又能进行试验。Openflow主要进行基于流表(flow table)的转发,和ACL的表项类似,基本上每一个流表都是一个ACL匹配的过程,而且有多个流表,前面流表的匹配和动作信息后面的流表可以得知;openflow支持ACL可以说是本能的,但是对于传统芯片的ACL表项而言openflow对各种报文的解析和字段匹配支持程度要高很多,每个流表支持的动作种类要多很多,流表表项的大小要多很多;Openflow交换机对于QOS的支持有基于流标项设置报文入队列、根据meter进行限速、基于counter进行计费、基于group的select进行队列调度等概念;另外,openflow这个想法的特点有以下几个方面:

  1. Openflow是控制层面和数据转发层面比以前都分割的更清晰,控制层比机架和堆叠技术的master的控制域可以大得多;
  2. Openflow形成标准后,一个好处就是统一的API来下发对硬件的配置,这样便可以实现类似于PC机的处理——东家的CPU,西家的硬盘,南家的主板,北家的内存条,可插拔地集合在一起,拉个开源的linux或者盗版的windows就可以用起来;而交换机也希望将来随便找个厂家的交换芯片,整个CPU和风扇电源小配件,集合一起再加上开源的Openflow交换机操作系统就可以进行网络转发或者网络实验;而且随着软件开源的盛行,交换机和服务器的硬件架构等必然会越来越多的开图;
  3. Openflow的表项可以很容易实现匹配任意格式的报文,这样很容易结合具体的业务来转发,因为不同的业务反映在报文上就是不同的报文头部;而如果在整个链路上都实现SDN的部署需要进行全网控制和实施;所以说,搞SDN可以像GOOGLE样有自己专线和数据中心全局搞,也可以像某些云服务公司提供云主机租赁服务中就一定的外网带宽内网自己搞,但是却很难做到对运营商级的链路进行控制部署SDN;
  4. Openflow交换机研发芯片商可以搞因为可以卖给设备商,设备商可以搞因为可以卖给客户,互联网公司因为自己的数据中心有很多业务方面的结合可以用,高校和科研单位可以搞因为有很多标准和论文可以发表,唯独国内情况的运营商相对来说没有太大需求,他们只是提供转发,把报文转发到对端即可,无需关心业务,只许关心客户;用openflow交换机也确实可以实现这些,但没有更换的必要,而且用openflow必须花钱买设备来代替原有的传统交换机,但似乎没有需求因为运营商的业务概念太模糊。

Openflow交换机的转发流程就是接收的报文被解析后去流表里被匹配,如果有匹配就去执行或者记录相应表现的动作,然后继续下一个表项,直到最终走完所有表项或者没有后续表项需要去匹配,对所有的动作进行决策然后执行有冲突里优先级高的动作及所有不冲突的动作:

从普通交换机看openflow交换机3

传统交换机中功能配置类型有寄存器、基于HASH查找的RAM与少量ACL表项所用的TCAM等,所以openflow交换机所用的基础单元与传统交换机不太一样,少量寄存器,大量的TCAM表项,这必然使得交换芯片的硬件成本有所增加,而且有表项匹配字段多、可以设置的动作多、表项条数多,而实际中每条表项可能只匹配几个字段,甚至一两个字段,而动作往往是一两个,表项可能也只是用到很少的一部分,这样势必造成了一定程度的浪费;所以从资源使用上说,传统交换机在结合业务转发上有些不足,但是相对于openflow交换机确实比较节省资源和成本的(虽然随着IT产品的大规模量产价格已经越来越低)。所以将来应该不会出现纯的openflow交换机,而大部分是hybrid模式的交换机,这样 二层和三层转发还保留,增强交换芯片在对报文解析能力、增加规则的动作类型和增多表项的条目数,这样即节省了资源,也实现了对以往产品的兼容性。

随着IT技术的发展,现在交换机的研发门槛越来越低,价格也越来越低,这些从IT研发人员的白菜价格就可以看出,我们的努力给客户带来了利益,但是我们越是做的精致,我们的价格却越低;这点和互联网真是有非常大的区别。

作者:SDN qq群#北京-小武,微博@北京-小武


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值