CAPL学习-ETH功能函数-对象类

1 Objects

1. Eth

CAPL 函数 >> 以太网 >> 函数概述 >> Eth

函数

用于获取以太网链路的状态和统计信息。使用 ethResetStatistics 可重置统计值。

语法

Eth <Ethernet Channel Number>;

参数
  • Ethernet Channel Number:通道号(1...32)。
选择器
选择器 类型 访问权限 说明
status long 只读 链路状态:0-链路断开,1-链路连接
bitrate dword 只读 比特率(kBit/sec)
TxBitrate dword 只读 当前发送比特率(kBit/sec)
RxBitrate dword 只读 当前接收比特率(kBit/sec)
TxPacketRate dword 只读 当前发送包速率(pkt/sec)
RxPacketRate dword 只读 当前接收包速率(pkt/sec)
TxPacketCount qword 只读 发送的以太网包数量
RxPacketCount qword 只读 接收的以太网包数量
TxByteCount qword 只读 发送的字节数
RxByteCount qword 只读 接收的字节数
TxErrorCount dword 只读 发送错误包数量
RxErrorCount dword 只读 接收错误包数量
SQI dword 只读 服务质量指示:0-错误发生,1-无余量,2-临界,3-可接受,4-良好,5-优秀,6-不可用
可用性
  • 版本:8.5(基础功能),11.0(统计选择器)
  • 适用场景:以太网测量/仿真测试
示例
capl 复制代码
switch(Eth1.status)
{
  case 0:
    write("Eth1 以太网链路已断开");
    break;
  case 1:
    write("Eth1 以太网链路已连接,速率为 %dMBit/sec", Eth1.bitrate/1000);
}

2. ethernetErrorPacket

CAPL 函数 >> 以太网 >> 函数概述 >> ethernetErrorPacket

函数

用于在 on ethernetErrorPacket 事件处理程序中访问错误包数据。

语法

ethernetErrorPacket <errorPacket var>;

参数
  • errorPacket var:错误包变量名(字符串)。
选择器
选择器 类型 访问权限 说明
time_ns int64 只读 时间戳(纳秒)
dir byte 只读 方向
msgChannel word - 应用通道(如 Eth 1)
hwChannel word 只读 硬件通道(仅 Vector 接口支持,如 VN5640)
hwPort ethernetPort 只读 网络访问端口(仅网络模式)
Length word - 以太网 payload 长度(从 Ethertype 后开始)
FCS word 只读 帧校验和(部分硬件不支持,值为 0)
FrameLen word 只读 帧持续时间(纳秒,部分硬件不支持)
SOF word 只读 帧起始时间戳(纳秒,部分硬件不支持)
Type word/qword - Ethertype 类型
Source qword - 源 MAC 地址(6 字节,网络字节序)
Destination qword - 目的 MAC 地址(6 字节,网络字节序)
ErrorCode byte 只读 错误码:1-无效帧长,2-无效 CRC,4-无效数据,8-冲突检测(半双工)
可用性
  • 版本:8.5(基础功能),后续版本扩展选择器支持
示例
capl 复制代码
on ethernetErrorPacket *
{
  write("在 Eth%d 上收到以太网错误包", this.msgChannel);
  output(this); // 仅在测量模式下的 CAPL 节点中需要
}

3. ethernetPacket

CAPL 函数 >> 以太网 >> 函数概述 >> ethernetPacket

函数

用于创建以太网发送对象,可通过选择器操作包数据。

语法

ethernetPacket <packet var>;

参数
  • packet var:包变量名(字符串)。
选择器
选择器 类型 访问权限 说明
time_ns int64 只读 时间戳(纳秒)
dir byte 只读 方向(Rx/Tx)
msgChannel word - 应用通道(如 Eth 1)
hwChannel/hwPort word/ethernetPort 只读 硬件通道/端口(仅特定硬件支持)
Length word - payload 长度(从 Ethertype 后开始)
Source/Destination qword - 源/目的 MAC 地址(6 字节,网络字节序)
byte(x)/word(x)/... 多种类型 - 数据字段(x 为偏移量,从 Ethertype 后开始)
Type word - Ethertype 类型
. 多种类型 - 协议字段(如 TCP.port,取决于协议解析)
方法
  • 数据操作Clear()GetData()SetData()
  • 协议解析GetDestinationIPAddress()GetVlanId()HasVlan()
  • 错误注入FaultInjectFCS()FaultInjectDisableLengthPadding()
示例
capl 复制代码
ethernetPacket txPacket;
int i;
txPacket.msgChannel = 1;
txPacket.source = EthGetMacAddressAsNumber("20:00:00:00:00:01");
txPacket.destination = EthGetMacAddressAsNumber("FF:FF:FF:FF:FF:FF");
txPacket.Length = 100;
txPacket.type = 0xF123;
for(i = 0; i < txPacket.Length; i++)
{
  txPacket.Byte(i) = i & 0xFF;
}
output(txPacket);

4. IP_Address

CAPL 函数 >> 以太网 >> 函数概述 >> IP_Address

函数

初始化 IPv4/IPv6 地址变量。

语法
  • 形式 1:IP_Address <addr> <var name>;(带具体地址)
  • 形式 2:IP_Address <var name>;(不带地址)
参数
  • addr :IPv4/IPv6 地址(如 192.168.0.1ff::1)。
  • var name:变量名。
选择器
选择器 类型 说明
IPv4Address dword IPv4 地址值(字节序参考 IP 地址规范)
ScopeID dword IPv6 作用域 ID
方法
  • IsIPv4Address()/IsIPv6Address():判断地址类型
  • ParseAddressFromString()/PrintAddressToString():字符串解析/转换
  • IsBroadcast()/IsMulticast():判断广播/组播地址
示例
capl 复制代码
variables
{
  IP_Address 192.168.0.1 ipv4Addr;
  IP_Address ff::1 ipv6Addr;
}

on start
{
  IP_Address addr;
  addr.ParseAddressFromString("192.168.1.1");
  write("IP 地址: %s", addr.PrintAddressToString());
}

5. IP_Endpoint

CAPL 函数 >> 以太网 >> 函数概述 >> IP_Endpoint

函数

初始化 IP 端点(IP 地址+端口)变量。

语法
  • 形式 1:IP_Endpoint <endpoint> <var name>;(带具体端点)
  • 形式 2:IP_Endpoint <var name>;(不带端点)
参数
  • endpoint :IPv4/IPv6 地址+端口(如 TCP:192.168.1.1:4000UDP:[ff::1]:6000)。
  • var name:变量名。
选择器
选择器 类型 说明
PortNumber dword 端口号(主机字节序)
IP_Address IP_Address 关联的 IP 地址对象
方法
  • IsTCP()/IsUDP():判断传输协议
  • ParseEndpointFromString()/PrintEndpointToString():字符串解析/转换
  • SetToTCP()/SetToUDP():设置协议类型
示例
capl 复制代码
variables
{
  IP_Endpoint TCP:192.168.1.1:4000 ipEndpoint1;
  IP_Endpoint UDP:[ff::1]:6000 ipEndpoint4;
}

on start
{
  IP_Endpoint ep;
  ep = IP_Endpoint("192.168.1.2:4001");
  write("端口号: %d", ep.PortNumber);
}

2 基于网络架构特有

ethernetPort::::

函数

初始化一个带有端口限定的 ethernetPort 类型变量。

语法
capl 复制代码
ethernetPort ethernetPort.<NetworkName>.<PortName>;
参数
  • NetworkName

    以太网网络的名称。

  • PortName

    端口的名称。

可用性
版本 适用范围 测量设置 仿真/测试设置
12.0 SP4 Ethernet
示例
capl 复制代码
on start  
{  
  ethernetport clientPort;  
  clientPort = ethernetport::Ethernet1::ChatClient1;  
  // ... 对 clientPort 执行操作  
}  
参见
  • ethSetLinkStatus
  • ethGetLinkStatus
  • on ethernetStatus
相关推荐
乾元4 分钟前
AI 在云网络(VPC / VNet)部署的编排与安全对齐——从“手工堆资源”到“意图驱动的网络生成”(含 Terraform 工程化)
运维·网络·人工智能·网络协议·安全·云计算·terraform
盛满暮色 风止何安5 分钟前
负载均衡的部署模式
运维·服务器·网络·网络安全·负载均衡
Meaauf6 分钟前
华为 | 二层隧道协议L2TP实验
网络·华为
CQ_YM7 分钟前
网络编程之UDP
linux·c语言·网络·单片机·udp
qqssss121dfd13 分钟前
计算机网络(第8版,谢希仁)第四章习题解答
服务器·c语言·网络·单片机·计算机网络
_F_y14 分钟前
数据链路层
运维·服务器·网络
怎么没有名字注册了啊18 分钟前
VMware 完整版安装 Debian 纯命令行系统(无图形化、超详细全程教程)
linux·服务器·网络·数据库·debian
weilaikeqi111126 分钟前
豹变IP张大豆:豹变商学将人格作为新商业学科
大数据·人工智能·tcp/ip
程序员三明治2 小时前
【重学计网】TCP如何保证可靠传输?怎么保证可靠性?可靠传输的原理?
java·网络·后端·网络协议·tcp/ip·tcp·可靠传输
渡我白衣3 小时前
多路转接之epoll:理论篇
人工智能·神经网络·网络协议·tcp/ip·自然语言处理·信息与通信·tcpdump