Fidonet notes
From Driscollwiki
Writing about Fido since Jan25 Egypt
Say hello to Fido
Beautiful Fido BBS advertisement
Fidonet on the Internet timeline: http://www.textfiles.com/fidonet-on-the-internet/tl.htm
Resources
- http://www.textfiles.com/bbs/FIDONET/
- http://www.livinginternet.com/u/ui_fidonet.htm
- http://www.bbsing.com/
- BBS: The Documentary
- Scott blog post on Fidonet episode: http://ascii.textfiles.com/archives/823
- http://www.fidonet.org/
- Bush, R. (1992-3). FidoNet: technology, use, tools, and history. Retrieved from: http://www.fidonet.org/inet92_Randy_Bush.txt
- http://www.fidonews.org/
- A FidoNet Primer, http://www.writebynight.com/fidonet.html
- Fidonet tech standards: http://www.ftsc.org/
- Comparison of UUCP and Fidonet, http://www.cs.cmu.edu/~dga/15-849/store_and_forward.html
Interaction w/ Internet, USENET
- Major BBS didn't connect to TCP/IP until 1995, http://en.wikipedia.org/wiki/Major_BBS
- Wildcat, WINServer had internet access, http://www.winserver.com/public/default.wct
Store and forward communication: uucp and fidonet
Anderson, D. (2005?). "Store and forward communication: uucp and fidonet". Retrieved from: http://www.cs.cmu.edu/~dga/15-849/store_and_forward.html
Advantage of store and forward networks
- "resilience to extreme disconnection"
- messages can transmit in complete absense of end-to-end path
- different from conventional e-mail implementation
Weakness: scalability
- Fidonet nodes had to have updated list of ALL NODES
- UUCP "bang" addressing was soon nightmarishly long
Protocols
"Both UUCP and FidoNet suffer from a somewhat murky layering model."
UUCP
- various, difficult to understand protocols with diff features
Fidonet
- conventionally XMODEM
- no mention of Kermit in the Fidonet documentation even though it was developed in 1983
- Evidence of parallel universes, XYZMODEM / Kermit
Naming scheme
Fidonet
- Geographically hierarchical
- Zone:Net/Node.Point(Subnode)
- e.g. 1:512/66.0
UUCP
- Globally unique hostnames
- Character set limitations
- e.g. "ucbvax", "mit-ai"
- Assumes very small number of nodes
Routing
Fidonet
- Routes determined by geographic proximity
- Goal 1: reduce long-distance charges
- Goal 2: maximum batching, max compression
- Nodelist identifies every other system
UUCP
- Source routing
- Bang-path
- e.g. "foo!bar!ucbvax!user"
- Absolute pathnames
- Very inconvenient for human end-user
- All hosts needed an up-to-date map of the network
Scheduling
Fidonet
- Requires nodes to be available during "Zone Mail Hour"
- Additional transfers acceptable but might be limited by other user activity
UUCP
- Schedule on "per-pair basis"
- No global coordination
Higher level services
UUCP
- Generic "file copy and command execution" protocol
- Uses 'X.*' file to pass along a script for remote execution
"Modern UUCP"
- Used to batch process queued mail on frequently offline servers
Addressing, naming, and routing
UUCP
- Original design combined these into one "unfortunate" email address:
- complex: hosta!hostb!hostc!user
- sender-relative: hostx!hosty!hostz!user could be the same thing from diff machine
Pathalias
- Mail program to compute the route based on a simpler address
- e.g. hostc!user
- or Fidonet e.g. 1:170/918:42
A Challenge
"For instance, an interesting exercise would be to devise a store-and-forward messaging system that runs on top of Internet protocols, does not assume constant connectivity, but still permits indirect, human-friendly naming that abstracts identity from topology."
FidoNet: Technology, Use, Tools, and History
Bush, R. (1992-3). "FidoNet: Technology, Use, Tools, and History". Retrieved from: http://www.fidonet.org/inet92_Randy_Bush.txt
Technical overview
Fidonet is first built for MS-DOS
- "Semi-formal" data format, protocol specs
- Ported later to UNIX, Apple //, etc.
Protocol design goal: Minimize long-distance
- Contrast w/ uucp "g" protocol, smtp, nntp
Experimental IP implementation
Goal: traverse continents, avoid int'l dialing
- EUNet, RIPE
- EU, North American, Taiwan, Southern Africa, Chile, and others
Gateways
"1985.09.30: Bob Hartman announced that the UN*X gateway can send messages into Fidonet as well as to Fidonet from Usenet. The gate's address was 132/100." (http://www.textfiles.com/fidonet-on-the-internet/tl.htm)
Fidonet / uucp (thus Internet)
- Fido addressing translated like this:
- 1:105/42 == f6.n105.z1.fidonet.org
- individual users addressed like this: randy.bush@p0.f42.n105.z1.fidonet.org
"Internetwork gateways have been used extensively by non-governmental organizations (NGOs) in Africa, as well as by an ingenious transport between the South African academic IP network (UNINET-ZA) and the Internet [Guillarmod 92]."
- F. Jacot Guillarmod, "From FidoNet to Internet: the
evolution of a national network", "Proceedings of INET'92", H. Ishida Editor.
- Murray, Janet, "K12 Network: Global Education through
Telecommunications", "Proceedings of INET'92", H. Ishida Editor.
- How to use the UUCP / Fide-Net gateway, 1988, http://www.textfiles.com/bbs/FIDONET/JENNINGS/STANDARDS/how-to-ufgate.txt
- You must know a lot of info about UUCP network layout to write the bang path
- You also must have a local node with a uucp gateway
- More on this from Tim Pozar's site: http://www.lns.com/papers/ufgate/
Shared USENET and Fidonet echomail
- Fidonet MODULA-2 echomail == USENET comp.lang.modula2
- Fidonet K12Net == USENET k12.*
Internet / Fido connections
- Nodelist available via public ftp, http://www.textfiles.com/bbs/FIDONET/JENNINGS/STANDARDS/how-to-ftp-nodelist.txt
- Tunneling fido over internet, http://www.textfiles.com/bbs/FIDONET/JENNINGS/STANDARDS/tunnel.msg.txt
- "I'm sorry this is so hackerish ... code", Randy Bush, 1992
- BBS calls UNIX server, uucp
- UNIX server connects to another UNIX server
- Destination BBS connects to 2nd UNIX server, receives batch of Fido echomail
"FidoNet is a trademark of Tom Jennings and Fido Software. UNIX is a trademark of the soul-less [sic] behemouth AT&T.", Randy Bush, 1992
Common Software Components
BBS
- Provides mail, news user agent ("M/NUA")
- Users connect via dial-up from home PCs
- Assumes not specific terminal software
Alternative: Standalone Editor
- Console-based M/NUA
- Useful when no BBS is available
Packer (or Scanner)
- Mail/news transfer agent ("M/NTA")
- Standardizes format of local data for transmission
- Makes automated routing decisions
- Usually based on local "routing rule file"
- Uses echomail rule base to determine which groups to exchange with which other nodes
Mailer
- Makes, receives Fidonet calls to/from other nodes
- Handles modem init and operation
- Implementation of transfer protocol (e.g. XMODEM)
- Differentiate incoming human v. automated(Fido) calls
- Schedule calls around timezones, pricing
- Inter-node compatibility depends on mailer compatibility
Nodelist compiler
- Transforms nodelist from a standardized FTS-0005 format into something local
- Telephone numbers need to be adapted to local rules
- Especially international dialing
Policy and politics
Fidonet is distinct from uucp, Internet
- Low cost of entry
- Nodes owned + op'd by individuals, hobbyists, users
- Not computer professionals, corp labs, univ, mil/gov institutions
- Without the implicit/explicit hierarchy/rules/norms of the mil/edu/com institutions, social/political issues were raised sooner on Fideonet (CITE THIS)
"Tom Jennings intended FidoNet to be a cooperative anarchy to provide minimal-cost public access to electronic mail. Two very basic features of FidoNet encourage this. Every node is self-sufficient, needing no support from other nodes to operate. But more significant is that the nodelist contains the modem telephone number of all nodes, allowing any node to communicate with any other node without the aid or consent of technical or political groups at any level. This is in strong contrast to the uucp network, BITNET, and the Internet."
Fidonet policy and conventions
1985, first policy document
- http://www.rxn.com/~net282/POLICY1.txt
- Technical
- All nodes must send and receive
- Established "National mail hour"
- Established hubs, and nodelist coordinators
- Restricted routing traffic thru unsuspecting nodes.
- Social
- No warez, illegal stuff
- "Do not be excessively annoying and do not become excessively annoyed."
IFNA debacle
- One reason this might have failed is that Fidonet was "more socially oriented" than technically (as was the case with uucp, etc.)
Policy-4
Written by nodelist coordinators
- Establishes hierarchy of coordinators
Node-to-node architecture made radical takeover or top-down control impossible
- Though fractured Fidonet would be a sad thing and sacrifice much value
- Bad leaders generally ousted through (painful) social means
"The net runs fine, there is no need to implement bad policy just to satisfy some bureaucratic urge!", Tom Jennings, http://www.textfiles.com/bbs/FIDONET/JENNINGS/STANDARDS/policy4.art.txt
Transfer protocols (XMODEM)
"(de facto) standard file transfer protocol", Jennings 1983, http://www.textfiles.com/bbs/FIDONET/JENNINGS/STANDARDS/filexfer.doc.txt
- Jordan, J. (1983?). "XMODEM File Transfer Protocol". Retrieved from: http://www.textfiles.com/programming/xmodem.txt
History
Developed by Ward Christensen
- 1977
- Later developed first BBS
- "X": transfer
"People who suggest I make SIGNIFICANT changes to the protocol, such as "full duplex", "multiple outstanding blocks", "multiple destinations", etc etc don't understand that the incredible simplicity of the protocol is one of the reasons it survived to this day in as many machines and programs as it may be found in!", Ward Christensen (Forsberg, 1985)
Purpose
File transfer over telephone lines
- Electric noise yields data transmission errors
- Protocol must detect errors, resend missing data
- Asynchronous parity error detection
- Not implemented by most IBM PC comm programs
Protocols do not work until they are standardized and implemented across organizations
"It was a quick hack I threw together, very unplanned (like everything I do), to satisfy a personal need to communicate with "some other" people. ONLY the fact that it was done in 8/77, and that I put it in the public domain immediately, made it become the standard that it is.", Ward Christensen, 1985 (Forsberg, 1985)
XMODEM protocol
(See: Figure 1, http://www.textfiles.com/programming/xmodem.txt)
- When ready to receive, Receiving computer begins to transmit NAK (Negative Acknowledgement) character every 10 sec until Sender initiates transfer
- After 9 tries, protocol must begin again
- Sender sends the first packet:
- SOH, Start of Header
- Two block numbers
- 128-byte block of data
- Error-checking checksum
- Remainder of (sum of ASCII values of each character in the block)/(255)
- Receiver calculates its own checksum, it matches, it sends ACK, Acknowledge
- If it fails, it sends NAK, for a resend
- 9 sequential failures and the file transfer is aborted
- When all data is sent, Sender transmits an EOT, End of transmission, character
XMODEM advantages
- XMODEM is in the public domain
- Easy to implement in BASIC and Pascal
- Notably NOT C, lingua franca of UNIX
- Only requires 256-byte comm receive buffer
- Valuable for home pc users on 64k systems
- Enables transmission of non-ASCII 8-bit data files (COM, EXE) common on IBM PC platform
- Better error checking, 99.6% effective
- Especially important for noisy telephone lines
- Widely used on CP/M BBS
- http://en.wikipedia.org/wiki/CP/M
- OS for 8080/8085 and Z80 based micros
- IMSAI 8080, Osborne 1, Kaypro, MSX, Altair, C/128, Amstrad CPC, ZX Spectrum, (BBC Micro, Apple II w/ z80 boards)
- Standard platform in the MITS Altair mode
XMODEM/CRC, YMODEM
Forsberg, C. (ed.) (1985). "XMODEM/YMODEM PROTOCOL REFERENCE". Retrieved from: http://www.textfiles.com/programming/ymodem.txt
- Available via uucp using "bang" path
- Author contact info includes Voice, Modem, Usenet, Compuserve
- Forserg educated at Western Military Academy, 1962
- Also Ham (WA7KGX) and licensed aircraft pilot
"[XMODEM] is supported by every serious communications program because of its universality, simplicity, and reasonable performance."
Weaknesses in original XMODEM
- Short blocklength
- Slow thruput on timesharing, packetswitched networks (UNIX) and satellite circuits, buffered/error-correcting modems
- 8bit checksum could be improved
- Only one file per transfer
- Transmitted file accumulates as many as 127 extra bytes
- File meta data (modified) lost
XMODEM remained popular because
- Widely implemented
- Public domain
- Well documented
YMODEM
Adhering to XMODEM principles
- Simple
- Public domain
- Portable across systems
- Many PC implementations
- Many timesharing UNIX implementations
Improvements to XMODEM:
- 1024 byte packet length
- Batch protocol
- Max throughput with error-correcting media (newer modems)
- CRC-16 (16 bit checksum), CRC-CCITT
- Same error correction as Bluetooth (see wp page)
- x16 + x12 + x5 + 1
- Refers to Tanenbaum's text Computer Networks (Forsberg, 1985)
- Note: Tanenbaum also wrote Minix, the inspiration for Linux
- Backward compatible
- Sends preliminary <C> first
- Four tries, 3 sec apart
- If it fails, it defaults to traditional XMODEM style
Written in C
- Compatible programs also written for UNIX
- sb, rb: rbsb.sh
Kermit v XMODEM
http://www.columbia.edu/kermit/kermit.html
- Columbia University tool set
- More flexible
- Less widely adopted outside of aca/arpa/internet?
- Copyright, patent issues?
"Performance compromises and moderate complexity have limited the popularity of the Kermit protocol, which was developed to allow file transfers in environments hostile to XMODEM." (Forsberg, 1985)
Pre-Fidonet sketches
Jennings, T. (1984). Retrieved from: http://www.textfiles.com/bbs/FIDONET/JENNINGS/STANDARDS/fidonet.doc.txt
"Points that need ideas":
- How to pay for it
- How it will appear to callers trying to send mail
- Mysterious operational type problems
"Like most of Fido, I imagine this too will be built with 90% suggestions."
Cost in 1984
"Right now, late night long distance (coast to coast) toll charges are about $13.00 per hour. ATT is proposing, as part of some other boring issue, lowering this to $10.00 per hour. This is quite cheap; a lot of messages can be sent in an hour."
Need an error checking protocol
- But can't use XMODEM because transfer times "routinely double with long phone lines (Don't want to pay for that)"
Working out cost per message:
- Sample message from LA to NYC = 0.01324$
- Assuming
- 80 character message
- 1200 baud
- 10% overhead for error correction
Why is cost so important?
- BBSes are run independently
- They don't make money
- They usually cost money
- If Fidonet is difficult or expensive, it won't be implemented
"IF YOU HAVE ANY IDEAS AT ALL ON THIS SUBJECT PLEASE LET ME KNOW!!!!!! THIS WILL MAKE OR BREAK THE FIDONET IDEA!!!!"
Network
"The topography of FidoNet is in keeping with bulletin board philosophy; totally random and as little organization as possible."
Initial design: Fidonet Electronic Mail Protocol
Jennings, T. (1984). "Fidonet Electronic Mail Protocol 20 Oct 84". Retrieved from: http://www.textfiles.com/bbs/FIDONET/JENNINGS/STANDARDS/fidomail.doc.txt
- Also reprinted in THE LOST FIDONET ARCHIVES VOLUME ONE, FidoNews 6-22, 29 May 1989, http://www.textfiles.com/fidonet-on-the-internet/878889/fido0622.txt
Background
Fidonet designed for portability
- "within the existing 'public domain' software base"
- any system that supports XMODEM should support Fidonet
Definition of Fidonet, 1984
"FidoNet is a true electronic mail system supported by the Fido Bulletin Board System software, under MSDOS version 2. It's function is to transfer textual messages, and binary files, between physically seperate computers on an automatic, unattended basis."
Platform assumptions
8 bit bytes
- common to MS-DOS, CP/M
Transaction-oriented comm
- Modem + phone line
Goal: "extremely short channel connect times"
- Lowest possible cost
- Thus, all packets pre-assembled
- "No processing at all is done at packet transfer time."
- This is dif from XMODEM checksum or YMODEM CRC
- "No processing at all is done at packet transfer time."
Non-real-time operating system
- No daemon option like nntpd
- Users connect to (presumably) Fido BBS (or other) to write + store messages
- FidoNet later handles them, separate program, separate process
- Once-per-day
Software assumptions
Fido/Fidonet is written in C w/ structs, strings
- Characters: 8bit byte, 128ASCII
- String: 1-dim array of 8bit chars, terminated by null (hex 0)
- Integers: 16 bit, "short" ints
- Longs: 32 bits, intel format
Packet definition
Treated as byte streams
- Diffult to read ahead and buffer
Header
- Fixed length
- Originating, destination nodes
- Date
- Version number
- Extra space for future expansion
Message 1...N
- Fixed num of fields
- Variable length
- type: short
- attribute: short
- originating node: short
- destination node: short
- 00: short
- cost: short
- date: string
- To: string
- From: string
- text: string
Trailer
- Fixed length
- Single integer 0
- XMODEM might add data after this zero but it can be ignored
System assumptions
Borrows heavily from Ward Christensen's MODEM
- XMODEM: mail packet transfer protocol
- MODEM7/TELINK: transfer of any addition files and MSDOS file attribute info
Clock
- Assumed and used for "failsafe monitoring of packets" and cost/call accounting
- Important to avoid excessive (and COSTLY) broken connections
Three hardware dependent functions
- DELAY(short), to sync with telephone company gear
- MODOUT(char), send char via modem
- MODIN(short), recv char via modem (wait n centiseconds)
Typical Fidonet session
Take control from Fido
Building routing table
Build list of active nodes
Creating packets
- Compiling Messages
- Compiling list of attached files
Sending/receiving Packets
- Outgoing calls made at random 1-2 min intervals
- Nodes selected from the previously build table
- Upon connection
- CRs sent to determine baud
- Receiver sends signon
- Sender transmits a TSYNC indicates call is from a FidoNet node
- Receiver goes into XMODEM file receive
- Sender transmits using normal XMODEM protocol
- Receiver enters MODEM7, awaiting extra files
- Sender transmits all files using MODEM7
- Sender transmits EOT
- Sender delays 5s
- Sender disconnects
- Upon successful transmission
- Sender deletes outgoing packet, file list, and marks node successful
- Returns to wait mode
Deleteing outgoing packets, marking sent messages
Unpacking incoming packets
Return control to Fido
Fidonet dialing and packet transfer
Note: at this stage, still requires enormous number of long-distance calls!
- Jim Ryan suggests using MCIMail or CompuServe for transport
Note: numerous checks for carrier loss in code
- numerous reasons for carrier loss
Jennings includes both pseudocode and C code w/ comments
Response: Proposal to mimic uucp in Fido
Wilkes, R. P. (1984). "FIDONET: Response 5/24/84". Retrieved from: http://www.textfiles.com/bbs/FIDONET/JENNINGS/STANDARDS/fidonet.rpw.txt
- also found in the LOST FIDONET ARCHIVES, VOLUME TWO, FidoNews 6-23, 5 Jun 1989, http://www.textfiles.com/fidonet-on-the-internet/878889/fido0623.txt
"People in the micro BBS environ often are totally unaware that there is a working, FREE, network of mini and microcomputers exchanging gigabytes of mail around the country (by phone). Some are part of the Arpanet, but the one we should examine is UUCP, a network of machines running Unix."
Proposed benefit:
- Multi-hop routing a la uucp "bang"-style paths
- Minimal, low costs
- Connectivity with UNIX minis and other systems
- Personal mailboxes
- net.news (aka USENET!)
"Right now, you can mail a message and have it delivered free to almost any university or major technology corporation in the country via this network."
Wilkes tried to implement uucp on his BBS but:
- Need for massive diskspace (33mb)
- Need for multiple lines (he says at least 3)
- Need faster processer than a 4.77Mhz 8086
- Wilkes' conclusion: " ... wait."
"For the time being, I strongly urge that those that are strongly interested in this type of system start doing some research. When you can hold a reasonable discussion on file transfer protocols (real ones, of course--NOT XMODEM), message headers and formats, routing algorithms, connectivity analysis, delivery systems and scheduling, plus some of the more intricate cost analyses, we can join the work that is already advancing in the "other world" so we are not left out once again."
Response in 1989
Tobias, D. (1989). FidoNews. (TODO fix this cite) http://www.textfiles.com/fidonet-on-the-internet/878889/fido0624.txt
"He had fairly elitist expectations due to his involvement in UUCP/UseNet, and didn't see much value in a BBS network of much lower functionality. Fortunately, others were willing to work with what they had, and accomplished a lot with a network at not quite as lofty a level as Wilkes would have liked.", Daniel Tobias
Echomail
"In February 1986, Jeff Rush developed FidoNet's form of enews called echomail. As very few FidoNetters were familiar with the Usenet, they were quite surprised at the popularity and rate of growth of echomail. Within two weeks, an international echomail conference, MODULA-2, was propagated between Europe, Australia, and North America, and today the daily volume of compressed echomail is over eight megabytes. The social effects, both good and bad, of echomail on the network parallel those of the Usenet." (Bush, 1992-3)
Wager, W. (198?). "History of echomail." Retrieved from: http://www.textfiles.com/fidonet-on-the-internet/history/echomail.htm
Hartman, B. (1986). "FTS-0004: EchoMail Specification: The conference mail system." Retrieved from: http://www.ftsc.org/docs/fts-0004.001
First echoes
- SYSOP
- TECH
- GAYNET
- CLANG (C programming language)
- BIBLE
(Wager, 198?)
Differences from USENET
- Sysops have to explicitly subscribe to new groups
- Binary attachments are ok
(Wager, 198?)
How it Works
- Message is entered by a user dialed-in to a BBS
- Message is exported with control information and linked to a conference
- Receiving systems import the new message when they connect to the originating system
- Receiving systems then export this message along with their own new messages upon future connects
- Steps are taken to avoid redundancy and looping
Message control info
- AREA:CONFERENCE, to which conference does it belong?
- Tear line ('---'), may include product-specific information
- Origin, Name of the BBS (Fido routing info)
- Seen-by, list of Fidos that have seen this already, REQUIRED to avoid redundancy
- PATH, list of machines that have actually processed this msg, rather than those to whom it has been sent
How echomail is sent
A. Along as FidoNet messages
Obvious scaling issue
- Conferences can include 100s of messages
- Very slow, long connections
- Doesn't adhere to the POINT of Fido, avoiding LD charges
B. ARCmail: attach an ARC archive to FidoNet mailer
- Thom Henderson wrote ARC archiver
- Suggested using a compressed file to limit transfer
C. Conference Mail System
- Eliminates ARCmail redundancies
- Builds ARC during "export" phase
- UnARCs them during "import" phase
Conference topology
Goals:
- Increase Efficiency
- Decrease Redundancy
Efficiency guidelines
- Least time for all systems to recv msg
- Least cost for all systems to recv msg
- Fewest phone calls reqd for all systems to recv msg
Best efficiency practices
- Never have two systems send to each other simultaneously
- "Star" configuration, (node/hub)
- Utilize fully connected polygons with a few vertices
- Regional Echomail Coordinators (RECs) only allowed to make inter-regional connections
Jennings politics, views on hobbyists
"The FidoNet is militantly anti-commercial."
"FidoNet sysops are paranoid, cranky and take offense at the slightest mistake. You're better off banging hornets nests with sticks if ya wanna wrastle. Some have egos the size of small planets. Don't say I didn't warn you. Our computers may be smaller, but they are mean and smart. o FidoNet is organized in a radically different manner than nearly any other network you can think of. There is *no* central authority of any kind. You must deal with actual individual humans. Organization varies radically with time and place. Act as you would like to be treated. "
Other issues not addressed in the present investigation
- Jennings defines "hobbyist": http://www.textfiles.com/bbs/FIDONET/JENNINGS/STANDARDS/fido-fidonet-software-policy.txt
- Details of Fido user experience: http://www.textfiles.com/bbs/FIDONET/JENNINGS/STANDARDS/fidouser.doc.txt
- Switch from node to net/node, 1985, decentralization, discussed historically by Tobias in 1989 as setting an undemocratic precedent: http://www.textfiles.com/fidonet-on-the-internet/878889/fido0627.txt
Fido routing scheme
RECV-Only
- No outgoing calls
- No long-distance charges!
- Unreliable but available option
Fido / Ham connections
"While the original FidoNet systems were fully integrated within bulletin board systems, FidoNet "mail-only" systems are now a noticeable portion of the public network. These provide the owner a facility similar to ham radio or a fax machine, but provide no public access via dial-up."
- Announced here: http://www.textfiles.com/fidonet-on-the-internet/878889/fido0628.txt
- Ham/Packet radio newsletter archive: http://www.vectorbd.com/bfd/hamradio/index.html

