Chương 1. Lý thuyết tổng quan 0B 1. Lý thuyết chung về về mạng P2P 1. Khái niệm mạng P2P Trong khoảng 10 năm trở lại đây, lĩnh vực P2P nhận được sự quan tâm của rất nhiều nhóm nghiên cứu, của các công ty, trường đại học và đã có những bước phát triển mạnh mẽ.
Ngày nay các ứng dụng peer-to-peer được sử dụng rộng rãi cho nhiều mục đích khác nhau như chia sẻ tài nguyên và nội dung, chat, chơi game, … Cũng giống như các xu hướng đang trong quá trình phát triển khác, hiện nay chưa có một định nghĩa chính xác về mạng P2P. Dưới đây là một số định nghĩa về P2P: Theo Oram, P2P là một lớp các ứng dụng tận dụng các tài nguyên như bộ nhớ, năng lực xử lý, nội dung, … tại các điểm cuối trong mạng Internet. Bởi vì truy cập vào các tài nguyên phân tán này cũng có nghĩa là hoạt động trong một môi trường liên kết không ổn định và với địa chỉ IP có thể thay đổi, các node P2P phải hoạt động ngoài hệ thống DNS và có quyền tự trị cao hoặc hoàn toàn tự trị. Theo Miller, P2P là một kiến trúc trong đó các máy tính có vai trò và trách nhiệm như nhau.
Mô hình này đối lập với mô hình client/server truyền thống, trong đó một số máy tính được dành riêng để phục vụ các máy tính khác. P2P có năm đặc điểm: − Việc truyền dữ liệu và thông tin giữa các peer trong mạng dễ dàng − Các peer vừa có thể hoạt động như client vừa có thể hoạt động như server − Nội dung chính trong mạng được cung cấp bởi các peer − Mạng trao quyền điều khiển và tự trị cho các peer − Mạng hỗ trợ các peer không kết nối thường xuyên và các peer không có địa chỉ IP cố định Theo P2P Working Group: P2P computing là sự chia sẻ tài nguyên và dịch vụ bằng cách trao đổi trực tiếp giữa các hệ thống. Tài nguyên và dịch vụ ở đây bao gồm 11 Luận văn tốt nghiệp Ngô Hoàng Giang thông tin, chu kỳ xử lý, không gian lưu trữ. Peer-to-peer computing tận dụng sức mạnh tính toán của các máy tính cá nhân và kết nối mạng, cho phép doanh nghiệp tận dụng sức mạnh tổng hợp của các client.
Các định nghĩa về P2P thống nhất ở một số khái niệm: chia sẻ tài nguyên, tự trị/phân tán, địa chỉ IP động, vai trò vừa là client vừa là server. Quá trình phát triển của các hệ thống P2P Peer-to-Peer là thuật ngữ tương đối mới trong lĩnh vực mạng và các hệ thống phân tán. Theo Oram, P2P computing bắt đầu trở thành đề tài được nhiều người quan tâm từ giữa những năm 2000. Trong khoảng thời gian từ đó đến nay, P2P trải qua vài thế hệ, mỗi thế hệ được phát triển với những động cơ, mục đích của mình.
Thế hệ thứ nhất Thế hệ P2P đầu tiên bắt đầu với sự xuất hiện của ứng dụng chia sẻ file Napster. Napster và các ứng dụng khác trong thế hệ thứ nhất sử dụng mô hình centralized directory. Đây là mô hình hybrid P2P trong đó hầu hết các peer trong hệ thống có vai trò như nhau, một số peer có vai trò lớn hơn và được gọi là các server.1 cho thấy một ví dụ về mô hình centralized directory. Trong mô hình X X này, các peer muốn chia sẻ file với các peer khác sẽ thông báo với server về các file này.
Khi một peer muốn tìm một file nào đó, nó sẽ gửi yêu cầu đến server, dựa trên các thông tin đã thu thập được, server sẽ tìm ra các peer chứa file đó và trả kết quả tìm kiếm cho peer yêu cầu. Kết quả trả về là peer phù hợp dựa trên một số thông số như tốc độ kết nối, kích thước file, …. Sau khi nhận được kết quả, peer tìm kiếm sẽ trao đổi file trực tiếp với peer chứa file mà không thông qua server nữa. 12 Luận văn tốt nghiệp Ngô Hoàng Giang Hình 1.
Mô hình centralized directory Đóng góp chính của thế hệ thứ nhất là đã đưa ra kiến trúc mạng không xem các máy tính như client và server mà xem chúng như các máy cung cấp và sử dụng tài nguyên với vai trò tương đương nhau. Mô hình centralized directory cho phép tìm kiếm thông tin trong không gian lưu trữ một cách nhanh chóng, tuy nhiên, điểm yếu của của mô hình này là tính khả mở vì tải trên index server sẽ tăng tuyến tính với số lượng peer. Đồng thời các hệ thống sử dụng mô hình này, điển hình là Napster còn gặp vấn đề về bản quyền các tài nguyên. Thế hệ thứ hai Thế hệ thứ hai bắt đầu với các ứng dụng như Gnutella, Freenet làm việc mô hình flooded requests.
Mô hình này không có bất kỳ server nào, các peer bình đẳng như nhau. Các hệ thống peer to peer thế hệ thứ hai là các hệ thống peer to peer thuần túy. Không giống thế hệ thứ nhất, các peer không thông báo về các nội dung chúng chia sẻ, khi một peer muốn tìm kiếm một file, nó gửi yêu cầu tới các peer kết nối trực tiếp với nó, nếu các peer đó không tìm thấy file, mỗi peer sẽ gửi yêu cầu tìm kiếm đến 13 Luận văn tốt nghiệp Ngô Hoàng Giang các peer kết nối trực tiếp với nó, quá trình cứ diễn ra như vậy cho đến khi request bị timeout. Quá trình gửi yêu cầu tìm kiếm đi như vậy gọi là flooding.2 biểu diễn X X một mô hình flooding request.
Mô hình flooding request Thế hệ thứ hai xóa bỏ được một số điểm xử lý tập trung trong mạng nhưng tính khả mở còn kém hơn do mạng sử dụng thuật toán flooding sinh ra quá nhiều traffic. Thêm nữa, các mạng làm việc theo mô hình này không đảm bảo sẽ tìm được dữ liệu có trên mạng do phạm vi tìm kiếm bị giới hạn. Một số mạng trong thế hệ thứ hai đưa ra một số cải tiến. Freenet đưa ra mô hình document routing, trong đó dữ liệu được lưu trên trên node có id tương tự với id của dữ liệu và các query được chuyển tiếp dựa trên id của dữ liệu tìm kiếm.
Kazza, Gnutella sử dụng khái niệm super peer trong đó một số node hoạt động như directory service, giảm lượng flooding trong mạng. 14 Luận văn tốt nghiệp Ngô Hoàng Giang Thế hệ thứ ba Sự đơn giản trong giải pháp và khả năng xóa bỏ điểm tập trung, chuyển trách nhiệm pháp lý về phía người sử dụng cũng như hạn chế về tính khả mở do lưu lượng quá lớn đã thu hút cộng đồng nghiên cứu về mạng và các hệ thống mở. Bài toán đặt ra cho cộng đồng nghiên cứu là xây dựng một mạng P2P overlay khả mở không có điểm điều khiển tập trung. Nỗ lực giải quyết bài toán này là sự xuất hiện của “structured P2P overlay networks”.
Thế hệ thứ ba được khởi đầu với các dự án nghiên cứu như Chord, CAN, Pastry, Tapestry và P-Grid. Các dự án này đưa ra khái niệm Distributed Hash Table (DHT). Mỗi peer trong hệ thống có một ID thu được từ việc băm các đặc thuộc tính đặc trưng của peer đó như địa chỉ IP hay public key. Mỗi data item cũng có một ID thu được theo cách tương tự với các peer.
Hash table lưu data dưới dạng cặp key-value. Như vậy, node ID và cặp key-value được băm vào cùng một không gian ID. Các node sau đó được nối với nhau theo một topology nào đó. Quá trình tìm kiếm dữ liệu trở thành quá trình định tuyến với kích thước bảng định tuyến nhỏ và chiều dài đường đi cực đại.
Thế hệ thứ ba đảm bảo xác xuất tìm thấy thông tin cao. Các DHT được xây dựng nhằm mục đích cho phép các peer hoạt động như một cấu trúc dữ liệu phân tán với hai hàm chính Put(key,value) và Get(Key). Hàm Put lưu dữ liệu tại một peer nào đó sao cho bất kỳ peer nào cũng có thể tìm được bằng hàm Get. Các hàm này hoàn thành sau khi đi qua một số nhỏ các chặng.
Giải pháp DHT đảm bảo cho mạng có tính khả mở và khả năng tìm thấy thông tin cao trong khi vẫn hoàn toàn phân tán. DHT đang được xem như là cách tiếp cận hợp lý cho vấn đề định vị và định tuyến trong các hệ thống P2P. Cộng đồng nghiên cứu đã đưa ra nhiều DHT khác nhau. Mỗi DHT hoạt động theo nguyên lý chung và có ưu điểm riêng, Chord với thiết kế đơn giản, Tapestry và Pastry giải quyết được vấn đề proximity routing, … 15 Luận văn tốt nghiệp Ngô Hoàng Giang 1.
Ứng dụng p2p Các ứng dụng p2p có thể chia vào bốn nhóm: Chia sẻ file (file sharing): lưu trữ và chia sẻ nội dung là ứng dụng thành công nhất của công nghệ p2p. Các ứng dụng chia sẻ file tập trung vào việc lưu trữ thông tin trên các peer khác nhau trên mạng và lấy thông tin từ các peer đó. Các ứng dụng thuộc nhóm này bao gồm Napster, Gnutella, Freenet, Kazaa, Chord, …. Tính toán phân tán (distributed computing): các ứng dụng thuộc nhóm này sử dụng tài nguyên từ các máy tính được nối mạng.
Ý tưởng chính của các ứng dụng tính toán phân tán là các chu kỳ xử lý nhàn rỗi trên bất kỳ máy tính nối mạng nào đều có thể được sử dụng cho việc giải quyết bài toán trên các máy yêu cầu nhiều năng lực tính toán. SETI (Search for Ex-traterrestrial Intelligence) là một dự án nghiên cứu khoa học nhằm mục đích xây dựng một máy tính ảo khổng lồ từ sức mạnh của các máy tính nối mạng trong chù kỳ nhàn rỗi của chúng. Cộng tác (collaboration): các ứng dụng cộng tác p2p cho phép người sử dụng cộng tác với nhau ở mức ứng dụng. Các ứng dụng này rất đa dạng, từ instant messaging, chat đến game online hay các ứng dụng chia sẻ sử dụng trong thương mại, giáo dục hay môi trường gia đình.
Platform (nền): các platform p2p cung cấp hạ tầng hỗ trợ các ứng dụng sử dụng cơ chế p2p. Các thành phần p2p được sử dụng bao gồm naming, discovery, communication, security và resource aggregation. JXTA là một p2p platform cung cấp hạ tầng tính toán và lập trình mạng. Các vấn đề đối với mạng p2p hiện nay Các hệ thống p2p có nhiều ưu điểm so với các hệ thống client-server truyền thống như tính khả mở, khả năng chịu lỗi, hiệu năng.
Tuy nhiên các hệ thống p2p đang phải đối mặt với một số vấn đề: 16 Luận văn tốt nghiệp Ngô Hoàng Giang Bảo mật (security): các cài đặt phân tán phát sinh thêm một số vấn đề bảo mật so với kiến trúc client-server truyền thống. Bởi vì trong hệ thống p2p các peer là động và không tin tưởng lẫn nhau nên để đạt được mức bảo mật cao trong các hệ thống p2p sẽ khó hơn trong các hệ thống client-server.