Replies: 1 comment
-
|
@acul71 : Very nicely documented. Appreciate it. Wish to also CC @AkMo3, who initially shared about it while working on quic interop with go-libp2p. Appreciate the great efforts and comprehensive notes. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Identify-Push Protocol Usage: Python vs Go Comparison
Related PR: #1046 - Fix QUIC interop: Track Connection IDs for proper packet routing
Go Maintainer Concern: Python's identify-push might not be used properly, causing Go-to-Python interop issues
Review Date: 2025-11-15
Executive Summary
Key Finding: The Go maintainer's concern is VALID. Python's identify-push implementation differs significantly from Go's:
However: This is NOT the root cause of PR #1046's interop issue. The Connection ID tracking bug was the actual problem. But the identify-push differences could cause other interop issues.
1. Handler Registration
Go: Automatic Registration
Location:
p2p/protocol/identify/id.go:241-244Key Points:
ids.rateLimiter.Limit(ids.handlePush)/ipfs/id/push/1.0.0Python: Manual Registration Required
Location:
libp2p/host/defaults.py:27-33Key Points:
Impact:
2. Automatic Push Mechanism
Go: Automatic Proactive Pushes
Location:
p2p/protocol/identify/id.go:252-304Push Logic:
p2p/protocol/identify/id.go:307-358Key Points:
maxPushConcurrency = 32Python: Manual Push Only
Location:
libp2p/identity/identify_push/identify_push.py:176-237Key Points:
push_identify_to_peer()orpush_identify_to_peers()Impact:
3. Push Support Detection
Go: Automatic Detection
Location:
p2p/protocol/identify/id.go:549-554Key Points:
/ipfs/id/push/1.0.0protocol supportentry.PushSupportPython: No Automatic Detection
Location: Python doesn't have equivalent functionality
Key Points:
Impact:
4. Connection Lifecycle Integration
Go: Integrated with Connection Events
Location:
p2p/protocol/identify/id.go:1027-1071Key Points:
Python: No Automatic Integration
Location: Python doesn't have equivalent functionality
Key Points:
5. Comparison Table
go-libp2p)py-libp2p)Start())6. Impact on Interoperability
Potential Issues
Python Not Receiving Identify-Push:
Python Not Sending Identify-Push:
Missing Protocol Updates:
Address Changes:
Is This Related to PR #1046?
Short Answer: NO
Explanation:
However:
7. Recommendations for Python
High Priority
Add Identify-Push to Defaults:
Implement Automatic Push Mechanism:
Add Push Support Detection:
Medium Priority
Add Connection Lifecycle Integration:
Add Sequence Tracking:
Low Priority
8. Code Examples
Current Python Usage (Manual)
Recommended Python Usage (After Fixes)
Go Usage (Automatic)
9. Conclusion
The Go maintainer's concern is VALID:
However:
Recommendation:
References
p2p/protocol/identify/id.golibp2p/identity/identify_push/identify_push.pylibp2p/host/defaults.py/ipfs/id/push/1.0.0Reviewer Notes: The Go maintainer's concern about identify-push is valid and should be addressed, but it's a separate issue from PR #1046's Connection ID tracking fix. Both issues should be fixed for complete interop compatibility.
Beta Was this translation helpful? Give feedback.
All reactions