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)

+ Recent posts