sonic自动化测试环境sonic-mgmt概述

### 概述

这里讲一下sonic-mgmt,也就是sonic官方的测试环境的原理、搭建、运行,以及期间碰到的一些问题。


### 原理

sonic自动化测试,步骤分为:搭建测试环境、运行测试用例、得到测试结果。其中搭建测试环境分为搭建物理拓扑、搭建逻辑拓扑。这里先描述一下注意事项,具体步骤后面详述。

sonic-mgmt的工作就是搭建testbed server,也就是逻辑拓扑,但是在搭建这个逻辑拓扑之前,需要先按照需求搭建好无力拓扑。

物理拓扑在mgmt工程中有说明,也就是testbed、root、leaf、DUT,不再冗述。这里需要注意几点:
    - 最好不要使用vlan1,因为sonic的vlan1有个bug,所以我使用的是vlan1618开始的32个vlan。
    - 在root、leaf上需要特殊的配置,例如t0拓扑要求整个路径能够vlan内透传L2-protocol报文。
    - DUT上,一定要插满32个端口,这是t0、t1、ptf32、t1-lag等基本逻辑拓扑必须的配置。

mgmt中的逻辑拓扑用于测试不同的test case时候使用,具体看官方说明,这里需要注意的是:
    - 不同的test case需要不同的拓扑,运行这些test case之前一定要变换拓扑。
    - t0逻辑拓扑较特殊,需要vms与DUT建立port channel,所以需要物理拓扑能够vlan内透传L2-protocol包(例如lacp)。
    - t1等拓扑需要32个VM,那testbed所在的物理server一定得比较强大,至少内存一定要大。

testbed的环境拓扑可以看官方描述,基本可以分为几个部分:
    - mgmt docker:这是控制测试过程的docker实例,这里有mgmt的代码。
    - PTF docker:PTF是用于发包的模块,通过pannel port、inject port等方式,通过vlan子接口将数据包发送出去。
    - VMS:VMS是运行EOS镜像的VM,其实就是qume虚拟机加上arista的EOV系统,用于做网络协议的交互。
    - 连接方式:通过linux bridge、ovs将上述模块连接起来。


### 具体步骤

首先找到官方testing guaid:https://github.com/Azure/sonic-mgmt/blob/master/ansible/README.testbed.md

进入setup步骤,首先修改物理拓扑:
    - 对于testbed server,修改br1的管理ip,增加一个数据面的端口。
    - 对于root、leaf,参考物理拓扑和上面的注意事项修改。
然后搭建软件环境,这个视情况来做。
然后建立PTF实例:
    - 编译PTF image
    - 建立本地registry
    - 将PTF image放到本地registry中
然后建立mgmt:
    - 建立mgmt image
    - 启动mgmt实例
进入mgmt实例,下面的工作都在这里做即可。
修改配置:
    - server相关配置
    - VM相关配置
    - PTF相关配置
启动VMS,不通的拓扑需要不同数量的VMS,不过启动32个VMS比较好。
对于deploy fanout switch这一步骤,可选,我是没有做。
根据上面的物理拓扑,修改files/lab_connection_graph.xml文件。sonic提供了creategraph.py文件帮助生成这个文件。
根据不同的逻辑拓扑,生成minigraph文件,并部署到DUT上。每个逻辑拓扑对应不同的DUT的配置,需要这里生成minigraph文件,然后部署到交换机中,并让这个配置生效。我在运行的过程中,由于厂商的特殊需要,我还手动更改了minigraph文件。
add-topo,这一步是在testbed server上部署逻辑拓扑,这一步运行完之后,就可以开始对应逻辑拓扑的测试了。


### 声明

转载必须备注源连接,谢谢

猜你喜欢

转载自blog.csdn.net/batmancn/article/details/81390824