[DPU] Add support for Flow bulk session get notifications#1769
[DPU] Add support for Flow bulk session get notifications#1769lihuay merged 17 commits intosonic-net:masterfrom
Conversation
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
There was a problem hiding this comment.
Pull request overview
This pull request adds support for Flow Bulk Session get notifications in the DPU (Data Processing Unit) pipeline. The implementation introduces a new mechanism where flow dump events are written directly to compressed files from syncd, while only FINISHED events are relayed to orchagent for notification. This design improves performance by avoiding the overhead of serializing and transmitting large amounts of flow data through Redis.
Changes:
- Added flow dump infrastructure with JSON serialization and gzip compression for efficient storage
- Implemented notification filtering logic to write flow entries to disk while only forwarding FINISHED events
- Extended notification queue to support auxiliary data (flow dump JSON lines) alongside standard notifications
- Added comprehensive unit tests covering serialization, file I/O, log rotation, and notification handling
Reviewed changes
Copilot reviewed 42 out of 42 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| syncd/FlowDump.{h,cpp} | Core flow dump serialization and file writing logic with log rotation |
| syncd/NotificationHandler.{h,cpp} | Collects flow entry events and enqueues with auxiliary data |
| syncd/NotificationProcessor.{h,cpp} | Processes flow notifications, writes dumps to disk, filters FINISHED events |
| syncd/NotificationQueue.{h,cpp} | Extended to support auxiliary data alongside notifications |
| syncd/SwitchNotifications.{h,cpp} | Added callback registration for flow bulk get session events |
| meta/NotificationFlowBulkGetSessionEvent.{h,cpp} | Notification class for flow bulk get session events |
| meta/Meta.{h,cpp} | Validation logic for flow bulk get session event notifications |
| meta/SaiSerialize.cpp | Serialization/deserialization for flow bulk get session event notifications |
| vslib/SwitchStateBase.cpp | Registered flow bulk get session event notification in virtual switch |
| unittest/syncd/TestFlowDump.cpp | Comprehensive tests for serialization, file I/O, and log rotation |
| unittest/syncd/TestNotificationHandler.cpp | Tests for notification handler with flow events |
| unittest/meta/TestSaiSerialize.cpp | Tests for serialization/deserialization logic |
| proxylib/Proxy.{h,cpp} | Proxy notification forwarding support |
| saiplayer/SaiPlayer.{h,cpp} | Player notification handling support |
| pyext/pysairedis.{i,cpp} | Python bindings for flow bulk get session events |
| */Makefile.am | Added -lz linker flag for zlib compression support |
6cf5250 to
3aa0222
Compare
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Signed-off-by: Vivek Reddy <[email protected]>
Signed-off-by: Vivek Reddy <[email protected]>
Signed-off-by: Vivek Reddy <[email protected]>
Signed-off-by: Vivek Reddy <[email protected]>
Signed-off-by: Vivek Reddy <[email protected]>
…#1757) Signed-off-by: Ryan Garofano <[email protected]> Signed-off-by: Vivek Reddy <[email protected]>
why currently vpp doesn't support binding multiple ACL tables. Each table is appended with default permit-all rules. With multiple tables, this may cause acl matched by such rules and skip the actual rule to make in the tables after this one. what this PR does remove the default permit-all rules for each table If a table is empty, create a dummy rule that won't match any traffic because vpp doesn't allow empty table. The dummy rule matches dest-ip to 0.0.0.0/32 sort all the tables by priority in the table group. vpp doesn't support parallel matching added catch-all acl group to the end. vpp default behavior of no match is drop but sonic is accept. Fix sonic-vpp crashing due to race condition during stats pull. If the interface to get stats has been removed, stat_segment_ls_r returns null. Signed-off-by: Yue Gao <[email protected]> Signed-off-by: Vivek Reddy <[email protected]>
Co-authored-by: Copilot <[email protected]> Signed-off-by: Vivek Reddy <[email protected]>
Co-authored-by: Copilot <[email protected]> Signed-off-by: Vivek Reddy <[email protected]>
Co-authored-by: Copilot <[email protected]> Signed-off-by: Vivek Reddy <[email protected]>
Co-authored-by: Copilot <[email protected]> Signed-off-by: Vivek Reddy <[email protected]>
ff1ea46 to
0aaee63
Compare
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Signed-off-by: Vivek Reddy <[email protected]>
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azpw run Azure.sonic-sairedis |
|
/AzurePipelines run Azure.sonic-sairedis |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
@saiarcot895 , can you check and merge the PR? |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
@lihuay Can you merge the changes? |
HLD: sonic-net/SONiC#2168