Tổng quan về giao thức mạng UPnP

00:10, 23/02/2013

UPnP (Universal Plug and Play) là một giao thức mạng giúp các thiết bị với khả năng kết nối mạng trong gia đình có khả năng nhận ra nhau và truy cập một số dịch vụ (services) nhất định của nhau, bất kể thiết bị đó thuộc chủng loại nào hoặc chạy hệ điều hành gì. Được xây dựng dựa trên các nền tảng thông dụng nhất của Internet như TCP/IP,  HTTP, XML, các thiết bị có UPnP sẽ tự động tìm thấy nhau trong mạng khi chức năng UPnP đang hoạt động mà không đòi hỏi nhiều thao tác cấu hình, tiết kiệm nhiều công sức cho người sử dụng. Ứng dụng thường gặp nhất của UPnP là stream dữ liệu media (nhạc, phim) giữa các thiết bị trong mạng và gửi tín hiệu điều khiển giữa các thiết bị này.

Tổng quan kĩ thuật

Giao thức mạng UPnP hoạt động theo cơ chế mạng ngang hàng (peer-to-peer), các thiết bị UPnP đều có quyền gửi và nhận tín hiệu điều khiển ngang nhau. Cũng đồng nghĩa với việc bạn có thể ngồi ở tầng 3, đặt media server (ví dụ như PC & HDD Box) của mình ở tầng 2 và dùng tablet điều khiển để phim lưu trên media server đó phát ra trên TV tại phòng khách tầng 1, miễn sao cả 3 thiết bị đều đã kết nối với hệ thống mạng gia đình bạn và đã cài ứng dụng hỗ trợ UPnP. Việc di chuyển file dữ liệu sử dụng UPnP cũng đôi lúc tỏ ra tiện lợi hơn file sharing mặc định của Windows. Tuy vậy do dung lượng của các dữ liệu multimedia thường rất lớn nên giải pháp lưu trữ toàn bộ các file này ở một nơi và sử dụng khả năng stream media của UPnP để phát lại trên các thiết bị khác vẫn được ưa chuộng hơn cả.


UPnP hoạt động trên mọi nền tảng mạng từ Wi-fi, dial-up, các phương pháp truyền dẫn sử dụng đường dây điện (communication over powerline), mạng dây Ethernet truyền thống.v.v. Miễn sao có kết nối để truyền dẫn dữ liệu giữa các thiết bị.
   
Ứng dụng UPnP có thể được xây dựng trên bất cứ nền tảng HĐH nào bằng bất cứ ngôn ngữ nào. Và với sức mạnh phần cứng mạnh mẽ hơn theo từng ngày, yêu cầu về cấu hình phần cứng từ lâu đã không còn là chuyện cần bàn đến. Trên thực tế chỉ cần một HĐH đạt được một lượng người dùng nhất định, chắc chắn sẽ có người viết ứng dụng UPnP trên đó. Các thiết bị giải trí gia đình như máy console hay TV đời mới phần lớn đều đã được hãng sản xuất tích hợp khả năng hỗ trợ UPnP ngay từ khi xuất xưởng.
   
Được xây dựng dựa trên những nền tảng phổ biến và đáng tin cậy nhất tạo nên Internet ngày nay như IP, TCP, UDP, HTTP, XML. Độ ổn định và hiệu năng của UPnP là không cần phải bàn, tuy rằng còn gặp nhiều vấn đề về bảo mật.
  
Được phát triển hướng tới việc phục vụ các ứng dụng giải trí như xem phim, nghe nhạc, hiển nhiên cơ chế tìm kiếm và điều khiển của UPnP không thể dựa trên những dòng lệnh khô khan. Giao diện điều khiển của các ứng dụng UPnP thường được tối ưu để đem lại cảm giác thoải mái và thuận tiện nhất cho người dùng.
   
Tính đồng nhất: cũng tương tự đối với các giao thức mạng Wi-fi, Bluetooth…Các hãng sản xuất khi muốn tự tích hợp chức năng hỗ trợ UPnP lên thiết bị của mình (TV, máy nghe nhạc.v.v.) sẽ phải tuân theo các chuẩn chung. (Chúng ta sẽ tìm hiểu kĩ hơn về hệ thống chuẩn do DLNA xây dựng ở phía dưới).
   
Khả năng mở rộng: số lượng thiết bị UPnP trong cùng mạng chỉ bị giới hạn bởi khả năng tải của các thiết bị mạng. Đồng thời ngoài các chức năng cơ bản như điều khiển, stream media…. các lập trình viên và hãng sản xuất có thể phát triển bổ sung nhiều chức năng khác (ví dụ thay đổi, sao chép metadata trong thư viện multimedia)

Lưu ý: Như đã đề cập trong bài viết về 5 sơ suất về bảo mật người dùng thường gặp phải, chức năng UPnP trên các thiết bị đầu cuối (TV, PC, Laptop….) trong mạng nhà bạn không liên quan gì đến chức năng UPnP của các thiết bị mạng như modem. Để giao tiếp và truyền dữ liệu trong mạng LAN - nơi mà các thiết bị đã vốn có thể giao tiếp trực tiếp với nhau không phải qua bước trung gian NAT nào – chúng ta chỉ cần bảo đảm rằng ứng dụng UPnP đang được bật trên các thiết bị đó. Còn tùy chọn UPnP trên các thiết bị mạng là chức năng giúp người dùng kết nối từ xa (ví dụ khi đi công tác) về thư viện multimedia tại nhà sử dụng giao thức UPnP. Và đáng tiếc là suốt những năm qua, chức năng này liên tục xuất hiện những lỗi nghiêm trọng về bảo mật, khiến cho các chính quyền cũng như các hãng công nghệ lớn luôn khuyến cáo người dùng nên tắt tùy chọn này.


Bây giờ chúng ta sẽ tìm hiểu qua về những thành phần cần thiết để thiết lập một hệ thống UPnP đơn giản trong nhà:

UPnP - MediaServer


Cũng tương tự khi download torrent, ta cần ít nhất 1 seed ban đầu làm nguồn phát tán dữ liệu. Muốn stream phim/nhạc trong mạng thì nơi lưu trữ các dữ liệu multimedia đó phải có khả năng phát tán dữ liệu, nói cách khác là đóng vai UPnP server. Trên các thiết bị như PC, laptop sử dụng Windows, Mac hay các distro Linux phổ biến dạng Ubuntu, điều này chỉ phụ vào việc ứng dụng UPnP mà bạn chọn cài đặt có chức năng này hay không. May mắn là phần lớn các phần mềm Mediaserver có thể được dùng làm UPnP Server tốt nhất hiện nay như XBMC, Plex, Mediatomb, Serviio, PS3…. hiện nay đều được phát triển theo dạng cross-plattform. Nghĩa là bạn sẽ không phải lo lắng về việc mình dùng HĐH nào. Đòi hỏi cấu hình để đóng vai trò UPnP server cũng không hề cao, vì vậy nếu muốn người dùng hoàn toàn có thể phân tán dữ liệu multimedia giữa các máy bàn/laptop trong nhà rồi cho tất cả các máy đóng vai trò server để phát dữ liệu qua lại cho nhau.  Nhưng đây không phải cách tối ưu do việc nhớ và quản lý các dữ liệu bị phân tán không phải dễ dàng. Trong hộ gia đình phương pháp phổ biến nhất vẫn là tập trung  các bộ sưu tập phim, đĩa nhạc vào một máy có thể chạy bền bỉ 24/24 dạng NAS Server, các thiết bị khác sẽ stream dữ liệu từ đó ra. Chức năng UPnP Server trên các máy khác lúc này dĩ nhiên vẫn có thể được bật phòng khi cần thiết, chỉ là chúng ta sẽ không cần mất công nhớ xem phim nào để trên máy nào nữa, vậy thôi.

Mô hình phổ biến, tập trung thư viện multimedia trên 1 máy dạng NAS server.

Các thiết bị di dộng sử dụng iOS, Android hay các hệ điều hành di động khác, do thường không có dung lượng lưu trữ cao, khả năng xử lí mạnh mẽ và pin bền bỉ (và cũng không mấy ai dùng thiết bị di động làm nơi lưu thư viện phim/ảnh/nhạc cả) nên việc sử dụng các thiết bị này làm UPnP Server là không phổ biến. Dĩ nhiên các ứng dụng cung cấp chức năng này vẫn tồn tại trên Android hay iOS (ví dụ BubbleUPnP hay Pixel Media Server), tuy nhiên trên tablet hay smartphone chức năng Server có lẽ chỉ hữu dụng khi ta đang…. ở nhà người khác và muốn phát thử nhạc/phim lên TV/Loa của họ. Các phần mềm cross platform kể trên khi chạy trên hệ điều hành di động lại thường đòi hỏi sức mạnh phần cứng kha khá, ví dụ XBMC hiện vẫn nói không với Tegra 2.

Trên các dạng thiết bị khác như TV, loa đài, Camera, đầu DVD hay máy chơi game console, các phần mềm và chức năng hầu hết đã được khóa cứng từ khi ta mua về. Thiết bị đó có thể hỗ trợ UPnP hoặc không, và nếu có thì có thể chỉ nhận được tín hiệu, chứ không thể đóng vai trò UPnP Server để phát dữ liệu. Tùy theo nhu cầu sử dụng, ta cần tìm hiểu kĩ khi mua hàng, đặc biệt tham khảo kĩ chứng chỉ DLNA được cấp cho sản phẩm đó.

Lưu ý: Nếu bạn là người quen làm việc với file và ít khi tiếp cận các mediaServer, nơi dữ liệu được tổ chức dưới dạng thư viện, có thể bạn sẽ mất đôi chút thời gian để làm quen. Khi cài đặt lần đầu, các mediaserver dạng như XBMC, Plex sẽ yêu cầu người dùng chỉ định nơi quét dữ liệu. Sau khi quá tình quét hoàn tất các bản nhạc, bộ phim trong đó sẽ được mediaserver hiển thị dưới dạng một bộ phim/ bài hát thực sự, với đầy đủ metadata về tác giả, thời lượng, định dạng, chất lượng, rating.v.v. để người dùng có thể dễ dàng tìm kiếm khi điều khiển từ TV, tablet chứ không chỉ là những file mp3, avi khô khan với một cái tên file cũng khô khan không kém nữa. Nếu bạn là người cẩn thận chỉ tải về các bản nhạc/phim với codec thông dụng, đã được cập nhật đầy đủ sẵn metadata thì không vấn đề gì. Nhưng nếu trong máy lưu toàn những file với codec, tên file lạ, bên trong không có thông tin bổ sung gì thì đôi lúc chúng sẽ không được hiển thị trong thư viện, hoặc các thông tin bổ sung do mediaserver tự lấy về từ Internet sẽ có thể sai lệch.

UPnP Client: ControlPoint/Renderer/ RenderingControl

Sau khi đã có nguồn phát tín hiệu, việc điều khiển từ xa và nhận tín hiệu được chia ra làm khá nhiều khâu, dù rằng phần lớn trường hợp các chức năng này đều được tích hợp chung vào một gói phần mềm. Một thiết bị đóng vai trò UPnP ControlPoint khi nó có khả năng truy cập, tìm kiếm, sử dụng và thay đổi dữ liệu của MediaServer. Renderer là thiết bị nhận dữ liệu, xuất ra hình ảnh/âm thanh phục vụ người sử dụng. Cuối cùng RenderingControl là thiết bị chỉ đảm nhiệm việc điều khiển Renderer, đơn cử như chiếc điều khiển TV.


Nhiều người sẽ thắc mắc: việc quái gì tôi phải nhớ lắm thứ thế? Hãy nhìn vào ví dụ ở đầu bài viết: Bạn đang đọc sách trên tầng 3, một PC cũ chuyên dùng để cắm torrent và lưu phim đặt ở tầng 2, ở phòng khách đang có một cô/cậu nhóc mè nheo đòi xem hoạt hình. Hiển nhiên PC cũ lúc này sẽ được cài XBMC, Plex, Mediatomb… gì đó để đóng vai trò Server. Khi bạn từ tablet sử dụng các phần mềm như BubbleUPnP, PlugPlayer để truy cập, chọn phim từ thư viện (library) của Server rồi điều khiển cho phim đó được phát lên TV, bạn đang sử dụng chức năng ControlPoint. Để làm được điều này, ta sẽ cần chọn đúng thứ tự : PC là library và TV là renderer từ giao diện điều khiển của ControlPoint. Nếu trong nhà có vài Server như vậy cộng với vài TV có hỗ trợ UPnP, việc nhớ đúng vai trò của từng loại thiết bị là rất quan trọng.

Dĩ nhiên, một thiết bị nếu đủ khả năng có thể chịu trách nhiệm nhiều khâu cùng lúc, vừa là Server vừa là Renderer, đồng thời kiêm luôn ContrlPoint và RendererControl. Ví dụ đơn giản nhất là khi sử dụng các Mediaserver kể trên để tạo thư viện trên 1 PC, tìm kiếm phim/nhạc và xem trực tiếp trên cùng 1 máy đó.

DLNA và hệ thống chứng chỉ



DLNA là  một tổ chức được nhiều hãng chung tay thành lập để thống nhất các chuẩn chung giúp các thiết bị giải trí gia đình giao tiếp được với nhau. Hệ thống chuẩn do DLNA xây dựng dựa trên UPnP và một số giao thức mạng phổ biến khác, giúp đảm bảo khả năng tương thích giữa các thiết bị khác chủng loại, nền tảng và hãng sản xuất. Đồng thời DLNA chịu trách nhiệm kiểm tra tính tương thích của một dòng thiết bị gia đình để từ đó cấp chứng chỉ tương ứng, giúp người dùng biết sản phẩm mình định mua có thể làm được gì. Bởi vì ngoài việc nhận ra và giao tiếp được với các thiết bị khác nhờ sự hỗ trợ của UPnP(với vai trò là một giao thức mạng), còn có các vấn đề về khả năng xử lý, giải mã (codec)..v..v. cần quan tâm khi ta muốn làm việc với dữ liệu multimedia trên một thiết bị giải trí gia đình. Người dùng chủ yếu cần chú ý các chứng chỉ này trên các thiết bị thuộc “nhóm thứ 3” như TV, HD Box, Camera - vì như đã nói trên PC, laptop chạy các hệ điều hành với khả năng mở rộng mạnh  mẽ như Windows, Linux, vấn đề chỉ là ta có tìm được phần mềm phù hợp, đầy đủ chức năng hay không.


Việc phân loại thiết bị cơ bản được dựa theo vai trò mà thiết bị có thể đảm nhiệm (khá tương tự những gì đã nói ở trên). Những thiết bị như PC, laptop hiển nhiên có thể đảm nhiệm cùng lúc nhiều vai trò.

    Digital Media Server (DMS)
    Digital Media Player (DMP)
    Digital Media Renderer (DMR)
    Digital Media Controller (DMC).

Phòng khi bạn đọc thắc mắc “Player” và “Renderer” là gì: Renderer có thể được điều khiển bằng Controller như ví dụ ở trên, còn Player thì không. Nếu bạn đã hiểu khác biệt về cách tìm kiếm theo file truyền thống và theo thư viện như đã nói trong lưu ý 1, một điểm nhấn nữa là ta có thể sử dụng Controller để đổi sang chế độ duyệt theo file và phát ra Renderer – phòng trường hợp thư viện lỗi. Còn Player – ví dụ các máy nghe nhạc, sẽ chỉ và chỉ thấy/phát được những gì hiển thị trong thư viện mà thôi. Ngoài ra trong 1 số trường hợp, ta có thể bắt gặp các máy Scanner/Printer cũng mang chứng chỉ DLNA do chúng có khả năng giao tiếp để nhận/xuất hình ảnh trực tiếp từ Server hay Renderer thông qua UPnP, tránh cho người dùng những thao tác rắc rối khi sử dụng công cụ có sẵn của Windows hay Mac.


Nhưng đào sâu hơn nữa, không phải cứ có Server, Controlller và Renderer là xong, nếu thế DLNA đã chẳng phải lập ra nguyên một trang chuyên cung cấp thông tin chứng chỉ đã cấp làm gì. Chủng loại chứng chỉ DLNA cấp cho các thiết bị đa dạng hơn thế nhiều. Tùy theo dạng cấu hình thiết bị, sẽ có lúc bạn bắt gặp các HD Box không giải mã  được một số định dạng video từ thư viện nhà mình, hoặc một số camera không thể phát lại hình ảnh từ scanner - bởi như đã nói ở trên, việc các thiết bị nhờ UPnP mà nhận ra và giao tiếp được với nhau là một chuyện, các thiết bị đó có xử lí được tín hiệu nhận được hay không lại là một chuyện khác. Các chi tiết kĩ thuật cụ thể này đều được ghi rõ, ít nhất là trên website của DLNA cho chúng ta tìm hiểu khi cần http://www.dlna.org/consumer-home/look-for-dlna/product-search.

Sau khi đã phát ngấy với lý thuyết, chúng ta sẽ điểm qua vài bước đơn giản để thiết lập hệ thống UPnP cơ bản trong LAN

Bước Một: Cài đặt thư viện trên Mediaserver

Do là các ứng dụng phục vụ nhu cầu giải trí, trừ Mediatomb ra thì dù bạn chọn Mediaserver nào để cài đặt – bạn cũng sẽ không gặp mấy khó khăn để làm quen với giao diện thân thiện của các phần mềm này. Trong ví dụ này chúng ta sẽ sử dụng XBMC. Tham khảo thêm wikipedia để biết danh sách đầy đủ các ứng dụng UPnP trên tất cả các HĐH.

Để tiện cho việc tìm kiếm nội dung, trước hết ta nên vào Music hoặc Movies, Chọn AddSource để thêm nguồn quét dữ liệu. Tìm đến phân vùng ổ cứng hoặc thư mục lưu phim/ảnh/nhạc của bạn và đặt một cái tên dễ nhớ.


Nguồn quét vừa tạo sẽ xuất hiện trong menu chính, chuột phải chọn Scan Item to Library, chờ đôi chút cho việc quét hoàn tất là bạn đã có một thư viện multimedia.


Bước hai: cài đặt UPnP trên XBMC


Truy cập Setting > Services > UPnP. Chúng ta sẽ thấy cái tùy chọn để chia sẻ dữ liệu từ thư viện của XBMC qua UPnP, cũng như cho phép điều khiển XBMC qua kết nối UPnP. Bật tùy chọn chia sẻ dữ liệu (và cả tùy chọn điều khiển nếu muốn). Chú ý tùy chọn Allow control via HTTP sẽ cho phép bạn quản lý thư viện của XBMC qua giao diện web bằng cách vào địa chỉ dạng "IP máy server cài XBMC":"Port", port mặc định như trên là 8080.

Bước ba: tìm đến thư viện XBMC vừa tạo trên các thiết bị khác

Nếu bạn muốn thử nghiệm stream giữa các máy bàn, laptop với nhau, tiếp tục cài XBMC lên các máy còn lại – chúng sẽ đóng vai trò Client (hoặc thậm chí cài thử Plex, Mediatomb nếu muốn thử nghiệm khả năng chia sẻ của UPnP nói chung, không chỉ riêng XBMC). Trên các máy này khi chọn AddSource, ta sẽ không tìm đến một thư mục trên máy nữa mà vào UPnP Devices > máy chủ vừa được cấu hình tại bước hai sẽ được hiển thị tại đây. Sau khi bổ sung nguồn quét này thành công, toàn bộ nội dung của thư viện XBMC từ máy chủ sẽ được thêm vào thư viện của máy đang dùng (tiếp tục chuột phải & scan to library nếu chưa thấy). Bạn sẽ thấy các máy Client không tốn thêm chút dung lượng nào, nhưng video/nhạc vẫn có thể được phát bình thường.



Các thiết bị di động thì thường không đòi hỏi thao tác AddSource dài dòng như vậy. Bật thử BubbleUPnP, PlugPlayer hoặc 8Player lên, chúng sẽ tự động nhận biết thư viện multimedia của Android/ iOS và hiển thị chúng dưới cái tên dạng “Local Library” hay “Local Server”, đồng thời hiển thị thư viện trên các máy PC mà bạn vừa cài XBMC. Do như đã nói BubbleUPnP hay PlugPlayer có chức năng ControlPoint, việc của bạn lúc này chỉ là chọn Server/Renderer tương ứng từ danh sách các thiết bị hiện ra, sau đó là thoải mái tận hưởng thành quả của mình.



Theo genk.vn