Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
6936d86
refactor(advanced_network): remove redundant docstring headers
ronyrad Mar 30, 2025
c39f925
refactor(advanced_network): standardize rmax to rivermax project-wide
ronyrad Mar 30, 2025
8fe767e
feat(advanced network): migrate to rivermax-dev-kit framework
ronyrad Mar 29, 2025
c76507a
feat(rivermax): implement SMPTE 2110-20 media transmitter service
ronyrad Apr 6, 2025
7029ce7
fix(rivermax): enhance operational diagnostics and thread safety
ronyrad Apr 20, 2025
0a6d0e2
feat (advanced_network) Add burst flags to the burst header
ronyrad May 22, 2025
ea3e40b
feat (rivermax) Add MediaSenderZeroCopyService
ronyrad May 22, 2025
23a4e2a
feat (rivermax) Add option to set number of packets in chunk
ronyrad May 22, 2025
7fd5cb1
feat (rivermax): Lint fixes
ronyrad May 25, 2025
103007f
feat(advanced_network) Update Dockerfile
ronyrad Jun 24, 2025
95336ad
feat(advanced_network) Updated Changelog
ronyrad Jun 24, 2025
866d214
feat (rivermax): Add Rivermax Readme
ronyrad Jul 2, 2025
79490ed
feat (advanced_network) Fix year in headers
ronyrad Aug 26, 2025
be43f5e
Add Rivermax ANO testing
danal97 Jul 29, 2025
9f0f557
feat(advanced_network) Update Adv. Network Manager Python bindings
ronyrad Jun 24, 2025
30b7ec2
feat(advanced_network_media) Add Advanced Network Media operators
ronyrad Jun 29, 2025
2e705e6
feat(adv_networking_media_sender) Add Adv. Networking Media Sender
ronyrad Jun 29, 2025
eff477d
feat(adv_networking_media_player) Add Adv. Networking Media Player
ronyrad Jun 29, 2025
08bdb37
Enhance Rivermax RX manager to support multiple streams per thread
danal97 Aug 24, 2025
ffcccb3
Enhance adv_networking_media_player to support multi-stream
danal97 Sep 1, 2025
36cd34f
Enhance Rivermax TX manager to support multiple streams per thread
danal97 Aug 17, 2025
698cb39
Update Rivermax version to 1.71.4
danal97 Oct 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions applications/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@
add_holohub_application(adv_networking_bench DEPENDS
OPERATORS advanced_network)

add_holohub_application(adv_networking_media_player DEPENDS
OPERATORS advanced_network advanced_network_media_rx)

add_holohub_application(adv_networking_media_sender DEPENDS
OPERATORS advanced_network advanced_network_media_tx)

add_holohub_application(aja_video_capture DEPENDS
OPERATORS aja_source)

Expand Down
4 changes: 2 additions & 2 deletions applications/adv_networking_bench/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ To run with a different configuration file than the default `adv_networking_benc
./adv_networking_bench adv_networking_bench_gpunetio_tx_rx.yaml

# Run with Rivermax configuration
./adv_networking_bench adv_networking_bench_rmax_rx.yaml
./adv_networking_bench adv_networking_bench_rivermax_rx.yaml
```

For Rivermax, you will need extra flags:
Expand All @@ -117,7 +117,7 @@ For Rivermax, you will need extra flags:
"

# Run with Rivermax configuration
./adv_networking_bench adv_networking_bench_rmax_rx.yaml
./adv_networking_bench adv_networking_bench_rivermax_rx.yaml
```

### Test Instructions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ advanced_network:
cfg:
version: 1
manager: "rivermax"
master_core: 5 # Master CPU core
master_core: 6 # Master CPU core
debug: 1
log_level: "warn"
loopback: ""
Expand All @@ -46,34 +46,28 @@ advanced_network:
address: cc:00.1
rx:
queues:
- name: "rx_q_1"
id: 1
cpu_core: "11,12,13"
- name: "rx_q_0"
id: 0
cpu_core: "10"
batch_size: 4320
memory_regions:
- "Data_RX_CPU"
- "Data_RX_GPU"
rmax_rx_settings:
memory_registration: true
#allocator_type: "huge_page_2mb"
rivermax_rx_settings:
settings_type: "ipo_receiver"
verbose: true
max_path_diff_us: 100
ext_seq_num: true
sleep_between_operations_us: 100
local_ip_addresses:
- 2.1.0.12
- 2.1.0.12
source_ip_addresses:
- 2.1.0.2
- 2.1.0.2
destination_ip_addresses:
- 224.1.1.1
- 224.1.1.2
destination_ports:
- 50001
- 50001
rx_stats_period_report_ms: 3000
send_packet_ext_info: true
rx_threads:
- thread_id: 0
network_settings:
- stream_id: 0
local_ip_addresses:
- 2.1.0.11
source_ip_addresses:
- 2.1.0.12
destination_ip_addresses:
- 224.1.1.1
destination_ports:
- 50000

bench_rx:
interface_name: "rx_port" # Name of the RX port from the advanced_network config
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
%YAML 1.2
# SPDX-FileCopyrightText: Copyright (c) 2022-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
scheduler:
check_recession_period_ms: 0
worker_thread_number: 5
stop_on_deadlock: true
stop_on_deadlock_timeout: 500

advanced_network:
cfg:
version: 1
manager: "rivermax"
master_core: 6 # Master CPU core
debug: 1
log_level: "debug"

memory_regions:
- name: "Data_TX_CPU"
kind: "huge"
affinity: 0
num_bufs: 43200
buf_size: 20
- name: "Data_TX_GPU"
kind: "device"
affinity: 0
num_bufs: 43200
buf_size: 1200

interfaces:
- name: "tx_port"
address: cc:00.1
tx:
queues:
- name: "tx_q_1"
id: 0
cpu_core: "14"
batch_size: 4320
output_port: "bench_tx_out_1"
memory_regions:
- "Data_TX_CPU"
- "Data_TX_GPU"
rivermax_tx_settings:
settings_type: "media_sender"
memory_registration: true
memory_allocation: true
memory_pool_location: "device"
use_internal_memory_pool: true
#allocator_type: "huge_page_2mb"
verbose: true
sleep_between_operations: false
stats_report_interval_ms: 1000
send_packet_ext_info: true
video_format: YCbCr-4:2:2
bit_depth: 10
frame_width: 1920
frame_height: 1080
frame_rate: 60
dummy_sender: false
tx_threads:
- thread_id: 0
network_settings:
- stream_id: 0
local_ip_address: 1.1.164.19
destination_ip_address: 224.1.50.1
destination_port: 50505
- thread_id: 1
network_settings:
- stream_id: 1
local_ip_address: 1.1.164.19
destination_ip_address: 224.1.50.2
destination_port: 50505

bench_tx:
interface_name: cc:00.1
sample_format: YUV422
frame_width: 1920
frame_height: 1080
bit_depth: 10
file_path: "./build/adv_networking_bench/applications/adv_networking_bench/cpp/input_file.ycbcr"
payload_memory: "device"

Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
%YAML 1.2
# SPDX-FileCopyrightText: Copyright (c) 2022-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
scheduler:
check_recession_period_ms: 0
worker_thread_number: 5
stop_on_deadlock: true
stop_on_deadlock_timeout: 500

advanced_network:
cfg:
version: 1
manager: "rivermax"
master_core: 6 # Master CPU core
debug: 1
log_level: "debug"

memory_regions:
- name: "Data_RX_CPU"
kind: "huge"
affinity: 0
num_bufs: 43200
buf_size: 20
- name: "Data_RX_GPU"
kind: "device"
affinity: 0
num_bufs: 43200
buf_size: 1200
- name: "Data_TX_CPU"
kind: "huge"
affinity: 0
num_bufs: 43200
buf_size: 20
- name: "Data_TX_GPU"
kind: "device"
affinity: 0
num_bufs: 43200
buf_size: 1200

interfaces:
- name: "rx_port"
address: cc:00.1
rx:
queues:
- name: "rx_q_0"
id: 0
cpu_core: "10"
batch_size: 4320
memory_regions:
- "Data_RX_CPU"
- "Data_RX_GPU"
rivermax_rx_settings:
settings_type: "ipo_receiver"
memory_registration: true
#allocator_type: "huge_page_2mb"
verbose: true
max_path_diff_us: 10000
ext_seq_num: true
sleep_between_operations_us: 0
local_ip_addresses:
- 2.1.0.12
- 2.1.0.12
source_ip_addresses:
- 2.1.0.2
- 2.1.0.2
destination_ip_addresses:
- 224.1.1.1
- 224.1.1.2
destination_ports:
- 50001
- 50001
stats_report_interval_ms: 1000
send_packet_ext_info: true
tx:
queues:
- name: "tx_q_1"
id: 0
cpu_core: "14"
batch_size: 4320
output_port: "bench_tx_out_1"
memory_regions:
- "Data_TX_CPU"
- "Data_TX_GPU"
rivermax_tx_settings:
settings_type: "media_sender"
memory_registration: true
memory_allocation: true
memory_pool_location: "device"
#allocator_type: "huge_page_2mb"
verbose: true
sleep_between_operations: false
local_ip_address: 2.1.0.12
destination_ip_address: 224.1.1.3
destination_port: 50001
stats_report_interval_ms: 1000
send_packet_ext_info: true
video_format: YCbCr-4:2:2
bit_depth: 10
frame_width: 1920
frame_height: 1080
frame_rate: 60
dummy_sender: false

bench_rx:
interface_name: "rx_port" # Name of the RX port from the advanced_network config
gpu_direct: true # Set to true if using a GPU region for the Rx queues.
split_boundary: true # Whether header and data is split (Header to CPU)
batch_size: 8640
max_packet_size: 1220
header_size: 20

bench_tx:
interface_name: cc:00.1
sample_format: YUV422
frame_width: 1920
frame_height: 1080
bit_depth: 10
file_path: "./build/adv_networking_bench/applications/adv_networking_bench/cpp/input_file.ycbcr"
payload_memory: "device"

24 changes: 19 additions & 5 deletions applications/adv_networking_bench/cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,23 @@ add_custom_target(adv_networking_bench_gpunetio_tx_rx_yaml
)
add_dependencies(adv_networking_bench adv_networking_bench_gpunetio_tx_rx_yaml)

add_custom_target(adv_networking_bench_rmax_rx_yaml
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/../adv_networking_bench_rmax_rx.yaml" ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/../adv_networking_bench_rmax_rx.yaml"
add_custom_target(adv_networking_bench_rivermax_rx_yaml
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/../adv_networking_bench_rivermax_rx.yaml" ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/../adv_networking_bench_rivermax_rx.yaml"
)
add_dependencies(adv_networking_bench adv_networking_bench_rmax_rx_yaml)
add_dependencies(adv_networking_bench adv_networking_bench_rivermax_rx_yaml)

add_custom_target(adv_networking_bench_rivermax_tx_yaml
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/../adv_networking_bench_rivermax_tx.yaml" ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/../adv_networking_bench_rivermax_tx.yaml"
)
add_dependencies(adv_networking_bench adv_networking_bench_rivermax_tx_yaml)

add_custom_target(adv_networking_bench_rivermax_tx_rx_yaml
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/../adv_networking_bench_rivermax_tx_rx.yaml" ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/../adv_networking_bench_rivermax_rx.yaml"
)
add_dependencies(adv_networking_bench adv_networking_bench_rivermax_tx_rx_yaml)

# Installation
install(TARGETS adv_networking_bench
Expand All @@ -109,7 +121,9 @@ install(
../adv_networking_bench_default_rx_multi_q.yaml
../adv_networking_bench_default_sw_loopback.yaml
../adv_networking_bench_gpunetio_tx_rx.yaml
../adv_networking_bench_rmax_rx.yaml
../adv_networking_bench_rivermax_rx.yaml
../adv_networking_bench_rivermax_tx.yaml
../adv_networking_bench_rivermax_tx_rx.yaml
DESTINATION examples/adv_networking_bench
COMPONENT adv_networking_bench-configs
PERMISSIONS OWNER_READ OWNER_WRITE
Expand Down
18 changes: 15 additions & 3 deletions applications/adv_networking_bench/cpp/CMakeLists.txt.install
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,20 @@ add_custom_target(adv_networking_bench_gpunetio_tx_rx_yaml
)
add_dependencies(adv_networking_bench adv_networking_bench_gpunetio_tx_rx_yaml)

add_custom_target(adv_networking_bench_rmax_rx_yaml
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/adv_networking_bench_rmax_rx.yaml" ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/adv_networking_bench_rmax_rx.yaml"
add_custom_target(adv_networking_bench_rivermax_rx_yaml
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/adv_networking_bench_rivermax_rx.yaml" ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/adv_networking_bench_rivermax_rx.yaml"
)
add_dependencies(adv_networking_bench adv_networking_bench_rmax_rx_yaml)

add_custom_target(adv_networking_bench_rivermax_tx_yaml
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/adv_networking_bench_rivermax_tx.yaml" ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/adv_networking_bench_rivermax_tx.yaml"
)
add_dependencies(adv_networking_bench adv_networking_bench_rmax_tx_yaml)

add_custom_target(adv_networking_bench_rivermax_tx_rx_yaml
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/adv_networking_bench_rivermax_tx_rx.yaml" ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/adv_networking_bench_rivermax_tx_rx.yaml"
)
add_dependencies(adv_networking_bench adv_networking_bench_rmax_tx_rx_yaml)
Loading