다운 스트림 UAS에서 401 응답을 프록 싱 할 때 예상되는 SIP 프록시의 동작에 대한 설명이 포함되기를 기대합니다.SIP 프록시 401 응답 처리
SIP 프록시는 라운드 로빈 방식으로 요청을 프록시 처리하도록 구성됩니다. 다운 스트림 UAS가 401을 사용하여 INVITE에 응답하는 경우 원래의 업스트림 UAC가 인증 자격 증명을 포함하는 두 번째 INVITE를 보낼 때 SIP 프록시가 대상과 동일한 UAS를 선택하기에 충분한 상태를 유지할 것으로 기대합니다.
대신 SIP 프록시가 401 응답을 프록시하고, 업스트림 UAC에서 ACK를 받고, 즉시이 대화 상자와 관련된 모든 상태를 삭제합니다. 그런 다음 업스트림 UAC가 인증 자격 증명을 사용하여 두 번째 INVITE를 보내면 SIP 프록시는 해당 요청을 라운드 로빈 방식으로 전달합니다. 운이 좋으면 SIP 프록시는 두 번째 INVITE에 대해 동일한 UAS를 선택하지만 대부분의 경우 다른 다운 스트림 대상을 선택합니다.
저는 SIP에 익숙하지 않으며 RFC 3261을 읽고 올바른 행동이 무엇인지 이해하려고 시도했지만 명확한 대답은 없습니다.
레코드 경로 또는 경로 헤더가 교환의 어디에도 삽입되어 있지 않은 것이 옳습니다. 그러나 이것이 왜 필요한지 궁금합니다. 레코드 경로는 프록시에 의해서만 삽입되므로 프록시 뒤의 다음 홉이 다른 프록시가 아니라 원격 URI (프록시가로드 균형 조정기 인 경우)와 같은 경우에는 레코드 경로 헤더에 분명히 나열되지 않습니다 . 프록시는 두 번째 INVITE를 올바르게 처리하기 위해 이전 선택을 기억해야합니다. 두 번째 INVITE에 첫 번째 INVITE의 "To-tag"가 없으므로 관련이있을 수 있습니다. – bs1982
레코드 경로 추가가 작동 중입니다. 따라서 루프에서 "빠져 나갈"수있는 프록시의 경우, 예를 들어 레코드 경로를 추가하지 않습니다. 누가 잘못되었는지 알기가 어렵습니다. Record-Route에 추가하지 않는다면 sip 프록시라고 할 수 있습니다. 초대를 처리하는 주 프록시를 비난 할 수 있습니다. 인증이 "훌륭하게"구현되면 어떤 프록시가 INVITE를 얻는지는 문제가되지 않으며 인증을 성공적으로 통과했는지 여부를 확인할 수 있어야합니다. –
요청이 서명 된 경우 사임하지 않으면 요청을 수정할 수 없다는 문제도 있습니다. 따라서 중간에있는 프록시는 상태가 없거나 요청을 인증하는 방법을 알고 있어야합니다. –