Home
Name Modified Size InfoDownloads / Week
README.TXT 2011-03-03 6.0 kB
ham-ipv6-library.tgz 2011-03-03 3.6 kB
Totals: 2 Items   9.6 kB 0
© Copyright 2011 Vincent Chapman, N1LQJ and Jacques Richer, N1ZZH
Maybe freely distributed and reproduced.

Abstract: 	Base 37 callsign to IPv6 /64 subnet address
		encoder.  Allows up to 7 characters and 185 nodes and
		contains unique identifier for quickly locating,
		filtering and authenticating IPv6 addresses as valid
		Amateur Radio Links.

		Handles Callsigns 

			0000000-0 	(::0200:0041:5200:0000 )

				through 

			'       '-184 	(::F2F9:1041:5273:5E64 )

Package includes the following files

	callsign.c	Library with Encode and Decode Functions
	callsign.h 	Include Header for Library
	callsignv6.c	Program to translate callsigns into address
			ranges 
	calltov6.c	Program to translate a callsign with node number
			into a single IPv6 Address
	v6tocall.c	Program to translate an IPv6 address into a 
			single callsign with node number.

The Base 37 System

Callsigns shall be encoded in Base 37 or 37^n.

Conversion Table

BASE 37: 0  -- BASE 10: 0
BASE 37: 1  -- BASE 10: 1
BASE 37: 2  -- BASE 10: 2
BASE 37: 3  -- BASE 10: 3
BASE 37: 4  -- BASE 10: 4
BASE 37: 5  -- BASE 10: 5
BASE 37: 6  -- BASE 10: 6
BASE 37: 7  -- BASE 10: 7

BASE 37: 8  -- BASE 10: 8
BASE 37: 9  -- BASE 10: 9
BASE 37: A  -- BASE 10: 10
BASE 37: B  -- BASE 10: 11
BASE 37: C  -- BASE 10: 12
BASE 37: D  -- BASE 10: 13
BASE 37: E  -- BASE 10: 14
BASE 37: F  -- BASE 10: 15

BASE 37: G  -- BASE 10: 16
BASE 37: H  -- BASE 10: 17
BASE 37: I  -- BASE 10: 18
BASE 37: J  -- BASE 10: 19
BASE 37: K  -- BASE 10: 20
BASE 37: L  -- BASE 10: 21
BASE 37: M  -- BASE 10: 22
BASE 37: N  -- BASE 10: 23

BASE 37: O  -- BASE 10: 24
BASE 37: P  -- BASE 10: 25
BASE 37: Q  -- BASE 10: 26
BASE 37: R  -- BASE 10: 27
BASE 37: S  -- BASE 10: 28
BASE 37: T  -- BASE 10: 29
BASE 37: U  -- BASE 10: 30
BASE 37: V  -- BASE 10: 31

BASE 37: W  -- BASE 10: 32
BASE 37: X  -- BASE 10: 33
BASE 37: Y  -- BASE 10: 34
BASE 37: Z  -- BASE 10: 35
BASE 37: {SPACE}  -- BASE 10: 36



Algorithm for encoding

Callsign (Illustrated with Variables)

abcedfg-h	

whereas a through g are base 37 characters and h is the	node number as a base 10 integer.

((a*37^6 + b*37^5 + c*37^4 + d*37^3 + e*37^2 + f*37 + g) * 185) + h

For callsigns less than seven characters long, 36 * 37^n (Space) shall be used as a place holder.  
Subsequently, upon decoding, callsigns are Left Trimmed for the removal of the space character.



The bits of the second octet

::-X--:----:----:---- 

The second Octet of the 64 bit subnet is structured as such:

8421
rruL

Where 'r' is reserved for future use, 
'u' is the universal bit, and 'L' is reserved for implementing extended length 8 character
callsigns with a maximium of 5 nodes. (Reserved but not implemented)
Universal Bit (If bit 2 of the second Octet is set than the address can be routed globally) 

'L' bit is reserved for possible future implementation [ abcedfgh-i ]

whereas a through h are base 37 characters and i is
the node number as a base 10 integer.

((a*37^7+b*37^6+c*37^5+d*37^4+e*37^3+f*37^2+g*37+h) * 5) + i



Amateur Radio Identifier

Globally unique Amateur Radio Identifier of 'AR' for Amateur Radio is inserted into the 7th, 8th, 9th and 10th octets.

Amateur Radio Identifier is as follows and allows the detection of Amateur Radio Call signs for filtering and decoding

::-X--:--41:52--:---- 

________________:________________:________________:________________
ccccrruLcccccccc:cccccccc01000001:01010010cccccccc:cccccccccccccccc

Where 'r' is reserved, 'u' is the universal bit, 'L' is reserved and c are the bits of the encoded callsign.




Sample Encoding of N1LQJ-128 from callsignv6 in terminal

vinnie@abaddon:~$ callsignv6 n1lqj-128 

Amateur Radio IPv6 Address Callsign Embedder 
The Technique uses base 37 encoding; 
Supports upto a maximium of a 2x4 callsign; and, 
Supports no more than 184 nodes (0 thru 184). 

Your IP Address shall be pursuant to RFC TBD (Proposed) 

RFC TBD prevents Callsign Duplication between Various IPv6 Ham Networks 

The Math 

Callsign in Base 37 (Integer)..... 94905719262 
Base 37 (Integer) x 185........... 17557558063470 
17557558063470 as Hexdecimal...... FF7F002F16E 

Unique IPv6 Address Translation 

Univeral Bit is set............... ::-2--:----:----:---- 
Amateur Radio Identifier is Set... ::----:--41:52--:---- 

Node (128) Specific Address....... ::F2F7:F041:5202:F1EE 

Node (  0) Start of Address Block. ::F2F7:F041:5202:F16E 
Node (184) End of Address Block... ::F2F7:F041:5202:F226 

vinnie@abaddon:~$ 

Example of N1LQJ-1 in use on actual node

vinnie@abaddon:~$ ifconfig eth1 
eth1      Link encap:Ethernet  HWaddr 00:0c:3d:2a:f1:ba  
          inet addr:44.124.128.128  Bcast:44.124.128.255  Mask:255.255.255.0 
          inet6 addr: fe80::20c:3dff:fe2a:f1ba/64 Scope:Link 
          inet6 addr: 2001:420:c:1a5:f2f7:f041:5202:f16f/64 Scope:Global 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 
          RX packets:149023 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:155231 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:34288787 (34.2 MB)  TX bytes:33515507 (33.5 MB) 
          Interrupt:21 Base address:0x1000 

vinnie@abaddon:~$ v6tocall ':'$(ifconfig eth1 | grep Global | cut -b 37- | cut -b -20) 
N1LQJ-1 
vinnie@abaddon:~$

------------------------------------------------------------
Configuring Network Device with embedded callsign
------------------------------------------------------------

vinnie@abaddon:/etc/network$ cat interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
    address 2001:420:b:1a5::2
    netmask 64
    endpoint 66.220.18.42
    gateway 2001:420:b:1a5::1
    ttl 64

auto eth1 
iface eth1 inet static
	address 44.124.128.128
	netmask 255.255.255.0

up ip -6 addr add '2001:420:c:1a5:'$(calltov6 n1lqj-1 | cut -b 3- )'/64' dev eth1

up ip -6 route add 2001:420:c:1a5::/64 via 2001:420:b:1a5::1

vinnie@abaddon:/etc/network$


Source: README.TXT, updated 2011-03-03