• QCA switch芯片配置说明


    QCA switch芯片配置说明

    来源 https://blog.csdn.net/dreamflyliwei9/article/details/46352807

    参考 https://www.openwrt.pro/post-549.html

    一般像bcm和qca生产的CPU芯片都内置一个switch(交换芯片),但内置的switch不能满足要求,所以就要在外面加了一个1000Mbps外置switch芯片QCA8337。本文讲的是关于qca芯片外置switch的上层配置方式。

    cpu芯片有一个gmac,它通过sgmii与外置switch芯片qca8337相连,默认连接在port 0。8337有7个port口,分别是0~6,我们将wan口置为port 1,lan 口置为port 2~5。

    1)现划分两个vlan,vid分别为1与2。vid=1对应lan,包含port 0,2,3,4,5。 vid=2对应wan,包含port 0,1。命令如下:

    ssdk_sh vlan entry create <vlan_id>
    ssdk_sh vlan member add <vlan_id> <port_id> <unmodified|untagged|tagged> #其中每个vlan中port 0对应tagged,其他为untagged.

    2)vlan有两种模式,一是802.1q VLAN模式(这种模式下通过vlan table实现port隔离),另一种是port-based VLAN模式(这种模式下不同的port有自己的port-membership,不同VLAN之间的port没有这种membership关系,即实现了隔离)。802.1q VLAN使用vlan table,即前面配置的vlan entry;而port-based VLAN使用portVlan进行配置。通过配置portVlan的ingress模式来进行选择。

    802.1qPID missVLAN member vlolationNo violation
    Secure Drop Drop Forward – Use VLAN table result
    Check Drop Forward – Use VLAN table result Forward – Use VLAN table result
    Fallback Forward – Use port-based VLAN Forward – Use VLAN table result Forward – Use VLAN table result
    Disable Forward – Use port-based VLAN Forward – Use port-based VLAN Forward – Use port-based VLAN

    由上图,选择port 0的ingress模式为secure,即只允许802.1q模式,其他port口的模式为fallback,同时允许两种模式。命令如下:

    ssdk_sh portVlan ingress set  <port_id> <disable|secure|check|fallback>

    P.S. 这里对于每个port口模式的选择,switch的配置方式可以分为三种,一种是port-based VLAN模式,即所有port口均设为disable;一种是802.1q模式,即所有port口均设为secure;另一种即上面采用的这一种,两种模式均采用。

    接下来配置port-based Vlan, 配置命令如下:

    ssdk_sh portVlan member add <port_id> <memport_id> # port_id 指要配置的port,memport_id指除port_id外本vlan内其他port中的一个,循环调用此命令或调用下面一个命令
    ssdk_sh portVlan member update  <port_id> <port_bitmap>  # port_bitmap中每一位代表一个port

    3)最后将每个port与自身所处vlan的vid联系起来,调用命令:

    ssdk_sh portVlan defaultCVid set  <port_id> <vlan_id>  # 其中port 0口对应的vid为0,其余均为自身vlan的vid.

    4)另外对每个口的其他配置如速率,单双工,是否自动协商等,命令如下:

    ssdk_sh port duplex set  <port_id> <half|full> 
    ssdk_sh port speed set  <port_id> <10|100|1000> 
    ssdk_sh port autoNeg enable  <port_id>

    5)(全双工)流量控制/(半双工)背压,具体背景知识请参考

    http://wenku.baidu.com/link?url=lI6zyw2wQ2tBp2qADadoeJ0jglHyAUHX_x7JPYxyw7WVGVahXx1tEGGRjzxP8dXUWoWRhMOURQaM1zVcSJRCJtUQZTwsc21fqXCTkJu4MeS

    设置全双工流控命令如下:

    ssdk_sh port flowCtrl set <port_id> <enable|disable> # 注意CPU口必须开启流量控制,否则会出现这样的情况,LAN与WAN口各自设置的速率不同,那么从LAN向WAN口ping的话,小的数据包可以通,但大的数据包不能ping通,通过上面的知识可以得出两口速率不同,大包会造成瞬时过载导致缓冲区溢出从而产生不必要的帧丢失。这时需要全双工流控技术来解决这个问题。
    
    
    ssdk_sh port txfcstatus set <port_id> <enable|disable> # tx flow control status ,CPU口的tx flow control要打开
    ssdk_sh port rxfcstatus set <port_id> <enable|disable> # rx flow control status ,CPU口的rx flow control要打开

    设置半双工背压命令如下:

    ssdk_sh port bpstatus set <port_id> <enable|disable> 一般所有口的背压要打开

    设置tx mac status 和 rx mac status(目的未知):

    ssdk_sh port rxmacstatus set <port_id> <enable|disable> # CPU口要设置enable
    ssdk_sh port txmacstatus set <port_id> <enable|disable> # CPU口要设置enable

    QCA switch的配置方式如上,BCM switch芯片配置类似,只是配置工具使用的是自家的et.

    ============== End

  • 相关阅读:
    图灵机器人,web录音实现自动化交互问答
    人工智能初识,百度AI
    flask web 表单验证 WTForms
    websocket的原理
    DBUtils
    【hdu4704】 Sum——费马小定理+快速幂取模
    【hdu3037】Saving Beans——组合数取模
    【SRM15】题解
    【模板】快速幂取模
    【模板】线性筛法求素数
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/16414871.html
Copyright © 2020-2023  润新知