A method for routing a satellite system, the method comprising: generating, by at least one processor, a plurality of routing graphs (120a, 120b, 120c, 120d) for each of a plurality of virtual routing areas, VRAs, (110a, 110b, 110c, 110d), each of the VRAs (110a, 110b, 110c, 110d) covering a specific geographical area on the earth, such that the plurality of VRAs (110a, 110b, 110c, 110d) together cover a specific geographic region on the earth, wherein each of the routing graphs (120a, 120b, 120c, 120d), for each of the VRAs (110a, 110b, 110c, 110d), is for a different period of time, and wherein each of the routing graphs (120a, 120b, 120c, 120d), for each of the VRAs (110a, 110b, 110c, 110d), comprises a gateway (130a, 130b, 130c, 130d), which is associated with the VRA (110a, 110b, 110c, 110d) associated with the routing graph (120a, 120b, 120c, 120d), and satellites that are within view of each other and of the gateway (130a, 130b, 130c, 130d) during the period of time associated with the routing graph (120a, 120b, 120c, 120d), the satellites in the routing graphs (120a, 120b, 120c, 120d) being connected via lines which are connectivity links used to connect the satellites, said VRAs (110a, 110b, 110c, 110d) being connected together via virtual links, VLs, between the gateways (130a, 130b, 130c, 130d) and between neighboring satellites of the VRAs (110a, 110b, 110c, 110d); generating, by the at least one processor, at least one time-sliced graph (220a1, 220b1, 220c1, 220d1; 220a2, 220b2, 220c2, 220d2) for each of the routing graphs (120a, 120b, 120c, 120d), wherein each of the time-sliced graphs (220a1, 220b1, 220c1, 220d1; 220a2, 220b2, 220c2, 220d2) shows connectivity between at least some of the satellites, which are on the routing graph (120a, 120b, 120c, 120d) associated with the time-sliced graph (220a1, 220b1, 220c1, 220d1; 220a2, 220b2, 220c2, 220d2), with each other; and during each of the periods of the time, establishing, by the at least one processor, connectivity between the satellites according to each of the time-sliced graphs (220a1, 220b1, 220c1, 220d1; 220a2, 220b2, 220c2, 220d2) for each of the VRAs (110a, 110b, 110c, 110d) for the period of time; and during each of the periods of the time, allocating, by the at least one processor, internet protocol, IP, addresses, which are associated with the gateway (130a, 130b, 130c, 130d) of each of the VRAs (110a, 110b, 110c, 110d), to the satellites on the routing graph (120a, 120b, 120c, 120d) for each of the VRAs (110a, 110b, 110c, 110d) for the period of time. generating, by at least one processor, a plurality of routing graphs (120a, 120b, 120c, 120d) for each of a plurality of virtual routing areas, VRAs, (110a, 110b, 110c, 110d), each of the VRAs (110a, 110b, 110c, 110d) covering a specific geographical area on the earth, such that the plurality of VRAs (110a, 110b, 110c, 110d) together cover a specific geographic region on the earth, wherein each of the routing graphs (120a, 120b, 120c, 120d), for each of the VRAs (110a, 110b, 110c, 110d), is for a different period of time, and wherein each of the routing graphs (120a, 120b, 120c, 120d), for each of the VRAs (110a, 110b, 110c, 110d), comprises a gateway (130a, 130b, 130c, 130d), which is associated with the VRA (110a, 110b, 110c, 110d) associated with the routing graph (120a, 120b, 120c, 120d), and satellites that are within view of each other and of the gateway (130a, 130b, 130c, 130d) during the period of time associated with the routing graph (120a, 120b, 120c, 120d), the satellites in the routing graphs (120a, 120b, 120c, 120d) being connected via lines which are connectivity links used to connect the satellites, said VRAs (110a, 110b, 110c, 110d) being connected together via virtual links, VLs, between the gateways (130a, 130b, 130c, 130d) and between neighboring satellites of the VRAs (110a, 110b, 110c, 110d); generating, by the at least one processor, at least one time-sliced graph (220a1, 220b1, 220c1, 220d1; 220a2, 220b2, 220c2, 220d2) for each of the routing graphs (120a, 120b, 120c, 120d), wherein each of the time-sliced graphs (220a1, 220b1, 220c1, 220d1; 220a2, 220b2, 220c2, 220d2) shows connectivity between at least some of the satellites, which are on the routing graph (120a, 120b, 120c, 120d) associated with the time-sliced graph (220a1, 220b1, 220c1, 220d1; 220a2, 220b2, 220c2, 220d2), with each other; and during each of the periods of the time, establishing, by the at least one processor, connectivity between the satellites according to each of the time-sliced graphs (220a1, 220b1, 220c1, 220d1; 220a2, 220b2, 220c2, 220d2) for each of the VRAs (110a, 110b, 110c, 110d) for the period of time; and during each of the periods of the time, allocating, by the at least one processor, internet protocol, IP, addresses, which are associated with the gateway (130a, 130b, 130c, 130d) of each of the VRAs (110a, 110b, 110c, 110d), to the satellites on the routing graph (120a, 120b, 120c, 120d) for each of the VRAs (110a, 110b, 110c, 110d) for the period of time.