740 likes | 1.31k Views
Resource ReSerVation Protocol (RSVP). Version 1. Functional Specification.(rfc 2205). 네트워크연구실 오 승 훈. Introduction. 경로상의 모든 router 에 자원 할당 , QoS Transport 계층에서 동작 ( ICMP, IGMP 와 같은 메시지 ) Route 정보를 얻기 위해 routing database 참조 . Multicast 인 경우
E N D
Resource ReSerVation Protocol(RSVP) Version 1. Functional Specification.(rfc 2205) 네트워크연구실 오 승 훈
Introduction • 경로상의 모든 router에 자원 할당, QoS • Transport 계층에서 동작( ICMP, IGMP 와 같은 메시지) • Route 정보를 얻기 위해 routing database 참조 . • Multicast 인 경우 • Host에서 IGMP를 먼저 보냄(multicast group에 join) • RSVP 자원 할당.
Introduction. • Receiver host의 응용이 RSVP데몬에 자원 할당 요청을 전달. • 경로상의 모든 host의 RSVP의 데몬과 통신하여 자원을 할당한다. • Receiver host의 응용이 데이타전송.
Traffic control 을 위한 구성요소 • Classifier (분류자) • Admission control • Packet scheduler. • 자원 예약 과정에 수락제어와 정책 제어가 이루어진다. • Soft state. ( refresh )
RSVP 의 특징 • For unicast, and many-to-many multicast applications • Simplex • Receiver-oriented • Soft state • Several reservation models or styles • Transparent operation through router that do not support it • IPv4/ IPv6
Session ? • Dst address, Protocol ID, Dst port 로 식별되는 dataflow. • RSVP Reservation Request 구성 • Flow spec & Filter spec 데이터 패킷의 집합의 정의(flow) desired QoS node의 scheduler의 파라메터를 설정 Classifier의 파라메터를 설정
Flow spec • 구성 • R-spec(Reservation) : desired QoS, • T-spec(Traffic) : data flow 를 정의 • Filter spec(depends on IPv4 / IPv6) • 세션속에서 Packet들의 집합 결정, (Sender의 정보를 이용, IP-addr , port#)
RSVP Reservation request를 받은 중간 node 의 행동. • 1. Make reservation on a link. • RSVP 데몬이 이 request를 Policy control, admission control 를 통해 수용여부결정.? • NO,-- Error message 를 전송. • YES,-- filter spec에 의해 classifier 설정 flow spec에 의한 QoS를 설정( link layer or scheduler) • 2. Forwarding the request upstream. • Toward upstream. • Hop-hop 단위로, 각각의 node의 flow spec 변경 가능 ,
Reservation styles • 자원 공유 방법에 따라 • Shared : 송신자들이 자원 공유 • Distinct : 자원을 배타적으로 할당. • 송신자(sender)지정 방법에 따라 • Explicit : 특정 송신자 지정 • Wildcard : 모든 송신자
예약방식 • WF(wildcard-Filter) • Pipe 같은 것 • WF-style reservation request • WF( * {Q} ) • * : Wildcard sender, Q : flow spec. • FF (Fixed-Filter style) • Distinct reservation , explicit sender • FF( S{q}) • 동시 다중지원 가능 : FF( S1{Q1}, S2{Q2}, … )
예약방식 • SE (Shared Explicit style) • A single reservation shared by selected upstream senders • SE( (s1,s2,…){Q} ) ** WF 와 SE 는 multicast 응용에 적합.
RSVP protocol Mechanism- messages 메시지 종류와 방향. *Reservation state in each node along the path(s) *Resv 메시지를 받으면 적절한 traffic control parameter 가 설정된다.
Path message. • downstream, unicast/multicast routers, • store “path state” in the each node along the path. • The contents. • Sender Template • Sender가 보낼 data format • Filter spec형식 • Specify only sender IP address , optionally UDP/TCP port. • Sender Tspec • Sender 가 만들 data flow 의 traffic 특성 • Adspec • (may) Carry a packet of OPWA advertising information • 수신 local traffic controler에 전달 updated one returned forwarding.
Soft state • Refreshed by Path and Resv msg • State 가 제거 되는 경우 • Refresh timeout! • By explicit ‘teardown’ message • 저장된 state 가 갱신되어서 변했을 경우 • Refresh msg 를 만들어서 즉시 forwarding modification propagated to endsystem immediately • Independent reservation in the two direction.
Teardown • Remove path or reservation state immmediately • 종류 • PathTear : • towards all receiver downstream • Delete Path states • Granularity for teardown : single sender • ResvTear • Towards all sender upstream • Delete Reservation states • Granularity : individual filterspec
Errors-ResvErr, PathErr • Path Err • Simple, 단지 upstream sender에게 error정보만 전달. • No change in Path state in the node • Few possible to occure.
PathErr • Must be reported to all responsible receiver • Killer-reservation problem(1) • KR-II • Q0 가 이미 저장 • New Q1 예약 요청(Q1>Q0) • Q1으로 병합 previous hop 에게 요청 • Previous hop 에거 수락을 거절. • 이미 있던 Q1마저 해제 된다.
Killer-reservation problem(2) • KR-II
KR-II의 해결책 • Resv msg 는 각 노드에 Blockade state를 만든다. • Blockade state : 요구가 너무 커서 거절당한 flowspec 를 저장. 같은 flow spec이 병합 되는 것을 막아준다.
정책 제어와 보안 • 특정 사용자에 의한 망 자원의 독점을 막고자 • 정책제어 & 수락제어를 사용 • 정책 데이터 • 사용자, 사용자 계층, 계정 번호, 제한 사항. • 이런 데이터는 보안을 위해 암호화 되어 전송.
Non-RSVP clouds • Non-RSVP node 경유가능 , 그러나 Qos보장 안됨 • Non RSVP host가 바로 옆에 있는 경우. • Non RSVP flag bit를 설정해서 local traffic controller에 전달 local traffic controller는 Adspec를 이용해서 수신자에게 보낸다. • LIH(logical Interface handle) 사용 • Resv msg가 다른 RSVP-capable node에 도착할 가능성 • 맞은 node의 다른 interface에 도착할 가능성 • Path message 의 previous hop 정보에 IP address 와 LIH 정보를 넣는다. path state 정보로 저장.
Host model • Session 생성 전 • Session ID(Dst Addr, Protocol ID, [Dst port])가 할당되고 모든 수신자와 송신자에게 전달되어야 한다. (by out-of-band) • RSVP session setup H1. 수신자가 IGMP를 사용하여 다중 전송그룹에 가입 H2. 송신자 수신자 : Path msg. H3. 수신자 응용이 Path msg 수신 H4. 수신자는 적당한 Resv msg를 보낸다. H5. 송신자는 Resv msg를 수신. H6, 송신자는 데이터 전송 시작.
RSVP Functional Spec-message format • Common header • RSVP length : common header 포함 • (various-length object) • Msg Type • 1:path, 2:Resv, 3:PathErr, 4:ResvErr, • 5:Pathtear, 6:ResvTear, 7:ResvConf
Packet form. • Message –Header -Body–objects - header - body. Type 정보로 구별 C-type 값을 새로 정의 해서 새로운 서비스 확장
Object format • One word(32bits) header • Length : 전체 객체의 길이로써 항상 4의 배수이다. • Class-Num : 객체 계층을 구별하기 위한 번호이다. ① NULL : 이 부분은 무시된다. ② SESSION : 모든 RSVP메시지 안에 필요한 IP 주소, IP 프로토콜 ID 그리고 수신자 포트가 있고 IPv4 세션과 IPv6 세션으로 구별된다. ③ RSVP_HOP : RSVP를 지원하는 노드의 이전 또는 다음 홉의 주소
④ TIME_VALUES : 경로 또는 예약 재확인의 빈도수를 나타낸다. ⑤ STYLE : 예약 방식을 나타낸다. ⑥ FLOWSPEC : 예약 메시지 안에 요구된 서비스 품질을 나타낸다. ⑦ FILTER_SPEC : 플로우에 대한 설명으로 수신자 주소와 IP 플로우 레벨을 가진다. ⑧ SENDER_TEMPLATE : 송신자에 관한 정보를 가진다. ⑨ SENDER_TSpec : 송신자 데이터의 트래픽 특징을 나타낸다. ⑩ ADSPEC : OPWA정보 데이터를 전송하며 종단간의 통신 경로 특성 을 수신자에게 알린다. ⑪ ERROR_SPEC : PathErr와 ResvErr의 에러에 대해 설명한다. ⑫ POLICY_DATA : 플로우에 대한 정책 데이터를 가진다. ⑬ SCOPE : WF예약 방식의 예약 재확인 메시지가 적용되는 호스트의 목록을 나타낸다. ⑭ RESV_CONFIRM : 예약 메시지 확인을 요구한 IP 주소를 가진다.
Path message • SENDER_TEMPLATE • Data packet 형식 • SENDER_TSPEC • Flow 트래픽 특성 • [ADSPEC] • Advertising (OPWA)
Path message • <Path Message> ::= <Common Header> [ <INTEGRITY> ] • <SESSION> <RSVP_HOP> • <TIME_VALUES> • [ <POLICY_DATA> ... ] • [ <sender descriptor> ] • <sender descriptor> ::= <SENDER_TEMPLATE> • <SENDER_TSpec> • [ <ADSPEC> ]
Path message • PHOP(i.e.,RSVP_HOP) obj :previous hop address • 가장 최근에 path msg 가 보내 졌던 interface의 IP address • LIH 를 포함 • Path msg를 수신한 RSVP-capable node 의 행동. • Path msg 를 catch 해서 Path state를 만든다.(갱신) • By SEND_TEMPLATE, SESSION object • And POLICY_DATA , SENDER_TSPEC, ADSPEC obj 정장. • If error detected, PathErr을 sender에게 전송.
Resv message • RSVP_HOP(Last Hop Address ) • 예약 요청을 조정한 최근의 시스템의 정보 • STYLE • 예약 방식 FF(10), WF(17), SE(18) • Hop 단위로 전달. • IP destination of Resv msg = previous-hop node 의 unicast address • IP source of Resv msg = message 를 보낸 node 의 주소.
Resv messge-Format • <Resv Message> ::= <Common Header> [ <INTEGRITY> ] • <SESSION> <RSVP_HOP> • <TIME_VALUES> • [ <RESV_CONFIRM> ] [ <SCOPE> ] • [ <POLICY_DATA> ... ] • <STYLE> <flow descriptor list> • <flow descriptor list> ::= <empty> | • <flow descriptor list> <flow descriptor>
Resv message-Format • WF(Wildcard-Filter) Style: • <flow descriptor list> ::= <WF flow descriptor> • <WF flow descriptor> ::= <FLOWSPEC> • FF(Fixed-Filter) style: • <flow descriptor list> ::= • <FLOWSPEC> <FILTER_SPEC> | • <flow descriptor list> <FF flow descriptor> • <FF flow descriptor> ::= • [ <FLOWSPEC> ] <FILTER_SPEC> • SE(Shared-Explicit) style: • <flow descriptor list> ::= <SE flow descriptor> • <SE flow descriptor> ::= • <FLOWSPEC> <filter spec list> • <filter spec list> ::= <FILTER_SPEC> • | <filter spec list> <FILTER_SPEC>
Resv message • 예약 범위(reservation scope) • Merging 이후 특정 예약 요구가 도착될 sender들의 집합 • Explicit sender selection • Path state에 저장된 ‘SENDER_TEMPLATE”와 reservation의 FILTER_SPEC과 matching 된 것만 모든 sender에게 forwarding. • Wilder sender selection • Outgoing interface 쪽에 연결된 모든 sender들과 matching 된다. • 하나이상의 previous hop 으로 전달될 시 scope object 반드시 포함 .
Path Teardown message(PathTear) • To delete matching path state • matching: SESSION, SENDER_TEMPLATE, PHOP obj. • If No matching path state, • PathTear discarded and not forwarded. • Initiated by senders or by path state timeout in any node. • Travel downstream • If path state for the same(session, sender)pair but a different PHOP -> unicast PathTear must not be forwarded.
Path Teardown message(PathTear) • Format • <PathTear Message> ::= <Common Header> [ <INTEGRITY> ] • <SESSION> <RSVP_HOP> • [ <sender descriptor> ] • <sender descriptor> ::= (see earlier definition)
Resv Teardown message (ResvTear) • To delete matching reservation states • Matching :SESSION, STYLE, FILTER_SPEC, LIH • If no matching -> then discarded! • (may) teardown any subset of filterspec(FF-style, SE-style) • Initiated explicitly by receiver or by any node(reservation has timed out) • Hop-by-hop (travel up stream)
Resv Teardown message • Format • <ResvTear Message> ::= <Common Header> • [<INTEGRITY>] • <SESSION> <RSVP_HOP> • [ <SCOPE> ] <STYLE> • <flow descriptor list> • <flow descriptor list> ::= (see earlier definition) • Node 에서 state 변화 결과에 따라서 “ResvTear forwarding” ,modified Resv forwarding 또는 no message forwarding 를 결정된다.
Path Error Message • Report errors in processing path msg to sender applic. • Upstream, and routed hop-by-hop using path state • No modification of state of any node. • format • <PathErr message> ::= <Common Header> [ <INTEGRITY> ] • <SESSION> <ERROR_SPEC> • [ <POLICY_DATA> ...] • [ <sender descriptor> ] • <sender descriptor> ::= (see earlier definition) ** ERROR_SPEC : 에러 정보 명시, 에러 발생한 node 주소 포함 .
Resv Error Message • Report errors in processing Resv msg • Downsteam towards the appropriate receivers • Routed hop-by-hop using the reservation state • Format • <ResvErr Message> ::= <Common Header> [ <INTEGRITY> ] • <SESSION> <RSVP_HOP> • <ERROR_SPEC> [ <SCOPE> ] • [ <POLICY_DATA> ...] • <STYLE> [ <error flow descriptor> ] • <error flow descriptor> ::= • <WF flow descriptor> | • <FF flow descriptor> | <SE flow descriptor>
Resv Error Message • 수락제어 시 에러 발생할 경우 • 현존하는 reservation은 보존하고, ResvErr 의 ERROR_SPEC의 InPlace flag가 on 이 돼야 한다. • ResvErr 가 receiver에 도착 시 STYLE, flow descriptor, ERROR_SPEC 등이 수신단 응용으로 전달 되어야 한다.
Confirmation Messages • ResvConf msg = Reservation request의 ack. • Resv msg 의 RESV_CONFIRM obj 존재 시 ResvConf 발생 • Receiver host 으 unicast 주소로 전달(hop-by-hop) • Format • <ResvConf message> ::= <Common Header> [ <INTEGRITY> ] • <SESSION> <ERROR_SPEC> • <RESV_CONFIRM> • <STYLE> <flow descriptor list> • <flow descriptor list> ::= (see earlier definition)
Sending RSVP message • Protocol 번호 : 46 • Raw-IP-datagram 으로 RSVP를 지원하는 router사이에 hop 단위로 전송. • 실제론 UDP를 사용 • Path , PathTear, ResvConf msg 는 IP header 에 Router Alert IP option 를 사용해야 함.
Avoiding RSVP Message Loops • Refresh period 에 맞혀진 auto-refresh loop 가 발생할 가능성 있음. • keep state forever.(problem) • Forwarding on each node only once per refresh period. • ‘Resv’ and ‘ResvErr’ msg with wildcard sender selection auto-refresh looping 가능성 있음. • 해결책 • Topology 자체에 loop 가 없다면 들어온 interface으로 다시 나가지 못하게 함. • Topology에 loop가 있는 경우.SCOPE에 sender address를 명시한다.