System Modularity and Layering in Architecture and Philosophy

 
Computer Networking
 
Michaelmas/Lent Term
M/W/F 11:00-12:00
LT1 in Gates Building
 
Slide Set 2
Evangelia Kalyvianaki
2017-2018
 
1
 
Topic 2 – Architecture and Philosophy
 
Abstraction
Layering
Layers and Communications
Entities and Peers
What is a protocol?
Protocol Standardization
The architects process
How to break system into modules
Where modules are implemented
Where is state stored
Internet Philosophy and Tensions
 
 
 
2
 
Abstraction Concept
 
A mechanism for breaking down a problem
 
what
 not 
how
eg Specification 
versus 
implementation
eg Modules in programs
Allows replacement of implementations without affecting system
behavior
Vertical
 versus 
Horizontal
“Vertical”
 what happens in a box “How does it attach to the
network?”
“Horizontal” 
the communications paths running through the
system
 
Hint:
 paths are build on top of (“layered over”) other paths
 
3
Computer System Modularity
 
Partition system into modules & abstractions:
Well-defined interfaces give flexibility
H
i
d
e
s
 
i
m
p
l
e
m
e
n
t
a
t
i
o
n
 
-
 
c
a
n
 
b
e
 
f
r
e
e
l
y
 
c
h
a
n
g
e
d
Extend functionality of system by adding new
modules
 
E.g., libraries encapsulating set of functionality
 
E.g., programming language + compiler
abstracts away how the particular CPU works …
4
 
Computer System Modularity (cnt
d)
 
Well-defined interfaces hide information
Isolate 
assumptions
Present high-level 
abstractions
 
B
u
t
 
c
a
n
 
i
m
p
a
i
r
 
p
e
r
f
o
r
m
a
n
c
e
!
 
Ease of implementation vs worse
performance
 
5
Network System Modularity
 
Like software modularity, but:
Implementation is distributed across many
machines (routers and hosts)
Must decide:
How to break system into modules
L
a
y
e
r
i
n
g
Where modules are implemented
E
n
d
-
t
o
-
E
n
d
 
P
r
i
n
c
i
p
l
e
Where state is stored
F
a
t
e
-
s
h
a
r
i
n
g
6
 
Layering Concept
 
A restricted form of abstraction: system functions
are divided into layers, one built upon another
Often called a 
stack
; but 
not
 a data structure!
 
7
 
Layers and Communications
 
Interaction only between adjacent layers
layer n 
uses services provided by 
layer n-1
layer n 
provides service to 
layer n+1
Bottom layer is physical media
Top layer is application
 
8
 
Entities and Peers
 
Entity
 – a 
thing
 (an independent existence)
Entities 
interact
 with the layers above and below
Entities 
communicate
 with 
peer
 entities
same level but different place (eg different person, different
box, different host)
Communications between peers is supported by
entities at the lower layers
 
9
 
Entities and Peers
 
Entities usually do something useful
Encryption – Error correction – Reliable Delivery
Nothing at all is also reasonable
Not all communications is end-to-end
Examples for things in the middle
IP Router – Mobile Phone Cell Tower
Person translating French to English
 
10
 
Layering and Embedding
 
In Computer Networks we often see higher-layer information embedded within lower-layer
information
Such embedding can be considered a form of layering
Higher layer information is generated by stripping off headers and trailers of the current
layer
eg an IP entity only looks at the IP headers
BUT embedding is not the only form of layering
 
Layering is to help understand a communications system
NOT
determine implementation strategy
 
11
source
application
transport
network
link
physical
 
segment
 
datagram
destination
application
transport
network
link
physical
router
switch
Example Embedding
(also called Encapsulation)
 
message
 
frame
12
 
Internet protocol stack 
versus
OSI Reference Model
 
13
 
14
 
ISO/OSI reference model
 
presentation:
 allow applications to
interpret meaning of data, e.g.,
encryption, compression, machine-
specific conventions
session:
 synchronization, checkpointing,
recovery of data exchange
Internet stack 
missing
 these layers!
these services, 
if needed,
 must be
implemented in application
 
15
 
What is a protocol?
 
human protocols:
what
s the time?
I have a question
introductions
 
… specific msgs sent
… specific actions taken
when msgs received, or
other events
 
network protocols:
machines rather than
humans
all communication activity
in Internet governed by
protocols
 
protocols define format, order of msgs sent
and received among network entities,
and actions taken on msg transmission,
receipt
 
16
 
What is a protocol?
 
a human protocol and a computer network protocol:
 
Q:
 Other human protocols?
 
Hi
 
Hi
 
TCP connection
 request
Protocol Standardization
 
All hosts must  follow same protocol
Very small modifications can make a big difference
Or prevent it from working altogether
This is why we have standards
Can have multiple implementations of protocol
Internet Engineering Task Force (IETF)
Based on working groups that focus on specific
issues
Produces 
Request For Comments
 (RFCs)
I
E
T
F
 
W
e
b
 
s
i
t
e
 
i
s
 
h
t
t
p
:
/
/
w
w
w
.
i
e
t
f
.
o
r
g
R
F
C
s
 
a
r
c
h
i
v
e
d
 
a
t
 
h
t
t
p
:
/
/
w
w
w
.
r
f
c
-
e
d
i
t
o
r
.
o
r
g
17
 
18
 
So many Standards Problem
 
Many different packet-switching networks
Each with its own Protocol
Only nodes on the same network could communicate
 
19
 
INTERnet Solution
 
Gateways
Internet Design Goals (Clark ‘88)
 
C
o
n
n
e
c
t
 
e
x
i
s
t
i
n
g
 
n
e
t
w
o
r
k
s
Robust in face of failures
Support multiple types of delivery services
Accommodate a variety of networks
Allow distributed management
Easy host attachment
Cost effective
Allow resource accountability
20
Real Goals
B
u
i
l
d
 
s
o
m
e
t
h
i
n
g
 
t
h
a
t
 
w
o
r
k
s
!
Connect existing networks
Robust in face of failures
Support multiple types of delivery services
Accommodate a variety of networks
Allow distributed management
Easy host attachment
Cost effective
Allow resource accountability
Internet Motto
We reject kings , presidents, and voting. We believe in
rough consensus and running code
.
David Clark
21
In the context of the Internet
 
Applications
 
…built on…
 
…built on…
 
…built on…
 
…built on…
 
Reliable (or unreliable) transport
 
Best-effort global packet delivery
 
Best-effort local packet delivery
 
Physical transfer of bits
22
Three Observations
 
Each layer:
Depends on layer below
Supports layer above
Independent of others
 
Multiple versions in layer
Interfaces differ somewhat
Components pick which
lower-level protocol to use
 
But only one IP layer
Unifying protocol
23
23
Layering Crucial to Internet’s Success
 
 
Reuse
 
Hides underlying detail
 
Innovation at each level
can proceed in parallel
 
Pursued by very different
communities
24
24
 
What are some of the drawbacks of
protocols and layering?
 
25
Drawbacks of Layering
 
Layer N may duplicate lower layer functionality
e.g., error recovery to retransmit lost data
Information hiding may hurt performance
e.g., packet loss due to corruption vs. congestion
Headers start to get really big
e.g., typical TCP+IP+Ethernet is 54 bytes
Layer violations when the gains too great to resist
e.g., TCP-over-wireless
Layer violations when network doesn’t trust ends
e.g., firewalls
 
26
Placing Network Functionality
 
Hugely influential paper: 
End-to-End Arguments in
System Design
 by Saltzer, Reed, and Clark (
84)
articulated as the “End-to-End Principle” (E2E)
 
Endless debate over what it means
 
Everyone cites it as supporting their position
(regardless of the position!)
27
Basic Observation
 
S
o
m
e
 
a
p
p
l
i
c
a
t
i
o
n
 
r
e
q
u
i
r
e
m
e
n
t
s
 
c
a
n
 
o
n
l
y
 
b
e
 
c
o
r
r
e
c
t
l
y
i
m
p
l
e
m
e
n
t
e
d
 
e
n
d
-
t
o
-
e
n
d
reliability, security, 
etc.
 
Implementing these in the network is hard
every step along the way must be fail proof
 
Hosts
C
a
n
 
s
a
t
i
s
f
y
 
t
h
e
 
r
e
q
u
i
r
e
m
e
n
t
 
w
i
t
h
o
u
t
 
n
e
t
w
o
r
k
s
 
h
e
l
p
W
i
l
l
/
m
u
s
t
 
d
o
 
s
o
,
 
s
i
n
c
e
 
t
h
e
y
 
c
a
n
t
 
r
e
l
y
 
o
n
 
t
h
e
 
n
e
t
w
o
r
k
28
Example: Reliable File Transfer
 
Solution 1: make each step reliable, and
string them together to make reliable end-to-
end process
S
o
l
u
t
i
o
n
 
2
:
 
e
n
d
-
t
o
-
e
n
d
 
c
h
e
c
k
 
a
n
d
 
r
e
t
r
y
OS
A
p
p
l
.
OS
A
p
p
l
.
H
o
s
t
 
A
H
o
s
t
 
B
29
Discussion
 
Solution 1 is incomplete
What happens if any network element misbehaves?
Receiver has to do the check anyway!
 
Solution 2 is complete
Full functionality can be entirely implemented at application layer
with no need for reliability from lower layers
 
Is there any need to implement reliability at lower layers?
30
Summary of End-to-End Principle
 
Implementing functionality (e.g., reliability) in the network
Doesn’t reduce host implementation complexity
Does increase network complexity
Probably increases delay and overhead on all applications even
if they don’t need the functionality (e.g. VoIP)
 
However, implementing in the network can improve
performance in some cases
e.g., consider a very lossy link
 
 
31
 
“Only-if-Sufficient” Interpretation
 
 
Don’
t implement a function at the lower
levels of the system unless it can be
completely implemented at this level
 
Unless you can relieve the burden from
hosts, don’
t bother
 
32
 
“Only-if-Necessary” Interpretation
 
 
Don’
t implement 
anything
 in the network that
can be implemented correctly by the hosts
 
Make network layer absolutely minimal
This E2E interpretation trumps performance
issues
I
n
c
r
e
a
s
e
s
 
f
l
e
x
i
b
i
l
i
t
y
,
 
s
i
n
c
e
 
l
o
w
e
r
 
l
a
y
e
r
s
 
s
t
a
y
s
i
m
p
l
e
 
33
 
“Only-if-Useful” Interpretation
 
 
If hosts can implement functionality
correctly, implement it in a lower layer 
only
as a performance enhancement
But do so only if it 
does not impose burden
on applications that do not require that
functionality
 
34
 
We have some tools:
 
Abstraction
Layering
Layers and Communications
Entities and Peers
Protocol as motivation
Examples of the architects process
Internet Philosophy and Tensions
 
 
 
35
Distributing Layers Across Network
 
Layers are simple if only on a single machine
Just stack of modules interacting with those
above/below
 
But we need to implement layers across
machines
Hosts
Routers (switches)
 
What gets implemented where?
36
What Gets Implemented on Host?
 
Bits arrive on wire, must make it up to
application
 
Therefore, all layers must exist at the host
source / destination
application
transport
network
link
physical
37
What Gets Implemented on a Router?
 
Bits arrive on wire
Physical layer necessary
 
Packets must be delivered to next-hop
Datalink layer necessary
 
Routers participate in global delivery
Network layer necessary
 
Routers don’t support reliable delivery
Transport layer (and above) 
not
 supported
 
router
38
What Gets Implemented on Switches?
 
Switches do what routers do, except they don’t
participate in global delivery, just local delivery
 
They only need to support Physical and
Datalink
Don’t need to support Network layer
 
Won’t focus on the router/switch distinction
Almost all boxes support network layer these days
Routers have switches but switches do not have
routers
 
switch
39
 
The Internet 
Hourglass
 
Data Link
 
Physical
 
Applications
 
T
h
e
 
H
o
u
r
g
l
a
s
s
 
M
o
d
e
l
 
Waist
 
T
h
e
r
e
 
i
s
 
j
u
s
t
 
o
n
e
 
n
e
t
w
o
r
k
-
l
a
y
e
r
 
p
r
o
t
o
c
o
l
,
 
I
P
.
The 
narrow waist
 facilitates 
interoperability
.
SMTP
HTTP
NTP
DNS
TCP
UDP
IP
Ethernet
SONET
802.11
 
Transport
Fiber
Copper
Radio
 
IP
 
40
Alternative to Standardization?
 
Have one implementation used by everyone
 
Open-source projects
Which has had more impact, Linux or POSIX?
 
Or just sole-sourced implementation
Skype, many P2P implementations, etc.
41
A Multitude of Apps Problem
 
Re-implement every application for every technology?
No! But how does the Internet design avoid this?
S
k
y
p
e
 
S
S
H
N
F
S
C
o
a
x
i
a
l
 
c
a
b
l
e
F
i
b
e
r
o
p
t
i
c
A
p
p
l
i
c
a
t
i
o
n
T
r
a
n
s
m
i
s
s
i
o
n
M
e
d
i
a
42
Solution: Intermediate Layers
Introduce intermediate layers that provide 
set of abstractions
for various network functionality and technologies
A new app/media implemented only once
Variation on 
add another level of indirection
S
k
y
p
e
 
S
S
H
N
F
S
C
o
a
x
i
a
l
 
c
a
b
l
e
F
i
b
e
r
o
p
t
i
c
A
p
p
l
i
c
a
t
i
o
n
T
r
a
n
s
m
i
s
s
i
o
n
M
e
d
i
a
I
n
t
e
r
m
e
d
i
a
t
e
 
l
a
y
e
r
s
43
Slide Note

Topic 2

Embed
Share

Explore the concepts of abstraction, layering, and protocol in computer systems. Learn how to break down systems into modules, where state is stored, and the importance of standardization. Delve into the implications of modularity in computer and network systems, highlighting the balance between flexibility and performance.

  • System Modularity
  • Abstraction
  • Layering
  • Protocol
  • Computer Systems

Uploaded on Jul 29, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Topic 2 Architecture and Philosophy Abstraction Layering Layers and Communications Entities and Peers What is a protocol? Protocol Standardization The architects process How to break system into modules Where modules are implemented Where is state stored Internet Philosophy and Tensions 2

  2. Abstraction Concept A mechanism for breaking down a problem what not how eg Specification versus implementation eg Modules in programs Allows replacement of implementations without affecting system behavior Vertical versus Horizontal Vertical what happens in a box How does it attach to the network? Horizontal the communications paths running through the system Hint:paths are build on top of ( layered over ) other paths 3

  3. Computer System Modularity Partition system into modules & abstractions: Well-defined interfaces give flexibility Hides implementation - can be freely changed Extend functionality of system by adding new modules E.g., libraries encapsulating set of functionality E.g., programming language + compiler abstracts away how the particular CPU works 4

  4. Computer System Modularity (cntd) Well-defined interfaces hide information Isolate assumptions Present high-level abstractions But can impair performance! Ease of implementation vs worse performance 5

  5. Network System Modularity Like software modularity, but: Implementation is distributed across many machines (routers and hosts) Must decide: How to break system into modules Layering Where modules are implemented End-to-End Principle Where state is stored Fate-sharing 6

  6. Layering Concept A restricted form of abstraction: system functions are divided into layers, one built upon another Often called a stack; but not a data structure! thoughts speaking 1 words speaking 2 phonemes speaking 3 7 KHz analog voice D/A, A/D 8 K 12 bit samples per sec companding 8 KByte per sec stream multiplexing Framed Byte Stream framing Bitstream modulation 7 Analog signal

  7. Layers and Communications Interaction only between adjacent layers layer n uses services provided by layer n-1 layer n provides service to layer n+1 Bottom layer is physical media Top layer is application n + 1 layer n layer n - 1 layer 8

  8. Entities and Peers Entity a thing (an independent existence) Entities interact with the layers above and below Entities communicate with peer entities same level but different place (eg different person, different box, different host) Communications between peers is supported by entities at the lower layers 4 4 3 3 2 2 1 1 9

  9. Entities and Peers Entities usually do something useful Encryption Error correction Reliable Delivery Nothing at all is also reasonable Not all communications is end-to-end Examples for things in the middle IP Router Mobile Phone Cell Tower Person translating French to English 4 4 3 3 2 2 2 10 1 1 1 1

  10. Layering and Embedding In Computer Networks we often see higher-layer information embedded within lower-layer information Such embedding can be considered a form of layering Higher layer information is generated by stripping off headers and trailers of the current layer eg an IP entity only looks at the IP headers BUT embedding is not the only form of layering H T T P d a t a ( p a y l o a d ) H T T P h e a d e r Layering is to help understand a communications system NOT determine implementation strategy T C P h e a d e r T C P p a y l o a d I P h e a d e r I P p a y l o a d Ethernet header p a c k e t c h e c k s u m Ethernet payload 11

  11. Example Embedding (also called Encapsulation) source message M application transport network link physical segment Ht Ht M datagram Hn Hn Hn Ht Ht M frame Hl M link physical switch destination network link physical Hn Ht M Hl Hn Ht M Hn Ht M application transport network link physical M Ht M Hn Ht M router Hl Hn Ht M 12

  12. Internet protocol stack versus OSI Reference Model Presentation Application Transport Reference Data Link Physical Network Session Model OSI code-group using 8B/10B block coding scheme CODING: Each byte encoded into a 10 bit MODULATION: Digital electrical signal converted to analogue optical signal and transmitted on fibre FRAMING: Ethernet payload consists of individual octets ...0010101011110010110100001110001010101001... Ethernet header ...110100100101010100110101110011... ... Ethernet payload 1 0 1 header header TCP IP ...GET http://www.google.co.uk 1 0 1 0 TCP payload IP payload 0 0 c h e c k s u m p a c k e t 1 ... Application Transport Data Link Physical Network Protocol Internet stack 13

  13. ISO/OSI reference model presentation: allow applications to interpret meaning of data, e.g., encryption, compression, machine- specific conventions session: synchronization, checkpointing, recovery of data exchange Internet stack missing these layers! these services, if needed, must be implemented in application application presentation session transport network link physical 14

  14. What is a protocol? human protocols: what s the time? I have a question introductions network protocols: machines rather than humans all communication activity in Internet governed by protocols specific msgs sent specific actions taken when msgs received, or other events protocols define format, order of msgs sent and received among network entities, and actions taken on msg transmission, receipt 15

  15. What is a protocol? a human protocol and a computer network protocol: Hi TCP connection request Hi TCP connection response Got the time? 2:00 GET http://www.cl.cam.ac.uk/index.html <file> time Q: Other human protocols? 16

  16. Protocol Standardization All hosts must follow same protocol Very small modifications can make a big difference Or prevent it from working altogether This is why we have standards Can have multiple implementations of protocol Internet Engineering Task Force (IETF) Based on working groups that focus on specific issues Produces Request For Comments (RFCs) IETF Web site is http://www.ietf.org RFCs archived at http://www.rfc-editor.org 17

  17. So many Standards Problem Many different packet-switching networks Each with its own Protocol Only nodes on the same network could communicate 18

  18. INTERnet Solution Gateways 19

  19. Internet Design Goals (Clark 88) Connect existing networks Robust in face of failures Support multiple types of delivery services Accommodate a variety of networks Allow distributed management Easy host attachment Cost effective Allow resource accountability 20

  20. Real Goals Internet Motto We reject kings , presidents, and voting. We believe in rough consensus and running code. David Clark Build something that works! Connect existing networks Robust in face of failures Support multiple types of delivery services Accommodate a variety of networks Allow distributed management Easy host attachment Cost effective Allow resource accountability 21

  21. In the context of the Internet Applications built on Reliable (or unreliable) transport built on Best-effort global packet delivery built on Best-effort local packet delivery built on Physical transfer of bits 22

  22. Three Observations Each layer: Depends on layer below Supports layer above Independent of others Multiple versions in layer Interfaces differ somewhat Components pick which lower-level protocol to use But only one IP layer Unifying protocol 23 23

  23. Layering Crucial to Internets Success Reuse Hides underlying detail Innovation at each level can proceed in parallel Pursued by very different communities 24 24

  24. What are some of the drawbacks of protocols and layering? 25

  25. Drawbacks of Layering Layer N may duplicate lower layer functionality e.g., error recovery to retransmit lost data Information hiding may hurt performance e.g., packet loss due to corruption vs. congestion Headers start to get really big e.g., typical TCP+IP+Ethernet is 54 bytes Layer violations when the gains too great to resist e.g., TCP-over-wireless Layer violations when network doesn t trust ends e.g., firewalls 26

  26. Placing Network Functionality Hugely influential paper: End-to-End Arguments in System Design by Saltzer, Reed, and Clark ( 84) articulated as the End-to-End Principle (E2E) Endless debate over what it means Everyone cites it as supporting their position (regardless of the position!) 27

  27. Basic Observation Some application requirements can only be correctly implemented end-to-end reliability, security, etc. Implementing these in the network is hard every step along the way must be fail proof Hosts Can satisfy the requirement without network s help Will/must do so, since they can t rely on the network 28

  28. Example: Reliable File Transfer Host A Host B Appl. Appl. OS OS OK Solution 1: make each step reliable, and string them together to make reliable end-to- end process Solution 2: end-to-end check and retry 29

  29. Discussion Solution 1 is incomplete What happens if any network element misbehaves? Receiver has to do the check anyway! Solution 2 is complete Full functionality can be entirely implemented at application layer with no need for reliability from lower layers Is there any need to implement reliability at lower layers? 30

  30. Summary of End-to-End Principle Implementing functionality (e.g., reliability) in the network Doesn t reduce host implementation complexity Does increase network complexity Probably increases delay and overhead on all applications even if they don t need the functionality (e.g. VoIP) However, implementing in the network can improve performance in some cases e.g., consider a very lossy link 31

  31. Only-if-Sufficient Interpretation Don t implement a function at the lower levels of the system unless it can be completely implemented at this level Unless you can relieve the burden from hosts, don t bother 32

  32. Only-if-Necessary Interpretation Don t implement anything in the network that can be implemented correctly by the hosts Make network layer absolutely minimal This E2E interpretation trumps performance issues Increases flexibility, since lower layers stay simple 33

  33. Only-if-Useful Interpretation If hosts can implement functionality correctly, implement it in a lower layer only as a performance enhancement But do so only if it does not impose burden on applications that do not require that functionality 34

  34. We have some tools: Abstraction Layering Layers and Communications Entities and Peers Protocol as motivation Examples of the architects process Internet Philosophy and Tensions 35

  35. Distributing Layers Across Network Layers are simple if only on a single machine Just stack of modules interacting with those above/below But we need to implement layers across machines Hosts Routers (switches) What gets implemented where? 36

  36. What Gets Implemented on Host? Bits arrive on wire, must make it up to application Therefore, all layers must exist at the host source / destination application transport network link physical M Ht M Hn Ht M Hl Hn Ht M 37

  37. What Gets Implemented on a Router? network link physical Hn Ht M Bits arrive on wire Physical layer necessary Hl Hn Ht M Hn Ht M Packets must be delivered to next-hop Datalink layer necessary router Routers participate in global delivery Network layer necessary Routers don t support reliable delivery Transport layer (and above) not supported 38

  38. What Gets Implemented on Switches? Switches do what routers do, except they don t participate in global delivery, just local delivery They only need to support Physical and Datalink Don t need to support Network layer Won t focus on the router/switch distinction Almost all boxes support network layer these days Routers have switches but switches do not have routers link Hl Hn Ht M physical 39 switch

  39. The Internet Hourglass Applications SMTP HTTP DNS NTP Transport TCP UDP Waist IP IP Data Link Ethernet SONET 802.11 Physical The Hourglass Model Copper Fiber Radio There is just one network-layer protocol, IP. The narrow waist facilitates interoperability. 40

  40. Alternative to Standardization? Have one implementation used by everyone Open-source projects Which has had more impact, Linux or POSIX? Or just sole-sourced implementation Skype, many P2P implementations, etc. 41

  41. A Multitude of Apps Problem SSH NFS HTTP Skype Application Coaxial cable Fiber optic Radio Transmission Media Re-implement every application for every technology? No! But how does the Internet design avoid this? 42

  42. Solution: Intermediate Layers Introduce intermediate layers that provide set of abstractions for various network functionality and technologies A new app/media implemented only once Variation on add another level of indirection SSH NFS HTTP Skype Application Intermediate layers Coaxial cable Fiber optic Packet radio Transmission Media 43

Related


More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#