SCTP协议源码分析--多归属特性multi-homed(一)
来源:互联网 发布:cnc模拟仿真软件 编辑:程序博客网 时间:2024/06/01 10:13
SCTP协议有一个重要的特点,即Multi-homed(多归属),这是与TCP协议不同的显著地方之一,是对TCP协议的重大改进,充分利用了多条路由皆可承载数据流的特点,保证了物理网络级的冗余。
Multi-homed SCTP的直接表现就是有多个transport(即通路path),即到对端多个IP地址的path(通路)。一般来说有一条primary transport(主通路),其它的就是alternate transport(备用通路)。
SCTP的每条path实际上就是一条路由,而SCTP查找路由是根据destination address(目标地址)来决定,所以path的管理依赖于OSI L3(IP层)的路由缓存。而且,每条path的source address(源端地址)由路由决定,所以多条path的source address可能是本端的同一个IP address,尽管本端也许绑定了多个IP address。
先来看看与多path密切相关的IP地址列表的管理。
一. Manage address list
主要管理两个链表,即对端的peer_addr列表(实际上是path链表)和本地的bind_addr列表,都采用了内核的数据结构双向链表list_head。同时加上counter便于管理。这些地址表用双向链表list_head保存,而多个association却用哈希表,此处不详述。
1. 到对端的path链表
链表:asoc->peer.transport_addr_list
数量:asoc->peer.transport_count
主path的对端IP:assoc->peer.primary_addr
比如在函数sctp_seq_dump_remote_addrs中要打印对端的所有IP地址。
管理链表的函数:sctp_assoc_add_peer和sctp_assoc_rm_peer
比如添加一个新的path到偶联的path链表:
2. 本端绑定的addr_entry链表
链表:asoc->base.bind_addr.address_list
数量:asoc->base.bind_addr.address_count //目前没有,可以考虑增加
主path的本端IP:asoc->peer.primary_path.saddr
比如,在获取路由函数sctp_v4_get_dst中,需遍历本端绑定地址链表:
再比如sctp_seq_dump_local_addrs中要打印本端地址列表,而且会标明primary path:
- SCTP协议源码分析--多归属特性multi-homed(一)
- SCTP协议源码分析--多归属特性multi-homed(一)
- SCTP协议源码分析--多归属特性multi-homed(二)
- SCTP协议源码分析--多归属特性multi-homed(二)
- SCTP协议源码分析--拥塞控制算法
- SCTP协议源码分析--拥塞控制算法
- 什么是多宿主主机(multi-homed machine)?
- Linux协议栈源码分析读书笔记(一)
- XMPP协议_smack源码分析(一)
- (ZZ) SCTP 流控制传输协议(一)
- 【转载·SCTP协议】浅析 - SCTP协议
- 下一代互联网协议:SCTP
- SCTP协议跟踪
- SCTP协议详解
- SCTP协议详解
- SCTP协议详解
- SCTP协议开发资料
- CentOS安装sctp协议
- 让cmake支持GDB调试的方法
- 二、C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
- Android动态设置ViewPager是否可手指滑动
- Maven中jar包之间的冲突问题
- linux 创建多个文件
- SCTP协议源码分析--多归属特性multi-homed(一)
- C++后端开发面试题精选
- 三、智能指针
- linux进程详解:fork进程、孤儿进程、僵尸进程
- react native仿微信PopupWindow效果
- 开发者必读的十大经典书籍
- Qt5 生成.exe 运行在没有Qt环境的计算机中
- Android studio 如何创建创建第三方库生成自己的jar(Module)
- 内存映射文件原理探索