Khi lần đầu tiếp xúc với Network Time Protocol (NTP), nhiều người thường nghĩ nó đơn giản:
Máy tính của tôi hỏi một máy chủ thời gian về thời gian hiện tại, nhận được câu trả lời, và cập nhật đồng hồ.
Thật không may, cách tiếp cận đó sẽ tạo ra những chiếc đồng hồ không chính xác.
Network Time Protocol (NTP) là một giao thức mạng dùng để đồng bộ hóa đồng hồ của máy tính và các thiết bị mạng qua mạng IP. Thay vì chỉ đơn giản yêu cầu thời gian hiện tại, NTP ước lượng độ trễ mạng, bù trừ cho độ trôi đồng hồ, và liên tục điều chỉnh đồng hồ hệ thống để giữ cho các máy tính được đồng bộ một cách chính xác nhất có thể.
Thách thức thực sự không phải là lấy được thời gian. Mà là xác định độ trễ mạng đã ảnh hưởng đến câu trả lời như thế nào. Giải quyết vấn đề đó là lý do tại sao NTP vẫn là một trong những giao thức thanh lịch và được sử dụng rộng rãi nhất trong các hệ thống phân tán.
Trong hướng dẫn toàn diện này, bạn sẽ tìm hiểu cách NTP hoạt động, tại sao thời gian chính xác lại quan trọng, cách NTP tính toán độ lệch đồng hồ và độ trễ mạng bằng bốn dấu thời gian.
Ngoài ra, bạn cũng sẽ tìm hiểu tại sao NTP truy vấn nhiều máy chủ thời gian, và cách nó giữ cho đồng hồ đồng bộ bất chấp phần cứng không hoàn hảo và mạng không thể đoán trước.
Trước tiên, chúng ta sẽ bắt đầu với NTP thực sự là gì.
Network Time Protocol (NTP) là gì?
Network Time Protocol (NTP) là một giao thức mạng được sử dụng để đồng bộ hóa đồng hồ của máy tính và các thiết bị khác qua mạng IP. Nó ước lượng độ trễ mạng, bù trừ cho độ trôi đồng hồ, và liên tục điều chỉnh đồng hồ hệ thống để các thiết bị tham gia duy trì một khái niệm thời gian chung.
Thay vì chỉ đơn giản hỏi một máy chủ về thời gian hiện tại, NTP trao đổi nhiều dấu thời gian, lọc các phép đo không chính xác, và dần dần điều chỉnh đồng hồ cục bộ. Điều này cho phép các máy tính trên Internet duy trì đồng bộ trong phạm vi mili giây trong điều kiện bình thường.
Tại sao thời gian chính xác lại quan trọng
Máy tính hiện đại dựa vào thời gian chính xác cho nhiều việc hơn là chỉ hiển thị ngày và giờ chính xác. Hầu như mọi hệ thống phân tán đều giả định rằng các máy tham gia có đồng hồ được đồng bộ hợp lý.
Ngay cả sự khác biệt vài giây cũng có thể gây ra lỗi xác thực, thứ tự log không chính xác, tác vụ đã lên lịch bị lỗi, hoặc dữ liệu không nhất quán trên các máy chủ.
Thời gian chính xác là điều cần thiết cho nhiều công nghệ hàng ngày, bao gồm:
- Bảo mật web: Chứng chỉ HTTPS và TLS có thời hạn hiệu lực. Nếu đồng hồ hệ thống sai lệch đáng kể, trình duyệt và ứng dụng có thể từ chối các chứng chỉ còn hợp lệ.
- Ghi log hệ thống: Quản trị viên sử dụng dấu thời gian để khắc phục sự cố và điều tra sự cố bảo mật. Đồng hồ không đồng bộ khiến việc tái tạo lại chuỗi sự kiện chính xác trên nhiều hệ thống trở nên khó khăn.
- Hệ thống phân tán: Cơ sở dữ liệu, hàng đợi tin nhắn và ứng dụng phân tán thường dựa vào dấu thời gian để điều phối hoạt động, phát hiện xung đột và sắp xếp thứ tự sự kiện.
- Tác vụ đã lên lịch: Cron jobs, sao lưu tự động, cập nhật phần mềm và cửa sổ bảo trì đều phụ thuộc vào thời gian hệ thống chính xác.
- Giao thức xác thực: Các cơ chế bảo mật như Kerberos sử dụng dấu thời gian để ngăn chặn tấn công phát lại. Sự khác biệt lớn về đồng hồ có thể khiến các yêu cầu xác thực thất bại.
- Hệ thống tài chính: Ngân hàng, sàn giao dịch chứng khoán và bộ xử lý thanh toán yêu cầu dấu thời gian chính xác cho kiểm toán, tuân thủ quy định và sắp xếp thứ tự giao dịch.
- Giám sát và quan sát: Các nền tảng giám sát tương quan số liệu, log và dấu vết thu thập từ nhiều máy. Dấu thời gian nhất quán giúp xác định nguyên nhân gốc rễ của sự cố ngừng hoạt động.
Mặc dù đồng bộ hóa hoàn hảo là không thể qua mạng, NTP giữ cho đồng hồ đủ gần cho hầu hết các ứng dụng bằng cách liên tục ước lượng độ trễ mạng, hiệu chỉnh độ trôi đồng hồ và dần dần điều chỉnh đồng hồ hệ thống cục bộ.
Điểm chính: Thời gian chính xác là một yêu cầu nền tảng cho điện toán phân tán đáng tin cậy và an toàn. NTP tồn tại vì việc duy trì đồng hồ đồng bộ trên các mạng không hoàn hảo khó hơn nhiều so với việc chỉ đơn giản hỏi một máy tính khác về thời gian hiện tại.
NTP có sử dụng đồng hồ nguyên tử không?
Không trực tiếp.
Hầu hết máy tính không bao giờ giao tiếp trực tiếp với đồng hồ nguyên tử. Thay vào đó, thời gian được phân phối thông qua một hệ thống phân cấp.
Atomic clock / GPS reference
│
▼
Stratum 1 servers
│
▼
Stratum 2 servers
│
▼
Stratum 3 servers
│
▼
Your Linux system
Máy chủ Stratum 1 được kết nối với một đồng hồ tham chiếu có thẩm quyền, chẳng hạn như bộ thu GPS hoặc nguồn thời gian chính xác khác. Máy tính của bạn thường đồng bộ hóa với Stratum 2 hoặc 3, những máy chủ này kế thừa thời gian từ các máy chủ cao hơn trong hệ thống phân cấp.
Điểm chính: Máy tính của bạn không cần đồng hồ nguyên tử. Nó chỉ cần một chuỗi đáng tin cậy dẫn đến một đồng hồ như vậy.
Clock Skew so với Clock Drift
Hai thuật ngữ này thường bị nhầm lẫn.
Clock skew là sự khác biệt giữa hai đồng hồ tại một thời điểm cụ thể.
Ví dụ:
Computer A: 10:00:05
Computer B: 10:00:00
Clock skew = 5 seconds
Clock drift mô tả tốc độ đồng hồ tăng hoặc giảm thời gian vì bộ dao động phần cứng của nó không hoàn hảo.
Ngay cả bộ dao động thạch anh chất lượng cao cũng bị trôi vài phần triệu, khiến đồng hồ dần dần lệch nhau nếu không được đồng bộ hóa.
Tại sao chỉ đơn giản hỏi thời gian là không hiệu quả
Hãy tưởng tượng máy tính của bạn gửi yêu cầu này:
"Bây giờ là mấy giờ?"
Máy chủ trả lời:
"12:00:00"
Nhưng vào thời điểm phản hồi đến máy tính của bạn:
- Độ trễ mạng có phải là 2 ms không?
- 20 ms?
- 200 ms?
Nếu không biết độ trễ đó, chỉ riêng dấu thời gian là không đủ.
Đây là vấn đề đồng bộ hóa cơ bản trong các hệ thống phân tán.
Cách NTP ước lượng độ trễ mạng
Thay vì trao đổi một dấu thời gian duy nhất, NTP trao đổi bốn dấu thời gian.
Client Server
t1 ---------------------->
receives at t2
replies at t3
<----------------------- t4
Trong đó:
- t1 = client gửi yêu cầu
- t2 = máy chủ nhận yêu cầu
- t3 = máy chủ gửi phản hồi
- t4 = client nhận phản hồi
Sử dụng bốn dấu thời gian này, client ước lượng hai giá trị chính:
Độ trễ khứ hồi (Round-trip delay)
δ = (t4 − t1) − (t3 − t2)
Độ lệch đồng hồ (Clock offset)
θ = ((t2 − t1) + (t3 − t4)) / 2
Các phương trình này cho phép client ước lượng cả độ trễ truyền thông và mức độ khác biệt giữa đồng hồ của nó với đồng hồ của máy chủ.
Cách NTP chọn máy chủ thời gian tốt nhất
Một trong những quan niệm sai lầm lớn nhất về NTP là nó chỉ đơn giản liên hệ với máy chủ gần nhất hoặc có Stratum thấp nhất và tin tưởng vào thời gian mà nó báo cáo.
Trên thực tế, NTP thận trọng hơn nhiều.
Mạng máy tính vốn không đáng tin cậy. Các gói tin có thể bị trì hoãn do tắc nghẽn, máy chủ có thể bị cấu hình sai, đồng hồ phần cứng có thể bị trôi, và ngay cả các máy chủ thời gian có độ chính xác cao cũng có thể tạm thời cung cấp các phép đo kém do điều kiện mạng.
Để đạt được đồng bộ hóa đáng tin cậy, NTP đánh giá nhiều nguồn thời gian và liên tục xác định nguồn nào đáng tin cậy nhất.
Bước 1: Truy vấn nhiều máy chủ thời gian
Thay vì chỉ dựa vào một máy chủ duy nhất, một client NTP thường được cấu hình để giao tiếp với một số máy chủ thời gian độc lập.
Mỗi máy chủ trả về thời gian hiện tại của nó, cho phép client so sánh nhiều phép đo thay vì mù quáng tin tưởng một nguồn duy nhất.
Server A
\
Server B -----> Your Computer
/
Server C
Sử dụng nhiều máy chủ cải thiện cả độ chính xác và khả năng chịu lỗi. Nếu một máy chủ không khả dụng hoặc bắt đầu báo cáo thời gian không chính xác, client có thể tiếp tục đồng bộ hóa với các máy chủ còn lại.
Bước 2: Đo độ trễ mạng và độ lệch đồng hồ
Đối với mỗi máy chủ nó liên hệ, NTP tính toán hai giá trị quan trọng:
- Độ trễ mạng: thời gian ước tính cần thiết để các thông điệp di chuyển giữa client và máy chủ.
- Độ lệch đồng hồ: sự khác biệt ước tính giữa đồng hồ của client và đồng hồ của máy chủ.
Các phép đo này giúp client xác định không chỉ thời gian máy chủ báo cáo, mà còn mức độ tin cậy của phép đo đó.
Một máy chủ có độ trễ mạng rất lớn hoặc biến động cao thường ít phù hợp để đồng bộ hóa hơn so với máy chủ có kết nối độ trễ thấp và ổn định.
Bước 3: Loại bỏ các nguồn thời gian không đáng tin cậy
Không phải mọi máy chủ đều đáng tin cậy.
Một máy chủ có thể báo cáo thời gian không chính xác vì:
- Lỗi phần cứng
- Lỗi cấu hình
- Tắc nghẽn mạng quá mức
- Sự cố mạng tạm thời
- Mất đồng bộ hóa với nguồn thời gian thượng nguồn của chính nó
Giả sử một client NTP nhận được các độ lệch đồng hồ sau:
Vì ba máy chủ gần như đồng ý trong khi một máy chủ khác biệt đáng kể, NTP xác định Máy chủ D là một ngoại lệ và loại trừ nó khỏi quá trình đồng bộ hóa.
Quá trình lọc này giúp ngăn một máy chủ bị lỗi duy nhất khiến client đặt thời gian hệ thống không chính xác.
Bước 4: Chọn nguồn đồng bộ hóa tốt nhất
Sau khi lọc các phép đo không đáng tin cậy, NTP chọn máy chủ có khả năng cung cấp thời gian chính xác và ổn định nhất.
Quyết định dựa trên một số yếu tố, bao gồm:
- Độ trễ mạng thấp
- Các phép đo nhất quán theo thời gian
- Hành vi đồng hồ ổn định
- Mức Stratum
- Chất lượng đồng bộ hóa tổng thể
Một quan niệm sai lầm phổ biến là máy chủ Stratum 1 luôn là lựa chọn tốt nhất.
Trong thực tế, điều này không nhất thiết đúng.
Ví dụ, một máy chủ Stratum 2 gần đó được kết nối qua mạng nhanh, độ trễ thấp có thể cung cấp đồng bộ hóa chính xác hơn so với máy chủ Stratum 1 ở xa được kết nối qua kết nối Internet chậm hoặc tắc nghẽn.
Do đó, NTP đánh giá chất lượng tổng thể của từng nguồn đồng bộ hóa thay vì chỉ đơn giản chọn máy chủ có số Stratum thấp nhất.
Tại sao điều này lại quan trọng
Nếu không có các cơ chế lựa chọn và lọc này, chỉ một máy chủ bị lỗi duy nhất cũng có thể khiến hàng nghìn máy tính áp dụng thời gian hệ thống không chính xác.
Bằng cách so sánh nhiều nguồn thời gian độc lập, loại bỏ các phép đo không nhất quán và liên tục đánh giá lại chất lượng đồng bộ hóa, NTP vẫn hoạt động tốt ngay cả khi các máy chủ hoặc đường truyền mạng riêng lẻ trở nên không đáng tin cậy.
Điểm chính: NTP không chỉ đơn giản chọn máy chủ gần nhất hoặc có Stratum thấp nhất. Nó liên tục so sánh nhiều nguồn thời gian, lọc các phép đo không đáng tin cậy và đồng bộ hóa với máy chủ cung cấp thời gian chính xác và ổn định nhất trong điều kiện mạng hiện tại.
Tại sao NTP thường không nhảy đồng hồ
Giả sử máy tính của bạn phát hiện ra nó nhanh hơn năm giây.
Một triển khai ngây thơ sẽ ngay lập tức đưa đồng hồ về phía sau.
Thật không may, điều đó có thể gây ra vấn đề cho:
- cơ sở dữ liệu
- công việc đã lên lịch
- tệp log
- chứng chỉ TLS
- ứng dụng phân tán
Thay vào đó, NTP thường điều chỉnh trôi (slew) đồng hồ.
Thay vì thay đổi thời gian hiển thị ngay lập tức, nó tăng tốc hoặc giảm tốc độ đồng hồ hệ thống một chút cho đến khi hội tụ về thời gian chính xác.
Các lỗi lớn vẫn có thể yêu cầu một bước nhảy (step), nhưng hoạt động bình thường dựa vào sự điều chỉnh dần dần thông qua các thuật toán điều chỉnh đồng hồ.
NTP chính xác đến mức nào?
Trên mạng cục bộ (LAN) ổn định, NTP thường có thể đồng bộ hóa đồng hồ trong phạm vi vài mili giây hoặc tốt hơn.
Qua Internet công cộng, độ chính xác thường nằm trong phạm vi hàng chục mili giây, tùy thuộc vào độ trễ mạng, tắc nghẽn, chất lượng máy chủ và phần cứng.
NTP có thể hoạt động mà không cần Internet không?
Có. NTP không yêu cầu kết nối Internet.
Các tổ chức thường triển khai cơ sở hạ tầng NTP nội bộ của riêng họ để đảm bảo độ tin cậy và bảo mật. Một máy chủ NTP nội bộ có thể đồng bộ hóa với:
- Bộ thu GPS
- Đồng hồ tham chiếu nguyên tử
- Một máy chủ NTP nội bộ đáng tin cậy khác
Các mạng cách ly (air-gapped), hệ thống điều khiển công nghiệp, môi trường quân sự và phòng thí nghiệm nghiên cứu thường sử dụng máy chủ NTP cục bộ để duy trì thời gian chính xác mà không cần truy cập Internet.
Tại sao các hệ thống phân tán coi đồng bộ hóa thời gian là một vấn đề khó
Thoạt nhìn, kiến trúc master-worker có vẻ đủ.
Master
/ | \
A B C
Tuy nhiên, thực tế đưa ra một số phức tạp:
- mọi client đều trải qua độ trễ mạng khác nhau
- độ trễ mạng liên tục thay đổi
- đồng hồ trôi liên tục
- máy chủ có thể bị lỗi
- một số máy chủ có thể báo cáo thời gian không chính xác
NTP giải quyết những vấn đề này bằng cách kết hợp ước lượng độ trễ, lọc thống kê, nhiều nguồn thời gian và điều chỉnh đồng hồ liên tục thay vì mù quáng tin tưởng một master duy nhất.
Đây là lý do tại sao sách giáo khoa dành toàn bộ chương cho đồng bộ hóa đồng hồ. Giao thức này đang giải quyết nhiều hơn là "hỏi một máy chủ về thời gian."
Tại sao NTP không làm cho mọi máy tính hiển thị cùng một thời gian?
Đồng bộ hóa hoàn hảo qua mạng là không thể.
Mọi gói tin NTP đều trải qua độ trễ hơi khác nhau do:
- Tắc nghẽn mạng
- Hàng đợi router
- Thời gian truyền thay đổi
- Độ trễ xử lý
- Độ trôi đồng hồ bên trong mỗi máy tính
NTP giảm thiểu các lỗi này bằng cách sử dụng lọc thống kê và điều chỉnh đồng hồ liên tục, nhưng nó không thể loại bỏ hoàn toàn sự không chắc chắn. Thay vì đạt được đồng bộ hóa hoàn hảo, mục tiêu của nó là giữ cho đồng hồ đủ gần để vận hành đáng tin cậy.
Những quan niệm sai lầm phổ biến về NTP
Câu hỏi thường gặp (FAQ)
Hỏi: Network Time Protocol (NTP) là gì? Đáp: Network Time Protocol (NTP) là một giao thức mạng đồng bộ hóa đồng hồ của máy tính và thiết bị mạng qua mạng IP. Nó ước lượng độ trễ mạng, bù trừ cho độ trôi đồng hồ và liên tục điều chỉnh đồng hồ cục bộ để các hệ thống duy trì một khái niệm thời gian chung.
Hỏi: NTP đồng bộ hóa đồng hồ máy tính như thế nào? Đáp: NTP trao đổi bốn dấu thời gian giữa client và máy chủ thời gian. Sử dụng các dấu thời gian này, nó ước lượng độ trễ mạng khứ hồi và sự khác biệt giữa đồng hồ client và máy chủ (độ lệch đồng hồ). Client sau đó dần dần điều chỉnh đồng hồ của mình để giảm thiểu sai số.
Hỏi: Linux có sử dụng NTP không? Đáp: Có. Hầu hết các bản phân phối Linux hiện đại đồng bộ hóa thời gian bằng phần mềm tương thích NTP như chronyd (Chrony) hoặc systemd-timesyncd. Cả hai đều tự động duy trì thời gian hệ thống chính xác bằng cách đồng bộ hóa với các máy chủ NTP đáng tin cậy, mặc dù Chrony thường cung cấp hiệu suất tốt hơn trên các hệ thống có kết nối mạng không liên tục hoặc độ trôi đồng hồ thay đổi.
Hỏi: NTP có sử dụng đồng hồ nguyên tử không? Đáp: Hầu hết máy tính không bao giờ giao tiếp trực tiếp với đồng hồ nguyên tử. Thay vào đó, chúng đồng bộ hóa với các máy chủ NTP mà cuối cùng truy xuất thời gian của chúng từ các đồng hồ tham chiếu có độ chính xác cao, chẳng hạn như đồng hồ nguyên tử hoặc đồng hồ được điều chỉnh bởi GPS. Hệ thống phân cấp này cho phép thời gian chính xác được phân phối hiệu quả qua Internet.
Hỏi: Sự khác biệt giữa clock skew và clock drift là gì? Đáp: Clock skew là sự khác biệt giữa các chỉ số hiện tại của hai đồng hồ tại một thời điểm cụ thể. Clock drift mô tả tốc độ đồng hồ tăng hoặc giảm thời gian vì bộ dao động phần cứng của nó không hoàn toàn chính xác. Drift khiến skew tăng lên theo thời gian nếu đồng hồ không được đồng bộ hóa định kỳ.
Hỏi: Tại sao NTP sử dụng bốn dấu thời gian thay vì một? Đáp: Một dấu thời gian duy nhất không thể phân biệt giữa thời gian hiện tại và độ trễ mạng cần thiết để truyền tải nó. Bằng cách trao đổi bốn dấu thời gian, NTP ước lượng cả độ trễ truyền thông và độ lệch đồng hồ, cho phép đồng bộ hóa chính xác hơn nhiều.
Hỏi: Bốn dấu thời gian NTP là gì? Đáp: Bốn dấu thời gian là:
- T1: Client gửi yêu cầu.
- T2: Máy chủ nhận yêu cầu.
- T3: Máy chủ gửi phản hồi.
- T4: Client nhận phản hồi. Các dấu thời gian này cho phép client tính toán độ trễ mạng và độ lệch đồng hồ.
Hỏi: Tại sao NTP không thay đổi đồng hồ hệ thống ngay lập tức? Đáp: Đột ngột đưa đồng hồ hệ thống về phía trước hoặc phía sau có thể làm gián đoạn các ứng dụng, cơ sở dữ liệu, tác vụ đã lên lịch và tệp log. Thay vào đó, NTP thường điều chỉnh trôi (slew) đồng hồ bằng cách thay đổi tốc độ của nó một chút cho đến khi khớp với thời gian chính xác. Các lỗi lớn vẫn có thể yêu cầu đồng hồ phải được bước nhảy (step).
Hỏi: Tại sao NTP truy vấn nhiều máy chủ thời gian? Đáp: Độ trễ mạng, lỗi phần cứng và cấu hình máy chủ không chính xác có thể tạo ra các phép đo thời gian không chính xác. NTP so sánh phản hồi từ nhiều máy chủ, lọc ra các kết quả không đáng tin cậy và chọn nguồn thời gian đáng tin cậy nhất để cải thiện độ chính xác và khả năng phục hồi.
Hỏi: Máy chủ Stratum là gì? Đáp: Stratum chỉ khoảng cách của máy chủ từ một đồng hồ tham chiếu có thẩm quyền:
- Stratum 0: Đồng hồ tham chiếu như đồng hồ nguyên tử hoặc bộ thu GPS (không thể truy cập trực tiếp qua mạng).
- Stratum 1: Máy chủ được kết nối trực tiếp với đồng hồ tham chiếu Stratum 0.
- Stratum 2: Máy chủ được đồng bộ hóa với Stratum 1.
- Stratum 3 và thấp hơn: Máy chủ được đồng bộ hóa với các máy chủ stratum cao hơn. Stratum thấp hơn thường cho thấy ít bước nhảy đồng bộ hóa hơn, nhưng nó không tự động đảm bảo độ chính xác tốt hơn. Điều kiện mạng và chất lượng máy chủ cũng đóng vai trò quan trọng.
Hỏi: Sự khác biệt giữa NTP và PTP là gì? Đáp: NTP được thiết kế để đồng bộ hóa thời gian đa năng qua mạng IP và phù hợp với hầu hết các máy chủ, máy tính để bàn và thiết bị mạng. Precision Time Protocol (PTP) được thiết kế cho các môi trường yêu cầu độ chính xác cao hơn nhiều, thường trong phạm vi micro giây hoặc nano giây, chẳng hạn như viễn thông, tự động hóa công nghiệp, nghiên cứu khoa học và giao dịch tần số cao. PTP thường yêu cầu đánh dấu thời gian bằng phần cứng và hỗ trợ mạng chuyên dụng.
Hỏi: Điều gì xảy ra nếu NTP ngừng hoạt động? Đáp: Nếu NTP không khả dụng, đồng hồ hệ thống tiếp tục chạy bằng bộ dao động phần cứng cục bộ của nó. Vì không có bộ dao động nào hoàn toàn chính xác, đồng hồ dần dần trôi khỏi thời gian chính xác. Theo thời gian, điều này có thể dẫn đến:
- Lỗi xác thực (ví dụ: Kerberos)
- Lỗi xác thực chứng chỉ HTTPS
- Dấu thời gian không chính xác trong tệp log
- Bỏ lỡ các tác vụ đã lên lịch
- Vấn đề tương quan sự kiện trên nhiều máy chủ
- Dữ liệu không nhất quán trong các hệ thống phân tán Thời gian đồng bộ hóa không khả dụng càng lâu, lỗi đồng hồ thường càng lớn.
Hỏi: NTP có tính đến độ trễ mạng không? Đáp: Có. Ước lượng độ trễ mạng là một trong những chức năng chính của NTP. Thay vì tin tưởng một dấu thời gian duy nhất, NTP trao đổi bốn dấu thời gian giữa client và máy chủ. Các dấu thời gian này cho phép client ước lượng cả độ trễ mạng khứ hồi và sự khác biệt giữa đồng hồ của nó và đồng hồ của máy chủ. Vì độ trễ mạng thay đổi liên tục, NTP thực hiện quá trình này nhiều lần và liên tục tinh chỉnh ước lượng của nó thay vì giả định độ trễ là không đổi.
Hỏi: NTP sử dụng UDP hay TCP? Đáp: NTP sử dụng User Datagram Protocol (UDP) thay vì TCP. UDP phù hợp cho đồng bộ hóa thời gian vì nó có chi phí thấp hơn và tránh việc truyền lại có thể gây ra độ trễ bổ sung và không thể đoán trước. Vì NTP định kỳ trao đổi các gói tin nhỏ, mất gói tin thỉnh thoảng có ít tác động vì chu kỳ đồng bộ hóa tiếp theo sẽ nhanh chóng cập nhật đồng hồ.
Hỏi: NTP sử dụng cổng mạng nào? Đáp: NTP sử dụng UDP port 123 cho cả giao tiếp client và máy chủ. Khi cấu hình tường lửa hoặc chính sách bảo mật mạng, UDP port 123 phải được cho phép giữa các client NTP và máy chủ thời gian của chúng. Chặn cổng này ngăn các hệ thống đồng bộ hóa đồng hồ của chúng.
Hỏi: Sự khác biệt giữa Chrony và ntpd là gì?
Đáp: Cả Chrony và ntpd đều triển khai Network Time Protocol, nhưng chúng được tối ưu hóa cho các môi trường khác nhau.
Chrony thường cung cấp:
- Đồng bộ hóa nhanh hơn sau khi khởi động
- Hiệu suất tốt hơn trên máy tính xách tay và máy ảo
- Xử lý cải thiện các kết nối mạng không liên tục
- Bù trừ tốt hơn cho các hệ thống có độ trôi đồng hồ không ổn định
ntpdlà daemon NTP truyền thống đã được sử dụng trên các hệ thống Unix và Linux trong nhiều thập kỷ. Mặc dù nó vẫn được hỗ trợ rộng rãi, nhiều bản phân phối Linux hiện đại sử dụng Chrony làm dịch vụ đồng bộ hóa thời gian mặc định vì hiệu suất được cải thiện trong các điều kiện thực tế.
Hỏi: Tại sao GPS được sử dụng cho NTP? Đáp: Vệ tinh GPS liên tục phát sóng thông tin thời gian có độ chính xác cao bắt nguồn từ đồng hồ nguyên tử trên tàu. Một bộ thu GPS được kết nối với máy chủ NTP có thể sử dụng các tín hiệu này như một đồng hồ tham chiếu có độ chính xác cao. Điều này cho phép máy chủ hoạt động như một máy chủ thời gian Stratum 1 và phân phối thời gian chính xác đến các hệ thống khác trên mạng. Mặc dù nhiều người liên kết GPS với định vị, phân phối thời gian chính xác là một trong những chức năng chính của nó.
Hỏi: Leap Second là gì? Đáp: Leap second là một điều chỉnh một giây thỉnh thoảng được thêm vào Giờ Phối hợp Quốc tế (UTC) để giữ cho nó phù hợp với vòng quay hơi không đều của Trái đất. Vì vòng quay của Trái đất không hoàn toàn không đổi, UTC thỉnh thoảng yêu cầu điều chỉnh để duy trì đồng bộ với thời gian thiên văn. NTP bao gồm các cơ chế để thông báo cho client về một leap second sắp tới để chúng có thể xử lý điều chỉnh một cách chính xác. Một số tổ chức cũng sử dụng các kỹ thuật như leap smearing, kỹ thuật này dần dần trải đều điều chỉnh trong một khoảng thời gian dài hơn để tránh các bước nhảy một giây đột ngột có thể làm gián đoạn các ứng dụng phân tán.
Kết luận
Một trong những bài học lớn nhất từ việc nghiên cứu các hệ thống phân tán là thời gian khó một cách đáng ngạc nhiên.
NTP thành công không phải vì nó có quyền truy cập vào đồng hồ nguyên tử, mà vì nó cẩn thận ước lượng sự không chắc chắn, lọc các phép đo không đáng tin cậy và liên tục hiệu chỉnh cho các khiếm khuyết phần cứng.
Sự kết hợp đó cho phép hàng triệu máy tính duy trì đồng hồ chính xác đáng kể bất chấp mạng không đáng tin cậy và phần cứng không hoàn hảo.
Tài nguyên:




