Add initial Eclipse attack simulation module with metrics collection#950
Conversation
|
@Fatumayattani : Thank you for opening the PR on eclipse attack simulation. Great effort indeed. CCing @acul71, @yashksaini-coder, @bomanaps for their thoughts and feedback. This PR will indeed impact the py-libp2p library. There is one CI/CD issue too, which is not related to your pull request. I investigated it and documented it at #949 . @yashksaini-coder , @sumanjeet0012 and @acul71 are fixing it. We will soon have all the CI/CD tests passing. @Fatumayattani : Will re-run CI/CD pipeline once the issue is fixed today or tomorrow. In the meantime, assigning you more projects and issues on py-libp2p. |
|
@Fatumayattani can I get the access for this ? |
|
Thank you @seetadev for the review and for coordinating on the CI/CD issue. I’ll re-run the checks once that’s resolved. @yashksaini-coder I’ve added you as a collaborator so you now have access to the feature/attack-simulation branch. Please let me know if you face any issues or need anything else to get started. Really appreciate everyone’s feedback and support in pushing this forward. |
|
@Fatumayattani @seetadev Hi, I've reviewed the PR, and executed the checks and all tests on my end. Everything is good, all test cases passed ✔️ and some new changes to fix the linting and minor errors. I will work on this for adding more attack simulation and review |
|
@Fatumayattani , @yashksaini-coder : Wonderful, great to hear. Appreciate your efforts. We will review this PR in detail. Re-ran the CI/CD pipeline. Since, it is an important module addition, wish to have feedback first from @acul71 , @lla-dane and @sumanjeet0012 . We will discuss with @pacrob and have his review after discussing in tomorrow's maintainer's call. |
There was a problem hiding this comment.
PR #950 Review: Eclipse Attack Simulation Module
Summary
This PR introduces a Network Attack Simulation module for py-libp2p with a well-designed dual-layer architecture for Eclipse attack testing.
Recommendation: ✅ APPROVE with mods
Implementation Analysis
✅ What's Working Well:
- Dual-layer architecture - Simulation + Real integration
- Real integration tests - 3/3 tests pass with actual libp2p hosts
- Comprehensive framework - Well-structured attack simulation foundation
- Test coverage - 9/9 tests pass (6 simulation + 3 real integration)
✅ Architecture Design:
- Simulation Layer: Fast framework validation with placeholder metrics (by design)
- Real Integration Layer: Comprehensive attack simulation with actual libp2p components
Current Assessment
- Test Coverage: 100% (9/9 tests pass)
- Code Quality: Excellent structure with real integration
- Documentation: Comprehensive README with clear usage examples
- Performance: Fast simulation (0.40s) + Real integration (2.06s)
- Functionality: ✅ COMPLETE - Both layers working as designed
Final Recommendation
✅ APPROVE but answer questions
and also wait is there a newsfragment?
(venv) luca@r17:~/PNL_Launchpad_Curriculum/Libp2p/py-libp2p$ l newsfragments/57
ls: cannot access 'newsfragments/57': No such file or directory
| 1. [Metrics and Analysis](#metrics-and-analysis) | ||
| 1. [Roadmap](#roadmap) | ||
| 1. [Eclipse Attack Flow](#eclipse-attack-flow) | ||
| 1. [Contributing](#contributing) |
There was a problem hiding this comment.
Why are all this 1s here not 1,2,3,....
There was a problem hiding this comment.
Just noticed the auto-tab completion
| "honest_nodes": 10, | ||
| "malicious_nodes": 3, | ||
| "attack_intensity": 0.5, | ||
| } |
There was a problem hiding this comment.
Did you try with different settings? are them handled ?
There was a problem hiding this comment.
Some logs with different settings?
You may want to open a discussion page, and only put a link here, to not over bloat the PR
There was a problem hiding this comment.
I will try with different settings and have the screenshot of the results in the Discussion page for this.
…lation' into feature/attack-simulation
for improved clarity and maintainability
…store result as json
|
Thanks everyone for the feedback and contributions. I’ve added the missing newsfragment. Kudos to @yashksaini-coder for running additional tests, and Discussion #960 contains the comprehensive Eclipse attack simulation results. Special thanks to @acul71 for the detailed review and @seetadev for coordinating the CI/CD workflow. Really appreciate everyone’s collaboration and support on this. |
- Converted 143+ print statements across 4 test files to logging - Added logging.getLogger(__name__) to each file - Used appropriate log levels (debug for verbose, info for important) - Removed emoji decorations from test output - Removed if __name__ == '__main__' blocks from pure test files - All test files compile without errors Files updated: - test_attacks_simple.py: 45 prints → logger calls - test_real_eclipse_simulation.py: 26 prints → logger calls - test_multiple_scenarios.py: 14 prints → logger calls - test_runner.py: 50 prints → logger calls Addresses reviewer feedback: 'large number of print statements across several files' Ref: Discussion libp2p#929, PR libp2p#950
…sts for improved clarity and performance
- Resolves ModuleNotFoundError: No module named 'requests' - requests is required by libp2p/security/tls/autotls/acme.py and broker.py - types-requests (for type stubs) was already included but requests itself was missing - Version constraint: requests>=2.28.0
…k simulation workflow
|
I see you've added a whole new If you just move the folder |
Thanks for clarifying this, didn't know we can do that. Hopefully this resolves our ci-cd check issues. |
You've moved it to |
cec0633 to
b44ab16
Compare
Moved them to the tests/examples |
| * - `ImportError: No module named libp2p.security.tls` | ||
| - TLS extras not installed | ||
| - Run `pip install "libp2p[tls]"`. |
There was a problem hiding this comment.
This can be deleted. There is no tls install target.
| docs: make check-docs-ci | ||
| interop: pytest -n auto --timeout=1200 {posargs:tests/interop} | ||
| utils: pytest -n auto --timeout=1200 {posargs:tests/utils} | ||
| attack-simulation: pytest -v --timeout=180 --log-cli-level=WARNING {posargs:tests/core/security/attack_simulation} |
There was a problem hiding this comment.
this can be deleted - they're now part of the demos CI run.
pacrob
left a comment
There was a problem hiding this comment.
I've noted 2 places where code that is no longer relevant can be deleted. Once that is done, approved to merge.
|
@pacrob I've removed the dead code which is no longer relevant, Hope now we have the PR ready for merge 👍🏼 |
|
@pacrob and @acul71: Thank you so much for your review and feedback. Appreciate it. @yashksaini-coder and @Fatumayattani : Looks great. This PR sets up a clean, well-structured foundation for network attack simulation in py-libp2p, with clear separation between malicious behavior, network construction, metrics, and scenarios. The module is thoughtfully organized, well documented, and easy to extend for future attack types. All tests passing and the framework is solid. Thank you so much @yashksaini-coder and taking all the important steps for taking this PR to production. Ready for merge. Great work! |
What was wrong?
This PR implements the initial setup for the Network Attack Simulation module in py-libp2p, as discussed in [[Discussion #929]] and tracked under Issue #57. The primary focus is on Eclipse attack simulation, building the test network, simulating malicious peers, and establishing the framework for network attack testing.
How was it fixed?
Added
tests/security/attack_simulation/submodule containing:Eclipse attack:
malicious_peer.py– Simulates malicious peer behaviornetwork_builder.py– Builds test networks with honest and malicious nodesmetrics_collector.py– Collects attack metrics during simulationattack_scenarios.py– Defines different Eclipse attack scenariostest_eclipse_simulation.py– Test suite validating network setup and malicious behaviorUtilities:
attack_metrics.py)network_monitor.py)peer_behavior_simulator.py)Configuration:
attack_configs.py– Attack configuration optionsnetwork_topologies.py– Predefined network topologiesAdded README.md documenting module overview, structure, setup, usage, testing, metrics, roadmap, and Eclipse attack flow (Mermaid diagram)
All tests pass locally (6/6) confirming:
To-Do
Cute Animal Picture