您现在的位置:首页 > 服务支持 > 资讯动态资讯动态

关于全国产交换芯片-盛科CTC5160

 概述

    海翎光电的小编接触盛科芯片4个年头了,中间基于CTC5160、CTC7132、CTC2118做了很多项目,下面基于小编对盛科SDK的理解,做一些笔记,以便时常翻阅,愿意与小伙伴一同分享。资料主要来源盛科对外提供的资料。
ctc5160芯片介绍
    CTC5160(GreatBelt)是一款多功能,高性能的IP/Ethernet交换芯片,旨在满足下一代企业网和包传输接入/汇聚网络需求。凭借高度集成的L2~L4层包处理引擎,先进的流量管理器和内置的OAM引擎,芯片提供丰富功能和高达120Gbps线速处理能力。
     依托盛科先进的灵活表项管理(FTM™)技术,CTC5160可以根据不同的应用场景提供不同的表项配置,单芯片最大支持128KMAC或者64K IP LPaM表项。
     作为盛科第三代高性能核心交换芯片,CTC5160以其卓越的可扩展性增强了原有的基于服务的处理架构(service-aware architecture)。芯片的处理流程不仅支持完全无阻塞的高性能交换,而且还为客户化提供了额外的灵活特性。
0.png
CTC5160可以灵活配置为不同的工作模式,典型的如下:

  • 24X1GE + 8X10GE
  • 48X1GE + 8X10GE
  • 12X10GE

N-Cube架构
1.png

SDK常用的概念
架构
lport、gport、logic port
      端口是交换芯片和其它设备进行对接传输数据的,盛科sdk中把端口划分成了本地端口(lport)、全局端口(gport)和逻辑端口(logic port)这三种类型。
lport
    单芯片情况下的本地端口,包括物理口、芯片中保留端口、内部端口。
本地端口一般由芯片能出的MAC数目而决定,芯片支持的本地端口最大值:

  • Greatbelt 支持128个本地端口
  • Humber 支持256个本地端口

物理端口的作用:可以作为一些表项的索引,例如DsPhyPort、DsSrcPort、DsDestPort.
Greatbelt lport的组成
2.png
gport
    如果单芯片情况下表示的就是lport,但是有时会出现多芯片场景的应用,例如分布式系统或者堆叠系统。使用lport是无法区分哪个芯片上的端口。此时就需要global port,简称gport。
    像堆叠系统中,多台堆叠成员设备虚拟成一台网络设备,此时单播转发表的出端口必须要知道是哪个芯片上的端口,gport就携带芯片信息,然后经过堆叠口单播出去。
Global port的组成
3.png
logic port
    盛科的逻辑端口是一种物理端口的映射,指的是一种业务在一个物理端口上的抽象,用在特殊的地方。

  • VPLS:作为AC的logic port时,可以通过gport+vlan或gport映射得到,作为PW端口时可以通过VC Label映射得到。
  • APS:两层保护切换网络,一对保护组的出口同时属于一个logic port,可通过Port模块的接口把两个端口配置属于同一个logic port。

FID
Greatbelt芯片最大支持16k个FID。
Forwarding Instance ID:转发实例号,盛科的芯片所有二层转发都基于MAC+FID进行的。FID的来源

  • 基于VLAN的L2 Bridge转发

1.IVL: vlan:fid是1:1关系
2.SVL:vlan:fid是n:1关系,可通过配置DsVlan.fid对应的VLAN在SVL中的FID。

  • 基于C+S VLAN的转发

上层用户可以通过Vlan mapping的接口ctc_vlan_add_vlan_mapping()把C+S映射到一个FID中进行转发。

  • 基于VSI的VPLS的转发

在VPLS应用中,虚拟交换实例即VSI可映射为芯片中的FID,在配置AC端口或PW端口时指定在同一个VSI,相当于在同一个转发实例中转发。VSI范围4096 + 1K
Mcast Group ID
    在芯片中,二层组播、三层组播、基于VLAN的泛洪、基于VSI的泛洪都采用组播复制的方式实现,每个组播组都是用组播ID来索引。
下面时默认Mcast Group ID分配情况
4.png
VRF ID
VRF:Virtual Routing Forwarding,虚拟路由转发实例。在一台交换机上启用VRF,可以虚拟多台交换机,三层之间相互隔离。每个VRF独立管理自己的路由表。
    一般VRF在L3VPN中使用,在PE设备上,为每个直接相连的Site建立并维护专门的VRF实例,即VPN实例。每个实例有自己的IP路由表、标签转发表、与VPN实例绑定的接口以及VPN实例的管理信息。
    在盛科SDK中,vrfid属于L3 interface的属性。
L3 interface
l3 interface 全局支持1k interface, 分为三种类型:

  1. physical interface: 为Routed port,仅仅可以配置三层属性,只有路由功能,相当于路由器上的接口,是基于物理port的,可以直接连接路由器。
  2. Vlan interface: 是三层交换机中vlan配置的路由接口,Vlan interface基于vlan,vlan接口集成了交换和路由的功能。
  3. Sub interface: 为Routed port,仅仅可以配置三层属性,只有路由功能,是基于port + vlan来区分的,在一个物理端口port上,可以通过vlan来划分不同的Interface。

Nexthop
    NextHop在盛科芯片中是一个很重要的概念,它是对芯片中一系列表项的总称,这些表象包括DsFwd、DsNexthop、DsL2Edit、DsL3Edit。这些表项的作用就是决定将报文发往哪些端口,并且在出端口前对报文做哪些编辑等等。
NextHop 类型

  • L2UC:二层单播,初始化创建,FDB使用。
  • L2MC:二层组播,SDK维护,用于二层组播
  • IPUC:三层单播,用户自己创建删除,可以add/update/remove.
  • IPMC:三层组播,SDK维护,用于三层组播
  • MPLS
  • IP tunnel

可以归为两类:

  1. 用户可以管理的:IPUC, MPLS, IP tunnel
  2. SDK自己维护:L2UC, L2MC, IPMC

自定义上送CPU的报文类型
    在开发私有协议时,有时会用到特殊的报文类型,芯片无法自动识别上送CPU,此时需要采用特殊手段,由芯片主动抓取,然后上送CPU进行处理。
创建Mcast Nexhop
    用于识别出报文后,报文将要进行的动作,发往哪些端口。

  1. /* 直接创建一个mcast nexthop即可,用于acl识别出报文关联 */
  2. ctc_nh_add_mcast(mcast_nhid, &nh_mcast_group);

特殊报文识别
ACL报文抓取:

  1. ctc_acl_create_group —创建一个入方向的acl组。
  2. ctc_acl_add_entry — 创建acl表项,可以基于l2/l3/l4进行报文的识别。
  3. ctc_acl_install_group — 安装,使之生效。

{/*  根据l4类型或则端口号进行匹配 示例 */

  • acl_entry->entry_id = entry_id;
  • acl_entry->key.type = CTC_ACL_KEY_IPV4;
  • p_key->flag = CTC_ACL_IPV4_KEY_FLAG_L4_PROTOCOL;
  • p_key->l4_protocol = l4_protocol;
  • p_key->l4_protocol_mask = 0xff;
  • p_action->nh_id = nhid;   /* 第一步创建的mcast nexthop */ 
  • p_action->flag |= CTC_ACL_ACTION_FLAG_REDIRECT;
  • ret = ctc_acl_add_entry(acl_group_id, acl_entry);
  • }

创建Misc Nexthop
使用的Misc Nexthop,用于关联cpu reason,上送CPU。

  • nh_param.type = CTC_MISC_NH_TYPE_TO_CPU;
  •  nh_param.misc_param.cpu_reason.cpu_reason_id = reason_id;
  • ret = ctc_nh_add_misc(nhid, &nh_param);

自定义CPU Reason
1.创建一个CPU reason, 并映射到16个CPU group中的一个queue

  • que_cfg.type = CTC_QOS_QUEUE_CFG_QUEUE_REASON_MAP;
  • que_cfg.value.reason_map.cpu_reason = reason_id;
  • que_cfg.value.reason_map.queue_id = queue_id;
  • que_cfg.value.reason_map.reason_group = group_id;
  • ret = ctc_qos_set_queue(&que_cfg);


2.将CPU reason的目的地指向CPU

  • dest_type = CTC_PKT_CPU_REASON_TO_LOCAL_CPU;
  • que_cfg.type = CTC_QOS_QUEUE_CFG_QUEUE_REASON_DEST;
  • que_cfg.value.reason_dest.cpu_reason = reason_id; 
  • que_cfg.value.reason_dest.dest_type = dest_type;
  • ret = ctc_qos_set_queue(&que_cfg);


3.最后将上述创建的上送CPU的Misc Nexthop关联这个CPU reason

  • nh_param.type = CTC_MISC_NH_TYPE_TO_CPU;
  • nh_param.misc_param.cpu_reason.cpu_reason_id = reason_id;
  • ret = ctc_nh_add_misc(nhid, &nh_param);


关联Mcast Nexthop和Misc Nexthop
这一步主要是将Misc-Nexthop添加到Mcast-Nexhop中去。上面使用Mcast-Nexthop的目的是为了不单单将自定义报文上送CPU,而且还要转发出去。如果仅仅时上送CPU,可以直接省略掉Mcast-Nexthop步骤,直接在ACL规则中关联Misc-Nexthop即可。

1.添加上送CPU的misc-nexthop

  • nh_mcast_group.mem_info.member_type=CTC_NH_PARAM_MEM_LOCAL_WITH_NH;
  • nh_mcast_group.opcode=CTC_NH_PARAM_MCAST_ADD_MEMBER;
  • nh_mcast_group.mem_info.ref_nhid = misc_nhid;
  • ret = ctc_nh_update_mcast(mcast_nhid, &nh_mcast_group);


2.添加普通的物理端口

  • nh_mcast_group.mem_info.member_type=CTC_NH_PARAM_MEM_BRGMC_LOCAL;
  • nh_mcast_group.opcode=CTC_NH_PARAM_MCAST_ADD_MEMBER;
  • nh_mcast_group.mem_info.destid = gport;
  • ret = ctc_nh_update_mcast(mcast_nhid, &nh_mcast_group);


CTC5160产品特性
低功耗

  • 可用于无风扇设计产品
  • 支持EEE(能效以太网)

低延迟

  • 支持Cut-Through转发模式

云堆叠

  • 基于网络的任意端口堆叠,支持环状/树状/网状拓扑

SmartPort™技术

  • 拥有4个独立可配的HSS Macro,支持高速SerDes (1.25~12.5Gbps)
  • 支持丰富的端口协议:CX4, KX, KX4, 10G KR, XFI, SFI, XAUI, SGMII, QSGMII

先进的三层功能

  • IPv4/IPv6双栈转发
  • IPv4/IPv6隧道 GRE over IPv4/IPv6, GRE based VPN, 6to4, ISATAP, MPLS over IP
  • 丰富的IPv6过渡技术,如:NAT64,IVI

SDN功能

  • 支持OpenFlow 1.3
  • 创新的32K Hash流表

丰富的OAM和PM服务

  • 以太网OAM (CCM, LBM, LBR, LM, DM, throughput等)
  • 同时支持基于Y.1731和BFD MPLS-TP OAM
  • 针对IP/MPLS的BFD

层次化APS (多达3级)

  • 可层次化应用在PW、LSP和tunnel之上
  • 协议/拓扑无关的实现机制,保证快速切换

层次化QoS

  • 三级流量整型/调度
  • 支持SrTCM, TrTCM和改进的TrTCM算法
  • 支持MEF HBWP
  • 可灵活映射的队列

增强的网络时钟同步

  • 遵循G.8261标准的SyncE功能
  • IEEE1588 v1/v2,OC/BC/TC,支持1-step和2-step模式
  • 支持基于Ethernet/IP/UDP/MPLS封装的PTP报文传输功能
    产品应用:

  • 5.png

  • 6.png