Không thể để triển khai RSVP (hoặc bất kỳ giao thức mới) vào cùng thời điểm trên khắp toàn bộ mạng Internet. Hơn nữa, RSVP không bao giờ có thể được triển khai ở khắp mọi nơi. RSVP do đó phải cung cấp giao thức hoạt động chính xác, ngay cả khi hai RSVP router có khả năng được tham gia bởi một đám mây "tuỳ tiện" không RSVP router. Tất nhiên, một đám mây trung gian mà không hỗ trợ RSVP là không thể thực hiện đặt phòng tài nguyên. Tuy nhiên, nếu như một đám mây có đủ năng lực, nó vẫn có thể cung cấp dịch vụ hữu ích gian thực.
RSVP được thiết kế để hoạt động một cách chính xác thông qua một đám mây Non-RSVP. Cả hai router RSVP và non-RSVP truyền thông điệp đến địa chỉ bằng việc sử dụng bảng định tuyến uni/multicase. Do đó, định tuyến của đường thông điệp duyệt trên một đám mây non-RSVP. Một thông điệp Resv truyền trực tiếp đến router ké tiếp có khả năng RSVP theo đường trở về nguồn gửi thông điệp.
Thậm chí mặc dù RSVP có hoạt động một cách chính xác thông qua đám mây non-RSVP, thì những nút có khả năng sẽ có trong general perturb mà QoS cung cấp đến bên nhận .
Một số cấu trúc liên kết của RSVP router và non-RSVP router có thể gây ra tin nhắn Resv đến RSVP, hoặc để đến giao diện của nút chính xác. Một quá trình RSVP phải được chuẩn bị để xử lý hoặc là tình hình. Nếu địa chỉ đích không phù hợp bất kỳ giao diện và thông điệp không phải là Path hoặc PathTear, tin nhắn đó phải được chuyển tiếp mà không cần chế biến thêm bằng nút này. Để xử lý các trường hợp giao diện sai, một "Hợp Lý Giao diện Handle" (LIH) được sử dụng. Các thông tin hop trước đây bao gồm trong một thông điệp Path không chỉ các địa chỉ IP
của nút trước đó; cả các giá trị được lưu trữ trong tiểu đường. Một tin nhắn Resv đến nút địa chỉ mang cả hai địa chỉ IP và LIH của giao diện đi đúng, nghĩa là các giao diện đó sẽ nhận được các yêu cầu đặt.
Các LIH cũng có thể hữu ích khi RSVP được thực hiện trên một liên kết lớp phức tạp, để đồ giữa lớp IP và lưu lượng liên kết các thực thể lớp.
2.2.8. Host mẫu:
Trước khi một phiên họp có thể được tạo ra, việc xác định phiên làm việc (DestAddress, ProtocolId [, DstPort]) phải được chỉ định và truyền đạt đến tất cả những người gửi và nhận bởi cơ chế out-of-band. Khi một phiên RSVP được thiết lập, các sự kiện sau đây xảy ra tại các hệ thống kết thúc.
H1 nhận A tham gia nhóm multicast được chỉ định bởi DestAddress, using IGMP. DestAddress, sử dụng IGMP.
H2 Một người gửi tiềm năng RSVP Path bắt đầu gửi tin nhắn đến DestAddress.
H3 Một ứng dụng máy thu nhận được một thông điệp Path. H4 nhận phù hợp Resv bắt đầu gửi tin nhắn.
H5 Một ứng dụng gửi nhận tin nhắn Resv. H6 người gửi A bắt đầu gửi dữ liệu gói. Chú ý đồng bộ hóa.
H1 và H2 có thể xảy ra trong trật tự.
Giả sử một người gửi mới bắt đầu gửi dữ liệu (H6) nhưng không có các tuyến đường multicast bởi vì không nhận đã tham gia vào nhóm (H1). Sau đó, dữ liệu sẽ bị bỏ tại một số nút router cho đến khi người nhận (s) xuất hiện.
Giả sử một người gửi mới bắt đầu gửi tin nhắn Path (H2) và dữ liệu (H6) đồng thời, và có nhận nhưng không có tin nhắn Resv đến người gửi nào được nêu ra Sau đó, các dữ liệu ban đầu. có thể vào thu mà không có QoS mong muốn. Người gửi có thể giảm nhẹ vấn đề này bằng cách chờ đến của tin nhắn Resv đầu tiên (H5) trước khi nhận bất kỳ thông điệp Path (H3), RSVP sẽ trở lại các thông báo lỗi đến người nhận.
2.3. Các thành phần cơ bản trong giao thức RSVP:2.3.1. Định dạng các gói tin: 2.3.1. Định dạng các gói tin:
Một gói tin RSVP gồm có một tiêu đề chung, theo sau là bao gồm một số biến chiều dài, gõ "đối tượng". Các phần phụ sau xác định các định dạng của các tiêu đề phổ biến, tiêu đề đối tượng tiêu chuẩn, và mỗi loại thông điệp RSVP.
Đối với mỗi loại thông điệp RSVP, có một tập các quy tắc cho sự lựa chọn cho phép của các loại đối tượng. Những quy tắc này được quy định bằng cách sử dụng Backus-Naur Form (BNF) ghép với các dấu ngoặc vuông bao quanh tùy chọn phụ trình tự. BNF Các hàm ý một đơn đặt hàng cho các đối tượng trong tin nhắn. Tuy nhiên, trong nhiều (nhưng không phải tất cả các trường hợp) đối tượng làm cho không có sự khác biệt hợp lý. Một thực hiện nên tạo tin nhắn với các đối tượng theo thứ tự được hiển thị ở đây, nhưng chấp nhận các đối tượng trong bất kỳ thứ tự cho phép.
2.3.2. Các ports được sử dụng:
Một phiên RSVP thường được xác định bởi ba: (DestAddress, ProtocolId, DstPort). Dưới đây là một DstPort UDP / TCP trường điểm đến cổng (nghĩa là một số lượng 16-bit thực tại octet bù đắp 2 trong tiêu đề giao thông). DstPort có thể được bỏ qua (thiết lập không) nếu ProtocolId chỉ định một giao thức mà không có một port field trong định dạng được sử dụng bởi UDP và TCP.
RSVP cho phép bất kỳ giá trị cho ProtocolId. Tuy nhiên, kết thúc triển khai hệ thống của RSVP có thể biết về các giá trị nhất định cho lĩnh vực này, và đặc biệt là các giá trị cho UDP và TCP (17 và 6 tương ứng). Một hệ thống kết thúc có thể đưa ra một lỗi cho một ứng dụng mà một trong hai:
• xác định khác không DstPort cho một giao thức mà không có UDP / TCP.
• xác định một số không DstPort cho một giao thức rằng không có gì có UDP / TCP.
Lọc số kỹ thuật và người gửi mẫu xác định các cặp: (SrcAddress, SrcPort), nơi SrcPort là một UDP / TCP nguồn cổng trường (tức là, một số lượng 16-bit thực tại octet offset 0 trong tiêu đề giao thông). SrcPort có thể được bỏ qua (thiết lập để không) trong các trường hợp nhất định.
Các quy tắc sau đây giữ cho việc sử dụng số không DstPort và / hoặc SrcPort trường trong RSVP.
2.3.3. Gửi các gói tin RSVP:
Gói tin RSVP được gửi hop-by-hop giữa RSVP có khả năng định tuyến là "datagrams IP thô" với 46 số giao thức. Nguyên datagrams IP cũng dự định sẽ được sử dụng giữa một hệ thống kết thúc và / trước router hop qua, mặc dù nó cũng có thể gói gọn RSVP tin nhắn như UDP datagrams cho các đầu cuối truyền thống, như mô tả tại Phụ lục C. đóng gói UDP là cần thiết cho hệ thống mà không thể nào để mạng lưới thô / O.
Gói tin Path, PathTear, và ResvConf phải được gửi với tùy chọn Router IP Alert trong tiêu đề IP. Tùy chọn này có thể được sử dụng trong đường dẫn chuyển tiếp nhanh chóng của một bộ định tuyến tốc độ cao để phát hiện datagrams đó có yêu cầu xử lý đặc biệt.
Khi xuất hiện của một thông điệp M RSVP thay đổi trạng thái một nút phải gửi sửa đổi ngay lập tức. Tuy nhiên, đây không phải kích hoạt gửi một tin nhắn trên giao diện thông qua đó M đến (mà có thể xảy ra nếu việc thực hiện chỉ cần kích hoạt làm mới ngay lập tức cho tất cả các phiên). Nguyên tắc này là cần thiết để ngăn chặn cơn bão gói dữ liệu trên mạng LAN phát sóng.
Trong phiên bản này của spec, mỗi gói tin RSVP phải chiếm datagram IP một cách chính xác. Nếu nó vượt quá MTU, chẳng hạn một datagram sẽ được phân mảnh bởi IP và tại nút người nhận, điều này có một số hậu quả:
• Một RSVP đơn thư không thể vượt quá kích thước tối đa của IP datagram, khoảng 64K byte.
• Không bị ngăn trở non-RSVP đám mây có thể mất mảnh tin cá nhân, và bất kỳ đoạn bị mất sẽ mất toàn bộ tin nhắn.
RSVP sử dụng các cơ chế làm mới định kỳ để phục hồi gói không thường xuyên. Dưới tình trạng quá tải mạng, tuy nhiên thiệt hại đáng kể của gói tin RSVP có thể gây ra một sự thất bại của tài nguyên. Để kiểm soát việc chậm trễ xếp hàng và thả các gói RSVP, router phải được cấu hình để cung cấp cho một lớp ưa thích của dịch vụ. Nếu gói RSVP kinh nghiệm thiệt hại đáng chú ý khi đi qua không bị ngăn trở đám mây non-RSVP, một giá trị lớn hơn có thể được sử dụng cho các yếu tố thời gian chờ K.
2.3.4. Các gói tin báo Loops:
Chuyển tiếp tin nhắn RSVP phải tránh Looping. Trong trạng thái ổn định, gói tin Path và Resv được chuyển tiếp hop mỗi ngày chỉ một lần mỗi khoảng thời gian làm mới. Điều này tránh các gói Looping, nhưng vẫn là một khả năng tự động làm mới loop. Như tự động làm mới hoạt động "mãi mãi", ngay cả khi các nút cuối cùng đã kết thúc làm mới nó, cho đến khi nhận rời khỏi nhóm multicast hoặc những
người gửi những gửi gói tin Path. Mặt khác, lỗi và gói tin teardown được chuyển tiếp ngay lập tức và do đó phải trực tiếp Looping.
Thông tin từng loại tin. • Gói tin Path
Thông điệp Path được chuyển tiếp trong cách chính xác giống như IP của gói dữ liệu. Vì vậy không nên có vòng thư Path (ngoại trừ có lẽ cho vòng lặp định tuyến thoáng qua, mà chúng ta bỏ qua ở đây), ngay cả trong một topo với chu kỳ.
• Gói tin PathTear
Gói tin PathTear sử dụng định tuyến giống như gói tin Path và do đó có thể không lặp.
• Gói tin PathErr
Kể từ khi thông điệp Path không lặp, xác định đường đi một vòng đảo ngược đường dẫn đến mỗi người gửi. Gói tin PathErr luôn hướng đến người gửi cụ thể và do đó có thể không lặp.
• Gói tin Resv
Gói tin Resv trực tiếp tới người gửi cụ thể (tức là, với lựa chọn người gửi rõ ràng) có thể không lặp. Tuy nhiên, gói tin Resv lựa chọn người gửi với ký tự đại diện (WF phong) có một tiềm năng tự động lặp lại.
Mặc dù gói tin ResvTear được định tuyến cũng giống như gói tin Resv, trong lần thứ hai vượt qua một vòng lặp sẽ không có bất kỳ gói tin ResvTear bị bỏ. Do đó không có vấn đề Looping ở đây.
• Gói tin ResvErr
Gói tin ResvErr cho WF có thể lặp cho cùng một lý do cơ bản mà gói tin Resv lặp.
• Gói tin ResvConf
Gói tin ResvConf được chuyển tiếp hướng tới một địa chỉ người nhận cố định unicast và có thể không lặp.
2.3.5. Các thông số thời gian:
Có hai thông số thời gian có liên quan đến mỗi phần tử của RSVP path hay reservation đặt tại một nút: R khoảng thời gian làm mới giữa các thế hệ kế tiếp làm mới cho tiểu bang của các nút hàng xóm, và nhà nước địa phương đời L. Mỗi Resv RSVP hoặc gói tin Path TIME_VALUES chứa một đối tượng xác định giá trị R đã được sử dụng để tạo mới một gói tin. Giá trị R là sau đó được sử dụng để xác định giá trị cho L khi đã nhận được và được lưu trữ. Các giá trị của R và L có thể khác nhau từ hop to hop.
2.3.6. Ứng dụng RSVP / giao diện:
Phần này mô tả một giao diện chung giữa một ứng dụng và một quá trình kiểm soát RSVP. Các chi tiết của một giao diện thực sự có thể được điều hành hệ thống phụ thuộc; sau đây có thể đề nghị các chức năng cơ bản thực hiện. Một số thông tin để gây ra các cuộc gọi được trả lại không đồng bộ.
• Đăng ký kỳ họp
[ , SESSION_object ]
[ , Upcall_Proc_addr ] ) -> Session-id [, Upcall_Proc_addr]) -> Session-id • Xác định người gửi
Call: SENDER( Session-id Call
[ , Source_Address ] [ , Source_Port ] [, Source_Address] [, Source_Port] [ , Sender_Template ] [, Sender_Template]
[ , Sender_Tspec ] [ , Adspec ] [, Sender_Tspec] [, Adspec]
Các tham số SENDER được giải thích như sau: - Source_Address
Đây là địa chỉ của giao diện từ đó dữ liệu sẽ được gửi. Nếu bỏ qua, một giao diện mặc định sẽ được sử dụng. Tham số này là cần thiết chỉ trên một máy chủ người gửi.
- Source_Port
Đây là UDP / cổng TCP mà từ đó các dữ liệu sẽ được gửi. - Sender_Template
Tham số này được bao gồm như là một cơ chế thoát ra để hỗ trợ một định nghĩa tổng quát hơn của người gửi ( "cổng nguồn tổng quát"). Thông thường tham số này có thể được bỏ qua.
Tham số này mô tả các luồng giao thông được gửi đi. - Adspec
Tham số này có thể được chỉ định để khởi tạo các tính toán của QoS dọc theo đường dẫn.
- Data_TTL - Policy_data
Tham số tùy chọn các dữ liệu chính sách cho người gửi. Dữ liệu này có thể được cung cấp bởi một hệ thống dịch vụ, với việc áp dụng nó.
• Reserve Dự trữ
Call: RESERVE( session-id, [ receiver_address , ] [ CONF_flag, ] [ Policy_data, ]
Một người nhận cuộc gọi này sử dụng để thực hiện hoặc sửa đổi một đặt phòng tài nguyên cho các phiên đăng ký như `session-id '. Cuộc gọi Reserve đầu tiên sẽ bắt đầu việc truyền định kỳ các gói tin Resv. Một cuộc gọi sau này có thể dự trữ được để sửa đổi các tham số của cuộc gọi trước (nhưng lưu ý rằng việc thay đổi đặt phòng hiện có thể dẫn đến thất bại kiểm soát).
Các tùy chọn `receiver_address’ tham số có thể được sử dụng bởi một bộ tiếp nhận trên một máy chủ lưu trữ multihomed (hoặc router), nó là địa chỉ IP của một trong các giao diện của nút. Các `Policy_data’ dữ liệu xác định chính sách cho người nhận. Các cuộc gọi trả về dự trữ ngay lập tức. Sau một cuộc gọi Reserve, một lỗi hay sư kiện không đồng bộ có thể xảy ra bất cứ lúc nào.
• Release Thoát
Cuộc gọi này loại bỏ RSVP cho các session xác định bởi session-id. Nút này sau đó sẽ gửi gói tin teardown phù hợp và ngừng gửi làm mới lại session-id này.
• Error/Event Upcalls
Dạng thức thông thường của một upcall là như sau: Upcall: <Upcall_Proc>( ) -> session-id, Info_type,
Hiện nay, năm loại upcall, phân biệt bởi các tham số Info_type. Việc lựa chọn các thông số thông tin tùy thuộc vào loại này.
1. Info_type = PATH_EVENT
Một Path Sự kiện upcall kết quả từ khi nhận được gói tin Path đầu tiên cho phần này, chỉ ra cho một ứng dụng nhận rằng có ít nhất một người gửi đang hoạt động, hoặc thay đổi đường dẫn.
Upcall: <Upcall_Proc>( ) -> session-id, Info_type=PATH_EVENT,
Sender_Tspec, Sender_Template Sender_Tspec, Sender_Template [ , Adspec ] [ , Policy_data ]
Upcall này trình bày các Sender_Tspec, các Sender_Template, các Adspec, và dữ liệu từ chính sách bất kỳ một thông điệp Path.
2. Info_type = RESV_EVENT
Một upcall Resv sự kiện được kích hoạt bằng việc nhận được gói tin RESV đầu tiên, hoặc bằng cách sửa đổi của một reservation trước, cho session này.
Info_type=RESV_EVENT, Style, Flowspec, Filter_Spec_list [ , Policy_data ]
Đây `Flowspec 'sẽ là QoS có hiệu quả mà nó đã được nhận. Lưu ý rằng một gói tin FF-Resv có thể dẫn đến upcalls nhiều RESV_EVENT, một cho mỗi dòng mô tả.
3. Info_type = PATH_ERROR
Một Path Lỗi sự kiện chỉ ra một lỗi trong thông tin người gửi được xác định trong một cuộc gọi SENDER.
Upcall: <Upcall_Proc>( ) -> session-id, Info_type=PATH_ERROR,
Error_code , Error_value , Error_Node , Sender_Template [ , Policy_data_list ]
Tham số Error_code sẽ xác định lỗi, và Error_value có thể cung cấp một số (có lẽ bổ sung hệ thống cụ thể) dữ liệu về lỗi. Tham số Error_Node sẽ ghi rõ địa chỉ IP của nút đó phát hiện các lỗi. Policy_data_list tham số, nếu có sẽ chứa bất kỳ đối tượng POLICY_DATA từ gói tin Path đã thất bại.
An Resv Error event indicates an error in a reservation message to which this application contributed. An Resv Lỗi sự kiện chỉ ra một lỗi trong một thông báo đặt phòng mà ứng dụng này đã đóng góp.
Upcall: <Upcall_Proc>( ) -> session-id, Info_type=RESV_ERROR,
Error_code , Error_value , Error_Node , Error_flags , Flowspec, Filter_spec_list [ , Policy_data_list ]
Tham số Error_code sẽ xác định lỗi và Error_value có thể cung cấp một số (có lẽ bổ sung hệ thống cụ thể) dữ liệu. Tham số Error_Node sẽ ghi rõ địa chỉ IP của nút đó phát hiện các sự kiện đang được báo cáo.
There are two Error_flags: Có hai Error_flags: - InPlace