Coder Social home page Coder Social logo

spacenetlab / starrynet Goto Github PK

View Code? Open in Web Editor NEW
66.0 66.0 7.0 263 KB

A novel experimentation framework that enables researchers to conveniently build credible and flexible experimental network environments (ENE) mimicking satellite dynamics and network behaviors of large-scale ISTNs.

License: MIT License

Python 98.90% Shell 1.10%

starrynet's People

Contributors

lzq8272587 avatar xiex386 avatar yangtaodeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

starrynet's Issues

Debug in starrynet/sn_observer.py

In this file, I find the variable "interval" which is not defined in 517 lines. I think it should be "self.hello_interval" .

now

Q.append("        hello " + str(interval) +
                         ";			# Default hello perid 10 is too long")

i think

Q.append("        hello " + str(self.hello_interval) +
                         ";			# Default hello perid 10 is too long")

Question about Topo_leo_change.txt

hi,I have some questions about topology changes. I am running 398 nodes(orbit 18,satellites22 and gs 2) on the device.
I only see the topology changes between the satellite and the ground station in the Topo_leo_change.txtfile.Why are there no topology changes between the satellites. Satellites are expected to be in high-speed motion.
image

question

when i run example.py,some problems happen:Traceback (most recent call last):
File "./example.py", line 53, in
IP_list = sn.get_IP(node_index1)
File "/Desktop/StarryNet/starrynet/sn_synchronizer.py", line 189, in get_IP
ip_list.append(IP_info[i].split()[0])
IndexError: list index out of range
I don't know if it's my container or the code

Request help in dockerfile

I want to rebuild the docker image to add free5gc NFs in it. Can you provide me dockerfile. Thank you so much!

A compatibility problem in `sn_orchestrater.py`

In line 61 of sn_orchestrator.py, the following command is presented:

            ".40 | head -n 1 | awk -F: '{ print $2 }' | tr -d [:blank:]") as f:

It is essential to note that the command tr -d [:blank:] failed to execute in my environment, which uses Ubuntu 20.04 with zsh as the default shell. Instead, I suggest using tr -d '[:blank:]' given its broader compatibility.

Note that this expression appears in many other locations.

Bug: `cleanup()` in file `starrynet/clean.py` delete all local containers

In the cleanup() function:

with os.popen("docker rm -f $(docker ps -a -q)") as f:
    f.readlines()

This command docker rm -f $(docker ps -a -q) is set to remove all local containers.

There is a crucial bug in this function. It inadvertently deletes all of a user's existing containers, not only the ones associated with StarryNet. If executed on a server hosting numerous other services, it could result in substantial data loss. This could prove disastrous, especially if some of those services are running critical applications.

Question about `remote_machine_IP`

I have some questions about parameter remote_machine_IP. They are not included in README.

  1. Is it OK, if I set remote_machine_IP to be 127.0.0.1 when there is no multiple machines.
  2. What does remote_machine_IP stand for?
  3. If I use multiple machines, how to set their IPs?

Thank you in advance.

Question regarding bird.conf

I tried to deploy StarryNet on my device, and I found that each node can only communicate with four of its neighbors in the emulation. Then I realized there was no bird.conf provided in the folder. Do I need to manually set up bird.conf to support OSPF? Or can I get the bird.conf from somewhere else?

Question about the scale of constellation

I'm trying to determine if StarryNet has any requirements for the size of the constellation. I've found that the sn_establish_GSL() function in the sn_ochestrater.py file has problems for constellations smaller than 3x3 in size!

I did the following experiment.

There are only two satellites 1 and 2 in a certain orbit, then both satellites will establish a link.
When satellite 1 executes the function to establish an interstellar link, the NIC name of satellite 1 should be B1-eth2. when satellite 2 executes the function to establish an interstellar link, the NIC name of satellite 1 is also duplicated. This operation is not allowed by ip link.

This situation is caused by the presence of heavy edges. A queue with a first and last join can avoid heavy edges only if the size is greater than or equal to 3.

Question about the ISL establish

When orchestrater establishes the intra-orbits ISLs, it will use function "sn_get_down_satellite()" as follow to find the adjacency node.

def sn_get_down_satellite(current_sat_id, current_orbit_id, sat_num):
    if current_sat_id == sat_num - 1:
        return [0, current_orbit_id]
    else:
        return [current_sat_id + 1, current_orbit_id]

And it will use "sn_get right_satellite()" as follow to establish the inter-orbits ISLs.

def sn_get_right_satellite(current_sat_id, current_orbit_id, orbit_num):
    if current_orbit_id == orbit_num - 1:
        return [current_sat_id, 0]
    else:
        return [current_sat_id, current_orbit_id + 1]

I want to know why inter-orbits function will add the current_orbit_id and intra-orbits function will add the current_sat_id. They maybe have been confused.

I think the satellites in same orbit should not have same id.

Question about set_ping()

I have a question about the set_ping() function.
The destination address in the argument of this function is the number of the node and not the IP address.
The IP address of the destination node is obtained in the following way.

ifconfig_output = sn_remote_cmd(
            remote_ssh, "docker exec -it " + str(container_id_list[des - 1]) +
            " ifconfig | sed 's/[ \t].*//;/^\(eth0\|\)\(lo\|\)$/d'")
des_IP = sn_remote_cmd(
            remote_ssh, "docker exec -it " + str(container_id_list[des - 1]) +
            " ifconfig " + ifconfig_output[0][:-1] +
            "|awk -F '[ :]+' 'NR==2{print $4}'")

But getting it this way will only get a top IP address, not necessarily one that is on the same subnet as the source node.

I did a simple test, in example.py, node 4 is adjacent to node 5, but node 4 doesn't ping node 5.

I may need to wait until OSPF converges to ping through. But I waited for 200s and still didn't observe any change in the routing table from the beginning.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.