SlideShare a Scribd company logo
1 of 40
Week 8 
SCTP and Internet Congestion control 
IPv6
Agenda 
• Congestion control 
• AIMD in TCP 
• Explicit Congestion Notification 
• SCTP 
• Principles 
• Differences with TCP 
• IPv6
TCP with mild 
congestion 
Cwnd 
Fast retransmit 
Threshold 
Fast retransmit 
Threshold 
Slow-start 
exponential increase of cwnd 
Congestion avoidance 
linear increase of cwnd
Severe congestion 
Cwnd 
Time 
Timer expiration 
Threshold 
Timer expiration 
Threshold 
Slow-start 
exponential increase of cwnd 
Congestion avoidance 
linear increase of cwnd
AIMD in TCP 
# Initialisation 
cwnd = MSS; 
ssthresh= swin; 
# Ack arrival 
if tcp.ack > snd.una : # new ack, no congestion 
if cwnd < ssthresh : 
# slow-start : increase quickly cwnd 
# double cwnd every rtt 
cwnd = cwnd + MSS 
else: 
# congestion avoidance : increase slowly cwnd 
# increase cwnd by one mss every rtt 
cwnd = cwnd+ mss*(mss/cwnd)
AIMD in TCP 
else: # duplicate or old ack 
if tcp.ack==snd.una: # duplicate acknowledgement 
dupacks++ 
if dupacks==3: 
retransmitsegment(snd.una) 
ssthresh=max(cwnd/2,2*MSS) 
cwnd=ssthresh 
else: 
dupacks=0 
# ack for old segment, ignored 
Expiration of the retransmission timer: 
send(snd.una) # retransmit first lost segment 
sshtresh=max(cwnd/2,2*MSS) 
cwnd=MSS
Examples 
• Time to transmit 6 TCP segments 
without losses 
• Time to transmit 6 TCP segments if 3rd 
is lost 
• Time to transmit 10 TCP segments if 5th 
is lost
Simplified model 
• Assume all segment losses are periodic 
and the every 1/p segment is lost 
Cwnd(segments) 
W 
W/2 
0 
0 W/2 W 3W/2 Surface 2W time(rtt) 
It can be shown that the throughput of a TCP 
connection can be approximated by : 
Maximum throughput without losses Throughput with 
losses/congestion
Tuning TCP @google 
• Target 
• Minimize time to receive result from 
search engine 
• HTTP GET in one segment 
• HTTP Response in <16 KBytes
Initial retransmission 
timer 
• What happens if SYN or SYN+ACK is 
lost ?
Initial congestion 
window 
• What is the impact of slow-start on the 
time to receive an HTTP response ?
TCP Fast Open 
• Can we we reduce the overhead of the 
three-way handshake ? 
• HTTP/1.1 
• Putting data inside SYN and 
SYN+ACK
TCP Fast Open 
SYN(Src=C,seq=x, HTTP GET) 
CONNECT.ind+HTTP GET 
CONNECT.req+Data 
SYN+ACK(Dest=C,ack=x+1,seq=y, HTTP Resp) 
ACK(Src=A,seq=x) 
• Is this safe ? 
• Risk of denial of service attack
Safe TCP Fast Open 
• How to make TCP Fast Open safe in 
the presence of attackers ? 
• Server needs to ensure that SYN 
segment does not come from a 
spoofer
Agenda 
• Congestion control 
• AIMD in TCP 
• Explicit Congestion Notification 
• SCTP 
• Principles 
• Differences with TCP 
• IPv6
Agenda 
• Congestion control 
• AIMD in TCP 
• Explicit Congestion Notification 
• SCTP 
• Principles 
• Differences with TCP 
• IPv6
SCTP 
• Segment format
SCTP connection 
establishment
INIT Chunk 
0 1 2 3 
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Type = 1 | Chunk Flags | Chunk Length | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Initiate Tag | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Advertised Receiver Window Credit (a_rwnd) | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Number of Outbound Streams | Number of Inbound Streams | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Initial TSN | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  
/ Optional/Variable-Length Parameters / 
  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
INIT-ACK chunk 
0 1 2 3 
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Type = 2 | Chunk Flags | Chunk Length | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Initiate Tag | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Advertised Receiver Window Credit | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Number of Outbound Streams | Number of Inbound Streams | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Initial TSN | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  
/ Optional/Variable-Length Parameters / 
  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
COOKIEs 
• COOKIE-ECHO 
0 1 2 3 
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Type = 10 |Chunk Flags | Length | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
/ Cookie / 
  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
• COOKIE-ACK 
0 1 2 3 
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Type = 11 |Chunk Flags | Length = 4 | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
COOKIE 
• Variable length chunk 
• Which information should be placed 
inside the COOKIE ?
Verification tag 
• Why is this tag present in all SCTP 
segments ?
Payload chunk 
0 1 2 3 
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Type = 0 | Reserved|U|B|E| Length | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| TSN | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Stream Identifier S | Stream Sequence Number n | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Payload Protocol Identifier | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  
/ User Data (seq n of Stream S) / 
  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
SACK chunk 
0 1 2 3 
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Type = 3 |Chunk Flags | Chunk Length | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Cumulative TSN Ack | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Advertised Receiver Window Credit (a_rwnd) | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Number of Gap Ack Blocks = N | Number of Duplicate TSNs = X | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Gap Ack Block #1 Start | Gap Ack Block #1 End | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
/ / 
 ...  
/ / 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Gap Ack Block #N Start | Gap Ack Block #N End | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Duplicate TSN 1 | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
/ / 
 ...  
/ / 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Duplicate TSN X | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Dealing with 
messages 
• How to enable the receiver to 
reconstruct the received messages ? 
B E Description 
============================================================ 
| 1 0 | First piece of a fragmented user message | 
+----------------------------------------------------------+ 
| 0 0 | Middle piece of a fragmented user message | 
+----------------------------------------------------------+ 
| 0 1 | Last piece of a fragmented user message | 
+----------------------------------------------------------+ 
| 1 1 | Unfragmented message | 
============================================================ 
| Table 1: Fragment Description Flags | 
============================================================
Connection release
SHUTDOWN chunks 
• SHUTDOWN 
0 1 2 3 
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Type = 7 | Chunk Flags | Length = 8 | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Cumulative TSN Ack | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
• SHUTDOWN ACK 
0 1 2 3 
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| Type = 8 |Chunk Flags | Length = 4 | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Agenda 
• Congestion control 
• SCTP 
• IPv6 
• Addressing architecture 
• Packets 
• ICMPv6
IPv6 addresses 
• Each IPv6 address is encoded in 128 bits 
• 3.4 x 10^38 possible addressable devices 
• 6.65 x 10^23 addresses per square 
meter 
• Why 128 bits ? 
IPv4 
IP version 6
Addressing 
architecture • Three types of IPv6 addresses 
• Unicast addresses 
• An identifier for a single interface. A 
packet sent to a unicast address is 
delivered to the interface identified by 
that address 
• Anycast addresses 
• An identifier for a set of interfaces. 
• Multicast addresses 
• An identifier for a set of interfaces. A 
packet sent to a multicast address is 
delivered to all interfaces identified by 
that address.
Textual representation 
• Hexadecimal format 
• FEDC:BA98:7654:3210:FEDC:BA98:7654: 
3210 
• 1080:0:0:0:8:800:200C:417A 
• Compact hexadecimal format 
• Some IPv6 addresses contain lots of zero 
• use "::" for one or more groups of 16 
zeros. 
• 1080:0:0:0:8:800:200C:417A = 
1080::8:800:200C:417A 
• FF01:0:0:0:0:0:0:101 = 
FF01::101
IPv6 unicast addresses 
interface ID 
128 bits 
N bits M bits 128-N-M bits 
Usually 64 bits 
Based on MAC Address 
global routing prefix subnet ID 
Can be used to identify the 
ISP responsible for this address 
A subnet in this ISP or 
a customer of this ISP
Agenda 
• Congestion control 
• SCTP 
• IPv6 
• Addressing architecture 
• Packets 
• ICMPv6
The IPv6 
packet format 
32 bits 
Ver Tclass Flow Label 
NxtHdr Hop Limit 
Payload Length 
Source IPv6 address 
(128 bits) 
Destination IPv6 address 
(128 bits) 
Version=6 
Traffic class 
Size of packet 
content in bytes 
Unclear utilisation 
Same as TTL 
Used to identify the type 
of the next header found 
in the packet payload
Sample packets 
Payload Length 
Payload Length 
Sequence number 
Acknowledgment number 
THL Reserved Flags 
• Identification of a TCP connection 
Window 
• IPv6 src, IPv6 dest, Source and Destination 
ports 
32 bits 
Ver Tclass Flow Label 
NxtHdr Hop Limit 
Source IPv6 address 
(128 bits) 
Destination IPv6 address 
(128 bits) 
Source port Destination port 
Length Checksum 
UDP 
32 bits 
Ver Tclass Flow Label 
NxtHdr Hop Limit 
Source IPv6 address 
(128 bits) 
Destination IPv6 address 
(128 bits) 
Source port Destination port 
Checksum Urgent pointer 
TCP 
UDP 
TCP
Agenda 
• Congestion control 
• SCTP 
• IPv6 
• Addressing architecture 
• Packets 
• ICMPv6
ICMP 
• Internet Control Message Protocol 
• Runs on top of IPv6 and provides 
various types of services 
• tools to aid debugging network 
problems 
• error reporting 
• autoconfiguration of addresses
ping6 
#ping6 www.ietf.org 
PING6(56=40+8+8 bytes) 2001:6a8:3080:2:3403:bbf4:edae:afc3 --> 
2001:1890:123a::1:1e 
16 bytes from 2001:1890:123a::1:1e, icmp_seq=0 hlim=49 time=156.905 ms 
16 bytes from 2001:1890:123a::1:1e, icmp_seq=1 hlim=49 time=155.618 ms 
16 bytes from 2001:1890:123a::1:1e, icmp_seq=2 hlim=49 time=155.808 ms 
16 bytes from 2001:1890:123a::1:1e, icmp_seq=3 hlim=49 time=155.325 ms 
16 bytes from 2001:1890:123a::1:1e, icmp_seq=4 hlim=49 time=155.493 ms 
16 bytes from 2001:1890:123a::1:1e, icmp_seq=5 hlim=49 time=155.801 ms 
16 bytes from 2001:1890:123a::1:1e, icmp_seq=6 hlim=49 time=155.660 ms 
16 bytes from 2001:1890:123a::1:1e, icmp_seq=7 hlim=49 time=155.869 ms 
^C 
--- www.ietf.org ping6 statistics --- 
8 packets transmitted, 8 packets received, 0.0% packet loss 
round-trip min/avg/max/std-dev = 155.325/155.810/156.905/0.447 ms
traceroute6 
#traceroute6 www.ietf.org 
traceroute6 to www.ietf.org (2001:1890:1112:1::20) from 
2001:6a8:3080:2:217:f2ff:fed6:65c0, 30 hops max, 12 byte packets 
1 2001:6a8:3080:2::1 13.821 ms 0.301 ms 0.324 ms 
2 2001:6a8:3000:8000::1 0.651 ms 0.51 ms 0.495 ms 
3 10ge.cr2.bruvil.belnet.net 3.402 ms 3.34 ms 3.33 ms 
4 10ge.cr2.brueve.belnet.net 3.668 ms 10ge.cr2.brueve.belnet.net 3.988 ms 
10ge.cr2.brueve.belnet.net 3.699 ms 
5 belnet.rt1.ams.nl.geant2.net 10.598 ms 7.214 ms 10.082 ms 
6 so-7-0-0.rt2.cop.dk.geant2.net 20.19 ms 20.002 ms 20.064 ms 
7 kbn-ipv6-b1.ipv6.telia.net 21.078 ms 20.868 ms 20.864 ms 
8 s-ipv6-b1-link.ipv6.telia.net 31.312 ms 31.113 ms 31.411 ms 
9 s-ipv6-b1-link.ipv6.telia.net 61.986 ms 61.988 ms 61.994 ms 
10 2001:1890:61:8909::1 121.716 ms 121.779 ms 121.177 ms 
11 2001:1890:61:9117::2 203.709 ms 203.305 ms 203.07 ms 
12 mail.ietf.org 204.172 ms 203.755 ms 203.748 ms

More Related Content

What's hot

Multipath TCP
Multipath TCPMultipath TCP
Multipath TCP
Olivier Bonaventure
 

What's hot (20)

Part 4 : reliable transport and sharing resources
Part 4 : reliable transport and sharing resourcesPart 4 : reliable transport and sharing resources
Part 4 : reliable transport and sharing resources
 
Part 12 : Local Area Networks
Part 12 : Local Area Networks Part 12 : Local Area Networks
Part 12 : Local Area Networks
 
Future Internet protocols
Future Internet protocolsFuture Internet protocols
Future Internet protocols
 
Part 6 : Internet applications
Part 6 : Internet applicationsPart 6 : Internet applications
Part 6 : Internet applications
 
Part 7 : HTTP/2, UDP and TCP
Part 7 : HTTP/2, UDP and TCPPart 7 : HTTP/2, UDP and TCP
Part 7 : HTTP/2, UDP and TCP
 
Part 9 : Congestion control and IPv6
Part 9 : Congestion control and IPv6Part 9 : Congestion control and IPv6
Part 9 : Congestion control and IPv6
 
Beyond TCP: The evolution of Internet transport protocols
Beyond TCP: The evolution of Internet transport protocolsBeyond TCP: The evolution of Internet transport protocols
Beyond TCP: The evolution of Internet transport protocols
 
Computer Networking : Principles, Protocols and Practice - lesson 1
Computer Networking : Principles, Protocols and Practice - lesson 1Computer Networking : Principles, Protocols and Practice - lesson 1
Computer Networking : Principles, Protocols and Practice - lesson 1
 
12 ethernet-wifi
12 ethernet-wifi12 ethernet-wifi
12 ethernet-wifi
 
Surviving The Stump The Chump Interview Questions
Surviving The Stump The Chump Interview QuestionsSurviving The Stump The Chump Interview Questions
Surviving The Stump The Chump Interview Questions
 
IPv6 Segment Routing : an end-to-end solution ?
IPv6 Segment Routing : an end-to-end solution ?IPv6 Segment Routing : an end-to-end solution ?
IPv6 Segment Routing : an end-to-end solution ?
 
TCPLS presentation @ietf 109
TCPLS presentation @ietf 109TCPLS presentation @ietf 109
TCPLS presentation @ietf 109
 
10 routing-bgp
10 routing-bgp10 routing-bgp
10 routing-bgp
 
Network interview questions
Network interview questionsNetwork interview questions
Network interview questions
 
11 bgp-ethernet
11 bgp-ethernet11 bgp-ethernet
11 bgp-ethernet
 
Making our networking stack truly extensible
Making our networking stack truly extensible Making our networking stack truly extensible
Making our networking stack truly extensible
 
Part 2 : reliable transmission and building a network
Part 2 : reliable transmission and building a networkPart 2 : reliable transmission and building a network
Part 2 : reliable transmission and building a network
 
16 coms 525 tcpip - routing protocols -all
16    coms 525 tcpip - routing protocols -all16    coms 525 tcpip - routing protocols -all
16 coms 525 tcpip - routing protocols -all
 
IPv6 Entreprise Multihoming
IPv6 Entreprise MultihomingIPv6 Entreprise Multihoming
IPv6 Entreprise Multihoming
 
Multipath TCP
Multipath TCPMultipath TCP
Multipath TCP
 

Similar to 8 congestion-ipv6

L2 over l3 ecnaspsulations (english)
L2 over l3 ecnaspsulations (english)L2 over l3 ecnaspsulations (english)
L2 over l3 ecnaspsulations (english)
Motonori Shindo
 
Fosscon 2012 firewall workshop
Fosscon 2012 firewall workshopFosscon 2012 firewall workshop
Fosscon 2012 firewall workshop
jvehent
 
sliding window protocol for datalink layer.ppt
sliding window protocol for datalink layer.pptsliding window protocol for datalink layer.ppt
sliding window protocol for datalink layer.ppt
ManimegalaM3
 

Similar to 8 congestion-ipv6 (20)

7. protocols
7. protocols7. protocols
7. protocols
 
L2 over l3 ecnaspsulations (english)
L2 over l3 ecnaspsulations (english)L2 over l3 ecnaspsulations (english)
L2 over l3 ecnaspsulations (english)
 
Fosscon 2012 firewall workshop
Fosscon 2012 firewall workshopFosscon 2012 firewall workshop
Fosscon 2012 firewall workshop
 
The Road to End-to-End Encryption in Jitsi Meet
The Road to End-to-End Encryption in Jitsi MeetThe Road to End-to-End Encryption in Jitsi Meet
The Road to End-to-End Encryption in Jitsi Meet
 
SCTP Tutorial
SCTP TutorialSCTP Tutorial
SCTP Tutorial
 
Real-time in the real world: DIRT in production
Real-time in the real world: DIRT in productionReal-time in the real world: DIRT in production
Real-time in the real world: DIRT in production
 
Part5-tcp-improvements.pptx
Part5-tcp-improvements.pptxPart5-tcp-improvements.pptx
Part5-tcp-improvements.pptx
 
Troubleshooting TCP/IP
Troubleshooting TCP/IPTroubleshooting TCP/IP
Troubleshooting TCP/IP
 
(NET301) New Capabilities for Amazon Virtual Private Cloud
(NET301) New Capabilities for Amazon Virtual Private Cloud(NET301) New Capabilities for Amazon Virtual Private Cloud
(NET301) New Capabilities for Amazon Virtual Private Cloud
 
Reconsider TCPdump for Modern Troubleshooting
Reconsider TCPdump for Modern TroubleshootingReconsider TCPdump for Modern Troubleshooting
Reconsider TCPdump for Modern Troubleshooting
 
Course on TCP Dynamic Performance
Course on TCP Dynamic PerformanceCourse on TCP Dynamic Performance
Course on TCP Dynamic Performance
 
TCP-IP PROTOCOL
TCP-IP PROTOCOLTCP-IP PROTOCOL
TCP-IP PROTOCOL
 
Sctp tutorial
Sctp tutorialSctp tutorial
Sctp tutorial
 
TBD - To Block Connection from Suspicious IP addresses by using "DICE"
TBD - To Block Connection from Suspicious IP addresses by using "DICE"TBD - To Block Connection from Suspicious IP addresses by using "DICE"
TBD - To Block Connection from Suspicious IP addresses by using "DICE"
 
Introduction to VOIP
Introduction to VOIPIntroduction to VOIP
Introduction to VOIP
 
Intro to Packet Analysis - pfSense Hangout May 2014
Intro to Packet Analysis - pfSense Hangout May 2014Intro to Packet Analysis - pfSense Hangout May 2014
Intro to Packet Analysis - pfSense Hangout May 2014
 
Handy Networking Tools and How to Use Them
Handy Networking Tools and How to Use ThemHandy Networking Tools and How to Use Them
Handy Networking Tools and How to Use Them
 
201901-SRv6.pdf
201901-SRv6.pdf201901-SRv6.pdf
201901-SRv6.pdf
 
sliding window protocol for datalink layer.ppt
sliding window protocol for datalink layer.pptsliding window protocol for datalink layer.ppt
sliding window protocol for datalink layer.ppt
 
Quic illustrated
Quic illustratedQuic illustrated
Quic illustrated
 

More from Olivier Bonaventure

More from Olivier Bonaventure (18)

Part3-reliable.pptx
Part3-reliable.pptxPart3-reliable.pptx
Part3-reliable.pptx
 
Part10-router.pptx
Part10-router.pptxPart10-router.pptx
Part10-router.pptx
 
Part1-Intro-Apps.pptx
Part1-Intro-Apps.pptxPart1-Intro-Apps.pptx
Part1-Intro-Apps.pptx
 
Part9-congestion.pptx
Part9-congestion.pptxPart9-congestion.pptx
Part9-congestion.pptx
 
Part2-Apps-Security.pptx
Part2-Apps-Security.pptxPart2-Apps-Security.pptx
Part2-Apps-Security.pptx
 
Part11-lan.pptx
Part11-lan.pptxPart11-lan.pptx
Part11-lan.pptx
 
Part8-ibgp.pptx
Part8-ibgp.pptxPart8-ibgp.pptx
Part8-ibgp.pptx
 
Part4-reliable-tcp.pptx
Part4-reliable-tcp.pptxPart4-reliable-tcp.pptx
Part4-reliable-tcp.pptx
 
Part7-routing.pptx
Part7-routing.pptxPart7-routing.pptx
Part7-routing.pptx
 
Part6-network-routing.pptx
Part6-network-routing.pptxPart6-network-routing.pptx
Part6-network-routing.pptx
 
Part1-Intro-Apps.pptx
Part1-Intro-Apps.pptxPart1-Intro-Apps.pptx
Part1-Intro-Apps.pptx
 
Part2-Apps-Security.pptx
Part2-Apps-Security.pptxPart2-Apps-Security.pptx
Part2-Apps-Security.pptx
 
Part4-reliable-tcp.pptx
Part4-reliable-tcp.pptxPart4-reliable-tcp.pptx
Part4-reliable-tcp.pptx
 
Part3-reliable.pptx
Part3-reliable.pptxPart3-reliable.pptx
Part3-reliable.pptx
 
A personal journey towards more reproducible networking research
A personal journey towards more reproducible networking researchA personal journey towards more reproducible networking research
A personal journey towards more reproducible networking research
 
Part 11 : Interdomain routing with BGP
Part 11 : Interdomain routing with BGPPart 11 : Interdomain routing with BGP
Part 11 : Interdomain routing with BGP
 
Part 10 : Routing in IP networks and interdomain routing with BGP
Part 10 : Routing in IP networks and interdomain routing with BGPPart 10 : Routing in IP networks and interdomain routing with BGP
Part 10 : Routing in IP networks and interdomain routing with BGP
 
Part 3 : building a network and supporting applications
Part 3 : building a network and supporting applicationsPart 3 : building a network and supporting applications
Part 3 : building a network and supporting applications
 

Recently uploaded

Online crime reporting system project.pdf
Online crime reporting system project.pdfOnline crime reporting system project.pdf
Online crime reporting system project.pdf
Kamal Acharya
 
Seizure stage detection of epileptic seizure using convolutional neural networks
Seizure stage detection of epileptic seizure using convolutional neural networksSeizure stage detection of epileptic seizure using convolutional neural networks
Seizure stage detection of epileptic seizure using convolutional neural networks
IJECEIAES
 
Final DBMS Manual (2).pdf final lab manual
Final DBMS Manual (2).pdf final lab manualFinal DBMS Manual (2).pdf final lab manual
Final DBMS Manual (2).pdf final lab manual
BalamuruganV28
 

Recently uploaded (20)

SLIDESHARE PPT-DECISION MAKING METHODS.pptx
SLIDESHARE PPT-DECISION MAKING METHODS.pptxSLIDESHARE PPT-DECISION MAKING METHODS.pptx
SLIDESHARE PPT-DECISION MAKING METHODS.pptx
 
Operating System chapter 9 (Virtual Memory)
Operating System chapter 9 (Virtual Memory)Operating System chapter 9 (Virtual Memory)
Operating System chapter 9 (Virtual Memory)
 
Online crime reporting system project.pdf
Online crime reporting system project.pdfOnline crime reporting system project.pdf
Online crime reporting system project.pdf
 
UNIT 4 PTRP final Convergence in probability.pptx
UNIT 4 PTRP final Convergence in probability.pptxUNIT 4 PTRP final Convergence in probability.pptx
UNIT 4 PTRP final Convergence in probability.pptx
 
Autodesk Construction Cloud (Autodesk Build).pptx
Autodesk Construction Cloud (Autodesk Build).pptxAutodesk Construction Cloud (Autodesk Build).pptx
Autodesk Construction Cloud (Autodesk Build).pptx
 
Software Engineering Practical File Front Pages.pdf
Software Engineering Practical File Front Pages.pdfSoftware Engineering Practical File Front Pages.pdf
Software Engineering Practical File Front Pages.pdf
 
Piping and instrumentation diagram p.pdf
Piping and instrumentation diagram p.pdfPiping and instrumentation diagram p.pdf
Piping and instrumentation diagram p.pdf
 
Seizure stage detection of epileptic seizure using convolutional neural networks
Seizure stage detection of epileptic seizure using convolutional neural networksSeizure stage detection of epileptic seizure using convolutional neural networks
Seizure stage detection of epileptic seizure using convolutional neural networks
 
Lab Manual Arduino UNO Microcontrollar.docx
Lab Manual Arduino UNO Microcontrollar.docxLab Manual Arduino UNO Microcontrollar.docx
Lab Manual Arduino UNO Microcontrollar.docx
 
Filters for Electromagnetic Compatibility Applications
Filters for Electromagnetic Compatibility ApplicationsFilters for Electromagnetic Compatibility Applications
Filters for Electromagnetic Compatibility Applications
 
Diploma Engineering Drawing Qp-2024 Ece .pdf
Diploma Engineering Drawing Qp-2024 Ece .pdfDiploma Engineering Drawing Qp-2024 Ece .pdf
Diploma Engineering Drawing Qp-2024 Ece .pdf
 
Linux Systems Programming: Semaphores, Shared Memory, and Message Queues
Linux Systems Programming: Semaphores, Shared Memory, and Message QueuesLinux Systems Programming: Semaphores, Shared Memory, and Message Queues
Linux Systems Programming: Semaphores, Shared Memory, and Message Queues
 
8th International Conference on Soft Computing, Mathematics and Control (SMC ...
8th International Conference on Soft Computing, Mathematics and Control (SMC ...8th International Conference on Soft Computing, Mathematics and Control (SMC ...
8th International Conference on Soft Computing, Mathematics and Control (SMC ...
 
Fuzzy logic method-based stress detector with blood pressure and body tempera...
Fuzzy logic method-based stress detector with blood pressure and body tempera...Fuzzy logic method-based stress detector with blood pressure and body tempera...
Fuzzy logic method-based stress detector with blood pressure and body tempera...
 
Research Methodolgy & Intellectual Property Rights Series 2
Research Methodolgy & Intellectual Property Rights Series 2Research Methodolgy & Intellectual Property Rights Series 2
Research Methodolgy & Intellectual Property Rights Series 2
 
Final DBMS Manual (2).pdf final lab manual
Final DBMS Manual (2).pdf final lab manualFinal DBMS Manual (2).pdf final lab manual
Final DBMS Manual (2).pdf final lab manual
 
Geometric constructions Engineering Drawing.pdf
Geometric constructions Engineering Drawing.pdfGeometric constructions Engineering Drawing.pdf
Geometric constructions Engineering Drawing.pdf
 
Research Methodolgy & Intellectual Property Rights Series 1
Research Methodolgy & Intellectual Property Rights Series 1Research Methodolgy & Intellectual Property Rights Series 1
Research Methodolgy & Intellectual Property Rights Series 1
 
Seismic Hazard Assessment Software in Python by Prof. Dr. Costas Sachpazis
Seismic Hazard Assessment Software in Python by Prof. Dr. Costas SachpazisSeismic Hazard Assessment Software in Python by Prof. Dr. Costas Sachpazis
Seismic Hazard Assessment Software in Python by Prof. Dr. Costas Sachpazis
 
Augmented Reality (AR) with Augin Software.pptx
Augmented Reality (AR) with Augin Software.pptxAugmented Reality (AR) with Augin Software.pptx
Augmented Reality (AR) with Augin Software.pptx
 

8 congestion-ipv6

  • 1. Week 8 SCTP and Internet Congestion control IPv6
  • 2. Agenda • Congestion control • AIMD in TCP • Explicit Congestion Notification • SCTP • Principles • Differences with TCP • IPv6
  • 3. TCP with mild congestion Cwnd Fast retransmit Threshold Fast retransmit Threshold Slow-start exponential increase of cwnd Congestion avoidance linear increase of cwnd
  • 4. Severe congestion Cwnd Time Timer expiration Threshold Timer expiration Threshold Slow-start exponential increase of cwnd Congestion avoidance linear increase of cwnd
  • 5. AIMD in TCP # Initialisation cwnd = MSS; ssthresh= swin; # Ack arrival if tcp.ack > snd.una : # new ack, no congestion if cwnd < ssthresh : # slow-start : increase quickly cwnd # double cwnd every rtt cwnd = cwnd + MSS else: # congestion avoidance : increase slowly cwnd # increase cwnd by one mss every rtt cwnd = cwnd+ mss*(mss/cwnd)
  • 6. AIMD in TCP else: # duplicate or old ack if tcp.ack==snd.una: # duplicate acknowledgement dupacks++ if dupacks==3: retransmitsegment(snd.una) ssthresh=max(cwnd/2,2*MSS) cwnd=ssthresh else: dupacks=0 # ack for old segment, ignored Expiration of the retransmission timer: send(snd.una) # retransmit first lost segment sshtresh=max(cwnd/2,2*MSS) cwnd=MSS
  • 7. Examples • Time to transmit 6 TCP segments without losses • Time to transmit 6 TCP segments if 3rd is lost • Time to transmit 10 TCP segments if 5th is lost
  • 8. Simplified model • Assume all segment losses are periodic and the every 1/p segment is lost Cwnd(segments) W W/2 0 0 W/2 W 3W/2 Surface 2W time(rtt) It can be shown that the throughput of a TCP connection can be approximated by : Maximum throughput without losses Throughput with losses/congestion
  • 9. Tuning TCP @google • Target • Minimize time to receive result from search engine • HTTP GET in one segment • HTTP Response in <16 KBytes
  • 10. Initial retransmission timer • What happens if SYN or SYN+ACK is lost ?
  • 11. Initial congestion window • What is the impact of slow-start on the time to receive an HTTP response ?
  • 12. TCP Fast Open • Can we we reduce the overhead of the three-way handshake ? • HTTP/1.1 • Putting data inside SYN and SYN+ACK
  • 13. TCP Fast Open SYN(Src=C,seq=x, HTTP GET) CONNECT.ind+HTTP GET CONNECT.req+Data SYN+ACK(Dest=C,ack=x+1,seq=y, HTTP Resp) ACK(Src=A,seq=x) • Is this safe ? • Risk of denial of service attack
  • 14. Safe TCP Fast Open • How to make TCP Fast Open safe in the presence of attackers ? • Server needs to ensure that SYN segment does not come from a spoofer
  • 15. Agenda • Congestion control • AIMD in TCP • Explicit Congestion Notification • SCTP • Principles • Differences with TCP • IPv6
  • 16. Agenda • Congestion control • AIMD in TCP • Explicit Congestion Notification • SCTP • Principles • Differences with TCP • IPv6
  • 19. INIT Chunk 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 1 | Chunk Flags | Chunk Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Initiate Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Advertised Receiver Window Credit (a_rwnd) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Number of Outbound Streams | Number of Inbound Streams | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Initial TSN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / Optional/Variable-Length Parameters / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 20. INIT-ACK chunk 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 2 | Chunk Flags | Chunk Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Initiate Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Advertised Receiver Window Credit | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Number of Outbound Streams | Number of Inbound Streams | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Initial TSN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / Optional/Variable-Length Parameters / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 21. COOKIEs • COOKIE-ECHO 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 10 |Chunk Flags | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / Cookie / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ • COOKIE-ACK 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 11 |Chunk Flags | Length = 4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 22. COOKIE • Variable length chunk • Which information should be placed inside the COOKIE ?
  • 23. Verification tag • Why is this tag present in all SCTP segments ?
  • 24. Payload chunk 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 0 | Reserved|U|B|E| Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TSN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Stream Identifier S | Stream Sequence Number n | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload Protocol Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / User Data (seq n of Stream S) / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 25. SACK chunk 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 3 |Chunk Flags | Chunk Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Cumulative TSN Ack | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Advertised Receiver Window Credit (a_rwnd) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Number of Gap Ack Blocks = N | Number of Duplicate TSNs = X | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Gap Ack Block #1 Start | Gap Ack Block #1 End | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / / ... / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Gap Ack Block #N Start | Gap Ack Block #N End | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Duplicate TSN 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / / ... / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Duplicate TSN X | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 26. Dealing with messages • How to enable the receiver to reconstruct the received messages ? B E Description ============================================================ | 1 0 | First piece of a fragmented user message | +----------------------------------------------------------+ | 0 0 | Middle piece of a fragmented user message | +----------------------------------------------------------+ | 0 1 | Last piece of a fragmented user message | +----------------------------------------------------------+ | 1 1 | Unfragmented message | ============================================================ | Table 1: Fragment Description Flags | ============================================================
  • 28. SHUTDOWN chunks • SHUTDOWN 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 7 | Chunk Flags | Length = 8 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Cumulative TSN Ack | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ • SHUTDOWN ACK 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 8 |Chunk Flags | Length = 4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 29. Agenda • Congestion control • SCTP • IPv6 • Addressing architecture • Packets • ICMPv6
  • 30. IPv6 addresses • Each IPv6 address is encoded in 128 bits • 3.4 x 10^38 possible addressable devices • 6.65 x 10^23 addresses per square meter • Why 128 bits ? IPv4 IP version 6
  • 31. Addressing architecture • Three types of IPv6 addresses • Unicast addresses • An identifier for a single interface. A packet sent to a unicast address is delivered to the interface identified by that address • Anycast addresses • An identifier for a set of interfaces. • Multicast addresses • An identifier for a set of interfaces. A packet sent to a multicast address is delivered to all interfaces identified by that address.
  • 32. Textual representation • Hexadecimal format • FEDC:BA98:7654:3210:FEDC:BA98:7654: 3210 • 1080:0:0:0:8:800:200C:417A • Compact hexadecimal format • Some IPv6 addresses contain lots of zero • use "::" for one or more groups of 16 zeros. • 1080:0:0:0:8:800:200C:417A = 1080::8:800:200C:417A • FF01:0:0:0:0:0:0:101 = FF01::101
  • 33. IPv6 unicast addresses interface ID 128 bits N bits M bits 128-N-M bits Usually 64 bits Based on MAC Address global routing prefix subnet ID Can be used to identify the ISP responsible for this address A subnet in this ISP or a customer of this ISP
  • 34. Agenda • Congestion control • SCTP • IPv6 • Addressing architecture • Packets • ICMPv6
  • 35. The IPv6 packet format 32 bits Ver Tclass Flow Label NxtHdr Hop Limit Payload Length Source IPv6 address (128 bits) Destination IPv6 address (128 bits) Version=6 Traffic class Size of packet content in bytes Unclear utilisation Same as TTL Used to identify the type of the next header found in the packet payload
  • 36. Sample packets Payload Length Payload Length Sequence number Acknowledgment number THL Reserved Flags • Identification of a TCP connection Window • IPv6 src, IPv6 dest, Source and Destination ports 32 bits Ver Tclass Flow Label NxtHdr Hop Limit Source IPv6 address (128 bits) Destination IPv6 address (128 bits) Source port Destination port Length Checksum UDP 32 bits Ver Tclass Flow Label NxtHdr Hop Limit Source IPv6 address (128 bits) Destination IPv6 address (128 bits) Source port Destination port Checksum Urgent pointer TCP UDP TCP
  • 37. Agenda • Congestion control • SCTP • IPv6 • Addressing architecture • Packets • ICMPv6
  • 38. ICMP • Internet Control Message Protocol • Runs on top of IPv6 and provides various types of services • tools to aid debugging network problems • error reporting • autoconfiguration of addresses
  • 39. ping6 #ping6 www.ietf.org PING6(56=40+8+8 bytes) 2001:6a8:3080:2:3403:bbf4:edae:afc3 --> 2001:1890:123a::1:1e 16 bytes from 2001:1890:123a::1:1e, icmp_seq=0 hlim=49 time=156.905 ms 16 bytes from 2001:1890:123a::1:1e, icmp_seq=1 hlim=49 time=155.618 ms 16 bytes from 2001:1890:123a::1:1e, icmp_seq=2 hlim=49 time=155.808 ms 16 bytes from 2001:1890:123a::1:1e, icmp_seq=3 hlim=49 time=155.325 ms 16 bytes from 2001:1890:123a::1:1e, icmp_seq=4 hlim=49 time=155.493 ms 16 bytes from 2001:1890:123a::1:1e, icmp_seq=5 hlim=49 time=155.801 ms 16 bytes from 2001:1890:123a::1:1e, icmp_seq=6 hlim=49 time=155.660 ms 16 bytes from 2001:1890:123a::1:1e, icmp_seq=7 hlim=49 time=155.869 ms ^C --- www.ietf.org ping6 statistics --- 8 packets transmitted, 8 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 155.325/155.810/156.905/0.447 ms
  • 40. traceroute6 #traceroute6 www.ietf.org traceroute6 to www.ietf.org (2001:1890:1112:1::20) from 2001:6a8:3080:2:217:f2ff:fed6:65c0, 30 hops max, 12 byte packets 1 2001:6a8:3080:2::1 13.821 ms 0.301 ms 0.324 ms 2 2001:6a8:3000:8000::1 0.651 ms 0.51 ms 0.495 ms 3 10ge.cr2.bruvil.belnet.net 3.402 ms 3.34 ms 3.33 ms 4 10ge.cr2.brueve.belnet.net 3.668 ms 10ge.cr2.brueve.belnet.net 3.988 ms 10ge.cr2.brueve.belnet.net 3.699 ms 5 belnet.rt1.ams.nl.geant2.net 10.598 ms 7.214 ms 10.082 ms 6 so-7-0-0.rt2.cop.dk.geant2.net 20.19 ms 20.002 ms 20.064 ms 7 kbn-ipv6-b1.ipv6.telia.net 21.078 ms 20.868 ms 20.864 ms 8 s-ipv6-b1-link.ipv6.telia.net 31.312 ms 31.113 ms 31.411 ms 9 s-ipv6-b1-link.ipv6.telia.net 61.986 ms 61.988 ms 61.994 ms 10 2001:1890:61:8909::1 121.716 ms 121.779 ms 121.177 ms 11 2001:1890:61:9117::2 203.709 ms 203.305 ms 203.07 ms 12 mail.ietf.org 204.172 ms 203.755 ms 203.748 ms

Editor's Notes

  1. More detailed models can be found in the scientific literature : M. Mathis,J. Semke, J. Mahdavi and T. Ott, The macroscopic behaviour of the TCP congestion avoidance algorithm, ACM Computer Communication Review, 1997
  2. See http://www.ripe.net/ripe/docs/ripe-388.html for the policy used by RIPE to allocate IP prefixes in Europe
  3. IP version 4 supports 4,294,967,296 distinct addresses, but some are reserved for : private addresses (RFC1918) loopback (127.0.0.1) multicast ...
  4. The IPv6 addressing architecture is defined in : R. Hinden, S. Deering, IP Version 6 Addressing Architecture, RFC4291, February 2006
  5. Today, the default encoding for global unicast addresses is to use : 48 bits for the global routing prefix (first three bits are set to 001) 16 bits for the subnet ID 64 bits for the interface ID
  6. The IPv6 packet format is described in S. Deering, B. Hinden, Internet Protocol, Version 6 (IPv6) Specification , RFC2460, Dec 1998 Several documents have been written about the usage of the Flow label. The last one is J. Rajahalme, A. Conta, B. Carpenter, S. Deering, IPv6 Flow Label Specification, RFC3697, 2004 However, this proposal is far from being widely used and deployed.
  7. IPv6 does not require changes to TCP and UDP for IPv4. The only modification is the computation of the checksum field of the UDP and TCP headers since this checksum is computed by concerning a pseudo header that contains the source and destination IP addresses.
  8. Site-local addresses were defined in the first IPv6 specifications, but they are now deprecated and should not be used. Recently “private” addresses have been defined as Unique Local IPv6 Addresses as a way to allow entreprise to obtain IPv6 addresses without being forced to request them from providers or RIRs. The way to choose such a ULA prefix is defined in : R. Hinden, B. Haberman, Unique Local IPv6 Unicast Addresses, RFC4193, October 2005 Recently, the case for a registration of such addresses has been proposed, see : R. Hinden, G. Huston, T. Narten, Centrally Assigned Unique Local IPv6 Unicast Addresses, internet draft, <draft-ietf-ipv6-ula-central-02.txt>, work in progress, June 2007 See also http://www.ripe.net/ripe/policies/proposals/2007-05.html -
  9. The full list of well known IPv6 multicast groups is available from http://www.iana.org/assignments/ipv6-multicast-addresses Examples include Node-Local Scope ---------------- FF01:0:0:0:0:0:0:1 All Nodes Address [RFC4291] FF01:0:0:0:0:0:0:2 All Routers Address [RFC4291] Link-Local Scope ---------------- FF02:0:0:0:0:0:0:1 All Nodes Address [RFC4291] FF02:0:0:0:0:0:0:2 All Routers Address [RFC4291] FF02:0:0:0:0:0:0:5 OSPFIGP [RFC2328,Moy] FF02:0:0:0:0:0:0:6 OSPFIGP Designated Routers [RFC2328,Moy] FF02:0:0:0:0:0:0:9 RIP Routers [RFC2080] FF02:0:0:0:0:0:0:A EIGRP Routers [Farinacci] FF02:0:0:0:0:0:1:2 All-dhcp-agents [RFC3315] Site-Local Scope ---------------- FF05:0:0:0:0:0:0:2 All Routers Address [RFC4291] FF05:0:0:0:0:0:1:3 All-dhcp-servers [RFC3315] Variable Scope Multicast Addresses ---------------------------------- The IPv6 multicast addresses with variable scope are listed below. FF0X:0:0:0:0:0:0:0 Reserved Multicast Address [RFC4291] FF0X:0:0:0:0:0:0:101 Network Time Protocol (NTP) [RFC1119,DLM1] FF0X:0:0:0:0:0:0:103 Rwhod [SXD] FF0X:0:0:0:0:0:0:10A IETF-1-LOW-AUDIO [SC3] FF0X:0:0:0:0:0:0:10B IETF-1-AUDIO [SC3] FF0X:0:0:0:0:0:0:10C IETF-1-VIDEO [SC3] FF0X:0:0:0:0:0:0:10D IETF-2-LOW-AUDIO [SC3] FF0X:0:0:0:0:0:0:10E IETF-2-AUDIO [SC3] FF0X:0:0:0:0:0:0:10F IETF-2-VIDEO [SC3]
  10. The allocated anycast addresses are references in http://www.iana.org/assignments/ipv6-anycast-addresses
  11. The IPv6 packet format is described in S. Deering, B. Hinden, Internet Protocol, Version 6 (IPv6) Specification , RFC2460, Dec 1998 Several documents have been written about the usage of the Flow label. The last one is J. Rajahalme, A. Conta, B. Carpenter, S. Deering, IPv6 Flow Label Specification, RFC3697, 2004 However, this proposal is far from being widely used and deployed.
  12. IPv6 does not require changes to TCP and UDP for IPv4. The only modification is the computation of the checksum field of the UDP and TCP headers since this checksum is computed by concerning a pseudo header that contains the source and destination IP addresses.
  13. An example hop-by-hop option is the router alert option defined in A. Jackson, C. Partridge, IPv6 Router Alert Option RFC2711, 1999
  14. The Type 0 Routing header is specified in RFC2460 Two other types of routing headers have been defined. Type 1 is experimental and never used. Type 2 is specific for Mobile IPv6 that will be covered later.
  15. The type 0 routing header was deprecated in J. Abley, P. Savola, G. Neville-Neil, Deprecation of Type 0 Routing Headers in IPv6 RFC5095, Dec. 2007 For more information about the security issues with this header, see Biondi, P. and A. Ebalard, "IPv6 Routing Header Security", CanSecWest Security Conference 2007, April 2007. http://www.secdev.org/conf/IPv6_RH_security-csw07.pdf
  16. The Len field encodes the size of the data field in bytes. Furthermore, special options have been defined to allow hosts using the options to pad the size of vairable length options to multiples of 64 bits. Pad1 option (alignment requirement: none) +-+-+-+-+-+-+-+-+ | 0 | +-+-+-+-+-+-+-+-+ NOTE! the format of the Pad1 option is a special case -- it does not have length and value fields. The Pad1 option is used to insert one octet of padding into the Options area of a header. If more than one octet of padding is required, the PadN option, described next, should be used, rather than multiple Pad1 options. Deering & Hinden Standards Track [Page 10] RFC 2460 IPv6 Specification December 1998 PadN option (alignment requirement: none) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - | 1 | Opt Data Len | Option Data +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - The PadN option is used to insert two or more octets of padding into the Options area of a header. For N octets of padding, the Opt Data Len field contains the value N-2, and the Option Data consists of N-2 zero-valued octets.
  17. As of today, it is unclear whether the jumbogram option has been implemented in practice. Using it requires link layer technologies that are able to support frames larger than 64 KBytes. The jumbogram option has been defined in D. Borman, S. Deering, B. Hinden, IPv6 Jumbograms, RFC2675, August 1999 The Kame (http://www.kame.net) implementation on FreeBSD supports this option, but there is no link-layer that supports large frames.
  18. Path MTU discovery is defined in J. Mogul, S. Deering, Path MTU Discovery, RFC1191, 1996 and in J. McCann, S. Deering, J. Mogul, Path MTU Discovery for IP version 6, RFC1981, 1996 for IPv6
  19. In IPv6, the fragment identification field is much larger than in IPv4. Furthermore, it is only used in packets that really need fragmentation. IPv6 header does not contain a fragmentation information for each unfragmented packet unlike IPv4.
  20. ICMPv6 is defined in : A. Conta, S. Deering, M. Gupta, Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification, RFC4443, March 2006
  21. ICMPv6 uses a next header value of 58 inside IPv6 packets
  22. The transmission of IPv6 packets over Ethernet is defined in : M. Crawford, Transmission of IPv6 Packets over Ethernet Networks, RFC2464, December 1998 Note that in contrast with ARP used by IPv4, ICMPv6 neighbour solicitation messages are sent to a multicast ethernet address and not to the broadcast ethernet address. This implies that only the IPv6 enabled hosts on the LAN will receive the ICMPv6 message.
  23. The ICMPv6 neighbour discovery messages are sent with HopLimit=255 The role of the R, S and O flags is described as follows in RFC4861 R Router flag. When set, the R-bit indicates that the sender is a router. The R-bit is used by Neighbor Unreachability Detection to detect a router that changes to a host. S Solicited flag. When set, the S-bit indicates that the advertisement was sent in response to a Neighbor Solicitation from the Destination address. The S-bit is used as a reachability confirmation for Neighbor Unreachability Detection. It MUST NOT be set in multicast advertisements or in unsolicited unicast advertisements. O Override flag. When set, the O-bit indicates that the advertisement should override an existing cache entry and update the cached link-layer address. When it is not set the advertisement will not update a cached link-layer address though it will update an existing Neighbor Cache entry for which no link-layer address is known. It SHOULD NOT be set in solicited advertisements for anycast addresses and in solicited proxy advertisements. It SHOULD be set in other solicited advertisements and in unsolicited advertisements.
  24. When the M bit is set to true, this indicates that IPv6 addresses should be obtained from DHCPv6 When the O bit is set to true, this indicates that the hosts can obtain additional information (e.g. address of DNS resolver) from DHCPv6 The router advertisements messages can also be sent in unicast in response to solicitations from hosts. A host can obtain a router advertisement by sending a router solicitation which is an ICMPv6 message containing only the router solicitation message (type 133).
  25. The two L and A bits are defined as follows : L 1-bit on-link flag. When set, indicates that this prefix can be used for on-link determination. When not set the advertisement makes no statement about on-link or off-link properties of the prefix. In other words, if the L flag is not set a host MUST NOT conclude that an address derived from the prefix is off-link. That is, it MUST NOT update a previous indication that the address is on-link. A 1-bit autonomous address-configuration flag. When set indicates that this prefix can be used for stateless address configuration. Other options have been defined for the router advertisements. For example, the RDNSS option defined in J. Jeong, S. Park, L. Beloeil, S. Madanapalli, IPv6 Router Advertisement Option for DNS Configuration, RFC 5006, Sept. 2007 allows a router to advertise the IPv6 address of the DNS resolver to be used by hosts on the LAN.
  26. This utilisation of ICMPv6 Neighbour solicitation is called Duplicate Address Detection. It is used everytime a host obtains a new IPv6 address and is required to ensure that a host is not using the same IPv6 address as another host on the same LAN.
  27. IPv6 is supposed to easily support renumbering and IPv6 router advertisements are one of the ways to perform this renumbering by allowing hosts to update their IPv6 addresses upon reception of new router advertisement messages. However, in practice renumbering an IPv6 network is not easily because IPv6 addresses are manually encoded in too many configuration files, see e.g. : F. Baker, E. Lear, R. Droms, Procedures for Renumbering an IPv6 Network without a Flag Day, RFC4192, 2005
  28. This extension to support privacy-aware IPv6 addresses is defined in T. Narten, R. Draves, S. Krishnan, Privacy Extensions for Stateless Address Autoconfiguration in IPv6, RFC4941, Sept. 2007