热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

“FCoE全解系列”之关键特性和技术分析

在前面文章中已经讲过,FibreChanneloverEthernet(FCoE)是一个把FibreChannel中的帧封装到一个增强的以太网(Eth

640?wx_fmt=png&wxfrom=5&wx_lazy=1


0?wx_fmt=gif&wxfrom=5&wx_lazy=1

      在前面文章中已经讲过,Fibre Channel over Ethernet(FCoE)是一个把Fibre Channel中的帧封装到一个增强的以太网(Ethernet)中的传输协议标准,它应来组建存储网络。关于FCOE技术的介绍网络上非常多资料,但大多都比较分散。本文通过几个FCoE的技术细节,将存储网络FCoE中必须要了解的知识进行整理和总结,方便小伙伴们学习和查阅。


     FCoE旨在通过以太网直接传输光纤协议,让存储网络中的数据可轻易跨越光纤和以太网的界限,通过同一种物理介质(以太网络)进行传输,同时保留了FC中的上层协议的特性,例如数据一致性,流控制等,但不使用原先光纤网络的物理线路与接口。目的在于降低用户在存储网络构建和管理方面的成本和复杂性。


      但是FCoE和FC协议又存在很多区别,如FC协议是运行在传统的FC SAN的存储网络中。而FCOE则是运行在以太网的存储协议。FC协议是运行在FC网络中,所有的报文都是运行在FC通道中。在以太网中存在各种协议报文,有IP,ARP等传统以太网协议,而FCOE是运行要在增强以太网中需要创建一个虚拟的FC通道来承载FCOE报文


0?wx_fmt=png

      FCOE保留了FC-2以上的协议栈,把FC中的FC-0和FC-1用以太网的链路层取代。因为FC的FC-0作用是定义承载介质类型,FC-1作用是定义帧编解码方式,这两层是在FC  SAN网络传输时需要定义的方式。而FCOE是运行在以太网中,所以不需要这两层处理,而是用以太网的链路层取代这两层处理。

0?wx_fmt=png


      FCOE和FC的帧结构唯一不同的就是FCOE就是在FC帧外层在封装上一层以太网报头。实际上,FCoE的优势显而易见,下面也简单总结下。


      部署FCoE以后,企业只需要使用以太网络构建数据中心的网络,而不是原来使用光纤网络和以太网络进行结合。同时减低线路的总数,主机端接口卡(HBA,网卡)等的总数。而这两者会被集成为同一个接口设备 –融合网卡Converged Network Adapter(CNA)用来同时处理FC协议和TCP/IP协议,从而保证在同一个主机接口上对存储网络和IP网络进行隔离。


      另外,未来FCoE可能会提供相比FC网络更大的带宽,FCoE目前起始就是用10 Gb的以太网,而40 Gbps和100 Gbps的以太网也已经推出,相对FC网络方面,8Gb和16Gb是主流,最新的32Gb也刚刚出现,但相对也在起步阶段的100Gb以太网来说还是稍逊不少。


      由于以太网是可以容忍网络丢包的,但是FC协议不允许出现丢包,那么FCOE做为以太网中传输的FC协议来说同样是继承了这点特点不允许丢包。所以想要FCOE协议可以正常的运行在以太网络中就需要对以太网做一定的增强来避免丢包 ,这种以太网叫增强型的以太网。


      由于FCOE是运行在以太网中的存储协议,要让FCOE能正常的运行在以太网中,就需要FIP初始化协议来获取FCOE运行的相应vLAN,与哪个FCF建立虚通道,和虚链路的维护等。所以从这方面来讲FCOE比FC多了一个FIP的初始化协议 。 


      简单的说FCOE协议就是指FC协议承载在以太网上的一种新型的协议,那么要让FC协议正常的在以太网中运行,需要协商一些参数以便更好的在以太网上运行。FIP的作用就是协商这些参数。FIP初始化协议是FCoE控制平面相对FC控制平面新增的协议,协商过程包含四个阶段,即vLAN发现、FCF发现、虚链路建立、虚链路维护,这四个阶段主要完成以下功能如下图所示。


0?wx_fmt=png

第一阶段vLAN发现


      在FCOE网络中需要将FCoE的VSAN映射到指定一个专用VLAN中,而VLAN发现阶段就是获取FCoE流量所使用的VLAN。

      服务器Node节点发送一个目标MAC为组播地址vLAN Discover Request报文,本地所有FCF(FCOE交换机)都会监听到这个MAC地址,并对该FIP VLAN Discovery 进行响应,响应报文中携带了FCOE协议可以使用VLAN信息。获取FCoE流量所使用的VLAN;

第二阶段FCF发现


      这个阶段的作用是发现本地所有的FCF优先级最高的设备并与其建立虚链路。经过上一阶段vLAN发现后,从这个阶段开始,FCoE报文所携带的vlan就是上面协商的vLAN ID


      服务器Node节点发送一个目标MAC为组播地址Soliciation 报文,本地所有FCF(FCOE交换机)都会监听到这个报文,并对其回应一个Nnicast Advertisement报文,这个报文中携带了FCF优先级,FCF MAC等信息。Node节点收到多个Advertisement报文之后,会选择一个优先级最高的设备与其建立虚链路。这里要注意的是FCF也可能定期的发送组播Advertisement报文。

第三阶段虚链路建立


      这个阶段是用于建立虚链路vLINK。FCOE与FC不同,需要在以太网通道中建立一个虚拟的FC通道用于传输FCOE报文。这个阶段有两种情况。


  • 如果服务器Node节点的接口是物理接口就使用FLOGIC报文进行登录

  • 如果是服务器Node节点虚拟出的NPIV接口就使用Fdisc报文进行登录建立虚链路。


      但是两种情况的作用都是一样的,建立虚链路,他们之间的区别是一个是物理接口使用的注册报文,一个是虚拟接口使用的注册报文。FCF收到Node发送的Flogic/Fdisc报文后,会回复一个确认报文,报文中携带了分配给Node节点的FC_ID。所以实际上这个阶段有两个作用,一个是建立虚链路一个是分配FC_ID。

最后阶段虚链路维护


      同其他很多协议一样,FCOE也需要一个机制来保活邻居,这就是这个阶段的作用。在建立虚链路后,就会启动保活定时器,Node节点会定期发送Keeplive报文,默认情况下8000ms发送一次Keeplive,当2.5倍的Keeplive时间内也就是20s内FCF没有收到Node节点发出的Keeplive报文,FCF认为Node已经掉线,会马上发送clear vlink的报文,清除虚链路。


      在FCoE数据传输的每个节点上(网卡,交换机)都需要启用巨帧Jumbo Frame以支持封包以后的以太网帧的传输(以太网原来默认帧最大1500字节,传输FC帧需要2112)。不同的厂商的产品默认的巨帧MTU有所不同,比如思科的Nexus默认值是2158。


     FCoE其实不能运行于普通的10/100Mb、1Gb和10Gb的以太网络,因为普通的以太网并不是Lossless Ethernet,它不包含任何重传(重传由上层的TCP协议控制)和流控制技术, 保证传输等功能。


      以太网使用到了一种叫做PAUSE的机制,PAUSE机制可以防止瞬时过载导致缓冲区溢出时不必要的帧丢失,实现了一种简单的停-等式流量机制,来提高传输的质量。而原有的PAUSE机制在决定对特定端口进行停-起的操作的时候并没有一个优先级的控制。


      增强的以太网解决这个问题,在原有的以太网的基础上增加了一些扩展的协议机制,使得让以太网更适合存储网络。这种控制机制主要包括以下几种。


  • Priority Flow Control(IEEE 802.1Qbb)和Enhanced Transmission Selection(IEEE 802.1Qaz),它们的作用是可以对帧的传输优先级进行调整。例如将存储网络的帧的优先级调高,获得更高的带宽,以保证存储网络传输的速度和质量。

  • Congestion Notification(IEEE802.1Qau)作用是对以太网中造成冲突的源和目标端同时叫停的机制。

  • 增强的以太网还提供了二层网络的多路径机制,替代原有Spanning Tree Protocol(STP)只支持单路径。

 

      FC协议和FCOE协议虽然两者是不同协议,但是他们之间还是有相应联系,FCoE仍然保留了FC中N_Port、F_Port、E_Port的结构以及FC的管理模式,所以在上层处理和FC是没有区别的。

 

  • N_Ports(HBA和存储FC前端口)在FCoE中叫做VN_Ports(CNA和存储FCoE端口)

  • F_Ports(Fabric端口)在FCoE中叫做VF_Ports(FCoE交换机的端口)

  • E_Ports(FC交换机到FC交换机)在FCoE中叫做VE_Ports(FCoE以太网交换机互联的端口)。


     如果你的企业在以太网上部署存储且规模不是很大,iSCSI和NAS分别是在B块和文件端很好的选择。如果您的企业已经有更大规模的存储网络,在新建基础架构的情况下,使用融合的FCoE网络可以同时兼顾块和文件存储,10Gb的速度可以同时用来支持FCoE,iSCSI,NAS业务数据,实际上,以太网的高速发展也会使得企业在部署FCoE上也取得了一些成效。


相关阅读

  • “FCoE全解系列”之增强型以太网技术

  • “FCoE全解系列”之网络融合交换机类型

  • “FCoE全解系列”之融合方案和典型组网



温馨提示:
请搜索“ICT_Architect”“扫一扫”下面二维码关注公众号,获取更多精彩内容。

640?wx_fmt=png

专注做一个有情怀的技术分享平台

0?wx_fmt=gif


推荐阅读
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了如何使用iptables添加非对称的NAT规则段,以实现内网穿透和端口转发的功能。通过查阅相关文章,得出了解决方案,即当匹配的端口在映射端口的区间内时,可以成功进行端口转发。详细的操作步骤和命令示例也在文章中给出。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 在ubuntu服务器上安装vscode,但是目前使用的方法都无法成功。第一次安装经历:安装完anaconda后有自动安装vscode的选项,输入yes后,没有出现错误,但是在终端输 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
可乐加冰2502937787
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有