NTP Anycast

NTP Anycast


被一個學生提問關於NTP Anycast 的問題, 而什麼是Anycast? 這對一般人是比較陌生的詞語, 那就藉此探討一下.

在課堂上常提一個字 “Traffic” , 網絡的packet 交流的確就像物流的概念, 而運送方法大多數是Unicast, 但其實還有很多不同的方法, 那先來了解以下幾種不同的方法.

Unicast (單播)
  • 以單對一傳送.
  • 如下圖source 172.16.0.1 傳送至destination 10.30.0.1, 正如你寄信時由寄件地址傳送至寄件地址.
  • 如對方收到 (packet), 便會根據source  作寄件地址寄回去.



Multicast (多播)
  • 以群組及廣播形式傳送.
  • 它的形式就好像你加入 Whatsapp group, 有加入的才能收到訊息. 
  • 如以圖加入了 233.0.9.3 multicast group 才可以收到訊息.



Broadcast (廣播)
  • 以網域式傳送.
  • 就如某選區的選民才能收到選舉的訊息, 如下圖 10.0.0.0/8 的網域都會收到息訊.
  • 它亦像大氣廣播一樣, 在同一頻道的都可以收到訊息.


Anycast (任播)
  • 單對單分流(load-balancing)傳送.
  • 多個終端共用同一個IP 地址,任何一端收到都會給予回應.
  • 根據IGPInterior Gateway Protocols而選擇最近的終端.
  • 這就像你打去捐款熱線, 同一個號碼但有多個接線生為你服務.


Anycast 的應用
  • Anycast 一般會應用於以下幾個範籌
  • Domain Name System (DNS): 利用anycast 提供redundancy load balancing.
  • IPv6 Transition: IPv4 to IPv6 轉換, 令兩者可以兼容(compatibility).
  • Multicast Routing: Multicast network 需選出RP(rendezvous point), 其中則利用Anycast RP 的技術令同一個網絡中可以有多個RP並存.


Anycast VS Load Balancer
Anycast Load Balancer 很類似, 它們都是摸擬一個virtual ip address, 當收到service request時進分流, 避免single-point-of-failure. 同時保安(Security), 避安單一終端機被攻擊而引起service downtime. 它們最大的分別在於OSI協議層(protocol layer), Anycast是於Layer 3層面上進行分流, Load Balancer則於Layer 3 Layer 7層進行分流. 除此之外, Load Balancer 更有對終端機的監控 (monitor) 和多種分流方法.

關於NTP Anycast 的解決方法
學生的公司希望某伺服器可於NTP上避免single-point-of-failure, 但由於多個限制而在網上找尋解決方法. 
  1. 一般伺服器可以輸入多個NTP server 的 IP address, 但其伺服器為比較舊的Linux, 只能輸入一個IP address. 
  2. 正使用Cisco Router為NTP Server, 其位於remote site, router之間則用MethroEthernet Link OSPF 串聯. 不屬於同一subnet, 而不能使用boardcast.
  3. 沒有multicast routing, 故用不了multicast IP address. 
  4. 沒有Load Balancer
基於上述限制, 從而嘗試尋求anycast 來解決這問題.

Cisco 中沒有所謂的NTP Anycast, 而市面上則有NTP anycast appliance. 那這解決方法便會落空? 非也. 其實只要我們動動腦筋便可以利用簡單的技巧解決這個問題, 以下再為大家稍作解說.

偽 NTP Anycast Solution
1. 首先我們先利用GNS3 創立一個如以下的topology.
2. 利用OSPFR1, R2 R3串聯在一起.


3. 整個解決方案的重點在於R2R3都同時建立Loopback0 1.1.1.1/32

R2 Config:
R3 Config:

4. R1檢查一下是否收到1.1.1.1/32 route

5. 由於測試的topology 兩邊的cost是一樣, 所以你可以看到兩條route 同時出現在routing table, 並與round-robin (循環制) 的形式傳送. 真實的情況下則有機會cost不同而只顯示cost最低的一條, 這時我們則最好用 “show ip ospf route” 去檢查是否收齊所有route.

6. 最後便是配置好ntp server 1.1.1.1,  只要有任何一隻router 尚存還是正常可以回應NTP synchronization.



後記
其實很多網絡的產品只需要了解它背後的原理, 再動動腦筋便可以做到我們想要的效果. 當然那些appliance 是效能高及功能多, 但有時候能做到我們要求便可以, 所以多了解networking的運作原理就可以應付好多不同需要.  如有網絡上的難題,   歡迎留意提問.


留言