A method of synchronizing a master clock and a slave clock, the method comprising: transmitting a plurality of packets between a master device with the master clock and a slave device with the slave clock; determining a first time sending a first packet of the plurality of packets from the master device to the slave device and a second time sending a second packet of the plurality of packets from the master device to the slave device; determining a third time when the first packet of the plurality of packets is received by the slave device and a fourth time when the second packet of the plurality of packets is received by the slave device; determining a fifth time sending a third packet from the slave device to the master device and a sixth time sending a fourth packet from the slave device to the master device; determining a seventh time when the third packet from the slave device is received by the master device and an eighth time when the fourth packet from the slave device is received by the master device; calculating a first skew based on times between a first pair of the plurality of packets at the slave device and a second skew based on times between the first pair at the master device, the first skew including a difference between the second time and the first time, and the second skew including a difference between the fourth time and the third time; calculating a third skew based on a difference between the eighth time and the seventh time, and a fourth skew including a difference between the sixth time and the fifth time; calculating an RMS ratio based on transmission of the first and second packets from the master device to the slave device, the RMS ratio being based on the second skew divided by the first skew; calculating an RSM ratio based on transmission of the third and fourth packets from the slave device to the master device, the RSM ratio being based on the fourth skew divided by the third skew; comparing the RMS ratio to the RSM ratio; if the RMS ratio approximates the RSM ratio, providing a slave clock frequency correction of the slave clock to the slave device to allow the slave device to correct a slave clock frequency; calculating a first packet trip delay by using a time that the master device initiates sending at least one particular packet of the plurality of packets to the slave device, a time that the master device receives a response based on the at least one particular packet from the slave device, a time that the slave device receives the at least one particular packet, and a time that the slave device initiates sending the response; calculating a first offset between the master clock and the slave clock based on the first packet trip delay; and providing the first offset to the slave device to enable the slave device to make a correction of the slave clock. transmitting a plurality of packets between a master device with the master clock and a slave device with the slave clock; determining a first time sending a first packet of the plurality of packets from the master device to the slave device and a second time sending a second packet of the plurality of packets from the master device to the slave device; determining a third time when the first packet of the plurality of packets is received by the slave device and a fourth time when the second packet of the plurality of packets is received by the slave device; determining a fifth time sending a third packet from the slave device to the master device and a sixth time sending a fourth packet from the slave device to the master device; determining a seventh time when the third packet from the slave device is received by the master device and an eighth time when the fourth packet from the slave device is received by the master device; calculating a first skew based on times between a first pair of the plurality of packets at the slave device and a second skew based on times between the first pair at the master device, the first skew including a difference between the second time and the first time, and the second skew including a difference between the fourth time and the third time; calculating a third skew based on a difference between the eighth time and the seventh time, and a fourth skew including a difference between the sixth time and the fifth time; calculating an RMS ratio based on transmission of the first and second packets from the master device to the slave device, the RMS ratio being based on the second skew divided by the first skew; calculating an RSM ratio based on transmission of the third and fourth packets from the slave device to the master device, the RSM ratio being based on the fourth skew divided by the third skew; comparing the RMS ratio to the RSM ratio; if the RMS ratio approximates the RSM ratio, providing a slave clock frequency correction of the slave clock to the slave device to allow the slave device to correct a slave clock frequency; calculating a first packet trip delay by using a time that the master device initiates sending at least one particular packet of the plurality of packets to the slave device, a time that the master device receives a response based on the at least one particular packet from the slave device, a time that the slave device receives the at least one particular packet, and a time that the slave device initiates sending the response; calculating a first offset between the master clock and the slave clock based on the first packet trip delay; and providing the first offset to the slave device to enable the slave device to make a correction of the slave clock.