[HN Gopher] Building a Space-Based ISP
       ___________________________________________________________________
        
       Building a Space-Based ISP
        
       Author : dinosaurs
       Score  : 105 points
       Date   : 2021-05-12 06:51 UTC (16 hours ago)
        
 (HTM) web link (stackoverflow.blog)
 (TXT) w3m dump (stackoverflow.blog)
        
       | nynx wrote:
       | Starlink is super exciting from an emerging technologies
       | perspective ---- (relatively) cheap satellite production,
       | commercialized laser links, commercialized phased-array tx/rs,
       | among others. These open up very interesting possibilities down
       | the road.
       | 
       | These posts always have a thread about people wanting to work for
       | spacex, but because of my pseudo-anonymity, I don't feel bad
       | about starting it: Does anyone know if spacex does fall or spring
       | embedded software internships?
        
         | lutorm wrote:
         | https://www.spacex.com/internships/
        
           | nynx wrote:
           | Unfortunately, it still says summer 2021.
        
         | p1mrx wrote:
         | I think the most exciting part is their use of electric ion
         | propulsion to maintain low earth orbit. If SpaceX ever goes
         | bankrupt or something, the satellites will passively deorbit
         | within 5 years or so.
        
           | marsokod wrote:
           | No need for that actually. They will deorbit within a year if
           | left completely dead, and within a couple of month if they
           | have a single button "start deorbiting" that uses the
           | electric propulsion.
           | 
           | But more importantly, their propulsion allows them to launch
           | at a very low orbit. This is a very good method for a
           | constellation as they can see all the early failures (the
           | beginning of the bathtub curve) happen at a very low orbit
           | and reduce the cost of ground testing.
           | 
           | Their orbital debris management strategy is one of the best I
           | have seen.
        
             | cryptonector wrote:
             | And launching to lower orbits means higher payload to orbit
             | per launch which means they can launch more of their
             | constellation per launch. (Although they probably a larger
             | constellation at those orbits just due to how short the
             | orbital periods are.)
        
       | mnd999 wrote:
       | Puff piece. Starlink is fundamentally not about providing
       | broadband to anyone. It's landgrabbing a finite resource - low-
       | earth orbit space - before it's worth is recognised by those who
       | should be regulating it.
       | 
       | The broadband itself might be nice or it might be awful. It
       | doesn't actually matter because that was never the point.
        
         | admissionsguy wrote:
         | Is it scarce, though? Couldn't you put more constellations at
         | the same orbits +/- a couple of kms? In any case, I would
         | expect the spectrum rights to be much scarcer than the space,
         | and they are well regulated.
        
           | cryptonector wrote:
           | Exactly, spectrum is the scarce resource here, and it already
           | is regulated. There is no need for additional regulation
           | regarding that, and there already is regulation of orbits
           | between FCC and FAA.
        
         | zlynx wrote:
         | It is about making money. Starlink is a money generating system
         | that makes use of low cost launch made possible by SpaceX.
         | 
         | If it does use up most of the low orbit space it is because
         | SpaceX is the only company that is even capable of launching
         | that many satellites and making money on it. Until there is
         | another challenger there is zero point in complaining, because
         | competition is not even an option.
         | 
         | Since it is low orbit it is self limiting problem. Any low
         | orbit satellite has a limited lifetime of a few years without
         | power.
        
         | Diederich wrote:
         | > Starlink is fundamentally not about providing broadband to
         | anyone.
         | 
         | This reply brought to you over a robust, fast, low latency and
         | reliable Starlink connection.
        
           | kevin_thibedeau wrote:
           | Wait til you have 1000 neighbors vying for bandwidth.
        
             | benlivengood wrote:
             | The most pessimistic estimate I've seen paid for by the
             | cable industry is here: https://ecfsapi.fcc.gov/file/102081
             | 68836021/FBA_LEO_RDOF_Ass...
             | 
             | Only if each subscriber is using an average of 15-20 Mbps
             | during peak times will about 50% of subscribers see some
             | throttling.
             | 
             | Interestingly they only showed a single graph of average
             | bandwidth over time from a cable company to estimate needs
             | for SpaceX. No clue if they actually separated it out by
             | time zone for each coverage area in their actual analysis.
        
             | Diederich wrote:
             | Starlink isn't about directly competing against high
             | density fiber connected internet. It's about everyone else.
        
           | ctdonath wrote:
           | And cheap. $99/mo for competitive data service literally
           | anywhere is amazingly cheap.
        
         | ctdonath wrote:
         | Right, it's not about taking a major share & expansion of a
         | trillion-dollar industry with payout starting immediately, it's
         | about staking out a thin fraction of (literally) empty space
         | and waiting decades for others to start needing small portions
         | of it.
         | 
         | Because $99/month * 12 months * 10 years * 1,000,000,000
         | customers = $11.88T isn't the point to a man who literally
         | needs a trillion dollars to pull off the grandest mega-project
         | ever.
        
           | cryptonector wrote:
           | It's not clear what you're saying. Are you saying that SpaceX
           | will end up consuming too much of a precious resource? Or
           | something else?
           | 
           | Anyways, I don't buy that SpaceX will end up consuming too
           | much of a precious resource. Even if it were so, what would
           | be a fair way to share that resource, and who even with?!
           | There's only one announced competitor to Starlink at this
           | time, and they're not even remotely close to being
           | operational. What makes SpaceX able to put up Starlink at
           | such low cost (compared to its earning potential) is that
           | SpaceX has lowered launch costs for itself (and others) by a
           | lot, and they're working to lower those costs even more. What
           | is "fair" when a company works so hard to lower costs and
           | increase availability? Is it to punish them so others get a
           | chance to compete at higher costs??
        
             | ctdonath wrote:
             | Sorry about the mess, that comment was dripping with
             | sarcasm.
             | 
             | 1. There's a lot of room up there, and actually claiming &
             | using it is a normal process for civilizing frontiers.
             | 
             | 1b. Handwaving about "underappreciated precious resources"
             | is a waste of opportunity. I get the sentiment, but belongs
             | in the 3rd part of the aphorism "lead, follow, or get out
             | of the way."
             | 
             | 2. Saying "SpaceX isn't in it for the money" is ridiculous,
             | considering they could gross >$10T in the next decade with
             | it, at ridiculously low expenditure.
             | 
             | 2b. In that timeframe, other businesses would be just
             | barely starting to seek out a small fraction of that
             | "precious resource".
        
               | cryptonector wrote:
               | Thank you!
        
               | ctdonath wrote:
               | Additional napkin math:
               | 
               | If we're going to take the "precious resource" argument
               | seriously, let's. One Starlink satellite can earn
               | ~$25M/year, setting the value of that slot. This seems a
               | reasonable value for LEO "homesteading"; if someone wants
               | it, that's a fair price to pay. And I do mean fair,
               | seeing as it's SpaceX inventing the technology, building
               | the satellites, staking claims, and otherwise being
               | first-mover and pioneer of LEO on a colonizing scale (so
               | to speak). That includes the value of serving 25,000
               | people per satellite at $100/month. Want that orbital
               | property? pay the trailblazer that made that parcel
               | valuable. (As for "Earth's population has a fair share" -
               | no, they didn't do squat for it beyond what one was
               | already paid for to get SX there. Anyone is free to go
               | there now and lay claim. Government involvement should be
               | nothing more than collecting cost of tracking claims and
               | resolving disputes.)
        
             | wmf wrote:
             | I guess orbital space could be auctioned instead of
             | homesteaded but SpaceX could probably afford to outbid
             | Kepler and OneWeb anyway.
        
               | cryptonector wrote:
               | Then we get to argue whether they'd pay the U.S., the UN,
               | or... some other entity. Naturally the U.S. gets to tax
               | space access by U.S. businesses, but let's not kid
               | ourselves, it'd be just a tax and wouldn't benefit the
               | public consumer of space-based networking nor SpaceX's
               | competitors. An auction would be a lot like a tax where
               | you can lose the opportunity, and where the tax can be
               | upbid a great deal.
               | 
               | No, sorry, I think as long as SpaceX continues to work to
               | lower costs and increase access then to get in their way
               | would be a terrible mistake.
        
         | generalizations wrote:
         | It's a cynical perspective, but the downvotes are unwarranted.
         | It's worth comparing to McDonalds, where a large proportion of
         | the corporation's worth is in the real estate they hold.
        
           | lucb1e wrote:
           | Okay but it's not as if mcdonald's bought the land under
           | false pretenses and now uses it for any purpose since it's
           | theirs. Claiming that the internet access is just a pretense
           | for "land" grabbing when the company neither owns the space
           | afterwards nor can switch businesses to something more
           | nefarious and lucrative with the existing devices... it makes
           | no sense.
        
         | jsharf wrote:
         | The alternative is waiting literally 10-20 years for anyone
         | else to catch up.
        
           | cryptonector wrote:
           | Or, hey! slow SpaceX down with regulation!1!!
        
         | wmf wrote:
         | So what is the high-value use of low-earth orbit other than
         | broadband and why doesn't SpaceX do that directly?
        
       | HALtheWise wrote:
       | The article ends with this nugget about C++ shared memory state
       | management, but I don't have the background to know exactly what
       | they're referring to. Does anyone recognize this pattern and feel
       | able to explain it to mere mortals?
       | 
       | > "We also have different tools so that any state that is
       | persisted through the application is managed in a very particular
       | place in memory. This lets us know it is being properly shared
       | between the computers. What you don't want is a situation where
       | one of the computers takes a radiation hit, a bit flips, and it's
       | not in a shared memory with the other computers, and it can kind
       | of run off on its own."
        
         | azernik wrote:
         | Essentially:
         | 
         | They have one address range for shared (i.e. subject to syncing
         | across all replicas) memory, and a separate one for non-shared
         | (single-replica) memory.
         | 
         | Cross-replica data is presumably subject to their agreement
         | algorithm, checking that the different computers reach the same
         | (within some error bars) results; you want to arrange things so
         | that there are frequent checkpoints at which the conflict
         | resolution system can say "a bad write happened at this point,
         | I should disregard whatever this computer said from that point
         | until it recovers".
         | 
         | i.e. you want local memory to use as scratch space for
         | performance reasons, but to make sure that there isn't a long
         | runway for errors to happen and decisions to be made before the
         | shared-memory checker notices a mistake. To ensure this
         | happens, you want manual control over which memory allocator
         | handles which data.
        
           | HALtheWise wrote:
           | That makes sense. One part I'm still not clear on is how you
           | accomplish a "restore" to fix the broken state of a process
           | with a bitflip. Is it enough to simply copy all the shared
           | state memory over as a block and jump into executing it? That
           | seems like it would require the invariant that shared memory
           | never references private memory, and I'm not sure how to
           | statically enforce that.
        
             | azernik wrote:
             | "Restore" is reboot. Usually these are called "watchdog
             | circuits", which you may have heard of from more mundane
             | embedded applications.
             | 
             | Once you've rebooted, yeah, you need to copy over the
             | shared state from another of the processes.
        
             | ncmncm wrote:
             | You probably have hardware that watches ECC flags. For a
             | correctable one-bit flip, it triggers a read-and-then-
             | write. For a two-bit flip, it might just kill and restart
             | the process, or reset the whole machine. As long as it
             | doesn't happen too often, it's fine: the whole system
             | (constellation and ground nodes) are designed to
             | accommodate such events.
        
         | ncmncm wrote:
         | This is very common when controlling equipment in C++.
         | 
         | Technically, all C++ programs control equipment. Differences
         | include that one program may run for weeks or even years, and
         | is mostly the only program running, or the only one on a core.
         | This happens from microcontrollers on up to servers with a TB
         | of RAM running, say, high-frequency trading, and in networks of
         | hundreds of those, running weather simulations.
         | 
         | The program typically does all its heap allocation at startup.
         | There is no reference-counting _std::shared_ptr_. You might
         | have lots of _std::vector <std::unique_ptr<T>>_, _std::string_
         | , the works, but they all get provisioned in the first second
         | or two, and then just used thereafter. If anything goes wrong,
         | you don't try to do anything clever or sophisticated; you just
         | kill and restart, or even re-boot, and start over from scratch.
         | That is fine if it doesn't happen too often, so you make sure
         | it doesn't.
         | 
         | For communication between programs, some of the memory set up
         | is shared, with a header containing _std::atomic
         | <std::uint64_t>_ sequence counters that each process can watch
         | and compare against its last copy to know when something
         | changed. Most commonly, actual messages show up on a ring
         | buffer, so you don't need to act on them immediately; as long
         | as you pick them up before they get lapped, you're good. If you
         | get lapped, you might need to reset the whole system; so you
         | make sure not to get lapped, by making the ring buffers big
         | enough and by picking up messages soon enough. With big enough
         | ring buffers and careful scheduling, you can leave all the bulk
         | data there and just use it before it gets overwritten, avoiding
         | expensive copies.
         | 
         | Often, once the program starts up, it does no more system calls
         | at all, doing all its work by reading and writing shared
         | memory, and maybe poking at hardware registers. On Linux one
         | usually isolates cores doing this, with "isolcpus=..." on boot,
         | and "nohz_full=...", "rcu_nocbs=...", "rcu_nocb_poll" etc. The
         | ring buffers tend to live in hugepages ("hugepages=50000"),
         | often just files opened in /dev/hugepages. This is all a
         | simpler alternative to a
         | unikernel/parakernel/demikernel/blatherkernel.
         | 
         | You might _also_ have ephemeral processes that run just long
         | enough to do a job and then quit, running on their own pool of
         | cores and using their own pool of memory. This is usually how
         | you administer the system: ssh in, look around, exit.
        
       | cute_boi wrote:
       | "Starlink is currently in orbit at 340 miles"
       | 
       | Can we please stop using miles etc :( I am tired when people
       | makes mistake like this.
        
         | ncmncm wrote:
         | Yes, the useful unit is light-milliseconds:                 $
         | units       You have: 340 mi       You want: light ms
         | * 1.8251859               / 0.5478894
         | 
         | So, 3.6 ms round-trip. In practice, the route will be slanted,
         | so could just exceed 5 ms.                 $ sudo apt install
         | units
         | 
         | Once the constellation is mature, certain _very-high-paying_
         | subscribers will get the packets forwarded from one satellite
         | to the next via laser links, across oceans, before being
         | downlinked, and get there a few ms before packets dawdling
         | along on fiber links below 0.7c, to trigger securities trades
         | ahead of the crowd acting on now-ancient information. The time
         | by fiber from Singapore to New York is on the order of 90 ms,
         | where Starlink ought to get them there in well under 70 ms,
         | leaving a good 20 ms to arbitrage. In investment banking, they
         | say  " _a microsecond is an eon, a millisecond is an eternity_
         | ".
         | 
         | Even just between New York and London, they can gain a few ms
         | headway, enough to dominate.
         | 
         | It would not be surprising if the US military, and maybe some
         | others, will have access to satellite-to-satellite routing.
         | (They have their own WGS, "Wideband Global SATCOM", but it is
         | GEO, thus high-latency.)
         | 
         | AFAIK, only the polar-orbit nodes have inter-satellite laser
         | links, thus far, so this is a phenomenon of the near future,
         | not the present. Other things to expect in the near future are
         | lofting them with a few TB of storage, to minimize uplink
         | bandwidth by edge-serving Disney and Netflix blockbusters; and
         | multicast downlinks for real-time soccer games and maybe even
         | time-binned shows.
        
           | nonameiguess wrote:
           | Military already has this:
           | https://en.wikipedia.org/wiki/Wideband_Global_SATCOM
           | 
           | The SpaceX edge here is making this kind of thing cheaper and
           | scalable to the point that a global community of hundreds of
           | millions of users can multiplex signals on it, but for a
           | sufficiently well-funded organization with fewer users, it
           | was already possible.
        
             | izend wrote:
             | The military system is orbiting at 32,000km, the latency is
             | much higher than Starlink.
        
           | cryptonector wrote:
           | Why was this downvoted though?
        
             | ncmncm wrote:
             | This one guy watches and downvotes everything I post,
             | lately.
        
               | NetOpWibby wrote:
               | And continues to, welp. Someone apparently has time
               | today.
        
         | VWWHFSfQ wrote:
         | what should they use
        
           | azernik wrote:
           | Kilometers.
           | 
           | If they're writing for a US audience and absolutely need
           | miles, put one or the other in parens after the "main" one.
        
             | krapht wrote:
             | People who get irritated over units of measure are
             | themselves irritating. It is not so hard to round, double
             | it 4 times and then divide by 10.
        
               | skissane wrote:
               | When US-based companies put things in US measurements and
               | don't provide metric conversions, it makes me (as a non-
               | American) feel like they aren't thinking about their non-
               | US customers. It appears parochial.
               | 
               | Miles I can roughly convert in my head, but I have really
               | no idea what a gallon or a fluid ounce is. I remember a
               | pound is a bit under 500 grams but can't remember how
               | many ounces in a pound. Fahrenheit to Celsius, I know
               | there is a 5/9 and a 32 involved, but I don't remember
               | exactly what to do with them.
               | 
               | What makes it worse here is that the original measurement
               | was in kilometres - kilometres are the standard unit for
               | measuring orbital altitudes in the space industry, even
               | in the US-based space industry - and someone has gone to
               | the trouble of converting that to miles and then omitting
               | to include the original measurement.
        
               | lutorm wrote:
               | For practical purposes, I get by 99% of the time with 1
               | (statute) mile == 1.5km.
        
               | cryptonector wrote:
               | The conversion factor is very close to the golden number,
               | so if you just remember the Fibonacci sequence up to
               | around 89 you'll be able to do mental conversions easily
               | enough.
               | 
               | E.g., what's 65mph in kmh? Well, the nearest Fibonacci
               | number to 65 is 55, so 65 == 55 + 10, and the next
               | Fibonacci number to 55 is 89, so 65mph will be 89kmh +
               | ??, now we turn to 10mph and notice it's 8 + 2, so it's
               | really 13kmh + 3kmh, which brings us to 65mph ~= 89kmh +
               | 13kmh + 3kmh = 105kmh. My calculator says the actual
               | conversion of 65mph to kmh is 104.60736, so... that's
               | really close!
               | 
               | This is a very fun little mental exercise to do.
               | Obviously it works in both directions.
               | 
               | Let's apply it to 340mi. The bracketing Fb numbers are
               | 233 and 377. 377 - 340 == 33. Next after 377 is 610, so
               | 377mi ~= 610km. Next after 33 is 55, so 340mi = 377mi -
               | 33mi ~= 610km - 55km = 555km. My calculator says it's
               | 547.17696km. Close!!
        
       ___________________________________________________________________
       (page generated 2021-05-12 23:01 UTC)