《流控制传输协议SCTP参考指南》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:RandallR.Stewart,QiaobingXie著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2003
  • ISBN:7900643958
  • 页数:351 页
图书介绍:

4.6 Chunk Rejections During an Association Setup 1O 1

1 Introduction and Overview 1

1.1 IP Networking Basics 1

1.1.1 How Messages Are Delivered in an IP Network 2

1.1.2 IP Protocols 5

1.1.3 IP Multi-homing 6

1.2 What Is SCTP? 6

1.2.1 Where Does SCTP Fit in the IP Architecture? 7

1.3 Motivation for Developing SCTP 8

1.3.1 TCP Limitations 8

1.3.2 UDP Limitations 10

1.3.3 SCTP Enhancements over TCP and UDP 10

1.4 A Short History of SCTP Development 11

1.4.1 Early Works Before the IETF and MDTP 11

1.4.2 IETF Refinements 13

1.5.1 Do We Really Need a New Transport Protocol? 14

1.5 Major General SCTP Issues Debated in the IETF 14

ContentS 15

FOREWORD 15

1.5.2 Over UDP Versus Over IP 16

1.6 Organization of this Book 17

PREFACE 17

1.7 Summary 19

1.8 Questions 19

2 SCTP Endpoint and Association 21

2.1 SCTP Transport Address 21

2.2 SCTP Endpoint 22

2.2.1 Multi-homed SCTP Endpoint 22

2.3 SCTP Association 24

2.4.1 Functional View of an Association 26

2.4 Operation of an SCTP Association 26

2.4.2 Functional Responsibilities of an SCTP Endpoint 28

2.4.3 Operation States of an Association 30

2.5 IETF Debate and Issues 33

2.6 Summary 33

2.7 Questions 34

3 Format of SCTP Messages 35

3.1 Basic Lavout—The Bits on the Wire 35

3.1.1 The SCTP Common Header 36

3.1.2 Elements in a Chunk 37

3.1.3 Defined Chunk Types and Extensibility 38

3.1.4 General Rules When Dealing with Chunks 41

3.1.5 Chunk Parameters 42

3.2.1 The INIT Chunk 44

3.2 Basic Chunk Descriptions 44

3.1.6 Other Considerations 44

3.2.2 The INIT-ACK Chunk 50

3.2.3 The COOKIE-ECHO Chunk 54

3.2.4 The COOKIE-ACK Chunk 55

3.2.5 The DATA Chunk 55

3.2.6 The SACK Chunk 58

3.2.7 The HEARTBEAT Chunk 60

3.2.8 The HEARTBEAT-ACK Chunk 61

3.2.9 The SHUTDOWN chunk 62

3.2.10 The SHUTDOWN-ACK Chunk 63

3.2.11 The SHUTDOWN-COMPLETE Chunk 64

3.2.12 The ERROR Chunk 65

3.2.13 The Error Cause Parameters 65

3.2.14 The ABORT Chunk 72

3.3 IETF Debate and Issue 73

5.13 Questions l 75

3.4 Summary 75

3.5 Questions 75

4 Setup of an Association 77

4.1.1 Formulating the Chunk 79

4.1 The INIT Chunk 79

4.1.2 INIT Parameters 80

4.1.3 Timer and Retransmission for INIT 83

4.2 The INIT-ACK Response 83

4.2.1 Formulating the Response 84

4.2.2 INIT-ACK Parameters 85

4.2.3 Preventing Resource Attacks 89

4.3 The COOKIE-ECHO Chunk 89

4.3.1 Formulating the Chunk 91

4.3.2 Bundling Data with the COOKIE-ECHO 91

4.3.3 Timer and Retransmission for COOKIE-ECHO 91

4.4 The COOKIE-ACK Chunk 92

4.4.1 Validating and Unpacking the Cookie 93

4.4.2 Formulating the COOKIE-ACK 95

4.4.3 Bundling DATA and SACK with COOKIE-ACK 96

4.5 Address Usage When Starting an Association 97

4.6.1 When Is an INIT Not Acceptable? 102

4.6.2 When Is a Cookie Not Worth Eating? 102

4.7 Handling Unexpected Initialization Chunks 103

4.7.1 Association Tie-Tags and Their Values 104

4.7.2 Handling Overlapping Initialization Chunks 105

4.7.3 Case Study 1:Initialization Collision 11O4.7.4 Case Study 2:Peer Restart 119

4.7.5 A Lost COOKIE-ACK 121

4.8 IETF Debate and Issues 122

4.9 Summary 124

4.10 Questions 124

5.1.1 How User Messages Are Sent 125

5.1 User Message Transfer Overview 125

5 User Data Transfer 125

5.1.2 How User Messages Are Received 129

5.1.3 Summary of Data Transfer Overview 131

5.2 Obeying the Transmission Rules 132

5.2.1 Congestion Window and Receiver Window 132

5.2.2 Rules for Data Transmission 132

5.3 Acknowledgment Rules 137

5.3.1 Where Should a SACK Be Sent? 137

5.3.2 When Should a SACK Be Sent? 138

5.3.3 What Should Be Reported in a SACK? 142

5.3.4 Revoking an Acknowledgment by the Receiver 146

5.3.5 Processing of Received SACK by Data Sender 148

5.4 Management of Retransmission Timer 151

5.4.1 Determine Retransmission Timeout(RTO) 151

5.4.2 Retransmission Timer Rules 154

5.4.3 Handling Retransmission Timer Expiration 156

5.5.1 Selection of Primary Transport Address 158

5.5 Multi-homed Data Sender and Receiver 158

5.5.2 Transferring Data between Multi-homed Endpoints 159

5.5.3 Sending a SACK on Duplicate Data 161

5.6 Stream Identifier and Stream Sequence Number 162

5.6.1 Ordered and Unordered Message Delivery 164

5.7 Passing a Payload Protocol Identifier 165

5.8 Fragmentation and Bundling of User Messages 166

5.8.1 When Should User Messages Be Fragmented? 166

5.8.2 How Should a User Message Be Fragmented? 167

5.8.3 Reassembling a Fragmented Message at the Data Receiver 168

5.8.4 User Message Bundling 169

5.9 Adler-32 Checksum 171

5.9.1 Generation of the Adler-32 Checksum by the Data Sender 171

5.1O.1 Handling a Data Chunk with an Invalid Stream Identifier 172

5.10 Error Handling 172

5.9.2 Validation of the Adler-32 Checksum by the Data Receiver 172

5.10.2 Handling an Empty Data Chunk 173

5.10.3 Handling Out-of-State Data 173

5.11 IETF Debate and Issues 173

5.12 Summary 175

6 Congestion Control and Avoidance 177

6.1 The Cause of Network Congestion Collapse 177

6.2 Basic Concept of Congestion Control 178

6.3 SCTP Congestion Control Algorithm 180

6.3.1 How Does Your cwnd Grow? 183

6.3.2 How Does Your cwnd Shrink? 185

6.4 Interesting Details of the Algorithms 186

6.5 Path MTU Discovery 193

6.5.1 A Refresher on How PMTU Works 193

6.5.2 PMTU Discovery in SCTP 195

6.6 Explicit Congestion Notification 196

6.7 IETF Debate and Issues 197

6.8 Summary 199

6.9 Questions 200

7 Failure Detection and Recovery 201

7.1 The Types of Failure SCTP Detects 201

7.1.1 Unreachable Destination Address 201

7.1.2 Unreachable Peer Endpoint 202

7.2 How to Detect an Unreachable Address 203

7.2.1 Using HEARTBEAT Chunks to Monitor Reachability 204

7.2.2 Address-Unreachability Detection Algorithm 205

7.2.3 More on Using the SCTP HEARTBEAT 209

7.2.4 Handling an Unreachable Pfimary Destination Address 213

7.3 How to Detect an Unreachable Peer 213

7.3.1 When an Association Enters the Dormant State 216

7.4.1 Maximizing Path Diversity 218

7.4 Fault Resilience Communication and Routing Configuration 218

7.4.2 Asymmetric Multi-homing Configuration 220

7.4.3 Effects of Source Address Selection 222

7.5 IETF Debate and Issues 225

7.6 Summary 226

7.7 Questions 226

8 Auxiliary SCTP Packet Handling Functions 229

8.1 Handling Out-of-the-Blue SCTP Packets 229

8.2 SCTP Packet Verification Tag Rules 231

8.2.1 Basic Verification Tag Rules 232

8.2.2 Special Verification Tag Rules 232

8.3 IETF Debate and Discussion 235

8.4 Summary 236

8.5 Questions 236

9 Close of an Association 237

9.1 The Graceful Shutdown 238

9.1.1 Sending SHUTDOWN 239

9.1.2 Receiving SHUTDOWN 241

9.1.3 Sending SHUTDOWN-COMPLETE 242

9.1.4 Race Conditions and Lost Messages 244

9.2 The Abortive Shutdown 248

9.2.1 ABORT Usage 248

9.2.2 Sending an ABORT 248

9.2.3 Receiving an ABORT 249

9.3 IETF Debate and Issues 250

9.4 Summary 250

9.5 Questions 251

10 LANA and Future Extension of SCTP 253

1O.1 SCTP Port Number Assignment 253

1O.2 IETF Chunk Extensions 254

10.4 IETF Extensions to Error Causes 255

1O.3 IETF Parameter Extensions 255

1O.5 Payload Protocol Identifier 256

1O.6 Summary 256

11 A Sockets API for SCTP 257

11.1 A Quick Review of the TCP Sockets API 258

11.1.1 The Server-Side Application 258

11.1.2 The Client-Side Application 259

1 1.2 The TCP-Style SCTP Sockets API Extension 261

11.3 The UDP-Style SCTP Sockets API Extension 262

11.3.1 A View of a Client Using a UDP-Style SCTP socket 263

11.3.2 A View of a Server Using a UDP-Style SCTP Socket 265

11.4 Common API Mechanisms for Both Models 267

11.4.1 Using the sendmsg()and recvmsg()Calls with SCTP 268

11.4.2 Notification Information 270

11.5 Summary 277

11.6 Questions 278

12 Comparing SCTP to TCP 279

12.1 The Similarities between SCTP and TCP 279

12.1.1 Startup 279

12.1.2 Reliability and Ordering 279

12.1.3 Congestion Control 280

12.1.4 Closing Down 280

12.2 The Differences Between SCTP and TCP 280

12.2.1 Differences at Startup 280

12.2.2 Head-of-Line Blocking 281

12.2.3 Message Boundaries 282

12.2.4 Unordered Delivery 283

12.2.5 Selective Acknowledgment 284

12.2.6 Multi-homing 284

12.2.7 A Closing Difference 285

12.3 Summary 285

12.4 Questions 286

13 Using Streams in SCTP 287

13.1 A File Transfer Application 287

13.2 A Telephone Call Control Application 289

13.3 A Web Browser 290

13.4 Summary 291

13.5 Questions 291

14 A User Space Implementation of SCTP 293

14.1 The Big Picture 293

14.2 Data Structures 295

14.3 Events and the API 297

14.4 Association Setup 298

14.4.1 When an Upper Layer Issues an Associate Primitive 298

14.4.2 When a Peer Sends the SCTP Endpoint an INIT 303

14.5 Data Transfer 309

14.5.1 SACK Processing 310

14.5.2 Inbound DATA Chunk Processing 311

14.5.3 Finishing Off by Sending 313

14.6 Congestion Control,PMTU,and RTO 315

14.6.1 Congestion Control 315

14.6.2 PMTU Discovery 316

14.6.3 RTO Calculation 317

14.7 Fault Management 318

14.8 Tag and Out-of-the-Blue Handling 320

14.9 Association Close-Down 321

14.9.1 At the Upper Layer's Request 321

14.9.2 Reception of a SHUTDOWN 322

14.10 Summary 323

REFERENCES 325

GLOSSARY AND ABBREVIATIONS 329

INDEX 335