Tuesday, December 18, 2018

Joe's Internet goes IPv6 -- an adventure in numbering plans

This is a sample IPv6 number plan that was put together with good intentions.  It will not be complete, and it isn't likely to be the answer you're looking for -- but it may help you find your way to developing one of your own.  Feel free to use any of the ideas here.

I'm assuming that people taking the time to read this will also be familiar with acronyms and jargon used.  If you run into a term you don't know, ask about it in the comments.

 Joe's Internet ventures into the IPv6 World


Joe's Internet is a WISP that has just  been given the right to use a block of IPv6 address from their Regional Internet Registry (RIR).  Currently, Joe's Internet has 37 towers/POPs that they use to service customers, but have just won a bid to deploy 13 more POPs.  That means 50 POPs that require numbering.

This numbering plan will give Joe's Internet the ability to give every customer unique address blocks for their Internet use.  There will be plenty of addresses for customer use, and no need to force multiple clients to proxy behind a single address.

Some generic assumptions about this numbering plan include:

  • IPv6 block is:  2001:db8::/32
  • All networks will be assigned a /64 prefix (industry standard)
  • All customers will be assigned a /48 (giving them 65k networks to use as they wish)
  • Each POP will be assigned a /40



POP Codes

Let's assign each POP a 2 digit hex code -- that gives us room for 256 POPs.  We haven't used a quarter of our address space with this idea -- so have plenty of room to grow, or to make changes down the line if the original plan is too wasteful.

We'll have two example POPs to use for this documentation:
   1A -- Springfield
   1B -- Winterfield




Anatomy of an IPv6 address at Joe's Internet

With the above assumptions, we can have an address structure as below:


    --------------------------------   Joe's /32
    |         ----------------------   POP code
    |         |   ------------------   Customer designation
    |         |   |     ------------   Customer's 2^16 LANs
    |         |   |     |      -----   Local LAN
    |         |   |     |      |
|---------| |--||--| |----|  |-------|
[2001:0DB8]:[XX][YY]:[AAAA]::[64 bits]


So, the Springfield POP would look like:
  2001:DB8:1A00:: /48  -- Reserved
  2001:DB8:1A01:: /48  -- Springfield Customer 1
  2001:DB8:1A02:: /48  -- Springfield Customer 1
    [...]
  2001:DB8:1AFF:: /48  -- Springfield Customer 255


Similarly, the Winterfield POP would look like:
  2001:DB8:1B00:: /48  -- Reserved
  2001:DB8:1B01:: /48  -- Winterfield Customer 1
  2001:DB8:1B02:: /48  -- Winterfield Customer 1
    [...]
  2001:DB8:1BFF:: /48  -- Winterfield Customer 255


So, every POP can have 255 customers with a /48 each.


Infrastructure POP

We'll reserve the initial POP customer (00) for infrastructure.  It'll let us have easily remembered and typed addresses for things we might need to hardcode, etc.  When other POPs get customer codes, we'll use them to differentiate things we might find useful.

  2001:DB8:0000:: /48     -- Loopback addresses
  2001:DB8:0001:: /48     -- Pt-to-Pt connectors
       [...]                    [...]
  2001:DB8:000F:: /48     -- [infrastructure addressing]
  2001:DB8:0010:: /48     -- server block 1
       [...]                    [...]
  2001:DB8:001F:: /48     -- server block 16

       [...]                    [...]

  2001:DB8:00F0:: /48     -- NOC testing?
       [...]                    [...]
  2001:DB8:00FF:: /48     -- NOC testing?


Loopback Addresses

Loopbacks will have a special construction, so we can tell which POPs things live in.  The full format will be:

   2001:0DB8:0000:0000:0000:0000:0000:XXYY /128

So, upper bits correspond to:
   POP:   00     -- Infrastructure!
  Cust:   00     -- none / us!
   LAN:   0000   -- first usable LAN


This can be typed as:
   2001:DB8::XXYY/128
        XX = POP code
        YY = device number

This gives us 256 loopback addresses per POP, which should be sufficient for growth.


Infrastructure PT-to-PT links

Pt-to-Pt links will also encode POPs in them, and have the full format of:
   2001:0DB8:0001:XXYY:0000:0000:0000:000Z /127

Shorter typing version:
   2001:DB8:1:XXYY::Z   /127
     XX = POP1
     YY = POP2
      Z = Interface number

We can make these /126 if we want to be able to have other equipment addressable on these links.




Customer PT-to-PT links

We can carve customer Pt-to-Pt links out of the reserved block for each
POPs' /40.  It would look like this for the Springfield POP:

  2001:DB8:1A00:: /48  -- Reserved

  2001:DB8:1A00:00YY::Z /127
      YY = POP Customer
       Z = Interface number

Monday, December 17, 2018

Life is change...

I used to think I was a Network Engineer.  Recently, I realized that the best work I was doing was only tangentially related to networks.  It was a revelation.  As friends pointed out, I do "interesting things."

Originally, this blog talked about ways to incrementally improve our (USA) legal/legislative system.  I referred to it as:
Some short rants that just might help. But probably not.
Maybe I'll rant, or perhaps not.  I will, however, start documenting more of what I do, because people have asked me to do so.

The first new post comes from a request to publish an IPv6 numbering plan that I put together.  Others will follow.

Thursday, March 6, 2014

Simplified legal system via drown 'em in votes

In 1911, the number of seats in the House of Representatives was fixed at 435. With a population near 97.2 million at the time, the number of people a single House member represented was approximately 223,400. The population has now grown such that a single House member represents more than 716,000 people.

Article I, section 2 of the US Constitution indicates that this number should not drop below 30,000.

Let's go back to the 1911 ratios.

This suggest would amplify the effect of the thoughts at:

Simplified legal system via staying at home.

Wednesday, August 31, 2011

Simplified legal system via enlightened self-interest

(Unabashedly lifting thoughts from Robert A. Heinlein...)

Let's have citizens granted the right to vote only after they've served
their country in some fashion for a minimum of two years.

If you don't want to serve, you still get all the other benefits of
citizenship -- you just don't get a chance to vote yourself bread and circuses.

Please read Starship Troopers by Heinlein if you need more information
about the pros and cons of this suggestion.

Sunday, August 21, 2011

Simplified legal system via staying at home

Let's have Congress meet electronically the majority of the time. Modern
communications can allow most legislation to occur "back home."
  • Constituents would have better access to their law makers, and much better visibility of them as well.

  • Outside influences (lobbyists, etc.) would not be able to concentrate on a single location to have sway over several law makers.

Saturday, August 20, 2011

Simplified legal system via mandatory sunset clauses

I purpose a mandatory sunset clause for all laws passed by legislators.  The length of the sunset period would be related to the margin by which any given law is passed.

Any law supported by more legislators would remain "on the books" longer than those that are passed by small majorities.  Over time, the laws that most influence our society would become laws supported by a large majority of society.