Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some clearence required on the way centinel program works and some queries on the way to add custom tools in it. #298

Open
sahilgupta221 opened this issue Feb 3, 2021 · 4 comments

Comments

@sahilgupta221
Copy link

sahilgupta221 commented Feb 3, 2021

We want to craft our own packet using scapy and send pkt using ICLAB nodes distributed across the globe.
I looked at experiments programs and find this "centinel.primitives" library or collections of functions.

I have following queries:

  1. Are ICLAB nodes are configured in a way that Experiment Class helps user to define their own programs and those programs will be passed to ICLAB nodes and the server side of centinel program will execute user defined program?
  2. If answer to (1) is yes, then are we limited by functions provided by "centinel.primitives" library like tcp_connect, http,etc? Is there any scapy kind of library in it? If not, then is there a way around to send crafted packets using centinel program and wrap the results in some wrapper function?
  3. If answer to (1) is no, then how my client machine (laptop), interact with ICLAB nodes using centinel program?
  4. Any documentation on how I can add some customize functionality to centinel repository, build the whole program again and test it on ICLAB nodes? Like the way people have added python files in primitives/ folder of repository.
  5. How can I used ICLAB node from a particular geography? Is it possible to run specific network program for germany node and some other program on node in China? If yes, than how can identify those nodes and write program accordingly?

PS: I have already register with ICLAB using the given instructions. Also, I have test sample ping.py program by changing scheduler.info file and putting experiment and input data in their respective directories.

@arianniaki
Copy link
Collaborator

arianniaki commented Feb 3, 2021

About running customized experiments: We haven't used scapy in our centinel code but I don't think you are limited to centinel.primitives. You can always contribute and add code there. Unfortunately, we don't have further documentation than the Wiki section to customize functionality.

About running an experiment in different locations: our ICLab server takes care of sending the proper schedule files for each of the vantage points in different locations to run.
So we take care of writing the schedules on the server side.

I suggest that you first focus on adding your experiment to centinel.
The centinel communicates with our ICLab server. The default pipeline of centinel includes fetching a schedule from the server and running the baseline experiment which includes testing TCP/DNS/HTTP/Traceroute given a set of URLs and then uploading the result to our server.
Running that experiment on all ICLab nodes is not going to be a problem if you can modify the centinel code to run your experiment on your machine.

@sahilgupta221
Copy link
Author

sahilgupta221 commented Feb 5, 2021

@arianniaki
Thanks Arian for clarification.
I already ran baseline.py experiments testing all sort of traceroute present there.

Now I want to run two different traceroutes viz UDP and TLS traceroute.
For this I need to have some clarification on:

  1. How this centinal system work between my machine and ICLAB nodes?
  2. How user can decide on geography of nodes where he want to deploy the program.

First part helps me to understand if I use my own python libraries and system interfaces like regex, os, ssl, socket, etc., will it run directly on ICLAB nodes or do I need to do some modification to some server side programs and send patch to you guys.
Bit of idea on centinel and other server side programs running on ICLAB nodes, will help me to better create/test my programs.

Second part helps me to focus on countries of our interest with respect to whom we want to make the observations.
We don't want all ICLAB nodes running our program.

@arianniaki
Copy link
Collaborator

  1. The centinel code that you have cloned from github is running on its own and you cannot control other ICLab nodes with it. The centinel code on your machine only contacts our ICLab server to fetch the schedule file for the experiment, the input URLs, and to upload the results to our server. If you create a modified experiment that uses other libraries then it will directly run on the ICLab nodes.
  2. That needs to be coordinated with us since our ICLab server is in charge of sending schedule files to ICLab nodes.

Once you have written your experiment and confirm that it works, please refer to the "How to contribute code to Centinel" page on our wiki to send a pull request with your modified experiment. Then please contact us so we can coordinate on how you want your experiment to be performed and in which countries.

@sahilgupta221
Copy link
Author

@arianniaki
That's great.
I will contact again after completing experiments.
Thanks a lot!
:)

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

No branches or pull requests

2 participants