SONiC系统管理 26
带内网络遥测INT
前几天在2021-03-04 SONiC系统管理 24 sFlow中介绍了SONiC系统对sFlow的支持,以及通过sFlow输出网络的性能计数器的值或者输出按一定比例采样的网络数据报文。sFlow在提供网络性能监视的基础内容的同时也存在一些不足,首先是报文的采样率首系统内部带宽的限制不能很高,过低的采样率不能完全反映网络流量状态。性能计数器的输出只能输出事先定义好的计数器的值,不能细化到不同报文流的精细性能监控。对报文在交换过程中经历流量拥堵节点时的缓存等待过程也不能提供有效的监控。
以P4可编程数据面技术为基础的网络带内遥测技术INT完美解决了上述问题。INT通过携带的报文头上的遥测指令,报文经过的每一个节点按照该只能收集网络信息并将收集到的信息附加到报文上面,这样的报文到达目的地以后,INT目的节点可以很容易地得到报文经过路径上的各节点的流量信息。
SAI定义了INT相关的接口函数,从下面的定义中可以看出SONiC SAI INT支持的功能:
```c
/** INT instructions defined in INT specification. Each bit represents the information that is collected */
typedef enum _sai_int_instruction_t {
SAI_INT_INST_SWITCH_ID = 0,
SAI_INT_INST_INGRESS_PORT_ID,
SAI_INT_INST_HOP_LATENCY,
SAI_INT_INST_QUEUE_OCCUPANCY,
SAI_INT_INST_INGRESS_TIMESTAMP,
SAI_INT_INST_EGRESS_PORT_ID,
SAI_INT_INST_QUEUE_CONGESTION,
SAI_INT_INST_TX_UTILIZATION,
} sai_int_instruction_t;