750 likes | 913 Views
路由新进展. 罗忠文 http://xgxy.cug.edu.cn/rjgcx/lzw 内容取自 UCB 的教程 24035234@qq.com. 尝试本科生研究 ?. Work at cutting edge of EECS 课外见教授 , 研究生 看你是否享受研究生 将你的 résumé 写得更有竞争力. Prof. Armando Fox 将有一个非正式的报告 “ 开始本科研究 ”. 路由三位一体( Holy Trinity ) : LS, DV, PV. 通常是一个完整的故事 但我们知道如何做得更好 一些现在部署的技巧 一些未部署的研究建议
E N D
路由新进展 罗忠文 http://xgxy.cug.edu.cn/rjgcx/lzw 内容取自UCB的教程 24035234@qq.com
尝试本科生研究? • Work at cutting edge of EECS • 课外见教授, 研究生 • 看你是否享受研究生 • 将你的résumé写得更有竞争力 Prof. Armando Fox 将有一个非正式的报告“开始本科研究”
路由三位一体(Holy Trinity): LS, DV, PV • 通常是一个完整的故事 • 但我们知道如何做得更好 • 一些现在部署的技巧 • 一些未部署的研究建议 • 这是我们今天要谈论的问题…..
今天的另一目的 • EE122 (CS version)算法是空虚的(vacuous) • AIMD 是智能深度的高点 (ugh) • 今天描述的算法并非显然 • 算法简单, 但其特性非显然 • 你将证明两个结果(作为课程练习) • 5分钟, 以小组为单位, 试着给出推导 • 我将给出证明的轮廓
路由挑战: 弹性 • 基本路由算法依赖于长时一致性或者全局收敛以确保传输 • LS: 路由器需要有对网络的相同图景 • PV/DV: 如果算法还未收敛,可能循环 • 随着网络增长, 这变得困难并要花更长时间 • 需要一致/收敛 和时间表! • 失效检测和恢复间有滞后 • 滞后是获得99.999%可靠性的最大障碍
今天用到的技术手段(Hacks) • 预配置备份路径 • 当链路失效时, 路由器有一个备份路由可用 • 对于单个失效非常有帮助 • 对于多点失效保护有限 • 没有系统方案 • ECMP: 等费用多路径(Equal-Cost Multipath) • 与备份类似,但可用性更窄 • 在几个“最短路径”间选择
今天的解决方案 • 多路径 (one slide) • 失效携带包 • 沿有向无环路由(Routing-along-DAGs) • 防止策略震荡 (if time)
多路径路由 • 多路径: • 为每个源-目标对,提供多于一条路径 • 允许端点从多个里面选择一个 • 优点: 如果一条路径无法用,可使用另一条 • 缺点: 当端结点检测到失效时,延时 (RTT) • 由于端到端的考虑,因此绝对需要 • 但不是基础范型转变 • 部分解决方案,但还需要更多可靠路由
基本问题 在链路失效后,我们能否完全消除“重新收敛”的需要? 即, 我们能否容忍失效而没有损失?
FCP 方案: 第1步 • 确保所有路由器对网络有一致的视图 • 但此视图可能过时 • 如果不要求时间线,一致性比较容易 • 使用可靠泛滥 • 每个映射(map)拥有序列号 • 路由器将此数写到包头中,从而包根据相同的“映射map”来路由 • 路由器可对此记数器减一, 不增加它 • 最终所有路由器对路由包使用相同的图 • 此获得了一致, 但不是时间线….
FCP方案: 第2步 • 在包中携带失效信息! • 使用此信息来“修复fix”本地映射 • 当包到达,并且路径计算出的一致状态中下一跳已经挂掉, 将失效信息插入到包头中 • 然后假定该链路挂掉,计算新的路径 • 如果失效继续, 它将出现在下次的一致网络图景中 • 然后就不需要在包头中了
示例: FCP路由 B D IP packet A F source destination C E
(D,F) (C,E) (C,E) IP packet IP packet 示例: FCP路由 B D IP packet A F source destination C E
课堂练习: 证明此工作 • 激发一组讨论,说明为什么这保证了连接性 • 在什么情况下此保证有效?
证明要点(Keys to Proof) • 死端: 只要映射加失效还有连接,无死端 • 环路: 假定环路. 环路上的结点都共享相同的 “一致”映射加上一组在包头中的失效. 因此,他们计算相同的路径. 矛盾
正确性的条件 • 考虑包发送前直到TTL时间到从而包失效,从上次一致映射以来的一组网络变化 • 如果所有网络状态的交汇处,在变化过程中都是连接的,那么FCP将发送包
FCP的特性 • 确保包发送 • 只要在失效过程中,路径存在 • 主要概念改变 • 不再仅仅依赖于协议来保持状态一致 • 携带在包中的信息确保最终路由计算一致 • 此做法将在下一个设计中重现…. • Ion’s Stoica’s thesis!
OSPF-overhead FCP-lossrate 结果: OSPF vs. FCP • 和FCP不同, OSPF无法同时提供低扰动和高可用性 OSPF-lossrate Overhead [msgs/sec per link]
Bkup-state Bkup-lossrate FCP-state FCP-lossrate 结果: 路径备份Backup-paths vs. FCP • 和FCP不同, 路径备份(Backup-paths)无法同时提供低状态和丢包率
FCP的问题 • 需要改变包头 • 从而包头可能变长 • 需要快速重新计算路由 • 可以预计算公共情形, 但最差情况计算很不好 • 没有处理流量工程 • 哪是什么?
流量工程Traffic Engineering (TE) • 连接性是必要的,但不充分 • 还需要提供合适的服务 • 需要路径上的连接不要过载 • 拥塞控制降低了丢包率, 但需要通过均衡负载来给连接提供合适的带宽 • 流量工程是在网络上分布负载的一种方式 • 即, 并非所有的包都走“最短路径”
5 Minute Break Questions Before We Proceed?
避免重新计算: Take II • 不用进行全局重新计算来从失效中恢复 • 支持局部自适应流量工程 • 包头没有任何改变等 • 或需要主要立即(on-the-fly)路由重算
背景 • 仅关注单个目标的路由表 • 可以是一个前缀,或者单个地址 • 今天我们对指定路径计算路径 • 存在从每个源到这个目标路径 • 当路径损坏, 需要重算路径 • 我们一切麻烦的根源!
我们的方案: 改变模式 路由计算从源到目的的路径 如果链路失效, 所有受影响的路径必须重算 从路径到 有向无环图 (DAG) Path DAG X X • 包可在任何 DAG出口链路发送 • 每次失败后不用重新进行全局计算
DAG特性 • 确保无环 • 对于失效恢复,本地决策 • 自适应负载平衡 X X 0.7 0.3
负载平衡 • 采用本地决策: • 选择使用哪个出口链路 • 决定如何在这些链路间分发负载 • 发回(Push back)当所有出口链路都阻塞时 • 在入口链路向上游结点发送拥塞信号 • 理论: • 当所有流量流向单个目标时,本地负载平衡产生最优throughput • 仿真: • 在一般设置下,本地负载平衡挖最优
基于DAG的路由 • 本质上是一个“备份路径”的原则范例 • 能容忍很多失效 • 可扩展 • 容易理解和管理
计算DAG • DAG当且仅当链路方向遵循总的顺序 • 为目标v计算DAG是简单的: • 基本上是最短路径计算 • 和打破平局一致的方法 • 按d.i排序,其中d是距离而i是标号
关于连接性如何? • 多出口链路改进连接性 • 但RAD能给出“完美的”的连接性吗? • 如果所有出口链路失效,该结点断开 • 即使其下的图还是连接的 • 如何修复此?
链接逆转 • 如果所有向外链路失效,逆转传入链路为传出 X X X X
RAD算法 • 当包到达, 在任何出口链路发出 • 当出口链路失效 (或逆转) • 如果存在其他出口链路, 什么都不做 • 如果不存在其他出口链路,逆转所有入口链路 • 即, 将它们变成出口
链路反转特性 • 确保连接性! • 如果图是连接的, 链路反转过程将恢复DAG中的连接性 • 这在无线文献中已经知道 • 现在被应用于有线网络中
课堂练习: 证明此工作 • 开发一组争议,为何此保证连接性 • 在何种环境下,确保成立?
证明要点 • 要求: 算法永远不要产生死端 • 如果有链路, 就使用它 • 环路: • 假定网络开始时没有环路 • (即, 我们有一个DAG) • 链路逆转不会产生一个环路 • 因为反转结点不会是环路的一部分 • 因此, 拓朴永远不会在有环存在的状态 • 我们是否已经完成证明了呢?
否, 链路反转可能不终结 • 必须证明拓朴到达固定点 • 如果底下的图是连接的 • 没有到达固定点意味着反转结点会永远继续 • 因为网络大小有限, 此过程必然在结点反转中循环 • 我们如何证明这是不可能的?
事实1 • 如果结点有到目标的路径,那么它将不会反转自己. • 结论: 有到达目标的路径的结点集合是非降的
事实2 • 一个结点做第二次链路反转,其所有邻居也必然反转其链路. • 因此,做反转的结点集合是扩展集 • 只能重新反转所有反转结点,如果过程到达网络边界 • 但一旦此过程碰到的结点连接到源,从而结束. QED.
RAD小结 • 本地响应导致: • 确保连接性 • 接近最优负载平衡 • 可以被用于L2 和/或 L3 • 不改变包头
为什么RAD是不够的? • 链路反转是在“控制面” • 需要花时间计算 • 包在此过程中可能丢失… • 和FCP路由重新计算完全一样的问题 • 工作于控制面速度,而非数据面速度 • 有何建议?
数据驱动的连接性 (DDC) • 按行为来定义链路反转特性,从而能以数据速度发生 • 事件: 包以“反”方向到达 • 行为: 将此链路从出口集中移去 • 可能行为: 所有端口“弹回”包 • 可以在硬件层做 • 今天的交换机就是这样做的….
问题: 策略振荡 • 策略振荡是: • 固有的 • 很难预先确定 • 涉及域策略的微妙的相互作用 • 正确性不成问题, 但偏好有冲突 • 因此,不能只是定义它们 • 需要新的方案
目标 • 不泄露任何ISP策略 • 分布式, 在线争议检测和解决 • 路由器会选择最偏好的路由,如果不存在引起振荡的争议 • 考虑到瞬态振荡,不要永久把路拉入黑名单
由于策略产生的固有振荡 1 2 3 依赖于策略的相互作用 “1”到达“0”更偏好 “1 3 0”而非 “1 0” 1 3 0 1 0 0 2 1 0 2 0 3 2 0 3 0 47
由于策略产生的固有振荡 1 2 3 初始: 结点 “1”, “2”, 和 “3” 仅知道到 “0”的最短路径 1 3 0 1 0 0 2 1 0 2 0 3 2 0 3 0 48
由于策略产生的固有振荡 1 2 3 “1” 向“2”公告其路径“1 0” 1 3 0 1 0 advertise: 1 0 0 2 1 0 2 0 3 2 0 3 0 49
由于策略产生的固有振荡 1 2 3 1 3 0 1 0 0 2 1 0 2 0 3 2 0 3 0 50