Overview
The swXtch.io Monitoring API allows the integration of data from various cloudSwXtch component types into third party tools for monitoring and topology purposes within a customer’s user interfaces. This section will outline the API, with examples of data results. Unless otherwise noted, these API calls are only applicable to cloudSwXtch versions 3.0.0 or greater.
Prerequisites
A cloudSwXtch must exist as well as two or more agents with xNICs.
Traffic (multicast, broadcast, SRT, RIST, or unicast) should be flowing between the cloudSwXtch and the endpoints.
Note: SRT, RIST and unicast require additional configuration on the cloudSwXtch.
By using a GET command, data will be provided in the response.
swXtch.io API Concepts Explained
Before you start, there are a number of key concepts and terms that are important to understand before diving into the complexities of the monitoring and topology API.
Source Address vs. Adjacent Address
In the example responses, users will notice both an source and adjacent address. A source address represents a producer’s control NIC. This is where the stream originated from.
The adjacent address represents the data NIC of either the producer/consumer that is sending out or receiving multicast data. In the monitoring API, this value is dependent on whether it is in the rxStreamLinks or the txStreamLinks section of the response.
Under rxStreamLinks, the adjacent address is the IP address of the producer — an endpoint sending traffic to the cloudSwXtch
Under txStreamLinks, the adjacent address is the IP address of the consumer — an endpoint receiving traffic from the cloudSwXtch.
In the topology API, this value is dependent on whether it is in the ingress or egress streamLinks section.
Under ingress, the adjacent address is the IP address of the producer — an endpoint sending traffic to the cloudSwXtch
Under egress, the adjacent address is the IP address of the consumer — an endpoint receiving traffic from the cloudSwXtch.
Protocol Types
In the streamLinks section of the cloudSwXtch stats example response, the API specifies the protocol of the stream.
xMC: multicast or broadcast
SRT (C): SRT Caller
SRT (L): SRT Listener
RIST (C): RIST Caller
RIST (L): RIST Listener
Timestamps
To track time as a running total of seconds, the Timestamps are in Unix Timestamp. This count starts at the Unix Epoch on January 1st, 1970, at UTC. At any point in time, the API can be run, and certain metrics can be obtained from the response payload by calculating certain counter and timestamp Delta values.
Monitoring API
The monitoring API allows developers to get data from the cloudSwXtch as well as data about its xNIC's. This data is broken down into 5 categories:
Topology
/api/topology/v1/topology
Get information about the components and streamLinks in the Topology Graph
URL:
http://<cloudSwXtch-control-IP>/api/topology/v1/topology
Example URL:
http://10.2.128.10/api/topology/v1/topology
Request:
Empty
Response:
200 - successful response
Example Response →
{ "components": { "10.2.128.10": { "general": { "id": "10.2.128.10", "name": "dsd-core-100", "componentKind": { "code": "swxtch", "displayName": "swXtch" } }, "environment": { "hostname": "dsd-core-100", "cloud": "AZURE", "osDistribution": "Ubuntu 20.04", "region": "eastus", "instanceType": "Standard_D8as_v4" }, "hardware": { "nics": { "eth0": { "name": "eth0", "index": 2, "ip": "10.2.128.10", "subnetPrefix": "10.2.128.0/22", "subnetMask": "255.255.252.0", "mtu": 1500, "mac": "00:0d:3a:19:cc:e1", "broadcastIp": "10.2.131.255", "driver": "hv_netvsc", "pciAddress": "", "publicIp": null, "masterOf": null, "vpc": null }, "eth1": { "name": "eth1", "index": 3, "ip": "10.2.192.116", "subnetPrefix": "10.2.192.0/22", "subnetMask": "255.255.252.0", "mtu": 1500, "mac": "00:0d:3a:54:0f:37", "broadcastIp": "10.2.195.255", "driver": "mlx5_core", "pciAddress": "a6bd:00:02.0", "publicIp": null, "masterOf": "enP42685s2", "vpc": null } }, "vpcs": {} }, "swxGeneral": { "type": "X1", "dataInterfaceName": "eth1", "controlInterfaceName": "eth0", "dataPort": 9999, "version": "dev.7f1520", "configuration": null, "services": null, "subscriptions": null }, "parentId": null, "timing": { "Master": null, "LocalOffset": null, "RootOffset": null, "TimebeatPresent": null }, "adaptors": [ { "id": "16704273857340480058", "isConnected": false, "isActive": false, "alive": true, "clientIp": "0.0.0.0", "clientPort": 0, "sourceIp": "0.0.0.0", "sourcePort": 0, "socketIp": "0.0.0.0", "socketPort": 0, "timestamp": 1724082856715428500, "counters": { "txPackets": 0, "txBytes": 0, "rxPackets": 0, "rxBytes": 0, "txLostPackets": 0, "txLostBytes": 0, "rxLostPacket": 0, "rxLostBytes": 0, "txRetransmittedPackets": 0, "txRetransmittedBytes": 0, "rxRetransmittedPackets": 0, "rxRetransmittedBytes": 0 }, "info": { "id": "16704273857340480058", "protocol": "srt-caller", "direction": "egress", "streamIp": "239.4.2.3", "streamPort": 5400, "nodeIp": "10.2.128.37", "nodePort": 5401, "listenerPort": null, "options": [] } }, { "id": "4777854487999137884", "isConnected": false, "isActive": false, "alive": true, "clientIp": "0.0.0.0", "clientPort": 0, "sourceIp": "0.0.0.0", "sourcePort": 0, "socketIp": "0.0.0.0", "socketPort": 0, "timestamp": 1724082856715423300, "counters": { "txPackets": 0, "txBytes": 0, "rxPackets": 0, "rxBytes": 0, "txLostPackets": 0, "txLostBytes": 0, "rxLostPacket": 0, "rxLostBytes": 0, "txRetransmittedPackets": 0, "txRetransmittedBytes": 0, "rxRetransmittedPackets": 0, "rxRetransmittedBytes": 0 }, "info": { "id": "4777854487999137884", "protocol": "srt-caller", "direction": "ingress", "streamIp": "239.4.2.3", "streamPort": 5400, "nodeIp": "10.2.128.36", "nodePort": 5400, "listenerPort": null, "options": [] } }, { "id": "5062225067104987852", "isConnected": false, "isActive": false, "alive": true, "clientIp": "0.0.0.0", "clientPort": 0, "sourceIp": "0.0.0.0", "sourcePort": 0, "socketIp": "0.0.0.0", "socketPort": 6000, "timestamp": 1724082856715416700, "counters": { "txPackets": 0, "txBytes": 0, "rxPackets": 0, "rxBytes": 0, "txLostPackets": 0, "txLostBytes": 0, "rxLostPacket": 0, "rxLostBytes": 0, "txRetransmittedPackets": 0, "txRetransmittedBytes": 0, "rxRetransmittedPackets": 0, "rxRetransmittedBytes": 0 }, "info": { "id": "5062225067104987852", "protocol": "srt-listener", "direction": "egress", "streamIp": "225.1.1.1", "streamPort": 1599, "nodeIp": null, "nodePort": null, "listenerPort": 6000, "options": [] } }, { "id": "9489213241930010873", "isConnected": false, "isActive": false, "alive": true, "clientIp": "0.0.0.0", "clientPort": 0, "sourceIp": "0.0.0.0", "sourcePort": 0, "socketIp": "0.0.0.0", "socketPort": 1599, "timestamp": 1724082856715406300, "counters": { "txPackets": 0, "txBytes": 0, "rxPackets": 0, "rxBytes": 0, "txLostPackets": 0, "txLostBytes": 0, "rxLostPacket": 0, "rxLostBytes": 0, "txRetransmittedPackets": 0, "txRetransmittedBytes": 0, "rxRetransmittedPackets": 0, "rxRetransmittedBytes": 0 }, "info": { "id": "9489213241930010873", "protocol": "srt-listener", "direction": "ingress", "streamIp": "225.1.1.1", "streamPort": 1599, "nodeIp": null, "nodePort": null, "listenerPort": 1599, "options": [] } } ], "stats": { "totals": { "eth1": { "tx": { "packets": 9032846, "bytes": 1734306432 }, "txRate": { "packets": 1834, "bytes": 352169 }, "rx": { "packets": 6521926, "bytes": 1252209792 }, "rxRate": { "packets": 914, "bytes": 175414 }, "txDrops": null, "rxDrops": null, "timestamp": 1724082855663650000 } }, "streamLinks": { "eth1": { "ingress": { "Group = 239.1.1.2:3490 | Source = 10.2.128.15:50226 | Adjacent = 10.2.192.15:50226": { "packets": 6521926, "bytes": 1252209792, "protocol": "xMC", "protocolStats": null, "timestamp": 1724082855608192400, "packetsRate": 921, "bytesRates": 176757, "haPaths": [ 0 ], "fragStats": null } }, "egress": { "Group = 239.1.1.2:3490 | Source = 10.2.128.15:50226 | Adjacent = 10.2.192.24:9999": { "packets": 6491421, "bytes": 1246352832, "protocol": "xMC", "protocolStats": null, "timestamp": 1724082855634894800, "packetsRate": 921, "bytesRates": 176765, "haPaths": [ 0 ], "fragStats": null }, "Group = 239.1.1.2:3490 | Source = 10.2.128.15:50226 | Adjacent = 10.5.2.4:9999": { "packets": 2541425, "bytes": 487953600, "protocol": "xMC", "protocolStats": null, "timestamp": 1724082855634894800, "packetsRate": 921, "bytesRates": 176765, "haPaths": [ 0 ], "fragStats": null } } } }, "hsCounters": { "eth1": [] }, "hsSummary": {}, "slp": { "rxSlpStats": {}, "txSlpStats": null } }, "isRemote": false }, "10.2.128.15": { "general": { "id": "10.2.128.15", "name": "DSd-agent-105", "componentKind": { "code": "xnic", "displayName": "xNIC" } }, "environment": { "hostname": "DSd-agent-105", "cloud": "AZURE", "osDistribution": "Windows Server 2019 Datacenter - Microsoft Windows [Version 10.0.17763.6189]", "region": "eastus", "instanceType": "Standard_D8s_v4" }, "hardware": { "nics": { "Ethernet": { "name": "Ethernet", "index": 415, "ip": "10.2.192.15", "subnetPrefix": "10.2.192.0/22", "subnetMask": "255.255.252.0", "mtu": 4074, "mac": "00:22:48:1e:61:cb", "broadcastIp": "10.2.195.255", "driver": "netvsc.sys", "pciAddress": "34454:00:02.0", "publicIp": null, "masterOf": "Ethernet 626", "vpc": null }, "Ethernet 2": { "name": "Ethernet 2", "index": 494, "ip": "10.2.128.15", "subnetPrefix": "10.2.128.0/22", "subnetMask": "255.255.252.0", "mtu": 4074, "mac": "00:22:48:1e:6b:5b", "broadcastIp": "10.2.131.255", "driver": "netvsc.sys", "pciAddress": "53755:00:02.0", "publicIp": null, "masterOf": "Ethernet 625", "vpc": null } }, "vpcs": {} }, "swxGeneral": { "type": "2", "dataInterfaceName": "Ethernet", "controlInterfaceName": "Ethernet 2", "dataPort": 9999, "version": "dev.7f1520", "configuration": { "controlInterface": "Ethernet 2", "dataInterface": "Ethernet", "dataPlaneSpecs": { "bpfPrograms": null, "verbosity": 0, "virtualInterface": { "ip": "172.30.0.15", "mtu": 4096, "name": "swxtch-tun0", "subnet": "255.255.252.0", "type": "tun" } }, "dataPort": 9999, "ha": { "bufferSizeInPackets": 131072, "maxTimeToBufferPacketsMs": 50, "protocol": "swxtch", "removeInactiveStreamTimeoutSec": 5 }, "nicsConfig": null, "overrideSrcIp": false, "primarySwxtchAddress": "http://10.2.128.10:80", "statsReportWait": 60, "streamSpecs": null, "subscriptionsPollingIntervalMs": 100, "swxtch": "10.2.128.10", "xnicRpcPort": 10002, "xnicType": 2 }, "services": [ { "name": "swXtchNic-control", "isRunning": true }, { "name": "swXtchNic-data", "isRunning": true } ], "subscriptions": { "Ethernet": { "224.0.0.251": { "filter": "exclude", "srcList": [] }, "224.0.0.252": { "filter": "exclude", "srcList": [] }, "224.0.1.129": { "filter": "exclude", "srcList": [] } } } }, "parentId": "10.2.128.10", "timing": { "Master": null, "LocalOffset": null, "RootOffset": null, "TimebeatPresent": null }, "adaptors": null, "stats": { "totals": { "Ethernet": { "tx": { "packets": 13037688, "bytes": 2503236096 }, "txRate": { "packets": 1105536, "bytes": 212262961 }, "rx": { "packets": 0, "bytes": 0 }, "rxRate": { "packets": 0, "bytes": 0 }, "txDrops": { "packets": 0, "bytes": 0 }, "rxDrops": { "packets": 0, "bytes": 0 }, "timestamp": 1724082852269631100 } }, "streamLinks": { "Ethernet": { "ingress": {}, "egress": { "Group = 239.1.1.2:3490 | Source = 10.2.128.15:50226 | Adjacent = 10.2.192.116:3879": { "packets": 6518844, "bytes": 1251618048, "protocol": "xMC", "protocolStats": null, "timestamp": 1724082852270144000, "packetsRate": 0, "bytesRates": 0, "haPaths": [ 0 ], "fragStats": null }, "Group = 239.1.1.2:3490 | Source = 10.2.128.15:50226 | Adjacent = 10.5.2.6:3879": { "packets": 6518844, "bytes": 1251618048, "protocol": "xMC", "protocolStats": null, "timestamp": 1724082852270144000, "packetsRate": 0, "bytesRates": 0, "haPaths": [ 1 ], "fragStats": null } } } }, "hsCounters": { "Ethernet": [ { "streamId": { "ip": 4286775818, "port": 35328 }, "pathStats": [ { "ingressPackets": 0, "ingressBytes": 0, "ingressPacketsRate": 0, "ingressBytesRate": 0, "missingPackets": 0, "missingPacketsRate": 0, "outputStreamPackets": 0, "pathUsage": 0, "outputStreamPacketsRate": 0 }, { "ingressPackets": 1, "ingressBytes": 275, "ingressPacketsRate": 0, "ingressBytesRate": 0, "missingPackets": 0, "missingPacketsRate": 0, "outputStreamPackets": 1, "pathUsage": 0, "outputStreamPacketsRate": 0 } ], "enqueueFailurePackets": 0, "egressPackets": 1, "egressBytes": 275, "egressPacketsRate": 0, "egressBytesRate": 0, "outputStreamLoss": 0, "outputStreamLossRate": 0, "senderIp": "10.2.128.75" }, { "streamId": { "ip": 4290970122, "port": 35328 }, "pathStats": [ { "ingressPackets": 0, "ingressBytes": 0, "ingressPacketsRate": 0, "ingressBytesRate": 0, "missingPackets": 0, "missingPacketsRate": 0, "outputStreamPackets": 0, "pathUsage": 0, "outputStreamPacketsRate": 0 }, { "ingressPackets": 1, "ingressBytes": 275, "ingressPacketsRate": 0, "ingressBytesRate": 0, "missingPackets": 0, "missingPacketsRate": 0, "outputStreamPackets": 1, "pathUsage": 0, "outputStreamPacketsRate": 0 } ], "enqueueFailurePackets": 0, "egressPackets": 1, "egressBytes": 275, "egressPacketsRate": 0, "egressBytesRate": 0, "outputStreamLoss": 0, "outputStreamLossRate": 0, "senderIp": "10.2.192.82" } ] }, "hsSummary": { "Ethernet": { "pathSummaries": [ { "ingressPacketsTotal": 0, "ingressBytesTotal": 0, "missingPacketsTotal": 0, "outputStreamPacketsTotal": 0, "ingressPacketsRate": 0, "ingressBytesRate": 0, "missingPacketsRate": 0, "outputStreamPacketsRate": 0, "pathUsage": 0 }, { "ingressPacketsTotal": 2, "ingressBytesTotal": 550, "missingPacketsTotal": 0, "outputStreamPacketsTotal": 2, "ingressPacketsRate": 0, "ingressBytesRate": 0, "missingPacketsRate": 0, "outputStreamPacketsRate": 0, "pathUsage": 0 } ], "enqueueFailurePackets": 0, "egressPackets": 2, "egressBytes": 550, "outputStreamLoss": 0, "egressPacketsRate": 0, "egressBytesRate": 0, "outputStreamLossRate": 0 } }, "slp": null }, "isRemote": false }, "10.2.128.27": { "general": { "id": "10.2.128.27", "name": "DSd-agent-101", "componentKind": { "code": "xnic", "displayName": "xNIC" } }, "environment": { "hostname": "DSd-agent-101", "cloud": "AZURE", "osDistribution": "Ubuntu 20.04", "region": "eastus", "instanceType": "Standard_D4ds_v4" }, "hardware": { "nics": { "eth0": { "name": "eth0", "index": 2, "ip": "10.2.128.27", "subnetPrefix": "10.2.128.0/22", "subnetMask": "255.255.252.0", "mtu": 1500, "mac": "60:45:bd:d5:0f:e1", "broadcastIp": "10.2.131.255", "driver": "mlx5_core", "pciAddress": "e629:00:02.0", "publicIp": null, "masterOf": "enP58921s1", "vpc": null }, "eth1": { "name": "eth1", "index": 3, "ip": "10.2.192.24", "subnetPrefix": "10.2.192.0/22", "subnetMask": "255.255.252.0", "mtu": 1500, "mac": "60:45:bd:d5:0a:05", "broadcastIp": "10.2.195.255", "driver": "mlx5_core", "pciAddress": "1681:00:02.0", "publicIp": null, "masterOf": "enP5761s2", "vpc": null }, "swxtch-tun0": { "name": "swxtch-tun0", "index": 6, "ip": "172.30.0.27", "subnetPrefix": "172.30.0.0/22", "subnetMask": "255.255.252.0", "mtu": 4096, "mac": "", "broadcastIp": "172.30.3.255", "driver": null, "pciAddress": null, "publicIp": null, "masterOf": null, "vpc": null } }, "vpcs": {} }, "swxGeneral": { "type": "2", "dataInterfaceName": "eth1", "controlInterfaceName": "eth0", "dataPort": 9999, "version": "dev.7f1520", "configuration": { "controlInterface": "eth0", "dataInterface": "eth1", "dataPlaneSpecs": { "bpfPrograms": [ { "attachPoint": "BPF_TC_INGRESS", "interface": "eth1", "name": "tc-ingress" }, { "attachPoint": "BPF_TC_EGRESS", "interface": "eth1", "name": "tc-egress" }, { "attachPoint": "BPF_TC_EGRESS", "interface": "eth0", "name": "tc-forwarder" } ], "verbosity": 0, "virtualInterface": { "ip": "172.30.0.27", "mtu": 4096, "name": "swxtch-tun0", "subnet": "255.255.252.0", "type": "tun" } }, "dataPort": 9999, "ha": { "bufferSizeInPackets": 131072, "maxTimeToBufferPacketsMs": 50, "protocol": "swxtch", "removeInactiveStreamTimeoutSec": 5 }, "nicsConfig": null, "overrideSrcIp": false, "primarySwxtchAddress": "http://10.2.128.10:80", "statsReportWait": 60, "streamSpecs": null, "subscriptionsPollingIntervalMs": 100, "swxtch": "10.2.128.10", "xnicRpcPort": 10002, "xnicType": 2 }, "services": [ { "name": "swxtch-xnic-data", "isRunning": true }, { "name": "swxtch-xnic-control", "isRunning": true } ], "subscriptions": { "eth1": { "224.0.0.251": { "filter": "exclude", "srcList": [] }, "239.1.1.2": { "filter": "exclude", "srcList": [] } } } }, "parentId": "10.2.128.10", "timing": { "Master": null, "LocalOffset": null, "RootOffset": null, "TimebeatPresent": null }, "adaptors": null, "stats": { "totals": { "eth1": { "tx": { "packets": 0, "bytes": 0 }, "txRate": { "packets": 0, "bytes": 0 }, "rx": { "packets": 12811621, "bytes": 2459831232 }, "rxRate": { "packets": 1846, "bytes": 354383 }, "txDrops": { "packets": 0, "bytes": 0 }, "rxDrops": { "packets": 0, "bytes": 0 }, "timestamp": 1724082856842266400 } }, "streamLinks": { "eth1": { "ingress": { "Group = 239.1.1.2:3490 | Source = 10.2.128.15:50226 | Adjacent = 10.2.192.116:5026": { "packets": 6492383, "bytes": 1246537536, "protocol": "xMC", "protocolStats": null, "timestamp": 1724082856842280400, "packetsRate": 923, "bytesRates": 177177, "haPaths": [ 0 ], "fragStats": null }, "Group = 239.1.1.2:3490 | Source = 10.2.128.15:50226 | Adjacent = 10.5.2.6:5026": { "packets": 6319238, "bytes": 1213293696, "protocol": "xMC", "protocolStats": null, "timestamp": 1724082856842280400, "packetsRate": 923, "bytesRates": 177206, "haPaths": [ 1 ], "fragStats": null } }, "egress": {} } }, "hsCounters": { "eth1": [ { "streamId": { "ip": 33620463, "port": 41485 }, "pathStats": [ { "ingressPackets": 6492383, "ingressBytes": 1246537536, "ingressPacketsRate": 923, "ingressBytesRate": 177177, "missingPackets": 165, "missingPacketsRate": 0, "outputStreamPackets": 177731, "pathUsage": 0, "outputStreamPacketsRate": 0 }, { "ingressPackets": 6319238, "ingressBytes": 1213293696, "ingressPacketsRate": 923, "ingressBytesRate": 177206, "missingPackets": 173311, "missingPacketsRate": 0, "outputStreamPackets": 6314818, "pathUsage": 100, "outputStreamPacketsRate": 923 } ], "enqueueFailurePackets": 0, "egressPackets": 6492549, "egressBytes": 1246569408, "egressPacketsRate": 923, "egressBytesRate": 177206, "outputStreamLoss": 0, "outputStreamLossRate": 0, "senderIp": "10.2.128.15" } ] }, "hsSummary": { "eth1": { "pathSummaries": [ { "ingressPacketsTotal": 6492383, "ingressBytesTotal": 1246537536, "missingPacketsTotal": 165, "outputStreamPacketsTotal": 177731, "ingressPacketsRate": 923, "ingressBytesRate": 177177, "missingPacketsRate": 0, "outputStreamPacketsRate": 0, "pathUsage": 0 }, { "ingressPacketsTotal": 6319238, "ingressBytesTotal": 1213293696, "missingPacketsTotal": 173311, "outputStreamPacketsTotal": 6314818, "ingressPacketsRate": 923, "ingressBytesRate": 177206, "missingPacketsRate": 0, "outputStreamPacketsRate": 923, "pathUsage": 100 } ], "enqueueFailurePackets": 0, "egressPackets": 6492549, "egressBytes": 1246569408, "outputStreamLoss": 0, "egressPacketsRate": 923, "egressBytesRate": 177206, "outputStreamLossRate": 0 } }, "slp": null }, "isRemote": false }, "10.5.1.4": { "general": { "id": "10.5.1.4", "name": "DSd-agent-201", "componentKind": { "code": "xnic", "displayName": "xNIC" } }, "environment": { "hostname": "DSd-agent-201", "cloud": "AZURE", "osDistribution": "Ubuntu 20.04", "region": "eastus", "instanceType": "Standard_D4s_v4" }, "hardware": { "nics": { "eth0": { "name": "eth0", "index": 2, "ip": "10.5.1.4", "subnetPrefix": "10.5.1.0/24", "subnetMask": "255.255.255.0", "mtu": 1500, "mac": "00:22:48:23:4c:48", "broadcastIp": "10.5.1.255", "driver": "mlx5_core", "pciAddress": "1e1b:00:02.0", "publicIp": null, "masterOf": "enP7707s1", "vpc": null }, "eth1": { "name": "eth1", "index": 3, "ip": "10.5.2.4", "subnetPrefix": "10.5.2.0/24", "subnetMask": "255.255.255.0", "mtu": 1500, "mac": "00:22:48:23:43:76", "broadcastIp": "10.5.2.255", "driver": "mlx5_core", "pciAddress": "6df3:00:02.0", "publicIp": null, "masterOf": "enP28147s2", "vpc": null }, "swxtch-tun0": { "name": "swxtch-tun0", "index": 6, "ip": "172.30.0.4", "subnetPrefix": "172.30.0.0/24", "subnetMask": "255.255.255.0", "mtu": 4096, "mac": "", "broadcastIp": "172.30.0.255", "driver": null, "pciAddress": null, "publicIp": null, "masterOf": null, "vpc": null } }, "vpcs": {} }, "swxGeneral": { "type": "2", "dataInterfaceName": "eth1", "controlInterfaceName": "eth0", "dataPort": 9999, "version": "dev.7f1520", "configuration": { "controlInterface": "eth0", "dataInterface": "eth1", "dataPlaneSpecs": { "bpfPrograms": [ { "attachPoint": "BPF_TC_INGRESS", "interface": "eth1", "name": "tc-ingress" }, { "attachPoint": "BPF_TC_EGRESS", "interface": "eth1", "name": "tc-egress" }, { "attachPoint": "BPF_TC_EGRESS", "interface": "eth0", "name": "tc-forwarder" } ], "verbosity": 0, "virtualInterface": { "ip": "172.30.0.4", "mtu": 4096, "name": "swxtch-tun0", "subnet": "255.255.255.0", "type": "tun" } }, "dataPort": 9999, "ha": { "bufferSizeInPackets": 131072, "maxTimeToBufferPacketsMs": 50, "protocol": "swxtch", "removeInactiveStreamTimeoutSec": 5 }, "nicsConfig": null, "overrideSrcIp": false, "primarySwxtchAddress": "http://10.5.1.6:80", "statsReportWait": 60, "streamSpecs": null, "subscriptionsPollingIntervalMs": 100, "swxtch": "10.5.1.6", "xnicRpcPort": 10002, "xnicType": 2 }, "services": [ { "name": "swxtch-xnic-control", "isRunning": true }, { "name": "swxtch-xnic-data", "isRunning": true } ], "subscriptions": { "eth1": { "224.0.0.251": { "filter": "exclude", "srcList": [] }, "239.1.1.2": { "filter": "exclude", "srcList": [] } } } }, "parentId": "10.2.128.10", "timing": { "Master": null, "LocalOffset": null, "RootOffset": null, "TimebeatPresent": null }, "adaptors": null, "stats": { "totals": { "eth1": { "tx": { "packets": 0, "bytes": 0 }, "txRate": { "packets": 0, "bytes": 0 }, "rx": { "packets": 5083429, "bytes": 976018368 }, "rxRate": { "packets": 1847, "bytes": 354719 }, "txDrops": { "packets": 0, "bytes": 0 }, "rxDrops": { "packets": 0, "bytes": 0 }, "timestamp": 1724082856353285592 } }, "streamLinks": { "eth1": { "ingress": { "Group = 239.1.1.2:3490 | Source = 10.2.128.15:50226 | Adjacent = 10.2.192.116:5026": { "packets": 2541784, "bytes": 488022528, "protocol": "xMC", "protocolStats": null, "timestamp": 1724082856353297892, "packetsRate": 924, "bytesRates": 177344, "haPaths": [ 0 ], "fragStats": null }, "Group = 239.1.1.2:3490 | Source = 10.2.128.15:50226 | Adjacent = 10.5.2.6:5026": { "packets": 2541645, "bytes": 487995840, "protocol": "xMC", "protocolStats": null, "timestamp": 1724082856353297892, "packetsRate": 924, "bytesRates": 177375, "haPaths": [ 1 ], "fragStats": null } }, "egress": {} } }, "hsCounters": { "eth1": [ { "streamId": { "ip": 33620463, "port": 41485 }, "pathStats": [ { "ingressPackets": 2541784, "ingressBytes": 488022528, "ingressPacketsRate": 924, "ingressBytesRate": 177344, "missingPackets": 27, "missingPacketsRate": 0, "outputStreamPackets": 1526, "pathUsage": 0, "outputStreamPacketsRate": 0 }, { "ingressPackets": 2541645, "ingressBytes": 487995840, "ingressPacketsRate": 924, "ingressBytesRate": 177375, "missingPackets": 167, "missingPacketsRate": 0, "outputStreamPackets": 2540286, "pathUsage": 100, "outputStreamPacketsRate": 924 } ], "enqueueFailurePackets": 0, "egressPackets": 2541812, "egressBytes": 488027904, "egressPacketsRate": 924, "egressBytesRate": 177375, "outputStreamLoss": 0, "outputStreamLossRate": 0, "senderIp": "10.2.128.15" } ] }, "hsSummary": { "eth1": { "pathSummaries": [ { "ingressPacketsTotal": 2541784, "ingressBytesTotal": 488022528, "missingPacketsTotal": 27, "outputStreamPacketsTotal": 1526, "ingressPacketsRate": 924, "ingressBytesRate": 177344, "missingPacketsRate": 0, "outputStreamPacketsRate": 0, "pathUsage": 0 }, { "ingressPacketsTotal": 2541645, "ingressBytesTotal": 487995840, "missingPacketsTotal": 167, "outputStreamPacketsTotal": 2540286, "ingressPacketsRate": 924, "ingressBytesRate": 177375, "missingPacketsRate": 0, "outputStreamPacketsRate": 924, "pathUsage": 100 } ], "enqueueFailurePackets": 0, "egressPackets": 2541812, "egressBytes": 488027904, "outputStreamLoss": 0, "egressPacketsRate": 924, "egressBytesRate": 177375, "outputStreamLossRate": 0 } }, "slp": null }, "isRemote": false }, "10.5.1.6": { "general": { "id": "10.5.1.6", "name": "dsd-core-200", "componentKind": { "code": "swxtch", "displayName": "swXtch" } }, "environment": { "hostname": "dsd-core-200", "cloud": "AZURE", "osDistribution": "Ubuntu 20.04", "region": "eastus", "instanceType": "Standard_D8s_v4" }, "hardware": { "nics": { "eth0": { "name": "eth0", "index": 2, "ip": "10.5.1.6", "subnetPrefix": "10.5.1.0/24", "subnetMask": "255.255.255.0", "mtu": 1500, "mac": "00:22:48:24:75:06", "broadcastIp": "10.5.1.255", "driver": "hv_netvsc", "pciAddress": "", "publicIp": null, "masterOf": null, "vpc": null }, "eth1": { "name": "eth1", "index": 3, "ip": "10.5.2.6", "subnetPrefix": "10.5.2.0/24", "subnetMask": "255.255.255.0", "mtu": 1500, "mac": "00:22:48:24:77:db", "broadcastIp": "10.5.2.255", "driver": "mlx5_core", "pciAddress": "76ac:00:02.0", "publicIp": null, "masterOf": "enP30380s2", "vpc": null } }, "vpcs": {} }, "swxGeneral": { "type": "X1", "dataInterfaceName": "eth1", "controlInterfaceName": "eth0", "dataPort": 9999, "version": "dev.7f1520", "configuration": null, "services": null, "subscriptions": null }, "parentId": null, "timing": { "Master": null, "LocalOffset": null, "RootOffset": null, "TimebeatPresent": null }, "adaptors": [], "stats": { "totals": { "eth1": { "tx": { "packets": 5204581, "bytes": 999279552 }, "txRate": { "packets": 1844, "bytes": 354105 }, "rx": { "packets": 2664303, "bytes": 511546176 }, "rxRate": { "packets": 925, "bytes": 177565 }, "txDrops": null, "rxDrops": null, "timestamp": 1724082855943717450 } }, "streamLinks": { "eth1": { "ingress": { "Group = 239.1.1.2:3490 | Source = 10.2.128.15:50226 | Adjacent = 10.2.192.15:50226": { "packets": 2664303, "bytes": 511546176, "protocol": "xMC", "protocolStats": null, "timestamp": 1724082855918726621, "packetsRate": 921, "bytesRates": 176781, "haPaths": [ 1 ], "fragStats": null } }, "egress": { "Group = 239.1.1.2:3490 | Source = 10.2.128.15:50226 | Adjacent = 10.2.192.24:9999": { "packets": 2663319, "bytes": 511357248, "protocol": "xMC", "protocolStats": null, "timestamp": 1724082855943490143, "packetsRate": 921, "bytesRates": 176772, "haPaths": [ 1 ], "fragStats": null }, "Group = 239.1.1.2:3490 | Source = 10.2.128.15:50226 | Adjacent = 10.5.2.4:9999": { "packets": 2541262, "bytes": 487922304, "protocol": "xMC", "protocolStats": null, "timestamp": 1724082855943490143, "packetsRate": 921, "bytesRates": 176772, "haPaths": [ 1 ], "fragStats": null } } } }, "hsCounters": { "eth1": [] }, "hsSummary": {}, "slp": { "rxSlpStats": {}, "txSlpStats": null } }, "isRemote": true } }, "timestamp": "2024-08-19T15:54:17.4656522Z", "aliases": { "components": {}, "sockets": {}, "streams": { "225.1.1.1:1599": "SRT_L__I_225_1_1_1_1599", "239.4.2.3:5400": "SRT_C_239_4_2_3_1400" } } }
Cloud Information
/swxtch/monitoring/v1/info/cloud
Get information of the cloud for which the cloudSwXtch is installed on
URL:
http://<cloudSwXtch-control-IP>/swxtch/monitoring/v1/info/cloud
Example URL:
http://10.2.128.10/swxtch/monitoring/v1/info/cloud
Request:
Empty
Response:
200 - successful operation
Example Response:
{ "azureData": { "subscriptionId": "b10209ad-ad22-4c26-8aef-be93b2f0bb58", "managedResourceGroupName": "saDevNetwork", "resourceGorupName": "saDevNetwork", "sku": null, "billingFields": null, "plan": "byol-001" }, "awsData": null, "gcpData": null, "ociData": null, "alibabaData": null }
cloudSwXtch Information
/swxtch/monitoring/v1/info/swxtch
Get information on the cloudSwXtch
URL:
curl http://<cloudSwXtch-control-IP>/swxtch/monitoring/v1/info/swxtch
Example URL:
http://10.2.128.10/swxtch/monitoring/v1/info/swxtch
Request:
Empty
Response:
200 - successful response
Example Response:
{ "cloudSwxtchVersion": "3.0.0", "planType": "dsd-core-100", "cloudProvider": "AZURE", "ipAddr": "10.2.128.10", "swxtchGuid": "213de388-ccb5-4d93-9159-3fa9ad5585ea", "swxtchName": "dsd-core-100", "hostName": "dsd-core-100", "numCores": 1, "numXnics": null, "numBridges": null, "replStatus": "running", "authorized": true, "isMarketplace": true, "remainingDays": null, "license": null, "entitlements": { "maxClientCount": 40, "maxBridgeCount": 2, "bandwidthMbps": 25000, "enableMesh": true, "enableUnicast": true, "enableHA": true, "enableClockSync": true, "enableBridge": true, "enableWxckedEye": true, "enableAllowsMajorVersionUpdate": true, "enableTachyonLive": false }, "subnetDataPrefix": "10.2.192.0/22", "subnetCtrlPrefix": "10.2.128.0/22", "dataGatewayIp": "10.2.192.1", "ctrlIp": "10.2.128.10", "ctrlPort": 10802, "gatewayMacAddr": "12:34:56:78:9a:bc", "replInfo": { "ctrlIp": "127.0.0.1", "ctrlPort": 9996, "dataIp": "10.2.192.116", "dataPort": 9999, "dataMac": "AA06VA83" }, "licenseType": null, "licenseExpiryDate": null,
cloudSwXtch Stats
/swxtch/monitoring/v1/stats/swxtch
Get status of the cloudSwXtch
URL:
curl http://<cloudSwXtch-control-IP>/swxtch/monitoring/v1/stats/swxtch
Example URL:
http://10.2.128.10/swxtch/monitoring/v1/stats/swxtch
Request: Empty
Response:
200 - successful response
Example Response —>
{ "host": "10.2.192.116", "sequence": 9907, "rxCount": 18717937, "txCount": 21711090, "rxBytes": 3593894567, "txBytes": 4168642226, "rxBridgeBytes": 0, "rxBridgeCount": 0, "txBridgeBytes": 0, "txBridgeCount": 0, "timestamp": 1723834796290675315, "dropsByByteLimit": 0, "dropsByCountLimit": 0, "rxMeshPktCount": 0, "rxMeshBytes": 0, "txMeshPktCount": 0, "txMeshBytes": 0, "rxUnicastPktCount": 0, "rxUnicastBytes": 0, "txUnicastPktCount": 0, "txUnicastBytes": 0, "streams": { "rxStreamLinks": [ { "packets": 13159186, "bytes": 2526563712, "protocol": "xMC", "protocolstats": null, "fragStats": null, "timestamp": 1723829520431370897, "groupAddress": "239.1.1.2:3490", "adjacentAddress": "10.2.192.15:57795", "sourceAddress": "10.2.128.15:57795" }, { "packets": 3927329, "bytes": 754047168, "protocol": "xMC", "protocolstats": null, "fragStats": null, "timestamp": 1723834796288368432, "groupAddress": "239.1.1.2:3490", "adjacentAddress": "10.2.192.15:57449", "sourceAddress": "10.2.128.15:57449" }, { "packets": 63503, "bytes": 12192576, "protocol": "xMC", "protocolstats": null, "fragStats": null, "timestamp": 1723834796288368432, "groupAddress": "239.1.1.3:3490", "adjacentAddress": "10.2.192.24:50583", "sourceAddress": "10.2.192.24:50583" } ], "txStreamLinks": [ { "packets": 21258, "bytes": 4081536, "protocol": "xMC", "protocolstats": null, "fragStats": null, "timestamp": 1723834796289254064, "groupAddress": "239.1.1.3:3490", "adjacentAddress": "10.2.192.11:9999", "sourceAddress": "10.2.192.24:50583" }, { "packets": 13136117, "bytes": 2522134464, "protocol": "xMC", "protocolstats": null, "fragStats": null, "timestamp": 1723829520439529491, "groupAddress": "239.1.1.2:3490", "adjacentAddress": "10.2.192.24:9999", "sourceAddress": "10.2.128.15:57795" }, { "packets": 3927319, "bytes": 754045248, "protocol": "xMC", "protocolstats": null, "fragStats": null, "timestamp": 1723834796276642010, "groupAddress": "239.1.1.2:3490", "adjacentAddress": "10.2.192.24:9999", "sourceAddress": "10.2.128.15:57449" }, { "packets": 3069122, "bytes": 589271424, "protocol": "xMC", "protocolstats": null, "fragStats": null, "timestamp": 1723834796289254064, "groupAddress": "239.1.1.2:3490", "adjacentAddress": "10.2.192.11:9999", "sourceAddress": "10.2.128.15:57449" } ] } }
For definitions of source/adjacent addresses and protocol types, see swXtch.io API Concepts explained above.
xNIC Totals
/swxtch/monitoring/v1/stats/xnicsTotals
Get status of the xNIC totals
URL:
curl http://<cloudSwXtch-control-IP>/swxtch/monitoring/v1/stats/xnicsTotals
Example URL:
http://10.2.128.10/swxtch/monitoring/v1/stats/xnicsTotals
Request:
Empty
Response:
200 - successful response
Example Response:
{ "activeConnectionCount": null, "byteCounters": { "rxMulticastCount": 0, "rxTotalCount": 7885695384, "txMulticastCount": 0, "txTotalCount": 3500298564 }, "cloudSwxtchVersion": null, "dataAddress": null, "hostAddress": null, "latencies": null, "maxActiveConnections": null, "osDistribution": null, "packetCounters": { "-": 0, "rxDroppedCount": 0, "rxMulticastCount": 0, "rxTotalCount": 41070499, "txDroppedCount": 0, "txIgmpCount": 0, "txMulticastCount": 0, "txTotalCount": 18228612 }, "rxHaCounters": [], "rxMulticastGroups": [], "timestamp": 1723835599071011224, "txMulticastGroups": [], "xNicMode": null, "xNicType": null }
xNIC Stats
/swxtch/monitoring/v1/stats/xnics
Get status of the xNICs
URL:
curl http://<cloudSwXtch-control-IP>/swxtch/monitoring/v1/stats/xnics
Example URL:
http://10.2.128.10/swxtch/monitoring/v1/stats/xnics
Request:
Empty
Response:
200- successful response
Example Response —>
{ "10.2.128.13": { "activeConnectionCount": 2, "byteCounters": { "rxMulticastCount": 0, "rxTotalCount": 6170369908, "txMulticastCount": 0, "txTotalCount": 2832 }, "cloudSwxtchVersion": "dev.ac84d0", "dataAddress": "10.2.192.11", "hostAddress": "10.2.128.13", "latencies": { "buckets": {}, "count": 0, "sum": 0 }, "maxActiveConnections": 2, "osDistribution": "Ubuntu 20.04", "packetCounters": { "-": 0, "rxDroppedCount": 0, "rxMulticastCount": 0, "rxTotalCount": 32137435, "txDroppedCount": 0, "txIgmpCount": 0, "txMulticastCount": 0, "txTotalCount": 22 }, "rxHaCounters": [ { "byteCount": 1976033472, "destinationCount": 0, "groupIp": "239.1.1.3", "packetCount": 10291841, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" }, { "byteCount": 1109021376, "destinationCount": 0, "groupIp": "239.1.1.2", "packetCount": 5776153, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" }, { "byteCount": 1976052480, "destinationCount": 0, "groupIp": "239.1.1.3", "packetCount": 10291940, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" }, { "byteCount": 1109027520, "destinationCount": 0, "groupIp": "239.1.1.2", "packetCount": 5776185, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" } ], "timestamp": 1723837738833165495, "txMulticastGroups": [ { "byteCount": 294, "destinationCount": 0, "groupIp": "255.255.255.255", "packetCount": 2, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" }, { "byteCount": 89, "destinationCount": 0, "groupIp": "255.255.255.255", "packetCount": 1, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" } ], "xNicMode": "HA", "xNicType": "t2" }, "10.2.128.15": { "activeConnectionCount": 2, "byteCounters": { "rxMulticastCount": 0, "rxTotalCount": 59072, "txMulticastCount": 0, "txTotalCount": 2546472892 }, "cloudSwxtchVersion": "dev.ac84d0", "dataAddress": "10.2.192.15", "hostAddress": "10.2.128.15", "latencies": { "buckets": {}, "count": 0, "sum": 0 }, "maxActiveConnections": 2, "osDistribution": "Windows Server 2019 Datacenter - Microsoft Windows [Version 10.0.17763.6189]", "packetCounters": { "-": 0, "rxDroppedCount": 0, "rxMulticastCount": 0, "rxTotalCount": 340, "txDroppedCount": 0, "txIgmpCount": 0, "txMulticastCount": 0, "txTotalCount": 13262608 }, "rxHaCounters": [ { "egressByteCount": 275, "egressPacketCount": 1, "enqueueFailureCount": 0, "groupIp": { "ip": 4286775818, "port": 35328 }, "outputStreamLossCount": 0, "paths": [ { "ingressByteCount": 275, "ingressPacketCount": 1, "missingPacketCount": 0, "usedPacketCount": 0 }, { "ingressByteCount": 275, "ingressPacketCount": 1, "missingPacketCount": 0, "usedPacketCount": 1 } ], "senderIp": "10.2.128.75" }, { "egressByteCount": 275, "egressPacketCount": 1, "enqueueFailureCount": 0, "groupIp": { "ip": 4290970122, "port": 35328 }, "outputStreamLossCount": 0, "paths": [ { "ingressByteCount": 275, "ingressPacketCount": 1, "missingPacketCount": 0, "usedPacketCount": 0 }, { "ingressByteCount": 275, "ingressPacketCount": 1, "missingPacketCount": 0, "usedPacketCount": 1 } ], "senderIp": "10.2.192.82" } ], "rxMulticastGroups": [ { "byteCount": 1925, "destinationCount": 0, "groupIp": "10.2.131.255", "packetCount": 7, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" }, { "byteCount": 1116, "destinationCount": 0, "groupIp": "10.2.195.255", "packetCount": 9, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" } ], "timestamp": 1723837734873976100, "txMulticastGroups": [ { "byteCount": 1273105920, "destinationCount": 0, "groupIp": "239.1.1.2", "packetCount": 6630760, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" }, { "byteCount": 1273105920, "destinationCount": 0, "groupIp": "239.1.1.2", "packetCount": 6630760, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" } ], "xNicMode": "Normal", "xNicType": "t2" }, "10.2.128.27": { "activeConnectionCount": 2, "byteCounters": { "rxMulticastCount": 0, "rxTotalCount": 6094630132, "txMulticastCount": 0, "txTotalCount": 3968082038 }, "cloudSwxtchVersion": "dev.ac84d0", "dataAddress": "10.2.192.24", "hostAddress": "10.2.128.27", "latencies": { "buckets": {}, "count": 0, "sum": 0 }, "maxActiveConnections": 2, "osDistribution": "Ubuntu 20.04", "packetCounters": { "-": 0, "rxDroppedCount": 0, "rxMulticastCount": 0, "rxTotalCount": 31742957, "txDroppedCount": 0, "txIgmpCount": 0, "txMulticastCount": 0, "txTotalCount": 20667102 }, "rxHaCounters": [ { "egressByteCount": 1273770240, "egressPacketCount": 6634220, "enqueueFailureCount": 0, "groupIp": { "ip": 33620463, "port": 41485 }, "outputStreamLossCount": 0, "paths": [ { "ingressByteCount": 1273767936, "ingressPacketCount": 6634208, "missingPacketCount": 11, "usedPacketCount": 18 }, { "ingressByteCount": 1273770240, "ingressPacketCount": 6634220, "missingPacketCount": 0, "usedPacketCount": 6634202 } ], "senderIp": "10.2.128.15" } ], "rxMulticastGroups": [ { "byteCount": 1771408320, "destinationCount": 0, "groupIp": "239.1.1.2", "packetCount": 9226085, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" }, { "byteCount": 1273770240, "destinationCount": 0, "groupIp": "239.1.1.2", "packetCount": 6634220, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" }, { "byteCount": 1775448576, "destinationCount": 0, "groupIp": "239.1.1.2", "packetCount": 9247128, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" }, { "byteCount": 1273767936, "destinationCount": 0, "groupIp": "239.1.1.2", "packetCount": 6634208, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" } "updateTime": "0001-01-01T00:00:00Z" ], "timestamp": 1723837738670810658, "txMulticastGroups": [ { "byteCount": 1984039872, "destinationCount": 0, "groupIp": "239.1.1.3", "packetCount": 10333541, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" }, { "byteCount": 1984039872, "destinationCount": 0, "groupIp": "239.1.1.3", "packetCount": 10333541, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" }, { "byteCount": 111, "destinationCount": 0, "groupIp": "255.255.255.255", "packetCount": 1, "protocolType": 0, "sourceIp": "", "sourcePort": 0, "updateTime": "0001-01-01T00:00:00Z" } ], "xNicMode": "HA", "xNicType": "t2" } }