NTP協議

一:NTP的工作原理(UDP端口 123)

wKioL1d8d2PSHq8zAAGqV2qEYkI337.png

 

NTP工作原理:

上圖是NTP的基本工作原理,路由器A和路由器B通過網絡連接,它們都有自己獨立的系統時鐘,要實現各自的系統時鐘的自動同步,作如下的假設:

 

—路由器A和B的系統時鐘同步之前,路由器A的時鐘設定爲10:00:00am,路由器B的時鐘設定爲11:00:00am。

—以路由器B爲NTP時間服務器,即路由器A將使自己的時鐘與路由器B的時鐘同步。

—數據包在路由器A和B之間單向傳輸所需要的時間爲1秒。

 

時鐘同步的過程:

系統時鐘同步的工作過程如下:

 

—路由器A發送一個NTP消息包給路由器B,該消息包帶有它離開路由器A時的時間戳,該時間戳爲10:00:00am(T1)。

—當此NTP消息包到達路由器B時,路由器B加上自己的時間戳,該時間戳爲11:00:01am(T2)。

—當此NTP消息包離開路由器B時,路由器B再加上自己的時間戳,該時間戳爲11:00:02am(T3)。

—當路由器A接收到該響應消息包時,加上一個新的時間戳,該時間戳爲10:00:03am(T4)。

 

 

 

 

NTP的工作模式:

按照實現同步所必須的模式組合,有以下幾種常用的模式:

 

服務器 / 客戶模式(server / client)               

對等體模式(symmetric active / symmetric passive)

廣播模式(broadcast server / broadcast client)

組播模式(multicast server / multicast client)

 

關於NTP的層數及時間戳:

層數(取值範圍 1-15):

層數是NTP中一個比較重要的概念,它基本上可以說是代表了一個時鐘的準確度,層數爲1的時鐘準確度最高,從1到15依次遞減.

時間戳:        

Reference Timestamp:本地時鐘最後一次被設定或校準的時間

Originate Timestamp: 同步請求報文離開發送端時的本地時間

Receive Timestamp:同步請求到達被請求端時的本地時間

Transmit Timestamp:應答報文離開應答者時的本地時間

 

時鐘過濾及時鐘選擇:

時鐘過濾:

時鐘過濾是針對本地時鐘的同一個對等體而言,用來從這個給定的對等體選擇最好的時間樣本.

時鐘選擇:

時鐘選擇是針對不同的對等體,比如一個client可以配置多個server,還可以配置多個peer,這樣它分別向各個server和被動對等體發送時鐘同步報文,在接收到應答報文後利用時鐘選擇算法選擇出最好的時鐘進行同步.

 

二:NTP數據報文格式

 

wKiom1d8d6_isi5CAABVaoqn65A611.png

 

NTP的實現模型:

wKioL1d8d8fgGi4UAAAvVRb7Q9I469.png

—在模型中,一臺主機上運行了三個進程,這三個進程共享同一分塊的數據文件,每一個對等體使用數據文件中一個特定的分塊,三個進程通過報文傳送系統互相連接。

 

發送進程:

—由每個對等體中的獨立的計時器控制,收集數據文件中的信息並向它的對等體發送NTP報文;每個NTP報文中包括報文發送時的本地時間戳、上次接收到報文的時間戳和其它確定層次和管理關聯所必須的信息。

接收進程:

—接收NTP報文(也可能包括其它協議的報文)和來自於與主機直接相連的Radio Clocks 的信息。

 

更新過程:

—在接收到NTP報文時或其它時間啓動,它處理來自於每一個對等體的偏移數據,並用選擇算法選擇出最好的對等體。

本地時鐘進程:

—根據由更新過程中產生的偏移數據用一定的機制對本地時鐘的相位和頻率進行調節。


NTP實驗:

下面的部分是轉載的別人的,在此說聲感謝:

 

一、使用windows2003作爲時鐘源

ParametersType -> NTP

ConfigAnnounceFlags -> 5

TimeProvidersNtpServerEnabled -> 1

TimeProvidersNtpClientSpecialPollInterval -> 900

ConfigMaxPosPhaseCorrection -> 172800

ConfigMaxNegPhaseCorrection -> 172800

ConfigLocalClockDispersion -> 0 (Previous 10)

 

Run the commands to restart the time service:

- net stop w32time

- net start w32time

 

二:思科設備作爲客戶端配置

1、配置命令

clock timezone CST 8

ntp server x.x.x.x

ntp source  interface

狀態檢查

show ntp status

show ntp associations detail

注意事項

如果沒有同步,最好先no ntp server 再重新配置ntp server

 

 

三、思科設備作爲源

 

clock timezone CST 8

ntp source Loopback0

ntp authenticate

ntp authentication-key 1234 md5 104D000A0618 7 

ntp trusted-key 1234

ntp master 3

 

四、Linux作爲時間源

如果你的服務器是Linux,請先用如下指令查看本機是否已安裝ntp server
rpm -qa|grep ntp
如無,則安裝上此RPM包。
也可安裝tar包。
配置NTP server
NTP server的主配置文件爲/etc/ntp.conf
現對/etc/ntp.conf的各項進行說明

#設置此服務器同上層服務器做時間同步的IP地址,prefer意味着首選IP地址
server 61.246.176.141 prefer
server 210.59.157.10 prefer
server 202.112.7.150 prefer

server 203.116.5.254  #asia.pool.ntp.org
server 202.162.32.12  #1.asia.pool.ntp.org
server 202.155.248.212 #0.asia.pool.ntp.org
#記錄上次我們的NTP server與上層NTP server連線時所花費的時間
driftfile /etc/ntp/drift
#設置默認策略爲允許任何主機進行時間同步
restrict default ignore
#設置允許訪問此時間服務器的時間服務的IP地址
restrict 127.0.0.1    # 開啓內部環路lo
restrict 192.168.0.2  # 主機本身的 IP 也同時開啓
restrict 211.101.48.56
restrict 192.168.1.0 mask 255.255.255.0 意味着允許192.168.1.0/24子網內主機可同步

restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap #允許任何主機跟此服務器進行時間同步
#指定階層編號爲5,降低其優先度。
fudge 127.127.1.1 stratum 5
#設置ntp日誌的path
statsdir /var/log/ntp/
#設置ntp日誌文件
logfile /var/log/ntp/ntp.log
keys /etc/ntp/keys

NTP server的維護
1、 啓動
service ntpd start或者ntpd –p /var/log/ntpd.pid或手工指定配置文件的帶path的全名
如ntpd –c /etc/ntp/ntp.conf –p /var/log/ntpd.pid
2、 停止
service ntpd stop
3、 ntpq –p  查看本機和上層服務器的時間同步結果
4、 ntptrace  可以用來追蹤某臺時間服務器的時間對應關係
5、 ntpdate IP 客戶端要和NTP server進行時鐘同步。
6、 查看ntp日誌/var/log/ntp/ntp.log
客戶端的配置
LINUX客戶端:
echo “10 5 * * * root /usr/sbin/ntpdate 192.168.5.3;/sbin/hwclock -w”>>/etc/crontab
意爲每天凌晨的5:10同NTP server進行一次時鐘同步,並寫入本機BIOS







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章