Lịch sử
NTP được phát triển tại Đại học Delawar vào năm 1985 do yêu cầu ngày càng tăng đối với việc đồng bộ hóa thời gian của máy tính qua Internet. NTP là một trong những giao thức internet lâu đời nhất, nhưng vẫn được coi là phương tiện tiêu chuẩn để đồng bộ hóa máy tính qua mạng dữ liệu.
Đang được phát triển liên tục, một số phiên bản của NTP đã được phát hành trong những năm qua. Cho đến nay, các triển khai phổ biến nhất là phiên bản 3 và 4. Phiên bản 4 mới nhất hoàn toàn tương thích với phiên bản trước. Nó tiếp tục phát triển và triển khai rộng rãi, có nghĩa là nó có khả năng sẽ ở với chúng tôi trong nhiều năm nữa.
Tầm quan trọng của đồng bộ hóa thời gian mạng
Các hệ thống máy tính phân tán dựa vào thời gian phối hợp để đảm bảo sắp xếp chính xác các quy trình và ghi nhật ký chính xác các sự kiện. Thời gian là tài liệu tham khảo duy nhất có thể được sử dụng để phối hợp các quy trình của các hệ thống độc lập.
Trong nhiều khu vực pháp lý, đối với các ứng dụng nhất định, đây là một yêu cầu pháp lý để đồng bộ hóa chính xác các hệ thống máy tính. Chẳng hạn, luật pháp yêu cầu các đồng hồ kinh doanh của các hệ thống giao dịch tài chính phải được đồng bộ hóa rất chặt chẽ. Đối với các lý do hoạt động và thường là hợp pháp, việc điều phối thời gian của các hệ thống máy tính hiện đại là rất quan trọng.
Nền tảng
NTP ban đầu được phát triển để hoạt động trên các nền tảng giống như Linux và UNIX. Phân phối NTP tiêu chuẩn có thể được tải xuống dưới dạng mã nguồn để biên dịch trên máy tính Linux lưu trữ. Mã nguồn có sẵn từ trang web của dự án NTP. Tuy nhiên, nhiều hệ điều hành Linux bao gồm các phiên bản của NTP trước khi được biên dịch. Hầu hết cài đặt NTP là mặc định. Gần đây, bản phân phối tiêu chuẩn cũng đã được chuyển sang hệ điều hành Windows.
Hầu hết các hệ điều hành bao gồm macOS và Windows, có một số dạng ứng dụng đồng bộ hóa NTP được cài đặt sẵn hoặc có sẵn dưới dạng tùy chọn.
NTP hoạt động như thế nào ?
NTP có thể hoạt động theo một số cách. Cấu hình phổ biến nhất là hoạt động ở chế độ unicast hoặc máy khách-máy chủ. Đây là nơi khách hàng truyền gói yêu cầu đến máy chủ, phản hồi với gói dấu thời gian. Mỗi gói có nguồn gốc, nhận và truyền dấu thời gian để có thể tính toán độ trễ lan truyền mạng. Điều này cho phép khách hàng đồng bộ hóa chặt chẽ nhất có thể với đồng hồ máy chủ.
Tất cả các gói thời gian được tạo bởi NTP sử dụng thời gian UTC. Giờ phối hợp quốc tế (UTC) là một tiêu chuẩn thời gian trên toàn thế giới. Nó liên quan chặt chẽ với GMT (Giờ trung bình Greenwich). UTC không thay đổi, nó là cùng một thế giới. NTP đặt đồng hồ của máy tính thành UTC, bất kỳ bù múi giờ khu vực hoặc bù thời gian tiết kiệm ánh sáng ban ngày đều được hệ điều hành áp dụng. Theo cách này, khách hàng có thể đồng bộ hóa với máy chủ bất kể sự khác biệt về vị trí và múi giờ.
Phân cấp và tầng
NTP thực hiện một kiến trúc phân cấp. Mỗi cấp độ trong hệ thống phân cấp được gọi là một tầng. Ở trên cùng là các đồng hồ tham chiếu phần cứng, chẳng hạn như GPS hoặc máy thu thời gian radio, được gọi là đồng hồ phần cứng tầng 0. Máy chủ NTP tầng 1 có kết nối trực tiếp với đồng hồ phần cứng và do đó có thời gian chính xác nhất.
Mỗi tầng trong hệ thống phân cấp đồng bộ hóa với tầng ở trên. Tầng có thể được coi là một chỉ dẫn về khoảng cách của máy khách từ đồng hồ phần cứng nguồn. Như vậy, khách hàng càng càng ở xa nguồn, độ chính xác đồng hồ của nó càng kém.
Đồng hồ tham chiếu phần cứng
Để cung cấp thời gian chính xác, cần có nguồn thời gian chính xác, đáng tin cậy. Những nguồn thời gian này được gọi là đồng hồ tham chiếu phần cứng. Hầu hết các đồng hồ tham chiếu phần cứng có được thời gian từ Hệ thống vệ tinh dẫn đường toàn cầu như GPS, GLONASS và Galileo. Ngoài ra, nhiều quốc gia có chương trình phát sóng thời gian radio, như MSF (Anh), DCF (Đức) và WWVB (Hoa Kỳ). Tuy nhiên, máy thu GNSS cung cấp mức độ chính xác cao nhất. Do số lượng hệ thống định vị vệ tinh dẫn đường đang sử dụng, chi phí của máy thu GNSS đã giảm nhanh chóng trong những năm gần đây.
Cấu hình
NTP được cấu hình bằng file cấu hình được đọc khi dịch vụ khởi động. Dịch vụ NTP cần được khởi động lại để mọi thay đổi cấu hình có hiệu lực. Vị trí file cấu hình mặc định là /etc/ntp.conf.
Tối thiểu, file cấu hình sẽ bao gồm một hoặc nhiều máy chủ sẽ được sử dụng để đồng bộ hóa. Ngoài ra, vị trí của file drift phải được chỉ định sẽ lưu tần số lỗi của đồng hồ hệ thống. Giá trị được sử dụng để khởi tạo lỗi tần số nội bộ khi NTP được khởi động lại.
Example:
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
driftfile /var/lib/ntp/drift
Độ chính xác
Khi được cung cấp một lựa chọn các máy chủ thời gian, NTP sử dụng các thuật toán phức tạp để chọn máy chủ chính xác nhất. Nó cũng tính toán độ trễ lan truyền mạng để đồng bộ hóa càng chính xác với máy chủ càng tốt. Các tính năng này có nghĩa là ngay cả khi sử dụng máy chủ thời gian Internet, đồng bộ hóa máy khách trong vòng 10 mili giây hoặc lâu hơn là hoàn toàn có thể. Trong khi máy chủ NTP trên mạng LAN có thể cung cấp đồng bộ hóa phụ mili giây.
Hệ thống dự phòng
Hệ thống đồng bộ đáng tin cậy nhất là hệ thống đa máy chủ NTP. Hai hoặc nhiều máy chủ giống hệt nhau lý tưởng ở các vị trí khác nhau cung cấp cấu hình mạnh mẽ nhất. Khách hàng có thể truy cập tất cả các máy chủ NTP và tự động bỏ chọn bất kỳ máy chủ bị lỗi hoặc vượt quá sai số cho phép. Cách tốt nhất là cài đặt một số lượng lớn máy chủ, sao cho có thể phát hiện bất kỳ sự sai lệch thời gian của một máy chủ nào bằng cách so sánh với ít nhất hai máy chủ khác.
Để tăng cường tính dự phòng, nhiều máy chủ cũng có thể được ghép với nhau để nếu mất đồng bộ hóa đồng hồ phần cứng của một máy chủ, chúng có thể lấy thời gian từ các máy chủ khác trong nhóm được đặt ngang hàng.
Bảo mật NTP
NTP có thể được bảo mật bằng cách thực hiện xác thực khóa được mã hóa. Một số khóa hoặc mật khẩu giống hệt nhau được chỉ định trên cả máy chủ và máy khách. Các khóa được mã hóa và gắn vào các gói NTP, hoạt động như một chữ ký số. Các gói được trao đổi giữa máy khách và máy chủ chỉ được xử lý nếu có các khóa khớp. Các khóa được mã hóa bằng chức năng băm, điển hình là MD5.
Chèn giây nhuận
Theo định kỳ, do sự dao động trong vòng quay của Trái đất, giây nhuận được đưa vào thời gian UTC.Về cơ bản, một giây được chèn một lần trong vài năm vào nửa đêm ngày 30 tháng 6 hoặc ngày 31 tháng 12. Trong lần chèn giây nhuận, sáu mươi giây trong một phút trở thành thời gian hợp lệ, tức là 23:59:60. Tính đến tháng 12 năm 2018, 27 giây nhuận đã được chèn. NTP tự động cảnh báo máy clients về việc thực hiện chèn giây nhuận sắp xảy ra vài giây trước khi quá trình chèn thực tế diễn ra. Clients can then prepare to insert the leap second, as required, at the correct time.Máy Clients sau đó có thể chuẩn bị để chèn giây nhuận, theo yêu cầu, vào đúng thời điểm.