Know Your TFTP Server

From the previous blog, What is a TFTP Server?, we know that a TFTP is a file transfer protocol, running on UDP port 69 and typically used to transfer files to/from network devices. Now let’s take another look at TFTP and learn what to look for in a TFTP Server.

TFTP was first drafted in the early 1980’s in RFC 783 which specified a 16 bit Block number with 512 bytes or octets per data packet. As the result, the maximum file transfer using TFTP is 32MB’s. That was sufficient in the 80’s when it was proposed but as computing grown and technology advanced, 32MB’s became insufficient so in the 90’s a host of RFC’s were proposed and revised the TFTP Protocol to its current standard.

The latest of the TFTP related RFCs includes RFC 2347 (TFTP Option Extension) which provided the flexibility to negiotiate additional optional parameters and extends the capability of the orginal RFC and yet still be compatible with legacy software and/or devices implemented the earlier RFCs. It paved the way for others like RFC 2347 (TFTP Block Size Option) & RFC 2348 (TFTP Block Size Option).

RFC 2348 – TFTP Blocksize Option: Blocksize Option allows for the negotiation of the block size value to be in the range of 8 to 65,464 octets instead of the fixed 512 octets and extends the file size from 32MB’s to about 4GB’s (65,636 x 65,464).

RFC 2349 – TFTP Timeout Interval & Transfer Size Options: Timeout Interval Option specifies the amount of time a server will wait for an acknoledgement packet (Option Acknowledgement or OACK) before resend the previous packet. Transfer Size Option lets the receiving device knows how big the file is before the transmitting it. This is done to conserve bandwidth by making sure the receiving end can store the incoming data instead of blindly transmitting the data until the receiving end chokes on it. Some software like Pinkie also takes advantage of this option to calculate and report the progress of the file transfer thus providing a more responsive User Interface.

So in summary, when choosing your TFTP Server, you should choose one that can support Option Extension, Blocksize Option as well as Timeout Interval & Transfer Size Options. This can help you avoid potential issues when transferring firmware to network devices; especially to high end Cisco switches whose firmware tend to be larger than most others.

As a network tool, Pinkie has a multithreaded TFTP Server built-in and implemented all of the aforementioned RFC’s. It also does so in a unique One Window, One App architecture that can help reduce the desktop clutter, cut down the number of application you have to maintain and update. If you haven’t done so already, download Pinkie and try it out.

Further Readings:
RFC 783
RFC 1350
RFC 1782
RFC 1783
RFC 1784
RFC 1785
RFC 2347
RFC 2348
RFC 2349

What is a TFTP Server?

In this blog, I’ll attempt to give you some highlights of what a TFTP Server is without going too deep into the technical details, how it operates and what you should know about it.

TFTP stands for Trivial File Transfer Protocol. As the name suggests, TFTP is a mechanism to tranfer files from one device to another. It is typically used by network administrator to copy configuration file, log file and firmware to/from networking devices.

TFTP was designed to be small, simple and easy to implement. It uses UDP port 69 and runs on IP networks. It doesn’t provide any kind of error handling capability so all the error handling has to be done at Layer 7 – the Application Layer.

Per RFC 1350, a typical TFTP data payload has a minimum of 4 bytes and 516 max. The TFTP data packet has the following format:

OpCode Block # Data
2 Bytes 2 Bytes 0-512 Bytes

The OpCode signals the type of operation whether it is a read request or a write request… The Block # contains the block number or ACK number of the data packet being transmitted. The Data field ranges from 0 to 512 bytes in length. If it is exactly 512 bytes, then there is more data to follow; otherwise, it is the last data packet and signals the end of the file transfer.

It is important to know that the Block # field is two byte long or 16 bits total which yield 65,536 block numbers (2^16). So this means the largest file TFTP can send or receive is 65,536 x 512 = 33,554,432 bytes or 32MB’s. This is the reason why files transfer with size larger than 32MB’s often fail.

That might not make sense to some of you right now since you might have done some file transfers that are larger than 32MB’s. It is possible to transfer files larger than 32MB’s using TFTP. The only difference is the TFTP Server must support RFC 2348 (TFTP Block Size Option). But that will be the topic for another blog.

So in summary, TFTP Server is a mean to transfer file, used to send/receive file to/from network devices. It uses UDP port 69 and can send or receive a file with a “maximum” size of 32MB’s.

Futher Readings:
Know Your TFTP Server

Using TFTP Server Feature in Pinkie!

If you are a network professional then chances are you have dealt with and needed a TFTP Server before. TFTP stands for Trivial File Transfer Protocol. The protocol was developed many, many moons ago and it is still one of the most common way of transfer firmware and/or configuration files to/from network devices.

TFTP Server is simple; there’s not a whole lot of options to it as it was specifically designed that way. Below are some explanations about its settings:

  • Port Number: By default TFTP Server runs on UDP port number 69. You should not need to change this number unless you have a specific security requirement to close port 69.
  • Server Timeout: This is how long the TFTP Server will wait for a data packet or an acknowledgement from the client. In Pinkie, the default setting is 5 seconds. If you wish to change it, go to Application Settings dialog, click on TFTP Server tab and change it there.
  • Maximum Retry: This is how many times Pinkie will attempt to retransmit a data packet after it encountered a timeout. You can change this value in Application Settings dialog.
  • TFTP Folder: For TFTP Server to work properly, this folder must be set. This is where Pinkie looks for the file requested by a TFTP client. This folder should be writeable if you need to copy files from your devices to the machine you run Pinkie on.

Most antivirus software will block port 69 by default. You might have to create an exception and allow UDP port 69 in order to let the TFTP traffic pass through. If you use Pinkie for server admin purposes, you should not be concern with this particular feature and as the result, shouldn’t need to open port 69.

TFTP is simple, widely used and will probably be sticking around for the foreseeable future. With it built in to Pinkie, hopefully, it will reduce another application that you have to install on your machine to get the work done.