Welcome to Snooda's Blog
    最近一直苦于没有什么话题来写博,今天终于找到一个。    有人疑惑为什么使用fq代理后访问某些网站反而快了,疑问是不是某防火墙在捣鬼。    世界上一共40亿个ipv4地址,ipv6就更多了,为啥访问任意一个地址就能访问的到?是谁维护了这40亿个地址的分布?从这个ip到那个ip途径的路由是谁来指定的?

    从我们电脑的上网来讲,接入网络就能上网,这个是很稀松平常的事,但如果同时接入两个网络呢?比如一根有线一根无线,那么流量是怎么走的呢?这个时候电脑里的路由表就发挥了作用,运行route print命令,可以看到一行行的规则,每个网络包都会从上到下匹配这些规则,如果匹配上,就按规则指定的端口转发出去。一般同一时间段内流量只从一个网卡流出。


    进一步讲,家里多人上网的话会有路由器,对于家里电脑间传送文件和访问公网网站,流量是分发到不同端口的,路由器的路由表规则就不再是简单的向某一个端口分发,而是针对不同的ip段走不同的分发规则,一般内网ip流量分发至对应内网端口,公网流量统一从公网端口发送。

    对于公网上的流量,一样是按照路由表指示的路径行进,路由表是如何生成的呢?

    首先不会是每个ip一条记录,因为数据量太大,这里就用到了ip的分块,最早是用a,b,c三类来划分,后来由于粒度太粗,后来改用子网掩码的形式,子网掩码规定的范围是ip段的网络名,其余部分是可用地址范围(不全是,本文内容不做涉及),这样,路由表的尺寸就能缩减不少。

    互联网是网状的,每个路由都会于1个或多个其他路由进行连接,连接可能断开,可能阻塞,可能新建,所以路由表也会不断更新,一个路由器如何得知互联网上其他路由间的连接状态从而更新自己的路由表,就需要用到路由交换协议,比如RIP,路由器将自己所知道的路由信息广播给周边路由,这样网络连通信息就能不断扩散至全网。


    不过网络上的路由器成千上万,如果所有路由都按照这种方式,效率非常低下。

    现实中,网络划分为了不同的自治系统:AS,AS的编号由ICANN管理,成为一个AS需要有多线路的连通能力,像电信、联通都是AS,一些较大的网络服务商也可以申请AS号和自己的地址空间。每个AS系统内部维护自己地址空间的路由信息,AS系统间的边界路由器使用BGP协议交换各自地址空间,这样,发往一个AS的网络流量只需要发给对应AS的边界路由即可。不过如果AS间网络带宽较小或者不稳定,就会有“跨网络互通问题”,就像国内电信和联通间访问效果不佳。

    早期国内主机解决网络互通问题会使用双ip的方案,同时接入一个电信ip和一个联通ip,再搭配智能dns,可以较好的解决了互通问题。但还是有浪费ip地址、智能dns解析不够准确的问题。

    后来就有了多线主机有的也叫bgp主机,只有一个ip,但同时接入多个线路,有双线、三线、甚至五线。对于接入的线路,均可以实现较好的访问效果。原理就是机房同时实现和多条线路的互通,将ip广播至每条线路。

    对于服务器可以通过接入多线的方式提高接入性能,对于上网者来说也一样。但同时开通两条甚至多条宽带的成本是比较高的,这样我们就可以借助多线服务器来提高网络访问速度。比如辽宁教育网用户访问辽宁联通,需要绕行至东北教育网节点甚至中国教育科研网节点,但如果借助一台部署在辽宁、同时接入教育网线路和联通线路的服务器中转。网络速度就能大大提高。对于访问国外站点也是一样。
    

    资料:
    查看全球bgp路由表:http://www.ris.ripe.net/bgpviz/
    telnet:route-views3.routeviews.org




    
Tags: , ,
    BGP的全称是Border Gateway Protocol, 边界网关协议。最近在很多机房和服务器/VPS介绍时提到了BGP这个词。并且凡是带了BGP的,价格就要高很多。那么到底什么是BGP,BGP又有什么用呢。

    从一些英文资料上来看,bgp主要用于多个不同as用户访问目标时都能有很好的访问速度,参考国内的跨运营商访问。很久之前记得双线主机是给两个ip的,也就是说双线靠同时接入两个运营商的线路实现,这样双ip的站点要想让用户能够访问到和自己同运营商的ip,往往是通过不同的域名,然后让用户手动选择的(之前很多网站都有电信入口或网通入口的链接供选择,现在很多下载站还有这种设置)高级一点就是使用智能dns,自动解析给用户同线路的ip,cdn就是基于这个原理。至于bgp,就更高级了,同一个ip,对于不同的来源会有不同的路由方式。按我的理解就是将同一个ip广播到多个子网络中,这样各个子网络上的访问者都可以从本网络路由访问到指定ip,避免了跨运营商访问。

    还有一个类似的东西叫anycast,看了一会资料没有太看懂跟bgp是什么关系,貌似是说anycast是bgp的一种增强版实现?
    anycast是更进一步的实现,是多server绑定同一个ip,用户在访问时会路由到离自己最近的server上。比如google.com。同一个ip在全球范围内ping的话值都比较低。原因就是每个地区用户访问该ip时,会路由到离自己最近的服务器上。这样有效避免了数据的远程传输。



Tags: ,
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]