Skype for Business Server 2015 네트워크 흐름 및 로그에 대해 정리하고 싶어서 아래 링크에서 Diagram 을 다운로드 하였습니다.
Technical diagrams for Skype for Business Server 2015
https://docs.microsoft.com/ko-kr/skypeforbusiness/technical-diagrams
Diagram 첫번째가 IM and Presence 입니다.
IM 과 Presence 에 대한 부분만 해도 여러가지 흐름을 보여줍니다.
여기서 저는 아래의 테크넷 블로그 자료를 보면서 Presence 에 대해서 좀 더 살펴볼까 합니다.
(개인적으로 번역하면서 공부했다고 생각하시면 됩니다.)
Lync 2013 Explained: Understanding Presence Flow
https://blogs.technet.microsoft.com/11/2014/10/02/lync-2013-explained-understanding-presence-flow/
Presence
1. (특정한 곳에) 있음, 존재(함) 2. 있음 3. 참가, 가담, 관련
아래의 상태 표시에 대한 기능으로 이 기능을 통하여 다른 대화상대는 그 사용자의 자리 비움, 바쁨 등의 정보를 얻을 수 있습니다.
이 정보를 통하여 나와 지금 대화가 가능한지, 회의 참여가 가능한지 정보를 얻을 수 있습니다.
(비즈니스 목적에서 이 부분은 매우 중요하다고 할 수 있습니다. 또한, 카카오톡, 텔레그램과 같은 프로그램과 다른 종류로 구분 지을 수 있습니다.)
현재 상태에는 2가지 주요 활동이 있습니다. 이 부분에 대해서 알아가도록 하겠습니다.
Presence Publication
Presence Subscription
(직역하면, 현존 출판물, 현재 상태 구독)
on1@limcm.com, on2@limcm.com, 을 테스트계정으로 진행합니다.
Presence Subscription (현재 상태 구독)
원문
Presence subscription is an operation that lets the Lync client know which users that you are interested in seeing refreshed presence information from and what aspect of their enhanced presence you are interested in. When the Lync client creates a presence subscription for a set of users and a set of enhanced presence information, it sends this request or subscription to Lync server. Then the Lync server responds back with the latest information about the user in response back to the Lync client. Presence subscription happens when one user is trying get the update presence information of another user.
번역기
현재 상태 구독은 새로 고침 된 현재 상태 정보를 보려는 사용자와 관심이 있는 향상된 현재 상태를 보고 싶은 사용자를 Lync 클라이언트에 알리는 작업입니다. Lync 클라이언트가 사용자 집합에 대한 현재 상태 구독을 만들고 향상된 현재 상태 정보 세트를 받으면 Lync Server에 이 요청 또는 구독을 보냅니다. 그런 다음 Lync 서버는 Lync 클라이언트에 대한 응답으로 사용자에 대한 최신 정보로 응답합니다. 현재 사용자 가입은 다른 사용자의 업데이트 상태 정보를 얻으려고 할 때 발생합니다.
구독의 의미는 정기적으로 나의 관심대상에 대해서 정기적으로 최신 정보를 얻는다는 의미 입니다.
Snooper 를 통해서 아래와 같이 로그 기록이 남는 것을 확인할 수 잇습니다.
Snooper 에서 확인시 접속시, 그리고 중간, 접속 종료시에 SUBSCRIBE 를 확인할 수 있었습니다.
(상태를 변경한 것과 상관 없음)
접속시
로그아웃
Flow Chart 와 함께 상세 로그를 살펴보았습니다.
여기서 192.168.1.51 은 on1@limcm.com 이 접속한 외부망 사설 IP 입니다.
211.208.253.66 은 acc.limcm.com Access Edge 서버주소입니다.
Subscribe 기록
03/30/2018|10:57:58.371 2738:14E0 INFO :: Sending Packet - 211.208.253.66:5061 (From Local Address: 192.168.1.51:51882) 1534 bytes: <-Client (192.168.1.51)에서 Edge Pool or Server (211.208.253.66:5061)로 패킷 전송 03/30/2018|10:57:58.371 2738:14E0 INFO :: SUBSCRIBE sip:on1@limcm.com SIP/2.0 <-on1@limcm.com 이 Subscribe 정보 요청 Via: SIP/2.0/TLS 192.168.1.51:51882 Max-Forwards: 70 From: <sip:on1@limcm.com>;tag=0bc7b0fc1e;epid=08b5b444f3 To: <sip:on1@limcm.com> Call-ID: 3e027202ab3c4ccabed634c1edd89f72 CSeq: 1 SUBSCRIBE Contact: <sip:on1@limcm.com;opaque=user:epid:rD_-D8k_BF-h0APnlXF6WwAA;gruu> User-Agent: UCCAPI/16.0.9126.2072 OC/16.0.9126.2098 (Skype for Business) <- Client 버전 기록 Event: presence <- Event 기록 Accept: application/msrtc-event-categories+xml, application/xpidf+xml, text/xml+msrtc.pidf, application/pidf+xml, application/rlmi+xml, multipart/related Supported: com.microsoft.autoextend Supported: ms-benotify Supported: ms-piggyback-first-notify Supported: eventlist Proxy-Require: ms-benotify Require: adhoclist, categoryList Proxy-Authorization: TLS-DSK qop="auth", realm="SIP Communications Service", opaque="F901448D", targetname="FE01.limcm.com", crand="bcc1abbd", cnum="3", response="805bfc9c03947e62ca1bb25201557ff5ca2103ef105c3e20e07a330e4a7a49208523053e6b069233b662ccd3c2be4bf8" Content-Type: application/msrtc-adrl-categorylist+xml Content-Length: 451 - <batchSub xmlns="http://schemas.microsoft.com/2006/01/sip/batch-subscribe" uri="sip:on1@limcm.com" name=""> + <action name="subscribe" id="469416112"> </batchSub> 03/30/2018|10:57:58.371 2738:14E0 INFO :: End of Sending Packet - 211.208.253.66:5061 (From Local Address: 192.168.1.51:51882) 1534 bytes |
200 OK 기록
03/30/2018|10:57:58.434 2738:14E0 INFO :: Data Received -211.208.253.66:5061 (To Local Address: 192.168.1.51:51882) 3606 bytes: <-서버로 부터 응답 받음 03/30/2018|10:57:58.434 2738:14E0 INFO :: SIP/2.0 200 OK ms-user-logon-data: RemoteUser Authentication-Info: TLS-DSK qop="auth", opaque="F901448D", srand="4B93DB5E", snum="4", rspauth="fcdbccfe1ebfe7741e1f08f34043562e9aad664caa7709f8746f7f4d5a61338c8547ad4a1e124467fed95d3efb1059c4", targetname="FE01.limcm.com", realm="SIP Communications Service", version=4 Contact: <sip:pool.limcm.com:5061;transport=tls;ms-fe=FE00.limcm.com> <-Front end pool Content-Length: 2368 From: "On 1"<sip:on1@limcm.com>;tag=0bc7b0fc1e;epid=08b5b444f3 To: <sip:on1@limcm.com>;tag=6C3D0080 Call-ID: 3e027202ab3c4ccabed634c1edd89f72 CSeq: 1 SUBSCRIBE Via: SIP/2.0/TLS 192.168.1.51:51882;received=211.208.253.61;ms-received-port=51882;ms-received-cid=17700 <- Client PC 의 Public, Private IP, Protocol, Port 정보 Expires: 31535 Require: eventlist Content-Type: multipart/related; type="application/rlmi+xml";start=resourceList; boundary=5163ac81d4494d259d913ed7e3ea321e Event: presence subscription-state: active;expires=31535 ms-piggyback-cseq: 1 Supported: ms-piggyback-first-notify Record-Route: <sip:pool.limcm.com:5061;transport=tls;ms-fe=FE01.limcm.com;lr;received=192.168.1.7;ms-received-cid=17F00> ->Front end pool Routing 기록 Record-Route: <sip:acc.limcm.com:5061;transport=tls;opaque=state:Ci.R17700;lr;ms-route-sig=hjYJE0zur8BuSeMjnBg_QVX9vF0p1Tow4iq4agMpLoPhkRTkyoIyDg7wAA> -> Access Edge Routing 기록 --5163ac81d4494d259d913ed7e3ea321e Content-Transfer-Encoding: binary Content-ID: resourceList Content-Type: application/rlmi+xml - <list xmlns="urn:ietf:params:xml:ns:rlmi" uri="sip:on1@limcm.com" version="0" fullState="false"> </list> --5163ac81d4494d259d913ed7e3ea321e Content-Transfer-Encoding: binary Content-Type: application/msrtc-event-categories+xml - <categories xmlns="http://schemas.microsoft.com/2006/09/sip/categories" uri="sip:on2@limcm.com"> ->on2 계정에 대한 정보 전달 + <category name="calendarData" instance="2626090389" publishTime="2018-03-29T05:35:39.263"> + <category name="calendarData" instance="1552348565" publishTime="2018-03-29T05:35:39.263"> + <category name="contactCard" instance="0" publishTime="2018-03-29T05:31:05.510"> + <category name="contactCard" instance="4" publishTime="2018-03-29T23:58:15.310"> <category name="note"/> + <category name="state" instance="0" publishTime="2018-03-30T01:09:11.847"> <category name="services"/> </categories> --5163ac81d4494d259d913ed7e3ea321e-- 03/30/2018|10:57:58.434 2738:14E0 INFO :: End of Data Received -211.208.253.66:5061 (To Local Address: 192.168.1.51:51882) 3606 bytes
|
서버로 부터 응답받은 200 OK 에서 연락처카드, 일정정보 등에 대한 업데이트가 진행됨을 확인할 수 있습니다.
Technet Diagram 으로 표현하면 다음과 같은 흐름 입니다.
*참고*
여기서 기술자료상의 Diagram 과 Access Edge Port 정보가 다른 이유(Technet Diagram 은 443)는 제 구성환경은 Edge Pool 을 단일 IP 로 설정하였으며, Access Edge Service는 5061 Port를 사용하기 때문입니다.
Presence Publication (현재 상태 게시)
원문
The question here is how the Lync server does some to know of a user’s presence? Presence publication is the publishing of user local presence information using the Lync Client after the user signs in for the use of other users who have subscribed to this presence. Your application can set the presence of the local signed-in user to such availability as available, busy, do not disturb, be right back, off work, or appear away. Presence publication happens when one user is trying update its own presence information to another user.
번역
여기서 Lync 서버가 사용자의 존재에 대해 알 수있는 방법은 무엇입니까? 현재 상태 게시는 사용자가 이 현재 상태에 가입 한 다른 사용자의 사용을 위해 로그인 한 후 Lync Client를 사용하여 사용자 로컬 현재 상태 정보를 게시하는 것입니다. 응용 프로그램은 로컬 로그인 사용자의 상태를 사용 가능, 사용 중, 방해하지 말고, 바로 뒤로, 작업을하지 않거나 멀리 나타나도록 설정할 수 있습니다. 현재 게시는 한 사용자가 자신의 현재 상태 정보를 다른 사용자에게 업데이트하려고 할 때 발생합니다.
Presence Subscription 이 정보를 얻을 때 발생하는 동작이라면, Presence Publication 현재 사용자의 정보를 업데이트 할 때 발생합니다.
on2@limcm.com 기준 흐름
Snooper 로 확인
SERVICE 기록
04/02/2018|18:21:48.021 1EC:1F0 INFO :: Sending Packet - 211.208.253.66:5061 (From Local Address: 192.168.1.54:49816) 1496 bytes: -> Client 에서 Access Edge로 패킷 전송 04/02/2018|18:21:48.021 1EC:1F0 INFO :: SERVICE sip:on2@limcm.com SIP/2.0 Via: SIP/2.0/TLS 192.168.1.54:49816 Max-Forwards: 70 From: <sip:on2@limcm.com>;tag=af89299b00;epid=0a4b9de062 To: <sip:on2@limcm.com> Call-ID: 378053f311134d51b31f366877fcc961 CSeq: 1 SERVICE Contact: <sip:on2@limcm.com;opaque=user:epid:-DJ-jixsE1iniiysRLkUJwAA;gruu> User-Agent: UCCAPI/16.0.9029.2253 OC/16.0.9029.2253 (Skype for Business) Proxy-Authorization: TLS-DSK qop="auth", realm="SIP Communications Service", opaque="C8052402", targetname="FE01.limcm.com", crand="e462b095", cnum="350", response="391b117b38e5ff45162fa68869d5f16973edc48b" Content-Type: application/msrtc-category-publish+xml Content-Length: 827 - <publish xmlns="http://schemas.microsoft.com/2006/09/sip/rich-presence"> + <publications uri="sip:on2@limcm.com"> </publish> 04/02/2018|18:21:48.021 1EC:1F0 INFO :: End of Sending Packet - 211.208.253.66:5061 (From Local Address: 192.168.1.54:49816) 1496 bytes |
200 OK
04/02/2018|18:21:48.052 1EC:1F0 INFO :: Data Received -211.208.253.66:5061 (To Local Address: 192.168.1.54:49816) 5810 bytes: 04/02/2018|18:21:48.052 1EC:1F0 INFO :: SIP/2.0 200 OK ms-user-logon-data: RemoteUser Authentication-Info: TLS-DSK qop="auth", opaque="C8052402", srand="5E0CA356", snum="350", rspauth="6d33615f7e8435fca21f37a02287ec50623a4968", targetname="FE01.limcm.com", realm="SIP Communications Service", version=4 Content-Length: 5170 From: "On 2"<sip:on2@limcm.com>;tag=af89299b00;epid=0a4b9de062 To: <sip:on2@limcm.com>;tag=DD8492CC262C8479E638B481D76FAFD3 Call-ID: 378053f311134d51b31f366877fcc961 CSeq: 1 SERVICE Via: SIP/2.0/TLS 192.168.1.54:49816;received=211.208.253.61;ms-received-port=49816;ms-received-cid=19500 Content-Type: application/vnd-microsoft-roaming-self+xml - <roamingData xmlns="http://schemas.microsoft.com/2006/09/sip/roaming-self" cat="http://schemas.microsoft.com/2006/09/sip/categories"> + <categories xmlns="http://schemas.microsoft.com/2006/09/sip/categories" uri="sip:on2@limcm.com"> </roamingData> 04/02/2018|18:21:48.052 1EC:1F0 INFO :: End of Data Received -211.208.253.66:5061 (To Local Address: 192.168.1.54:49816) 5810 bytes |
이번에는 NetMon 의 로그도 확인해 보도록 하겠습니다.
SERVICE (Client -> Edge)
Frame: Number = 82908, Captured Frame Length = 411, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[90-9F-33-59-24-52],SourceAddress:[00-15-5D-01-03-2D] - Ipv4: Src = 192.168.1.54, Dest = 211.208.253.66, Next Protocol = TCP, Packet ID = 30577, Total IP Length = 397 + Versions: IPv4, Internet Protocol; Header Length = 20 + DifferentiatedServicesField: DSCP: 0, ECN: 0 TotalLength: 397 (0x18D) Identification: 30577 (0x7771) + FragmentFlags: 16384 (0x4000) TimeToLive: 128 (0x80) NextProtocol: TCP, 6(0x6) Checksum: 0 (0x0) SourceAddress: 192.168.1.54 DestinationAddress: 211.208.253.66 + Tcp: Flags=...AP..., SrcPort=49816, DstPort=5061, PayloadLen=357, Seq=1479764573 - 1479764930, Ack=1550062678, Win=251 TLSSSLData: Transport Layer Security (TLS) Payload Data - TLS: TLS Rec Layer-1 SSL Application Data - TlsRecordLayer: TLS Rec Layer-1 SSL Application Data ContentType: SSL Application Data + Version: TLS 1.2 Length: 352 (0x160) - ApplicationData: SSLApplicationData: Binary Large Object (352 Bytes) |
200 OK (Edge -> Client)
Frame: Number = 82909, Captured Frame Length = 699, MediaType = ETHERNET + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-15-5D-01-03-2D],SourceAddress:[90-9F-33-59-24-52] - Ipv4: Src = 211.208.253.66, Dest = 192.168.1.54, Next Protocol = TCP, Packet ID = 18439, Total IP Length = 685 + Versions: IPv4, Internet Protocol; Header Length = 20 + DifferentiatedServicesField: DSCP: 0, ECN: 0 TotalLength: 685 (0x2AD) Identification: 18439 (0x4807) + FragmentFlags: 16384 (0x4000) TimeToLive: 127 (0x7F) NextProtocol: TCP, 6(0x6) Checksum: 7762 (0x1E52) SourceAddress: 211.208.253.66 DestinationAddress: 192.168.1.54 + Tcp: Flags=...AP..., SrcPort=5061, DstPort=49816, PayloadLen=645, Seq=1550062678 - 1550063323, Ack=1479764930, Win=256 TLSSSLData: Transport Layer Security (TLS) Payload Data - TLS: TLS Rec Layer-1 SSL Application Data - TlsRecordLayer: TLS Rec Layer-1 SSL Application Data ContentType: SSL Application Data + Version: TLS 1.2 Length: 640 (0x280) - ApplicationData: SSLApplicationData: Binary Large Object (640 Bytes) |
로그를 확인하다보니 생각보다 길어졌습니다.
나머지 Presence Polling 은 다음 포스팅에서 다루도록 하겠습니다.
2018/04/05 - [Lync] - Skype for Business. Snooper Tool 을 통한 Presence 흐름 이해(2)
'Lync & SFB & Team' 카테고리의 다른 글
Integrate Skype for Business Server 2015 with Exchange Server (IM) (0) | 2018.04.08 |
---|---|
Skype for Business. Snooper Tool 을 통한 Presence 흐름 이해(2) (0) | 2018.04.05 |
Skype for Business. Snooper Tool 을 사용하여 UccApilog 분석 (0) | 2018.03.29 |
Skype for Business Server 2015. Monitoring 구성 (0) | 2018.02.19 |
Skype for Business Server 2015. Office Online Server 연결 (0) | 2018.02.15 |