Chuong 3.3 - P2P

15
Bài ging Kthut Mng nâng cao TS. Trn Quang Vinh Chương 3. Lp ng Dng 3.1. Chức năng, nhiệm v3.2. Hthng tên min (Domain Name System -DNS) 3.3. Thư điện t(Electronic Mail) ---------------------------------------------------------------------------------------- 3.4. Các ng dng ngang hàng (Peer-to-Peer Applications) 3.4.1. Gii thiu Theo sliu thống kê lưu lượng Internet toàn cu trong những năm gần đây. Lưu lượng P2P ngày càng tăng nhanh và áp đảo các loại lưu lượng khác như Web, email, hay Internet video. Bài ging này scung cp nhng hiu biết cơ bản nht vnguyên lý hoạt động, kiến trúc, cũng như đánh giá hiệu năng của P2P. Trong gii hn ca bi ging, ta chxét đến khía cnh kthuật, không bàn đến vấn đề bn quyn, hay shu trí tuca các ni dung chia sbi các ng dng P2P. Vy kiến trúc P2P là gì? 1

Transcript of Chuong 3.3 - P2P

Page 1: Chuong 3.3 - P2P

Bài giảng Kỹ thuật Mạng nâng cao

TS. Trần Quang Vinh

Chương 3. Lớp Ứng Dụng 3.1. Chức năng, nhiệm vụ 3.2. Hệ thống tên miền (Domain Name System -DNS) 3.3. Thư điện tử (Electronic Mail) ---------------------------------------------------------------------------------------- 3.4. Các ứng dụng ngang hàng (Peer-to-Peer Applications)

3.4.1. Giới thiệu

Theo số liệu thống kê lưu lượng Internet toàn cầu trong những năm gần đây. Lưu lượng P2P ngày càng tăng nhanh và áp đảo các loại lưu lượng khác như Web, email, hay Internet video.

Bài giảng này sẽ cung cấp những hiểu biết cơ bản nhất về nguyên lý hoạt động, kiến trúc, cũng như đánh giá hiệu năng của P2P. Trong giới hạn của bải giảng, ta chỉ xét đến khía cạnh kỹ thuật, không bàn đến vấn đề bản quyền, hay sở hữu trí tuệ của các nội dung chia sẻ bởi các ứng dụng P2P.

Vậy kiến trúc P2P là gì?

1

Page 2: Chuong 3.3 - P2P

Các giao thức và các ứng dụng đã học trong các bài trước như HTTP, FTP, DNS, Email vốn là các ứng dụng hoạt động theo cơ chế client/server, chúng hoạt động dựa trên sự hoạt động liên tục và tin cậy của server.

Kiến trúc P2P không cần server hoặc tối thiểu hóa vai trò của các server. Thay vào đó, kiến trúc P2P bao gồm từng cặp hosts (peers) kết nối một cách không liên tục với nhau và trao đổi thông tin trực tiếp với nhau (qua liên kết logic).

Các peers không sở hữu bởi nhà cung cấp dịch vụ mà là thiết bị đầu cuối được kiểm soát bởi users như laptop, PCs, PDAs, hay SmartPhone.

Để hiểu bản chất, kiến trúc, và hoạt động của P2P, chúng ta sẽ nghiên cứu P2P qua 3 ứng dụng phổ biến của nó.

- Ứng dụng phân phối file (File Distributation): phân phát một file từ một nguồn đến một số lượng lớn các peers. Đại diện của ứng dụng phân phối file là hệ thống BitTorrent nổi tiếng.

- Nghiên cứu kỹ thuật phân tán một cơ sở dữ liệu đến một cộng đồng lớn các peers. Để minh họa cho ứng dụng này, chúng ta sẽ xem xét các khái niệm về DHT (Distibuted Hash Table).

- Cuối cùng, tìm hiểu về Skype, hệ thống điện thoại Internet phổ biến nhất hiện nay.

3.4.2. P2P File Distribution

peer-peer

2

Page 3: Chuong 3.3 - P2P

Đây là dịch vụ cơ bản của P2P, cho phép phân phối một file lớn từ một server đến các host (peers). File ở đây thường có kích thước lớn như một bộ phim, phiên bản mới của một hệ điều hành, hay các bản nhạc MP3.

Trong hệ thống client/server, server phải gửi đi các bản copy của file cho mỗi peer, dẫn đến tiêu thụ lượng lớn băng thông và các tài nguyên mạng khác.

Trong P2P, mỗi peer thực hiện việc tái phân phối bất kỳ phần nào của file đến bất kỳ peer nào có nhu cầu. Như vậy, các peers đóng vai trò hỗ trợ server trong việc phân phát file.

Câu hỏi cần đạt ra ở đây là: Cần bao nhiêu thời gian để phân phát một file từ một nguồn (server) đến một số lượng lớn các users (client/peer)?

Distribution Time: là thời gian cần thiết để mỗi peer trong N peers đều nhận được một bản copy của file F.

Để đánh giá hiệu quả hoạt động của kiến trúc client/server và P2P, ta xét một mô hình định lượng đơn giản được chỉ ra trên hình vẽ.

Một server kết nối đến N peers qua Internet, gọi us là tốc độ upload của server, ui, di là tốc upload, download của peer i. File cần phân phát có kích thước F (bit). Giả thiết mạng lõi có băng thông không giới hạn, server và các peers không tham gia vào các hoạt động khác.

Mô hình Client-Server

- Server phải truyền một bản copy của file đến mỗi peer Để phục vụ N peers, server phải truyền NF bít thời gian truyền tối thiểu là NF/us.

us

u2d1 d2u1

uN

dN

Server

Network (with abundant bandwidth)

us: server upload bandwidthui: peer i upload bandwidth

di: peer i download bandwidth

3

Page 4: Chuong 3.3 - P2P

- Gọi dmin là tốc độ download tối thiểu của các peers, min 1min{ , ,..., }i Nd d d d= . Một peer với tốc độ download thấp nhất sẽ không thể nhận được F bít sau khoảng thời gian ít hơn F/dmin giây. Do đó min distribution time là F/dmin.

Như vậy, distribution time đối với kiến trúc client-server là:

C/Ss min

ax ,uNF FD m

d

=

(2.1)

Mô hình P2P

- Để gửi fiel F đến các peers, server phải gửi mỗi phần của file ít nhất một lần lên Internet qua upload link distribution time tối thiểu là F/us.

- Peer i cần tối thiểu F/dmin (s) để download - Để phục vụ N peers, hệ thống cần phải truyển F bít đến N peers, tổng số

bít cần truyển là NF. Tổng dung lượng upload của hệ thống chính là upload của server và upload của các peers utotal = us + u1 + ….+ uN. Min distribution time là: NF/utotal.

Như vậy, distribution time đối với kiến trúc client-server là:

2s min

1

ax , ,uP P N

s ii

F F NFD md u u

=

= +

∑ (2.2)

So sánh kết quả từ hai công thức (2.1) và (2.2) với các giải thiết: các peers có cùng tốc độ upload u, một peer có thể truyền toàn bộ file trong 1 giờ (F/u=1 giờ), tốc độ upload của server bằng 10 lần tốc độ upload của peer (us=10u), tốc độ download của các peers đủ lớn so với tốc độ upload của server (dmin ≥us).

Nhận xét:

- Distribution time đối với hệ thống client/server tăng tuyến tính khi số lượng peers tăng và không có giới hạn trên.

- Distribution time đối với hệ thống P2P luôn nhỏ hơn, ngoài ra nó có có giới hạn trên khi số peers tăng, hay nói cách khác, hệ thống vẫn hoạt động hiệu quả khi số peers tham gia vào hệ thống tăng lên.

4

Page 5: Chuong 3.3 - P2P

4.4.3. BitTorrent

a) Giới thiệu

BitTorrrent là một giao thức P2P chạy ở lớp ứng dụng, đồng thời cũng là tên của một chương trình được sử dụng để chia sẻ tài nguyên trên mạng P2P, được phát triển bởi Bram Cohen (2001).

BitTorrrent là một chương trình mã nguồn mở. Đến nay, có rất nhiều bản BitTorrent client khác nhau (µTorrent, Transmission, rTorrent, KTorrent, BitComet, and Deluge) chúng nhưng đều tương thích với giao thức BitTorrent. Giống như có rất nhiều web browser client khác nhau tương thích với giao thức HTTP.

b) Ứng dụng

BitTorrent là một hệ thống chia sẻ file được sử dụng nhiều nhất hiện nay. Tính đến tháng 1/2012, có 150 triệu active users trên tổng số users có thể đến ¼ tỉ.

Ngoài ứng dụng chia sẻ file truyền thống, giao thức BitTorrent còn được Facebook và Twitter (là hai mạng xã hội phổ biến hiện nay) sử dụng để phân phối các bản tin cập nhật (updates) của người dùng lên servers của mình.

c) Thuật ngữ

- Torrent: là tập hợp các peers tham gia vào việc chia sẻ một file. Tại một thời điểm, một torrent có thể có hàng chục đến hàng trăm ngàn peers.

Client upload rate = u, F/u = 1 hour, us = 10u, dmin ≥ us

5

Page 6: Chuong 3.3 - P2P

File có phần mở rộng .torrent là file chứa các thông tin tổng quát về file được chia sẻ (tên file, kích thước, số chunks, địa chỉ tracker…). File .torent có thể search trên Google hoặc search trên các tracker.

- Chunk: Đơn vị thông tin được các peers sử dụng trao đổi thông tin với nhau, có kích thước 256kB (hoặc lớn hơn tùy vào dung lượng file cần chia sẻ)

- Tracker: nút cơ sở của một torrent, quản lý các peers trong torrent.

Một số tracker nổi tiếng:

- thepiratebay.org (open tracker), peers: 5.164.500, torrents: 636.734 - demonoid.com, peers: 3.138.042, torrents: *no info* - torrentbox.com (open tracker), peers: 1.144.100, torrents: 40.818 - hdvnbits.org (private tracker), peers: 250,000, torrents: 30,000

d) Nguyên tắc hoạt động chung

Khi một peer mới tham gia vào torrent, nó chưa có chunk nào, nhưng nó sẽ tích lũy các chunks theo thời gian. Khi một peer dowload chunk thì đồng thời nó cũng upload chunks. Khi một peer tải về một chọn vẹn một file, nó có thể ra khỏi torretn hoặc tiếp tục duy trì để upload chunk cho các peers khác.

Ví dụ: Xét một ví dụ đơn giản để làm rõ cơ chế hoạt động của BitTorrent

Khi một peer (Alice) xin vào torrent, tracker sẽ chọn ngẫu nhiên một tập (e.g., 50 peers) và gửi địa chỉ IP của các peers đó cho Alice. Alice thiết lập các concurrent TCP connection với danh sách các peers nhận được từ tracker. Nếu kết nối thành công, các peer này được gọi là các peer lân cận của Alice.

tracker: tracks peers participating in torrent

torrent: group of peers exchanging chunks of a file

obtain listof peers

trading chunks

peer

6

Page 7: Chuong 3.3 - P2P

Do mỗi peers có một tập các chunks khác nhau, Alice định kỳ gửi các yêu cầu đến các peers lân cận (qua TCP connections) để lấy danh sách các chunks, sau đó Alice gửi các yêu cầu nhận các chunks mà mình chưa có.

Alice sẽ phải quyết định 2 vấn đề: (i) chunks nào cần tải về trước tiên và (ii) tải chunks đó từ peer nào.

Quy tắc:

(1) Rarest first: Ưu tiên tải về các chunks hiếm nhất (các chunk nhận được ít yêu cầu từ các peers lân cận nhất), kỹ thuật này làm cho các chunks được phân phối một cách đều nhau. (thiếu 1 chunk cung không thể tái tạo lại file gốc)

(2) Highest rate first: + Chọn các peer có tốc độ upload lớn nhất để lấy chunks (thông thường là 4 peers), đồng thời cũng upload chunks đến các peers này. Kỹ thuật này được lặp lại mỗi 10 giây cho phép các peers có thể down/upload ở tốc độ tốt nhất có thể. + Chọn ngẫu nhiên thêm một peer để giao dịch. Kỹ thuật này lặp lại mỗi 30 giây cho phép các peer mới có thể nhận được chunks và có chunks để trao đổi.

Kỹ thuật trên được gọi là “tit-for-tat” – “ăn miếng-trả miếng”, kết quả là khi bạn upload (phục vụ) ở tốc độ cao nhất thì bạn sẽ nhận được các đối tác có cũng có tốc độ upload lớn nhất và do đó bạn có thể download (được phục vụ) ở tốc độ lớn nhất. Ngoài ra BitTorrent còn sử dụng rất nhiều kỹ thuật khác nhau làm tăng hiệu quả của giao thức P2P.

Nhận xét: (Việc sử dụng server tập trung gây ra vấn đề gì?)

- Việc sử dụng tracker tập trung gây ra một điểm lỗi toàn hệ thống (single points of failure).

- Để giải quyến vấn đề này, sử dụng các tracker phân tán (distributed trackers hay tracker-less).

Tuy nhiên, vấn đề then chốt đặt ra cho các ứng dụng P2P nói riêng và các ứng dụng phân tán nói chung là index, hay cách thiết kế một cơ sở dữ liệu sao cho nó có khả năng tìm kiếm và cập nhật một cách hiệu quả, đặc biệt khi số lượng peer tăng lên nhanh chóng.

Nghiên cứu các thế hệ phát triển của P2P sẽ cho ta câu trả lời.

7

Page 8: Chuong 3.3 - P2P

4.4.4. Các thế hệ P2P

a) P2P thế hệ thứ nhất

Thế hệ thứ nhất của P2P dựa trên một cơ sở dữ liệu tập trung với các chức năng indexing và querying đơn giản.

Thông tin được lưu trên database bao gồm các cặp <key, value>, ví dụ: <“Transformer III”, 202.101.2.10>. Các peers truy vấn database bằng cách cung cấp một key, nếu cặp (key, value) tồn tại trên database, server sẽ trả về value (địa chỉ IP của peer chứa nội dụng được yêu cầu) tương ứng với key được hỏi.

Thế hệ thứ nhất là kỹ thuật lai ghép giữa kiến trúc client/server và P2P. Một đại diện của thế hệ này là Napster.

Nhận xét:

Dễ nhận thấy, phương pháp này mắc phải vấn đề một điểm lỗi single-point-of-failure, hệ thống hoàn toàn sụp đổ khi center server bị lỗi.

b) P2P thế hệ thứ hai

P2P thế hệ hai tìm cách xây dựng một database có khả năng phân phối một nhóm nhỏ các cặp <key, value> đến các peers, mỗi peer duy trì một danh sách các địa chỉ IP của các peers trong nhóm. Như vậy, một peer có thể gửi query đến tất cả các peers khác trong nhóm, chỉ peer chứa cặp giá trị (key, value) trùng với query sẽ trả lời.

Đại diện: KaZaa với FastTrack protocol và Gnutella.

8

Page 9: Chuong 3.3 - P2P

Nhận xét:

Phương pháp này yêu cầu các peer nắm được (keep track of) tất cả các peers trong nhóm không đáp ứng được yêu cầu mở rộng mạng (unscalable).

c) P2P thế hệ thứ ba

Mỗi peer được gán một số nhận dạng (IDentifier) là một số nguyên trong khoảng [0, 2n-1] với n xác định. Lưu ý, mỗi ID có thể biểu diễn bởi n bít.

Mỗi key cũng được gán một số nguyên cùng dải với ID.

Để gán một số nguyên cho key, sử dụng bảng băm (hash table) để ánh xạ (map) mỗi key với một số nguyên trong khoảng [0, 2n-1].

9

Page 10: Chuong 3.3 - P2P

Ví dụ: e.g., key = h(“Transformer III”) trả về một số nguyên x

Bảng băm được public đến all peers trong hệ thống do đó, một database phân tán sử dụng bảng băm được gọi là bảng băm phân tán (distributed hash table -DHT).

BitTorrent là đại diện của thế hệ P2P thứ ba, sử dụng DHT để tối ưu hoạt động của hệ thống P2P.

4.4.5. Distributed Hask Table (DHTs)

Định nghĩa: DHTs là một kỹ thuật cho phép indexing và searching hiệu quả một database lớn.

Bảng băm phân tán (Distributed hash tables - DHT) là một lớp các hệ thống phân tán, cung cấp một dịch vụ tra cứu các cặp <key,value> được lưu trữ trong DHT, bất kỳ nút mạng nào tham gia vào DHT cũng có thể lấy được giá trị liên kết với một khóa cho trước một cách hiệu quả.

Nhiệm vụ lưu trữ ánh xạ <key,value>được phân tán giữa các nút, bằng cách đó sẽ giảm bớt lỗi nếu có thay đổi trong một tập hợp các nút tham gia. Điều này cho phép sử dụng DHT cho một số lượng cực lớn các nút mạng.

DHT tạo nên nền tảng cho việc xây dựng các dịch vụ phức tạp hơn, chẳng hạn như các hệ thống file phân tán, chia xẻ file trong P2P, hệ thống phân phối nội dung (content distribution), web cache có tính hợp tác, multicast, anycast, dịch vụ tên miền, và instant message.

How to assign keys to peers?

Gán các keys cho mỗi peers hay phương pháp lưu các cặp <key,value> cho các peers một cách phân tán là vấn đề trọng tâm của DHT.

Nguyên tắc: Gán mỗi cặp <key,value> cho peer nào có ID gần nhất (closest) với key đó.

Ví dụ:

Với n=4, các peers sẽ vcó ID trong khoảng [0,15]. Giả sử có 8 peers với các ID: 1, 3, 4, 5, 8, 10 , 12, 14. Cần lưu trữ cặp giá trị <11, “….”> vào một trong 8 peers trên.

10

Page 11: Chuong 3.3 - P2P

- Theo nguyên tắc closest, ta chọn được peer có ID =12 là giá trị kế tiếp của key 11 cặp giá trị <11, “….”> sẽ được lưu vào peer 12.

- Nếu key = ID của peer thì lưu luôn vào peer này. - Nếu key lớn hơn tất cả các ID của peers, thì sử dụng luật modulo-2n và

gán cho peer có ID nhỏ nhất. Ví dụ: key = 15 gán cho peer 1.

Nhận xét:

- Thông thường, một peers muốn query hoặc insert một cặp <key,value>, nó phải gửi các messages đến tất cả các peers. Nói cách khác một peer phải có IP address của tất cả các peers còn lại, phương pháp này là không thể trong trường hợp hệ thống có hàng triệu peers.

- Các kỹ thuật sau đây giúp giải quyết vấn đề này.

a) Circular DHT

Thuật toán Circular DHT cung cấp một giải pháp hữu hiệu làm giảm số lượng thông tin mà một peer cần quản lý. Theo đó, mỗi peer chỉ cần biết thông tin của 2 peers: peer kề trước nó và peer kề sau nó (immediate successor and predecessor).

Ví dụ: Trên hình vẽ, peer 3 (0011) muốn xác định peer nào chịu trách nhiệm cho key 11 (1011) , cho cả trường hợp query và insert.

- Peer 3 tạo một message “who is responsible for key 11?” và gửi đến peer kề trước nó, peer 4 (0100).

- Vì mỗi peer đều biết ID của peer kề trước nó, nên mỗi khi nhận được message, peer có thể quyết định trả lời (nếu nó là peer chịu trách nhiệm) hoặc tiếp tục forward đến peer kề trước nó.

- Cứ như vậy, peer 12(1100) chịu trách nhiệm cho key 11 sẽ trả lời cho peer 3 (12 gửi trực tiếp cho 3).

11

Page 12: Chuong 3.3 - P2P

Nhận xét:

- Mặc dù mỗi peer chỉ cần biết thông tin về 2 peers cạnh nó, nhưng để tìm được peer chịu trách nhiệm cho một cặp <key, value>, trong trường hợp xấu nhất, tất cả N nodes trong DHT phải forward message quanh một vòng tròn độ phức tạp của thuật thoán là O(N). Trường hợp trung bình là N/2. (5 bản tin cho ví dụ trên)

- DHT phải đánh đổi (trade-off) giữa số lượng peer lân cận mà một peer cần quản lý và số bản tin DHT cần phải gửi cho một query hoặc insert.

- Nói cách khác, nếu mỗi peer nắm được thông tin của tất cả các peer lân cận (mesh overlay), chỉ cần gửi đi một bản tin. Nếu mỗi peer chỉ cần nắm thông tin của 2 peer phía trước và sau nó, thì phải gửi đi trung bình là N/2 bản tin cho mỗi query.

b) Circular DHT with Shortcuts

Như vậy cần phải cải tiến phương pháp trên sao cho số lượng peers lân cận mà một peer phải nắm và số bản tin cho mỗi query ở mức chấp nhận được.

Một trong các phương pháp hiệu quả là vẫn sử dụng Circular DHT như trên nhưng có bổ sung thêm một số “shortcuts” (đường tắt) sao cho mỗi peer không chỉ nắm giữ thông tin của 2 peers kề trước và sau nó, mà còn nắm giữa một số lượng vừa phải các shortcuts đến các peers lân cận trải đều theo vòng tròn.

1

3

4

5

810

12

15

Who’s response for key 11?

I am

O(N) messageson avg to resolvequery, when thereare N peers

11 ?

11 ?

11 ?

11 ?

11 ?Define closestas closestsuccessor

12

Page 13: Chuong 3.3 - P2P

Ví dụ:

Peer 3 cần query để tìm peer chịu trách nhiệm cho key 14, nó kiểm tra danh sách peer kề trước và các shortcuts của nó. Trong trường hợp này, peer 3 có 2 lựa chọn (4 và 8), nó sẽ gửi query message trực tiếp đến peer 8 theo luật peer gần nhất với key đã cho (closest peer to the key). Tương tự, peer 8 sẽ gửi query message đến peer 15.

Nhận xét:

- 6 message trong cơ chế circular DHT giảm xuống còn 2 message trong Circular DHT with Shortcuts.

- Với thiết kế tốt có thể giảm độ phức tạp từ O(N) xuống còn O(logN). - Câu hỏi tiếp theo là mỗi peer cần bao nhiêu shortcut và peer nào được

chọn làm shortcuts?

Câu hỏi này đã nhận được sự quan tâm rất lớn của cộng đồng nghiên cứu. Họ tìm cách thiết kế sao cho DHT có thể chạy trong O(logN).

c) Peer Churn

Trong hệ thống P2P, một peer có thể nhập vào hoặc thoát ra mà không cần báo trước. Do vậy khi thiết kế DHT cần phải quan tâm đến vấn đề join and disjoin peer (peer churn) đảm bảo duy trì được hoạt động của hệ thống.

Để giải quyến vần đề này, yêu cầu mỗi peer phải biết địa chỉ IP của 2 successors (2 peers kề trước nó).

1

3

4

5

810

12

15

Who’s resp for key 1110 (14)? I am

13

Page 14: Chuong 3.3 - P2P

Mỗi peer định kỳ ping 2 successors này để biết nó còn sống hay không.

Ví dụ:

Peer 5 đột ngột rời mạng, peer 4 phát hiện ra nhờ ping, chuyển 8 thành successor thứ nhất và hỏi 8 để biết ai là successor của 8, sau đó gán successor của 8 thành successor thứ hai của mình.

Home work:

- What if peer 4 and 5 abruptly leave at the same time? - What if peer 13 wants to join?

4.4.6. Case Study: P2P Internet Telephony with Skype

Skype là một ứng dụng P2P thông dụng nhất hiện nay, luôn có khoảng 8 triệu users online ở mọi thời điểm.

Ngoài dịch vụ thoại từ PC đến PC, Skype còn cung cấp dịch vụ thoại từ PC đến phone, từ phone đến PC, và video conference từ PC đến PC.

Janus Friis (sinh năm 1976 tại Copenhagen, Đan Mạch) là người sáng lập phần mềm chia sẻ tập tin (file sharing) KaZaA, và Skype.

Tháng 9 năm 2005, anh và người đồng sở hữu Niklas Zennström bán một phần Skype cho eBay với giá 2,6 tỷ dollar Mỹ và một phần cho tập đoàn Microsoft với giá 8,5 tỷ dollar Mỹ vào tháng 5 năm 2011.

Skype sử dụng các kỹ thuật P2P với rất nhiều cải tiến, cho thấy P2P có thể được sử dụng trong các ứng dụng còn đi xa hơn cả các dịch vụ phân phối nội dung và

1

3

4

5

810

12

15

To handle peer churn, require each peer to know the IP address of its two successors.

Each peer periodically pings its two successors to see if they are still alive.

14

Page 15: Chuong 3.3 - P2P

chia sẻ file. Ví dụ như dịch vụ thoại PC-PC qua Internet cho phép 2 computer trao đổi thông tin với nhau trong thời gian thực.

Ngoài ra Skype còn sử dụng các kỹ thuật P2P cho hai ứng dụng quan trọng khác là user location và NAT traversal (cho phép các PC phía sau NAT cũng có thể sử dụng Skype).

NAT ngăn chặn một host từ outside home network khởi đầu việc thiết lập một kết nối đến một host inside home network.

P2P Case study: Skype

inherently P2P: pairs of users communicate.

proprietary application-layer protocol (inferred via reverse engineering)

hierarchical overlay with SNs

Index maps usernames to IP addresses; distributed over SNs

Skype clients (SC)

Supernode (SN)

Skype login server

Peers as relays

problem when both Alice and Bob are behind “NATs”. NAT prevents an outside

peer from initiating a call to insider peer

solution: using Alice’s and Bob’s

SNs, relay is chosen each peer initiates

session with relay. peers can now

communicate through NATs via relay

15