Network programming
1
Thi t k giao th cế ế ứ
Giảng viên: Nguyễn Hoài Sơn
Bộ môn Mạng và Truyền thông máy tính
Khoa Công nghệ thông tin
Network programming
2
T i sao chúng ta c n thi t k giao th c ạ ầ ế ế ứ
m i?ớ
Các ứng dụng mới xuất hiện mọi nơi mọi lúc
– ngày càng phụ thuộc vào truyền thông
mạng
Cuộc cách mạng về thông tin làm xuất hiện các
nhu cầu mới
Sự thay đổi trong môi trường làm việc đòi hỏi
chúng ta xem xét lại thiết kế của các giao
thức đã có
Network programming
3
Quy trình thi t k giao th cế ế ứ
Network programming
4
Các yêu c u khi thi t k giao th cầ ế ế ứ
Hiểu mục đích, yêu cầu
Yêu cầu về chức năng: features, security,…
Các yêu cầu khác: scale, time-to-market, cost, …
Hiểu về những giới hạn
Giới hạn về chức năng: Môi trường thực hiện
Các giới hạn khác: giá thành, cân nặng, năng
lượng tiêu thụ, memory, CPU, …
Hiểu về những thỏa hiệp có thể chấp nhận
được
Must vs. nice-to-have
Network programming
5
M t s khía c nh chung c a vi c thi t k ộ ố ạ ủ ệ ế ế
giao th c (1)ứ
Quy mô thiết kế
Chỉ là một phần trong thiết kế ứng dụng nào đó
Nhằm tạo ra platform cho một môi trường cạnh tranh
Mục đích thiết kế
Giải pháp hoàn chỉnh cho một ứng dụng
Tạo ra các gói đế sử dụng lại một cách mềm dẻo
Sử dụng các gói có sẵn để tạo ra giải pháp cụ thể nào đó
Tạo ra hay Sử dụng lại
Sử dụng lại các công nghệ đã có
Hưởng lợi từ kinh nghiệm, code, etc. ít rủi ro
Nhưng: Có thực sự đáp ứng mục đích, yêu cầu, chi phí, …
Tạo ra công nghệ mới từ zero
Có thể tối ưu hóa phù hợp với quy mô, mục đích, yêu cầu sử dụng
chấp nhận rủi ro lớn hơn, nhiều thời gian để đưa ra thị trường
Network programming
6
M t s khía c nh chung c a vi c thi t k ộ ố ạ ủ ệ ế ế
giao th c (2)ứ
Học từ những giải pháp liên quan
Mượn các khái niệm và giải pháp
nhưng chỉ ở chỗ nào có thể áp dụng được
Tránh lỗi. Xem xét các triến khai trên thực tế trước khi mượn
Tránh “second system syndrome”
Bám sát các yêu cầu trong quá trình thiết kế
Một số cách thức đơn giản hóa
Tối ưu hóa cho trường hợp chung
Không phức tạp hóa vấn đề – Keep it simple stupid (KISS)
Tránh các tùy chọn và tham số
Nhớ rằng cuối cùng chúng ta sẽ phải thực thi thiết kế
Network programming
7
M t s khía c nh chung c a vi c thi t k ộ ố ạ ủ ệ ế ế
giao th c (3)ứ
Phân tách rạch ròi các vấn đề
Xử lý các khía cạnh độc lập nhau một cách độc lập
Những gì thực sự là độc lập nhau?
Phân tầng chặt chẽ
Định nghĩa rõ ràng các điểm truy cập dịch vụ (SAPs)
Có xu hướng che dấu hoàn toàn các tầng dưới với các tầng trên
Phá vỡ sự trừu tượng hóa- Leaky abstraction
Phân tầng chặt chẽ không phải lúc nào cũng tốt
Không nhất thiết phải che dấu bằng mọi giá
Áp dụng cho thiết kế giao thức, lập trình và một số công việc khác
By Joel Spolsky />
Tối ưu hóa bằng thông tầng (Cross-layer)
Xử lý các vấn đề phụ thuộc vào các tầng dưới ở tầng trên và ngược lại
Network programming
8
Thi t k giao th c có tính Trade-Offs…ế ế ứ
…giữa các yêu cầu và các hạn chế của môi trường
làm việc
“Tốt, nhanh, rẻ – chỉ được hai, không thể thực hiện
được cả ba.”
Ví dụ
Độ tin cậy vs. độ trễ
Chức năng vs. băng thông
Khả năng mở rộng vs. hiệu quả
Chức năng vs. đơn giản
Một thiết kế để thực hiện một mục tiêu nào đó sẽ tác
động ngược lại vào một mục tiêu khác
Cần tìm kiếm sự thỏa hiệp hợp lý để thực hiện được chức
năng yêu cầu với giá thành có thể chấp nhận được
Network programming
9
Các bên truy n tin và vai tròề
Truyền tin điểm-điểm vs. nhiều điểm
Có bao nhiêu bên tham gia vào quá trình truyền tìn?
Unicasting vs. group-overlays vs. multicasting
Kiểu trao đổi thông tin nào được giả thiết?
Truyền tin Client-server vs. truyền tin ngang hàng
Các bên có cùng vai trò hay có vai trò khác nhau?
Truyền tin cuối-cuối vs. trung gian vs. hỗ trợ của
router
Những thực thể nào có thể, có hoặc phải tham gia
vào quá trình truyền tin? Chúng có “thấy được” hay
không?
Network programming
10
Đ nh danh bên truy n tinị ề
Tên
Định danh có thể đọc được để con người dễ nhớ (e.g., DNS
name, URI, URN)
Định danh
Định dang có thể xử lý bới máy tính
Địa chỉ
Định dang cấp giao thức (e.g., IP address)
Địa điểm
Thông tin về địa điểm của bên truyền tin trong một tôpô mạng
Cần quản lý (là duy nhất)
Hoặc được chọn ngẫu nhiên trong môi trường ad-hoc
Các định danh này cần được chuyển đổi lẫn nhau
Address books, dữ liệu phân tán(e.g., DNS, DHTs), giao thức
trao đổi, caching, cấu hình (thủ công), …
Network programming
11
Đ ph c t pộ ứ ạ
Độ phức tạp giao thức
Số lượng của giao thức, số lượng của tùy chọn
Độ phức tạp trạng thái
E.g., Số trạng thái và chuyển trạng thái, yêu cầu đồng bộ hóa
Số chuyển trạng thái (tương tác) để đạt được kết quả
Độ phức tạp tính toán
Ví dụ: Mã hóa, định tuyến, tìm kiếm
Vấn đề về tính tương thích
Cần làm tương thích với các phiên bản cũ
Khó khăn trong việc đưa ra chức năng mới, dễ dẫn đến sự phức
tạp
Network programming
12
Đ ph c t p (2)ộ ứ ạ
Độ phức tạp thực thi
Yêu cầu về CPU (liên quan đến độ phức tạp hoạt
động và độ phức tạp tính toán)
Yêu cầu bộ nhớ (code, dữ liệu – liên quan đến độ
phức tạp trạng thái)
Yêu cầu về độ lớn của đĩa
Những tài nguyên khác…
Network programming
13
Đ ph c t p đi u khi nộ ứ ạ ề ể
Để chạy hệ thống
Có bao nhiêu tham số phải cấu hình?
Cần bao nhiêu sự phối hợp (ví dụ. giữa các tổ chức)?
Có thể phát hiện được cấu hình sai không và cấu hình như thế
nào?
Xử lý tự động vs. xử lý thủ công
Theo dõi
Những tham số nào? Như thế nào? Chu kỳ bao lâu?
Xứ lý lỗi
Giảm dần vs. ngừng hoàn toàn hoạt động của hệ thống
Làm thế nào để theo dõi và phát hiện lỗi?
Làm thế nào để khôi phục lại hệ thống?
Mất khoảng bao nhiêu lâu?
Network programming
14
Tính kinh tế
Truyền dữ liệu gắn với chi phí
Rate, volume, packets, QoS, …
Độ phức tạp thực thi gắn liền với chi phí
Nhân công để thiết kế, thực thi và kiểm tra hệ thống
Các thiết bị cần thiết
Lợi nhuận gắn liền với độ phức tạp giao thức
Định luật Metcalfe
giá trị của một mạng truyền thông tỷ lệ với bình phương của số
người tham gia
Network programming
15
M t s v n đ v thi t k giao th cộ ố ấ ề ề ế ế ứ
Hoạt động có trạng thái vs. không trạng thái
Số lượng thông tin cần duy trì khi trao đổi thông tin
Khái niệm về “liên kết” hay “kết nối”
Trạng thái này được lưu giữ tại đâu? (Tại một hay cả hai bên trong
trường hợp giao tiếp điểm-điểm)?
Nút cố định vs. nút di động
ảnh hưởng đến định tuyến, khả năng truy cập, …
Truyền tin dựa vào hạ tầng mạng vs. truyền tin kiểu ad-hoc/tự
động
Kiểu hạ tầng này được giả thiết?
Bảo mật trong giao thức vs. bảo mật dựa vào nơi khác
Yêu cầu nào? (e.g., hạ tầng yêu cầu như PKI)
Network programming
16
Đánh giá thi t k giao th c (1)ế ế ứ
Khả năng thích ứng
Khả năng thích ứng với các điều kiện môi trường khác nhau
(thay đổi chất lượng dịch vụ ở mức có thể chấp nhận được)
Ví dụ: sự thích ứng về độ trễ playout và codec với truyền thông đa
phương tiện
Khả năng mở rộng
Có thể làm việc trong các khoảng rộng của các tham số môi
trường
Ví dụ điển hình: Số lương nodes
Tốc độ truyền dữ liệu, tốc độ lỗi, độ dài đường truyền, độ trễ
Số lượng và kích thước dữ liệu
Hiệu quả
Duy trì một mức độ overhead hợp lý
Ví du: tiêu đề giao thức, mã hóa giao thức
Số lượng tương tác giao thức, packets, bits, xử lý
Network programming
17
Đánh giá thi t k giao th c (2)ế ế ứ
Bảo mật
Khả năng triển khai
robustness (chống DoS, điểm lỗi duy nhất, etc.)
Khả năng đưa ra thực tế theo từng bước
Khả năng tương thích
Tương thích với các phiên bản cũ và mới
Khả năng điều khiển và quản lý
Network programming
18
Kh năng m r ngả ở ộ
Một câu đánh giá thiết kế điển :
“Thiết kế này không co dãn (scale) …”
Tại sao?
Câu này nói về điều gì?
Tại sao lại phải như vậy?
Network programming
19
Kh năng m r ng nói chungả ở ộ
Thường dùng (không chỉ) trong truyền tin, là
Khả năng của hệ thống hoạt động với nhiều điều kiện môi
trường khác nhau
ngược lại là chỉ hạn chế với một điều kiện môi trường duy nhất
Đánh giá trên một hay nhiều tham số đầu vào
Khả năng sử dụng với khoảng tham số đầu vào có thể chấp
nhận được
Gần như gắn liền với mức độ( và tính công bằng) sử dụng tài
nguyên
Liên quan đến học thuyết về độ phức tạp
Phân chia mức độ sử dụng tài nguyên dựa trên đầu vào
Các cấp độ phức tạp: O(1), O(n), O(log n), O(nk), O(en)
Network programming
20
Kh năng m r ng nh là m t th c đo ả ở ộ ư ộ ướ
(1)
Network programming
21
Khả năng mở rộng: Phía mạng
Độ dài đường truyền (Số lượng hop, độ trễ, biến thiên độ trễ)
Độ trễ do khoảng cách phụ thuộc tốc độ truyền ánh sáng + độ trễ xử
lý/xếp hàng tài mỗi nút mạng
Trên một host vs. cùng mạng cục bộ vs. cách 30 hops trên mạng
Internet
< 1ms trên đường LAN vs. vài giây qua GPRS hay truyền thông vệ
tinh
vs. vài phút, vài giờ với trạm vũ trụ
Độ trễ không đổi trên mạng cục bộ vs. độ trễ chênh lệch vài giây với
truyền tin vệ tinh
do giao thức truy cập trung gian
Network programming
22
Khả năng mở rộng: Phía mạng (2)
Mức độ mất mát
Độ mất mát 0 trên đường truyền cục bộ vs. Mất mát <
10% trên đường truyền Internet
Mất mát không dự đoán được trên đường truyền
không dây
Mất mát riêng rẽ (tuân theo một phân bố nào đó) vs.
mất mát bùng nổ
Tốc độ đường truyền
Vài trăm bit/s qua đường truyền không dây, tiết kiệm
điện vs. Tbit/s trên đường cáp quang
Network programming
23
Khả năng mở rộng: Phía ứng dụng
Tốc độ cập nhật hay gửi yêu cầu
Đo bởi số hoạt động trong 1 giây vs. 1 giờ vs. 1 ngày
Thời gian giữa 2 cập nhật
Kích cỡ dữ liệu
Kích thước dữ liệu từ vài chục bytes đến10 GB
Số lượng các bên tham gia (người dùng, mạng, hệ
thống)
Bao nhiêu bên thực hiện gửi
Số luợng mỗi bên tham gia
Ví dụ: vấn đề C10K: xử lý 10,000(s) máy khách với một máy
chủ
Network programming
24
Kh năng m r ng: th c thiả ở ộ ự
Vấn đề C10K:
Sự tương tác thường xuyên
Các hoạt động chi phí cao như chấp nhận và đóng kết nối, bảo mật, …
Multiplexing và xử lý xuất nhập dữ liệu
Xử lý đa tiến trình vs. đa luồng vs. đơn luồng
Vấn đề với hiệu quả cuộc gọi hệ thống (e.g., poll (), select ())
Xử lý nhiều sự kiện sẽ tiêu tốn thời gian
Truy cập dữ liệu
Tìm kiếm dữ liệu trong ổ cứng khi truy cập file
Ổ cứng là “nhanh” nếu không truy cập dồn
Ví dụ: video-on-demand streaming
Băng thông bus của hệ thống
Tương tác với các tiến trình khác trên cùng một máy tính
Network programming
25
Kh năng m r ng: th c thi(2)ả ở ộ ự
Cân bằng tải
Sử dụng chuỗi máy chủ để cân bằng tải
Cân bằng tải sử dụng DNS, proxies
Có thể xử lý phân tán để tăng khả năng truy cập
Và giảm độ trễ truyền thông
Vấn đề: cần phải đồng bộ dữ liệu giữa các máy chủ
Khả năng mở rộng với các platform
Thiết bị chạy bằng pin
Hệ thống nhúng nhỏ (TCP stack 4 KB)
TV/car yêu cầu giá thành thấp
Phone/PDA
Desktop hay laptop PC cấu hình mạnh
Máy tính đa CPU tốc độ cao