SRP(Stream Reservation Protocol)는 Ethernet AVB 네트워크에서 스트림을 보내는 쪽인 Talker부터 받는 쪽인 Listener까지, 경로상의 모든 브리지에 그 스트림이 필요로 하는 자원을 예약하는 프로토콜이다 — 데이터링크 계층(L2)에서 동작하며 IEEE 802.1Qat로 표준화되어 있다[1].
MRP 기반의 세 응용
SRP는 MRP(Multiple Registration Protocol, IEEE 802.1ak)를 기반으로 하는 세 응용의 조합이다[1].
| 프로토콜 | EtherType | 역할 |
|---|---|---|
| MMRP(Multiple MAC Registration Protocol) | 0x88F6 | 그룹 MAC 주소 등록 |
| MVRP(Multiple VLAN Registration Protocol) | 0x88F5 | VLAN ID 등록 |
| MSRP(Multiple Stream Registration Protocol) | 0x22EA | 스트림 자원 예약·해제 |
MMRP와 MVRP는 각각 멀티캐스트 전달에 필요한 그룹 MAC 주소와 VLAN 멤버십을 브리지 사이에 전파해, 스트림 프레임이 등록된 목적지로만 전달되도록 준비한다. 이 위에서 실제 대역폭 예약을 수행하는 것이 MSRP다[1].
MSRP 선언과 예약 절차
MSRP는 선언(declaration)이라는 속성 등록으로 예약 상태를 표현한다. Talker와 Listener가 보내는 선언은 다섯 가지로 나뉜다[1].
| Source | 선언 | 의미 |
|---|---|---|
| Talker | Advertise | 제공 가능한 스트림을 알림 |
| Talker | Failed | 스트림 제공을 중단함(자원 해제) |
| Listener | Ready | 스트림을 요청하며, 경로상 대역폭이 충분함 |
| Listener | Ready Failed | 스트림을 요청하나, 일부 리스너 경로의 대역폭이 부족함 |
| Listener | Asking Failed | 스트림을 요청하나, 리스너 쪽 대역폭이 부족함 |
정상적인 예약은 Talker Advertise 선언의 전파로 시작된다. Talker가 Advertise를 브로드캐스트하면 각 브리지 포트가 이를 수신해 자신의 가용 대역폭을 확인하고, 충분하면 다음 홉으로 전파한다 — 이 과정에서 선언에 실린 누적 지연(accumulated latency) 값도 홉마다 갱신된다. Listener가 Advertise를 수신하면 Ready 선언을 Talker 방향으로 유니캐스트해 돌려보내고, 경로상의 각 브리지는 이를 받아 실제 대역폭을 예약한다. Talker는 자신의 Advertise와 일치하는 Ready를 받으면 데이터 스트림 전송을 시작한다[1].
Listener가 먼저 스트림을 원하지만 아직 어떤 Talker가 그 스트림을 제공하는지 모를 때는 역순으로 시작할 수도 있다 — Listener가 Asking Failed 선언을 브로드캐스트하면, 그 스트림을 제공할 수 있는 Talker가 이를 수신해 Advertise로 응답하고, 이후 절차는 Talker 주도 흐름과 같다[1].
서비스가 끝나면 Talker는 Talker Failed 선언을 보내 예약된 대역폭을 해제한다[1].
Example
예약이 실패하는 경우는 세 갈래로 나뉜다: Listener가 이미 다른 Talker의 동일 종류 스트림을 받고 있어 새 스트림을 받을 수 없는 경우, Talker Advertise가 전파되는 도중 어느 브리지의 대역폭이 부족한 경우, Listener Ready가 전파되는 도중 실제 예약 단계에서 대역폭이 부족한 경우다. 세 경우 모두 실패가 발생한 지점에서 Asking Failed 또는 Failed 선언이 반대 방향으로 전파돼 양쪽에 통보된다[1].
Talker Advertise가 싣는 정보
Talker Advertise 선언에는 스트림을 식별하고 필요한 자원을 산정하는 데 쓰이는 필드들이 실린다 — Talker의 48비트 MAC 주소와 16비트 고유 ID를 조합한 StreamID, 목적지 MAC 주소·VLAN ID, 대역폭과 프레임 레이트로 구성되는 TSpec, SR Class 우선순위, 예약의 긴급도를 나타내는 rank, 홉마다 갱신되는 accumulated latency가 그것이다[1].
이렇게 예약된 스트림을 브리지가 실제로 어떤 순서로 내보낼지는 Credit-Based Shaper가 규정한다.