TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
TIỂU LUẬN
Hệ thống DNS Anycast tại trung tâm Khu vực 1
Công ty Mạng lưới Viettel
MÔN HỌC: Nguyên lý và Mô thức phát triển Hệ phân tán
MÃ HỌC PHẦN: IT6040
Giảng viên: GS. Nguyễn Thúc Hải
Học viên: Nguyễn Công Trung
Mã học viên: CB120157
Hà Nội 1/2013
LỜI NÓI ĐẦU
Cùng với sự phát triển của khoa học kỹ thuật và công nghệ, việc truyền thông, liên
lạc, tính toán, quản lý ngày nay không chỉ đơn giản tập trung trong máy tính đơn như
trước nữa mà nó đòi hỏi các hệ thống máy tính phải được kết hợp từ một số lượng lớn các
máy tính kết nối với nhau qua 1 mạng tốc độ cao. Chúng thường được gọi là các mạng
máy tính hay còn có tên khác là các Hệ phân tán, nhằm ám chỉ tương phản với Hệ tập
trung trước đây.
Ngày nay, hệ phân tán phát triển rất nhanh và được ứng dụng rộng khắp. Đó có
thể là các dịch vụ thông tin phân tán, các ứng dụng phân tán, cơ sở dữ liệu phân tán như
các hệ thống đặt vé máy bay Mục đich của tiểu luận là hiểu được những nguyên lý cơ
bản nhất của một hệ phân tán nói chung dựa trên việc phân tích một hệ phân tán cụ thể.
Trong tiểu luận này, em tập trung nghiên cứu và phân tích hệ thống DNS Anycast đang sử
dụng tại Trung tâm khu vực 1 – Công ty mạng lưới Viettel.
Do tính chất phức tạp của hệ phân tán, nên trong quá trình tìm hiểu và phân tích
cũng không tránh được những thiếu xót. Cuối cùng em xin chân thành cảm ơn thầy
Nguyễn Thúc Hải đã giúp đỡ em hoàn thành cuốn tiểu luận này.
.
Mục lục
1. Kiến trúc hệ thống 4
2. Tiến trình 6
cho client.
(5) Kết quả mà nameserver nhận được sẽ được lưu và bộ nhớ đệm. Nếu lần kế tiếp có yêu
cầu phân giải domain này thì nó sẽ được trả về cho cilent, nhưng không được đánh dấu là
authoritative answer.
Nameserver không yêu cầu phải trả lời hoàn chỉnh truy vấn (recursive - truy vấn
đệ quy). Các nameserver quan trọng (như root hay TLD nameserver) không thực hiện truy
vấn đệ quy để tránh tình trạng quá tải, vì vậy resolver không thể gửi yêu cầu trực tiếp đến
các nameserver các nameserver này.
1.2 Kiến trúc cân bằng tải của hệ thống DNS Anycast
DNS Anycast là sử dụng các chính sách định tuyến và phân chia địa chỉ IP để xác
định đường đi giữa một “nguồn” với một vài “đích” phục vụ chung một dịch vụ (hay một
nhóm dịch vụ). Trong DNS Anycast, các máy chủ DNS Anycast được đặt cùng một địa
chỉ IP. Chính sách định tuyến động tại lớp 3 sẽ thực hiện việc tính toán và truyền gói tin
từ client đến các máy chủ dns anycast thích hợp nhất.
Hình bên dưới mô tả một ví dụ DNS Anycast: DNS client được cấu hình chỉ định
máy chủ DNS Anycast là 10.10.10.10, DNS Server gần nhất sẽ trả lời truy vấn.
DNS client có thể gửi yêu cầu đến bất kỳ server nào, trong hình trên định tuyến
layer 3 sẽ chuyển gói tin đến router R1. Trong trường hợp server A không thể cung cấp
dịch vụ, gói tin yêu cầu phân giải DNS sẽ tự động được chuyển tới router gần nhất là R2
và R3 để đến server B, và đường route đến server A sẽ được loại bỏ khỏi bảng định tuyến.
2. Tiến trình
Truy vấn phổ biến nhất trong DNS là truy vấn phân giải từ tên sang địa chỉ IP,
ngoài ra còn có thể truy vấn các thông tin khác từ DNS. Một truy vấn DNS được thực
hiện bởi resolver (DNS client).
Máy chủ tên miền sẽ tìm kiếm trong cache dữ liệu về zone mà nó quản lý.
Máy chủ Primary đọc dữ liệu từ local disk, còn máy chủ secondary truy xuất dữ
liệu bằng truy vấn zone transfer.
Máy chủ tên miền lưu trữ vào cache của nó kết qủa truy vấn mà nó nhận được từ
máy chủ tên miền khác (các kết quả truy vấn thành công lẫn truy vấn không thành công)
Các yêu cầu phân giải tên miền thường phát sinh từ một chương trình máy tính,
bộ các thư viện liên kết với các chương trình ứng dụng như telnet, trình duyệt web, trình
ftp cilent,…Ví dụ khi trình duyệt web cần phân giải một tên miền sang IP nó sẽ liên kết
đến các function của thư viện resolver.
Resolver trong hệ thống Unix/Linux:
File cấu hình resolver trong hệ thống unix/linux thường trong /etc/resolv.conf. Nó
có tối thiểu 2 dòng text tương tự như sau:
Resolver trong hệ thống Window:
Trong windows, dịch vụ DNS Client đóng vai trò là resolver. Để xem nội dung của
cache dùng lệnh ipconfig /displayDNS, xóa cache dùng lệnh ipconfig /flushDNS.
Nội dung của file …/etc/hosts không bị ảnh hưởng bởi lệnh ipconfig /flushDNS
trên. Các tham số của cache resolver được đặt trong register của window:
HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services / DNSCache /
Parameters.
Cơ chế hoạt động của Name Server
Name server lưu trữ các thông tin để phân giải tên sang IP và ngược lại. Name server
quản lý một phần nào đó của không gian tên miền, được gọi là các zone. Namserver là
một chương trình thực hiện phân giải các yêu cầu gửi từ các resolver hay từ nameserver
khác. Việc phân loại các nameserver dựa trên cách nó lưu trữ dữ liệu.
Primary namserver/Primary master: là nguồn dữ liệu chính của một zone, là máy
chủ có thẩm quyền của zone (authoritative server). Dữ liệu về zone của nó được lưu trong
CSDL local. Tên gọi Primary master hay Primary nameserver dựa vào version của
chương trình BIND được sử dụng: gọi là primary nameserver khi dùng version 4.x, gọi là
primary master khi dùng version 8 trở lên. Người quản trị tự tạo CSDL cho server này.
Primany nameserver phải được public như là một máy chủ có thẩm quyền của domain
trong SOA RRs, trong khi Primary master không cần phải public. Lưu ý chỉ có một kiểu
server cho mỗi zone.
Master nameserver: là máy chủ có thẩm quyền của một zone. Master server luôn
được public trong NS records. Master nameserver là nguồn dữ liệu của 1 zone cho máy
chủ cấp dưới (slaver / secondary server). Kiểu server này được dùng từ BIND version 8
trở lên.
nameserver khác để có được câu trả lời cho resolver, hoặc nó có thể gửi truy vấn không
đệ quy và lần theo các tham chiếu từ các namserver khác trả về để có câu trả lời cho
resolver. Có một ngoại lệ trong trường hợp nameserver được cấu hình để chuyển tiếp
query đến một forwarder server (xem chi tiết trong phần forwarder server).
Nếu nameserver không tự trả lời cho resolver được, nó sẽ đi hỏi nameserver gần
nhầt, nameserver gần nhất là nameserver có thẩm quyền tương ứng với tên miền được
hỏi. Ví dụ nếu nameserver nhận được yêu cầu phân giải tên miền ftp.mil.gov.vn, đầu tiên
nó sẽ tìm trong dữ liệu local của nó (cả cache) xem có thông tin về tên miền
ftp.mil.gov.vn hay không, nếu không nó sẽ tìm trong dữ liệu local của nó xem có thông
tin về tên miền mil.gov.vn, cứ như vậy nó sẽ tìm gov.vn và .vn. Nếu cuối cùng vẫn không
có kết quả thì nó sẽ đi hỏi root như đã biết.
Nameserver nhận được được yêu cầu phân giải đệ quy luôn gửi query giống như
nó nhận được đến nameserver khác. Ví dụ nó nhận được yêu cầu phân giải ftp.mil.gov.vn
thì sẽ không đi hỏi mil.gov.vn hay gov.vn.
Cơ chế hoạt động của Forwarder server:
Có một kiểu DNS server được gọi là server chuyển tiếp (forwarder server). Ta đã
biết resolver gửi yêu cầu đến namsever và chờ câu trả lời cuối cùng, nếu namesever
không thể tự trả lời nó sẽ thực hiện truy vấn đệ quy, đầu tiên nó sẽ liên lạc root
nameserver, root namserver sẽ trả về địa chỉ IP của một namserver khác, và nó tiếp tục đi
hỏi namsever đó. Cứ như vậy, nameserver gửi rất nhiều gói tin trên mạng internet.
Nếu mạng nội bộ của công ty kết nối internet với đường truyền tốc độ thấp, và
nameserver sẽ ngốn nhiều băng thông của đường truyền này. Chính vì vậy cần phải có
forwarder server.
Forwarder là một máy chủ DNS được sử dụng để chuyển tiếp truy vấn DNS đến
một DNS bên ngoài mạng. Một DNS server trong mạng sẽ chuyển tiếp các truy vấn mà
nó không thể trả lời đến một DNS server khác được chỉ định là forwarder. Bằng cách sử
dụng forwarder, chúng ta có thể kiểm soát việc phân giải các tên miền ngoài mạng.
Giao tiếp giữa local nameserver và forwarder server
Local nameserver gửi yêu cầu đến forwarder server. Tuy nhiên local namserver
đánh dấu các truy vấn đó là truy vấn đệ quy. Forwarder server nhận yêu cầu từ local
notation), nghĩa là nó trong suốt với người sử dụng. Mặt khác, người dùng sẽ muốn chèn
RR vào file zone dưới dạng text, vì vậy nó phải dễ chuyển đổi từ ký hiệu nhị phân sang
định dạng text. Các trường được chuyển đổi sang định dạng text và được phân cách bằng
khoảng trắng (space) hay một tab hay kết hợp các ký tự đó. Một vài chuỗi trong tên miền
được phân cách bằng một dấu chấm (dot).
Gói tin truy vấn DNS
Cơ chế DNS QUERY bao gồm một truy vấn và một hồi đáp. Truy vấn chứa yêu
cầu về một hay nhiều RR từ CSDL của DNS, hồi đáp chứa các thông tin về RR được truy
vấn hoặc một thông báo lỗi. RR trong hồi đáp có thể là kết qủa cuối cùng hay thông tin để
cho client thực hiện một DNS QUERY khác.
Định dạng gói tin DNS QUERY:
DNS sử dụng cùng một định dạng gói tin cho cả query và answer như hình sau:
Định dạng gói tin DNS QUERY
Một gói tin có thể chứa tới 5 thành phần. Mỗi gói tin phải luôn có phần HEADER.
Khái niệm “query” được hiểu theo 2 mặt:
Một là: yêu cầu truy vấn RR trong CSDL của DNS
Hai là: bao gồm câu truy vấn gửi bởi client và câu trả lời cho truy vấn đó gửi bởi
namserver. Client thường dùng một thẻ để đánh dấu cho biết đó là câu truy vấn recursive,
ngược lại namserver thì thường đánh dấu truy vấn là interactive
- Header của gói tin DSN QUERY:
- Phần Question
- Phần Answer, Authority Server và Additional:
- Nén dữ liệu (compression):
Kỹ thuật nén được sử dụng để giảm kích thước của gói tin DNS. Hoạt động dựa
trên nguyên tắc chỉ có một tên và thay thế các tên lặp lại bằng một cờ chỉ định tên đầu
tiên.
Truy vấn nghịch đảo – Inverse query:
Truy vấn nghịch đảo (inverse query) khác với khái niệm truy vấn ngược (reverse
query).Truy vấn nghịch đảo một địa chỉ IP được phân giải sang tên, nhưng quá trình phân
giải tìm kiếm dựa trên record A trong RR, còn truy vấn ngược phân giải dựa trên record
bất kỳ cho các host và các sub-domain thuộc miền đó. Vì vậy dù cho tổ chức đó đặt bất
kỳ tên gì thì cũng sẽ không bị trùng lắp với tên miền khác vì nó tận cùng bằng tân miền
duy nhất của tổ chức đó. Ví dụ một tổ chức quản lý tên miền hic.com có thể đặt tên một
host là puella, và tên miền của host puella là puella.hic.com là một tên miền duy nhất
trên mạng.
Không gian tên miền
CSDL phân tán của DNS được đánh chỉ mục bởi những tên miền, mỗi tên miền
bản chất chỉ là những đường dẫn trong cây domain lớn được gọi là không gian tên miền
(domain name space). Cây DNS có gốc nằm trên cùng, và có các nhánh rẽ, độ sâu của cây
giới hạn 127 cấp
Tên miền – Domain name
Mỗi node trong cây DNS được đánh một nhãn (không gồm dấu chấm) là một chuỗi
tối đa 63 ký tự, riêng node root được đánh nhãn là null (rỗng). Tên miền đầy đủ của một
node trong cây DNS là một chuỗi các nhãn đánh theo đường dẫn từ node đó lên đến root,
với dấu chấm phân cách khi qua mỗi node trên đường đi.
Theo nguyên tắc đó, thì tên miền đầy đủ của một host luôn tận cùng bằng dấu
chấm, ví dụ “www.oreilly.com.”, bởi vì lên đến node root là node cuối cùng, và nhãn của
root là null, tên miền này được gọi là tên miền đầy đủ điều kiện (fully qualified domain
name - FQDN) và có chiều dài tối đa của chuỗi là 255 ký tự không kể dấu chấm.
DNS quy định các node là con của cùng một node cha phải được đánh nhãn khác
nhau, quy định này nhằm đảm bảo mỗi node có một định danh duy nhất trên toàn bộ cây
DNS.
Miền - Domain
Một miền là một nhánh của không gian tên miền. Tên của một miền giống như tên
miền của node cao nhất trong miền, ví dụ hình bên dưới: node cao nhất trong miền có tên
là “purdue.edu”, và ta cũng có thể gọi miền bên dưới là miền “purdue.edu”.
Bất kỳ một tên miền nào trong một nhánh con cũng được xem như là một phần của
miền. Ví dụ trong hình dưới: tên miền pa.ca.us là một phần của miền ca.us và cũng là
một phần của miền us
Tên miền là những chỉ mục trong CSDL DNS, các host là các tên miền trỏ đến
có thể quản lý toàn bộ miền compnay.com trên cùng một máy chủ tên miền, hoặc chúng
ta có thể tạo các máy chủ tên miền độc lập cho một vài subdomain (như trong hình, ta tạo
các máy chủ tên miền cấp dưới cho các subdomain bill.company.com và
head.company.com), còn máy chủ tên miền chính (original nameserver) phục vụ domain
company.com và các subdomain sec, sales và xyz. Hay nói cách khác original nameserver
quản lý zone company.com (phần máu xám trong hình). Như vậy zone là một phần của
không gian tên miền được quản trị bởi một máy chủ tên miền riêng lẻ.
Zone company.com
Các zone lưu dữ liệu của lower-level domain được gọi là zone cấp dưới
(subordinate zone).
Các zone đặc biệt: Ngoài các zone bình thường lưu trữ dữ liệu của domain hay
subdomain, DNS còn bổ xung một số zone đặc biệt gồm:
- Zone stub: là một zone cấp dưới chỉ lưu trữ thông tin về các máy chủ tên miền
quản lý subdomain (chỉ chứa những record NS của zone)
- Zone cache/hint: chứa danh sách các root nameserver (dữ liệu non-authoritative
được đọc vào bộ nhớ khi nameserver khởi động)
5. Đồng bộ hóa
Các máy chủ DNS Anycast đều là máy chủ tên miền đệm (caching DNS). Để hiểu
rõ vấn đề trên trước hết ta tìm hiểu về máy chủ tên miền đệm:
Máy chủ tên miền khi xử lý các yêu cầu tìm kiếm tên miền dưới hình thức đệ quy
(recursive) thường phải chuyển yêu cầu tới một vài máy tính rồi mới nhận được dữ liệu
trả lời. Tuy nhiên khi tìm kiếm thông tin về tên miền theo hình thức đệ quy, máy chủ tên
miền sẽ thu thập được một lượng thông tin về các bản ghi tên miền từ các máy chủ tên
miền khác và lưu trữ trong bộ nhớ để phục vụ trả lời cho các lần truy vấn sau. Việc xử lý
và lưu giữ thông tin như vậy gọi là đệm dữ liệu bản ghi tên miền (Recursive Caching),
các máy chủ thực hiện theo nguyên tắc này được gọi là máy chủ tên miền đệm (Caching
DNS).
Quá trình Recursive Caching dữ liệu như vậy làm tăng tốc độ tìm kiếm tên miền
của máy chủ tên miền khi nhận được các yêu cầu tìm kiếm tên miền tiếp theo. Vào lần
tìm kiếm tiếp theo, do máy chủ đã có dữ liệu của lần tìm kiếm trước nên nó biết được một