计网学习笔记十 Internet Routing Protocols
上一讲简单介绍了routing和两种最小路径算法的使用,这节课讲了两种算法是如何糅合进协议中来实现具体使用的。
这一讲内容有AS的介绍,以及IGP和BGP协议。
Autonomous Systems
Internet具有的IP地址数量高达40亿..其中需要对20亿的地址做路由,这是非常可怕的事情!(根本存不下这么大的路由表)
Internet只是一个联合体,就像第一节说的有很多的ISP,他们互联起来组成一个大网,每个ISP独立网络的管理者希望控制自己内部的网络路由。所以,便产生了AS。
Autonomous Systems: Set of routers and networks managed by single ISP or large organization.

Hierarchical Routing
对路由器做一个区域上的聚合,称这个聚合为AS(自治系统);同一个AS内的路由器使用相同的路由协议进行路由,而从自治系统出去要经过网关(gateway)路由器,和其它网关进行对话。每个AS都分配了一个独一无二的16位或32位的AS number。(具体见RFC 1930)
AS内部使用common routing protocol(inter-AS routing),外部intra-AS routing;
对自治域的比喻:一个国家内的路由,内部路由是自己任意调度,外部需要海关进行全球协议性的沟通
ISP级别的互连太多了,所以需要peer center(互联中心),大家都把光缆拉到这里。(大公司为了获得更好的服务,往往将自己接入transit AS或者peering center)
Intra-AS and Inter-AS routing
IGP and EGP
IGP,内部网关协议,属于内部AS协议;需要内部信息;关注更多的是性能;
EGP,外部网关协议,属于外部AS协议;需要外部信息;很多时候关注的是可达性;会有较大因素受外界影响而改变,”Policy may dominate over performance“(即现在两个大AS之间的“政治策略”) 。
Common Protocols
IGP有RIP,OSPF,IGRP(思科私有协议);
EGP有BGP,BGP的重要程度堪比IP协议,它将所有的ISP粘合起来。
为什么需要BGP?
Link-state and distance-vector not effective for exterior gateway protocol.
DV连自己经过了哪几个AS都不知道,而LS的洪泛对这么大的网络是难以控制的。
所以EGP用的是PV(path vector)路由算法,抽象出来就是bellman-ford。"The most concern is the ASs passed through."而且EGP的运行不单单依据PV,还依据policy。
IGP
RIP
RIP用的是DV路由算法。Distance metric的标准是跳数或者是router端口中的queue长度;Distance vectors每隔30秒就以RIP update message的形式发送出去;180s判断超时,即链路断开;DV通告使用UDP,周期性重复;
RIP路由表由应用级进程routed (daemon)管理;
OSPF

OSPF用的是LS路由算法,取代了RIP;详见RFC 2328;
每台路由器都保存到邻居的本地链路状态列表;路由器每10秒通过flooding将更新后的状态信息(advertisement)发送到整个AS;OSPF的信息是在IP层上而不是UDP。
OSPF的优点:


对最后一点稍加补充:
单个AS被继续划分为小的Area(用一个32位的ID表示),路由器只知道当前area的拓扑,这样可以限制路由器的flooding范围;

OSPF中链路权值的设置如下:

两种协议的比较

BGP
具体标准参见:RFC 8271
BGP为由AS的需求而提出的协议:隐私(如隐藏拓扑)、自主性、自由选择AS间路由等。

BGP的行为可划分为两个步骤:
从邻居AS获取某个prefix的可达性信息;
对包含了可达性信息的众多条路由信息进行选择,选出“最好”的路由;
basic idea:

BGP信息要做的事情:

在进行路由选择之前,某个AS中的路由器A想要知道另一个AS中的一个子网的前缀,则需要使用iBGP连接和eBGP连接将该前缀信息进行通告。(注意一条BGP连接并不直接对应物理上的一条链路)如下图,如果AS3想让附近的AS知道它的存在,就需要:


这个BGP报文又被称为路由,一条路由的特征为NEXT-HOP、AS-PATH、prefix三个部分,根据算法的不同还会加上一个优先级。其中,NEXT-HOP信息是该路由到达目标AS前的最后一个路由器出端口的IP地址,AS-PATH是其经过的AS路径信息,prefix就是需要知道的子网前缀。
两种选择算法
我们先来看一个例子,比较两种BGP选择算法:

在这个例子中,从AS1到前缀x有两条路由信息,3d:AS3 x 和 2a: AS2 AS3 x。
烫手山芋算法
这是一个自私的算法!我们拿路由器1b来举例。1b收到所有路由信息后,检查路由信息上的NEXT-HOP有2a和3d两个,便查阅本地AS内部路由选择信息,找到通往这两个端口分别的最小开销:在图中分别为2和3—>选择开销为2的路由器2a,将这个端口I的地址和前缀x组合起来为(x,I)加到自身的转发表中。可以看到这个算法只顾着自己AS内的最小开销,只想尽快把packet送出AS,而不顾总体上的AS路由,是非常自私的。

路由选择算法
这个算法需要将路由信息加上优先级。(注意只有iBGP信息会加上这个)这个优先级信息是本地配置的,即对于多条路由信息,本地的AS网络管理员会对其进行优先级的区分,以让他们根据自己的policy来进行路由(policy的详细介绍见书本5.4.5):

配好优先级后,具体实现步骤如下:

BGP总结


计网学习笔记十 Internet Routing Protocols的更多相关文章
- Networking && Internet 计网学习笔记一
Networking && Internet 计网学习笔记一 参考书籍: James F. Kurose, Keith W. Ross. 计算机网络-自顶向下方法 (7th). 机械工 ...
- 计网学习笔记二 Link Layer Service
在上一周的计网学习了network和Internet的总论.在这一周开始的未来几讲将集中在链路层link layer,并且会有相应的计网lab完成.在这一讲中,我们主要关注链路层提供的服务. 课程资料 ...
- 计网学习笔记五 wireless && mobile networks
老师把无线网络用一节课一遍过了-感觉没能学透,便课后自己总结,看书,找资料补充,把无线网络大概摸了个七七八八.虽然不算精细,但还能看!内容包括WLAN总概,WiFi-WLAN的实现,802.11规定的 ...
- 计网学习笔记六 Network Layer Overview
这节课开始进入了网络层的学习,讲述了网络层提供的功能,还有路由器内部是什么样子的,以及virtual circuit网络和datagram网络的一点比较. 网络层有什么作用呢?用一句话来说,就是需要负 ...
- 计网学习笔记三 MAC与LAN
在上一讲中,我们学习了链路层可以提供的服务:framing,link access,reliable delivery,error detection&correction.这一讲我们从lin ...
- 计网学习笔记七 IP protocol basic
在这一节讲了IP协议的基本内容:包括IPv4提供的操作.数据报在IPv4下是怎么样的结构.数据报是怎样切片发送的.IPv4的编址方式有什么--IPv6在下一节讲网络层协议簇时细讲. IPv4协议的具体 ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(十) indigo Gazebo rviz slam navigation
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 moveit是书的最后一章,由于对机械臂完全不知,看不懂 ...
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...
- python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法
python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然 ...
随机推荐
- 每天学五分钟 Liunx 001 | 用户及用户组
Liunx 文件权限 [root@controller-0 ~]# ll -al heihei -rw-r--r--. 1 root root 0 Mar 3 07:39 heihei 第一列 -rw ...
- WPF|分享一个登录界面设计
分享一个登录界面,先看效果图: 准备 文中使用到了一些图标: 我们可以从 iconfont免费下载: 代码简单说明 请随手创建一个WPF项目(.NET Framework..NET 5\6\7皆可), ...
- 一 , FileChanle
package nio; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteBuffer ...
- Data truncated for column '字段名' at row 1 的解决方法
1.原因: 修改表结构 XXX 为 not null 时,表数据 XXX 字 段 存在 null 值. 2.解决: 去掉或修改 带有 null 值 的 ( 需要设置 not null 的) 字段
- Java基础篇(05):函数式编程概念和应用
目录 一.函数式概念 二.函数与方法 三.JDK函数基础 1.Lambda表达式 2.函数式接口 四.Optional类 1.Null判断 2.Optional应用 五.Stream流 一.函数式概念 ...
- Nginx 配置文件备忘单
Nginx 是用于 Web 服务.反向代理.缓存.负载平衡.媒体流等的开源软件.在这篇文章中,我将提到一些我们经常使用的 Nginx 配置. 监听端口 server { Standard HTTP P ...
- [转帖]Kafka的Topic配置详解
https://www.jianshu.com/p/c9a54a587f0e 一.Kafka中topic级别配置 配置topic级别参数时,相同(参数)属性topic级别会覆盖全局的,否则默认为全局配 ...
- lightning 导入数据库表的操作步骤
lightning 导入数据库表的操作步骤 TiDB数据库备份恢复的方式与方法 1. mysqldumper 以及 mysql 导入 2. select into outfile 以及 load da ...
- [转帖]【Redis】Redis中使用Lua脚本
Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. Lua具体语法参考:https://www.runoob. ...
- F5内核参数的简要学习
前言 最近学习了很长时间的Linux内核参数 但是大部分是纸上谈兵. 也没有一个好的系统用于学习和参照 晚上搜索F5资料时发现F5有一些iso和ova文件 就想着下载学习一下. 看看F5系统默认的参数 ...