Tiểu luận môn Nguyên lý và Mô thức phát triển Hệ phân tán Hệ thống DNS Anycast tại trung tâm Khu vực 1 Công ty Mạng lưới Viettel 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.
Trang 1TRƯỜ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
Trang 2LỜI NÓI ĐẦUCù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ênlạ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ácmá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ạngmá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ậptrung 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íchcũ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ầyNguyễn Thúc Hải đã giúp đỡ em hoàn thành cuốn tiểu luận này
Trang 3
Mục lục
1 Kiến trúc hệ thống 4
1.1 Kiến trúc client – server 4
1.2 Kiến trúc cân bằng tải của hệ thống DNS Anycast 5
2 Tiến trình 6
3, Truyền thông 14
4 Định danh 18
5 Đồng bộ hóa 26
6 Nhất quán và nhân bản 27
6.1 Nhất quán 27
6.2 Nhân bản 27
7 Khả năng chịu lỗi 28
8 An toàn thông tin 31
9 Tổng kết 32
10 Tài liệu tham khảo 32
Trang 41 Kiến trúc hệ thống
Trước hết để mở đầu việc tìm hiểu hệ thống phân, ta tập trung vào phân tích kiếntrúc của hệ thống Cũng nhữ hầu hết các hệ thống, hệ thống DNS Anycast có mô hìnhclient – server, đồng thời nó cũng có mô hình cân bằng tải (load balancing)
1.1 Kiến trúc client – server
Để phân tích cấu trúc client-server của hệ thống DNS anycast ta phân tích quytrình phân tích quá trình phân giải tên miền
Phân giải tên miền abc.company.com sang địa chỉ IP
(1) Client gửi yêu cầu phân giải đến nameserver Nếu nameserver có thể trả lời thì nó sẽtrả lời cho resolver Nameserver tìm trong bộ đệm (cache - bước 5), trong local disk (dữliệu authoritative), trong bộ đệm (dữ liệu nonauthoritative của lần truy vấn trước đó) Nếunameserver không tìm thấy câu trả lời, nó sẽ liên lạc với root nameserver Nếu tất cả rootnamsever đều không thễ trả lời (ví dụ lỗi liên quan đến kết nối) thì sau một khoảng thờigian quá trình phân giải sẽ thất bại
(2) Root namseverver tìm thấy thôgn tin về miền com được ủy quyền cho nameserver cấpdưới (bằng khai báo NS RRs), nó sẽ trả về địa chỉ IP của nameserver cấp dưới đó (máychủ miền com)
Trang 5(3) Nameserver sẽ tiếp tục đi hỏi máy chủ miền com và nhận được thông tin miềncompany.com được ủy quyền cho namserver cấp dưới, và Namserver nhận được IP củanameserver authoritative miền company.com.
(4) Nameserver tiếp tục đi hỏi máy chủ miền company.com, và câu trả lời từ nameserverauthoritative miền company.com được đánh dấu là authoratitive answer, và được trả về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êucầ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 truyvấ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 đếncá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ộtnhóm dịch vụ) Trong DNS Anycast, các máy chủ DNS Anycast được đặt cùng một địachỉ 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ỉ địnhmáy chủ DNS Anycast là 10.10.10.10, DNS Server gần nhất sẽ trả lời truy vấn
Trang 6DNS client có thể gửi yêu cầu đến bất kỳ server nào, trong hình trên định tuyếnlayer 3 sẽ chuyển gói tin đến router R1 Trong trường hợp server A không thể cung cấpdị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ựchiệ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ý
Trang 7Má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,chương trình này gởi yêu cầu đến một thành phần của hệ điều hành (gọi là resolver),resolver sẽ chuyển tiếp truy vấn đến máy chủ tên miền bằng giao thức DNS, nếu resolverkhông có bộ nhớ cache được gọi là stub resolver
Một vài máy tính chỉ có resolver, một số khác có cả resolver và nameserver, tuynhiên nguyên lý chung vẫn như sau:
nameserver
nameserver khác
chế này nameserver sẽ liên lạc được với nameserver có thẩm quyền để có được câu trả lờicuối cùng
yêu cầu Nếu có nhiều name sever khác được cấu hình trong danh sách root server củanameserver, nó sẽ gửi yêu cầu đến nameserver kế tiếp trong danh sách đó
Trang 8Nameserver và resolver
DNS sử dụng port 53 trên cả TCP và UDP trong việc gửi/nhận yêu cầu Các truyvấn thông thường như yêu cầu phân giải tên sang IP hay ngược lại sử dụng giao thứcUDP Chiều dài của dữ liệu UDP bị giới hạn trong 512 Bytes, trong trường hợp dữ liệu >512B thì DNS sẽ bật cờ truncation để thông báo gửi lại bằng giao thức TCP Các truy vấnzone transfer giữa primary và secondary DNS sử dụng giao thức TCP để truyền tin
Yêu cầu phân giải được gửi từ resolver đến name sever, nếu nameserver không biếtcâu tra lời nó sẽ hỏi các nameserver khác Name server xử lý yêu cầu bằng cơ chế lặp, bắtđầu từ root nameserver
Trang 9Quá trình trả lời yêu cầu phân giải
Cơ chế hoạt động của resolver: Resolver là một thành phần của hệ điều hành, thựchiện việc phân giải tên miền Resolver không phải là một chương trình cụ thể, nó là một
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ìnhftp 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.
Trang 10Cơ 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 serverquả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ừ nameserverkhá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 trongCSDL local Tên gọi Primary master hay Primary nameserver dựa vào version củachươ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 domaintrong SOA RRs, trong khi Primary master không cần phải public Lưu ý chỉ có một kiểuserver 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áychủ cấp dưới (slaver / secondary server) Kiểu server này được dùng từ BIND version 8trở lên
Trang 11Secondary nameserver/Slave nameserver: lưu trữ dữ liệu của zone bằng cách
copy dữ liệu từ primary nameserver theo một khoảng thời gian nhất định Dữ liệu củasecondary nameserver không được tự thay đổi mà phải cập nhật từ primary name server.Kiểu server này cũng là máy chủ có thẩm quyền của zone
Caching only nameserver: không phải là một primary hay secondary name server
(không là authority) Dữ liệu được lưu vào vùng đệm (cache) của server được gọi là dữliệu không thuộc thẩm quyền (unauthoritative)
Root nameserver: là máy chủ có thẩm quyền của miền gốc (root domain) Mỗi
root nameserver là một primary nameserver
Slave nameserver: thực hiện chuyển tiếp yêu cầu phân giải đến một nameserver
khác
Kiến trúc Master/Slave
Phân giải lặp tuần tự - Iterative resolution (nonrecursive)
Phân giải lặp tuần tự (đôi khi còn được gọi là phân giải tương tác - interactive) lànameserver trả về kết quả mà nó biết được tương ứng với câu truy vấn Nameserver tracứu trong dữ liệu của nó (kể cả cache), nếu không tìm được câu trả lời nó sẽ tìm tên và địachỉ của nameserver gần với tên miền yêu cầu phân giải nhất trong dữ liệu local của nó, và
Trang 12trả về cho resolver dưới dạng tham chiếu (referal) để resolver tiếp tục quá trình phân giải.Lưu ý rằng tham chiếu bao gồm tất cả các nameserver được list trong danh sách local của
nó, và nó sẽ chọn nameserver nào sẽ được query tiếp theo
Phân giải đệ quy – recursive resolution
Đa số resolver không hiểu được các trả lời kiểu tham chiếu (follow a referal), vìvậy resolver gửi truy vấn đệ quy (recursive query) cho nameserver Phân giải đệ quy làcách gọi khi một nameserver nhận được yêu cầu đệ quy từ resolver Giống như thuật toán
đệ quy trong lập trình, nameserver sẽ lặp lại các thao tác giống nhau: gửi truy vấn đếnnameserver khác và nhận về kết quả tham chiếu cho đến khi có được kết quả cuối cùng
Trong phân giải đệ quy, resolver gửi một yêu cầu đệ quy tới nameserver để yêucầu phân giải một tên miền nào đó Namseserver bằng cách nào đó để trả về cho resolverkết quả (hay thông báo không thành công)
Nếu namserver không trả lời được truy vấn, nó có thể gửi truy vấn đệ quy đến mộtnameserver 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 choresolver Có một ngoại lệ trong trường hợp nameserver được cấu hình để chuyển tiếpquery đế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ầnnhầ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.vnthì sẽ không đi hỏi mil.gov.vn hay gov.vn
Trang 13Cơ 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 nameseverkhô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 rootnameserver, root namserver sẽ trả về địa chỉ IP của một namserver khác, và nó tiếp tục đihỏ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 đếnmộ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ừ localnamserver và thực hiện phân giải thông qua truy vấn không đệ quy, và sau đó trả về kếtquả cuối cùng cho nameserver
Trang 14Một forwarder server có thể làm chức năng của caching server, hay làm primaryhoặc secondary server cho vài zone nào đó.
3, Truyền thông
Bản ghi tài nguyên – Resource Records
Thông tin của tên miền và địa chỉ IP cũng như các thông tin khác mà DNS cungcấp được lưu trong bộ nhớ của nameserver dưới dạng bản ghi tài nguyên – Resourcerecords – RR
Nameserver sẽ nạp dữ liệu vào cache bằng nhiều cách khác nhau Dữ liệu thuộcthẩm quyền (authoritative) được đọc từ file trên local disk hay thông qua cơ chế zonetransfer từ authoritative server khác Dữ liệu không thuộc thẩm quyền (nonauthoritative)thu được bằng cách DNS server nhận trả lời từ một server khác từ lần truy vấn trước đó.Riêng dữ liệu nonauthoritative thông tin về các root server được tải từ cấu hình DNSserver lên
Nếu DNS client cần thông tin từ DNS server, nó sẽ yêu cầu RR từ DNS server.DNS client có thể yêu cầu DNS server bản ghi A với thông tin địa chỉ IP của một tênmiền nào đó DNS client ở đây hiểu là resolver hay một nameserver
Cấu trúc của RR được quy định trong giao thức DNS, như hình dưới:
Trang 15Cấu trúc RR
Mỗi trường RR bao gồm:
TYPE: kiểu bản ghi
CLASS: lớp bản ghi
TTL: time to live – là một số 32 bit quy định thời gian mà RR được lưu trữ
trong cache Khi thời gian hết hạn, bản tin sẽ bị xem như khôgn có giá trị
RDLENGTH: một số 16 bit chỉ định chiều dài của trường RDATA
RDATA: dữ liệu này lưu một chuỗi của độ dài của biến, định dạng của trường
này tùy thuộc vào kiểu RR và lớp
Lưu ý là định dạng RR trong giao thức DNS là dạng ký hệu nhị phân (binarynotation), 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ằngkhoả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)
Trang 16Gó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êucầ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 truyvấ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: