July 2013 Blog Posts

"NETDEV WATCHDOG: eth0: transmit timed out"问题解决办法小结

Blog Author 2013-07-19 Networking

Linux中的一种解决办法:

1. 打开/boot/grub/menu.lst文件,在启动的核心kernel那行最后加上: acpi=off noapic。

   其中:

         1) acpi=off 禁止了一些电源高级管理功能,对你的应用程序没有影响。

         2) noapic 改变了中断方式,对应用也没有影响。
   详见: NETDEV WATCHDOG: eth0: transmit timed out问题

2. ethtool -K eth0 tso off

3. 重新装网卡驱动。 
  

 rmmod r8169 && modprobe r8169 && update-modules

 
   或更彻底点重新下载个驱动安装,不一定下最新的,因为更新的驱动可能会不适合一些老网卡,所以老的驱动可能没有这个 问题。

4. 换用旧的内核试试。

5. 关闭ecn。 在文件/etc/sysctl.conf中加入

 net.ipv4.tcp_ecn=0 

6. 关闭IPV6支持。在文件/etc/modprobe.d/aliases中把alias net-pf-10 ipv6 替换成如下两行:

   alias net-pf-10 off 
   alias ipv6 off 

7. 强制设定网卡工作模式: mii-tool 100baseTx-HD
   100baseTx-HD 是100M双绞线全双工的意思。其他的可以mii-tool --help看看,或到网上查查。

 

另外看到别人的办法:

  以前是debian + win2K 双系统。最近终于决定要升级到winxp了。

  在原来win的分区重新装了xp后,就出现这种问题了。

  可偏偏此前还升级了debian,并在xp下运行过p2pover之类的软件。所以问题原因就不好确定了。

  最后,确定原因是:winxp的网卡设置里有一项功能是在关闭xp时关闭网卡的网络唤醒(wake-on-lan)。而debian却偏偏不能把这个打开。这才出现了这个问题。

  解决办法呢,就是在winxp下,右键点击“网上邻居”,点击“属性”,在右键点击“本地连接”,再点“属性”->"配置"->"高级",然后设置“Wake-on-LAN”为“enable”。然后重启,进入linux就可以联网了。

NETDEV WATCHDOG: eth0: transmit timed out问题

Blog Author 2013-07-19 Networking

用iperf打包的时候,CentOS系统PC机自动关机了,不知道是怎么回事。

重启PC,查看日志信息,发现有“Jul 18 12:04:11 pact kernel: NETDEV WATCHDOG: eth0: "的错误信息。

上网查找,发现遇到” pact kernel: NETDEV WATCHDOG: eth0: "这个问题的人也不少,但是大多数都只是出现网卡异常,其他服务正常;跟我这个机器会自动关机的情况不一样。

再次重启PC;不管怎么样,在menu.lst中加上两个参数,再次打包,目前打了两个小时,还没有出现这个问题。

具体方法:

/boot/grub/menu.lst文件,在启动的核心kernel那行最后加上   

acpi=off noapic

   
1)acpi=off  禁止了一些电源高级管理功能,对你的应用程序没有影响。  
2)noapic  改变了中断方式,对应用也没有影响

 

1、ACPI和APIC有什么关系?   
   
   很多人问道了什么ACPI,什么是APIC,他们有没有关系?名字这么相近。下面给出我对其的一些理解,具体的解释可以查看内核文档库的内核参数文件:  
/usr/src/`uname -r`/Documents/kernel-parameters.txt  
ACPI就是Advanced Configuration and Power Interface的缩写,意思是“高级配置与电源接口”。这是英特尔、微软和东芝共同开发的一种电源管理标准。  
  ACPI可实现以下功能:     
  1、用户可以使外设在指定时间开关;     
  2、使用笔记本电脑的用户可以指定计算机在低电压的情况下进入低功耗状态,以保证重要的应用程序运行;     
  3、操作系统可以在应用程序对时间要求不高的情况下降低时钟频率;  
  4、操作系统可以根据外设和主板的具体需求为它分配能源;  
  5、在无人使用计算机时可以使计算机进入休眠状态,但保证一些通信设备打开;  
  6、即插即用设备在插入时能够由ACPI来控制。  

   不过,ACPI和其他的电源管理方式一样,要想享受到上面这些功能,必须要有软件和硬件的支持。在软件方面,Windows 98及其后续产品和Windows 2000都对ACPI给予了全面的支持;而Linux的内核目前对此支持得并不是太理想。硬件方面比较麻烦,除了要求主板、显卡和网卡等外设要支持ACPI外,还需要机箱电源的配合。电源在提供5伏电压给主板的同时,还必须使电流稳定在720毫安以上才可以,这样它才能够实现电脑的“睡眠”和“唤醒”。  
  ACPI共有六种状态,分别是S0到S5,它们代表的含义分别是:  
  S0–实际上这就是我们平常的工作状态,所有设备全开,功耗一般会超过80W;  
  S1–也称为POS(Power on Suspend),这时除了通过CPU时钟控制器将CPU关闭之外,其他的部件仍然正常工作,这时的功耗一般在30W以下;(其实有些CPU降温软件就是利用这种工作原理)  
  S2–这时CPU处于停止运作状态,总线时钟也被关闭,但其余的设备仍然运转;  
  S3–这就是我们熟悉的STR(Suspend to RAM),这时的功耗不超过10W;  
  S4–也称为STD(Suspend to Disk),这时系统主电源关闭,但是硬盘仍然带电并可以被唤醒;  
  S5–这种状态是最干脆的,就是连电源在内的所有设备全部关闭,功耗为0。

  
  我们最常用到的是S3状态,即Suspend to RAM(挂起到内存)状态,简称STR。顾名思义,STR就是把系统进入STR前的工作状态数据都存放到内存中去。在STR状态下,电源仍然继续为内存等最必要的设备供电,以确保数据不丢失,而其他设备均处于关闭状态,系统的耗电量极低。一旦我们按下Power按钮(主机电源开关),系统就被唤醒,马上从内存中读取数据并恢复到STR之前的工作状态。内存的读写速度极快,因此我们感到进入和离开STR状态所花费的时间不过是几秒钟而已;而S4状态,即 STD(挂起到硬盘)与STR的原理是完全一样的,只不过数据是保存在硬盘中。由于硬盘的读写速度比内存要慢得多,因此用起来也就没有STR那么快了。 STD的优点是只通过软件就能实现,比如Windows 2000就能在不支持STR的硬件上实现STD。  
之前的电源管理是APM(Advanced Power Management),那么ACPI和APM相比有什么区别呢?  


2、ACPI与APM比较   
APM 1.0&1.1:由BIOS执行电源管理;  
APM 1.2:操作系统定义电源管理时间,由BIOS负责执行;  
ACPI:BIOS收集硬件信息,定义电源管理方案;由操作系统负责执行。  
APM是一种软件解决方案,因此是与操作系统有关的, 而ACPI是工业标准,包括了软件和硬件方面的规范。  
APIC (高级可编程中断控制器)对计算机来讲有两个作用,  
一是管理IRQ的分配,可以把传统的16个IRQ扩展到24个(传统的管理方式叫PIC),以适应更多的设备。  
二是管理多CPU。由于Nf2主板并不支持多CPU,所以,APIC关闭直接的影响是减少了可用的IRQ。  
不过,如果板卡不是非常多的话,关闭 APIC对系统是没有什么影响的。  
要实现SMP功能,我们使用的CPU必须具备以下要求:  
CPU内部必须内置APIC单元。Intel 多处理规范的核心就是高级可编程中断控制器(Advanced Programmable Interrupt Controllers–APICs)的使用。CPU通过彼此发送中断来完成它们之间的通信。通过给中断附加动作(actions),不同的CPU可以在某种程度上彼此进行控制。每个CPU有自己的APIC(成为那个CPU的本地APIC),并且还有一个I/O APIC来处理由I/O设备引起的中断,这个I/O APIC是安装在主板上的,但每个CPU上的APIC则不可或缺,否则将无法处理多CPU之间的中断协调。  
APIC可能遇到的问题,很多这类问题可以通过BIOS更新来解决。  
下面的是通过更改HAL类型来解决 :
  CPU实际运行频率与BIOS设定频率不符 。
  NF2的用户大约有10%的会出现CPU实际运行频率与BIOS设定频率不符的问题。我们称之为“频率不对”。  
  这种现象带来的直接后果就是在测试3dmark或跑3D游戏的时候,会感觉不流畅,也称之为“顿”。  
  一般在更改BIOS设置后、更新驱动后重启时,用测试软件如Aida32、MBM5等可以看到CPU的运行频率和你在BIOS里设置得不一样,而且差距很大。这个时候,用super pi测试CPU速度,会比平常花费时间长好几秒,用3dmark跑测试,会比平常低几百分甚至上千分。在3dmark中看到的CPU频率,也与BIOS设定不符合。  
  如果出现这种情况,则属于我们所讨论的“频率不对”的问题。  
  不过,不是所有的3D游戏“顿”都是这个原因。判断的方法是:如果你只有个别游戏“顿”,或者用上述软件测试频率正确,就不是此问题。  
  如果判断确实属此问题,解决的方法也很简单,经过网友讨论,只要关闭APIC功能即可。(注意,是APIC,不是ACPI)。  
有一些服务器(比如IBM的,HP的),安装LINUX时,会给出内核的错误,导致无法安装,这个时候可以在安装的时候输入  
linux acpi=off noapic  
应该是安装上的。    
-------------------------------------------------------------

 2.6内核,用iptables做了一个简单的NAT,      
eht0: DLink530TX网卡,连接外网  
eht1:主板集成ntel pro/100VE ,连接LAN       

modprobe ip_tables   
modprobe ip_nat_ftp   
modprobe ip_conntrack_ftp   
echo 1 > /proc/sys/net/ipv4/ip_forward   
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

    
结果发现有时候会在屏幕上提示以下信息:  
   
NETDEV WATCHDOG :eth0:   
eth0: transmit timed out,status 00000000,resetting….  
   
然后,NAT就不正常了,客户端上网的速度非常慢,甚至连接不了各大网站,   
 
网络上的解决方法是       

ethtool -K eth0 tso off

   
或者重新安装一下驱动 ,这是intel 1000M网卡的处理方法

上海居转户公示时间及人数汇总-20130712

Blog Author 2013-07-12 上海居转户专题

公示时间及人数汇总 

居转户公示时间及人数统计表
序号 公示开始 公示结束 公示编号开始 公示编号终 公示人数 备注
1 2009/9/11 2009/9/25 1 29 29  
2 2009/10/15 2009/10/29 30 63 34  
3 2009/11/9 2009/11/23 64 80 17  
4 2009/12/9 2009/12/23 81 130 50  
5 2010/1/18 2010/2/1 132 199 68 缺少131号
6 2010/3/1 2010/3/15 200 255 56  
7 2010/4/6 2010/4/20 256 330 75  
8 2010/5/19 2010/6/2 331 464 134  
9 2010/7/2 2010/7/16 465 630 166  
10     631 1047 417  
11 2010/12/6 2010/12/20 1048 1202 155  
12 2010/12/30 2011/1/13 1203 1339 137  
13 2011/1/28 2011/2/11 1340 1517 178  
14 2011/2/24 2011/3/10 1518 1632 115  
15 2011/3/25 2011/4/8 1633 1752 120  
16 2011/4/25 2011/5/9 1753 1988 236  
17 2011/5/25 2011/6/8 1989 2263 275  
18 2011/6/22 2011/7/6 2264 2547 284  
19 2011/7/29 2011/8/12 2548 2863 316  
20 2011/8/31 2011/9/14 2864 3011 148  
21 2011/9/28 2011/10/12 3012 3316 305  
22 2011/11/2 2011/11/16 3317 3572 256  
23 2011/11/25 2011/12/9 3573 3822 250  
24 2011/12/27 2012/1/10 3823 4049 227  
25 2012/1/20 2012/2/3 4050 4372 323  
26 2012/3/6 2012/3/20 4372 4768 397 多148号
27 2012/4/10 2012/4/25 4769 5165 397  
28 2012/5/10 2012/5/24 5166 5541 376  
28 2012/6/13 2012/6/27 5542 5946 405  
30 2012/7/19 2012/8/2 5947 6454 508  
31 2012/8/28 2012/9/11 6455 6888 434  
32 2012/9/29 2012/10/13 6889 7207 319  
33 2012/10/30 2012/11/13 7208 7478 271  
34 2012/11/26 2012/12/10 7479 7663 185  
35 2012/12/24 2013/1/7 7664 7891 228  
36 2013/1/29 2013/2/12 7892 8229 338  
37            
38            
39            
40 2013/4/11 2013/4/24   8803    
41 2013/5/20 2013/6/3 8804 9192 389  
42 2013/6/5 2013/6/19 9193 9341 149  
43 2013/7/12 2013/7/26 9342 9668 327  

上海居转户20130712公示小结

Blog Author 2013-07-12 上海居转户专题

20130712公示人数总共327人,各区人数分布如下:  

 

顺序号 区县 小计
2001开头 浦东 108
2201开头 黄浦1 11
2401开头 嘉定 6
2801开头 普陀 8
3001开头 长宁 7
3201开头 闵行 30
3401开头 静安 13
3601开头 黄浦2(原卢湾) 6
3801开头 杨浦 9
4001开头 闸北 10
4201开头 虹口 0
4401开头 徐汇 24
4601开头 宝山 50
4801开头 奉贤 7
5201开头 松江 11
5401开头 青浦 7
6901开头 金山 6
7001开头 崇明 14

一个小故事-网关、DHCP、DDOS等精辟讲解(转)

Blog Author 2013-07-12 Networking

看到一个小故事,觉得对于初学者理解这些名词及其作用非常有帮助,转过来分享:)

计算机主机 的作用是什么?

假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关。

当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,并且跑出来跟你玩。

但是你不被允许走出大门,你想与外界发生的一切联系,都必须由门口的李大爷(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远的另外一个院子里,他家的院子里也有一个看门的王大爷(小明的网关)。

但是你不知道小明家的电话号码,不过你的班主任老师有一份你们班全体同学的名单和电话号码对照表,你的老师就是你的

于是你在家里拨通了门口李大爷的电话,有了下面的对话:
小不点:李大爷,我想找班主任查一下小明的电话号码行吗?
李大爷:好,你等着。(接着李大爷给你的班主任挂了一个电话,问清楚了小明的电话)问到了,他家的号码是211.99.99.99
小不点:太好了!李大爷,我想找小明,你再帮我联系一下小明吧。
李大爷:没问题。(接着李大爷向电话局发出了请求接通小明家电话的请求,最后一关当然是被转接到了小明家那个院子的王大爷那里,然后王大爷把电话给转到小明家)
就这样你和小明取得了联系。

至于 服务器嘛,可以这样比喻:
你家院子里的居民越来越多了,传达室李大爷那里的电话交换机已经不能满足这么多居民的需求了,所以只好采用了一种新技术叫做DHCP,居民们开机的时候随机得到一个电话号码,每一次得到的号码都可能会不同。
你家门口的李大爷:就是你的网关
你的班主任:就是你的DNS服务器
传达室的电话交换机:就是你的DHCP服务器
同上,李大爷和王大爷之间的对话就叫做

另:如果还有个小朋友叫做小暗,他住的院子看门的是孙大爷,因为小暗的院子刚盖好,孙大爷刚来不久,他没有李大爷和王大爷办公室的电话(李大爷和王大爷当然也没有他的电话),这时会有两种情况:
1、居委会的赵大妈告诉了孙大爷关于李、王两位大爷的电话(同时赵大妈也告诉了李、王关于孙的电话),这就叫静态设定路由
2、赵大妈病了,孙大爷自己到处打电话,见人就说:“我是小暗他们院子管电话的”,结果被李、王二位听到了,就记在了他们的通讯录上,然后李、王就给孙大爷回了个电话说:“我是小明(小不点)他们院子管电话的”,这就叫动态设定路由
然后有一天小不点要找小暗,结果自然是小不点给李大爷打电话说:“大爷,我找小暗”(这里省略了李大爷去查小暗电话的过程,假设他知道小暗的电话),李大爷一找通讯录:“哦,小暗的院子的电话是孙大爷管着的,要找小暗自然先要通知孙大爷,我可以通知王大爷让他去找孙大爷,也可以自己直接找孙,那当然是自己直接找孙方便了”,于是李大爷给孙大爷打了电话,然后孙大爷又把电话转到了小暗家。

这里李大爷的通讯录叫做路由表。
李大爷选择是自己直接找孙大爷还是让王大爷帮忙转接叫做路由选择。

李大爷之所以选择直接找孙大爷是有依据的,因为他直接找孙大爷就能一步到位,如果要王大爷转接就需要两步才能完成,这里的“步”叫做“跳数”,李大爷的选择遵循的是最少步骤(跳数)原则(如果他不遵守这个原则,小不点可能就会多等些时间才能找到小暗,最终结果可能导致李大爷因工作不力被炒鱿鱼,这叫做“延时太长,选路原则不合理,换了一个路由器”)

当然,事情总是变化的,小不点和小明吵架了,这些天小不点老是给小暗打电话,小明心里想:“操,他是不是在说我坏话啊?”于是小明决定偷听小不点和小暗的通话,但是他又不能出院子,怎么办呢?小明做了这样一个决定:
首先他告诉自己院里管电话的王大爷说:“你给李大爷打个电话说小暗搬到咱们院子了,以后凡是打给他的电话我来接”,王大爷没反映过来(毕竟年纪大了啊!)就给李大爷打了电话,说:“现在我来管理小暗的电话了,孙已经不管了”,结果李大爷就把他的通讯录改了,这叫做路由欺骗。
以后小不点再找小暗,李大爷就转给王大爷了(其实应该转给孙大爷的),王大爷收到了这个电话就转给了小明(因为他之前已经和小明说好了),小明收到这个电话就假装小暗和小不点通信。因为小明作贼心虚,害怕明天小不点和小暗见面后当面问他,于是通信断了之后,又自己以小不点的名义给小暗通了个电话复述了一遍刚才的话,有这就叫数据窃听
再后来,小不点还是不断的和小暗联系,而零落了小明,小明心里嘀咕啊:“我不能总是这样以小暗的身份和小不点通话啊,外一有一天露馅了怎么办!”于是他想了一个更阴险的招数:“干脆我也不偷听你们的电话了,你小不点不是不给我打电话吗!那我让你也给小暗打不了,哼哼!”,他怎么做的呢?我们来看:
他联系了一批狐朋狗友,和他们串通好,每天固定一个时间大家一起给小暗院子传达室打电话,内容什么都有,只要传达室的孙爷爷接电话,就会听到“打雷啦,下雨收衣服啊!”、“人是人他妈生的,妖是妖他妈生的”、“你妈贵姓”等等,听的脑袋都大了,不听又不行,电话不停的响啊!终于有一天,孙爷爷忍不住了,大喊一声:“我受不了拉!!!!”,于是上吊自杀了!

这就是最简单的,孙爷爷心理承受能力弱的现象叫做“数据报处理模块有BUG”,孙爷爷的自杀叫做“路由器瘫痪”。如果是我,就会微笑着和他们拉家常,例如告诉他们“我早就听了天气预报,衣服10分钟前已经收好了”或者“那你妈是人还是妖”或者“和你奶奶一个姓”等等,我这种健全的心理叫做“健壮的数据报处理,能够抵御任何攻击”
孙爷爷瘫了之后,小不点终于不再给小暗打电话了,因为无论他怎么打对方都是忙音,这种现象叫做“拒绝服务”,所以小明的做法还有一个名字叫做“拒绝服务攻击”。
小明终于安静了几天,...

几天后,小明的院子来了一个美丽的女孩,名字叫做小丽,小明很喜欢她(小小年纪玩什么早恋!)可是小丽有个很帅的男朋友,小明干瞪眼没办法。当然这里还是要遵循上面的原则:小丽是不能出院子的。那个男的想泡小丽自然只能打电话,于是小明又蠢蠢欲动了:
还记得王爷爷是院子的电话总管吗?他之所以能管理电话是因为他有一个通讯录,因为同一个院子可能有2个孩子都叫小明,靠名字无法区分,所以通讯录上每一行只有两项:
门牌电话
一号门 1234567 (这个是小明的)
二号门 7654321 (这个是小丽的)
......
王爷爷记性不好,但这总不会错了吧(同一个院子不会有2个“二号门”吧)?每次打电话人家都要说出要找的电话号码,然后通过通讯录去院子里面敲门,比如人家说我找“1234567”,于是王爷爷一比较,哦,是一号门的,他就去敲一号门“听电话”,如果是找“7654321”,那他就找二号门“听电话”。
这里的电话号码就是传说中的“IP地址”
这里的门牌号就是传说中的网卡的’MAC‘地址(每一块网卡的MAC地址都是不一样的,这是网卡的制造商写死在网卡的芯片中的)
小明心里想“奶奶的,老子泡不到你也别想泡”,于是他打起了王爷爷通讯录的主意,经过细心的观察,周密的准备,他终于发现王爷爷有尿频的毛病(毕竟是老人啊...),终于在一个月黑风高的白天,王爷爷去上厕所了,小明偷偷的摸进传达室,小心翼翼的改了王爷爷的通讯录......
过了几天,小丽的男朋友又给小丽打来了电话,对方报的电话是“7654321”,王爷爷一看通讯录,靠:
门牌电话
一号门 1234567 (这个是小明的)
一号门 7654321 (注意:这个原来是小丽的,但是被小明改了)
......

王爷爷不知道改了啊,于是就去找一号门的小明了,小明心里这个美啊,他以小丽父亲的口吻严厉的教训了那个男的和小丽之间不正当的男女关系,结果那个男的恭恭敬敬的挂了电话。当然小丽并不知道整个事情的发生...
这里小明的行为叫做“”(因为在实际的网络上是通过发送ARP数据包来实现的,所以叫做“ARP欺骗”),王爷爷的通讯录叫做“ARP表”
这里要注意:王爷爷现在有两个通讯录了,一个是记录每个院子传达室电话的本本,叫做“路由表”,一个是现在说的记录院子里面详细信息的本本,叫做“ARP表”。
有句命言是“人们总是在追求完美的,尽管永远也做不到”(请记住这句话,因为这是一个大名人--也就是我,说的)
王爷爷的制度中有一条是这么写的“每个月要重新检查一下门牌号和电话的对应本(也就是ARP表)”,这个动作叫做“刷新ARP表”,每个月的时间限制叫做“刷新ARP表的周期”。这样小明为了让那个男的永远不能找到小丽,之后每个月都要偷偷改一次那个通讯录,不过这样也是不得不做的事啊!
补充一点,小明是很聪明的,如果通讯录(ARP表)被改成了这样:

门牌(MAC)电话(IP)
一号门 1234567 (这个是小明的)
二号门 1234567 (注意:这个被小明改了,但是他一时头晕改错了)
......

就会是计算机就会弹出一个对话框提示“出现重复的IP地址”,最终会导致王爷爷不知所措,于是通知一号门和二号门,你们的电话重复了。这样小丽就知道有人在破坏她的好事,这个现象叫做“骗局被揭穿了”
小不点知道了小明偷听他和小暗的电话,于是就和小暗约定好了密码。小不点在家里把要说的加密了之后告诉小暗。土豆-〉星期三,地瓜-〉请客,笨蛋-〉小不点家。于是小不点告诉小暗:土豆笨蛋地瓜。小明听了???不懂。。。。郁闷了。。。这是加密。
除此之外,小丽也知道了小明改他家的电话号码了。于是王爷爷就登门一个一个把电话和门牌号记下来。并且藏起来不允许外人修改,只能自己有钥匙(密码)。这是ip地址和MAC地址绑定。当有人改了电话号码的时候,就得找王爷爷改。麻烦是麻烦了,但是安全了。不过小明偷偷的把王爷爷的钥匙偷配了一把(盗窃密码成功),于是他还可以修改。这样么,就这样了。

CMTS和Cable Modem基本工作原理

Blog Author 2013-07-11 Docsis Networking
(简称CM)是CATV系统中用来向用户提供高速宽带Internet接入服务,这种接入方式能为用户提供最高达38Mbps的接入速度。CM一般放在用户家中,作为一种终端设备,它连接用户的PC机和HFC网络,它与CMTS是HFC系统中双向通信时必不可少的设备。如下图。
        |--CM--PC
CMTS----|
        |--CM--PC

其中CMTS与CM之间用线相连接
CM和PC之间用网线连接

 
CM系统基于DOCSIS1.1标准而设计,系统由前端设备CMTS和用户端设备CM组成。是作为前端路由器、交换集线器与CATV网络之间的连接设备,CM通过CMTS与广域网(Internet)实现连接。CMTS是管理和控制CM的设备,主要配置有下行频率点分配、下行调制方式、下行电平、DHCP、TFTP与TOD服务器等。


DHCP服务器是用作动态分配给每个CM的IP地址的,TFTP服务器则记录着每一个CM的配置文件,它给每个CM分配一个服务标识(Service ID),服务标识在CMTS与CM之间建立一个映射,CMTS基于该映射给每个CM分配带宽。CMTS也可给CM分配多个服务标识来支持不同服务类型,每个服务标识对应于服务类型;TOD称为时间服务器,作用是为CM提供当前的时间。这三个服务器可安装在同一台物理服务器上。


CMTS能维护一个连接用户数据交换集线器的10Baset双向接口和一个承载简单网络管理协议(SNMP)信息的10Baset接口,并且能支持CATV网络上的不同CM之间的双向通讯。下行是指路由器的数据包在CMTS中被封装成MPEG2-TS帧的形式,再经过64QAM调制后,通过HFC网传输到各CM。上行则有指CMTS接收到CM进行了QPSK调制的数据,再解调并转换成以太帧的形式传给路由器。如下图。

      下行信号:MPEG2-TS帧(QAM64调制)
     ----------------------------------> 
CMTS ------------------------------------CM
     <----------------------------------
     上行信号:数字电信号(QPSK调制)
     
              CMTS和CM的传输

 
为了减小上行通道的干扰,一个下行通道一般对应有多个不同频率的上行通道,CMTS可根据信道的噪声状况自动跳频到干扰较小的通道,而用户察觉不到跳频的过程。同时,CMTS负责处理不同的媒体访问控制(对访问用户的IP地址进行受权认正),这些程序包括下行的时隙信息传输、测距管理以及给各CM分配时分多址访问的时隙。CMTS根据带宽分配算法可将一个小时隙定义为预约小时隙或竞争小时隙,CM通过小时隙向CMTS传输数据。
CM连接用户的PC机和HFC网络,在加电之后,必须进行初始化,才能进入网络,接收与发送数据。它的初始化是经过以下与CMTS的一系列交互过程来实现的。如下图。


 1、测试RSM
    当CM加电后,首先要确认可移去的安全模块,是否存在于RSM的时隙中。
2、与CMTS建立同步
    在初始化或信息丢失时,CM必须与一个下行信道建立同步。CM有一个存储器,其中存放上次的操作参数,CM将首先尝试重新获得存储的那个下行信道,如果尝试失败,CM将连续地对下行信道进行扫描,直到发现一个有效的下行信号。CM与下行信号同步的标准为:与QAM码元定时同步、与FEC帧同步、与MPEG分组同步并能识别下行媒体访问控制的同步报文。
3、获得上行信道的传输参数
    建立同步之后,必须等待一个从CMTS发送出来的上行信道描述符,以获得上行信道的传输参数。CMTS周期性地传输上行信道描述符给所有的CM,CM必须从其中的信道描述参数中确定它是否使用该上行信道。若该信道不合适。那么CM必须等待,直到有一个信道描述符指定的信道适合于它,若在一定时间内没找到这样的上行信道,那么CM必须继续扫描。找到另一个下行信道,再重复该过程。在找到一个上行信道后。CM必须从信道描述符中取出参数,然后等待下一个同步报文,并从该报文中取出上行小时隙的时间标记,随后,CM等待一个给所选择的信道的带宽分配映射,然后它可以按照媒体访问控制操作和带宽分配机制在上行信道中传输信息。
4、校准
    CM在获得上行信道的传输参数后,就可以与CMTS进行通讯。CMTS会在MAP中给该CM分配一个初始维护的传输机会,用于调整CM传输信号的电平、频率等参数,其中CM的输出电平是根据分配给CM的带宽,按每赫之功率为参数,通过CMTS对CM的长线AGC来控制的。另外,CMTS还会周期性地给各个CM发周期维护报文,用于对CM进行周期性的校准。
5、建立IP连接
    校准完成后,CM必须使用动态主机配置协议(DHCP),从DHCP服务器上获得分配给它的IP地址,另外,DHCP服务器的响应中还必须包括一个包含配置参数文件的文件名,放置这些文件的TFTP服务器的IP地址、时间服务器的IP地址等信息。
6、建立时间
    CM和需要有当前的日期和时间。CM采用IETF定义的RFC868协议从时间服务器中获得当前的日期和时间。RFC868定义了获得时间的两种方式,一种是面向连接的,一种是面向无连接的。CMTS采用面向无连接的方式从TOD服务器获得CM所需的时间概念。
7、建立安全机制
    如果有RSM模块存在,并且没有安全协定建立,那么CM必须与安全服务器建立安全协定。安全服务器的IP地址可以从DHCP服务器的响应中获得。
8、传输操作参数
    接下来,CM必须使用TFTP协议从TFTP服务器上下载配置参数文件,获得所需要的各种参数。
9、初始化基本保密机制
   在获得配置参数后,若RSM模块没有检测到,CM将初始化基本保密机制。完成初始化后,CM将使用下载的配置参数向CMTS申请注册,当CM接收到CMTS发出的注册响应后,CM就进入了正常的工作状态。

DOCSIS的发展历程

Blog Author 2013-07-11 Docsis Networking

 的发展历程

 

  1.0/1.1 1.1 2.0 3.0
发展 为了有线运营商提供宽带服务而提出 为了有线运营商提供宽带服务而提出 *上行带宽优化:ATDMA,SCDMA,逻辑信道Logical Channels
*侵入噪声消除:增加上行带宽
*上下行多个信道进行捆绑创造更高带宽Channel Bonding
*IPv6
特征 提供基本的宽带互联网连接,并提供了用户数据速率控制的基本方法
提供了改善业务的灵活性,安全性和服务质量(QoS)功能 增加了应对对称服务需要的上行可靠性和数据吞吐量 提供了数据传输的增强功能
其中最值得注意的是:通道绑定,对IPv6的支持和对IPTV的支持。通道绑定为有线电视运营商提供了一个灵活的方式,可为用户提供超过160Mbps的下行速度和超过120Mbps的上行速度。
服务启用 提供了再电缆调制解调器上实现高速数据传输业务的有线电视业务平台 为高质量的数字语音,互动游戏和商业服务水平协议实施铺平了道路 增加上行数据传输能力,以提高高速的对称的数据服务。 能够使有线电视运营商直接与VDSL和FTTx服务产品的公司竞争。并提供了一个平台,使有线电视的视频服务有可能完全IP化,从而电视服务全面走向IPTV。
 

DOCSIS的未来:新一代的标准DOCSIS4.0已在讨论中:

*下行或上行会考虑用到更高速率的调制方式-如1024/256QAM

*更先进的Mac版本-优化的流媒体服务

*适应IPTV的规模应用,继续改进DOCSIS架构

 

详情请参考Http://www.cablelabs.com

hping命令注释

Blog Author 2013-07-10 Networking

HPING 使用方法
一、HPING和ping的区别
典型程序使用的是ICMP回显请求来测试网络是否通畅,而可以使用任何IP报文,包括ICMP、TCP、UDP、RAWSOCKET。

二、下载
HTTP://WWW.HPING.ORG/

三、安装方法在CentOS上安装hping

四、命令注释:

~$ hping2 --help
usage: hping host [options]
-h --help show this help //*help
-v --version show version //*版本
-c --count packet count //*hping的包数量 和ping相同。
-i --interval wait (uX for X microseconds, for example -i u1000) //*hping的间隔 u表示微妙,--fast表示快速模式,一秒10个包。
--fast alias for -i u10000 (10 packets for second)
-n --numeric numeric output //*表示不进行名称解析。
-q --quiet quiet //*安静模式 只输出开始结束信息。
-I --interface interface name (otherwise default routing interface) //*使用网卡端口,缺省按路由表进行。
-V --verbose verbose mode //*详细模式 一般显示很多包信息。
-D --debug debugging info //*debug模式,定义hping2使用模式。
-z --bind bind ctrl+z to ttl (default to dst port)//*帮定快捷键
-Z --unbind unbind ctrl+z //*撤销快捷键。
Mode //*模式选择。
default mode TCP (缺省使用TCP进行PING处理)
-0 --rawip RAW IP mode //*裸IP方式。使用RAWSOCKET方式。
-1 --icmp ICMP mode //*ICMP模式。
-2 --udp UDP mode //*UDP模式
-8 --scan SCAN mode. //*扫描模式 指定扫描对应的端口。
Example: hping --scan 1-30,70-90 -S http://www.target.host
-9 --listen listen mode //*侦听模式,会接受指定的信息。侦听指定的信息内容。
IP //*IP模式选择。
-a --spoof spoof source address //*源地址欺骗。
--rand-dest random destionation address mode. see the man.随机目的地址模式。
--rand-source random source address mode. see the man. 随机源地址模式,具体信息看MAN。
-t --ttl ttl (default 64) //*修改TTL值。
-N --id id (default random) --hping中的ID值,缺省为随机值。
-W --winid use win* id byte ordering 使用winid的模式,针对不同的操作系统。
-r --rel relativize id field (to estimate host traffic) //*递减id区域模式。
-f --frag split packets in more frag. (may pass weak acl)//*分段,可以测试对方或者交换机碎片处理能力,缺省16字节。
-x --morefrag set more fragments flag //*大量碎片,泪滴攻击。
-y --dontfrag set dont fragment flag //*不可恢复的IP碎片。
-g --fragoff set the fragment offset //*设置断偏移。
-m --mtu set virtual mtu, implies --frag if packet size > mtu //*设置虚拟MTU值,当大于mtu的时候分段。
-o --tos type of service (default 0x00), try --tos help //*tos字段,缺省0x00,尽力而为?
-G --rroute includes RECORD_ROUTE option and display the route buffer //*记录IP路由,并显示路由缓冲。
--lsrr loose source routing and record route //*松散源路由
--ssrr strict source routing and record route //*严格源路由。
-H --ipproto set the IP protocol field, only in RAW IP mode //*设置ip协议域,仅在RAW ip模式使用。
ICMP //*ICMP模式。
-C --icmptype icmp type (default echo request) //*ICMP类型,缺省回显请求。
-K --icmpcode icmp code (default 0) //*ICMP代码。
--force-icmp send all icmp types (default send only supported types) //*强制ICMP类型。
--icmp-gw set gateway address for ICMP redirect (default 0.0.0.0) //*ICMP重定向
--icmp-ts Alias for --icmp --icmptype 13 (ICMP timestamp) //*icmp时间戳
--icmp-addr Alias for --icmp --icmptype 17 (ICMP address subnet mask) //*icmp子网地址。
--icmp-help display help for others icmp options //*ICMP帮助。
UDP/TCP //*UDP/TCP模式。
-s --baseport base source port (default random) //*缺省随机源端口
-p --destport [+][+]<port> destination port(default 0) ctrl+z inc/dec //*缺省目的端口为0,连接后端口+1。
-k --keep keep still source port //*保持源端口
-w --win winsize (default 64) //*win的滑动窗口。
-O --tcpoff set fake tcp data offset (instead of tcphdrlen / 4)//*设置伪造的数据偏移。
-Q --seqnum shows only tcp sequence number //*tcp 连接序列号
-b --badcksum (try to) send packets with a bad IP checksum //*IP包校验。
many systems will fix the IP checksum sending the packet
so you'll get bad UDP/TCP checksum instead.
-M --setseq set TCP sequence number //*设置TCP序列号
-L --setack set TCP ack
-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag
-U --urg set URG flag //*一大堆IP抱头的设置。
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)
--tcpexitcode use last tcp->th_flags as exit code
--tcp-timestamp enable the TCP timestamp option to guess the HZ/uptime //*tcp的时间戳。
Common //*通用设置
-d --data data size (default is 0) 发送数据包大小,缺省是0。
-E --file data from file //*从文件中发送
-e --sign add 'signature' //*标注签名
-j --dump dump packets in hex //*以16进制显示包格式
-J --print dump printable characters //*打印
-B --safe enable 'safe' protocol //*开启安全模式,确保数据发送。
-u --end tell you when --file reached EOF and prevent rewind //*到达报尾后提示。
-T --traceroute traceroute mode (implies --bind and --ttl 1)
--tr-stop Exit when receive the first not ICMP in traceroute mode
--tr-keep-ttl Keep the source TTL fixed, useful to monitor just one hop
--tr-no-rtt Don't calculate/show RTT information in traceroute mode
ARS packet description (new, unstable)
--apd-send Send the packet described with APD (see docs/APD.txt)

五、具体应用:
1、PING失效后的主机检测:

mchu@mchu-desktop:~$ sudo ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
--- 192.168.2.1 ping statistics ---
19 packets transmitted, 0 received, 100% packet loss, time 18009ms

 

mchu@mchu-desktop:~$ sudo hping2 -c 4 -n -i 2 192.168.2.1
HPING 192.168.2.1 (eth0 192.168.2.1): NO FLAGS are set, 40 headers + 0 data bytes
len=46 ip=192.168.2.1 ttl=64 id=43489 sport=0 flags=RA seq=0 win=0 rtt=1.0 ms
len=46 ip=192.168.2.1 ttl=64 id=43490 sport=0 flags=RA seq=1 win=0 rtt=0.6 ms
len=46 ip=192.168.2.1 ttl=64 id=43491 sport=0 flags=RA seq=2 win=0 rtt=0.7 ms
len=46 ip=192.168.2.1 ttl=64 id=43498 sport=0 flags=RA seq=3 win=0 rtt=0.6 ms
--- 192.168.2.1 hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.6/0.8/1.0 ms

-c 发送4个报文
-n 不进行名称解析
-i 包发送时间间隔
好处:即使主机阻塞了ICMP报文,也可以显示主机是否在运行的信息,在关掉ICMP的探测有效!
显示信息解释:len,返 回ip报文大小;ttl; id,IP的ID域;sport,源端口,flags,返回的IP报设置的TCP标志 (R:RESET,A:ACK;S:SYN;F:FIN;P:PUSH;U:URGENT);seq:序列号;win:tcp窗口大小;rtt:往返 时,EIGRP似乎有这个设置。
2、防火墙规则测试:
hping有类似NMAP的方法来检测并收集关于潜在的防火墙的规则和能力的信息。
如果一个主机对ping没有任何相应,而对hping有响应,假定目标的主机为192.168.2.234.
一旦主机对hping作出了响应,那么下一步我们先用nmap先进行一个端口扫描,当然这个hping2也可以作.

mchu@mchu-desktop:~$ sudo nmap -sT -P0 -p 21-25 192.168.2.234
Starting Nmap 4.53 ( http://insecure.org ) at 2008-08-14 15:56 CST
Interesting ports on 192.168.2.234:
PORT STATE SERVICE
21/tcp filtered ftp
22/tcp open ssh
23/tcp filtered telnet
24/tcp filtered priv-mail
25/tcp filtered smtp
Nmap done: 1 IP address (1 host up) scanned in 1.379 seconds

以上信息显示除了ssh端口外,其他端口被阻塞.然后可以试试用hping向各个被阻塞的端口发送空的报文.用-p的开关,可以对指定的目的端口进行hping.

mchu@mchu-desktop:~$ sudo hping2 -p 21 192.168.2.234
HPING 192.168.2.234 (eth0 192.168.2.234): NO FLAGS are set, 40 headers + 0 data bytes
24: len=46 ip=192.168.2.234 ttl=128 id=2461 sport=24 flags=RA seq=7 win=0 rtt=0.7 ms
len=46 ip=192.168.2.234 ttl=128 id=2462 sport=24 flags=RA seq=8 win=0 rtt=0.7 ms
25: len=46 ip=192.168.2.234 ttl=128 id=2463 sport=25 flags=RA seq=9 win=0 rtt=0.7 ms
len=46 ip=192.168.2.234 ttl=128 id=2464 sport=24 flags=RA seq=10 win=0 rtt=0.7 ms

前三个端口没有响应,端口 24 25 获得了RST/ACK响应.这说明,虽然这些端口被禁止PING,但没有工具在该端口上监听.然而为什么NMAP没有得到响应,因为NMAP虽然使用 TCP连接,但它在TCP报头中设置了TCP SYN标记位,而HPING 使用了空标记的报文,这就告诉我们说,在主机192.168.2.234上只阻塞进入的TCP连接.接下来使用hping创建一个SYN报文然后将其发送 到5个端口再测试.

mchu@mchu-desktop:~$ sudo hping2 -S -p 21 192.168.2.234
HPING 192.168.2.234 (eth0 192.168.2.234): S set, 40 headers + 0 data bytes
22: len=46 ip=192.168.2.234 ttl=128 id=10722 sport=22 flags=SA seq=1 win=0 rtt=1.2 ms
len=46 ip=192.168.2.234 ttl=128 id=10747 sport=22 flags=SA seq=2 win=0 rtt=0.7 ms

这次只有22端口响应,说明SSH端口是开放的,但有工具在上面监听,该端口没有进行过滤.
然后我们再创建一个ACK报文并发送:

mchu@mchu-desktop:~$ sudo hping2 -A -p 21 192.168.2.234
HPING 192.168.2.234 (eth0 192.168.2.234): A set, 40 headers + 0 data bytes
22: len=46 ip=192.168.2.234 ttl=128 id=12707 sport=22 flags=R seq=2 win=0 rtt=0.7 ms
len=46 ip=192.168.2.234 ttl=128 id=12708 sport=22 flags=R seq=3 win=0 rtt=0.7 ms
23: len=46 ip=192.168.2.234 ttl=128 id=12709 sport=23 flags=R seq=4 win=0 rtt=0.7 ms
len=46 ip=192.168.2.234 ttl=128 id=12710 sport=22 flags=R seq=5 win=0 rtt=0.7 ms
24: len=46 ip=192.168.2.234 ttl=128 id=12711 sport=24 flags=R seq=6 win=0 rtt=0.7 ms
len=46 ip=192.168.2.234 ttl=128 id=12712 sport=22 flags=R seq=7 win=0 rtt=0.7 ms
25: len=46 ip=192.168.2.234 ttl=128 id=12712 sport=25 flags=R seq=8 win=0 rtt=0.8 ms
len=46 ip=192.168.2.234 ttl=128 id=12713 sport=22 flags=R seq=9 win=0 rtt=0.7 ms

结果除了21端口外所有端口都响应了RST,说明了:
1.端口22是开放的,但有工具在上面监听.
2.24 25 上面没有工具监听,对NULL报文回显.
3.端口23针对ACK报文以RST进行了响应,但没有响应NULL报文.说明该端口被过滤,但是telnet服务运行在192.168.2.234上.
4.阻塞了进入的SYN报文但允许其他TCP报文通过,说明它采用的不是基于状态的报文防火墙.

在CentOS上安装hping

Blog Author 2013-07-10 Networking

最近工作中要用到,就安装了个。顺便在这儿记录一下自己的安装过程。

我用的操作系统是5.5

安装步骤:

下载hiping软件 #wget http://www.hping.org/hping3-20051105.tar.gz
解压下载的文件 #tar -xzf hping3-20051105.tar.gz
#cd hping3-20051105
#./configure
# make && make install

 

这个时候出现错误:pcap.h No such file or directory.

提示缺少头文件pcap.h,于是安装libpcap-devel来提供这个头文件:

使用yum安装libpcap-devel #yum install libpcap-devel

安装完libpcap-devel之后,再次运行#./configure和# make && make install

又出现一个错误:net/bpf.h no such file or directory

提示缺少头文件bpf.h,此时用ln将centos自带的头文件链接过来提供这个头文件:

运行以下命令:

# ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h

接着再次运行 #./configure和# make && make install

再次出现一个错误:/usr/bin/ld: cannot find -ltcl

提示找不到-ltcl。

平时在这台机器上不需要用TCL,所以我将它去除:

./configure --no-tcl

至此,再运行 # make && make install 总算可以安装成功了。

hping使用时的常用命令:

hping xx.xx.xx.xx --scan 1-65535 -d 100 -S -V

列出所有命令帮助:

# hping --h
usage: hping host [options]
  -h  --help      show this help
  -v  --version   show version
  -c  --count     packet count
  -i  --interval  wait (uX for X microseconds, for example -i u1000)
      --fast      alias for -i u10000 (10 packets for second)
      --faster    alias for -i u1000 (100 packets for second)
      --flood      sent packets as fast as possible. Don't show replies.
  -n  --numeric   numeric output
  -q  --quiet     quiet
  -I  --interface interface name (otherwise default routing interface)
  -V  --verbose   verbose mode
  -D  --debug     debugging info
  -z  --bind      bind ctrl+z to ttl           (default to dst port)
  -Z  --unbind    unbind ctrl+z
      --beep      beep for every matching packet received
Mode
  default mode     TCP
  -0  --rawip      RAW IP mode
  -1  --icmp       ICMP mode
  -2  --udp        UDP mode
  -8  --scan       SCAN mode.
                   Example: hping --scan 1-30,70-90 -S www.target.host
  -9  --listen     listen mode
IP
  -a  --spoof      spoof source address
  --rand-dest      random destionation address mode. see the man.
  --rand-source    random source address mode. see the man.
  -t  --ttl        ttl (default 64)
  -N  --id         id (default random)
  -W  --winid      use win* id byte ordering
  -r  --rel        relativize id field          (to estimate host traffic)
  -f  --frag       split packets in more frag.  (may pass weak acl)
  -x  --morefrag   set more fragments flag
  -y  --dontfrag   set dont fragment flag
  -g  --fragoff    set the fragment offset
  -m  --mtu        set virtual mtu, implies --frag if packet size > mtu
  -o  --tos        type of service (default 0x00), try --tos help
  -G  --rroute     includes RECORD_ROUTE option and display the route buffer
  --lsrr           loose source routing and record route
  --ssrr           strict source routing and record route
  -H  --ipproto    set the IP protocol field, only in RAW IP mode
ICMP
  -C  --icmptype   icmp type (default echo request)
  -K  --icmpcode   icmp code (default 0)
      --force-icmp send all icmp types (default send only supported types)
      --icmp-gw    set gateway address for ICMP redirect (default 0.0.0.0)
      --icmp-ts    Alias for --icmp --icmptype 13 (ICMP timestamp)
      --icmp-addr  Alias for --icmp --icmptype 17 (ICMP address subnet mask)
      --icmp-help  display help for others icmp options
UDP/TCP
  -s  --baseport   base source port             (default random)
  -p  --destport   [+][+]<port> destination port(default 0) ctrl+z inc/dec
  -k  --keep       keep still source port
  -w  --win        winsize (default 64)
  -O  --tcpoff     set fake tcp data offset     (instead of tcphdrlen / 4)
  -Q  --seqnum     shows only tcp sequence number
  -b  --badcksum   (try to) send packets with a bad IP checksum
                   many systems will fix the IP checksum sending the packet
                   so you'll get bad UDP/TCP checksum instead.
  -M  --setseq     set TCP sequence number
  -L  --setack     set TCP ack
  -F  --fin        set FIN flag
  -S  --syn        set SYN flag
  -R  --rst        set RST flag
  -P  --push       set PUSH flag
  -A  --ack        set ACK flag
  -U  --urg        set URG flag
  -X  --xmas       set X unused flag (0x40)
  -Y  --ymas       set Y unused flag (0x80)
  --tcpexitcode    use last tcp->th_flags as exit code
  --tcp-timestamp  enable the TCP timestamp option to guess the HZ/uptime
Common
  -d  --data       data size                    (default is 0)
  -E  --file       data from file
  -e  --sign       add 'signature'
  -j  --dump       dump packets in hex
  -J  --print      dump printable characters
  -B  --safe       enable 'safe' protocol
  -u  --end        tell you when --file reached EOF and prevent rewind
  -T  --traceroute traceroute mode              (implies --bind and --ttl 1)
  --tr-stop        Exit when receive the first not ICMP in traceroute mode
  --tr-keep-ttl    Keep the source TTL fixed, useful to monitor just one hop
  --tr-no-rtt       Don't calculate/show RTT information in traceroute mode
ARS packet description (new, unstable)
  --apd-send       Send the packet described with APD (see docs/APD.txt)

hping命令及参数的含义将会在另外一篇文章hping命令详解中介绍。