Giao thức đồng bộ thời gian mạng – Network Time Protocol (NTP) là một giao thức để đồng bộ đồng hồ của các hệ thống máy tính thông qua mạng dữ liệu chuyển mạch gói với độ trễ biến đổi. Giao thức này được thiết kế để tránh ảnh hưởng của độ trễ biến đổi bằng cách sử dụng bộ đệm jitter…
I. Giới thiệu
Giao thức đồng bộ thời gian mạng – Network Time Protocol (NTP) là một giao thức để đồng bộ đồng hồ của các hệ thống máy tính thông qua mạng dữ liệu chuyển mạch gói với độ trễ biến đổi. Giao thức này được thiết kế để tránh ảnh hưởng của độ trễ biến đổi bằng cách sử dụng bộ đệm jitter. NTP cũng là tên gọi của phần mềm được triển khai trong dự án Dịch vụ NTP Công cộng (NTP Public Services Project). NTP là một trong những giao thức Internet lâu đời nhất vẫn còn được sử dụng (từ trước năm 1985). NTP được thiết kế đầu tiên bởi Dave Mills tại trường đại học Delaware, hiện ông vẫn còn quản lý nó cùng với một nhóm tình nguyện.
Bạn đang xem: Ntp là gì
Chi tiết hoạt động của NTP được quy định trong các RFC 778, RFC 891, RFC 956, RC 958 (thay thế bởi 1305), và RFC 1305. Chuẩn đang được triển khai là phiên bản 4 (NTPv4 ); tuy nhiên, vào năm 2005, chỉ có phiên bản 3 và các phiên bản cũ hơn được quy định trong các RFCs. Tổ chức IETF NTP Working Group đã chuẩn hóa hoạt động của cộng đồng NTP từ khi có RFC 1305.
NTP được phát triển để truyền tải thông tin chấm công từ các máy chủ thời gian chính xác đến các máy chủ thời gian khác thông qua Internet. Ngoài ra, NTP thực hiện các cơ chế để kiểm tra chéo đồng hồ và giảm thiểu lỗi do lỗi thiết bị hoặc lan truyền. NTP được phát triển để cung cấp phương pháp đồng bộ hóa đồng hồ thời gian của hệ thống máy tính qua mạng dựa trên gói, do đó, các hàm được thiết kế để giảm thiểu ảnh hưởng của jitter bằng cách cung cấp bộ đệm jitter. NTP sử dụng một phiên bản tinh chỉnh của thuật toán Marzullo được gọi là Thuật toán giao nhau được sử dụng để chọn các nguồn để ước tính thời gian chính xác từ một số nguồn thời gian gây ồn. NTP chỉ cung cấp Giờ quốc tế (UTC), nó không cung cấp thông tin về giờ ánh sáng ngày hoặc múi giờ.
II. Đặc điểm NTPv4
NTP có thể hoạt động ở chế độ phát sóng hoặc nó có thể hoạt động ở chế độ ngang hàng. Trong ngang hàng, một liên kết được xây dựng giữa các đồng nghiệp và liên kết này có thể là một trong năm loại trên máy chủ:
Symmetric Active – tin nhắn được gửi bất cứ tầng nào hoặc khả năng tiếp cận của máy ngang hàng, máy chủ sẵn sàng đồng bộ hóa và được đồng bộ hóa. Dự định sử dụng bởi các máy chủ thời gian hoạt động gần các nút cuối (tầng cao nhất).Đối xứng thụ động – tin nhắn không được gửi, tuy nhiên nếu chúng được nhận từ Symmetric Active thì một liên kết được hình thành với điều kiện là ngang hàng có thể truy cập và tầng của nó bằng hoặc thấp hơn. Để sử dụng bởi các máy chủ thời gian hoạt động gần các nút gốc (tầng thấp nhất).Máy khách – tin nhắn được gửi bất cứ tầng nào hoặc khả năng tiếp cận của bạn bè, máy chủ sẵn sàng được đồng bộ hóa.Máy chủ – máy chủ trả lời tin nhắn của khách hàng và sau đó đưa ra liên kết. Máy chủ sẵn sàng đồng bộ hóa với một máy ngang hang.Phát sóng – tin nhắn được gửi bất cứ tầng nào hoặc khả năng tiếp cận của máy trạm xung quanh, máy chủ sẵn sàng đồng bộ hóa với tất cả nhưng KHÔNG được đồng bộ hóa. Khi hoạt động trên mạng LAN tốc độ cao với nhiều máy trạm và không yêu cầu độ chính xác cao nhất.
RFC 5905 Mô tả NTP phiên bản 4 đã được viết để hỗ trợ IPv6. NTPv4 cải thiện trên NTPv3 và sửa một số lỗi nhất định. Các định nghĩa dấu thời gian NTP đã được mở rộng để khuyến khích sử dụng kiểu dữ liệu kép nổi. Điều này dẫn đến độ phân giải thời gian tốt hơn một nano giây và độ phân giải tần số nhỏ hơn một nano giây mỗi giây. Ngoài ra còn có một thuật toán kỷ luật đồng hồ mới phản ứng tốt hơn với biến động tần số phần cứng đồng hồ hệ thống. Khoảng thời gian thăm dò lên tới 1024 giây, là mức tối đa với NTPv3. Với NTPv4, máy chủ và máy khách chính xác trong vòng vài chục mili giây với khoảng thời gian thăm dò lên đến 36 giờ.
Xác thực khóa đối xứng của NTPv3 được NTPv4 sử dụng nhưng Lược đồ xác thực khóa công khai Autokey đã được thêm vào NTPv4 và được mô tả trong. RFC 5906.
NTPv4 sử dụng các liên kết tương tự như NTPv3 với sự khác biệt là liên kết Broadcast được phân chia giữa Máy chủ phát sóng (chế độ 5) và Máy khách phát sóng (chế độ 6). Có hai hiệp hội đặc biệt, Manycast Client và Manycast Server, cung cấp chức năng khám phá máy chủ động. Máy khách manycast liên tục gửi các gói máy khách (chế độ 3) đến một địa chỉ nhóm quảng bá hoặc phát đa hướng IPv4 hoặc IPv6. Nhiều máy chủ trong phạm vi của trường thời gian tồn tại (TTL) lắng nghe các gói có địa chỉ đó. Nếu một máy chủ phù hợp để đồng bộ hóa, nó sẽ trả về gói máy chủ (chế độ 4) thông thường bằng cách sử dụng địa chỉ unicast của máy khách. Khi nhận được gói này, máy khách sẽ thiết lập liên kết máy trạm xung quanh (chế độ 3).
Quy trình điều chỉnh đồng hồ, chạy một lần mỗi giây để bù thời gian tính toán và duy trì tần số không đổi. Trung bình RMS của chênh lệch bù thời gian trong quá khứ biểu thị lỗi hoặc jitter đồng hồ hệ thống. Trung bình RMS của chênh lệch bù tần số trong quá khứ biểu thị độ ổn định tần số dao động hoặc tần số di chuyển.
Hiện tại có ba định dạng thời gian NTP, định dạng ngày 128 bit, định dạng dấu thời gian 64 bit gốc và định dạng ngắn 32 bit. Định dạng ngày 128 bit mới được sử dụng khi có đủ dung lượng lưu trữ và kích thước từ. Nó bao gồm trường giây được ký 64 bit kéo dài 584 tỷ năm và trường phân số 64 bit có độ phân giải 0,05 giây (tức là 0,5e-18). Để thuận tiện trong việc ánh xạ giữa các định dạng, trường giây được chia thành trường Số kỷ nguyên 32 bit và trường Offset kỷ nguyên 32 bit.
Tiêu đề (Header) NTPv4
Tiêu đề NTPv4 có thêm một vài trường so với NTPv3. Tiêu đề sửa đổi như sau:
Leap Indicator (LI) – cảnh báo về sự thay đổi bước nhảy vọt thứ hai sắp xảy ra:
00 – không cảnh báo
01 – phút cuối có 61 giây
10 – phút cuối có 59 giây
11 – đồng hồ không được đồng bộ hóa
Số phiên bản (VN) – Số phiên bản NTP, trong trường hợp này là 010 (4).
Chế độ – chế độ mà hiệp hội này đang sử dụng:
0 – Dành riêng
1 – Hoạt động đối xứng
2 – Thụ động đối xứng
3 – Khách hàng
4 – Máy chủ
5 – Phát sóng
6 – Dành riêng cho thông báo điều khiển NTP
7 – Dành riêng cho sử dụng cá nhân
Địa tầng – Cấp tầng của đồng hồ địa phương:
0 – Không được chỉ định
1 – Tài liệu tham khảo chính như đồng hồ radio
2-15 – Tài liệu tham khảo thứ cấp qua NTP
16 – Không đồng bộ
17 – 255 – Dành riêng
Khoảng thời gian thăm dò – Khoảng thời gian tối đa giữa các tin nhắn tính bằng giây với sức mạnh của hai (log2).
Độ chính xác – độ chính xác của đồng hồ cục bộ tính bằng giây với sức mạnh của hai (log2).
Độ trễ gốc – tổng độ trễ làm tròn cho nguồn tham chiếu chính, tính bằng giây bằng định dạng ngắn NTP.
Phân tán gốc – lỗi tối đa liên quan đến nguồn tham chiếu chính, tính bằng giây tính bằng giây sử dụng định dạng ngắn NTP.
Mã định danh đồng hồ tham chiếu – Được sử dụng chủ yếu để phát hiện và tránh các vòng lặp đồng bộ hóa. Đối với đồng hồ tầng 0, mã ASCII gồm bốn ký tự được sử dụng gọi là Mã hôn được sử dụng để gỡ lỗi. Các gói chứa các mã này được gọi là các gói KoD (Kiss ‘o Death), các mã như sau:
STT | Mã | Ý nghĩa |
1 | ACST | Hiệp hội thuộc về một máy chủ unicast |
2 | AUTH | Xác thực máy chủ không thành công |
3 | BCST | Hiệp hội thuộc về một máy chủ phát sóng |
4 | CRYP | Xác thực hoặc nhận dạng mật mã không thành công |
5 | DENY | Truy cập bị từ chối bởi máy chủ từ xa |
6 | DROP | Mất ngang hàng trong chế độ đối xứng |
7 | RSTR | Truy cập bị từ chối do chính sách địa phương |
8 | INIT | Hiệp hội chưa được đồng bộ hóa lần đầu tiên |
9 | MCST | Hiệp hội thuộc về một máy chủ được phát hiện động |
10 | RATE | Tỷ lệ vượt quá. Máy chủ đã tạm thời từ chối truy cập vì máy khách vượt quá ngưỡng tỷ lệ. Xem thêm: Giấy Phép Xây Dựng Tiếng Anh Là Gì, Nghĩa Của Từ Giấy Phép Xây Dựng |
11 | RMOT | Thay đổi liên kết từ một máy chủ từ xa đang chạy ntpdc |
12 | STEP | Đã xảy ra thay đổi bước trong thời gian hệ thống, nhưng hiệp hội chưa được đồng bộ hóa |
13 | Xxxx | Mã do người dùng xác định có thể được sử dụng bằng cách đặt ký tự X ở đầu. |
Đối với đồng hồ tầng 1, một trong các bộ mã ASCII bốn ký tự được sử dụng. Các mã tiêu chuẩn được duy trì bởi IANA. Dưới đây là các mã được duy trì IANA:
STT | Mã ID | Nguồn đồng hồ |
1 | GOES | Vệ tinh môi trường quỹ đạo không đồng bộ |
2 | GPS | Hệ thống định vị toàn cầu |
3 | GAL | Hệ thống định vị Galileo |
4 | PPS | Chung xung mỗi giây |
5 | IRIG | Nhóm thiết bị đo phạm vi |
6 | WWVB WWVB | Đài phát thanh Ft. Collins, CO 60 kHz |
7 | DCF LF DCF77 | Đài phát thanh Mainflingen, DE 77,5 kHz |
8 | HBG LF | Radio HBG Prangins, HB 75 kHz |
9 | MSF MSF | Đài phát thanh Anthorn, Vương quốc Anh 60 kHz |
10 | JJY LF JJY | Đài phát thanh Fukushima, JP 40 kHz, Saga, JP 60 kHz |
11 | LORC MF | Đài phát thanh LORAN C, 100 kHz |
12 | TDF MF | Đài phát thanh Allouis, FR 162 kHz |
13 | CHU HF | Đài phát thanh CHU Ottawa, Ontario |
14 | WWV HF | Đài phát thanh WWV Ft. Collins, CO |
Đối với tầng 2 hoặc cao hơn, địa chỉ IP được nhập vào trường này cho địa chỉ IPv4 hoặc bốn octet đầu tiên của hàm băm MD5 của địa chỉ IPv6.
NTPv4 có Giao thức trực tuyến trao đổi giá trị thời gian giữa các máy chủ, máy ngang hàng và máy khách. Nó có khả năng chống lại các gói bị mất hoặc trùng lặp và toàn vẹn dữ liệu được cung cấp bởi tổng kiểm tra IP và UDP. Giao thức sử dụng dấu thời gian, là dữ liệu chính xác được trích xuất từ các tiêu đề gói hoặc được đánh từ đồng hồ hệ thống khi đến hoặc đi của gói.
NTP ban đầu được mô tả trong RFC 958 trước khi được thay thế bằng NTP phiên bản 2 trong RFC 1119. RFC 5905 – Tài liệu phiên bản mới nhất NTPv4 thay thế NTPv3 (RFC 1305) cũng như tương thích ngược với nó.
Giao thức thời gian mạng đơn giản (SNTP)
SNTP là một tập hợp con của NTP, nói chung nó khác ở chỗ không cần thiết phải lưu trữ trạng thái trong thời gian dài. SNTP có nhiều điểm tương đồng với UDP / TIME (RFC 868). Những thay đổi chính từ NTPv3 là chỗ ở cho địa chỉ IPv6 và OSI trong tiêu đề và điều này được thực hiện theo cách tương tự như NTPv4. Các định dạng gói NTP và SNTP là như nhau và các phép toán số học để tính thời gian của máy khách, bù xung nhịp và độ trễ vòng là như nhau. Giống như các máy chủ NTP hoạt động ở chế độ không đối xứng, máy chủ SNTP không trạng thái và có thể hỗ trợ số lượng lớn máy khách; tuy nhiên, không giống như hầu hết các máy khách NTP, máy khách SNTP thường chỉ hoạt động với một máy chủ duy nhất tại một thời điểm. Các máy khách SNTP nên hoạt động ở rìa của cây đồng bộ hóa và các máy chủ SNTP được sử dụng làm tầng 1 nằm bên cạnh nguồn đồng hồ. SNTP sử dụng cổng UDP 123 cho đích, tuy nhiên không giống như NTP, bất kỳ cổng UDP nào cũng có thể được sử dụng cho cổng nguồn.
Nguyên tắc hoạt động và những kỹ thuật sử dụng trong NTP
NTP sử dụng kiến trúc phân cấp, phân lớp cho các cấp nguồn đồng bộ, mỗi một cấp trong phân cấp này được gọi là một “stratum’ và được gán một số của cấp bắt đầu từ 0 là cấp cao nhất. Cấp stratum chỉ ra nó đã qua bao nhiêu trung gian để đến được cấp tham chiếu và cấp stratum cũng giúp tránh tham chiếu vòng trong phân cấp. Chú ý rằng cấp stratum không có ý nghĩa chỉ chất lượng hay độ ổn định, dễ dàng tim thấy một nguồn đồng bộ “stratum 3” có chất lượng tốt hơn một nguồn “stratum 2” khác. Các cấp độ stratum được liệt kê dưới đây:
Stratum 0: Bao gồm những thiết bị như đồng hồ nguyên tử (atomic clock), đồng hồ GPS hay các đồng hồ vô tuyến khác. Thiết bị Stratum-0 thường không được kết nối trực tiếp vào mạng mà được kết nối với máy tính (ví dụ thông qua cổng RS-232 sử dụng tín hiệu xung). Ảnh dưới đây là đồng hồ chủ dự phòng tại Schriever AFB (Colorado) là một nguồn Stratum-0 cho NTP.
Stratum 1: Đây là các máy tính kết nối với thiết bị Stratum 0. Đây là nguồn đồng hồ tham chiếu cho các server Stratum 2. Các máy tính này còn được gọi là time server. Các server Stratum 1 (với NTPv3 hay trước đó) có thể không hoạt động với độ chính xác của cấp Stratum 1
Stratum 2: Là các máy tính gửi các yêu cầu NTP đến cho server Stratum 1. Thông thường máy tính Stratum 2 sẽ tham chiếu từ nhiều server Stratum 1 và sử dụng thuật toán NTP để thu thập thông tin chính xác nhất, và bỏ tham chiếu đến các server Stratum 1 hoạt động không chính xác. Các máy tính Stratum 2 sẽ liên lạc với các máy tính Stratum 2 khác để có được thời gian chính xác và ổn định hơn trong nhóm. Máy tính Stratum 2 theo phân cấp lại là nguồn tham chiếu cho các yêu cầu từ Stratum 3.
Stratum 3: Các máy tính mày cũng thực hiện các chức năng như Stratum 2, và tương tự cũng là nguồn tham chiếu cho các cấp thấp hơn, có thể có tối đa 16 cấp. Tùy vào phiên bản, NTP có thể hỗ trợ đến 256 Stratum.
Phương thức hoạt động:
NTP client gửi một gói tin, trong đó chứa một thẻ thời gian tới cho NTP server.
NTP server nhận được gói tin, gửi trả lại NTP client một gói tin khác, có thẻ thời gian là thời điểm nó gửi gói tin đó đi.
NTP client nhận được gói tin đó, tính toán độ trễ, dựa và thẻ thời gian mà nó nhận được cùng với độ trễ đường truyền, NTP client sẽ set lại thời gian của nó.
Cách đồng bộ thời gian giữa client và server: Client có thể đồng bộ thời gian với server, có 2 vấn đề cần giải quyết là: Độ trễ của mạng ( thời gian gửi và nhận gói tin từ client lên server) và tính độ trễ của client với server.
NTP giải quyết vấn đề trên bằng cách tính time offset (thời gian lệch giữa client và server) và round-trip delay (thời gian gửi nhận gói tin qua network).
Các câu lệnh NTP
Câu lệnh date được dùng để truy cập và thiết lập đồng hồ hệ thống:
$ date
Sat Dec 30 18:46:53 ICT 2017
Thiết lập định dạng thời gian cho câu lệnh date với tùy chọn “+”:
$ date ‘+%D %T’
Ta cũng có thể hiển thị các ngày khác với ngày hiện thời:
$ date -d ‘yesterday’
Fri Dec 29 18:51:08 ICT 2017
hwclock là câu lệnh dùng để kiểm sóat đồng hồ phần cứng do BIOS quản lý. Khi dùng date để thay đổi giờ thì đồng hồ phần cứng sẽ không bị ảnh hưởng, do đó tại lần khởi động máy kế tiếp, hệ thống sẽ lấy thông tin thời gian từ đồng hồ phần cứng. Để dùng câu lệnh hwclock, ta phải dùng account root.
$ hwclock
Sat 30 Dec 2017 07:21:57 PM ICT .962794 seconds
Đồng hồ phần cứng có thể được thiết lập theo thời gian của vùng hay theo UTC. Khi hệ thống khởi động, đồng hồ hệ thống sẽ lấy giá trị từ đồng hồ phần cứng bằng một trong hai câu lệnh sau:
hwclock –hctosys –utc # BIOS clock is UTC
hwclock –hctosys –localtime # BIOS clock is local time
Thiết lập giờ hiện tại và giờ hệ thống (BIOS):
hwclock –-hctosys // set đồng hồ hệ thống (BIOS) cho đồng hồ hiện tại
hwclock –systohc // ngược với hctosys
Tùy theo phiên bản Linux, ta cần thay đổi một trong những file sau để thiết lập thời gian, tìm ra timezone của hệ thống:
/etc/sysconfig/clock # Redhat, newer SuSE – HWCLOCK value
/etc/rc.config # SuSE – GMT value
/etc/defaults/rcS # Debian – UTC value
III. Ứng dụng
Hệ điều hành riêng của NTP là UNIX. Tuy nhiên, ngày nay, NTP chạy với nhiều hệ thống giống như UNIX. NTP v4 cũng đã được chuyển sang Windows và có thể được sử dụng với Windows NT, Windows 2000 và các phiên bản Windows mới hơn cho đến Windows Vista và Windows 7.
Xem thêm: Dđạo Đức Là Gì – Chuẩn Mực Đạo Đức Là Gì
Ngày nay, nhiều máy trạm được vận chuyển với máy khách NTP được cài đặt sẵn, do đó Meinberg cũng cung cấp nhiều máy chủ thời gian NTP cắm và chạy khác nhau được gọi là máy chủ thời gian LANTIME NTP với các tùy chọn đồng hồ tham chiếu khác nhau, ví dụ: tích hợp máy thu GPS hoặc DCF77 PZF. Các thiết bị cũng có giao diện mạng và nguồn điện đi kèm và được lắp ráp trong hộp độc lập và sẵn sàng hoạt động.
Tài liệu tham khảoNTP Homepage – The original NTP distribution as source code and a lot of information and additional links can be found on the NTP home page http://www.ntp.org.https://en.wikipedia.org/wiki/Network_Time_Protocol
Nguyễn Thị Thu Trang
Chuyên mục: Hỏi Đáp