Skip to content

Feature: Add UDP2 interconnect protocol implementation#1357

Merged
my-ship-it merged 3 commits into
apache:mainfrom
zhangyue1818:udp2
Dec 4, 2025
Merged

Feature: Add UDP2 interconnect protocol implementation#1357
my-ship-it merged 3 commits into
apache:mainfrom
zhangyue1818:udp2

Conversation

@zhangyue1818
Copy link
Copy Markdown
Contributor

@zhangyue1818 zhangyue1818 commented Sep 11, 2025

UDP2 is a next-generation interconnect protocol implementation that
achieves complete decoupling between the interconnect layer and the
database kernel.

This implementation introduces:

  • A layered architecture with adapter layer (ic_modules.c, ic_udp2.c)
    and core communication library (ic_common/)
  • Lightweight data structures (ICCdbProcess, ICExecSlice) to replace
    complex database kernel structures
  • Standardized C/C++ interfaces for database-agnostic communication
  • CMake-based build system supporting independent compilation
  • Unified error handling mechanism with configurable error levels

Key benefits:

  • Independent development and evolution of interconnect layer
  • End-to-end testing without database kernel dependency
  • Clear interface boundaries for easier extension and maintenance
  • Rapid diagnosis of interconnect vs kernel issues

Fixes #ISSUE_Number

What does this PR do?

Type of Change

  • Bug fix (non-breaking change)
  • New feature (non-breaking change)
  • Breaking change (fix or feature with breaking changes)
  • Documentation update

Breaking Changes

Test Plan

  • Unit tests added/updated
  • Integration tests added/updated
  • Passed make installcheck
  • Passed make -C src/test installcheck-cbdb-parallel

Impact

Performance:

User-facing changes:

Dependencies:

Checklist

Additional Context

CI Skip Instructions


Comment thread contrib/udp2/ic_common/README.md Outdated
Comment thread contrib/udp2/ic_common/udp2/ic_arrow_adapter.cpp Outdated
@leborchuk
Copy link
Copy Markdown
Contributor

Awesome! Could you please share some information about the architecture of the new solution? I think there might be an original (acmsigmod?) article on how to build an effective interconnect layer. (I see some familiar elements in the code, but I cannot fully comprehend what it is)

@zhangyue1818
Copy link
Copy Markdown
Contributor Author

Awesome! Could you please share some information about the architecture of the new solution? I think there might be an original (acmsigmod?) article on how to build an effective interconnect layer. (I see some familiar elements in the code, but I cannot fully comprehend what it is)

During performance testing, we identified the Motion node as a significant performance bottleneck. Further analysis revealed that the root cause stems from inefficiencies in the underlying IPC layer protocol implementation. To address this, we plan to enhance the IPC layer to improve overall system performance.

Currently, the IPC layer is tightly coupled with the database kernel, which makes implementing performance optimizations challenging and limits flexibility. As an initial step, we are decoupling the IPC layer from the database kernel. This separation will not only simplify future improvements but also enable independent testing and development of the IPC layer.

This commit represents foundational work—specifically, the decoupling of the existing UDP-based IPC layer from the database kernel—and lays the groundwork for subsequent performance optimization efforts.

@tuhaihe
Copy link
Copy Markdown
Member

tuhaihe commented Sep 16, 2025

The following two files also need the license header:

[WARNING] Files with unapproved licenses:
  contrib/udp2/CMakeLists.txt
  contrib/udp2/ic_common/CMakeLists.txt

@zhangyue1818 zhangyue1818 force-pushed the udp2 branch 2 times, most recently from 7e7c028 to 251adf4 Compare September 23, 2025 01:59
@zhangyue1818
Copy link
Copy Markdown
Contributor Author

7e7c028

The following two files also need the license header:

[WARNING] Files with unapproved licenses:
  contrib/udp2/CMakeLists.txt
  contrib/udp2/ic_common/CMakeLists.txt

fix in 251adf4

@tuhaihe tuhaihe self-requested a review October 14, 2025 09:44
Copy link
Copy Markdown
Member

@tuhaihe tuhaihe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 for ASF license check.

Comment thread contrib/udp2/ic_common/ic_utility.hpp Outdated
Comment thread contrib/udp2/ic_common/udp2/ic_udp2.cpp Outdated
Comment thread contrib/udp2/ic_common/udp2/ic_udp2.cpp
@yjhjstz
Copy link
Copy Markdown
Member

yjhjstz commented Oct 14, 2025

Could you please share some information about the architecture of the new solution by doc ?

Comment thread contrib/udp2/ic_common/ic_utility.cpp
Comment thread contrib/udp2/ic_common/udp2/ic_udp2.cpp
Comment thread contrib/udp2/ic_common/udp2/ic_udp2.cpp Outdated
Comment thread contrib/udp2/ic_common/udp2/ic_udp2.cpp Outdated
Comment thread contrib/udp2/ic_common/udp2/ic_udp2_internal.hpp Outdated
Comment thread contrib/udp2/ic_common/udp2/ic_udp2_internal.hpp Outdated
Comment thread contrib/udp2/ic_common/udp2/ic_udp2_internal.hpp Outdated
Comment thread contrib/udp2/ic_modules.c
@zhangyue1818
Copy link
Copy Markdown
Contributor Author

Could you please share some information about the architecture of the new solution by doc ?

Describes the architecture and other aspects in README.md,see 94428f1

Comment thread contrib/udp2/README.md
Comment thread contrib/udp2/ic_udp2.c
@my-ship-it my-ship-it force-pushed the udp2 branch 2 times, most recently from 4b03cc2 to ddc1f60 Compare November 28, 2025 07:40
@tuhaihe
Copy link
Copy Markdown
Member

tuhaihe commented Nov 28, 2025

That would be better to have a comprehensive commit body to these commits, sharing the basic information on what, why and how and more, following the .gitmessage template. @zhangyue1818

If we squash and merge this PR, then can paste the commit body manually.

@zhangyue1818 zhangyue1818 changed the title Add udp2, an experimental IPC layer implementation Feature: Add UDP2 interconnect protocol implementation Nov 28, 2025
@my-ship-it my-ship-it merged commit d6c427b into apache:main Dec 4, 2025
40 checks passed
@zhangyue1818 zhangyue1818 deleted the udp2 branch December 4, 2025 09:55
hw118118 pushed a commit to hw118118/cloudberrydb that referenced this pull request Jan 27, 2026
UDP2 is a next-generation interconnect protocol implementation that
achieves complete decoupling between the interconnect layer and the
database kernel.

This implementation introduces:

A layered architecture with adapter layer (ic_modules.c, ic_udp2.c)
and core communication library (ic_common/)
Lightweight data structures (ICCdbProcess, ICExecSlice) to replace
complex database kernel structures
Standardized C/C++ interfaces for database-agnostic communication
CMake-based build system supporting independent compilation
Unified error handling mechanism with configurable error levels
Key benefits:

Independent development and evolution of interconnect layer
End-to-end testing without database kernel dependency
Clear interface boundaries for easier extension and maintenance
Rapid diagnosis of interconnect vs kernel issues
hw118118 pushed a commit to hw118118/cloudberrydb that referenced this pull request Jan 27, 2026
UDP2 is a next-generation interconnect protocol implementation that
achieves complete decoupling between the interconnect layer and the
database kernel.

This implementation introduces:

A layered architecture with adapter layer (ic_modules.c, ic_udp2.c)
and core communication library (ic_common/)
Lightweight data structures (ICCdbProcess, ICExecSlice) to replace
complex database kernel structures
Standardized C/C++ interfaces for database-agnostic communication
CMake-based build system supporting independent compilation
Unified error handling mechanism with configurable error levels
Key benefits:

Independent development and evolution of interconnect layer
End-to-end testing without database kernel dependency
Clear interface boundaries for easier extension and maintenance
Rapid diagnosis of interconnect vs kernel issues
hw118118 pushed a commit to hw118118/cloudberrydb that referenced this pull request Jan 28, 2026
UDP2 is a next-generation interconnect protocol implementation that
achieves complete decoupling between the interconnect layer and the
database kernel.

This implementation introduces:

A layered architecture with adapter layer (ic_modules.c, ic_udp2.c)
and core communication library (ic_common/)
Lightweight data structures (ICCdbProcess, ICExecSlice) to replace
complex database kernel structures
Standardized C/C++ interfaces for database-agnostic communication
CMake-based build system supporting independent compilation
Unified error handling mechanism with configurable error levels
Key benefits:

Independent development and evolution of interconnect layer
End-to-end testing without database kernel dependency
Clear interface boundaries for easier extension and maintenance
Rapid diagnosis of interconnect vs kernel issues
chenjinbao1989 pushed a commit to chenjinbao1989/cloudberrydb that referenced this pull request Apr 12, 2026
UDP2 is a next-generation interconnect protocol implementation that
achieves complete decoupling between the interconnect layer and the
database kernel.

This implementation introduces:

A layered architecture with adapter layer (ic_modules.c, ic_udp2.c)
and core communication library (ic_common/)
Lightweight data structures (ICCdbProcess, ICExecSlice) to replace
complex database kernel structures
Standardized C/C++ interfaces for database-agnostic communication
CMake-based build system supporting independent compilation
Unified error handling mechanism with configurable error levels
Key benefits:

Independent development and evolution of interconnect layer
End-to-end testing without database kernel dependency
Clear interface boundaries for easier extension and maintenance
Rapid diagnosis of interconnect vs kernel issues
chenjinbao1989 pushed a commit to chenjinbao1989/cloudberrydb that referenced this pull request Apr 21, 2026
UDP2 is a next-generation interconnect protocol implementation that
achieves complete decoupling between the interconnect layer and the
database kernel.

This implementation introduces:

A layered architecture with adapter layer (ic_modules.c, ic_udp2.c)
and core communication library (ic_common/)
Lightweight data structures (ICCdbProcess, ICExecSlice) to replace
complex database kernel structures
Standardized C/C++ interfaces for database-agnostic communication
CMake-based build system supporting independent compilation
Unified error handling mechanism with configurable error levels
Key benefits:

Independent development and evolution of interconnect layer
End-to-end testing without database kernel dependency
Clear interface boundaries for easier extension and maintenance
Rapid diagnosis of interconnect vs kernel issues
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants